{"version":3,"file":"accordion-root.cjs","sources":["../../../components/accordion/accordion-root.tsx"],"sourcesContent":["'use client';\n\nimport { Accordion as AccordionPrimitive } from '@base-ui/react';\nimport { cx } from 'class-variance-authority';\nimport styles from './accordion.module.css';\n\ntype AccordionSingleProps = Omit<\n  AccordionPrimitive.Root.Props,\n  'multiple' | 'value' | 'defaultValue' | 'onValueChange'\n> & {\n  multiple?: false;\n  value?: string;\n  defaultValue?: string;\n  onValueChange?: (value?: string) => void;\n};\n\ntype AccordionMultipleProps = Omit<\n  AccordionPrimitive.Root.Props,\n  'multiple' | 'value' | 'defaultValue' | 'onValueChange'\n> & {\n  multiple: true;\n  value?: string[];\n  defaultValue?: string[];\n  onValueChange?: (value?: string[]) => void;\n};\n\nexport type AccordionRootProps = AccordionSingleProps | AccordionMultipleProps;\n\n/**\n * Convert the wrapper's `string | string[]` API into Base UI's `string[]` format.\n *\n * Only `undefined` maps to `undefined` (uncontrolled).\n * Empty string and empty array map to `[]` (controlled, nothing open) — this prevents the\n * controlled → uncontrolled flip that would otherwise break reopen-after-close.\n */\nconst toArray = (v: string | string[] | undefined): string[] | undefined => {\n  if (v === undefined) return undefined;\n  if (Array.isArray(v)) return v;\n  return v === '' ? [] : [v];\n};\n\nexport const AccordionRoot = ({\n  className,\n  multiple = false,\n  value,\n  defaultValue,\n  onValueChange,\n  ...rest\n}: AccordionRootProps) => {\n  const handleValueChange = (\n    newValue: string[],\n    eventDetails: AccordionPrimitive.Root.ChangeEventDetails\n  ) => {\n    if (!onValueChange) return;\n\n    if (multiple) {\n      (onValueChange as (v: string[]) => void)(newValue);\n    } else {\n      (onValueChange as (v: string) => void)(newValue[0] ?? '');\n    }\n  };\n\n  return (\n    <AccordionPrimitive.Root\n      className={cx(styles.accordion, className)}\n      multiple={multiple}\n      value={toArray(value)}\n      defaultValue={toArray(defaultValue)}\n      onValueChange={handleValueChange}\n      data-slot='accordion'\n      {...rest}\n    />\n  );\n};\n\nAccordionRoot.displayName = 'Accordion';\n"],"names":[],"mappings":";;;;;;;;AA4BA;;;;;;AAMG;AACH;;AACuB;AACrB;AAAsB;AACtB;AACF;;AAUE;AAIE;;;;;;;;AAOF;;AAaF;AAEA;;"}