Componentes
Confirm Dialog
betaConfirmação de uma ação com consequência, empacotada para a tela não remontar a mesma composição toda vez.
Ainda não é estável porque Pendência editorial: oQueE, quandoUsar, quandoNaoUsar; Rota não varrida pelo sensor. Ausência de medição não é aprovação. O contrato de maturidade explica o que cada requisito exige.
@voxmente/ui/components/ui/confirm-dialog
<ConfirmDialog
title="Arquivar turma?"
consequence='A turma sai da lista padrão e volta pelo filtro "Arquivadas". Reversível a qualquer momento.'
confirmLabel="Arquivar"
onConfirm={() => arquivarTurma(turmaId)}
>
<AlertDialogTrigger render={<Button variant="outline" />}>
Arquivar turma?
</AlertDialogTrigger>
</ConfirmDialog>Uso
Tons
Crítico, com descrição
Confirm dialog versus Alert dialog
Alert dialog — monta título, descrição e rodapé à mão. Nada impede uma tela de confirmar arquivamento sem dizer que é reversível.
Confirm dialog — obriga `consequence` como prop e mapeia `tone` para o ícone, a cor e a variante do botão de ação. A regra de negócio vira mecânica em vez de convenção lembrada tela a tela.
Referência da API
ConfirmDialog
| Prop | Tipo | Padrão |
|---|---|---|
| cancelLabel | string | number | bigint | boolean | ReactElement<unknown, string | JSXElementConstructor<any>> | Iterable<ReactNode> | ReactPortal | Promise<...> | null | "Cancelar" |
| children | string | number | bigint | boolean | ReactElement<unknown, string | JSXElementConstructor<any>> | Iterable<ReactNode> | ReactPortal | Promise<...> | null | — |
| confirmLabel | string | number | bigint | boolean | ReactElement<unknown, string | JSXElementConstructor<any>> | Iterable<ReactNode> | ReactPortal | Promise<...> | null | "Confirmar" |
| consequence* O que acontece com o registro, e o que é reversível. Obrigatório. | string | number | bigint | boolean | ReactElement<unknown, string | JSXElementConstructor<any>> | Iterable<ReactNode> | ReactPortal | Promise<...> | null | — |
| description | string | number | bigint | boolean | ReactElement<unknown, string | JSXElementConstructor<any>> | Iterable<ReactNode> | ReactPortal | Promise<...> | null | — |
| disabled | boolean | false |
| onConfirm | (() => void) | — |
| onOpenChange | ((open: boolean) => void) | — |
| open | boolean | — |
| title* | string | number | bigint | boolean | ReactElement<unknown, string | JSXElementConstructor<any>> | Iterable<ReactNode> | ReactPortal | Promise<...> | null | — |
| tone | "archive" | "revoke" | "critical" | "archive" |
Pendência editorial: o que é, quando usar, quando não usar, acessibilidade, componentes relacionados, exemplo em contexto de produto. A lacuna aparece aqui em vez de ser preenchida com orientação inventada.
- Demonstrações e playground: componente real de @voxmente/ui
- Referência da API: TypeScript do pacote
- Cor, espaçamento e raio das demonstrações: tokens de theme.css