Product grid
The product listing page — filter panel, breadcrumb tablist, card grid and pagination, with the Selected interaction state and the brand tints that support it.
Page layout
A 257 px filter sidebar beside the grid, with the
product tablist above both. The grid column count is driven by
the filter component’s own Layout property.
The sidebar holds 257 px at both 1400 and 1200 — so the grid absorbs the entire difference, and cards drop from 258 px to 211 px while staying four across.
Below 992 px the sidebar leaves the layout entirely.
| Breakpoint | Container | Sidebar | Grid | Columns | Card |
|---|---|---|---|---|---|
| 1400 | 1320 | 257 | 1055 | 4 | 258 |
| 1200 | 1140 | 257 | 875 | 4 | 211 |
| 576 | 540 | — | 540 | 2 | 266 |
| 358 | 326 | — | 326 | 2 | 159 |
Selected — a fourth interaction state
Alongside Rest, Hover and Pressed, the filter panel and pagination use Selected:
Global/background/1/Selected— #ebebebGlobal/Stroke/1/Global/Selected— #cccccc
Selected is distinct from Hover. Hover is transient and follows the pointer; Selected persists and describes what the user has chosen. Use the Selected tokens for a chosen filter, never the Hover tokens.
Brand tints
Brand/background/2 (#fff5f5) and
Brand/Stroke/2 (#ffcccc) are the light end of the brand ramp.
They carry the “Clear All” control.
Filter panel
Eight variants: Layout of 5, 4, 3 or 1 column crossed with
Type of Extra or Default.
The Layout property does not describe the filter — it
describes the grid beside it. A 5-column grid leaves a 257 px sidebar; a
3-column grid leaves 434 px. Filter and grid are sized as one decision.
The 1-column variant
At Layout=1 - Column the panel is
1320 px wide — the full container. It is not a sidebar at all but
a full-width filter surface, which is what replaces the sidebar when it leaves the
layout below 992 px.
Groups
- Filtered Option — applied chips plus Clear All
- Application — searchable checkbox list
- Voltage — value chips
- Highlights — In Stock, Hot sale, New, Discontinued
- Star rating — searchable checkbox list
Three of the five groups carry their own search field, which is the right call for lists that can run long.
| Layout | Type=Extra | Type=Default | Role |
|---|---|---|---|
| 5 - Column | 257 × 1217 | 257 × 1217 | Narrow sidebar |
| 4 - Column | 324 × 1187 | 279 × 1187 | Sidebar |
| 3 - Column | 434 × 1127 | 374 × 1157 | Wide sidebar |
| 1 - Column | 1320 × 1127 | 1140 × 1127 | Full-width surface |
Live panel
Filters
Corded impact drills (86) result
Filtered Option
Application
Voltage
Highlights
Product tablist
Not a tablist at all — it is a breadcrumb of dropdowns on the left and a Sort by control on the right, in a 120 px block.
Each breadcrumb level is itself a dropdown, so a user can re-pick at any level without going back. That is a better pattern than a plain breadcrumb, and the name hides it.
Two variants, State=Extra and State=Default, both 1320×120 — identical in the render. At 358 it grows to 152 px as the controls wrap.
Pagination
Previous, ten numbered pages, next — 520×52 at Large, 512×48 at 576 and 299×48 at 358.
The current page uses the Selected background with brand-red text — brand red as a foreground on a neutral surface rather than as a fill.
Ten page links fit 520 px comfortably. On narrower widths, or for catalogues running to
many pages, truncate the middle — 1 … 5 6 7 … 40.
Assembled
Tablist, filter sidebar, grid and pagination together. Narrow past 992 px and the sidebar drops out, as it does in the library.
Filters on small screens
Below 992 px the sidebar leaves the layout. Filters are reached instead from a
trigger in the tablist row, which opens the
Layout = 1 - Column variant as a
full-width surface.
That variant is the mobile filter surface: same groups, same controls, laid out across the full container width rather than down a sidebar.
Filters must stay reachable at every width. A listing of 86 results needs narrowing most on a phone, so the trigger belongs in the tablist row where it is visible without scrolling. Opening the filter surface should not lose the user’s place in the results.

