{"version":3,"sources":["../src/tab.tsx"],"sourcesContent":["import type { CSSUIObject, HTMLUIProps } from \"@yamada-ui/core\"\nimport type { UseClickableProps } from \"@yamada-ui/use-clickable\"\nimport type { Merge } from \"@yamada-ui/utils\"\nimport { forwardRef, ui } from \"@yamada-ui/core\"\nimport { Ripple, useRipple } from \"@yamada-ui/ripple\"\nimport { useClickable } from \"@yamada-ui/use-clickable\"\nimport { cx, handlerAll, mergeRefs } from \"@yamada-ui/utils\"\nimport { useId } from \"react\"\nimport {\n  useTabDescendant,\n  useTabPanelDescendant,\n  useTabsContext,\n} from \"./tabs-context\"\n\nexport interface TabProps\n  extends Merge<UseClickableProps<HTMLButtonElement>, HTMLUIProps<\"button\">> {}\n\nexport const Tab = forwardRef<TabProps, \"button\">(\n  (\n    {\n      id,\n      className,\n      children,\n      clickOnEnter,\n      clickOnSpace,\n      isDisabled,\n      disabled = isDisabled,\n      isFocusable,\n      focusable = isFocusable,\n      ...rest\n    },\n    ref,\n  ) => {\n    const uuid = useId()\n    const {\n      disableRipple,\n      manual,\n      orientation,\n      selectedIndex,\n      setFocusedIndex,\n      setSelectedIndex,\n      styles,\n    } = useTabsContext()\n    const { index, register } = useTabDescendant({\n      disabled: disabled && !focusable,\n    })\n    const { descendants } = useTabPanelDescendant()\n    const tabpanelId = descendants.value(index)?.node.id\n    const isSelected = index === selectedIndex\n    const css: CSSUIObject = {\n      alignItems: \"center\",\n      display: \"flex\",\n      justifyContent: \"center\",\n      outline: \"0\",\n      overflow: \"hidden\",\n      position: \"relative\",\n      ...styles.tab,\n    }\n\n    id ??= uuid\n\n    const onFocus = () => {\n      setFocusedIndex(index)\n\n      if (!manual && !(disabled && focusable)) setSelectedIndex(index)\n    }\n\n    const clickableProps = useClickable<HTMLButtonElement>({\n      id,\n      \"aria-controls\": tabpanelId,\n      \"aria-selected\": isSelected,\n\n      role: \"tab\",\n      ...rest,\n      ref: mergeRefs(register, ref),\n      clickOnEnter,\n      clickOnSpace,\n      disabled,\n      focusable,\n      onClick: handlerAll(rest.onClick, () => setSelectedIndex(index)),\n      onFocus: disabled ? undefined : handlerAll(rest.onFocus, onFocus),\n    })\n    const { onPointerDown, ...rippleProps } = useRipple({\n      ...clickableProps,\n      disabled: disableRipple || disabled,\n    })\n\n    return (\n      <ui.button\n        className={cx(\"ui-tabs__tab\", className)}\n        __css={css}\n        {...clickableProps}\n        type=\"button\"\n        data-orientation={orientation}\n        tabIndex={isSelected ? 0 : -1}\n        onPointerDown={onPointerDown}\n      >\n        {children}\n\n        <Ripple {...rippleProps} />\n      </ui.button>\n    )\n  },\n)\n\nTab.displayName = \"Tab\"\nTab.__ui__ = \"Tab\"\n"],"mappings":";;;;;;;;AAGA,SAAS,YAAY,UAAU;AAC/B,SAAS,QAAQ,iBAAiB;AAClC,SAAS,oBAAoB;AAC7B,SAAS,IAAI,YAAY,iBAAiB;AAC1C,SAAS,aAAa;AAiFhB,SAWE,KAXF;AAvEC,IAAM,MAAM;AAAA,EACjB,CACE;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,WAAW;AAAA,IACX;AAAA,IACA,YAAY;AAAA,IACZ,GAAG;AAAA,EACL,GACA,QACG;AAhCP;AAiCI,UAAM,OAAO,MAAM;AACnB,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI,eAAe;AACnB,UAAM,EAAE,OAAO,SAAS,IAAI,iBAAiB;AAAA,MAC3C,UAAU,YAAY,CAAC;AAAA,IACzB,CAAC;AACD,UAAM,EAAE,YAAY,IAAI,sBAAsB;AAC9C,UAAM,cAAa,iBAAY,MAAM,KAAK,MAAvB,mBAA0B,KAAK;AAClD,UAAM,aAAa,UAAU;AAC7B,UAAM,MAAmB;AAAA,MACvB,YAAY;AAAA,MACZ,SAAS;AAAA,MACT,gBAAgB;AAAA,MAChB,SAAS;AAAA,MACT,UAAU;AAAA,MACV,UAAU;AAAA,MACV,GAAG,OAAO;AAAA,IACZ;AAEA,2BAAO;AAEP,UAAM,UAAU,MAAM;AACpB,sBAAgB,KAAK;AAErB,UAAI,CAAC,UAAU,EAAE,YAAY,WAAY,kBAAiB,KAAK;AAAA,IACjE;AAEA,UAAM,iBAAiB,aAAgC;AAAA,MACrD;AAAA,MACA,iBAAiB;AAAA,MACjB,iBAAiB;AAAA,MAEjB,MAAM;AAAA,MACN,GAAG;AAAA,MACH,KAAK,UAAU,UAAU,GAAG;AAAA,MAC5B;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,SAAS,WAAW,KAAK,SAAS,MAAM,iBAAiB,KAAK,CAAC;AAAA,MAC/D,SAAS,WAAW,SAAY,WAAW,KAAK,SAAS,OAAO;AAAA,IAClE,CAAC;AACD,UAAM,EAAE,eAAe,GAAG,YAAY,IAAI,UAAU;AAAA,MAClD,GAAG;AAAA,MACH,UAAU,iBAAiB;AAAA,IAC7B,CAAC;AAED,WACE;AAAA,MAAC,GAAG;AAAA,MAAH;AAAA,QACC,WAAW,GAAG,gBAAgB,SAAS;AAAA,QACvC,OAAO;AAAA,QACN,GAAG;AAAA,QACJ,MAAK;AAAA,QACL,oBAAkB;AAAA,QAClB,UAAU,aAAa,IAAI;AAAA,QAC3B;AAAA,QAEC;AAAA;AAAA,UAED,oBAAC,UAAQ,GAAG,aAAa;AAAA;AAAA;AAAA,IAC3B;AAAA,EAEJ;AACF;AAEA,IAAI,cAAc;AAClB,IAAI,SAAS;","names":[]}