{"version":3,"file":"index.cjs","sources":["../../../../src/components/Alert/Alert.tsx"],"sourcesContent":["import { Icon, type IconName } from '@/components/Icon';\nimport { useState, useCallback } from 'react';\nimport { cn, cva } from '@/lib/cva';\nimport { AlertProps } from './Alert.types';\nimport styles from './Alert.module.css';\n\ntype AlertState = 'neutral' | 'success' | 'warning' | 'danger' | 'info';\n\nconst stateIconMap: Record<AlertState, IconName> = {\n  neutral: 'information',\n  success: 'check',\n  warning: 'warning',\n  danger: 'warning',\n  info: 'information',\n};\n\nconst wrapperVariants = cva(styles.alert, {\n  variants: {\n    type: {\n      default: styles.alert_type_default,\n      banner: styles.alert_type_banner,\n    },\n    state: {\n      neutral: styles.alert_state_neutral,\n      success: styles.alert_state_success,\n      warning: styles.alert_state_warning,\n      danger: styles.alert_state_danger,\n      info: styles.alert_state_info,\n    },\n  },\n  defaultVariants: {\n    type: 'default',\n    state: 'neutral',\n  },\n});\n\nconst iconWrapperVariants = cva(styles['alert__icon-wrapper'], {\n  variants: {\n    state: {\n      neutral: styles['alert__icon-wrapper_state_neutral'],\n      success: styles['alert__icon-wrapper_state_success'],\n      warning: styles['alert__icon-wrapper_state_warning'],\n      danger: styles['alert__icon-wrapper_state_danger'],\n      info: styles['alert__icon-wrapper_state_info'],\n    },\n    size: {\n      small: styles['alert__icon-wrapper_size_small'],\n      medium: styles['alert__icon-wrapper_size_medium'],\n    },\n    type: {\n      default: '',\n      banner: styles['alert__icon-wrapper_type_banner'],\n    },\n  },\n  defaultVariants: {\n    state: 'neutral',\n    size: 'small',\n    type: 'default',\n  },\n});\n\nconst iconVariants = cva(styles.alert__icon, {\n  variants: {\n    size: {\n      small: styles['alert__icon_size_small'],\n      medium: styles['alert__icon_size_medium'],\n    },\n  },\n  defaultVariants: {\n    size: 'small',\n  },\n});\n\nconst textWrapperVariants = cva(styles['alert__text-wrapper'], {\n  variants: {\n    size: {\n      small: styles['alert__text-wrapper_size_small'],\n      medium: styles['alert__text-wrapper_size_medium'],\n    },\n  },\n  defaultVariants: {\n    size: 'small',\n  },\n});\n\nconst titleVariants = cva(styles.alert__title, {\n  variants: {\n    size: {\n      small: styles.alert__title_size_small,\n      medium: styles.alert__title_size_medium,\n    },\n  },\n  defaultVariants: {\n    size: 'small',\n  },\n});\n\nconst textVariants = cva(styles.alert__text, {\n  variants: {\n    size: {\n      small: styles.alert__text_size_small,\n      medium: styles.alert__text_size_medium,\n    },\n  },\n  defaultVariants: {\n    size: 'small',\n  },\n});\n\nexport const Alert = ({\n  text,\n  title = '',\n  size = 'small',\n  state = 'neutral',\n  type = 'default',\n  showIcon = true,\n  dismissible,\n  onDismiss,\n  customIcon,\n  className,\n  ...delegated\n}: AlertProps) => {\n  const [isVisible, setIsVisible] = useState(true);\n\n  const handleDismiss = useCallback(() => {\n    setIsVisible(false);\n    onDismiss?.();\n  }, [onDismiss]);\n\n  return isVisible ? (\n    <div\n      data-testid=\"click-alert\"\n      {...delegated}\n      className={cn(wrapperVariants({ state, type }), className)}\n    >\n      {dismissible && type === 'banner' && (\n        <span\n          aria-hidden=\"true\"\n          className={styles.alert__spacer}\n        />\n      )}\n      {showIcon && (\n        <div className={cn(iconWrapperVariants({ state, size, type }))}>\n          <Icon\n            size=\"sm\"\n            aria-hidden\n            name={customIcon || stateIconMap[state]}\n            className={cn(iconVariants({ size }))}\n          />\n        </div>\n      )}\n      <div className={cn(textWrapperVariants({ size }))}>\n        {title && <h6 className={cn(titleVariants({ size }))}>{title}</h6>}\n        <div className={cn(textVariants({ size }))}>{text}</div>\n      </div>\n      {dismissible && (\n        <button\n          type=\"button\"\n          data-testid=\"click-alert-dismiss-button\"\n          onClick={handleDismiss}\n          className={styles.alert__dismiss}\n        >\n          <Icon\n            name=\"cross\"\n            aria-label=\"close\"\n          />\n        </button>\n      )}\n    </div>\n  ) : null;\n};\n\nexport const DangerAlert = (props: AlertProps) => (\n  <Alert\n    {...props}\n    state=\"danger\"\n  />\n);\n\nexport const InfoAlert = (props: AlertProps) => (\n  <Alert\n    {...props}\n    state=\"info\"\n  />\n);\n\nexport const SuccessAlert = (props: AlertProps) => (\n  <Alert\n    {...props}\n    state=\"success\"\n  />\n);\n\nexport const WarningAlert = (props: AlertProps) => (\n  <Alert\n    {...props}\n    state=\"warning\"\n  />\n);\n"],"names":["cva","styles","useState","useCallback","jsxs","cn","jsx","Icon"],"mappings":"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"}