{"version":3,"file":"index.cjs","sources":["../../../../src/components/Toast/Toast.tsx"],"sourcesContent":["import { createContext, useEffect, useState } from 'react';\nimport * as RadixUIToast from '@radix-ui/react-toast';\nimport { cn, cva } from '@/lib/cva';\nimport { toastsEventEmitter } from './toastEmitter';\nimport { Icon, type IconName, type IconProps } from '@/components/Icon';\nimport { IconButton } from '@/components/IconButton';\nimport { Button } from '@/components/Button';\nimport {\n  ToastContextProps,\n  ToastProps,\n  ToastProviderProps,\n  ToastAlignment,\n  ToastType,\n} from './Toast.types';\nimport styles from './Toast.module.css';\n\nexport const ToastContext = createContext<ToastContextProps>({\n  createToast: () => null,\n});\n\nconst toastIconVariants = cva(styles.toast__icon, {\n  variants: {\n    type: {\n      default: styles['toast__icon_type_default'],\n      success: styles['toast__icon_type_success'],\n      warning: styles['toast__icon_type_warning'],\n      danger: styles['toast__icon_type_danger'],\n    },\n  },\n  defaultVariants: {\n    type: 'default',\n  },\n});\n\n// Lazy wrapper to avoid circular dependency issues at module load time\nconst ToastIcon = ({\n  $type = 'default',\n  className,\n  ...props\n}: IconProps & { $type?: ToastType }) => (\n  <Icon\n    {...props}\n    className={cn(toastIconVariants({ type: $type }), className)}\n  />\n);\n\nconst viewportVariants = cva(styles['toast-viewport'], {\n  variants: {\n    align: {\n      start: styles['toast-viewport_align_start'],\n      end: styles['toast-viewport_align_end'],\n    },\n  },\n  defaultVariants: {\n    align: 'end',\n  },\n});\n\nexport const Toast = ({\n  type,\n  toastType = 'foreground',\n  title,\n  description,\n  actions = [],\n  duration,\n  onClose,\n  className,\n  ...props\n}: ToastProps & { onClose: (open: boolean) => void }) => {\n  let iconName = '';\n  if (type === 'default') {\n    iconName = 'info-in-circle';\n  } else if (type === 'success') {\n    iconName = 'check';\n  } else if (type && ['danger', 'warning'].includes(type)) {\n    iconName = 'warning';\n  }\n  return (\n    <RadixUIToast.Root\n      onOpenChange={onClose}\n      duration={duration}\n      type={toastType}\n      {...props}\n      className={cn(styles.toast, className)}\n    >\n      <RadixUIToast.Title className={styles.toast__header}>\n        {iconName.length > 0 && (\n          <ToastIcon\n            name={iconName as IconName}\n            $type={type}\n          />\n        )}\n        <div className={styles.toast__title}>{title}</div>\n        <RadixUIToast.Close asChild>\n          <IconButton\n            icon=\"cross\"\n            type=\"ghost\"\n          />\n        </RadixUIToast.Close>\n      </RadixUIToast.Title>\n      {(description || actions.length > 0) && (\n        <div className={styles['toast__description-container']}>\n          <RadixUIToast.Description className={styles['toast__description-content']}>\n            {description}\n          </RadixUIToast.Description>\n          {actions.length > 0 && (\n            <div className={styles['toast__description-content']}>\n              {actions.map(({ altText, ...btnProps }) => (\n                <RadixUIToast.Action\n                  altText={altText}\n                  asChild\n                  key={altText}\n                >\n                  <div>\n                    <Button {...btnProps} />\n                  </div>\n                </RadixUIToast.Action>\n              ))}\n            </div>\n          )}\n        </div>\n      )}\n    </RadixUIToast.Root>\n  );\n};\n\nexport const ToastProvider = ({\n  children,\n  align = 'end',\n  ...props\n}: ToastProviderProps) => {\n  const [toasts, setToasts] = useState<Record<ToastAlignment, Map<string, ToastProps>>>({\n    start: new Map(),\n    end: new Map(),\n  });\n\n  useEffect(() => {\n    const listener = (toast: ToastProps) => {\n      setToasts(currentToasts => {\n        const alignment = toast.align ?? 'end';\n        const newToasts = { ...currentToasts };\n        const map = new Map(newToasts[alignment]);\n        map.set(toast?.id ?? String(Date.now()), toast);\n        newToasts[alignment] = map;\n        return newToasts;\n      });\n    };\n\n    toastsEventEmitter.on(listener);\n\n    return () => toastsEventEmitter.off(listener);\n  }, []);\n\n  const onClose = (id: string) => (open: boolean) => {\n    if (!open) {\n      setToasts(currentToasts => {\n        const newToasts = { ...currentToasts };\n        const map = new Map(newToasts[align]);\n        map.delete(id);\n        newToasts[align] = map;\n        return newToasts;\n      });\n    }\n  };\n\n  const value = {\n    createToast: (toast: ToastProps, toastAlign: ToastAlignment = align) => {\n      setToasts(currentToasts => {\n        const newToasts = { ...currentToasts };\n        const map = new Map(newToasts[toastAlign]);\n        map.set(toast?.id ?? String(Date.now()), toast);\n        newToasts[toastAlign] = map;\n        return newToasts;\n      });\n    },\n  };\n\n  return (\n    <RadixUIToast.Provider\n      swipeDirection={align === 'start' ? 'left' : 'right'}\n      key={`toast-provider-${align}`}\n      {...props}\n    >\n      <ToastContext.Provider value={value}>\n        {children}\n        {Array.from(toasts[align]).map(([id, toast]) => (\n          <Toast\n            key={id}\n            {...toast}\n            onClose={onClose(id)}\n          />\n        ))}\n      </ToastContext.Provider>\n      {/* aria-live exempts the viewport from the aria-hidden sweep modal layers\n          run, keeping toasts over a Dialog or Select in the accessibility tree. */}\n      <RadixUIToast.Viewport\n        aria-live=\"off\"\n        className={cn(viewportVariants({ align }))}\n      />\n    </RadixUIToast.Provider>\n  );\n};\n"],"names":["createContext","cva","styles","jsx","Icon","cn","jsxs","RadixUIToast","IconButton","Button","useState","useEffect","toastsEventEmitter"],"mappings":"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"}