{"version":3,"file":"index.cjs","sources":["../../../../src/components/MultiAccordion/MultiAccordion.tsx"],"sourcesContent":["import * as RadixAccordion from '@radix-ui/react-accordion';\nimport type { AssetSize } from '@/types';\nimport { Icon, type IconName } from '@/components/Icon';\n\nimport { Container } from '@/components/Container';\nimport { Spacer } from '@/components/Spacer';\nimport { Text } from '@/components/Text';\nimport {\n  createContext,\n  MouseEventHandler,\n  ReactElement,\n  ReactNode,\n  useContext,\n} from 'react';\nimport { SizeType as SpacerSizeType } from '@/components/Spacer';\nimport { cn, cva } from '@/lib/cva';\nimport type {\n  Color,\n  MarkAsCompletedFunctionType,\n  MultiAccordionProps,\n  Size,\n} from './MultiAccordion.types';\nimport styles from './MultiAccordion.module.css';\n\ninterface MultiAccordionContextProps {\n  size: Size;\n  fillWidth: boolean;\n  showBorder: boolean;\n  showCheck: boolean;\n  markAsCompleted?: MarkAsCompletedFunctionType;\n}\n\nconst MultiAccordionContext = createContext<MultiAccordionContextProps>({\n  size: 'md',\n  fillWidth: true,\n  showBorder: true,\n  showCheck: false,\n});\n\nconst rootVariants = cva(styles['multi-accordion'], {\n  variants: {\n    fillWidth: {\n      true: styles['multi-accordion_fill-width'],\n      false: '',\n    },\n    gap: {\n      none: styles['multi-accordion_gap_none'],\n      xxs: styles['multi-accordion_gap_xxs'],\n      xs: styles['multi-accordion_gap_xs'],\n      sm: styles['multi-accordion_gap_sm'],\n      md: styles['multi-accordion_gap_md'],\n      lg: styles['multi-accordion_gap_lg'],\n      xl: styles['multi-accordion_gap_xl'],\n      xxl: styles['multi-accordion_gap_xxl'],\n    },\n  },\n  defaultVariants: {\n    fillWidth: true,\n    gap: 'md',\n  },\n});\n\nexport const MultiAccordion = ({\n  size = 'md',\n  children,\n  fillWidth = true,\n  showCheck = false,\n  showBorder = true,\n  gap = 'md',\n  markAsCompleted,\n  className,\n  ...delegated\n}: MultiAccordionProps) => {\n  const contextValue = {\n    size,\n    fillWidth,\n    showBorder,\n    showCheck,\n    markAsCompleted,\n  };\n\n  return (\n    <RadixAccordion.Root\n      {...delegated}\n      className={cn(rootVariants({ fillWidth, gap }), className)}\n    >\n      <MultiAccordionContext.Provider value={contextValue}>\n        {children}\n      </MultiAccordionContext.Provider>\n    </RadixAccordion.Root>\n  );\n};\ninterface MultiAccordionItemProps extends Omit<\n  RadixAccordion.AccordionItemProps,\n  'title'\n> {\n  /** Header content. */\n  title: ReactNode;\n  color?: Color;\n  /** Icon shown next to the title. */\n  icon?: IconName;\n  iconSize?: AssetSize;\n  /** Space between the header and the content. */\n  gap?: SpacerSizeType;\n  isCompleted?: boolean;\n}\n\nconst itemVariants = cva(styles['multi-accordion__item'], {\n  variants: {\n    showBorder: {\n      true: '',\n      false: styles['multi-accordion__item_no-border'],\n    },\n    fillWidth: {\n      true: styles['multi-accordion__item_fill-width'],\n      false: '',\n    },\n  },\n  defaultVariants: {\n    showBorder: true,\n    fillWidth: true,\n  },\n});\n\nconst triggerVariants = cva(styles['multi-accordion__trigger'], {\n  variants: {\n    size: {\n      none: styles['multi-accordion__trigger_size_none'],\n      sm: styles['multi-accordion__trigger_size_sm'],\n      md: styles['multi-accordion__trigger_size_md'],\n      lg: styles['multi-accordion__trigger_size_lg'],\n    },\n    font: {\n      sm: styles['multi-accordion__trigger_font_sm'],\n      md: styles['multi-accordion__trigger_font_md'],\n      lg: styles['multi-accordion__trigger_font_lg'],\n    },\n    color: {\n      default: styles['multi-accordion__trigger_color_default'],\n      link: styles['multi-accordion__trigger_color_link'],\n    },\n  },\n  defaultVariants: {\n    size: 'md',\n    font: 'md',\n    color: 'default',\n  },\n});\n\nconst contentVariants = cva(styles['multi-accordion__content'], {\n  variants: {\n    size: {\n      none: styles['multi-accordion__content_padding_none'],\n      sm: styles['multi-accordion__content_padding_sm'],\n      md: styles['multi-accordion__content_padding_md'],\n      lg: styles['multi-accordion__content_padding_lg'],\n    },\n  },\n  defaultVariants: {\n    size: 'md',\n  },\n});\n\nconst MultiAccordionItem = ({\n  value,\n  title,\n  color,\n  icon,\n  iconSize,\n  gap,\n  children,\n  isCompleted = false,\n  className,\n  ...props\n}: MultiAccordionItemProps): ReactElement => {\n  const { fillWidth, size, showBorder, showCheck, markAsCompleted } =\n    useContext(MultiAccordionContext);\n\n  const onClickStatus: MouseEventHandler<HTMLOrSVGElement> = e => {\n    e.preventDefault();\n    if (typeof markAsCompleted === 'function') {\n      markAsCompleted(value);\n    }\n  };\n\n  const customSize = size === 'none' ? 'sm' : size;\n\n  return (\n    <RadixAccordion.Item\n      value={value}\n      {...props}\n      className={cn(itemVariants({ showBorder, fillWidth }), className)}\n    >\n      <RadixAccordion.Trigger\n        className={triggerVariants({\n          size,\n          font: customSize,\n          color: color ?? 'default',\n        })}\n      >\n        <div className={styles['multi-accordion__icons-wrapper']}>\n          <div className={styles['multi-accordion__icon-wrapper']}>\n            <Icon\n              name=\"chevron-right\"\n              size={iconSize ?? customSize}\n              aria-label=\"accordion icon\"\n            />\n          </div>\n          {icon ? (\n            <Icon\n              name={icon}\n              size={iconSize ?? customSize}\n            />\n          ) : null}\n        </div>\n        <Container\n          isResponsive={false}\n          gap=\"sm\"\n          alignItems=\"center\"\n          fillWidth\n          justifyContent=\"space-between\"\n          component=\"span\"\n          overflow=\"hidden\"\n        >\n          <Text\n            className={styles['multi-accordion__title']}\n            component=\"span\"\n            size={customSize}\n            fillWidth={fillWidth}\n          >\n            {title}\n          </Text>\n          {showCheck && (\n            <Icon\n              className={cn(\n                styles['multi-accordion__status-icon'],\n                isCompleted && styles['multi-accordion__status-icon_completed']\n              )}\n              name={isCompleted ? 'check-in-circle' : 'circle'}\n              size={iconSize ?? customSize}\n              aria-label=\"accordion icon status\"\n              onClick={onClickStatus}\n              data-icon=\"accordion-status\"\n              data-testid=\"accordion-status-icon\"\n            />\n          )}\n        </Container>\n      </RadixAccordion.Trigger>\n      <RadixAccordion.Content className={contentVariants({ size })}>\n        <Spacer size={gap} />\n        {children}\n      </RadixAccordion.Content>\n    </RadixAccordion.Item>\n  );\n};\n\nMultiAccordionItem.displayName = 'MultiAccordion.Item';\nMultiAccordion.Item = MultiAccordionItem;\n"],"names":["createContext","cva","styles","jsx","RadixAccordion","cn","useContext","jsxs","Icon","Container","Text","Spacer"],"mappings":"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"}