{"version":3,"file":"ToggleButtonGroup.mjs","sources":["../../../../src/components/AlphaToggleButtonGroup/ToggleButtonGroup.tsx"],"sourcesContent":["'use client'\n\nimport { Children, forwardRef, isValidElement, useMemo } from 'react'\n\nimport * as ToggleGroupPrimitive from '@radix-ui/react-toggle-group'\nimport classNames from 'classnames'\n\nimport { type ToggleButtonProps } from '~/src/components/AlphaToggleButton/ToggleButton.types'\nimport { ToggleButtonProvider } from '~/src/components/AlphaToggleButton/ToggleButtonContext'\nimport {\n  type ToggleButtonMultipleGroupProps,\n  type ToggleButtonSingleGroupProps,\n} from '~/src/components/AlphaToggleButtonGroup/ToggleButtonGroup.types'\n\nimport styles from './ToggleButtonGroup.module.scss'\n\n/**\n * `ToggleButtonGroup` is a group of two-state buttons that can be toggled.\n *  Notice that it keeps at least one button selected.\n *  @example\n *\n * ```tsx\n * <ToggleButtonGroup\n *   shape=\"rectangle\"\n *   value=\"two\"\n * >\n *   <ToggleButton\n *     value=\"one\"\n *     text=\"left\"\n *   />\n *   <ToggleButton\n *     value=\"two\"\n *     text=\"center\"\n *   />\n *   <ToggleButton\n *     value=\"three\"\n *     text=\"right\"\n *   />\n * </ToggleButtonGroup>\n * ```\n */\nexport const ToggleButtonGroup = forwardRef<\n  HTMLDivElement,\n  ToggleButtonMultipleGroupProps | ToggleButtonSingleGroupProps\n>(function ToggleButtonGroup(props, forwardedRef) {\n  const { children, shape, className, fullWidth, onValueChange, ...rest } =\n    props\n\n  const handleValueChange = (value: string | string[]) => {\n    if (!props.onValueChange || !value.length) {\n      return\n    }\n\n    if (props.type === 'single' && typeof value === 'string') {\n      props.onValueChange(value)\n    } else if (props.type === 'multiple' && Array.isArray(value)) {\n      props.onValueChange(value)\n    }\n  }\n\n  const ToggleButtons = Children.map(children, (toggleButton) => {\n    if (!isValidElement<ToggleButtonProps>(toggleButton)) {\n      return null\n    }\n\n    return (\n      <ToggleGroupPrimitive.Item\n        asChild\n        value={toggleButton.props.value}\n        key={toggleButton.props.value}\n        className={styles.item}\n      >\n        {toggleButton}\n      </ToggleGroupPrimitive.Item>\n    )\n  })\n\n  return (\n    <ToggleGroupPrimitive.Root\n      ref={forwardedRef}\n      className={classNames(\n        styles.ToggleButtonGroup,\n        fullWidth && styles.fullWidth,\n        className\n      )}\n      onValueChange={handleValueChange}\n      {...rest}\n    >\n      <ToggleButtonProvider value={useMemo(() => ({ shape }), [shape])}>\n        {ToggleButtons}\n      </ToggleButtonProvider>\n    </ToggleGroupPrimitive.Root>\n  )\n})\n"],"names":["ToggleButtonGroup","forwardRef","props","forwardedRef","children","shape","className","fullWidth","onValueChange","rest","handleValueChange","value","length","type","Array","isArray","ToggleButtons","Children","map","toggleButton","isValidElement","_jsx","ToggleGroupPrimitive","asChild","styles","item","ref","classNames","ToggleButtonProvider","useMemo"],"mappings":";;;;;;;AAyCO,MAAMA,iBAAiB,gBAAGC,UAAU,CAGzC,SAASD,iBAAiBA,CAACE,KAAK,EAAEC,YAAY,EAAE;EAChD,MAAM;IAAEC,QAAQ;IAAEC,KAAK;IAAEC,SAAS;IAAEC,SAAS;IAAEC,aAAa;IAAE,GAAGC;AAAK,GAAC,GACrEP,KAAK;EAEP,MAAMQ,iBAAiB,GAAIC,KAAwB,IAAK;IACtD,IAAI,CAACT,KAAK,CAACM,aAAa,IAAI,CAACG,KAAK,CAACC,MAAM,EAAE;AACzC,MAAA;AACF;IAEA,IAAIV,KAAK,CAACW,IAAI,KAAK,QAAQ,IAAI,OAAOF,KAAK,KAAK,QAAQ,EAAE;AACxDT,MAAAA,KAAK,CAACM,aAAa,CAACG,KAAK,CAAC;AAC5B,KAAC,MAAM,IAAIT,KAAK,CAACW,IAAI,KAAK,UAAU,IAAIC,KAAK,CAACC,OAAO,CAACJ,KAAK,CAAC,EAAE;AAC5DT,MAAAA,KAAK,CAACM,aAAa,CAACG,KAAK,CAAC;AAC5B;GACD;EAED,MAAMK,aAAa,GAAGC,QAAQ,CAACC,GAAG,CAACd,QAAQ,EAAGe,YAAY,IAAK;AAC7D,IAAA,IAAI,eAACC,cAAc,CAAoBD,YAAY,CAAC,EAAE;AACpD,MAAA,OAAO,IAAI;AACb;AAEA,IAAA,oBACEE,GAAA,CAACC,KAAyB,EAAA;MACxBC,OAAO,EAAA,IAAA;AACPZ,MAAAA,KAAK,EAAEQ,YAAY,CAACjB,KAAK,CAACS,KAAM;MAEhCL,SAAS,EAAEkB,MAAM,CAACC,IAAK;AAAArB,MAAAA,QAAA,EAEtBe;AAAY,KAAA,EAHRA,YAAY,CAACjB,KAAK,CAACS,KAIC,CAAC;AAEhC,GAAC,CAAC;AAEF,EAAA,oBACEU,GAAA,CAACC,KAAyB,EAAA;AACxBI,IAAAA,GAAG,EAAEvB,YAAa;AAClBG,IAAAA,SAAS,EAAEqB,UAAU,CACnBH,MAAM,CAACxB,iBAAiB,EACxBO,SAAS,IAAIiB,MAAM,CAACjB,SAAS,EAC7BD,SACF,CAAE;AACFE,IAAAA,aAAa,EAAEE,iBAAkB;AAAA,IAAA,GAC7BD,IAAI;IAAAL,QAAA,eAERiB,GAAA,CAACO,oBAAoB,EAAA;MAACjB,KAAK,EAAEkB,OAAO,CAAC,OAAO;AAAExB,QAAAA;AAAM,OAAC,CAAC,EAAE,CAACA,KAAK,CAAC,CAAE;AAAAD,MAAAA,QAAA,EAC9DY;KACmB;AAAC,GACE,CAAC;AAEhC,CAAC;;;;"}