65 lines
4.4 KiB
Markdown
65 lines
4.4 KiB
Markdown
# Sonner API Reference
|
||
|
||
Exact props, types, and defaults. Options passed to `toast()` override the same options set via the Toaster's `toastOptions`.
|
||
|
||
## `<Toaster />`
|
||
|
||
| Prop | Type | Default | Description |
|
||
| --- | --- | --- | --- |
|
||
| `theme` | `string` | `'light'` | `'light'`, `'dark'`, or `'system'`. |
|
||
| `richColors` | `boolean` | `false` | Makes error and success states more colorful. |
|
||
| `expand` | `boolean` | `false` | Toasts expanded by default (otherwise they expand on hover). |
|
||
| `visibleToasts` | `number` | `3` | Amount of visible toasts. |
|
||
| `id` | `string` | – | Toaster id, targeted by `toast()`'s `toasterId` option. |
|
||
| `position` | `string` | `'bottom-right'` | `top-left`, `top-center`, `top-right`, `bottom-left`, `bottom-center`, `bottom-right`. |
|
||
| `closeButton` | `boolean` | `false` | Adds a close button to all toasts. |
|
||
| `offset` | `string \| number \| object` | `'32px'` | Offset from screen edges. Object form is per-side: `{ bottom: '24px', right: '16px' }`. |
|
||
| `mobileOffset` | `string \| number \| object` | `'16px'` | Offset when screen width < 600px. |
|
||
| `swipeDirections` | `array` | based on position | Allowed swipe-to-dismiss directions. |
|
||
| `dir` | `string` | `'ltr'` | Text directionality. |
|
||
| `hotkey` | `string` | `⌥/alt + T` | Keyboard shortcut that focuses the toaster area. |
|
||
| `invert` | `boolean` | `false` | Dark toasts in light mode and vice versa. |
|
||
| `toastOptions` | `object` | – | Default options applied to every toast (any `toast()` option below). |
|
||
| `gap` | `number` | `14` | Gap between toasts when expanded. |
|
||
| `icons` | `object` | – | Replace default icons: `{ success, info, warning, error, loading }`; `null` removes one. |
|
||
|
||
## `toast()` options
|
||
|
||
`toast(message, options)` — message is a string, JSX, or a function returning JSX. Returns the toast's id.
|
||
|
||
| Option | Type | Default | Description |
|
||
| --- | --- | --- | --- |
|
||
| `description` | `ReactNode` | – | Renders underneath the title; also accepts a function returning JSX. |
|
||
| `closeButton` | `boolean` | `false` | Adds a close button. |
|
||
| `invert` | `boolean` | `false` | Dark toast in light mode and vice versa. |
|
||
| `duration` | `number` | `4000` | Milliseconds before auto-close. `Infinity` persists the toast. |
|
||
| `position` | `string` | `'bottom-right'` | Position of this toast. |
|
||
| `dismissible` | `boolean` | `true` | If `false`, the user cannot dismiss the toast. |
|
||
| `icon` | `ReactNode` | – | Icon in front of the text; `null` removes the default. |
|
||
| `action` | `ReactNode \| { label, onClick }` | – | Primary button; clicking closes the toast unless `onClick` calls `event.preventDefault()`. |
|
||
| `cancel` | `ReactNode \| { label, onClick }` | – | Secondary button; clicking closes the toast. |
|
||
| `actionButtonStyle` | `object` | `{}` | Styles for the action button. |
|
||
| `cancelButtonStyle` | `object` | `{}` | Styles for the cancel button. |
|
||
| `id` | `string` | – | Custom id; calling `toast()` again with the same id updates the existing toast. |
|
||
| `testId` | `string` | – | Rendered as `data-testid` for e2e tests. |
|
||
| `toasterId` | `string` | – | Id of the toaster to render this toast in. |
|
||
| `style` | `object` | – | Inline styles for the toast. |
|
||
| `classNames` | `object` | – | Classes per part: `{ toast, title, description, actionButton, cancelButton, closeButton }`. Needs `!important` unless `unstyled`. |
|
||
| `unstyled` | `boolean` | `false` | Removes all default styles. |
|
||
| `onDismiss` | `(toast) => void` | – | Fires when the close button is clicked or the toast is swiped away. |
|
||
| `onAutoClose` | `(toast) => void` | – | Fires when the toast closes automatically after `duration`. |
|
||
| `containerAriaLabel` | `string` | `'Notifications'` | ARIA label for the toast container. |
|
||
|
||
## Functions
|
||
|
||
| Function | Purpose |
|
||
| --- | --- |
|
||
| `toast(message, opts?)` | Render a toast; returns its id. |
|
||
| `toast.success / .error / .info / .warning(message, opts?)` | Typed toast with matching icon. |
|
||
| `toast.loading(message, opts?)` | Toast with a spinner; update it by id. |
|
||
| `toast.promise(promise, { loading, success, error })` | Loading toast that resolves with the promise; `success`/`error` accept strings, JSX, functions of the result, or objects of toast options. |
|
||
| `toast.custom((t) => jsx, opts?)` | Headless toast — your JSX, Sonner's behavior. |
|
||
| `toast.dismiss(id?)` | Dismiss one toast, or all when called without an id. |
|
||
| `toast.getActiveToasts()` | All active toasts, usable outside React. |
|
||
| `useSonner()` | React hook returning `{ toasts }`. |
|