{"version":3,"file":"slider.cjs","sources":["../../../components/slider/slider.tsx"],"sourcesContent":["'use client';\n\nimport { Slider as SliderPrimitive } from '@base-ui/react';\nimport { cva, cx, type VariantProps } from 'class-variance-authority';\nimport { useCallback } from 'react';\nimport { Text } from '../text';\nimport styles from './slider.module.css';\n\nconst slider = cva(styles.slider, {\n  variants: {\n    variant: {\n      single: styles['slider-variant-single'],\n      range: styles['slider-variant-range']\n    }\n  },\n  defaultVariants: {\n    variant: 'single'\n  }\n});\n\nexport interface SliderProps\n  extends SliderPrimitive.Root.Props,\n    VariantProps<typeof slider> {\n  label?: string | [string, string];\n  thumbSize?: 'small' | 'large';\n}\n\nfunction SliderRoot({\n  className,\n  variant = 'single',\n  label,\n  thumbSize = 'large',\n  ...props\n}: SliderProps) {\n  const isRange = variant === 'range';\n  const isThumbSmall = thumbSize === 'small';\n\n  const getLabel = useCallback(\n    (index: number) => {\n      if (!label) return undefined;\n      if (typeof label === 'string') return label;\n      return label[index];\n    },\n    [label]\n  );\n\n  const thumbCount = isRange ? 2 : 1;\n\n  return (\n    <SliderPrimitive.Root\n      className={slider({ variant, className })}\n      thumbAlignment='edge'\n      data-slot='slider'\n      {...props}\n    >\n      <SliderPrimitive.Control\n        className={styles.control}\n        data-slot='slider-control'\n      >\n        <SliderPrimitive.Track\n          className={styles.track}\n          data-slot='slider-track'\n        >\n          <SliderPrimitive.Indicator\n            className={styles.indicator}\n            data-slot='slider-indicator'\n          />\n          {Array.from({ length: thumbCount }).map((_, i) => (\n            <SliderPrimitive.Thumb\n              key={i}\n              index={isRange ? i : undefined}\n              className={cx(styles.thumb)}\n              aria-label={\n                getLabel(i) || (isRange ? `Thumb ${i + 1}` : 'Slider thumb')\n              }\n              data-size={thumbSize}\n              data-slot='slider-thumb'\n            >\n              {isThumbSmall ? (\n                <div\n                  className={styles.thumbSmall}\n                  data-slot='slider-thumb-grip'\n                />\n              ) : (\n                <div\n                  className={styles.thumbLarge}\n                  data-slot='slider-thumb-grip'\n                >\n                  <div\n                    className={styles.thumbLargeLine}\n                    data-slot='slider-thumb-grip-line'\n                  />\n                  <div\n                    className={styles.thumbLargeLine}\n                    data-slot='slider-thumb-grip-line'\n                  />\n                  <div\n                    className={styles.thumbLargeLine}\n                    data-slot='slider-thumb-grip-line'\n                  />\n                </div>\n              )}\n              {getLabel(i) && (\n                <Text\n                  className={styles.label}\n                  size={isThumbSmall ? 'micro' : 'mini'}\n                  weight='medium'\n                  data-slot='slider-label'\n                >\n                  {getLabel(i)}\n                </Text>\n              )}\n            </SliderPrimitive.Thumb>\n          ))}\n        </SliderPrimitive.Track>\n      </SliderPrimitive.Control>\n    </SliderPrimitive.Root>\n  );\n}\n\nSliderRoot.displayName = 'Slider';\n\nfunction SliderValue(props: SliderPrimitive.Value.Props) {\n  return <SliderPrimitive.Value data-slot='slider-value' {...props} />;\n}\n\nSliderValue.displayName = 'Slider.Value';\n\nexport const Slider = Object.assign(SliderRoot, {\n  Value: SliderValue\n});\n"],"names":[],"mappings":";;;;;;;;;;AAQA;AACE;AACE;AACE;AACA;AACD;AACF;AACD;AACE;AACD;AACF;AASD;AAOE;AACA;AAEA;AAEI;AAAY;;AACmB;AAC/B;AACF;;;AA4EJ;AAEA;AAEA;;AAEA;AAEA;;AAGE;AACD;;"}