{"version":3,"file":"Toast.mjs","names":["BaseToast"],"sources":["../../../src/base-ui/Toast/Toast.tsx"],"sourcesContent":["'use client';\n\nimport { Toast as BaseToast } from '@base-ui/react/toast';\nimport { cssVar, cx } from 'antd-style';\nimport { AlertTriangle, CheckCircle, Info, Loader2, X, XCircle } from 'lucide-react';\nimport { memo, type ReactNode } from 'react';\n\nimport Icon from '@/Icon';\n\nimport { useToastContext } from './context';\nimport { actionVariants, rootVariants, styles } from './style';\nimport { type ToastOptions, type ToastProps, type ToastType } from './type';\n\nconst typeIcons: Record<ToastType, typeof Info> = {\n  default: Info,\n  error: XCircle,\n  info: Info,\n  loading: Loader2,\n  success: CheckCircle,\n  warning: AlertTriangle,\n};\n\nconst typeColors: Record<ToastType, string> = {\n  default: cssVar.colorText,\n  error: cssVar.colorError,\n  info: cssVar.colorInfo,\n  loading: cssVar.colorPrimary,\n  success: cssVar.colorSuccess,\n  warning: cssVar.colorWarning,\n};\n\nconst ToastItem = memo<ToastProps>(({ toast, classNames, styles: customStyles }) => {\n  const { position, swipeDirection } = useToastContext();\n  const toastData = toast.data as ToastOptions | undefined;\n  const type = toastData?.type ?? 'default';\n  const closable = toastData?.closable ?? true;\n  const hideCloseButton = toastData?.hideCloseButton ?? false;\n  const showCloseButton = closable && !hideCloseButton;\n  const icon = toastData?.icon;\n  const title = toast.title ?? toastData?.title;\n  const description = toast.description ?? toastData?.description;\n  const actionProps = toast.actionProps ?? toastData?.actionProps;\n  const actions = toastData?.actions;\n\n  const iconColor = typeColors[type];\n  const IconComponent = icon ?? typeIcons[type];\n  const isLoading = type === 'loading';\n\n  const renderIcon = (): ReactNode => {\n    if (!IconComponent) return null;\n    return (\n      <div className={cx(styles.icon, classNames?.icon)} style={customStyles?.icon}>\n        <Icon color={iconColor} icon={IconComponent} size={18} spin={isLoading} />\n      </div>\n    );\n  };\n\n  const renderActions = (): ReactNode => {\n    if (actions && actions.length > 0) {\n      return (\n        <div className={cx(styles.actions, classNames?.actions)} style={customStyles?.actions}>\n          {actions.map((action, index) => (\n            <BaseToast.Action\n              key={index}\n              style={customStyles?.action}\n              className={cx(\n                actionVariants({ variant: action.variant ?? 'primary' }),\n                classNames?.action,\n              )}\n              onClick={action.onClick}\n              {...action.props}\n            >\n              {action.label}\n            </BaseToast.Action>\n          ))}\n        </div>\n      );\n    }\n    if (actionProps) {\n      return (\n        <BaseToast.Action\n          className={cx(actionVariants({ variant: 'primary' }), classNames?.action)}\n          style={customStyles?.action}\n          {...actionProps}\n        />\n      );\n    }\n    return null;\n  };\n\n  return (\n    <BaseToast.Root\n      className={cx(rootVariants({ position }), classNames?.root)}\n      swipeDirection={swipeDirection}\n      toast={toast}\n      style={{\n        ...customStyles?.root,\n        ...toastData?.style,\n      }}\n    >\n      <BaseToast.Content\n        className={cx(styles.content, classNames?.content)}\n        style={customStyles?.content}\n      >\n        <div className={title ? styles.toastBody : styles.toastBodyCenter}>\n          {renderIcon()}\n          <div className={styles.contentArea}>\n            {title ? (\n              <>\n                <div className={styles.titleRow}>\n                  <BaseToast.Title\n                    className={cx(styles.title, classNames?.title)}\n                    style={customStyles?.title}\n                  >\n                    {title}\n                  </BaseToast.Title>\n                  {showCloseButton && (\n                    <BaseToast.Close\n                      aria-label=\"Close\"\n                      className={cx(styles.close, classNames?.close)}\n                      style={customStyles?.close}\n                    >\n                      <X size={14} />\n                    </BaseToast.Close>\n                  )}\n                </div>\n                {description && (\n                  <BaseToast.Description\n                    className={cx(styles.description, classNames?.description)}\n                    style={{\n                      marginBlockStart: 4,\n                      ...customStyles?.description,\n                    }}\n                  >\n                    {description}\n                  </BaseToast.Description>\n                )}\n              </>\n            ) : (\n              description && (\n                <div className={styles.titleRow}>\n                  <BaseToast.Description\n                    className={cx(styles.description, classNames?.description)}\n                    style={customStyles?.description}\n                  >\n                    {description}\n                  </BaseToast.Description>\n                  {showCloseButton && (\n                    <BaseToast.Close\n                      aria-label=\"Close\"\n                      className={cx(styles.close, classNames?.close)}\n                      style={customStyles?.close}\n                    >\n                      <X size={14} />\n                    </BaseToast.Close>\n                  )}\n                </div>\n              )\n            )}\n            {renderActions()}\n          </div>\n        </div>\n      </BaseToast.Content>\n    </BaseToast.Root>\n  );\n});\n\nToastItem.displayName = 'ToastItem';\n\nexport default ToastItem;\n"],"mappings":"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"}