FilterPanel
Organism
Sidebar filter rail: grouped checkbox options under mono group headings, each with its count, and a "Clear N" action in the header while any filter is on (a plain accent text action). On the web an option's label is the 400 14px row label, 10px from its box.
Playground
Every control sets a real prop of FilterPanelProps. The JSX below updates as you go.
Web
iOS
Android
JSX · FilterPanelProps
Variants
1 examples from src/organisms/filter-panel/filter-panel.md, each rendered live from its own JSX.
Anatomy
1
Panel
2
Group heading
3
Option
4
Count
5
Clear all
Dimmed parts appear only in some states or variants.
Props
16 props on FilterPanelProps, grouped as they are declared in source. Required props are marked *.
Accessibility and keyboard
Keyboard
Space
Toggles
Tab
Moves focus on
Semantics
Roles
checkbox
States
checked
ARIA on web
aria-checked
aria-hidden
Below the platform minimum, the touch area grows to 44 pt on iOS and 48 dp on Android without moving the layout.
Platform skins
The playground's props on each platform: same tree, native shapes, type and touch sizes.
Usage
Add responsive and at and below drawerBreakpoint (default sm = 640) the docked panel collapses to a small secondary "Filters" button, carrying the live count, that opens the same panel inside a start-edge drawer, so a phone keeps its width for the results; open / defaultOpen / onOpenChange drive the drawer for controlled use.
On iOS an option row marks a chosen filter the way an iOS list does: the label leads, the count follows, and a trailing check closes the row. The web and Android lead each row with the platform's selection checkbox. The native rows keep the platform's touch height (44 pt, 48 dp).
Tokens
Read from the playground render. Values follow the scheme and the ion hue.
--fd
--fm
--ft
--ion
--ion-fg
--ion-tx
--ln2
--sf
--tx3