{"version":3,"sources":["../../src/accordion/Accordion.tsx","../../src/accordion/AccordionItem.tsx","../../src/accordion/AccordionItemContext.tsx","../../src/accordion/AccordionItemContent.tsx","../../src/accordion/AccordionItemHeader.tsx","../../src/accordion/AccordionItemTrigger.tsx","../../src/accordion/index.ts"],"sourcesContent":["import * as accordion from '@zag-js/accordion'\nimport { mergeProps, normalizeProps, type PropTypes, useMachine } from '@zag-js/react'\nimport { cx } from 'class-variance-authority'\nimport { type ComponentPropsWithoutRef, createContext, Ref, useContext, useId } from 'react'\n\nimport { Slot } from '../slot'\n\ntype ExtentedZagInterface = Omit<\n  accordion.Props,\n  'id' | 'ids' | 'orientation' | 'getRootNode' | 'onValueChange'\n> &\n  Omit<ComponentPropsWithoutRef<'div'>, 'defaultChecked'>\n\nexport interface AccordionProps extends ExtentedZagInterface {\n  /**\n   * Change the default rendered element for the one passed as a child, merging their props and behavior.\n   */\n  asChild?: boolean\n  /**\n   * Whether an accordion item can be closed after it has been expanded.\n   */\n  collapsible?: boolean\n  defaultValue?: accordion.Props['value']\n  /**\n   * Whether the accordion items are disabled\n   */\n  disabled?: boolean\n  /**\n   * Whether multiple accordion items can be expanded at the same time.\n   */\n  multiple?: boolean\n  /**\n   * The `value` of the accordion items that are currently being expanded.\n   */\n  value?: string[]\n  /**\n   * The callback fired when the state of expanded/collapsed accordion items changes.\n   */\n  onValueChange?: (value: string[]) => void\n  design?: 'filled' | 'outlined'\n  ref?: Ref<HTMLDivElement>\n}\n\nconst AccordionContext = createContext<\n  | (accordion.Api<PropTypes> & {\n      design: 'filled' | 'outlined'\n    })\n  | null\n>(null)\n\nexport const Accordion = ({\n  asChild = false,\n  children,\n  collapsible = true,\n  className,\n  defaultValue,\n  design = 'outlined',\n  disabled = false,\n  multiple = false,\n  value,\n  onValueChange,\n  ref,\n  ...props\n}: AccordionProps) => {\n  const [machineProps, localProps] = accordion.splitProps({\n    children,\n    multiple,\n    collapsible,\n    value,\n    disabled,\n    className: cx('bg-surface rounded-lg h-fit', className),\n    ...props,\n  })\n\n  const service = useMachine(accordion.machine, {\n    ...machineProps,\n    defaultValue,\n    value,\n    id: useId(),\n    onValueChange(details) {\n      onValueChange?.(details.value)\n    },\n  })\n\n  const Component = asChild ? Slot : 'div'\n  const api = accordion.connect(service, normalizeProps)\n\n  const mergedProps = mergeProps(api.getRootProps(), localProps)\n\n  return (\n    <AccordionContext.Provider value={{ ...api, design }}>\n      <Component data-spark-component=\"accordion\" ref={ref} {...mergedProps}>\n        {children}\n      </Component>\n    </AccordionContext.Provider>\n  )\n}\n\nAccordion.displayName = 'Accordion'\n\nexport const useAccordionContext = () => {\n  const context = useContext(AccordionContext)\n\n  if (!context) {\n    throw Error('useAccordionContext must be used within a Accordion provider')\n  }\n\n  return context\n}\n","import { mergeProps } from '@zag-js/react'\nimport { cx } from 'class-variance-authority'\nimport { type ComponentPropsWithoutRef, Ref } from 'react'\n\nimport { Collapsible } from '../collapsible'\nimport { useAccordionContext } from './Accordion'\nimport { AccordionItemProvider } from './AccordionItemContext'\n\nexport interface AccordionItemProps extends ComponentPropsWithoutRef<'div'> {\n  value: string\n  asChild?: boolean\n  disabled?: boolean\n  ref?: Ref<HTMLDivElement>\n}\n\nexport const Item = ({\n  asChild = false,\n  className,\n  children,\n  disabled = false,\n  value,\n  ref,\n  ...props\n}: AccordionItemProps) => {\n  const accordion = useAccordionContext()\n\n  const localProps = {\n    className: cx(\n      'relative first:rounded-t-lg last:rounded-b-lg',\n      'not-last:border-b-0',\n      { 'border-sm border-outline': accordion.design === 'outlined' },\n      className\n    ),\n    asChild,\n    ...props,\n  }\n\n  const itemProps = accordion.getItemProps({ value, ...(disabled && { disabled }) })\n  const mergedProps = mergeProps(itemProps, localProps)\n\n  const item = accordion.getItemState({ value })\n  const itemContentProps = accordion.getItemContentProps({ value })\n\n  return (\n    <AccordionItemProvider value={value} disabled={disabled}>\n      <Collapsible\n        ref={ref}\n        open={item.expanded}\n        data-spark-component=\"accordion-item\"\n        ids={{ content: itemContentProps.id }}\n        {...mergedProps}\n      >\n        {children}\n      </Collapsible>\n    </AccordionItemProvider>\n  )\n}\n\nItem.displayName = 'Accordion.Item'\n","import {\n  createContext,\n  Dispatch,\n  type PropsWithChildren,\n  SetStateAction,\n  useContext,\n  useState,\n} from 'react'\n\ninterface AccordionItemContextState {\n  value: string\n  setValue: Dispatch<SetStateAction<string>>\n  disabled: boolean\n  setDisabled: Dispatch<SetStateAction<boolean>>\n}\n\nconst AccordionItemContext = createContext<AccordionItemContextState | null>(null)\n\nexport const AccordionItemProvider = ({\n  value: valueProp,\n  disabled: disabledProp = false,\n  children,\n}: PropsWithChildren<{ value: string; disabled?: boolean }>) => {\n  const [value, setValue] = useState<string>(valueProp)\n  const [disabled, setDisabled] = useState<boolean>(disabledProp)\n\n  return (\n    <AccordionItemContext.Provider value={{ value, setValue, disabled, setDisabled }}>\n      {children}\n    </AccordionItemContext.Provider>\n  )\n}\n\nexport const useAccordionItemContext = () => {\n  const context = useContext(AccordionItemContext)\n\n  if (!context) {\n    throw Error('useAccordionItemContext must be used within a AccordionItem provider')\n  }\n\n  return context\n}\n","import { createSplitProps } from '@spark-ui/internal-utils'\nimport { mergeProps } from '@zag-js/react'\nimport { cx } from 'class-variance-authority'\nimport { type ComponentPropsWithoutRef, Ref } from 'react'\n\nimport { Collapsible } from '../collapsible'\nimport { useAccordionContext } from './Accordion'\nimport { useAccordionItemContext } from './AccordionItemContext'\n\nexport interface AccordionItemContentProps extends ComponentPropsWithoutRef<'div'> {\n  asChild?: boolean\n  ref?: Ref<HTMLDivElement>\n}\n\nconst splitVisibilityProps = createSplitProps<{\n  hidden?: boolean\n  'data-state'?: string\n}>()\n\nexport const ItemContent = ({\n  asChild = false,\n  className,\n  children,\n  ref,\n  ...props\n}: AccordionItemContentProps) => {\n  const accordion = useAccordionContext()\n  const accordionItem = useAccordionItemContext()\n\n  const localProps = {\n    className: cx('[&>:first-child]:p-lg', 'text-body-1 text-on-surface', className),\n    asChild,\n    ...props,\n  }\n  const contentProps = accordion.getItemContentProps({\n    value: accordionItem.value,\n    ...(accordionItem.disabled && { disabled: accordionItem.disabled }),\n  })\n\n  const [, itemContentProps] = splitVisibilityProps(contentProps, ['hidden', 'data-state'])\n\n  const mergedProps = mergeProps(itemContentProps, localProps)\n\n  return (\n    <Collapsible.Content ref={ref} data-spark-component=\"accordion-item-content\" {...mergedProps}>\n      {children}\n    </Collapsible.Content>\n  )\n}\n\nItemContent.displayName = 'Accordion.ItemContent'\n","import { cx } from 'class-variance-authority'\nimport { type ComponentProps, Ref } from 'react'\n\nimport { Slot } from '../slot'\n\nexport interface AccordionItemHeaderProps extends ComponentProps<'h3'> {\n  asChild?: boolean\n  ref?: Ref<HTMLHeadingElement>\n}\n\nexport const ItemHeader = ({\n  asChild = false,\n  children,\n  className,\n  ref,\n}: AccordionItemHeaderProps) => {\n  const Component = asChild ? Slot : 'h3'\n\n  return (\n    <Component\n      ref={ref}\n      data-spark-component=\"accordion-item-header\"\n      className={cx('rounded-[inherit]', className)}\n    >\n      {children}\n    </Component>\n  )\n}\n\nItemHeader.displayName = 'Accordion.ItemHeader'\n","import { ArrowHorizontalDown } from '@spark-ui/icons/ArrowHorizontalDown'\nimport { mergeProps } from '@zag-js/react'\nimport { cx } from 'class-variance-authority'\nimport { type ComponentPropsWithoutRef, Ref } from 'react'\n\nimport { Icon } from '../icon'\nimport { Slot } from '../slot'\nimport { useAccordionContext } from './Accordion'\nimport { useAccordionItemContext } from './AccordionItemContext'\n\nexport interface AccordionItemTriggerProps extends ComponentPropsWithoutRef<'button'> {\n  asChild?: boolean\n  ref?: Ref<HTMLButtonElement>\n}\n\nexport const ItemTrigger = ({\n  asChild = false,\n  children,\n  className,\n  ref,\n  ...props\n}: AccordionItemTriggerProps) => {\n  const { getItemTriggerProps } = useAccordionContext()\n  const { value, disabled } = useAccordionItemContext()\n\n  const Component = asChild ? Slot : 'button'\n\n  const localProps = {\n    ...props,\n    className: cx(\n      'relative flex gap-lg justify-between items-center min-h-sz-48',\n      'w-full px-lg py-md text-left text-headline-2 text-on-surface rounded-[inherit] data-[state=open]:rounded-b-0',\n      'hover:enabled:bg-surface-hovered focus:bg-surface-hovered',\n      'focus-visible:u-outline focus-visible:outline-hidden focus-visible:z-raised',\n      'disabled:opacity-dim-3 cursor-pointer disabled:cursor-not-allowed',\n      className\n    ),\n  }\n\n  const mergedProps = mergeProps(\n    getItemTriggerProps({ value, ...(disabled && { disabled }) }),\n    localProps\n  )\n\n  const isOpen = !!mergedProps['aria-expanded']\n\n  return (\n    <Component ref={ref} data-spark-component=\"accordion-item-trigger\" {...mergedProps}>\n      <div className=\"gap-lg flex grow items-center\">{children}</div>\n      <Icon\n        intent=\"neutral\"\n        className={cx('shrink-0 rotate-0 duration-100 ease-in motion-reduce:transition-none', {\n          'rotate-180': isOpen,\n        })}\n        size=\"sm\"\n      >\n        <ArrowHorizontalDown />\n      </Icon>\n    </Component>\n  )\n}\n\nItemTrigger.displayName = 'Accordion.ItemTrigger'\n","import { Accordion as Root } from './Accordion'\nimport { Item } from './AccordionItem'\nimport { ItemContent } from './AccordionItemContent'\nimport { ItemHeader } from './AccordionItemHeader'\nimport { ItemTrigger } from './AccordionItemTrigger'\n\nexport const Accordion: typeof Root & {\n  Item: typeof Item\n  ItemHeader: typeof ItemHeader\n  ItemTrigger: typeof ItemTrigger\n  ItemContent: typeof ItemContent\n} = Object.assign(Root, {\n  Item,\n  ItemHeader,\n  ItemTrigger,\n  ItemContent,\n})\n\nAccordion.displayName = 'Accordion'\nItem.displayName = 'Item'\nItemHeader.displayName = 'ItemHeader'\nItemTrigger.displayName = 'Accordion.Trigger'\nItemContent.displayName = 'Accordion.Content'\n\nexport { type AccordionProps } from './Accordion'\nexport { type AccordionItemHeaderProps } from './AccordionItemHeader'\nexport { type AccordionItemContentProps } from './AccordionItemContent'\nexport { type AccordionItemTriggerProps } from './AccordionItemTrigger'\n"],"mappings":"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","names":["mergeProps","cx","createContext","useContext","jsx","jsx","accordion","cx","mergeProps","mergeProps","cx","jsx","accordion","cx","mergeProps","cx","jsx","cx","mergeProps","cx","jsx","cx","mergeProps","Accordion"]}