{"version":3,"file":"index.cjs","sources":["../../../../src/components/Container/Container.tsx"],"sourcesContent":["import {\n  ComponentProps,\n  ComponentPropsWithRef,\n  CSSProperties,\n  ElementType,\n  ReactNode,\n  forwardRef,\n  useMemo,\n} from 'react';\nimport { cn, cva } from '@/lib/cva';\nimport { ContainerProps } from './Container.types';\nimport styles from './Container.module.css';\n\nconst containerVariants = cva(styles.container, {\n  variants: {\n    gap: {\n      none: styles.container_gap_none,\n      xxs: styles.container_gap_xxs,\n      xs: styles.container_gap_xs,\n      sm: styles.container_gap_sm,\n      md: styles.container_gap_md,\n      lg: styles.container_gap_lg,\n      xl: styles.container_gap_xl,\n      xxl: styles.container_gap_xxl,\n    },\n    padding: {\n      none: styles.container_padding_none,\n      xxs: styles.container_padding_xxs,\n      xs: styles.container_padding_xs,\n      sm: styles.container_padding_sm,\n      md: styles.container_padding_md,\n      lg: styles.container_padding_lg,\n      xl: styles.container_padding_xl,\n      xxl: styles.container_padding_xxl,\n    },\n    orientation: {\n      horizontal: styles.container_orientation_horizontal,\n      vertical: styles.container_orientation_vertical,\n    },\n    wrap: {\n      nowrap: styles.container_wrap_nowrap,\n      wrap: styles.container_wrap_wrap,\n      'wrap-reverse': styles['container_wrap_wrap-reverse'],\n    },\n    alignItems: {\n      start: styles['container_align-items_start'],\n      center: styles['container_align-items_center'],\n      end: styles['container_align-items_end'],\n      stretch: styles['container_align-items_stretch'],\n    },\n    justifyContent: {\n      center: styles['container_justify-content_center'],\n      'space-between': styles['container_justify-content_space-between'],\n      'space-around': styles['container_justify-content_space-around'],\n      'space-evenly': styles['container_justify-content_space-evenly'],\n      start: styles['container_justify-content_start'],\n      end: styles['container_justify-content_end'],\n      left: styles['container_justify-content_left'],\n      right: styles['container_justify-content_right'],\n    },\n  },\n});\n\ntype ContainerPolymorphicComponent = <T extends ElementType = 'div'>(\n  props: Omit<ComponentProps<T>, keyof ContainerProps<T>> & ContainerProps<T>\n) => ReactNode;\n\nconst _Container = <T extends ElementType = 'div'>(\n  {\n    component,\n    alignItems,\n    children,\n    fillWidth = true,\n    gap = 'none',\n    grow,\n    shrink,\n    isResponsive = true,\n    justifyContent = 'start',\n    maxWidth,\n    minWidth,\n    orientation = 'horizontal',\n    padding = 'none',\n    wrap = 'nowrap',\n    fillHeight,\n    maxHeight,\n    minHeight,\n    overflow,\n    display = 'flex',\n    className,\n    style,\n    ...props\n  }: Omit<ComponentProps<T>, keyof ContainerProps<T>> & ContainerProps<T>,\n  ref: ComponentPropsWithRef<T>['ref']\n) => {\n  const Component = component ?? 'div';\n  const resolvedAlignItems =\n    alignItems ?? (orientation === 'vertical' ? 'start' : 'center');\n\n  // `_Container` is a real component (wrapped by `forwardRef` below); the\n  // rules-of-hooks PascalCase-name heuristic false-positives on our\n  // `_`-prefixed polymorphic-component naming convention.\n  // eslint-disable-next-line react-hooks/rules-of-hooks\n  const mergedStyle = useMemo(\n    () =>\n      ({\n        '--container-display': display,\n        '--container-width': fillWidth === true ? '100%' : 'auto',\n        '--container-min-width': minWidth ?? 'auto',\n        '--container-max-width': maxWidth ?? 'none',\n        ...(grow && { '--container-grow': grow }),\n        ...(shrink && { '--container-shrink': shrink }),\n        ...(fillHeight && { '--container-height': '100%' }),\n        ...(maxHeight && { '--container-max-height': maxHeight }),\n        ...(minHeight && { '--container-min-height': minHeight }),\n        ...(overflow && { '--container-overflow': overflow }),\n        ...style,\n      }) as CSSProperties,\n    [\n      display,\n      fillWidth,\n      minWidth,\n      maxWidth,\n      grow,\n      shrink,\n      fillHeight,\n      maxHeight,\n      minHeight,\n      overflow,\n      style,\n    ]\n  );\n\n  return (\n    <Component\n      ref={ref}\n      data-testid=\"container\"\n      {...props}\n      style={mergedStyle}\n      className={cn(\n        containerVariants({\n          gap,\n          padding,\n          orientation,\n          wrap,\n          alignItems: resolvedAlignItems,\n          justifyContent,\n        }),\n        isResponsive\n          ? styles.container_responsive\n          : fillWidth\n            ? styles['container_non-responsive_fill']\n            : styles['container_non-responsive_hug'],\n        className\n      )}\n    >\n      {children}\n    </Component>\n  );\n};\n\nexport const Container: ContainerPolymorphicComponent = forwardRef(_Container);\n"],"names":["cva","styles","useMemo","jsx","cn","forwardRef"],"mappings":"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"}