# Hold to Confirm

Botão que só confirma se você segurar, com o preenchimento enchendo e voltando se soltar antes.

- Nome no registry: `hold-to-confirm`
- Tipo: componente
- Dependências npm: lucide-react, motion, react
- Demo: https://ui.visantlabs.com/c/hold-to-confirm
- Categorias: controles, botao, confirmacao, destrutivo, gesto

## Quando usar

- Use quando: Ação irreversível e cara, como excluir conta ou projeto, exigindo segurar o botão
- Evite quando: Ação reversível e frequente: confirm-morph; pagamento por arrasto no celular, slide-to-confirm

## Instalar

```bash
npx shadcn@latest add @visant/hold-to-confirm
```

## Usar

```tsx
<HoldToConfirm
  confirmedLabel="Apagado"
  label="Segure pra apagar"
/>
```

## API

### HoldToConfirm

- `label: string` — Instrução e ação na mesma frase, como "Segure pra apagar".
- `confirmed?: boolean` — Controla o estado confirmado. Volte pra `false` pra rearmar (depois de um desfazer, por exemplo).
- `confirmedLabel?: string = "Feito"` — Rótulo depois de confirmado.
- `duration?: number = 1200` — Quanto tempo segurar, em ms.
- `icon?: any = "<Trash2 strokeWidth={1.75} />"` — Ícone à esquerda; vira um check quando confirma.
- `onConfirm?: () => void` — Roda uma vez quando o preenchimento completa.
- `onHoldChange?: (holding: boolean) => void` — Avisa quando começa e termina de segurar, pra uma dica tipo "continue segurando".
- `tone?: "danger" | "brand" | "neutral" = "danger"` — Cor do preenchimento: `danger` pra destruir, `brand` pra ação da marca, `neutral` pro resto.
