

<InteractiveDemo
  name="checkbox"
  controls="[
  {
    type: 'string',
    name: 'label',
    defaultValue: 'Accept terms',
  },
  {
    type: 'boolean',
    name: 'isDisabled',
    defaultValue: false,
  },
  {
    type: 'boolean',
    name: 'isReadOnly',
    defaultValue: false,
  },
  {
    type: 'boolean',
    name: 'isInvalid',
    defaultValue: false,
  },
  {
    type: 'boolean',
    name: 'isIndeterminate',
    defaultValue: false,
  },
]"
/>

## Installation [#installation]

<CodeBlockTabs defaultValue="npm">
  <CodeBlockTabsList>
    <CodeBlockTabsTrigger value="npm">
      npm
    </CodeBlockTabsTrigger>

    <CodeBlockTabsTrigger value="pnpm">
      pnpm
    </CodeBlockTabsTrigger>

    <CodeBlockTabsTrigger value="yarn">
      yarn
    </CodeBlockTabsTrigger>

    <CodeBlockTabsTrigger value="bun">
      bun
    </CodeBlockTabsTrigger>
  </CodeBlockTabsList>

  <CodeBlockTab value="npm">
    ```bash
    npx shadcn@latest add @dotui/checkbox
    ```
  </CodeBlockTab>

  <CodeBlockTab value="pnpm">
    ```bash
    pnpm dlx shadcn@latest add @dotui/checkbox
    ```
  </CodeBlockTab>

  <CodeBlockTab value="yarn">
    ```bash
    yarn dlx shadcn@latest add @dotui/checkbox
    ```
  </CodeBlockTab>

  <CodeBlockTab value="bun">
    ```bash
    bun x shadcn@latest add @dotui/checkbox
    ```
  </CodeBlockTab>
</CodeBlockTabs>

## Usage [#usage]

Use `Checkbox` to allow users to select multiple items from a list of individual items, or to mark one individual item as selected.

```tsx
import { Checkbox, CheckboxControl } from '@/components/ui/checkbox'
import { Label } from '@/components/ui/field'
```

```tsx
<Checkbox>
  <CheckboxControl />
  <Label>I accept the terms and conditions</Label>
</Checkbox>
```

## Selection [#selection]

Use `defaultSelected` for uncontrolled checkboxes, or `isSelected` and `onChange` for controlled checkboxes.

```tsx
<Checkbox defaultSelected />
```

```tsx
const [isSelected, setIsSelected] = useState(false)

;<Checkbox isSelected={isSelected} onChange={setIsSelected} />
```

## Examples [#examples]

<Examples className="lg:grid-cols-2">
  <Example name="checkbox/demos/standalone" title="Standalone" />

  <Example name="checkbox/demos/basic" title="Basic" />

  <Example name="checkbox/demos/description" title="With Description" />

  <Example name="checkbox/demos/invalid" title="Invalid" />

  <Example name="checkbox/demos/indeterminate" title="Indeterminate" />

  <Example name="checkbox/demos/disabled" title="Disabled" />

  <Example name="checkbox/demos/read-only" title="Read Only" />

  <Example name="checkbox/demos/card" title="Card" />
</Examples>

## API Reference [#api-reference]

### Checkbox [#checkbox]

<Reference name="checkbox" />

### CheckboxControl [#checkboxcontrol]

<Reference name="checkbox-control" />

### CheckboxIndicator [#checkboxindicator]

<Reference name="checkbox-indicator" />
