<script lang="ts">
import { Toast, createToaster } from '@skeletonlabs/skeleton-svelte';
const toaster = createToaster({});
</script>
<button
class="btn preset-filled"
onclick={() =>
toaster.info({
title: 'Title',
description: 'This is a description.',
})}
>
Toast
</button>
<Toast.Group {toaster}>
{#snippet children(toast)}
<Toast {toast}>
<Toast.Message>
<Toast.Title>{toast.title}</Toast.Title>
<Toast.Description>{toast.description}</Toast.Description>
</Toast.Message>
<Toast.CloseTrigger />
</Toast>
{/snippet}
</Toast.Group>
import { Toast, createToaster } from '@skeletonlabs/skeleton-react';
export default function Default() {
const toaster = createToaster({});
return (
<>
<button
className="btn preset-filled"
onClick={() =>
toaster.info({
title: 'Title',
description: 'This is a description.',
})
}
>
Toast
</button>
<Toast.Group toaster={toaster}>
{(toast) => (
<Toast toast={toast} key={toast.id}>
<Toast.Message>
<Toast.Title>{toast.title}</Toast.Title>
<Toast.Description>{toast.description}</Toast.Description>
</Toast.Message>
<Toast.CloseTrigger />
</Toast>
)}
</Toast.Group>
</>
);
}
Placement
<script lang="ts">
import { Toast, createToaster } from '@skeletonlabs/skeleton-svelte';
const toaster = createToaster({
placement: 'bottom-end',
});
</script>
<button
class="btn preset-filled"
onclick={() =>
toaster.info({
title: 'Title',
description: 'This is a description.',
})}
>
Toast
</button>
<Toast.Group {toaster}>
{#snippet children(toast)}
<Toast {toast}>
<Toast.Message>
<Toast.Title>{toast.title}</Toast.Title>
<Toast.Description>{toast.description}</Toast.Description>
</Toast.Message>
<Toast.CloseTrigger />
</Toast>
{/snippet}
</Toast.Group>
Usage
This component acts as a Singleton - meaning you only implement a single instance (typically at the root scope of your app) and then reuse it over and over. To do this, implement the <Toast.Group> at the root scope of your app (for SvelteKit this would be your root +layout.svelte), and use a shared createToaster() instance to trigger messages to that group from anywhere in your application.
import { Toast, createToaster } from '@skeletonlabs/skeleton-react';
export default function Placement() {
const toaster = createToaster({
placement: 'bottom-end',
});
return (
<>
<button
className="btn preset-filled"
onClick={() =>
toaster.info({
title: 'Title',
description: 'This is a description.',
})
}
>
Toast
</button>
<Toast.Group toaster={toaster}>
{(toast) => (
<Toast toast={toast} key={toast.id}>
<Toast.Message>
<Toast.Title>{toast.title}</Toast.Title>
<Toast.Description>{toast.description}</Toast.Description>
</Toast.Message>
<Toast.CloseTrigger />
</Toast>
)}
</Toast.Group>
</>
);
}
API Reference
Root
| Property | Default | Type |
|---|---|---|
toast | - | Omit<Options<any>, "id" | "parent"> |
element | - | ((attributes: HTMLAttributes<"div">) => Element) | undefinedRender the element yourself |
RootContext
| Property | Default | Type |
|---|---|---|
children | - | (toast: ToastApi<PropTypes, any>) => ReactNode |
Group
| Property | Default | Type |
|---|---|---|
toaster | - | ToastStore<any> |
children | - | ((toast: ToastProps<any>) => Element | null) | undefined |
element | - | ((attributes: HTMLAttributes<"div">) => Element) | undefinedRender the element yourself |
Message
| Property | Default | Type |
|---|---|---|
element | - | ((attributes: HTMLAttributes<"div">) => Element) | undefinedRender the element yourself |
Title
| Property | Default | Type |
|---|---|---|
element | - | ((attributes: HTMLAttributes<"div">) => Element) | undefinedRender the element yourself |
Description
| Property | Default | Type |
|---|---|---|
element | - | ((attributes: HTMLAttributes<"div">) => Element) | undefinedRender the element yourself |
ActionTrigger
| Property | Default | Type |
|---|---|---|
element | - | ((attributes: HTMLAttributes<"button">) => Element) | undefinedRender the element yourself |
CloseTrigger
| Property | Default | Type |
|---|---|---|
element | - | ((attributes: HTMLAttributes<"button">) => Element) | undefinedRender the element yourself |