Combobox

Searchable dropdown combining a text input with a filterable list of options.

Example

Selected: none

Props

Combobox.Root

PropTypeDefaultDescription
openbooleanfalseControls dropdown visibility (bindable)
valuestring''Selected value (bindable)
childrenSnippetInput, trigger, and content

Combobox.Input

PropTypeDefaultDescription
placeholderstringInput placeholder text
classstringAdditional CSS classes

Combobox.Trigger

PropTypeDefaultDescription
classstringAdditional CSS classes
childrenSnippetTrigger element

Combobox.Content

PropTypeDefaultDescription
sideOffsetnumber4Distance from trigger in px
classstringAdditional CSS classes
childrenSnippetList items

Combobox.Item

PropTypeDefaultDescription
valuestringOption value (required)
labelstringDisplay label
disabledbooleanDisables the option
classstringAdditional CSS classes
childrenSnippetItem content

Combobox.Group / Combobox.GroupHeading

PropTypeDefaultDescription
classstringAdditional CSS classes
childrenSnippetGroup content / heading text

Usage

<script>
  import { Combobox, Button } from '@chrissnell/chonky-ui';

  let open = $state(false);
  let value = $state('');

  const options = ['Apple', 'Banana', 'Cherry'];
</script>

<Combobox.Root bind:open bind:value>
  <Combobox.Input placeholder="Search..." />
  <Combobox.Trigger>
    <Button size="sm">Open</Button>
  </Combobox.Trigger>
  <Combobox.Content>
    {#each options as opt}
      <Combobox.Item value={opt.toLowerCase()} label={opt}>
        {opt}
      </Combobox.Item>
    {/each}
  </Combobox.Content>
</Combobox.Root>