Skip to content
Drivn logoDrivn

Toast

Sonner-powered toast notifications with Lucide icons, positioning, and auto-dismiss.

Preview

Installation

npx drivn add toast

Usage

Place Toaster in your layout, then call toast() anywhere.

1import { toast, Toaster } from "@/components/ui/toast"
2
3export default function Page() {
4 return (
5 <div>
6 <button onClick={() => toast("Changes saved")}>
7 Default
8 </button>
9 <button onClick={() => toast.success("Published!")}>
10 Success
11 </button>
12 <button onClick={() => toast.error("Something went wrong")}>
13 Error
14 </button>
15 <Toaster />
16 </div>
17 )
18}

Positioning

Action Button

Add an action button to the toast.

1// Toast with action button
2toast.success("File deleted", {
3 action: {
4 label: "Undo",
5 onClick: () => restoreFile(),
6 },
7})

API Reference

toast()

PropTypeDefaultDescription
titlestringMain text of the toast notification (first argument)
descriptionstringOptional secondary text below the title
action{ label: string; onClick: () => void }Optional action button displayed in the toast
durationnumber4000Time in ms before the toast auto-dismisses

Toaster

PropTypeDefaultDescription
position"top-left" | "top-center" | "top-right" | "bottom-left" | "bottom-center" | "bottom-right""bottom-right"Position of the toast container on screen
icons{ success?: ReactNode; error?: ReactNode; info?: ReactNode; warning?: ReactNode; loading?: ReactNode }Custom icons for each toast variant. Pre-configured with Lucide icons.
durationnumber4000Default duration for all toasts in milliseconds
richColorsbooleanfalseEnable colored backgrounds matching toast variant
closeButtonbooleanfalseShow a close button on each toast
expandbooleanfalseExpand all toasts by default instead of stacking
visibleToastsnumber3Maximum number of toasts visible at once