Select Filter

Category

About this component

Select Filter

Single-select dropdown for long option lists that would crowd a sidebar. Supports a clear item, result counts, and a disabled state for dependent filters.

Usage

The import and the props worth knowing about, in one place.

import { FilterSelect } from "@/components/beste/component/filter-select";

<FilterSelect
  label="Category"
  placeholder="All categories"
  clearLabel="All categories"   // first item that clears the selection
  onChange={(value) => console.log("selected:", value)} // null when cleared
  options={[
    { label: "Sneakers", value: "sneakers", count: 24 },
    { label: "T-Shirts", value: "t-shirts", count: 18 },
  ]}
/>

Playground

Turn the props on the right; the snippet under them is what you would write to get what you see.

Category

Usage
import { FilterSelect } from "@/components/beste/component/filter-select";

<FilterSelect
  label="Category"
  placeholder="All categories"
  clearLabel="All categories"
  className="w-64"
  defaultValue="sneakers"
  options={[{"label":"Sneakers","value":"sneakers","count":24},{"label":"T-Shirts","value":"t-shirts","count":18},{"label":"Hoodies","value":"hoodies","count":9},{"label":"Accessories","value":"accessories","count":12}]}
/>

Keyboard and gestures

Every one of these is in the component already. They are listed because a props table cannot mention a gesture, so nothing else on this page can tell you they exist.

Enter / SpaceOpen the menu.
Arrow keysMove through the options; the value follows as you go.
Type a letterJump to the next option starting with it.
EscapeClose and keep what was there before.

Props

Read from the component's own type, so this cannot drift from what it accepts.

PropTypeDefaultDescription
labelstringOptional group heading rendered above the trigger
optionsFilterSelectOption[]
valuestring | nullControlled selection; omit to let the component manage its own state
defaultValuestringInitial selection when uncontrolled
placeholderstringPlaceholder shown while nothing is selected
clearLabelstringWhen set, renders a first item (e.g. "All categories") that clears the selection and reports null through onChange.
disabledboolean
onChange(value: string | null) => void
classNamestring

More Filter components

View all Filter

Size

Multiselect Filter

Dropdown with checkbox rows and a selection-count badge. Keeps many-option filters compact in toolbars where a checkbox list would not fit.

Category

24
18
9
12

Checkbox Filter

Multi-select checkbox list with optional result counts. Works controlled or uncontrolled, designed for filter sidebars and toolbars.

Brand

Combobox Filter

Searchable dropdown for very long option lists like brands. Type to narrow options, select one or many, and see result counts inline.

Fit

32
14
21

Radio Filter

Single-select radio list with optional result counts. Clicking the active option clears the selection, so the filter is always escapable.

Gender

Segmented Filter

Single-select segmented control built on Tabs for mutually exclusive choices like gender or condition. Clicking the active segment clears the selection.

Size

Chips Filter

Multi-select button chips for compact option sets like sizes. Works controlled or uncontrolled.