Components
Toast

Toast

A message that appears on the screen to provide feedback on an action.

Usage

    import { createToaster } from '@ark-ui/react/toast'
    import { XIcon } from 'lucide-react'
    import { Button } from '~/components/ui/button'
    import { IconButton } from '~/components/ui/icon-button'
    import * as Toast from '~/components/ui/toast'
    
    const [Toaster, toast] = createToaster({
      placement: 'top-end',
      render(toast) {
        return (
          <Toast.Root>
            <Toast.Title>{toast.title}</Toast.Title>
            <Toast.Description>{toast.description}</Toast.Description>
            <Toast.CloseTrigger asChild>
              <IconButton size="sm" variant="link">
                <XIcon />
              </IconButton>
            </Toast.CloseTrigger>
          </Toast.Root>
        )
      },
    })
    
    export const Demo = () => (
      <>
        <Button
          variant="outline"
          onClick={() => toast.create({ title: 'Title', description: 'Description' })}
        >
          Create Toast
        </Button>
        <Toaster />
      </>
    )
    

    Installation

    Insert code snippet into your project. Update import paths as needed.

    import { Toast } from '@ark-ui/react/toast'
    import type { ComponentProps } from 'react'
    import { tv } from 'tailwind-variants'
    import { createStyleContext } from '~/lib/create-style-context'
    
    const styles = tv(
      {
        base: 'toast',
        slots: {
          group: 'toast__group',
          root: 'toast__root',
          title: 'toast__title',
          description: 'toast__description',
          closeTrigger: 'toast__closeTrigger',
        },
        variants: {},
      },
      { twMerge: false },
    )
    const { withProvider, withContext } = createStyleContext(styles)
    
    export const Root = withProvider(Toast.Root, 'root')
    export const CloseTrigger = withContext(Toast.CloseTrigger, 'closeTrigger')
    export const Description = withContext(Toast.Description, 'description')
    export const Group = withContext(Toast.Group, 'group')
    export const Title = withContext(Toast.Title, 'title')
    
    export type RootProps = ComponentProps<typeof Root>
    export interface CloseTriggerProps extends ComponentProps<typeof CloseTrigger> {}
    export interface DescriptionProps extends ComponentProps<typeof Description> {}
    export interface GroupProps extends ComponentProps<typeof Group> {}
    export interface TitleProps extends ComponentProps<typeof Title> {}
    

    On this page