# Searchable Select

Combobox com busca em rótulo e keywords ocultos, grupos, e criação no lugar que sobrevive à falha. Digita dentro de Dialog.

- Nome no registry: `searchable-select`
- Tipo: componente
- Dependências npm: @radix-ui/react-popover, cmdk, react
- Demo: https://ui.visantlabs.com/c/searchable-select
- Categorias: controles, combobox, busca, formulario

## Instalar

```bash
npx shadcn@latest add @visant/searchable-select
```

## Usar

```tsx
<SearchableSelect />
```

## API

### SearchableSelect

- `onValueChange: (value: string) => void`
- `value: string`
- `autoSelect?: boolean = false` — Seleciona sozinho quando sobra exatamente uma opção. Para edição em célula.
- `className?: string`
- `createEntityLabel?: string` — Substantivo do que se cria: "task", "projeto", "cliente".
- `createLabel?: string = "Criar"`
- `creatingLabel?: string = "Criando"`
- `disabled?: boolean`
- `emptyLabel?: string = "Nenhum"`
- `groups?: { label: string; options: SearchableOption[]; }[]`
- `hideEmptyOption?: boolean = false` — Esconde o item "nenhum" — use quando toda opção real já é um valor válido.
- `iconPosition?: "leading" | "trailing" = "trailing"` — "trailing" (padrão) é selo esmaecido; "leading" é para avatar e thumbnail.
- `inline?: boolean = false` — A lista direto na página, sem gatilho nem popover. Para painel lateral e vitrine.
- `noneValue?: string = "__none__"` — Valor sentinela do item "nenhum". Trocável se colidir com um valor real.
- `noResultsLabel?: string = "Nenhum resultado encontrado"`
- `onCreate?: (label: string) => Promise<string>` — Cria de verdade a partir do texto buscado. `null` = falhou, popover fica aberto.
- `onOpenChange?: (open: boolean) => void`
- `options?: SearchableOption[]`
- `placeholder?: string = "Selecione..."`
- `searchPlaceholder?: string = "Buscar..."`
