{"version":3,"file":"Toast.cjs","sources":["../../../../src/components/feedback/toast/Toast.tsx"],"sourcesContent":["import { Children, isValidElement, memo, useCallback } from 'react'\r\n\r\nimport { TOAST_STYLES } from '@components/feedback/toast/styles/Toast.css.ts'\r\nimport { ToastActions } from '@components/feedback/toast/components/toast-actions'\r\nimport { ToastClose } from '@components/feedback/toast/components/toast-close'\r\nimport { ToastDescription } from '@components/feedback/toast/components/toast-description'\r\nimport { ToastIcon } from '@components/feedback/toast/components/toast-icon'\r\nimport { ToastTitle } from '@components/feedback/toast/components/toast-title'\r\nimport { ToastContext } from '@components/feedback/toast/context/Toast.context.ts'\r\nimport type { ToastCompound } from '@components/feedback/toast/types'\r\nimport type { ToastProps } from '@components/feedback/toast/types/Toast.props.ts'\r\nimport { Box } from '@components/layout/box'\r\nimport { createIconChildUtils } from '@utils/createIconChildUtils.ts'\r\nimport { cn } from '@utils/cn.ts'\r\n\r\nconst { hasIconChild } = createIconChildUtils(ToastIcon)\r\n\r\n/**\r\n * Notification card compound with `variant` (info|success|warning|error),\r\n * optional `icon`, `title`, `description`, and a close button. Renders with\r\n * `role=\"status\"` by default; pass `role=\"alert\"` for urgent messages.\r\n * Supports compound children via `Toast.Icon`, `.Title`, `.Description`,\r\n * `.Actions`, and `.Close` slots.\r\n *\r\n * Compound slots: `Toast.Icon`, `Toast.Title`, `Toast.Description`,\r\n * `Toast.Actions`, `Toast.Close`.\r\n */\r\nconst Toast = memo<ToastProps>(({\r\n    variant = 'info',\r\n    role = 'status',\r\n    icon,\r\n    title,\r\n    description,\r\n    closeLabel = 'Close notification',\r\n    onClose,\r\n    children,\r\n    className,\r\n    ref,\r\n    ...props\r\n}) => {\r\n    const isCompound = children !== undefined\r\n    const showDefaultIcon = isCompound && !hasIconChild(children)\r\n    const hasActions = isCompound && Children.toArray(children).some(\r\n        (child) => isValidElement(child) && child.type === ToastActions,\r\n    )\r\n\r\n    const handleClose = useCallback(() => {\r\n        onClose?.()\r\n    }, [onClose])\r\n\r\n    return (\r\n        <ToastContext.Provider value={{ variant }}>\r\n            <Box\r\n                as={'div'}\r\n                ref={ref}\r\n                className={cn(\r\n                    TOAST_STYLES.recipe({ variant, actions: hasActions }),\r\n                    className,\r\n                )}\r\n                role={role === 'none' ? undefined : role}\r\n                {...props}\r\n            >\r\n                {isCompound ? (\r\n                    <>\r\n                        {showDefaultIcon && <ToastIcon icon={icon} />}\r\n                        {children}\r\n                    </>\r\n                ) : (\r\n                    <>\r\n                        <ToastIcon icon={icon} />\r\n                        {title && <ToastTitle>{title}</ToastTitle>}\r\n                        {description && (\r\n                            <ToastDescription>{description}</ToastDescription>\r\n                        )}\r\n                        {onClose && (\r\n                            <ToastClose\r\n                                aria-label={closeLabel}\r\n                                onClick={handleClose}\r\n                            />\r\n                        )}\r\n                    </>\r\n                )}\r\n            </Box>\r\n        </ToastContext.Provider>\r\n    )\r\n}) as unknown as ToastCompound\r\n\r\nToast.displayName = 'Toast'\r\nToast.Icon = ToastIcon\r\nToast.Title = ToastTitle\r\nToast.Description = ToastDescription\r\nToast.Actions = ToastActions\r\nToast.Close = ToastClose\r\n\r\nexport default Toast\r\n"],"names":["hasIconChild","createIconChildUtils","ToastIcon","Toast","memo","variant","role","icon","title","description","closeLabel","onClose","children","className","ref","props","isCompound","showDefaultIcon","hasActions","Children","child","isValidElement","ToastActions","handleClose","useCallback","ToastContext","jsx","Box","cn","TOAST_STYLES","jsxs","Fragment","ToastTitle","ToastDescription","ToastClose"],"mappings":"6qBAeM,CAAE,aAAAA,CAAA,EAAiBC,EAAAA,qBAAqBC,CAAS,EAYjDC,EAAQC,EAAAA,KAAiB,CAAC,CAC5B,QAAAC,EAAU,OACV,KAAAC,EAAO,SACP,KAAAC,EACA,MAAAC,EACA,YAAAC,EACA,WAAAC,EAAa,qBACb,QAAAC,EACA,SAAAC,EACA,UAAAC,EACA,IAAAC,EACA,GAAGC,CACP,IAAM,CACF,MAAMC,EAAaJ,IAAa,OAC1BK,EAAkBD,GAAc,CAAChB,EAAaY,CAAQ,EACtDM,EAAaF,GAAcG,EAAAA,SAAS,QAAQP,CAAQ,EAAE,KACvDQ,GAAUC,EAAAA,eAAeD,CAAK,GAAKA,EAAM,OAASE,CAAA,EAGjDC,EAAcC,EAAAA,YAAY,IAAM,CAClCb,IAAA,CACJ,EAAG,CAACA,CAAO,CAAC,EAEZ,aACKc,EAAAA,aAAa,SAAb,CAAsB,MAAO,CAAE,QAAApB,GAC5B,SAAAqB,EAAAA,IAACC,EAAA,CACG,GAAI,MACJ,IAAAb,EACA,UAAWc,EAAAA,GACPC,EAAAA,aAAa,OAAO,CAAE,QAAAxB,EAAS,QAASa,EAAY,EACpDL,CAAA,EAEJ,KAAMP,IAAS,OAAS,OAAYA,EACnC,GAAGS,EAEH,WACGe,EAAAA,KAAAC,EAAAA,SAAA,CACK,SAAA,CAAAd,GAAmBS,EAAAA,IAACxB,GAAU,KAAAK,CAAA,CAAY,EAC1CK,CAAA,CAAA,CACL,EAEAkB,EAAAA,KAAAC,EAAAA,SAAA,CACI,SAAA,CAAAL,MAACxB,GAAU,KAAAK,EAAY,EACtBC,GAASkB,EAAAA,IAACM,EAAA,CAAY,SAAAxB,CAAA,CAAM,EAC5BC,GACGiB,EAAAA,IAACO,EAAA,CAAkB,SAAAxB,CAAA,CAAY,EAElCE,GACGe,EAAAA,IAACQ,EAAA,CACG,aAAYxB,EACZ,QAASa,CAAA,CAAA,CACb,CAAA,CAER,CAAA,CAAA,EAGZ,CAER,CAAC,EAEDpB,EAAM,YAAc,QACpBA,EAAM,KAAOD,EACbC,EAAM,MAAQ6B,EACd7B,EAAM,YAAc8B,EACpB9B,EAAM,QAAUmB,EAChBnB,EAAM,MAAQ+B"}