Filter
Composable filtering primitives shared via @repo/ui. Three surfaces over one FilterConfig: Filter.Pill (always-visible pill per filter), Filter.Select (single combined picker), and Filter.List (chips for active filters only). Powers the competitive-intelligence ad feed and the assets filter bar.
Filter.Pill — ad feed filter bar
A fixed row of always-present pills, one per filter dimension. Each opens a Popover of its options; multiple pills support multi-select. This is the exact bar used by the competitive-intelligence ad feed.
0 filters active
Filter.Pill — disabled
Pass disabled to render a non-interactive pill (e.g. while options load).
Filter.Select — combined picker
A single trigger that opens a command-style menu to pick a filter, then its value. Best when the set of filters is large. Press F to open. Shows a count badge when filters are active.
Filter.List — active filter chips
Renders one editable chip per active filter (the typical 'Filter is Value ✕' row beneath a combined picker). Reuses the same activeFilters/onSelect/onRemove wiring as Filter.Select. Select some values above to populate it.
No active filters — pick a value in the Filter.Select example above.