# Confirm

Asks before something consequential: neutral (Publish to brands), destructive (Delete price list) and typed (type the handle to retire a product used by live orders).

- **Group:** Overlays · **family:** `overlays` · **shadcn:** AlertDialog
- **Build:** shadcn `AlertDialog`.
- **In apps/admin today:** Not in apps/admin.
- **Client component:** yes. 

## Content rules

- Title: the action as a question ("Delete the EU price list?").
- Body: the consequence with numbers ("14 products lose their EUR price").
- Button repeats the verb: "Delete price list".

## Do

- Prefer an Undo toast for reversible deletes.

## Don't

- "Are you sure?"
- OK / Cancel.

## Accessibility

- **Keyboard:** Escape cancels.
- **Keyboard:** Focus starts on Cancel for destructive confirms.
- **ARIA:** `role="alertdialog"`; the consequence is `aria-describedby`.
- **Focus:** Opening moves focus inside (`[data-k-autofocus]` first, else the first field); closing returns it to the opener.

## Tokens

`--s-3` `--s-5` `--s-6` `--s-2` `--s-4` `--muted-foreground` `--foreground` `--w-medium` `--border` `--muted` `--r-card` `--input` `--motion-hover` `--primary` `--accent` `--text-small` `--font-code` `--text-code` `--r-chip`

## Files

`confirm.html` live specimen · `confirm.css` kit rules · `confirm.d.ts` props · full page: `docs/components/confirm/` (phone: `m/`).
