import * as React from "react"
import { Toast as ToastPrimitive } from "@base-ui/react/toast"
import { cn } from "@workspace/ui/lib/utils"
import { Button } from "@workspace/ui/components/button"
import {
XIcon,
CircleCheckIcon,
InfoIcon,
TriangleAlertIcon,
OctagonXIcon,
Loader2Icon,
} from "lucide-react"
import { uiMessages, useMessage } from "./i18n"
const toast = ToastPrimitive.createToastManager()
function ToastProvider({ ...props }: ToastPrimitive.Provider.Props) {
return
}
function ToastPortal({ ...props }: ToastPrimitive.Portal.Props) {
return
}
function ToastViewport({ className, ...props }: ToastPrimitive.Viewport.Props) {
return (
)
}
function Toast({ className, ...props }: ToastPrimitive.Root.Props) {
return (
)
}
function ToastContent({ className, ...props }: ToastPrimitive.Content.Props) {
return (
)
}
function ToastTitle({ className, ...props }: ToastPrimitive.Title.Props) {
return (
)
}
function ToastDescription({
className,
...props
}: ToastPrimitive.Description.Props) {
return (
)
}
function ToastAction({
className,
render = ,
...props
}: ToastPrimitive.Action.Props) {
return (
)
}
function ToastClose({
"aria-label": ariaLabel,
className,
children,
render = ,
...props
}: ToastPrimitive.Close.Props) {
const closeLabel = useMessage(uiMessages.closeToast)
return (
{children ?? }
)
}
function ToastIcon({ type }: { type: string | undefined }) {
let icon: React.ReactNode = null
if (type === "success") {
icon =
}
if (type === "info") {
icon =
}
if (type === "warning") {
icon =
}
if (type === "error") {
icon =
}
if (type === "loading") {
icon =
}
if (!icon) {
return null
}
return (
{icon}
)
}
function ToastList() {
const { toasts } = ToastPrimitive.useToastManager()
return toasts.map((toastItem) => (
))
}
function Toaster({
children,
toastManager = toast,
...props
}: ToastPrimitive.Provider.Props) {
return (
{children}
)
}
const createToastManager = ToastPrimitive.createToastManager
const useToastManager = ToastPrimitive.useToastManager
export {
Toaster,
Toast,
ToastAction,
ToastClose,
ToastContent,
ToastDescription,
ToastPortal,
ToastProvider,
ToastTitle,
ToastViewport,
createToastManager,
toast,
useToastManager,
}