Dialog
Dialogs inform users about a task and can contain critical information, require decisions, or involve multiple tasks.
import { Button } from "@/components/ui/button";
import {
Dialog,
DialogClose,
DialogContent,
DialogDescription,
DialogFooter,
DialogHeader,
DialogTitle,
DialogTrigger,
} from "@/components/ui/dialog";
import { Input } from "@/components/ui/input";
import { Label } from "@/components/ui/label";
import {
Select,
SelectContent,
SelectItem,
SelectTrigger,
SelectValue,
} from "@/components/ui/select";
export default function Basic() {
return (
<Dialog>
<DialogTrigger asChild>
<Button variant="outline">Add Task</Button>
</DialogTrigger>
<DialogContent>
<DialogHeader>
<DialogTitle>Add Task</DialogTitle>
<DialogDescription>
New tasks are added to the default category.
</DialogDescription>
</DialogHeader>
<div className="grid gap-4 py-4">
<div className="grid gap-2">
<Label htmlFor="name">Task Name</Label>
<Input id="name" placeholder="Enter task name here" />
</div>
<div className="grid gap-2">
<Label htmlFor="assignee">Assignee</Label>
<Select>
<SelectTrigger>
<SelectValue id="assignee" placeholder="Select someone" />
</SelectTrigger>
<SelectContent>
<SelectItem value="1">Adam</SelectItem>
<SelectItem value="2">Ruth</SelectItem>
<SelectItem value="3">Taylor</SelectItem>
</SelectContent>
</Select>
</div>
</div>
<DialogFooter>
<DialogClose asChild>
<Button type="button" variant="outline">
Cancel
</Button>
</DialogClose>
<Button type="submit">Add</Button>
</DialogFooter>
</DialogContent>
</Dialog>
);
}
import { Button } from "@/components/ui/button";
import {
Dialog,
DialogClose,
DialogContent,
DialogFooter,
DialogHeader,
DialogTitle,
DialogTrigger,
} from "@/components/ui/dialog";
export default function Content() {
return (
<Dialog>
<DialogTrigger asChild>
<Button variant="outline">Only Content</Button>
</DialogTrigger>
<DialogContent>
<DialogHeader>
<DialogTitle>Please login again.</DialogTitle>
</DialogHeader>
<p className="text-muted-foreground">
Your session has expired. Please login again to continue using the
application.
</p>
<DialogFooter>
<DialogClose asChild>
<Button type="button" variant="outline">
Cancel
</Button>
</DialogClose>
<Button type="submit">Login</Button>
</DialogFooter>
</DialogContent>
</Dialog>
);
}
import { Button } from "@/components/ui/button";
import {
Dialog,
DialogClose,
DialogContent,
DialogDescription,
DialogFooter,
DialogHeader,
DialogTitle,
DialogTrigger,
} from "@/components/ui/dialog";
import { Input } from "@/components/ui/input";
import { Label } from "@/components/ui/label";
export default function Login() {
return (
<Dialog>
<DialogTrigger asChild>
<Button variant="outline">Login</Button>
</DialogTrigger>
<DialogContent>
<DialogHeader>
<DialogTitle>Login</DialogTitle>
<DialogDescription>
Please login again to continue using the application.
</DialogDescription>
</DialogHeader>
<form className="grid gap-4">
<div className="grid gap-2">
<Label htmlFor="email">Email</Label>
<Input
required
id="email"
type="email"
autoComplete="username"
placeholder="team@mynaui.com"
/>
</div>
<div className="grid gap-2">
<Label htmlFor="password">Password</Label>
<Input
required
id="password"
type="password"
placeholder="••••••••••"
autoComplete="current-password"
/>
</div>
</form>
<DialogFooter>
<DialogClose asChild>
<Button type="button" variant="outline">
Cancel
</Button>
</DialogClose>
<Button type="submit">Login</Button>
</DialogFooter>
</DialogContent>
</Dialog>
);
}
import { Button } from "@/components/ui/button";
import {
Dialog,
DialogTrigger,
DialogContent,
DialogHeader,
DialogTitle,
DialogDescription,
DialogFooter,
DialogClose,
} from "@/components/ui/dialog";
import { Trash } from "@mynaui/icons-react";
export default function ConfirmDelete() {
return (
<Dialog>
<DialogTrigger asChild>
<Button variant="destructive" className="flex items-center gap-2 text-sm">
<Trash className="size-4" /> Delete
</Button>
</DialogTrigger>
<DialogContent>
<DialogHeader>
<DialogTitle className="text-base">Delete Item</DialogTitle>
<DialogDescription>
This action cannot be undone. Are you sure you want to permanently
delete this item?
</DialogDescription>
</DialogHeader>
<DialogFooter className="flex flex-row-reverse gap-2">
<Button size="sm" variant="destructive">
Delete
</Button>
<DialogClose asChild>
<Button size="sm" variant="outline">
Cancel
</Button>
</DialogClose>
</DialogFooter>
</DialogContent>
</Dialog>
);
}
import { Button } from "@/components/ui/button";
import {
Dialog,
DialogTrigger,
DialogContent,
DialogHeader,
DialogTitle,
DialogDescription,
DialogFooter,
DialogClose,
} from "@/components/ui/dialog";
import { Input } from "@/components/ui/input";
import { Label } from "@/components/ui/label";
import { Mail } from "@mynaui/icons-react";
export default function Newsletter() {
return (
<Dialog>
<DialogTrigger asChild>
<Button variant="outline" className="flex items-center gap-2 text-sm">
<Mail className="size-4" /> Subscribe
</Button>
</DialogTrigger>
<DialogContent>
<DialogHeader>
<DialogTitle className="text-base">Join Newsletter</DialogTitle>
<DialogDescription>
Stay updated with our latest news. Enter your email below.
</DialogDescription>
</DialogHeader>
<div className="grid gap-2 py-4">
<Label htmlFor="email" className="text-sm">
Email
</Label>
<Input id="email" type="email" placeholder="you@example.com" />
</div>
<DialogFooter className="flex flex-row-reverse gap-2">
<Button size="sm" type="submit">
Subscribe
</Button>
<DialogClose asChild>
<Button size="sm" variant="outline">
Cancel
</Button>
</DialogClose>
</DialogFooter>
</DialogContent>
</Dialog>
);
}
import { Button } from "@/components/ui/button";
import {
Dialog,
DialogTrigger,
DialogContent,
DialogHeader,
DialogTitle,
DialogDescription,
DialogFooter,
DialogClose,
} from "@/components/ui/dialog";
export default function TermsDialog() {
return (
<Dialog>
<DialogTrigger asChild>
<Button variant="outline" className="text-sm">
View Terms
</Button>
</DialogTrigger>
<DialogContent className="max-h-[80vh] overflow-y-auto">
<DialogHeader>
<DialogTitle className="text-base">Terms and Conditions</DialogTitle>
<DialogDescription>
Please read the following terms carefully.
</DialogDescription>
</DialogHeader>
<div className="space-y-2 text-sm leading-snug">
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam
suscipit fermentum purus, a aliquam elit placerat et. Cras non
condimentum quam. Donec at ullamcorper elit. Sed vitae ipsum ut
urna fermentum ultrices.
</p>
<p>
Mauris mollis odio nec lectus ultricies, in commodo dui faucibus.
Donec nec ipsum sed erat facilisis tincidunt. Ut nec ante vel metus
porttitor aliquet.
</p>
</div>
<DialogFooter className="flex flex-row-reverse gap-2">
<Button size="sm">Accept</Button>
<DialogClose asChild>
<Button size="sm" variant="outline">
Close
</Button>
</DialogClose>
</DialogFooter>
</DialogContent>
</Dialog>
);
}