@sveltestrap/sveltestrap
Version:
Bootstrap components for Svelte
192 lines (155 loc) • 4.65 kB
text/mdx
import { Meta, Canvas, Controls, Story, Source } from '@storybook/blocks';
import * as ToastStories from './Toast.stories';
<Meta title="Components/Toast" />
# Toast <small class="bootstrap-docs">[Bootstrap Toast](https://getbootstrap.com/docs/5.3/components/toasts/)</small>
The `<Toast>` component is a user interface element designed to provide unobtrusive, temporary messages or notifications to users.
<Canvas>
<Story of={ToastStories.Basic} />
</Canvas>
<Controls of={ToastStories.Basic} />
## Icons
<Canvas withSource="none">
<Story of={ToastStories.Icons} />
</Canvas>
<Source
dark
language="html"
code={`
<script lang="ts">
import { Icon, Toast, ToastBody, ToastHeader } from '@sveltestrap/sveltestrap';
</script>
<div>
{#each colors as color}
<div class="p-3 mb-3">
<Toast class="me-1">
<ToastHeader icon={color}>{color}</ToastHeader>
<ToastBody>
This is a toast with a {color} icon.
</ToastBody>
</Toast>
</div>
{/each}
</div>
<div class="p-3 mb-3">
<Toast class="me-1">
<ToastHeader>
<Icon slot="icon" name="emoji-sunglasses" class="me-2" />
Sveltestrap
</ToastHeader>
<ToastBody>This is a toast with a custom icon.</ToastBody>
</Toast>
</div>
`} />
## Dismissible
<Canvas withSource="none">
<Story of={ToastStories.Dismissible} />
</Canvas>
<Source
dark
language="html"
code={`
<script lang="ts">
import { Button, Toast, ToastBody, ToastHeader } from '@sveltestrap/sveltestrap';
let isOpen = false;
function toggle() {
isOpen = !isOpen;
}
function reopen() {
isOpen = true;
}
</script>
<Toast {isOpen}>
<ToastHeader {toggle}>Toast title</ToastHeader>
<ToastBody>
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore
magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
consequat.
</ToastBody>
</Toast>
{#if !isOpen}
<Button color="primary" on:click={reopen}>Show Toast</Button>
{/if}
`} />
## Autohide
<Canvas withSource="none">
<Story of={ToastStories.Autohide} />
</Canvas>
<Source
dark
language="html"
code={`
<script lang="ts">
import { Button, Toast } from '@sveltestrap/sveltestrap';
let isOpen = false;
</script>
<Button color="primary" on:click={() => (isOpen = true)} disabled={isOpen}>
Show Toast that autohides
</Button>
<Toast autohide body header="Autohides after 5 sec" {isOpen} on:close={() => (isOpen = false)}>
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna
aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
</Toast>
`} />
## Events
<Canvas withSource="none">
<Story of={ToastStories.Events} />
</Canvas>
<Source
dark
language="html"
code={`
<script lang="ts">
import { Button, Toast } from '@sveltestrap/sveltestrap';
let isOpen = false;
let status = 'Closed';
function toggle() {
isOpen = !isOpen;
}
</script>
<h5>Current state: {status}</h5>
<Button color="danger" on:click={toggle}>{isOpen ? 'Close' : 'Open'} Toast</Button>
<Toast
body
header="It's Toasterific"
{isOpen}
on:open={() => (status = 'Opened')}
on:opening={() => (status = 'Opening...')}
on:closing={() => (status = 'Closing...')}
on:close={() => (status = 'Closed')}
>
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore
magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
consequat.
</Toast>
`} />
## Theming
<Canvas withSource="none">
<Story of={ToastStories.Theming} />
</Canvas>
<Source
dark
language="html"
code={`
<script lang="ts">
import { Toast } from '@sveltestrap/sveltestrap';
</script>
<Toast
body
theme="dark"
header="Dark Theme"
style="--bs-toast-color: #fff;"
isOpen={true}
>
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore
magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
consequat.
</Toast>
<Toast theme="light" style="--bs-toast-color: #000;">
<ToastHeader>Light Theme</ToastHeader>
<ToastBody>
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore
magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
consequat.
</ToastBody>
</Toast>
`} />