Checkbox Filter

Category

24
18
9
12
About this component

Checkbox Filter

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

Usage

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

import { FilterCheckbox } from "@/components/beste/component/filter-checkbox";

<FilterCheckbox
  label="Category"
  defaultValue={["sneakers"]}          // uncontrolled initial selection
  onChange={(value) => console.log("selected:", value)}
  options={[
    { label: "Sneakers", value: "sneakers", count: 24 },
    { label: "T-Shirts", value: "t-shirts", count: 18 },
  ]}
/>

// Controlled: pass `value` and keep it in your own state
<FilterCheckbox
  options={[{ label: "Sneakers", value: "sneakers" }]}
  value={["sneakers"]}
  onChange={(value) => console.log("selected:", value)}
/>

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.

TabMove between the boxes — each is its own control, not one list with an inner cursor.
SpaceTick or untick the focused one.

Props

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

PropTypeDefaultDescription
labelstring—Optional group heading rendered above the list
optionsFilterCheckboxOption[]—
valuestring[]—Controlled selection; omit to let the component manage its own state
defaultValuestring[]—Initial selection when uncontrolled
onChange(value: string[]) => void—
classNamestring—

More Filter components

View all Filter

Size

Category

Category

42
24
10
8
38
12