shadcn.io is an independent project built on shadcn/ui
The title is Update Project Status. On Hold is outline and Complete is the solid action. Neither button changes a project.
Split the styles when one choice is the recommendation. If the choices are peers, make them look the same. A longer list of statuses fits a Select. In Solid, Ark UI does not update the project.
Installation
Anatomy

Usage
<AlertDialog>
<AlertDialogTrigger asChild={props => <Button {...props()} variant="outline">Update Status</Button>} />
<AlertDialogContent>
<AlertDialogHeader>
<AlertDialogTitle>Update Project Status</AlertDialogTitle>
<AlertDialogDescription>
Choose the new status for this project.
</AlertDialogDescription>
</AlertDialogHeader>
<AlertDialogFooter class="sm:justify-between">
<AlertDialogCancel>Cancel</AlertDialogCancel>
<div class="flex flex-col-reverse gap-2 sm:flex-row">
<AlertDialogClose asChild={props => <Button {...props()} variant="outline">Mark as On Hold</Button>} />
<AlertDialogClose asChild={props => <AlertDialogAction {...props()}>Mark as Complete</AlertDialogAction>} />
</div>
</AlertDialogFooter>
</AlertDialogContent>
</AlertDialog>FAQ
Which button gets which style?
The recommended action gets the default solid style, the alternative gets variant="outline", and Cancel keeps its outline look. Use variant="destructive" only for actions that destroy something.
Can I use other colors than the variants?
Prefer the variants, since they follow the theme in light and dark mode. If you need a green success button, check the variants first rather than adding raw color classes, which won't adapt to the theme.
How are the buttons grouped?
AlertDialogFooter takes sm:justify-between; Cancel sits on one side and the two actions share a flex gap-2 group on the other, so the layout reads as cancel versus act, then which act.
What happens on small screens?
The footer stacks its children, and the action group uses flex-col-reverse below sm, so every button is full width and the primary action ends up on top.
API Reference
Alert Dialog
Sets asChild and props. The rest is on the Alert Dialog page.
Button
Sets props and variant="outline". The rest is on the Button page.




