toast

PreviousNext

toast

Docs
intentuiui

Preview

Loading preview…
components/ui/toast.tsx
"use client"

import { useTheme } from "next-themes"
import { Toaster as ToasterPrimitive, type ToasterProps } from "sonner"
import { twJoin } from "tailwind-merge"

export function Toast(props: ToasterProps) {
  const { theme = "system" } = useTheme()
  return (
    <ToasterPrimitive
      theme={theme as ToasterProps["theme"]}
      className="toaster group"
      richColors
      toastOptions={{
        className: twJoin(
          "not-has-data-[slot=note]:backdrop-blur-3xl *:data-icon:mt-0.5 *:data-icon:self-start has-data-description:*:data-icon:mt-1",
          "**:data-action:[--normal-bg:var(--color-primary-fg)] **:data-action:[--normal-text:var(--color-primary)]",
        ),
      }}
      style={
        {
          "--normal-bg": "var(--color-overlay)",
          "--normal-text": "var(--color-overlay-fg)",
          "--normal-border": "var(--color-border)",

          "--success-bg": "var(--color-success-subtle)",
          "--success-border": "color-mix(in oklab, var(--success-subtle-fg) 20%, transparent)",
          "--success-text": "var(--color-success-subtle-fg)",

          "--error-bg": "var(--color-danger-subtle)",
          "--error-border": "color-mix(in oklab, var(--danger-subtle-fg) 20%, transparent)",
          "--error-text": "var(--color-danger-subtle-fg)",

          "--warning-bg": "var(--color-warning-subtle)",
          "--warning-border": "color-mix(in oklab, var(--warning-subtle-fg) 20%, transparent)",
          "--warning-text": "var(--color-warning-subtle-fg)",

          "--info-bg": "var(--color-info-subtle)",
          "--info-border": "color-mix(in oklab, var(--info-subtle-fg) 20%, transparent)",
          "--info-text": "var(--color-info-subtle-fg)",
        } as React.CSSProperties
      }
      {...props}
    />
  )
}

Installation

npx shadcn@latest add @intentui/toast

Usage

import { Toast } from "@/components/ui/toast"
<Toast />