UNPKG

@sveltestrap/sveltestrap

Version:

Bootstrap components for Svelte

192 lines (155 loc) 4.65 kB
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> `} />