{"version":3,"file":"AccordionControl.cjs","sources":["../../../../src/components/Accordion/AccordionControl/AccordionControl.tsx"],"sourcesContent":["import {\n  Box,\n  BoxProps,\n  CompoundStylesApiProps,\n  createScopedKeydownHandler,\n  ElementProps,\n  factory,\n  Factory,\n  useProps,\n} from '../../../core';\nimport { UnstyledButton } from '../../UnstyledButton';\nimport { useAccordionContext } from '../Accordion.context';\nimport { useAccordionItemContext } from '../AccordionItem.context';\n\nexport type AccordionControlStylesNames = 'control' | 'chevron' | 'label' | 'itemTitle' | 'icon';\n\nexport interface AccordionControlProps\n  extends BoxProps,\n    CompoundStylesApiProps<AccordionControlFactory>,\n    ElementProps<'button'> {\n  /** Disables control button */\n  disabled?: boolean;\n\n  /** Custom chevron icon */\n  chevron?: React.ReactNode;\n\n  /** Control label */\n  children?: React.ReactNode;\n\n  /** Icon displayed next to the label */\n  icon?: React.ReactNode;\n}\n\nexport type AccordionControlFactory = Factory<{\n  props: AccordionControlProps;\n  ref: HTMLButtonElement;\n  stylesNames: AccordionControlStylesNames;\n  compound: true;\n}>;\n\nconst defaultProps: Partial<AccordionControlProps> = {};\n\nexport const AccordionControl = factory<AccordionControlFactory>((props, ref) => {\n  const {\n    classNames,\n    className,\n    style,\n    styles,\n    vars,\n    chevron,\n    icon,\n    onClick,\n    onKeyDown,\n    children,\n    disabled,\n    mod,\n    ...others\n  } = useProps('AccordionControl', defaultProps, props);\n\n  const { value } = useAccordionItemContext();\n  const ctx = useAccordionContext();\n  const isActive = ctx.isItemActive(value);\n  const shouldWrapWithHeading = typeof ctx.order === 'number';\n  const Heading = `h${ctx.order!}` as const;\n\n  const content = (\n    <UnstyledButton<'button'>\n      {...others}\n      {...ctx.getStyles('control', { className, classNames, style, styles, variant: ctx.variant })}\n      unstyled={ctx.unstyled}\n      mod={[\n        'accordion-control',\n        { active: isActive, 'chevron-position': ctx.chevronPosition, disabled },\n        mod,\n      ]}\n      ref={ref}\n      onClick={(event) => {\n        onClick?.(event);\n        ctx.onChange(value);\n      }}\n      type=\"button\"\n      disabled={disabled}\n      aria-expanded={isActive}\n      aria-controls={ctx.getRegionId(value)}\n      id={ctx.getControlId(value)}\n      onKeyDown={createScopedKeydownHandler({\n        siblingSelector: '[data-accordion-control]',\n        parentSelector: '[data-accordion]',\n        activateOnFocus: false,\n        loop: ctx.loop,\n        orientation: 'vertical',\n        onKeyDown,\n      })}\n    >\n      <Box\n        component=\"span\"\n        mod={{ rotate: !ctx.disableChevronRotation && isActive, position: ctx.chevronPosition }}\n        {...ctx.getStyles('chevron', { classNames, styles })}\n      >\n        {chevron || ctx.chevron}\n      </Box>\n      <span {...ctx.getStyles('label', { classNames, styles })}>{children}</span>\n      {icon && (\n        <Box\n          component=\"span\"\n          mod={{ 'chevron-position': ctx.chevronPosition }}\n          {...ctx.getStyles('icon', { classNames, styles })}\n        >\n          {icon}\n        </Box>\n      )}\n    </UnstyledButton>\n  );\n\n  return shouldWrapWithHeading ? (\n    <Heading {...ctx.getStyles('itemTitle', { classNames, styles })}>{content}</Heading>\n  ) : (\n    content\n  );\n});\n\nAccordionControl.displayName = '@raikou/core/AccordionControl';\n"],"names":["factory","useProps","useAccordionItemContext","useAccordionContext","jsxs","UnstyledButton","createScopedKeydownHandler","jsx","Box"],"mappings":"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"}