{"version":3,"file":"TabsTab.mjs","sources":["../../../../src/components/Tabs/TabsTab/TabsTab.tsx"],"sourcesContent":["import {\n  CompoundStylesApiProps,\n  createScopedKeydownHandler,\n  ElementProps,\n  factory,\n  Factory,\n  getThemeColor,\n  RaikouColor,\n  useDirection,\n  useProps,\n  useRaikouTheme,\n} from '../../../core';\nimport { UnstyledButton, UnstyledButtonProps } from '../../UnstyledButton';\nimport { useTabsContext } from '../Tabs.context';\n\nexport type TabsTabStylesNames = 'tab' | 'tabSection' | 'tabLabel';\n\nexport interface TabsTabProps\n  extends Omit<UnstyledButtonProps, 'classNames' | 'styles' | 'vars'>,\n    CompoundStylesApiProps<TabsTabFactory>,\n    ElementProps<'button'> {\n  /** Value of associated panel */\n  value: string;\n\n  /** Tab label */\n  children?: React.ReactNode;\n\n  /** Content displayed on the right side of the label, for example, icon */\n  rightSection?: React.ReactNode;\n\n  /** Content displayed on the left side of the label, for example, icon */\n  leftSection?: React.ReactNode;\n\n  /** Key of `theme.colors` or any valid CSS color, controls control color based on `variant` */\n  color?: RaikouColor;\n}\n\nexport type TabsTabFactory = Factory<{\n  props: TabsTabProps;\n  ref: HTMLButtonElement;\n  stylesNames: TabsTabStylesNames;\n  compound: true;\n}>;\n\nconst defaultProps: Partial<TabsTabProps> = {};\n\nexport const TabsTab = factory<TabsTabFactory>((_props, ref) => {\n  const props = useProps('TabsTab', defaultProps, _props);\n  const {\n    className,\n    children,\n    rightSection,\n    leftSection,\n    value,\n    onClick,\n    onKeyDown,\n    disabled,\n    color,\n    style,\n    classNames,\n    styles,\n    vars,\n    mod,\n    tabIndex,\n    ...others\n  } = props;\n\n  const theme = useRaikouTheme();\n  const { dir } = useDirection();\n  const ctx = useTabsContext();\n  const active = value === ctx.value;\n  const activateTab = (event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => {\n    ctx.onChange(ctx.allowTabDeactivation ? (value === ctx.value ? null : value) : value);\n    onClick?.(event);\n  };\n\n  const stylesApiProps = { classNames, styles, props };\n\n  return (\n    <UnstyledButton\n      {...others}\n      {...ctx.getStyles('tab', { className, style, variant: ctx.variant, ...stylesApiProps })}\n      disabled={disabled}\n      unstyled={ctx.unstyled}\n      variant={ctx.variant}\n      mod={[\n        {\n          active,\n          disabled,\n          orientation: ctx.orientation,\n          inverted: ctx.inverted,\n          placement: ctx.orientation === 'vertical' && ctx.placement,\n        },\n        mod,\n      ]}\n      ref={ref}\n      role=\"tab\"\n      id={ctx.getTabId(value)}\n      aria-selected={active}\n      tabIndex={tabIndex || active || ctx.value === null ? 0 : -1}\n      aria-controls={ctx.getPanelId(value)}\n      onClick={activateTab}\n      __vars={{ '--tabs-color': color ? getThemeColor(color, theme) : undefined }}\n      onKeyDown={createScopedKeydownHandler({\n        siblingSelector: '[role=\"tab\"]',\n        parentSelector: '[role=\"tablist\"]',\n        activateOnFocus: ctx.activateTabWithKeyboard,\n        loop: ctx.loop,\n        orientation: ctx.orientation || 'horizontal',\n        dir,\n        onKeyDown,\n      })}\n    >\n      {leftSection && (\n        <span {...ctx.getStyles('tabSection', stylesApiProps)} data-position=\"left\">\n          {leftSection}\n        </span>\n      )}\n      {children && <span {...ctx.getStyles('tabLabel', stylesApiProps)}>{children}</span>}\n      {rightSection && (\n        <span {...ctx.getStyles('tabSection', stylesApiProps)} data-position=\"right\">\n          {rightSection}\n        </span>\n      )}\n    </UnstyledButton>\n  );\n});\n\nTabsTab.displayName = '@raikou/core/TabsTab';\n"],"names":[],"mappings":"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"}