@fluentui/react-tabs 9.74.7-experimental.cli-api.20261006-ccaa611d58.0 → 9.75.0-experimental.css-modules.20261031-810ab07afb.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (84) hide show
  1. package/CHANGELOG.md +35 -11
  2. package/README.md +8 -0
  3. package/lib/components/Tab/Tab.js.map +1 -1
  4. package/lib/components/Tab/Tab.module.css +475 -0
  5. package/lib/components/Tab/Tab.types.js.map +1 -1
  6. package/lib/components/Tab/TabAnimatedIndicator.module.css +27 -0
  7. package/lib/components/Tab/index.js.map +1 -1
  8. package/lib/components/Tab/renderTab.js +2 -2
  9. package/lib/components/Tab/renderTab.js.map +1 -1
  10. package/lib/components/Tab/useTab.js.map +1 -1
  11. package/lib/components/Tab/useTabAnimatedIndicator.styles.css.js +93 -0
  12. package/lib/components/Tab/useTabAnimatedIndicator.styles.css.js.map +1 -0
  13. package/lib/components/Tab/useTabAnimatedIndicator.styles.raw.css.js +93 -0
  14. package/lib/components/Tab/useTabAnimatedIndicator.styles.raw.css.js.map +1 -0
  15. package/lib/components/Tab/useTabAnimatedIndicator.styles.raw.js.map +1 -1
  16. package/lib/components/Tab/useTabStyles.styles.css.js +53 -0
  17. package/lib/components/Tab/useTabStyles.styles.css.js.map +1 -0
  18. package/lib/components/Tab/useTabStyles.styles.raw.css.js +53 -0
  19. package/lib/components/Tab/useTabStyles.styles.raw.css.js.map +1 -0
  20. package/lib/components/Tab/useTabStyles.styles.raw.js.map +1 -1
  21. package/lib/components/TabList/TabList.js.map +1 -1
  22. package/lib/components/TabList/TabList.module.css +27 -0
  23. package/lib/components/TabList/TabList.types.js.map +1 -1
  24. package/lib/components/TabList/TabListContext.js.map +1 -1
  25. package/lib/components/TabList/index.js.map +1 -1
  26. package/lib/components/TabList/renderTabList.js +2 -2
  27. package/lib/components/TabList/renderTabList.js.map +1 -1
  28. package/lib/components/TabList/useTabList.js.map +1 -1
  29. package/lib/components/TabList/useTabListContextValues.js.map +1 -1
  30. package/lib/components/TabList/useTabListStyles.styles.css.js +12 -0
  31. package/lib/components/TabList/useTabListStyles.styles.css.js.map +1 -0
  32. package/lib/components/TabList/useTabListStyles.styles.raw.css.js +12 -0
  33. package/lib/components/TabList/useTabListStyles.styles.raw.css.js.map +1 -0
  34. package/lib/components/TabList/useTabListStyles.styles.raw.js.map +1 -1
  35. package/lib-commonjs/Tab.cjs +12 -12
  36. package/lib-commonjs/Tab.cjs.map +1 -1
  37. package/lib-commonjs/TabList.cjs +12 -12
  38. package/lib-commonjs/TabList.cjs.map +1 -1
  39. package/lib-commonjs/components/Tab/Tab.cjs.map +1 -1
  40. package/lib-commonjs/components/Tab/Tab.module.css +475 -0
  41. package/lib-commonjs/components/Tab/Tab.types.cjs.map +1 -1
  42. package/lib-commonjs/components/Tab/TabAnimatedIndicator.module.css +27 -0
  43. package/lib-commonjs/components/Tab/index.cjs +13 -13
  44. package/lib-commonjs/components/Tab/index.cjs.map +1 -1
  45. package/lib-commonjs/components/Tab/renderTab.cjs.map +1 -1
  46. package/lib-commonjs/components/Tab/useTab.cjs +4 -4
  47. package/lib-commonjs/components/Tab/useTab.cjs.map +1 -1
  48. package/lib-commonjs/components/Tab/useTabAnimatedIndicator.styles.css.cjs +103 -0
  49. package/lib-commonjs/components/Tab/useTabAnimatedIndicator.styles.css.cjs.map +1 -0
  50. package/lib-commonjs/components/Tab/useTabAnimatedIndicator.styles.raw.cjs.map +1 -1
  51. package/lib-commonjs/components/Tab/useTabAnimatedIndicator.styles.raw.css.cjs +103 -0
  52. package/lib-commonjs/components/Tab/useTabAnimatedIndicator.styles.raw.css.cjs.map +1 -0
  53. package/lib-commonjs/components/Tab/useTabStyles.styles.cjs +7 -7
  54. package/lib-commonjs/components/Tab/useTabStyles.styles.cjs.map +1 -1
  55. package/lib-commonjs/components/Tab/useTabStyles.styles.css.cjs +82 -0
  56. package/lib-commonjs/components/Tab/useTabStyles.styles.css.cjs.map +1 -0
  57. package/lib-commonjs/components/Tab/useTabStyles.styles.raw.cjs +7 -7
  58. package/lib-commonjs/components/Tab/useTabStyles.styles.raw.cjs.map +1 -1
  59. package/lib-commonjs/components/Tab/useTabStyles.styles.raw.css.cjs +82 -0
  60. package/lib-commonjs/components/Tab/useTabStyles.styles.raw.css.cjs.map +1 -0
  61. package/lib-commonjs/components/TabList/TabList.cjs.map +1 -1
  62. package/lib-commonjs/components/TabList/TabList.module.css +27 -0
  63. package/lib-commonjs/components/TabList/TabList.types.cjs.map +1 -1
  64. package/lib-commonjs/components/TabList/TabListContext.cjs +4 -4
  65. package/lib-commonjs/components/TabList/TabListContext.cjs.map +1 -1
  66. package/lib-commonjs/components/TabList/index.cjs +12 -12
  67. package/lib-commonjs/components/TabList/index.cjs.map +1 -1
  68. package/lib-commonjs/components/TabList/renderTabList.cjs.map +1 -1
  69. package/lib-commonjs/components/TabList/useTabList.cjs +4 -4
  70. package/lib-commonjs/components/TabList/useTabList.cjs.map +1 -1
  71. package/lib-commonjs/components/TabList/useTabListContextValues.cjs.map +1 -1
  72. package/lib-commonjs/components/TabList/useTabListStyles.styles.cjs +3 -3
  73. package/lib-commonjs/components/TabList/useTabListStyles.styles.cjs.map +1 -1
  74. package/lib-commonjs/components/TabList/useTabListStyles.styles.css.cjs +29 -0
  75. package/lib-commonjs/components/TabList/useTabListStyles.styles.css.cjs.map +1 -0
  76. package/lib-commonjs/components/TabList/useTabListStyles.styles.raw.cjs +3 -3
  77. package/lib-commonjs/components/TabList/useTabListStyles.styles.raw.cjs.map +1 -1
  78. package/lib-commonjs/components/TabList/useTabListStyles.styles.raw.css.cjs +29 -0
  79. package/lib-commonjs/components/TabList/useTabListStyles.styles.raw.css.cjs.map +1 -0
  80. package/lib-commonjs/index.cjs +22 -22
  81. package/lib-commonjs/index.cjs.map +1 -1
  82. package/package.json +14 -14
  83. package/dist/metadata/api/api-root.json +0 -1
  84. package/dist/metadata/index.json +0 -1
@@ -0,0 +1,103 @@
1
+ 'use client';
2
+ "use strict";
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "useTabAnimatedIndicatorStyles_unstable", {
7
+ enumerable: true,
8
+ get: function() {
9
+ return useTabAnimatedIndicatorStyles_unstable;
10
+ }
11
+ });
12
+ const _interop_require_default = require("@swc/helpers/_/_interop_require_default");
13
+ const _interop_require_wildcard = require("@swc/helpers/_/_interop_require_wildcard");
14
+ const _react = /*#__PURE__*/ _interop_require_wildcard._(require("react"));
15
+ const _clsx = require("clsx");
16
+ const _TabAnimatedIndicatormodulecss = /*#__PURE__*/ _interop_require_default._(require("./TabAnimatedIndicator.module.css"));
17
+ const _TabListContext = require("../TabList/TabListContext.cjs");
18
+ const _reactutilities = require("@fluentui/react-utilities");
19
+ // eslint-disable-next-line @typescript-eslint/naming-convention
20
+ const tabIndicatorCssVars_unstable = {
21
+ offsetVar: '--fui-Tab__indicator--offset',
22
+ scaleVar: '--fui-Tab__indicator--scale'
23
+ };
24
+ const calculateTabRect = (element)=>{
25
+ if (element) {
26
+ var _element_parentElement;
27
+ const parentRect = ((_element_parentElement = element.parentElement) === null || _element_parentElement === void 0 ? void 0 : _element_parentElement.getBoundingClientRect()) || {
28
+ x: 0,
29
+ y: 0,
30
+ width: 0,
31
+ height: 0
32
+ };
33
+ const tabRect = element.getBoundingClientRect();
34
+ return {
35
+ x: tabRect.x - parentRect.x,
36
+ y: tabRect.y - parentRect.y,
37
+ width: tabRect.width,
38
+ height: tabRect.height
39
+ };
40
+ }
41
+ return undefined;
42
+ };
43
+ const getRegisteredTabRect = (registeredTabs, value)=>{
44
+ var _registeredTabs_JSON_stringify;
45
+ const element = isValueDefined(value) ? (_registeredTabs_JSON_stringify = registeredTabs[JSON.stringify(value)]) === null || _registeredTabs_JSON_stringify === void 0 ? void 0 : _registeredTabs_JSON_stringify.ref.current : undefined;
46
+ return element ? calculateTabRect(element) : undefined;
47
+ };
48
+ // eslint-disable-next-line eqeqeq
49
+ const isValueDefined = (value)=>value != null;
50
+ const useTabAnimatedIndicatorStyles_unstable = (state)=>{
51
+ const { disabled, selected, vertical } = state;
52
+ const [lastAnimatedFrom, setLastAnimatedFrom] = _react.useState();
53
+ const [animationValues, setAnimationValues] = _react.useState({
54
+ offset: 0,
55
+ scale: 1
56
+ });
57
+ const getRegisteredTabs = (0, _TabListContext.useTabListContext_unstable)((ctx)=>ctx.getRegisteredTabs);
58
+ const [requestAnimationFrame] = (0, _reactutilities.useAnimationFrame)();
59
+ if (selected) {
60
+ const { previousSelectedValue, selectedValue, registeredTabs } = getRegisteredTabs();
61
+ if (isValueDefined(previousSelectedValue) && lastAnimatedFrom !== previousSelectedValue) {
62
+ const previousSelectedTabRect = getRegisteredTabRect(registeredTabs, previousSelectedValue);
63
+ const selectedTabRect = getRegisteredTabRect(registeredTabs, selectedValue);
64
+ if (selectedTabRect && previousSelectedTabRect) {
65
+ const offset = vertical ? previousSelectedTabRect.y - selectedTabRect.y : previousSelectedTabRect.x - selectedTabRect.x;
66
+ const scale = vertical ? previousSelectedTabRect.height / selectedTabRect.height : previousSelectedTabRect.width / selectedTabRect.width;
67
+ setAnimationValues({
68
+ offset,
69
+ scale
70
+ });
71
+ setLastAnimatedFrom(previousSelectedValue);
72
+ // Reset the animation values after the animation is complete
73
+ requestAnimationFrame(()=>setAnimationValues({
74
+ offset: 0,
75
+ scale: 1
76
+ }));
77
+ }
78
+ }
79
+ } else if (isValueDefined(lastAnimatedFrom)) {
80
+ // need to clear the last animated from so that if this tab is selected again
81
+ // from the same previous tab as last time, that animation still happens.
82
+ setLastAnimatedFrom(undefined);
83
+ }
84
+ // do not apply any animation if the tab is disabled
85
+ if (disabled) {
86
+ return state;
87
+ }
88
+ // the animation should only happen as the selection indicator returns to its
89
+ // original position and not when set at the previous tabs position.
90
+ const animating = animationValues.offset === 0 && animationValues.scale === 1;
91
+ // eslint-disable-next-line react-hooks/immutability
92
+ state.root.className = (0, _clsx.clsx)(selected && _TabAnimatedIndicatormodulecss.default.base, selected && animating && _TabAnimatedIndicatormodulecss.default.animated, selected && _TabAnimatedIndicatormodulecss.default[vertical ? 'vertical' : 'horizontal'], state.root.className);
93
+ const rootCssVars = {
94
+ [tabIndicatorCssVars_unstable.offsetVar]: `${animationValues.offset}px`,
95
+ [tabIndicatorCssVars_unstable.scaleVar]: `${animationValues.scale}`
96
+ };
97
+ // eslint-disable-next-line react-hooks/immutability
98
+ state.root.style = {
99
+ ...rootCssVars,
100
+ ...state.root.style
101
+ };
102
+ return state;
103
+ };
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/Tab/useTabAnimatedIndicator.styles.css.ts"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport type { TabState, TabValue } from './Tab.types';\n\nimport { clsx } from 'clsx';\nimport styles from './TabAnimatedIndicator.module.css';\nimport { useTabListContext_unstable } from '../TabList/TabListContext';\nimport type { TabRegisterData } from '../TabList/TabList.types';\nimport { useAnimationFrame } from '@fluentui/react-utilities';\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nconst tabIndicatorCssVars_unstable = {\n offsetVar: '--fui-Tab__indicator--offset',\n scaleVar: '--fui-Tab__indicator--scale',\n};\n\nconst calculateTabRect = (element: HTMLElement) => {\n if (element) {\n const parentRect = element.parentElement?.getBoundingClientRect() || { x: 0, y: 0, width: 0, height: 0 };\n const tabRect = element.getBoundingClientRect();\n\n return {\n x: tabRect.x - parentRect.x,\n y: tabRect.y - parentRect.y,\n width: tabRect.width,\n height: tabRect.height,\n };\n }\n return undefined;\n};\n\nconst getRegisteredTabRect = (registeredTabs: Record<string, TabRegisterData>, value?: TabValue) => {\n const element = isValueDefined(value) ? registeredTabs[JSON.stringify(value)]?.ref.current : undefined;\n return element ? calculateTabRect(element) : undefined;\n};\n\n// eslint-disable-next-line eqeqeq\nconst isValueDefined = (value: TabValue) => value != null;\n\n/**\n * Adds additional styling to the active tab selection indicator to create a sliding animation.\n */\nexport const useTabAnimatedIndicatorStyles_unstable = (state: TabState): TabState => {\n const { disabled, selected, vertical } = state;\n\n const [lastAnimatedFrom, setLastAnimatedFrom] = React.useState<TabValue>();\n const [animationValues, setAnimationValues] = React.useState({ offset: 0, scale: 1 });\n const getRegisteredTabs = useTabListContext_unstable(ctx => ctx.getRegisteredTabs);\n\n const [requestAnimationFrame] = useAnimationFrame();\n\n if (selected) {\n const { previousSelectedValue, selectedValue, registeredTabs } = getRegisteredTabs();\n\n if (isValueDefined(previousSelectedValue) && lastAnimatedFrom !== previousSelectedValue) {\n const previousSelectedTabRect = getRegisteredTabRect(registeredTabs, previousSelectedValue);\n const selectedTabRect = getRegisteredTabRect(registeredTabs, selectedValue);\n\n if (selectedTabRect && previousSelectedTabRect) {\n const offset = vertical\n ? previousSelectedTabRect.y - selectedTabRect.y\n : previousSelectedTabRect.x - selectedTabRect.x;\n\n const scale = vertical\n ? previousSelectedTabRect.height / selectedTabRect.height\n : previousSelectedTabRect.width / selectedTabRect.width;\n\n setAnimationValues({ offset, scale });\n setLastAnimatedFrom(previousSelectedValue);\n\n // Reset the animation values after the animation is complete\n requestAnimationFrame(() => setAnimationValues({ offset: 0, scale: 1 }));\n }\n }\n } else if (isValueDefined(lastAnimatedFrom)) {\n // need to clear the last animated from so that if this tab is selected again\n // from the same previous tab as last time, that animation still happens.\n setLastAnimatedFrom(undefined);\n }\n\n // do not apply any animation if the tab is disabled\n if (disabled) {\n return state;\n }\n\n // the animation should only happen as the selection indicator returns to its\n // original position and not when set at the previous tabs position.\n const animating = animationValues.offset === 0 && animationValues.scale === 1;\n\n // eslint-disable-next-line react-hooks/immutability\n state.root.className = clsx(\n selected && styles.base,\n selected && animating && styles.animated,\n selected && styles[vertical ? 'vertical' : 'horizontal'],\n state.root.className,\n );\n\n const rootCssVars = {\n [tabIndicatorCssVars_unstable.offsetVar]: `${animationValues.offset}px`,\n [tabIndicatorCssVars_unstable.scaleVar]: `${animationValues.scale}`,\n };\n\n // eslint-disable-next-line react-hooks/immutability\n state.root.style = {\n ...rootCssVars,\n ...state.root.style,\n };\n\n return state;\n};\n"],"names":["React","clsx","styles","useTabListContext_unstable","useAnimationFrame","tabIndicatorCssVars_unstable","offsetVar","scaleVar","calculateTabRect","element","parentRect","parentElement","getBoundingClientRect","x","y","width","height","tabRect","undefined","getRegisteredTabRect","registeredTabs","value","isValueDefined","JSON","stringify","ref","current","useTabAnimatedIndicatorStyles_unstable","state","disabled","selected","vertical","lastAnimatedFrom","setLastAnimatedFrom","useState","animationValues","setAnimationValues","offset","scale","getRegisteredTabs","ctx","requestAnimationFrame","previousSelectedValue","selectedValue","previousSelectedTabRect","selectedTabRect","animating","root","className","base","animated","rootCssVars","style"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/Tab/useTabAnimatedIndicator.styles.ts"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport type { TabState, TabValue } from './Tab.types';\n\nimport { makeStyles, mergeClasses } from '@griffel/react';\nimport { useTabListContext_unstable } from '../TabList/TabListContext';\nimport type { TabRegisterData } from '../TabList/TabList.types';\nimport { tokens } from '@fluentui/react-theme';\nimport { useAnimationFrame } from '@fluentui/react-utilities';\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nconst tabIndicatorCssVars_unstable = {\n offsetVar: '--fui-Tab__indicator--offset',\n scaleVar: '--fui-Tab__indicator--scale',\n};\n\nconst useActiveIndicatorStyles = makeStyles({\n base: {\n // overflow is required to allow the selection indicator to animate outside the tab area.\n overflow: 'visible',\n },\n animated: {\n '::after': {\n transitionProperty: 'transform',\n transitionDuration: `${tokens.durationSlow}`,\n transitionTimingFunction: `${tokens.curveDecelerateMax}`,\n },\n '@media (prefers-reduced-motion: reduce)': {\n '::after': {\n transitionProperty: 'none',\n transitionDuration: '0.01ms',\n },\n },\n },\n horizontal: {\n '::after': {\n transformOrigin: 'left',\n transform: `translateX(var(${tabIndicatorCssVars_unstable.offsetVar}))\n scaleX(var(${tabIndicatorCssVars_unstable.scaleVar}))`,\n },\n },\n vertical: {\n '::after': {\n transformOrigin: 'top',\n transform: `translateY(var(${tabIndicatorCssVars_unstable.offsetVar}))\n scaleY(var(${tabIndicatorCssVars_unstable.scaleVar}))`,\n },\n },\n});\n\nconst calculateTabRect = (element: HTMLElement) => {\n if (element) {\n const parentRect = element.parentElement?.getBoundingClientRect() || { x: 0, y: 0, width: 0, height: 0 };\n const tabRect = element.getBoundingClientRect();\n\n return {\n x: tabRect.x - parentRect.x,\n y: tabRect.y - parentRect.y,\n width: tabRect.width,\n height: tabRect.height,\n };\n }\n return undefined;\n};\n\nconst getRegisteredTabRect = (registeredTabs: Record<string, TabRegisterData>, value?: TabValue) => {\n const element = isValueDefined(value) ? registeredTabs[JSON.stringify(value)]?.ref.current : undefined;\n return element ? calculateTabRect(element) : undefined;\n};\n\n// eslint-disable-next-line eqeqeq\nconst isValueDefined = (value: TabValue) => value != null;\n\n/**\n * Adds additional styling to the active tab selection indicator to create a sliding animation.\n */\nexport const useTabAnimatedIndicatorStyles_unstable = (state: TabState): TabState => {\n const { disabled, selected, vertical } = state;\n\n const activeIndicatorStyles = useActiveIndicatorStyles();\n const [lastAnimatedFrom, setLastAnimatedFrom] = React.useState<TabValue>();\n const [animationValues, setAnimationValues] = React.useState({ offset: 0, scale: 1 });\n const getRegisteredTabs = useTabListContext_unstable(ctx => ctx.getRegisteredTabs);\n\n const [requestAnimationFrame] = useAnimationFrame();\n\n if (selected) {\n const { previousSelectedValue, selectedValue, registeredTabs } = getRegisteredTabs();\n\n if (isValueDefined(previousSelectedValue) && lastAnimatedFrom !== previousSelectedValue) {\n const previousSelectedTabRect = getRegisteredTabRect(registeredTabs, previousSelectedValue);\n const selectedTabRect = getRegisteredTabRect(registeredTabs, selectedValue);\n\n if (selectedTabRect && previousSelectedTabRect) {\n const offset = vertical\n ? previousSelectedTabRect.y - selectedTabRect.y\n : previousSelectedTabRect.x - selectedTabRect.x;\n\n const scale = vertical\n ? previousSelectedTabRect.height / selectedTabRect.height\n : previousSelectedTabRect.width / selectedTabRect.width;\n\n setAnimationValues({ offset, scale });\n setLastAnimatedFrom(previousSelectedValue);\n\n // Reset the animation values after the animation is complete\n requestAnimationFrame(() => setAnimationValues({ offset: 0, scale: 1 }));\n }\n }\n } else if (isValueDefined(lastAnimatedFrom)) {\n // need to clear the last animated from so that if this tab is selected again\n // from the same previous tab as last time, that animation still happens.\n setLastAnimatedFrom(undefined);\n }\n\n // do not apply any animation if the tab is disabled\n if (disabled) {\n return state;\n }\n\n // the animation should only happen as the selection indicator returns to its\n // original position and not when set at the previous tabs position.\n const animating = animationValues.offset === 0 && animationValues.scale === 1;\n\n // eslint-disable-next-line react-hooks/immutability\n state.root.className = mergeClasses(\n state.root.className,\n selected && activeIndicatorStyles.base,\n selected && animating && activeIndicatorStyles.animated,\n selected && (vertical ? activeIndicatorStyles.vertical : activeIndicatorStyles.horizontal),\n );\n\n const rootCssVars = {\n [tabIndicatorCssVars_unstable.offsetVar]: `${animationValues.offset}px`,\n [tabIndicatorCssVars_unstable.scaleVar]: `${animationValues.scale}`,\n };\n\n // eslint-disable-next-line react-hooks/immutability\n state.root.style = {\n ...rootCssVars,\n ...state.root.style,\n };\n\n return state;\n};\n"],"names":["React","makeStyles","mergeClasses","useTabListContext_unstable","tokens","useAnimationFrame","tabIndicatorCssVars_unstable","offsetVar","scaleVar","useActiveIndicatorStyles","base","overflow","animated","transitionProperty","transitionDuration","durationSlow","transitionTimingFunction","curveDecelerateMax","horizontal","transformOrigin","transform","vertical","calculateTabRect","element","parentRect","parentElement","getBoundingClientRect","x","y","width","height","tabRect","undefined","getRegisteredTabRect","registeredTabs","value","isValueDefined","JSON","stringify","ref","current","useTabAnimatedIndicatorStyles_unstable","state","disabled","selected","activeIndicatorStyles","lastAnimatedFrom","setLastAnimatedFrom","useState","animationValues","setAnimationValues","offset","scale","getRegisteredTabs","ctx","requestAnimationFrame","previousSelectedValue","selectedValue","previousSelectedTabRect","selectedTabRect","animating","root","className","rootCssVars","style"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/components/Tab/useTabAnimatedIndicator.styles.ts"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport type { TabState, TabValue } from './Tab.types';\n\nimport { makeStyles, mergeClasses } from '@griffel/react';\nimport { useTabListContext_unstable } from '../TabList/TabListContext';\nimport type { TabRegisterData } from '../TabList/TabList.types';\nimport { tokens } from '@fluentui/react-theme';\nimport { useAnimationFrame } from '@fluentui/react-utilities';\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nconst tabIndicatorCssVars_unstable = {\n offsetVar: '--fui-Tab__indicator--offset',\n scaleVar: '--fui-Tab__indicator--scale',\n};\n\nconst useActiveIndicatorStyles = makeStyles({\n base: {\n // overflow is required to allow the selection indicator to animate outside the tab area.\n overflow: 'visible',\n },\n animated: {\n '::after': {\n transitionProperty: 'transform',\n transitionDuration: `${tokens.durationSlow}`,\n transitionTimingFunction: `${tokens.curveDecelerateMax}`,\n },\n '@media (prefers-reduced-motion: reduce)': {\n '::after': {\n transitionProperty: 'none',\n transitionDuration: '0.01ms',\n },\n },\n },\n horizontal: {\n '::after': {\n transformOrigin: 'left',\n transform: `translateX(var(${tabIndicatorCssVars_unstable.offsetVar}))\n scaleX(var(${tabIndicatorCssVars_unstable.scaleVar}))`,\n },\n },\n vertical: {\n '::after': {\n transformOrigin: 'top',\n transform: `translateY(var(${tabIndicatorCssVars_unstable.offsetVar}))\n scaleY(var(${tabIndicatorCssVars_unstable.scaleVar}))`,\n },\n },\n});\n\nconst calculateTabRect = (element: HTMLElement) => {\n if (element) {\n const parentRect = element.parentElement?.getBoundingClientRect() || { x: 0, y: 0, width: 0, height: 0 };\n const tabRect = element.getBoundingClientRect();\n\n return {\n x: tabRect.x - parentRect.x,\n y: tabRect.y - parentRect.y,\n width: tabRect.width,\n height: tabRect.height,\n };\n }\n return undefined;\n};\n\nconst getRegisteredTabRect = (registeredTabs: Record<string, TabRegisterData>, value?: TabValue) => {\n const element = isValueDefined(value) ? registeredTabs[JSON.stringify(value)]?.ref.current : undefined;\n return element ? calculateTabRect(element) : undefined;\n};\n\n// eslint-disable-next-line eqeqeq\nconst isValueDefined = (value: TabValue) => value != null;\n\n/**\n * Adds additional styling to the active tab selection indicator to create a sliding animation.\n */\nexport const useTabAnimatedIndicatorStyles_unstable = (state: TabState): TabState => {\n const { disabled, selected, vertical } = state;\n\n const activeIndicatorStyles = useActiveIndicatorStyles();\n const [lastAnimatedFrom, setLastAnimatedFrom] = React.useState<TabValue>();\n const [animationValues, setAnimationValues] = React.useState({ offset: 0, scale: 1 });\n const getRegisteredTabs = useTabListContext_unstable(ctx => ctx.getRegisteredTabs);\n\n const [requestAnimationFrame] = useAnimationFrame();\n\n if (selected) {\n const { previousSelectedValue, selectedValue, registeredTabs } = getRegisteredTabs();\n\n if (isValueDefined(previousSelectedValue) && lastAnimatedFrom !== previousSelectedValue) {\n const previousSelectedTabRect = getRegisteredTabRect(registeredTabs, previousSelectedValue);\n const selectedTabRect = getRegisteredTabRect(registeredTabs, selectedValue);\n\n if (selectedTabRect && previousSelectedTabRect) {\n const offset = vertical\n ? previousSelectedTabRect.y - selectedTabRect.y\n : previousSelectedTabRect.x - selectedTabRect.x;\n\n const scale = vertical\n ? previousSelectedTabRect.height / selectedTabRect.height\n : previousSelectedTabRect.width / selectedTabRect.width;\n\n setAnimationValues({ offset, scale });\n setLastAnimatedFrom(previousSelectedValue);\n\n // Reset the animation values after the animation is complete\n requestAnimationFrame(() => setAnimationValues({ offset: 0, scale: 1 }));\n }\n }\n } else if (isValueDefined(lastAnimatedFrom)) {\n // need to clear the last animated from so that if this tab is selected again\n // from the same previous tab as last time, that animation still happens.\n setLastAnimatedFrom(undefined);\n }\n\n // do not apply any animation if the tab is disabled\n if (disabled) {\n return state;\n }\n\n // the animation should only happen as the selection indicator returns to its\n // original position and not when set at the previous tabs position.\n const animating = animationValues.offset === 0 && animationValues.scale === 1;\n\n // eslint-disable-next-line react-hooks/immutability\n state.root.className = mergeClasses(\n state.root.className,\n selected && activeIndicatorStyles.base,\n selected && animating && activeIndicatorStyles.animated,\n selected && (vertical ? activeIndicatorStyles.vertical : activeIndicatorStyles.horizontal),\n );\n\n const rootCssVars = {\n [tabIndicatorCssVars_unstable.offsetVar]: `${animationValues.offset}px`,\n [tabIndicatorCssVars_unstable.scaleVar]: `${animationValues.scale}`,\n };\n\n // eslint-disable-next-line react-hooks/immutability\n state.root.style = {\n ...rootCssVars,\n ...state.root.style,\n };\n\n return state;\n};\n"],"names":["React","makeStyles","mergeClasses","useTabListContext_unstable","tokens","useAnimationFrame","tabIndicatorCssVars_unstable","offsetVar","scaleVar","useActiveIndicatorStyles","base","overflow","animated","transitionProperty","transitionDuration","durationSlow","transitionTimingFunction","curveDecelerateMax","horizontal","transformOrigin","transform","vertical","calculateTabRect","element","parentRect","parentElement","getBoundingClientRect","x","y","width","height","tabRect","undefined","getRegisteredTabRect","registeredTabs","value","isValueDefined","JSON","stringify","ref","current","useTabAnimatedIndicatorStyles_unstable","state","disabled","selected","activeIndicatorStyles","lastAnimatedFrom","setLastAnimatedFrom","useState","animationValues","setAnimationValues","offset","scale","getRegisteredTabs","ctx","requestAnimationFrame","previousSelectedValue","selectedValue","previousSelectedTabRect","selectedTabRect","animating","root","className","rootCssVars","style"],"mappings":"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"}
@@ -0,0 +1,103 @@
1
+ 'use client';
2
+ "use strict";
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "useTabAnimatedIndicatorStyles_unstable", {
7
+ enumerable: true,
8
+ get: function() {
9
+ return useTabAnimatedIndicatorStyles_unstable;
10
+ }
11
+ });
12
+ const _interop_require_default = require("@swc/helpers/_/_interop_require_default");
13
+ const _interop_require_wildcard = require("@swc/helpers/_/_interop_require_wildcard");
14
+ const _react = /*#__PURE__*/ _interop_require_wildcard._(require("react"));
15
+ const _clsx = require("clsx");
16
+ const _TabAnimatedIndicatormodulecss = /*#__PURE__*/ _interop_require_default._(require("./TabAnimatedIndicator.module.css"));
17
+ const _TabListContext = require("../TabList/TabListContext.cjs");
18
+ const _reactutilities = require("@fluentui/react-utilities");
19
+ // eslint-disable-next-line @typescript-eslint/naming-convention
20
+ const tabIndicatorCssVars_unstable = {
21
+ offsetVar: '--fui-Tab__indicator--offset',
22
+ scaleVar: '--fui-Tab__indicator--scale'
23
+ };
24
+ const calculateTabRect = (element)=>{
25
+ if (element) {
26
+ var _element_parentElement;
27
+ const parentRect = ((_element_parentElement = element.parentElement) === null || _element_parentElement === void 0 ? void 0 : _element_parentElement.getBoundingClientRect()) || {
28
+ x: 0,
29
+ y: 0,
30
+ width: 0,
31
+ height: 0
32
+ };
33
+ const tabRect = element.getBoundingClientRect();
34
+ return {
35
+ x: tabRect.x - parentRect.x,
36
+ y: tabRect.y - parentRect.y,
37
+ width: tabRect.width,
38
+ height: tabRect.height
39
+ };
40
+ }
41
+ return undefined;
42
+ };
43
+ const getRegisteredTabRect = (registeredTabs, value)=>{
44
+ var _registeredTabs_JSON_stringify;
45
+ const element = isValueDefined(value) ? (_registeredTabs_JSON_stringify = registeredTabs[JSON.stringify(value)]) === null || _registeredTabs_JSON_stringify === void 0 ? void 0 : _registeredTabs_JSON_stringify.ref.current : undefined;
46
+ return element ? calculateTabRect(element) : undefined;
47
+ };
48
+ // eslint-disable-next-line eqeqeq
49
+ const isValueDefined = (value)=>value != null;
50
+ const useTabAnimatedIndicatorStyles_unstable = (state)=>{
51
+ const { disabled, selected, vertical } = state;
52
+ const [lastAnimatedFrom, setLastAnimatedFrom] = _react.useState();
53
+ const [animationValues, setAnimationValues] = _react.useState({
54
+ offset: 0,
55
+ scale: 1
56
+ });
57
+ const getRegisteredTabs = (0, _TabListContext.useTabListContext_unstable)((ctx)=>ctx.getRegisteredTabs);
58
+ const [requestAnimationFrame] = (0, _reactutilities.useAnimationFrame)();
59
+ if (selected) {
60
+ const { previousSelectedValue, selectedValue, registeredTabs } = getRegisteredTabs();
61
+ if (isValueDefined(previousSelectedValue) && lastAnimatedFrom !== previousSelectedValue) {
62
+ const previousSelectedTabRect = getRegisteredTabRect(registeredTabs, previousSelectedValue);
63
+ const selectedTabRect = getRegisteredTabRect(registeredTabs, selectedValue);
64
+ if (selectedTabRect && previousSelectedTabRect) {
65
+ const offset = vertical ? previousSelectedTabRect.y - selectedTabRect.y : previousSelectedTabRect.x - selectedTabRect.x;
66
+ const scale = vertical ? previousSelectedTabRect.height / selectedTabRect.height : previousSelectedTabRect.width / selectedTabRect.width;
67
+ setAnimationValues({
68
+ offset,
69
+ scale
70
+ });
71
+ setLastAnimatedFrom(previousSelectedValue);
72
+ // Reset the animation values after the animation is complete
73
+ requestAnimationFrame(()=>setAnimationValues({
74
+ offset: 0,
75
+ scale: 1
76
+ }));
77
+ }
78
+ }
79
+ } else if (isValueDefined(lastAnimatedFrom)) {
80
+ // need to clear the last animated from so that if this tab is selected again
81
+ // from the same previous tab as last time, that animation still happens.
82
+ setLastAnimatedFrom(undefined);
83
+ }
84
+ // do not apply any animation if the tab is disabled
85
+ if (disabled) {
86
+ return state;
87
+ }
88
+ // the animation should only happen as the selection indicator returns to its
89
+ // original position and not when set at the previous tabs position.
90
+ const animating = animationValues.offset === 0 && animationValues.scale === 1;
91
+ // eslint-disable-next-line react-hooks/immutability
92
+ state.root.className = (0, _clsx.clsx)(selected && _TabAnimatedIndicatormodulecss.default.base, selected && animating && _TabAnimatedIndicatormodulecss.default.animated, selected && _TabAnimatedIndicatormodulecss.default[vertical ? 'vertical' : 'horizontal'], state.root.className);
93
+ const rootCssVars = {
94
+ [tabIndicatorCssVars_unstable.offsetVar]: `${animationValues.offset}px`,
95
+ [tabIndicatorCssVars_unstable.scaleVar]: `${animationValues.scale}`
96
+ };
97
+ // eslint-disable-next-line react-hooks/immutability
98
+ state.root.style = {
99
+ ...rootCssVars,
100
+ ...state.root.style
101
+ };
102
+ return state;
103
+ };
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/Tab/useTabAnimatedIndicator.styles.css.ts"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport type { TabState, TabValue } from './Tab.types';\n\nimport { clsx } from 'clsx';\nimport styles from './TabAnimatedIndicator.module.css';\nimport { useTabListContext_unstable } from '../TabList/TabListContext';\nimport type { TabRegisterData } from '../TabList/TabList.types';\nimport { useAnimationFrame } from '@fluentui/react-utilities';\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nconst tabIndicatorCssVars_unstable = {\n offsetVar: '--fui-Tab__indicator--offset',\n scaleVar: '--fui-Tab__indicator--scale',\n};\n\nconst calculateTabRect = (element: HTMLElement) => {\n if (element) {\n const parentRect = element.parentElement?.getBoundingClientRect() || { x: 0, y: 0, width: 0, height: 0 };\n const tabRect = element.getBoundingClientRect();\n\n return {\n x: tabRect.x - parentRect.x,\n y: tabRect.y - parentRect.y,\n width: tabRect.width,\n height: tabRect.height,\n };\n }\n return undefined;\n};\n\nconst getRegisteredTabRect = (registeredTabs: Record<string, TabRegisterData>, value?: TabValue) => {\n const element = isValueDefined(value) ? registeredTabs[JSON.stringify(value)]?.ref.current : undefined;\n return element ? calculateTabRect(element) : undefined;\n};\n\n// eslint-disable-next-line eqeqeq\nconst isValueDefined = (value: TabValue) => value != null;\n\n/**\n * Adds additional styling to the active tab selection indicator to create a sliding animation.\n */\nexport const useTabAnimatedIndicatorStyles_unstable = (state: TabState): TabState => {\n const { disabled, selected, vertical } = state;\n\n const [lastAnimatedFrom, setLastAnimatedFrom] = React.useState<TabValue>();\n const [animationValues, setAnimationValues] = React.useState({ offset: 0, scale: 1 });\n const getRegisteredTabs = useTabListContext_unstable(ctx => ctx.getRegisteredTabs);\n\n const [requestAnimationFrame] = useAnimationFrame();\n\n if (selected) {\n const { previousSelectedValue, selectedValue, registeredTabs } = getRegisteredTabs();\n\n if (isValueDefined(previousSelectedValue) && lastAnimatedFrom !== previousSelectedValue) {\n const previousSelectedTabRect = getRegisteredTabRect(registeredTabs, previousSelectedValue);\n const selectedTabRect = getRegisteredTabRect(registeredTabs, selectedValue);\n\n if (selectedTabRect && previousSelectedTabRect) {\n const offset = vertical\n ? previousSelectedTabRect.y - selectedTabRect.y\n : previousSelectedTabRect.x - selectedTabRect.x;\n\n const scale = vertical\n ? previousSelectedTabRect.height / selectedTabRect.height\n : previousSelectedTabRect.width / selectedTabRect.width;\n\n setAnimationValues({ offset, scale });\n setLastAnimatedFrom(previousSelectedValue);\n\n // Reset the animation values after the animation is complete\n requestAnimationFrame(() => setAnimationValues({ offset: 0, scale: 1 }));\n }\n }\n } else if (isValueDefined(lastAnimatedFrom)) {\n // need to clear the last animated from so that if this tab is selected again\n // from the same previous tab as last time, that animation still happens.\n setLastAnimatedFrom(undefined);\n }\n\n // do not apply any animation if the tab is disabled\n if (disabled) {\n return state;\n }\n\n // the animation should only happen as the selection indicator returns to its\n // original position and not when set at the previous tabs position.\n const animating = animationValues.offset === 0 && animationValues.scale === 1;\n\n // eslint-disable-next-line react-hooks/immutability\n state.root.className = clsx(\n selected && styles.base,\n selected && animating && styles.animated,\n selected && styles[vertical ? 'vertical' : 'horizontal'],\n state.root.className,\n );\n\n const rootCssVars = {\n [tabIndicatorCssVars_unstable.offsetVar]: `${animationValues.offset}px`,\n [tabIndicatorCssVars_unstable.scaleVar]: `${animationValues.scale}`,\n };\n\n // eslint-disable-next-line react-hooks/immutability\n state.root.style = {\n ...rootCssVars,\n ...state.root.style,\n };\n\n return state;\n};\n"],"names":["React","clsx","styles","useTabListContext_unstable","useAnimationFrame","tabIndicatorCssVars_unstable","offsetVar","scaleVar","calculateTabRect","element","parentRect","parentElement","getBoundingClientRect","x","y","width","height","tabRect","undefined","getRegisteredTabRect","registeredTabs","value","isValueDefined","JSON","stringify","ref","current","useTabAnimatedIndicatorStyles_unstable","state","disabled","selected","vertical","lastAnimatedFrom","setLastAnimatedFrom","useState","animationValues","setAnimationValues","offset","scale","getRegisteredTabs","ctx","requestAnimationFrame","previousSelectedValue","selectedValue","previousSelectedTabRect","selectedTabRect","animating","root","className","base","animated","rootCssVars","style"],"mappings":"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"}
@@ -6,26 +6,26 @@ Object.defineProperty(exports, "__esModule", {
6
6
  function _export(target, all) {
7
7
  for(var name in all)Object.defineProperty(target, name, {
8
8
  enumerable: true,
9
- get: all[name]
9
+ get: Object.getOwnPropertyDescriptor(all, name).get
10
10
  });
11
11
  }
12
12
  _export(exports, {
13
- tabClassNames: function() {
13
+ get tabClassNames () {
14
14
  return tabClassNames;
15
15
  },
16
- tabReservedSpaceClassNames: function() {
16
+ get tabReservedSpaceClassNames () {
17
17
  return tabReservedSpaceClassNames;
18
18
  },
19
- useTabButtonStyles_unstable: function() {
19
+ get useTabButtonStyles_unstable () {
20
20
  return useTabButtonStyles_unstable;
21
21
  },
22
- useTabContentStyles_unstable: function() {
22
+ get useTabContentStyles_unstable () {
23
23
  return useTabContentStyles_unstable;
24
24
  },
25
- useTabIndicatorStyles_unstable: function() {
25
+ get useTabIndicatorStyles_unstable () {
26
26
  return useTabIndicatorStyles_unstable;
27
27
  },
28
- useTabStyles_unstable: function() {
28
+ get useTabStyles_unstable () {
29
29
  return useTabStyles_unstable;
30
30
  }
31
31
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["useTabStyles.styles.js"],"sourcesContent":["'use client';\nimport { makeStyles, mergeClasses, shorthands } from \"@griffel/react\";\nimport { createCustomFocusIndicatorStyle } from \"@fluentui/react-tabster\";\nimport { tokens, typographyStyles } from \"@fluentui/react-theme\";\nimport { useTabAnimatedIndicatorStyles_unstable } from \"./useTabAnimatedIndicator.styles.js\";\nexport const tabClassNames = {\n root: 'fui-Tab',\n icon: 'fui-Tab__icon',\n content: 'fui-Tab__content'\n};\nexport const tabReservedSpaceClassNames = {\n content: 'fui-Tab__content--reserved-space'\n};\n// These should match the constants defined in @fluentui/react-icons\n// This package avoids taking a dependency on the icons package for only the constants.\nconst iconClassNames = {\n filled: 'fui-Icon-filled',\n regular: 'fui-Icon-regular'\n};\n/**\n * Styles for the root slot\n */ const useRootStyles = makeStyles({\n root: {\n alignItems: 'center',\n display: 'grid',\n flexShrink: 0,\n gridAutoFlow: 'column',\n gridTemplateColumns: 'auto',\n gridTemplateRows: 'auto',\n outlineStyle: 'none',\n position: 'relative'\n },\n button: {\n alignItems: 'center',\n border: 'none',\n borderRadius: tokens.borderRadiusMedium,\n cursor: 'pointer',\n display: 'grid',\n flexShrink: 0,\n gridAutoFlow: 'column',\n gridTemplateColumns: 'auto',\n gridTemplateRows: 'auto',\n fontFamily: tokens.fontFamilyBase,\n lineHeight: tokens.lineHeightBase300,\n outlineStyle: 'none',\n position: 'relative',\n overflow: 'hidden',\n textTransform: 'none'\n },\n horizontal: {\n justifyContent: 'center'\n },\n vertical: {\n justifyContent: 'start'\n },\n smallHorizontal: {\n columnGap: tokens.spacingHorizontalXXS,\n padding: `${tokens.spacingVerticalSNudge} ${tokens.spacingHorizontalSNudge}`\n },\n smallVertical: {\n // horizontal spacing is deliberate. This is the gap between icon and content.\n columnGap: tokens.spacingHorizontalXXS,\n padding: `${tokens.spacingVerticalXXS} ${tokens.spacingHorizontalSNudge}`\n },\n mediumHorizontal: {\n columnGap: tokens.spacingHorizontalSNudge,\n padding: `${tokens.spacingVerticalM} ${tokens.spacingHorizontalMNudge}`\n },\n mediumVertical: {\n // horizontal spacing is deliberate. This is the gap between icon and content.\n columnGap: tokens.spacingHorizontalSNudge,\n padding: `${tokens.spacingVerticalSNudge} ${tokens.spacingHorizontalMNudge}`\n },\n largeHorizontal: {\n columnGap: tokens.spacingHorizontalSNudge,\n padding: `${tokens.spacingVerticalL} ${tokens.spacingHorizontalMNudge}`\n },\n largeVertical: {\n // horizontal spacing is deliberate. This is the gap between icon and content.\n columnGap: tokens.spacingHorizontalSNudge,\n padding: `${tokens.spacingVerticalS} ${tokens.spacingHorizontalMNudge}`\n },\n transparent: {\n backgroundColor: tokens.colorTransparentBackground,\n ':enabled:hover': {\n backgroundColor: tokens.colorTransparentBackgroundHover\n },\n ':enabled:active': {\n backgroundColor: tokens.colorTransparentBackgroundPressed\n },\n [`& .${tabClassNames.icon}`]: {\n color: tokens.colorNeutralForeground2\n },\n [`:enabled:hover .${tabClassNames.icon}`]: {\n color: tokens.colorNeutralForeground2Hover\n },\n [`:enabled:active .${tabClassNames.icon}`]: {\n color: tokens.colorNeutralForeground2Pressed\n },\n [`& .${tabClassNames.content}`]: {\n color: tokens.colorNeutralForeground2\n },\n [`:enabled:hover .${tabClassNames.content}`]: {\n color: tokens.colorNeutralForeground2Hover\n },\n [`:enabled:active .${tabClassNames.content}`]: {\n color: tokens.colorNeutralForeground2Pressed\n }\n },\n subtle: {\n backgroundColor: tokens.colorSubtleBackground,\n ':enabled:hover': {\n backgroundColor: tokens.colorSubtleBackgroundHover\n },\n ':enabled:active': {\n backgroundColor: tokens.colorSubtleBackgroundPressed\n },\n [`& .${tabClassNames.icon}`]: {\n color: tokens.colorNeutralForeground2\n },\n [`:enabled:hover .${tabClassNames.icon}`]: {\n color: tokens.colorNeutralForeground2Hover\n },\n [`:enabled:active .${tabClassNames.icon}`]: {\n color: tokens.colorNeutralForeground2Pressed\n },\n [`& .${tabClassNames.content}`]: {\n color: tokens.colorNeutralForeground2\n },\n [`:enabled:hover .${tabClassNames.content}`]: {\n color: tokens.colorNeutralForeground2Hover\n },\n [`:enabled:active .${tabClassNames.content}`]: {\n color: tokens.colorNeutralForeground2Pressed\n }\n },\n disabledCursor: {\n cursor: 'not-allowed'\n },\n disabled: {\n backgroundColor: tokens.colorTransparentBackground,\n [`& .${tabClassNames.icon}`]: {\n color: tokens.colorNeutralForegroundDisabled\n },\n [`& .${tabClassNames.content}`]: {\n color: tokens.colorNeutralForegroundDisabled\n }\n },\n selected: {\n [`& .${tabClassNames.icon}`]: {\n color: tokens.colorCompoundBrandForeground1\n },\n [`:enabled:hover .${tabClassNames.icon}`]: {\n color: tokens.colorCompoundBrandForeground1Hover\n },\n [`:enabled:active .${tabClassNames.icon}`]: {\n color: tokens.colorCompoundBrandForeground1Pressed\n },\n [`& .${tabClassNames.content}`]: {\n color: tokens.colorNeutralForeground1\n },\n [`:enabled:hover .${tabClassNames.content}`]: {\n color: tokens.colorNeutralForeground1Hover\n },\n [`:enabled:active .${tabClassNames.content}`]: {\n color: tokens.colorNeutralForeground1Pressed\n }\n }\n});\nconst useCircularAppearanceStyles = makeStyles({\n base: {\n borderRadius: tokens.borderRadiusCircular,\n border: `solid ${tokens.strokeWidthThin} ${tokens.colorTransparentStroke}`,\n [`& .${tabClassNames.icon}`]: {\n color: 'inherit'\n },\n [`& .${tabClassNames.content}`]: {\n color: 'inherit'\n }\n },\n small: {\n paddingBlock: `calc(${tokens.spacingVerticalXXS} - ${tokens.strokeWidthThin})`\n },\n medium: {\n paddingBlock: `calc(${tokens.spacingVerticalSNudge} - ${tokens.strokeWidthThin})`\n },\n large: {\n paddingBlock: `calc(${tokens.spacingVerticalS} - ${tokens.strokeWidthThin})`\n },\n subtle: {\n backgroundColor: tokens.colorSubtleBackground,\n color: tokens.colorNeutralForeground2,\n ':enabled:hover': {\n backgroundColor: tokens.colorSubtleBackgroundHover,\n border: `solid ${tokens.strokeWidthThin} ${tokens.colorNeutralStroke1Hover}`,\n color: tokens.colorNeutralForeground2Hover\n },\n ':enabled:active': {\n backgroundColor: tokens.colorSubtleBackgroundPressed,\n border: `solid ${tokens.strokeWidthThin} ${tokens.colorNeutralStroke1Pressed}`,\n color: tokens.colorNeutralForeground2Pressed\n },\n '@media (forced-colors: active)': {\n border: `solid ${tokens.strokeWidthThin} Canvas`\n }\n },\n subtleSelected: {\n backgroundColor: tokens.colorBrandBackground2,\n border: `solid ${tokens.strokeWidthThin} ${tokens.colorCompoundBrandStroke}`,\n color: tokens.colorBrandForeground2,\n ':enabled:hover': {\n backgroundColor: tokens.colorBrandBackground2Hover,\n border: `solid ${tokens.strokeWidthThin} ${tokens.colorCompoundBrandStrokeHover}`,\n color: tokens.colorBrandForeground2Hover\n },\n ':enabled:active': {\n backgroundColor: tokens.colorBrandBackground2Pressed,\n border: `solid ${tokens.strokeWidthThin} ${tokens.colorCompoundBrandStrokePressed}`,\n color: tokens.colorBrandForeground2Pressed\n },\n '@media (forced-colors: active)': {\n border: `solid ${tokens.strokeWidthThin} Highlight`\n }\n },\n subtleDisabled: {\n backgroundColor: tokens.colorSubtleBackground,\n color: tokens.colorNeutralForegroundDisabled\n },\n subtleDisabledSelected: {\n backgroundColor: tokens.colorNeutralBackgroundDisabled,\n border: `solid ${tokens.strokeWidthThin} ${tokens.colorNeutralStrokeDisabled}`,\n color: tokens.colorNeutralForegroundDisabled\n },\n filled: {\n backgroundColor: tokens.colorNeutralBackground3,\n color: tokens.colorNeutralForeground2,\n ':enabled:hover': {\n backgroundColor: tokens.colorNeutralBackground3Hover,\n color: tokens.colorNeutralForeground2Hover\n },\n ':enabled:active': {\n backgroundColor: tokens.colorNeutralBackground3Pressed,\n color: tokens.colorNeutralForeground2Pressed\n },\n '@media (forced-colors: active)': {\n ':enabled:hover': {\n backgroundColor: 'Highlight',\n forcedColorAdjust: 'none',\n [`& .${tabClassNames.content}`]: {\n color: 'HighlightText'\n },\n [`& .${iconClassNames.filled}`]: {\n color: 'HighlightText'\n },\n [`& .${iconClassNames.regular}`]: {\n color: 'HighlightText'\n }\n }\n }\n },\n filledSelected: {\n backgroundColor: tokens.colorBrandBackground,\n color: tokens.colorNeutralForegroundOnBrand,\n ':enabled:hover': {\n backgroundColor: tokens.colorBrandBackgroundHover,\n color: tokens.colorNeutralForegroundOnBrand\n },\n ':enabled:active': {\n backgroundColor: tokens.colorBrandBackgroundPressed,\n color: tokens.colorNeutralForegroundOnBrand\n },\n '@media (forced-colors: active)': {\n ':enabled': {\n backgroundColor: 'ButtonText',\n [`& .${tabClassNames.content}`]: {\n color: 'ButtonFace',\n forcedColorAdjust: 'none'\n }\n },\n [`:enabled .${tabClassNames.icon}`]: {\n color: 'ButtonFace'\n }\n }\n },\n filledDisabled: {\n backgroundColor: tokens.colorNeutralBackgroundDisabled,\n color: tokens.colorNeutralForegroundDisabled\n },\n filledDisabledSelected: {\n backgroundColor: tokens.colorNeutralBackgroundDisabled,\n border: `solid ${tokens.strokeWidthThin} ${tokens.colorNeutralStrokeDisabled}`,\n color: tokens.colorNeutralForegroundDisabled\n }\n});\n/**\n * Focus styles for the root slot\n */ const useFocusStyles = makeStyles({\n // Tab creates a custom focus indicator because the default focus indicator\n // is applied using an ::after pseudo-element on the root. Since the selection\n // indicator uses an ::after pseudo-element on the root, there is a conflict.\n base: createCustomFocusIndicatorStyle({\n ...shorthands.borderColor('transparent'),\n outlineWidth: tokens.strokeWidthThick,\n outlineColor: 'transparent',\n outlineStyle: 'solid',\n boxShadow: `\n ${tokens.shadow4},\n 0 0 0 ${tokens.strokeWidthThick} ${tokens.colorStrokeFocus2}\n `,\n zIndex: 1\n }, {\n enableOutline: true\n }),\n circular: createCustomFocusIndicatorStyle({\n ...shorthands.borderColor('transparent'),\n outlineWidth: tokens.strokeWidthThick,\n outlineColor: 'transparent',\n outlineStyle: 'solid',\n boxShadow: `\n ${tokens.shadow4},\n 0 0 0 ${tokens.strokeWidthThick} ${tokens.colorStrokeFocus2},\n 0 0 0 ${tokens.strokeWidthThin} ${tokens.colorNeutralStrokeOnBrand} inset\n `,\n zIndex: 1\n }, {\n enableOutline: true\n })\n});\n/** Indicator styles for when pending selection */ const usePendingIndicatorStyles = makeStyles({\n base: {\n ':hover::before': {\n backgroundColor: tokens.colorNeutralStroke1Hover,\n borderRadius: tokens.borderRadiusCircular,\n content: '\"\"',\n position: 'absolute'\n },\n ':active::before': {\n backgroundColor: tokens.colorNeutralStroke1Pressed,\n borderRadius: tokens.borderRadiusCircular,\n content: '\"\"',\n position: 'absolute'\n },\n '@media (forced-colors: active)': {\n ':hover::before': {\n backgroundColor: 'Highlight'\n },\n ':active::before': {\n backgroundColor: 'Highlight'\n }\n }\n },\n disabled: {\n ':hover::before': {\n backgroundColor: tokens.colorTransparentStroke\n },\n ':active::before': {\n backgroundColor: tokens.colorTransparentStroke\n },\n '@media (forced-colors: active)': {\n ':hover::before': {\n backgroundColor: 'transparent'\n },\n ':active::before': {\n backgroundColor: 'transparent'\n }\n }\n },\n smallHorizontal: {\n '::before': {\n bottom: 0,\n height: tokens.strokeWidthThick,\n left: tokens.spacingHorizontalSNudge,\n right: tokens.spacingHorizontalSNudge\n }\n },\n smallVertical: {\n '::before': {\n bottom: tokens.spacingVerticalXS,\n left: 0,\n top: tokens.spacingVerticalXS,\n width: tokens.strokeWidthThicker\n }\n },\n mediumHorizontal: {\n '::before': {\n bottom: 0,\n height: tokens.strokeWidthThicker,\n left: tokens.spacingHorizontalM,\n right: tokens.spacingHorizontalM\n }\n },\n mediumVertical: {\n '::before': {\n bottom: tokens.spacingVerticalS,\n left: 0,\n top: tokens.spacingVerticalS,\n width: tokens.strokeWidthThicker\n }\n },\n largeHorizontal: {\n '::before': {\n bottom: 0,\n height: tokens.strokeWidthThicker,\n left: tokens.spacingHorizontalM,\n right: tokens.spacingHorizontalM\n }\n },\n largeVertical: {\n '::before': {\n bottom: tokens.spacingVerticalMNudge,\n left: 0,\n top: tokens.spacingVerticalMNudge,\n width: tokens.strokeWidthThicker\n }\n }\n});\nconst useActiveIndicatorStyles = makeStyles({\n base: {\n '::after': {\n backgroundColor: tokens.colorTransparentStroke,\n borderRadius: tokens.borderRadiusCircular,\n content: '\"\"',\n position: 'absolute'\n }\n },\n selected: {\n '::after': {\n backgroundColor: tokens.colorCompoundBrandStroke\n },\n ':enabled:hover::after': {\n backgroundColor: tokens.colorCompoundBrandStrokeHover\n },\n ':enabled:active::after': {\n backgroundColor: tokens.colorCompoundBrandStrokePressed\n },\n '@media (forced-colors: active)': {\n '::after': {\n backgroundColor: 'ButtonText'\n },\n ':enabled:hover::after': {\n backgroundColor: 'ButtonText'\n },\n ':enabled:active::after': {\n backgroundColor: 'ButtonText'\n }\n }\n },\n disabled: {\n '::after': {\n backgroundColor: tokens.colorNeutralForegroundDisabled\n }\n },\n smallHorizontal: {\n '::after': {\n bottom: 0,\n height: tokens.strokeWidthThick,\n left: tokens.spacingHorizontalSNudge,\n right: tokens.spacingHorizontalSNudge\n }\n },\n smallVertical: {\n '::after': {\n bottom: tokens.spacingVerticalXS,\n left: '0',\n top: tokens.spacingVerticalXS,\n width: tokens.strokeWidthThicker\n }\n },\n mediumHorizontal: {\n '::after': {\n bottom: '0',\n height: tokens.strokeWidthThicker,\n left: tokens.spacingHorizontalM,\n right: tokens.spacingHorizontalM\n }\n },\n mediumVertical: {\n '::after': {\n bottom: tokens.spacingVerticalS,\n left: 0,\n top: tokens.spacingVerticalS,\n width: tokens.strokeWidthThicker\n }\n },\n largeHorizontal: {\n '::after': {\n bottom: 0,\n height: tokens.strokeWidthThicker,\n left: tokens.spacingHorizontalM,\n right: tokens.spacingHorizontalM\n }\n },\n largeVertical: {\n '::after': {\n bottom: tokens.spacingVerticalMNudge,\n left: 0,\n top: tokens.spacingVerticalMNudge,\n width: tokens.strokeWidthThicker\n }\n }\n});\n/**\n * Styles for the icon slot.\n */ const useIconStyles = makeStyles({\n base: {\n gridColumnStart: 1,\n gridRowStart: 1,\n alignItems: 'center',\n display: 'inline-flex',\n justifyContent: 'center',\n overflow: 'hidden',\n [`& .${iconClassNames.filled}`]: {\n display: 'none'\n },\n [`& .${iconClassNames.regular}`]: {\n display: 'inline'\n }\n },\n // per design, the small and medium font sizes are the same.\n // the size prop only affects spacing.\n small: {\n fontSize: '20px',\n height: '20px',\n width: '20px'\n },\n medium: {\n fontSize: '20px',\n height: '20px',\n width: '20px'\n },\n large: {\n fontSize: '24px',\n height: '24px',\n width: '24px'\n },\n selected: {\n [`& .${iconClassNames.filled}`]: {\n display: 'inline'\n },\n [`& .${iconClassNames.regular}`]: {\n display: 'none'\n }\n }\n});\n/**\n * Styles for the content slot (children)\n */ const useContentStyles = makeStyles({\n base: {\n ...typographyStyles.body1,\n overflow: 'hidden',\n // content padding is the same for medium & small, horizontal & vertical\n padding: `${tokens.spacingVerticalNone} ${tokens.spacingHorizontalXXS}`\n },\n selected: {\n ...typographyStyles.body1Strong\n },\n large: {\n ...typographyStyles.body2\n },\n largeSelected: {\n ...typographyStyles.subtitle2\n },\n noIconBefore: {\n gridColumnStart: 1,\n gridRowStart: 1\n },\n iconBefore: {\n gridColumnStart: 2,\n gridRowStart: 1\n },\n placeholder: {\n visibility: 'hidden'\n }\n});\n/**\n * Apply styling to the Tab slots based on the state\n */ export const useTabStyles_unstable = (state)=>{\n 'use no memo'; // justified: compiler would optimize useTabStyles_unstable — manual opt-out to preserve runtime behavior\n useTabIndicatorStyles_unstable(state);\n useTabButtonStyles_unstable(state, state.root);\n useTabContentStyles_unstable(state);\n return state;\n};\n/**\n * Applies styles for the Tab indicator based on its current state.\n *\n * This hook is typically used internally by `useTabStyles_unstable`. You should\n * only use it directly if you're creating a custom `Tab` component.\n *\n * @param state - The `Tab` component's current state\n * @returns The state object with updated button styles\n */ export const useTabIndicatorStyles_unstable = (state)=>{\n const rootStyles = useRootStyles();\n const pendingIndicatorStyles = usePendingIndicatorStyles();\n const activeIndicatorStyles = useActiveIndicatorStyles();\n const { appearance, disabled, selected, size, vertical } = state;\n const classes = [\n tabClassNames.root,\n rootStyles.root\n ];\n if (appearance !== 'subtle-circular' && appearance !== 'filled-circular') {\n classes.push(// pending indicator (before pseudo element)\n pendingIndicatorStyles.base, size === 'small' && (vertical ? pendingIndicatorStyles.smallVertical : pendingIndicatorStyles.smallHorizontal), size === 'medium' && (vertical ? pendingIndicatorStyles.mediumVertical : pendingIndicatorStyles.mediumHorizontal), size === 'large' && (vertical ? pendingIndicatorStyles.largeVertical : pendingIndicatorStyles.largeHorizontal), disabled && pendingIndicatorStyles.disabled, // active indicator (after pseudo element)\n selected && activeIndicatorStyles.base, selected && !disabled && activeIndicatorStyles.selected, selected && size === 'small' && (vertical ? activeIndicatorStyles.smallVertical : activeIndicatorStyles.smallHorizontal), selected && size === 'medium' && (vertical ? activeIndicatorStyles.mediumVertical : activeIndicatorStyles.mediumHorizontal), selected && size === 'large' && (vertical ? activeIndicatorStyles.largeVertical : activeIndicatorStyles.largeHorizontal), selected && disabled && activeIndicatorStyles.disabled);\n }\n // eslint-disable-next-line react-hooks/immutability\n state.root.className = mergeClasses(...classes, state.root.className);\n useTabAnimatedIndicatorStyles_unstable(state);\n return state;\n};\n/**\n * Applies styles to the Tab button slot based on its current state.\n *\n * This hook is typically used internally by `useTabStyles_unstable`. You should\n * only use it directly if you're creating a custom `Tab` component.\n *\n * @param state - The Tab component's current state\n * @param slot - The button slot of the Tab component\n * @returns The state object with updated button styles\n */ export const useTabButtonStyles_unstable = (state, slot)=>{\n const rootStyles = useRootStyles();\n const focusStyles = useFocusStyles();\n const circularStyles = useCircularAppearanceStyles();\n const { appearance, disabled, selected, size, vertical } = state;\n const isSubtleCircular = appearance === 'subtle-circular';\n const isFilledCircular = appearance === 'filled-circular';\n const isCircular = isSubtleCircular || isFilledCircular;\n const circularAppearance = [\n circularStyles.base,\n focusStyles.circular,\n // sizes\n size === 'small' && circularStyles.small,\n size === 'medium' && circularStyles.medium,\n size === 'large' && circularStyles.large,\n // subtle-circular appearance\n isSubtleCircular && circularStyles.subtle,\n selected && isSubtleCircular && circularStyles.subtleSelected,\n disabled && isSubtleCircular && circularStyles.subtleDisabled,\n selected && disabled && isSubtleCircular && circularStyles.subtleDisabledSelected,\n // filled-circular appearance\n isFilledCircular && circularStyles.filled,\n selected && isFilledCircular && circularStyles.filledSelected,\n disabled && isFilledCircular && circularStyles.filledDisabled,\n selected && disabled && isFilledCircular && circularStyles.filledDisabledSelected\n ];\n const regularAppearance = [\n focusStyles.base,\n !disabled && appearance === 'subtle' && rootStyles.subtle,\n !disabled && appearance === 'transparent' && rootStyles.transparent,\n !disabled && selected && rootStyles.selected,\n disabled && rootStyles.disabled\n ];\n // eslint-disable-next-line react-hooks/immutability\n slot.className = mergeClasses(rootStyles.button, // orientation\n vertical ? rootStyles.vertical : rootStyles.horizontal, // size\n size === 'small' && (vertical ? rootStyles.smallVertical : rootStyles.smallHorizontal), size === 'medium' && (vertical ? rootStyles.mediumVertical : rootStyles.mediumHorizontal), size === 'large' && (vertical ? rootStyles.largeVertical : rootStyles.largeHorizontal), ...isCircular ? circularAppearance : regularAppearance, disabled && rootStyles.disabledCursor, slot.className);\n return state;\n};\n/**\n * Applies styles to the Tab content slot based on its current state.\n *\n * This hook is typically used internally by `useTabStyles_unstable`. You should\n * only use it directly if you're creating a custom `Tab` component.\n *\n * @param state - The Tab component's current state\n * @returns The state object with updated content styles\n */ export const useTabContentStyles_unstable = (state)=>{\n const iconStyles = useIconStyles();\n const contentStyles = useContentStyles();\n const { selected, size } = state;\n if (state.icon) {\n // eslint-disable-next-line react-hooks/immutability\n state.icon.className = mergeClasses(tabClassNames.icon, iconStyles.base, iconStyles[size], selected && iconStyles.selected, state.icon.className);\n }\n // This needs to be before state.content.className is updated\n if (state.contentReservedSpace) {\n // eslint-disable-next-line react-hooks/immutability\n state.contentReservedSpace.className = mergeClasses(tabReservedSpaceClassNames.content, contentStyles.base, size === 'large' ? contentStyles.largeSelected : contentStyles.selected, state.icon ? contentStyles.iconBefore : contentStyles.noIconBefore, contentStyles.placeholder, state.content.className);\n // FIXME: this is a deprecated API\n // should be removed in the next major version\n // eslint-disable-next-line @typescript-eslint/no-deprecated, react-hooks/immutability\n state.contentReservedSpaceClassName = state.contentReservedSpace.className;\n }\n // eslint-disable-next-line react-hooks/immutability\n state.content.className = mergeClasses(tabClassNames.content, contentStyles.base, size === 'large' && contentStyles.large, selected && (size === 'large' ? contentStyles.largeSelected : contentStyles.selected), state.icon ? contentStyles.iconBefore : contentStyles.noIconBefore, state.content.className);\n return state;\n};\n"],"names":["__styles","mergeClasses","shorthands","createCustomFocusIndicatorStyle","tokens","typographyStyles","useTabAnimatedIndicatorStyles_unstable","tabClassNames","root","icon","content","tabReservedSpaceClassNames","iconClassNames","filled","regular","useRootStyles","Bt984gj","mc9l5x","Bnnss6s","Bxotwcr","Budl1dq","wkccdc","oeaueh","qhf8xq","button","Bgfg5da","B9xav0g","oivjwe","Bn0qgzm","B4g9neb","zhjwy3","wvpqe5","ibv6hh","u1mtju","h3c5rm","vrafjx","Bekrc4i","i8vvqc","g2u3we","icvyot","B4j52fo","irswps","Beyfa6y","Bbmb7ep","Btl43ni","B7oj6ja","Dimara","Bceei9c","Bahqtrf","Bg96gwp","B68tc82","Bmxbyg5","Bpg54ce","B9bfxx9","horizontal","Brf1p80","vertical","smallHorizontal","i8kkvl","Byoj8tv","uwmqm3","z189sj","z8tnut","B0ocmuz","smallVertical","mediumHorizontal","mediumVertical","largeHorizontal","largeVertical","transparent","De3pzq","B95qlz1","B7xitij","Bptxc3x","Bwqhzpy","iyk698","cl4aha","B0q3jbp","Be9ayug","subtle","disabledCursor","disabled","selected","d","p","useCircularAppearanceStyles","base","small","Dbcxam","rjzwhg","Bblux5w","medium","large","sj55zd","Eo63ln","r9osk6","Itrz8y","zeg6vx","l65xgk","Bw4olcx","Folb0i","I2h8y4","Bgxgoyi","Bvlkotb","Fwyncl","Byh5edv","Becqvjq","uumbiq","B73q3dg","Bblwbaf","B0ezav","r4wkhp","d3wsvi","Hdqn7s","zu5y1p","owqphb","g9c53k","Btmu08z","Bthxvy6","gluvuq","tb88gp","wns6jk","kdfdk4","Bbw008l","Bayi1ib","B1kkfu3","J1oqyp","kem6az","goa3yj","p743kt","wmvzou","sc4o1m","wymq9i","u9orzk","puiv5t","Bosien3","b2z72d","Beulxaw","B57pkaw","Jcjdmf","B8qgbzl","Bbmb0sr","B14q8qp","Bcq6wej","Byz1pjr","kr9cjb","Ff9ifp","subtleSelected","subtleDisabled","subtleDisabledSelected","Hhssn","uaurb9","B401qx7","Buyp1jb","gsp74p","filledSelected","Gedr8k","Bm69vlq","Bodipah","B5kpen0","filledDisabled","filledDisabledSelected","m","useFocusStyles","B8q5s1w","Bci5o5g","n8qw10","Bdrgwmp","Bn4voq9","Bfpq7zp","g9k6zt","j6ew2k","Bhxq17a","circular","usePendingIndicatorStyles","az7l2e","vqofr","Bv4n3vi","Bgqb9hq","B0uxbk8","Bf3jju6","amg5m6","zkfqfm","Bkydozb","Bka2azo","vzq8l0","csmgbd","Br4ovkg","aelrif","y36c18","B1ctymy","xzc5d","h5yqg8","lawp4y","Baz25je","Fbdkly","mdwyqc","Bciustq","Ccq8qp","h","a","useActiveIndicatorStyles","Bjyk6c5","d9w3h3","B3778ie","B4j8arr","Bl18szs","Blrzh8d","Bsft5z2","E3zdtr","Bej4dhw","B7wqxwa","Hwb57","Beg08s0","Bo27r1v","By385i5","Dlnsje","Eqx8gd","B1piin3","bn5sak","a2br6o","useIconStyles","Br312pm","Ijaq50","D0sxk3","t6yez3","Be2twd7","Bqenvij","a9b677","useContentStyles","Bhrd7zp","largeSelected","noIconBefore","iconBefore","placeholder","Bcdw1i0","useTabStyles_unstable","state","useTabIndicatorStyles_unstable","useTabButtonStyles_unstable","useTabContentStyles_unstable","rootStyles","pendingIndicatorStyles","activeIndicatorStyles","appearance","size","classes","push","className","slot","focusStyles","circularStyles","isSubtleCircular","isFilledCircular","isCircular","circularAppearance","regularAppearance","iconStyles","contentStyles","contentReservedSpace","contentReservedSpaceClassName"],"mappings":"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"}
1
+ {"version":3,"sources":["useTabStyles.styles.js"],"sourcesContent":["'use client';\nimport { makeStyles, mergeClasses, shorthands } from \"@griffel/react\";\nimport { createCustomFocusIndicatorStyle } from \"@fluentui/react-tabster\";\nimport { tokens, typographyStyles } from \"@fluentui/react-theme\";\nimport { useTabAnimatedIndicatorStyles_unstable } from \"./useTabAnimatedIndicator.styles.js\";\nexport const tabClassNames = {\n root: 'fui-Tab',\n icon: 'fui-Tab__icon',\n content: 'fui-Tab__content'\n};\nexport const tabReservedSpaceClassNames = {\n content: 'fui-Tab__content--reserved-space'\n};\n// These should match the constants defined in @fluentui/react-icons\n// This package avoids taking a dependency on the icons package for only the constants.\nconst iconClassNames = {\n filled: 'fui-Icon-filled',\n regular: 'fui-Icon-regular'\n};\n/**\n * Styles for the root slot\n */ const useRootStyles = makeStyles({\n root: {\n alignItems: 'center',\n display: 'grid',\n flexShrink: 0,\n gridAutoFlow: 'column',\n gridTemplateColumns: 'auto',\n gridTemplateRows: 'auto',\n outlineStyle: 'none',\n position: 'relative'\n },\n button: {\n alignItems: 'center',\n border: 'none',\n borderRadius: tokens.borderRadiusMedium,\n cursor: 'pointer',\n display: 'grid',\n flexShrink: 0,\n gridAutoFlow: 'column',\n gridTemplateColumns: 'auto',\n gridTemplateRows: 'auto',\n fontFamily: tokens.fontFamilyBase,\n lineHeight: tokens.lineHeightBase300,\n outlineStyle: 'none',\n position: 'relative',\n overflow: 'hidden',\n textTransform: 'none'\n },\n horizontal: {\n justifyContent: 'center'\n },\n vertical: {\n justifyContent: 'start'\n },\n smallHorizontal: {\n columnGap: tokens.spacingHorizontalXXS,\n padding: `${tokens.spacingVerticalSNudge} ${tokens.spacingHorizontalSNudge}`\n },\n smallVertical: {\n // horizontal spacing is deliberate. This is the gap between icon and content.\n columnGap: tokens.spacingHorizontalXXS,\n padding: `${tokens.spacingVerticalXXS} ${tokens.spacingHorizontalSNudge}`\n },\n mediumHorizontal: {\n columnGap: tokens.spacingHorizontalSNudge,\n padding: `${tokens.spacingVerticalM} ${tokens.spacingHorizontalMNudge}`\n },\n mediumVertical: {\n // horizontal spacing is deliberate. This is the gap between icon and content.\n columnGap: tokens.spacingHorizontalSNudge,\n padding: `${tokens.spacingVerticalSNudge} ${tokens.spacingHorizontalMNudge}`\n },\n largeHorizontal: {\n columnGap: tokens.spacingHorizontalSNudge,\n padding: `${tokens.spacingVerticalL} ${tokens.spacingHorizontalMNudge}`\n },\n largeVertical: {\n // horizontal spacing is deliberate. This is the gap between icon and content.\n columnGap: tokens.spacingHorizontalSNudge,\n padding: `${tokens.spacingVerticalS} ${tokens.spacingHorizontalMNudge}`\n },\n transparent: {\n backgroundColor: tokens.colorTransparentBackground,\n ':enabled:hover': {\n backgroundColor: tokens.colorTransparentBackgroundHover\n },\n ':enabled:active': {\n backgroundColor: tokens.colorTransparentBackgroundPressed\n },\n [`& .${tabClassNames.icon}`]: {\n color: tokens.colorNeutralForeground2\n },\n [`:enabled:hover .${tabClassNames.icon}`]: {\n color: tokens.colorNeutralForeground2Hover\n },\n [`:enabled:active .${tabClassNames.icon}`]: {\n color: tokens.colorNeutralForeground2Pressed\n },\n [`& .${tabClassNames.content}`]: {\n color: tokens.colorNeutralForeground2\n },\n [`:enabled:hover .${tabClassNames.content}`]: {\n color: tokens.colorNeutralForeground2Hover\n },\n [`:enabled:active .${tabClassNames.content}`]: {\n color: tokens.colorNeutralForeground2Pressed\n }\n },\n subtle: {\n backgroundColor: tokens.colorSubtleBackground,\n ':enabled:hover': {\n backgroundColor: tokens.colorSubtleBackgroundHover\n },\n ':enabled:active': {\n backgroundColor: tokens.colorSubtleBackgroundPressed\n },\n [`& .${tabClassNames.icon}`]: {\n color: tokens.colorNeutralForeground2\n },\n [`:enabled:hover .${tabClassNames.icon}`]: {\n color: tokens.colorNeutralForeground2Hover\n },\n [`:enabled:active .${tabClassNames.icon}`]: {\n color: tokens.colorNeutralForeground2Pressed\n },\n [`& .${tabClassNames.content}`]: {\n color: tokens.colorNeutralForeground2\n },\n [`:enabled:hover .${tabClassNames.content}`]: {\n color: tokens.colorNeutralForeground2Hover\n },\n [`:enabled:active .${tabClassNames.content}`]: {\n color: tokens.colorNeutralForeground2Pressed\n }\n },\n disabledCursor: {\n cursor: 'not-allowed'\n },\n disabled: {\n backgroundColor: tokens.colorTransparentBackground,\n [`& .${tabClassNames.icon}`]: {\n color: tokens.colorNeutralForegroundDisabled\n },\n [`& .${tabClassNames.content}`]: {\n color: tokens.colorNeutralForegroundDisabled\n }\n },\n selected: {\n [`& .${tabClassNames.icon}`]: {\n color: tokens.colorCompoundBrandForeground1\n },\n [`:enabled:hover .${tabClassNames.icon}`]: {\n color: tokens.colorCompoundBrandForeground1Hover\n },\n [`:enabled:active .${tabClassNames.icon}`]: {\n color: tokens.colorCompoundBrandForeground1Pressed\n },\n [`& .${tabClassNames.content}`]: {\n color: tokens.colorNeutralForeground1\n },\n [`:enabled:hover .${tabClassNames.content}`]: {\n color: tokens.colorNeutralForeground1Hover\n },\n [`:enabled:active .${tabClassNames.content}`]: {\n color: tokens.colorNeutralForeground1Pressed\n }\n }\n});\nconst useCircularAppearanceStyles = makeStyles({\n base: {\n borderRadius: tokens.borderRadiusCircular,\n border: `solid ${tokens.strokeWidthThin} ${tokens.colorTransparentStroke}`,\n [`& .${tabClassNames.icon}`]: {\n color: 'inherit'\n },\n [`& .${tabClassNames.content}`]: {\n color: 'inherit'\n }\n },\n small: {\n paddingBlock: `calc(${tokens.spacingVerticalXXS} - ${tokens.strokeWidthThin})`\n },\n medium: {\n paddingBlock: `calc(${tokens.spacingVerticalSNudge} - ${tokens.strokeWidthThin})`\n },\n large: {\n paddingBlock: `calc(${tokens.spacingVerticalS} - ${tokens.strokeWidthThin})`\n },\n subtle: {\n backgroundColor: tokens.colorSubtleBackground,\n color: tokens.colorNeutralForeground2,\n ':enabled:hover': {\n backgroundColor: tokens.colorSubtleBackgroundHover,\n border: `solid ${tokens.strokeWidthThin} ${tokens.colorNeutralStroke1Hover}`,\n color: tokens.colorNeutralForeground2Hover\n },\n ':enabled:active': {\n backgroundColor: tokens.colorSubtleBackgroundPressed,\n border: `solid ${tokens.strokeWidthThin} ${tokens.colorNeutralStroke1Pressed}`,\n color: tokens.colorNeutralForeground2Pressed\n },\n '@media (forced-colors: active)': {\n border: `solid ${tokens.strokeWidthThin} Canvas`\n }\n },\n subtleSelected: {\n backgroundColor: tokens.colorBrandBackground2,\n border: `solid ${tokens.strokeWidthThin} ${tokens.colorCompoundBrandStroke}`,\n color: tokens.colorBrandForeground2,\n ':enabled:hover': {\n backgroundColor: tokens.colorBrandBackground2Hover,\n border: `solid ${tokens.strokeWidthThin} ${tokens.colorCompoundBrandStrokeHover}`,\n color: tokens.colorBrandForeground2Hover\n },\n ':enabled:active': {\n backgroundColor: tokens.colorBrandBackground2Pressed,\n border: `solid ${tokens.strokeWidthThin} ${tokens.colorCompoundBrandStrokePressed}`,\n color: tokens.colorBrandForeground2Pressed\n },\n '@media (forced-colors: active)': {\n border: `solid ${tokens.strokeWidthThin} Highlight`\n }\n },\n subtleDisabled: {\n backgroundColor: tokens.colorSubtleBackground,\n color: tokens.colorNeutralForegroundDisabled\n },\n subtleDisabledSelected: {\n backgroundColor: tokens.colorNeutralBackgroundDisabled,\n border: `solid ${tokens.strokeWidthThin} ${tokens.colorNeutralStrokeDisabled}`,\n color: tokens.colorNeutralForegroundDisabled\n },\n filled: {\n backgroundColor: tokens.colorNeutralBackground3,\n color: tokens.colorNeutralForeground2,\n ':enabled:hover': {\n backgroundColor: tokens.colorNeutralBackground3Hover,\n color: tokens.colorNeutralForeground2Hover\n },\n ':enabled:active': {\n backgroundColor: tokens.colorNeutralBackground3Pressed,\n color: tokens.colorNeutralForeground2Pressed\n },\n '@media (forced-colors: active)': {\n ':enabled:hover': {\n backgroundColor: 'Highlight',\n forcedColorAdjust: 'none',\n [`& .${tabClassNames.content}`]: {\n color: 'HighlightText'\n },\n [`& .${iconClassNames.filled}`]: {\n color: 'HighlightText'\n },\n [`& .${iconClassNames.regular}`]: {\n color: 'HighlightText'\n }\n }\n }\n },\n filledSelected: {\n backgroundColor: tokens.colorBrandBackground,\n color: tokens.colorNeutralForegroundOnBrand,\n ':enabled:hover': {\n backgroundColor: tokens.colorBrandBackgroundHover,\n color: tokens.colorNeutralForegroundOnBrand\n },\n ':enabled:active': {\n backgroundColor: tokens.colorBrandBackgroundPressed,\n color: tokens.colorNeutralForegroundOnBrand\n },\n '@media (forced-colors: active)': {\n ':enabled': {\n backgroundColor: 'ButtonText',\n [`& .${tabClassNames.content}`]: {\n color: 'ButtonFace',\n forcedColorAdjust: 'none'\n }\n },\n [`:enabled .${tabClassNames.icon}`]: {\n color: 'ButtonFace'\n }\n }\n },\n filledDisabled: {\n backgroundColor: tokens.colorNeutralBackgroundDisabled,\n color: tokens.colorNeutralForegroundDisabled\n },\n filledDisabledSelected: {\n backgroundColor: tokens.colorNeutralBackgroundDisabled,\n border: `solid ${tokens.strokeWidthThin} ${tokens.colorNeutralStrokeDisabled}`,\n color: tokens.colorNeutralForegroundDisabled\n }\n});\n/**\n * Focus styles for the root slot\n */ const useFocusStyles = makeStyles({\n // Tab creates a custom focus indicator because the default focus indicator\n // is applied using an ::after pseudo-element on the root. Since the selection\n // indicator uses an ::after pseudo-element on the root, there is a conflict.\n base: createCustomFocusIndicatorStyle({\n ...shorthands.borderColor('transparent'),\n outlineWidth: tokens.strokeWidthThick,\n outlineColor: 'transparent',\n outlineStyle: 'solid',\n boxShadow: `\n ${tokens.shadow4},\n 0 0 0 ${tokens.strokeWidthThick} ${tokens.colorStrokeFocus2}\n `,\n zIndex: 1\n }, {\n enableOutline: true\n }),\n circular: createCustomFocusIndicatorStyle({\n ...shorthands.borderColor('transparent'),\n outlineWidth: tokens.strokeWidthThick,\n outlineColor: 'transparent',\n outlineStyle: 'solid',\n boxShadow: `\n ${tokens.shadow4},\n 0 0 0 ${tokens.strokeWidthThick} ${tokens.colorStrokeFocus2},\n 0 0 0 ${tokens.strokeWidthThin} ${tokens.colorNeutralStrokeOnBrand} inset\n `,\n zIndex: 1\n }, {\n enableOutline: true\n })\n});\n/** Indicator styles for when pending selection */ const usePendingIndicatorStyles = makeStyles({\n base: {\n ':hover::before': {\n backgroundColor: tokens.colorNeutralStroke1Hover,\n borderRadius: tokens.borderRadiusCircular,\n content: '\"\"',\n position: 'absolute'\n },\n ':active::before': {\n backgroundColor: tokens.colorNeutralStroke1Pressed,\n borderRadius: tokens.borderRadiusCircular,\n content: '\"\"',\n position: 'absolute'\n },\n '@media (forced-colors: active)': {\n ':hover::before': {\n backgroundColor: 'Highlight'\n },\n ':active::before': {\n backgroundColor: 'Highlight'\n }\n }\n },\n disabled: {\n ':hover::before': {\n backgroundColor: tokens.colorTransparentStroke\n },\n ':active::before': {\n backgroundColor: tokens.colorTransparentStroke\n },\n '@media (forced-colors: active)': {\n ':hover::before': {\n backgroundColor: 'transparent'\n },\n ':active::before': {\n backgroundColor: 'transparent'\n }\n }\n },\n smallHorizontal: {\n '::before': {\n bottom: 0,\n height: tokens.strokeWidthThick,\n left: tokens.spacingHorizontalSNudge,\n right: tokens.spacingHorizontalSNudge\n }\n },\n smallVertical: {\n '::before': {\n bottom: tokens.spacingVerticalXS,\n left: 0,\n top: tokens.spacingVerticalXS,\n width: tokens.strokeWidthThicker\n }\n },\n mediumHorizontal: {\n '::before': {\n bottom: 0,\n height: tokens.strokeWidthThicker,\n left: tokens.spacingHorizontalM,\n right: tokens.spacingHorizontalM\n }\n },\n mediumVertical: {\n '::before': {\n bottom: tokens.spacingVerticalS,\n left: 0,\n top: tokens.spacingVerticalS,\n width: tokens.strokeWidthThicker\n }\n },\n largeHorizontal: {\n '::before': {\n bottom: 0,\n height: tokens.strokeWidthThicker,\n left: tokens.spacingHorizontalM,\n right: tokens.spacingHorizontalM\n }\n },\n largeVertical: {\n '::before': {\n bottom: tokens.spacingVerticalMNudge,\n left: 0,\n top: tokens.spacingVerticalMNudge,\n width: tokens.strokeWidthThicker\n }\n }\n});\nconst useActiveIndicatorStyles = makeStyles({\n base: {\n '::after': {\n backgroundColor: tokens.colorTransparentStroke,\n borderRadius: tokens.borderRadiusCircular,\n content: '\"\"',\n position: 'absolute'\n }\n },\n selected: {\n '::after': {\n backgroundColor: tokens.colorCompoundBrandStroke\n },\n ':enabled:hover::after': {\n backgroundColor: tokens.colorCompoundBrandStrokeHover\n },\n ':enabled:active::after': {\n backgroundColor: tokens.colorCompoundBrandStrokePressed\n },\n '@media (forced-colors: active)': {\n '::after': {\n backgroundColor: 'ButtonText'\n },\n ':enabled:hover::after': {\n backgroundColor: 'ButtonText'\n },\n ':enabled:active::after': {\n backgroundColor: 'ButtonText'\n }\n }\n },\n disabled: {\n '::after': {\n backgroundColor: tokens.colorNeutralForegroundDisabled\n }\n },\n smallHorizontal: {\n '::after': {\n bottom: 0,\n height: tokens.strokeWidthThick,\n left: tokens.spacingHorizontalSNudge,\n right: tokens.spacingHorizontalSNudge\n }\n },\n smallVertical: {\n '::after': {\n bottom: tokens.spacingVerticalXS,\n left: '0',\n top: tokens.spacingVerticalXS,\n width: tokens.strokeWidthThicker\n }\n },\n mediumHorizontal: {\n '::after': {\n bottom: '0',\n height: tokens.strokeWidthThicker,\n left: tokens.spacingHorizontalM,\n right: tokens.spacingHorizontalM\n }\n },\n mediumVertical: {\n '::after': {\n bottom: tokens.spacingVerticalS,\n left: 0,\n top: tokens.spacingVerticalS,\n width: tokens.strokeWidthThicker\n }\n },\n largeHorizontal: {\n '::after': {\n bottom: 0,\n height: tokens.strokeWidthThicker,\n left: tokens.spacingHorizontalM,\n right: tokens.spacingHorizontalM\n }\n },\n largeVertical: {\n '::after': {\n bottom: tokens.spacingVerticalMNudge,\n left: 0,\n top: tokens.spacingVerticalMNudge,\n width: tokens.strokeWidthThicker\n }\n }\n});\n/**\n * Styles for the icon slot.\n */ const useIconStyles = makeStyles({\n base: {\n gridColumnStart: 1,\n gridRowStart: 1,\n alignItems: 'center',\n display: 'inline-flex',\n justifyContent: 'center',\n overflow: 'hidden',\n [`& .${iconClassNames.filled}`]: {\n display: 'none'\n },\n [`& .${iconClassNames.regular}`]: {\n display: 'inline'\n }\n },\n // per design, the small and medium font sizes are the same.\n // the size prop only affects spacing.\n small: {\n fontSize: '20px',\n height: '20px',\n width: '20px'\n },\n medium: {\n fontSize: '20px',\n height: '20px',\n width: '20px'\n },\n large: {\n fontSize: '24px',\n height: '24px',\n width: '24px'\n },\n selected: {\n [`& .${iconClassNames.filled}`]: {\n display: 'inline'\n },\n [`& .${iconClassNames.regular}`]: {\n display: 'none'\n }\n }\n});\n/**\n * Styles for the content slot (children)\n */ const useContentStyles = makeStyles({\n base: {\n ...typographyStyles.body1,\n overflow: 'hidden',\n // content padding is the same for medium & small, horizontal & vertical\n padding: `${tokens.spacingVerticalNone} ${tokens.spacingHorizontalXXS}`\n },\n selected: {\n ...typographyStyles.body1Strong\n },\n large: {\n ...typographyStyles.body2\n },\n largeSelected: {\n ...typographyStyles.subtitle2\n },\n noIconBefore: {\n gridColumnStart: 1,\n gridRowStart: 1\n },\n iconBefore: {\n gridColumnStart: 2,\n gridRowStart: 1\n },\n placeholder: {\n visibility: 'hidden'\n }\n});\n/**\n * Apply styling to the Tab slots based on the state\n */ export const useTabStyles_unstable = (state)=>{\n 'use no memo'; // justified: compiler would optimize useTabStyles_unstable — manual opt-out to preserve runtime behavior\n useTabIndicatorStyles_unstable(state);\n useTabButtonStyles_unstable(state, state.root);\n useTabContentStyles_unstable(state);\n return state;\n};\n/**\n * Applies styles for the Tab indicator based on its current state.\n *\n * This hook is typically used internally by `useTabStyles_unstable`. You should\n * only use it directly if you're creating a custom `Tab` component.\n *\n * @param state - The `Tab` component's current state\n * @returns The state object with updated button styles\n */ export const useTabIndicatorStyles_unstable = (state)=>{\n const rootStyles = useRootStyles();\n const pendingIndicatorStyles = usePendingIndicatorStyles();\n const activeIndicatorStyles = useActiveIndicatorStyles();\n const { appearance, disabled, selected, size, vertical } = state;\n const classes = [\n tabClassNames.root,\n rootStyles.root\n ];\n if (appearance !== 'subtle-circular' && appearance !== 'filled-circular') {\n classes.push(// pending indicator (before pseudo element)\n pendingIndicatorStyles.base, size === 'small' && (vertical ? pendingIndicatorStyles.smallVertical : pendingIndicatorStyles.smallHorizontal), size === 'medium' && (vertical ? pendingIndicatorStyles.mediumVertical : pendingIndicatorStyles.mediumHorizontal), size === 'large' && (vertical ? pendingIndicatorStyles.largeVertical : pendingIndicatorStyles.largeHorizontal), disabled && pendingIndicatorStyles.disabled, // active indicator (after pseudo element)\n selected && activeIndicatorStyles.base, selected && !disabled && activeIndicatorStyles.selected, selected && size === 'small' && (vertical ? activeIndicatorStyles.smallVertical : activeIndicatorStyles.smallHorizontal), selected && size === 'medium' && (vertical ? activeIndicatorStyles.mediumVertical : activeIndicatorStyles.mediumHorizontal), selected && size === 'large' && (vertical ? activeIndicatorStyles.largeVertical : activeIndicatorStyles.largeHorizontal), selected && disabled && activeIndicatorStyles.disabled);\n }\n // eslint-disable-next-line react-hooks/immutability\n state.root.className = mergeClasses(...classes, state.root.className);\n useTabAnimatedIndicatorStyles_unstable(state);\n return state;\n};\n/**\n * Applies styles to the Tab button slot based on its current state.\n *\n * This hook is typically used internally by `useTabStyles_unstable`. You should\n * only use it directly if you're creating a custom `Tab` component.\n *\n * @param state - The Tab component's current state\n * @param slot - The button slot of the Tab component\n * @returns The state object with updated button styles\n */ export const useTabButtonStyles_unstable = (state, slot)=>{\n const rootStyles = useRootStyles();\n const focusStyles = useFocusStyles();\n const circularStyles = useCircularAppearanceStyles();\n const { appearance, disabled, selected, size, vertical } = state;\n const isSubtleCircular = appearance === 'subtle-circular';\n const isFilledCircular = appearance === 'filled-circular';\n const isCircular = isSubtleCircular || isFilledCircular;\n const circularAppearance = [\n circularStyles.base,\n focusStyles.circular,\n // sizes\n size === 'small' && circularStyles.small,\n size === 'medium' && circularStyles.medium,\n size === 'large' && circularStyles.large,\n // subtle-circular appearance\n isSubtleCircular && circularStyles.subtle,\n selected && isSubtleCircular && circularStyles.subtleSelected,\n disabled && isSubtleCircular && circularStyles.subtleDisabled,\n selected && disabled && isSubtleCircular && circularStyles.subtleDisabledSelected,\n // filled-circular appearance\n isFilledCircular && circularStyles.filled,\n selected && isFilledCircular && circularStyles.filledSelected,\n disabled && isFilledCircular && circularStyles.filledDisabled,\n selected && disabled && isFilledCircular && circularStyles.filledDisabledSelected\n ];\n const regularAppearance = [\n focusStyles.base,\n !disabled && appearance === 'subtle' && rootStyles.subtle,\n !disabled && appearance === 'transparent' && rootStyles.transparent,\n !disabled && selected && rootStyles.selected,\n disabled && rootStyles.disabled\n ];\n // eslint-disable-next-line react-hooks/immutability\n slot.className = mergeClasses(rootStyles.button, // orientation\n vertical ? rootStyles.vertical : rootStyles.horizontal, // size\n size === 'small' && (vertical ? rootStyles.smallVertical : rootStyles.smallHorizontal), size === 'medium' && (vertical ? rootStyles.mediumVertical : rootStyles.mediumHorizontal), size === 'large' && (vertical ? rootStyles.largeVertical : rootStyles.largeHorizontal), ...isCircular ? circularAppearance : regularAppearance, disabled && rootStyles.disabledCursor, slot.className);\n return state;\n};\n/**\n * Applies styles to the Tab content slot based on its current state.\n *\n * This hook is typically used internally by `useTabStyles_unstable`. You should\n * only use it directly if you're creating a custom `Tab` component.\n *\n * @param state - The Tab component's current state\n * @returns The state object with updated content styles\n */ export const useTabContentStyles_unstable = (state)=>{\n const iconStyles = useIconStyles();\n const contentStyles = useContentStyles();\n const { selected, size } = state;\n if (state.icon) {\n // eslint-disable-next-line react-hooks/immutability\n state.icon.className = mergeClasses(tabClassNames.icon, iconStyles.base, iconStyles[size], selected && iconStyles.selected, state.icon.className);\n }\n // This needs to be before state.content.className is updated\n if (state.contentReservedSpace) {\n // eslint-disable-next-line react-hooks/immutability\n state.contentReservedSpace.className = mergeClasses(tabReservedSpaceClassNames.content, contentStyles.base, size === 'large' ? contentStyles.largeSelected : contentStyles.selected, state.icon ? contentStyles.iconBefore : contentStyles.noIconBefore, contentStyles.placeholder, state.content.className);\n // FIXME: this is a deprecated API\n // should be removed in the next major version\n // eslint-disable-next-line @typescript-eslint/no-deprecated, react-hooks/immutability\n state.contentReservedSpaceClassName = state.contentReservedSpace.className;\n }\n // eslint-disable-next-line react-hooks/immutability\n state.content.className = mergeClasses(tabClassNames.content, contentStyles.base, size === 'large' && contentStyles.large, selected && (size === 'large' ? contentStyles.largeSelected : contentStyles.selected), state.icon ? contentStyles.iconBefore : contentStyles.noIconBefore, state.content.className);\n return state;\n};\n"],"names":["__styles","mergeClasses","shorthands","createCustomFocusIndicatorStyle","tokens","typographyStyles","useTabAnimatedIndicatorStyles_unstable","tabClassNames","root","icon","content","tabReservedSpaceClassNames","iconClassNames","filled","regular","useRootStyles","Bt984gj","mc9l5x","Bnnss6s","Bxotwcr","Budl1dq","wkccdc","oeaueh","qhf8xq","button","Bgfg5da","B9xav0g","oivjwe","Bn0qgzm","B4g9neb","zhjwy3","wvpqe5","ibv6hh","u1mtju","h3c5rm","vrafjx","Bekrc4i","i8vvqc","g2u3we","icvyot","B4j52fo","irswps","Beyfa6y","Bbmb7ep","Btl43ni","B7oj6ja","Dimara","Bceei9c","Bahqtrf","Bg96gwp","B68tc82","Bmxbyg5","Bpg54ce","B9bfxx9","horizontal","Brf1p80","vertical","smallHorizontal","i8kkvl","Byoj8tv","uwmqm3","z189sj","z8tnut","B0ocmuz","smallVertical","mediumHorizontal","mediumVertical","largeHorizontal","largeVertical","transparent","De3pzq","B95qlz1","B7xitij","Bptxc3x","Bwqhzpy","iyk698","cl4aha","B0q3jbp","Be9ayug","subtle","disabledCursor","disabled","selected","d","p","useCircularAppearanceStyles","base","small","Dbcxam","rjzwhg","Bblux5w","medium","large","sj55zd","Eo63ln","r9osk6","Itrz8y","zeg6vx","l65xgk","Bw4olcx","Folb0i","I2h8y4","Bgxgoyi","Bvlkotb","Fwyncl","Byh5edv","Becqvjq","uumbiq","B73q3dg","Bblwbaf","B0ezav","r4wkhp","d3wsvi","Hdqn7s","zu5y1p","owqphb","g9c53k","Btmu08z","Bthxvy6","gluvuq","tb88gp","wns6jk","kdfdk4","Bbw008l","Bayi1ib","B1kkfu3","J1oqyp","kem6az","goa3yj","p743kt","wmvzou","sc4o1m","wymq9i","u9orzk","puiv5t","Bosien3","b2z72d","Beulxaw","B57pkaw","Jcjdmf","B8qgbzl","Bbmb0sr","B14q8qp","Bcq6wej","Byz1pjr","kr9cjb","Ff9ifp","subtleSelected","subtleDisabled","subtleDisabledSelected","Hhssn","uaurb9","B401qx7","Buyp1jb","gsp74p","filledSelected","Gedr8k","Bm69vlq","Bodipah","B5kpen0","filledDisabled","filledDisabledSelected","m","useFocusStyles","B8q5s1w","Bci5o5g","n8qw10","Bdrgwmp","Bn4voq9","Bfpq7zp","g9k6zt","j6ew2k","Bhxq17a","circular","usePendingIndicatorStyles","az7l2e","vqofr","Bv4n3vi","Bgqb9hq","B0uxbk8","Bf3jju6","amg5m6","zkfqfm","Bkydozb","Bka2azo","vzq8l0","csmgbd","Br4ovkg","aelrif","y36c18","B1ctymy","xzc5d","h5yqg8","lawp4y","Baz25je","Fbdkly","mdwyqc","Bciustq","Ccq8qp","h","a","useActiveIndicatorStyles","Bjyk6c5","d9w3h3","B3778ie","B4j8arr","Bl18szs","Blrzh8d","Bsft5z2","E3zdtr","Bej4dhw","B7wqxwa","Hwb57","Beg08s0","Bo27r1v","By385i5","Dlnsje","Eqx8gd","B1piin3","bn5sak","a2br6o","useIconStyles","Br312pm","Ijaq50","D0sxk3","t6yez3","Be2twd7","Bqenvij","a9b677","useContentStyles","Bhrd7zp","largeSelected","noIconBefore","iconBefore","placeholder","Bcdw1i0","useTabStyles_unstable","state","useTabIndicatorStyles_unstable","useTabButtonStyles_unstable","useTabContentStyles_unstable","rootStyles","pendingIndicatorStyles","activeIndicatorStyles","appearance","size","classes","push","className","slot","focusStyles","circularStyles","isSubtleCircular","isFilledCircular","isCircular","circularAppearance","regularAppearance","iconStyles","contentStyles","contentReservedSpace","contentReservedSpaceClassName"],"mappings":"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"}