SuperdindaDocs
Overlays

ReasonDialog

A decision that needs a reason on record (Figma "Reason Dialog" 2056:56697, Product × Tone × Confirmation): reason presets, optional details, what happens, and for irreversible operations a typed confirmation.

The confirm stays off until a reason is picked, the details are filled when required, and the phrase matches. An alert dialog with labelled fields; App 480 wide, Backoffice 560.

<ReasonDialog product="backoffice" tone="destructive" title="Queimar o IP proxy-br-07?"
   reasonsLabel="Motivo" reasons={[{ value: "blocked", label: "IP bloqueado pelo WhatsApp" }, { value: "other", label: "Outro" }]}
   detailsRequiredWhen="other" detailsLabel="Detalhes" confirmPhrase="proxy-br-07"
   confirmPhraseLabel="Digite proxy-br-07 para confirmar" confirmLabel="Queimar IP" cancelLabel="Cancelar"
   closeLabel="Fechar" onConfirm={({ reason, details }) => burn(reason, details)} />

Playground

Um preset por valor do primeiro eixo do Figma. Mude as props; dsState força hover, foco ou pressionado, como na matriz.

Reason Dialog

boolean

Variantes, tamanhos e estados

Cada célula é o componente real, marcada com a variante do Figma que reproduz (passe o mouse pra ver o node).

Product · App

Tone · ConfirmationReason Dialog
Default · None

Não é risco?

Fica na auditoria com seu nome.

O que acontece:

  • O aviso sai da lista de alertas.
  • A IA aprende com a sua resposta.
Default · Typed

Não é risco?

Fica na auditoria com seu nome.

O que acontece:

  • O aviso sai da lista de alertas.
  • A IA aprende com a sua resposta.
Destructive · None

Encerrar a proteção da Marlene?

Fica na auditoria com seu nome.

O que acontece:

  • Os avisos da Marlene param hoje.
  • A conexão com o WhatsApp dela é desfeita.
Destructive · Typed

Encerrar a proteção da Marlene?

Fica na auditoria com seu nome.

O que acontece:

  • Os avisos da Marlene param hoje.
  • A conexão com o WhatsApp dela é desfeita.

Product · Backoffice

Tone · ConfirmationReason Dialog
Default · None

Refazer o pareamento da Marlene?

Fica na auditoria com seu nome.

O que acontece:

  • A sessão atual é encerrada.
  • A Marlene recebe um novo código no WhatsApp.
Default · Typed

Refazer o pareamento da Marlene?

Fica na auditoria com seu nome.

O que acontece:

  • A sessão atual é encerrada.
  • A Marlene recebe um novo código no WhatsApp.
Destructive · None

Queimar o IP proxy-br-07?

Fica na auditoria com seu nome.

O que acontece:

  • As 4 sessões nesse IP mudam de IP agora.
  • O IP não volta para o pool.
Destructive · Typed

Queimar o IP proxy-br-07?

Fica na auditoria com seu nome.

O que acontece:

  • As 4 sessões nesse IP mudam de IP agora.
  • O IP não volta para o pool.

Props

As props que o arquivo do DS declara. O componente também repassa as do primitivo (base-ui), quando ele tem um.

PropTipoPadrãoDescrição
boolean—Controlled open state; pair with onOpenChange.
boolean—Uncontrolled initial state.
((open: boolean) => void)—
React.ReactElement<unknown, string | React.JSXElementConstructor<any>>—The element that opens it (a DS Button), wired as the dialog trigger.
OverlayProduct"app"App (stacked 44 px buttons, radius 22) or Backoffice (inline dense).
OverlayTone"default"Destructive turns the icon chip, the consequences and the confirm red.
ReactNode—
ReactNode—
ReactNode—A lucide glyph for the header chip (triangle-alert, shield-alert…).
ReasonChoice[]—The reasons to pick from (Figma "Reason · x4").
string—Accessible name of the reason list, e.g. "Motivo".
string—Reason picked when the dialog opens.
string—The reason that makes the details field required (e.g. "other").
ReactNode—The Figma "showDetails" field: label, placeholder and hint.
string—
ReactNode—
ReactNode—Title of the consequence list, e.g. "O que acontece:".
ReactNode[]—The lines of the consequence list.
string—The Figma Confirmation=Typed variant: the phrase to type (an id, a nickname) before the confirm turns on, e.g. "proxy-br-07".
ReactNode—What to type, e.g. "Digite proxy-br-07 para confirmar".
ReactNode—Label of the main action, a verb that names it ("Desativar conta").
ReactNode—
string—Accessible name of the X button (pt-BR, e.g. "Fechar").
ReactNode—The Dialog Footer "helper", e.g. "Fica registrado na auditoria com seu nome."
boolean—Busy from outside (the confirm shows its spinner and ignores presses).
boolean—Render in place, open and not modal: for /__ds and the docs only.
string—Classes for the panel (e.g. a width in the docs).
((result: ReasonDialogResult) => unknown)—Runs on confirm with the reason and the details. Return a promise to show the spinner; it closes on resolve and stays open on reject.

On this page