When To Use
- Use Dialog when content needs to appear in context without forcing a full page transition.
- Match the overlay type to the weight of the task: lightweight guidance for hints, stronger containment for focused tasks.
- Review the examples below to compare trigger styles, content density, and dismissal expectations.
When Not To Use
- Do not move a full workflow into an overlay if the user needs persistent navigation, rich context, or deep editing space.
- Do not rely on an overlay for critical messaging when it can be missed, dismissed accidentally, or blocked by focus issues.
Accessibility Notes
- Move focus into the overlay when it opens and return focus to the trigger when it closes.
- Support Escape to dismiss non-destructive overlays and ensure the trigger communicates expanded state where appropriate.
- Do not hide critical actions behind hover-only disclosure; keyboard and touch users need equivalent access.
Key Props / API
Key exports
DialogRoot, DialogTrigger, DialogOverlay, DialogContent, DialogHeader, DialogFooter
Example Code
import {
Dialog, DialogTrigger, DialogContent,
DialogHeader, DialogFooter, DialogTitle, DialogDescription,
} from "@hilum/ui"
import { Button } from "@hilum/ui"
<Dialog>
<DialogTrigger asChild>
<Button variant="outline">Delete voice</Button>
</DialogTrigger>
<DialogContent>
<DialogHeader>
<DialogTitle>Delete voice clone?</DialogTitle>
<DialogDescription>
This action cannot be undone. The voice clone "Roger" will be
permanently removed from your library.
</DialogDescription>
</DialogHeader>
// ...trimmed for docsDialog
Confirmation dialog
Modal overlay with title, description, and action buttons