@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
package/CHANGELOG.md CHANGED
@@ -1,23 +1,47 @@
1
1
  # Change Log - @fluentui/react-tabs
2
2
 
3
- <!-- This log was last generated on Tue, 06 Oct 2026 11:40:34 GMT and should not be manually modified. -->
3
+ <!-- This log was last generated on Sat, 31 Oct 2026 11:08:57 GMT and should not be manually modified. -->
4
4
 
5
5
  <!-- Start content -->
6
6
 
7
- ## [9.74.7-experimental.cli-api.20261006-ccaa611d58.0](https://github.com/microsoft/fluentui/tree/@fluentui/react-tabs_v9.74.7-experimental.cli-api.20261006-ccaa611d58.0)
7
+ ## [9.75.0-experimental.css-modules.20261031-810ab07afb.0](https://github.com/microsoft/fluentui/tree/@fluentui/react-tabs_v9.75.0-experimental.css-modules.20261031-810ab07afb.0)
8
8
 
9
- Tue, 06 Oct 2026 11:40:34 GMT
10
- [Compare changes](https://github.com/microsoft/fluentui/compare/@fluentui/react-tabs_v9.12.4..@fluentui/react-tabs_v9.74.7-experimental.cli-api.20261006-ccaa611d58.0)
9
+ Sat, 31 Oct 2026 11:08:57 GMT
11
10
 
12
11
  ### Changes
13
12
 
14
- - Release 9.74.7-experimental.cli-api.20261006-ccaa611d58 ([commit](https://github.com/microsoft/fluentui/commit/undefined) by 257645319+office-ogx-auth-helper[bot]@users.noreply.github.com)
15
- - Bump @fluentui/react-context-selector to v9.74.7-experimental.cli-api.20261006-ccaa611d58.0 ([commit](https://github.com/microsoft/fluentui/commit/undefined) by beachball)
16
- - Bump @fluentui/react-jsx-runtime to v9.74.7-experimental.cli-api.20261006-ccaa611d58.0 ([commit](https://github.com/microsoft/fluentui/commit/undefined) by beachball)
17
- - Bump @fluentui/react-shared-contexts to v9.74.7-experimental.cli-api.20261006-ccaa611d58.0 ([commit](https://github.com/microsoft/fluentui/commit/undefined) by beachball)
18
- - Bump @fluentui/react-tabster to v9.74.7-experimental.cli-api.20261006-ccaa611d58.0 ([commit](https://github.com/microsoft/fluentui/commit/undefined) by beachball)
19
- - Bump @fluentui/react-theme to v9.74.7-experimental.cli-api.20261006-ccaa611d58.0 ([commit](https://github.com/microsoft/fluentui/commit/undefined) by beachball)
20
- - Bump @fluentui/react-utilities to v9.74.7-experimental.cli-api.20261006-ccaa611d58.0 ([commit](https://github.com/microsoft/fluentui/commit/undefined) by beachball)
13
+ - Release 9.75.0-experimental.css-modules.20261031-810ab07afb ([commit](https://github.com/microsoft/fluentui/commit/undefined) by 257645319+office-ogx-auth-helper[bot]@users.noreply.github.com)
14
+ - Bump @fluentui/react-context-selector to v9.75.0-experimental.css-modules.20261031-810ab07afb.0 ([commit](https://github.com/microsoft/fluentui/commit/undefined) by beachball)
15
+ - Bump @fluentui/react-jsx-runtime to v9.75.0-experimental.css-modules.20261031-810ab07afb.0 ([commit](https://github.com/microsoft/fluentui/commit/undefined) by beachball)
16
+ - Bump @fluentui/react-shared-contexts to v9.75.0-experimental.css-modules.20261031-810ab07afb.0 ([commit](https://github.com/microsoft/fluentui/commit/undefined) by beachball)
17
+ - Bump @fluentui/react-tabster to v9.75.0-experimental.css-modules.20261031-810ab07afb.0 ([commit](https://github.com/microsoft/fluentui/commit/undefined) by beachball)
18
+ - Bump @fluentui/react-theme to v9.75.0-experimental.css-modules.20261031-810ab07afb.0 ([commit](https://github.com/microsoft/fluentui/commit/undefined) by beachball)
19
+ - Bump @fluentui/react-utilities to v9.75.0-experimental.css-modules.20261031-810ab07afb.0 ([commit](https://github.com/microsoft/fluentui/commit/undefined) by beachball)
20
+
21
+ ## [9.12.6](https://github.com/microsoft/fluentui/tree/@fluentui/react-tabs_v9.12.6)
22
+
23
+ Mon, 19 Oct 2026 16:49:01 GMT
24
+
25
+ ### Patches
26
+
27
+ - Bump @fluentui/react-context-selector to v9.2.21 ([commit](https://github.com/microsoft/fluentui/commit/undefined) by beachball)
28
+ - Bump @fluentui/react-jsx-runtime to v9.4.7 ([commit](https://github.com/microsoft/fluentui/commit/undefined) by beachball)
29
+ - Bump @fluentui/react-tabster to v9.26.19 ([commit](https://github.com/microsoft/fluentui/commit/undefined) by beachball)
30
+ - Bump @fluentui/react-utilities to v9.27.0 ([commit](https://github.com/microsoft/fluentui/commit/undefined) by beachball)
31
+
32
+ ## [9.12.5](https://github.com/microsoft/fluentui/tree/@fluentui/react-tabs_v9.12.5)
33
+
34
+ Tue, 22 Sep 2026 11:25:39 GMT
35
+ [Compare changes](https://github.com/microsoft/fluentui/compare/@fluentui/react-tabs_v9.12.4..@fluentui/react-tabs_v9.12.5)
36
+
37
+ ### Patches
38
+
39
+ - fix: remove unused react-dom and @types/react-dom peer dependencies, mark @types/react as optional ([PR #36559](https://github.com/microsoft/fluentui/pull/36559) by martinhochel@microsoft.com)
40
+ - Bump @fluentui/react-context-selector to v9.2.20 ([commit](https://github.com/microsoft/fluentui/commit/undefined) by beachball)
41
+ - Bump @fluentui/react-jsx-runtime to v9.4.6 ([commit](https://github.com/microsoft/fluentui/commit/undefined) by beachball)
42
+ - Bump @fluentui/react-shared-contexts to v9.26.4 ([commit](https://github.com/microsoft/fluentui/commit/undefined) by beachball)
43
+ - Bump @fluentui/react-tabster to v9.26.18 ([commit](https://github.com/microsoft/fluentui/commit/undefined) by beachball)
44
+ - Bump @fluentui/react-utilities to v9.26.7 ([commit](https://github.com/microsoft/fluentui/commit/undefined) by beachball)
21
45
 
22
46
  ## [9.12.4](https://github.com/microsoft/fluentui/tree/@fluentui/react-tabs_v9.12.4)
23
47
 
package/README.md CHANGED
@@ -68,3 +68,11 @@ See [SPEC.md](./SPEC.md).
68
68
  ### Migration Guide
69
69
 
70
70
  If you're upgrading to Fluent UI v9 see [MIGRATION.md](./MIGRATION.md) for guidance on updating to the latest Link implementation.
71
+
72
+ ## Opt-in CSS Modules styles
73
+
74
+ Tab animated indicators have layered CSS Modules alternatives beside their Griffel style hooks.
75
+ Resolve the relevant `.styles.js` imports to `.styles.css.js` (and source `.styles`
76
+ imports to `.styles.css.ts`) only in an explicitly opted-in bundler configuration.
77
+ Keep CSS assets and process the headless icon stylesheet in the `fluentui` layer.
78
+ The default component imports and Griffel implementations are unchanged.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/Tab/Tab.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { useTab_unstable } from './useTab';\nimport { renderTab_unstable } from './renderTab';\nimport { useTabStyles_unstable } from './useTabStyles.styles';\nimport type { TabProps } from './Tab.types';\nimport type { ForwardRefComponent } from '@fluentui/react-utilities';\nimport { useCustomStyleHook_unstable } from '@fluentui/react-shared-contexts';\n\n/**\n * A tab provides a selectable item in a tab list.\n */\nexport const Tab: ForwardRefComponent<TabProps> = React.forwardRef((props, ref) => {\n const state = useTab_unstable(props, ref);\n\n useTabStyles_unstable(state);\n\n useCustomStyleHook_unstable('useTabStyles_unstable')(state);\n\n return renderTab_unstable(state);\n});\n\nTab.displayName = 'Tab';\n"],"names":["React","useTab_unstable","renderTab_unstable","useTabStyles_unstable","useCustomStyleHook_unstable","Tab","forwardRef","props","ref","state","displayName"],"mappings":"AAAA;AAEA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,eAAe,QAAQ,cAAW;AAC3C,SAASC,kBAAkB,QAAQ,iBAAc;AACjD,SAASC,qBAAqB,QAAQ,2BAAwB;AAG9D,SAASC,2BAA2B,QAAQ,kCAAkC;AAE9E;;CAEC,GACD,OAAO,MAAMC,oBAAqCL,MAAMM,UAAU,CAAC,CAACC,OAAOC;IACzE,MAAMC,QAAQR,gBAAgBM,OAAOC;IAErCL,sBAAsBM;IAEtBL,4BAA4B,yBAAyBK;IAErD,OAAOP,mBAAmBO;AAC5B,GAAG;AAEHJ,IAAIK,WAAW,GAAG"}
1
+ {"version":3,"sources":["../../../src/components/Tab/Tab.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { useTab_unstable } from './useTab';\nimport { renderTab_unstable } from './renderTab';\nimport { useTabStyles_unstable } from './useTabStyles.styles';\nimport type { TabProps } from './Tab.types';\nimport type { ForwardRefComponent } from '@fluentui/react-utilities';\nimport { useCustomStyleHook_unstable } from '@fluentui/react-shared-contexts';\n\n/**\n * A tab provides a selectable item in a tab list.\n */\nexport const Tab: ForwardRefComponent<TabProps> = React.forwardRef((props, ref) => {\n const state = useTab_unstable(props, ref);\n\n useTabStyles_unstable(state);\n\n useCustomStyleHook_unstable('useTabStyles_unstable')(state);\n\n return renderTab_unstable(state);\n});\n\nTab.displayName = 'Tab';\n"],"names":["React","useTab_unstable","renderTab_unstable","useTabStyles_unstable","useCustomStyleHook_unstable","Tab","forwardRef","props","ref","state","displayName"],"mappings":"AAAA;AAEA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,eAAe,QAAQ,cAAW;AAC3C,SAASC,kBAAkB,QAAQ,iBAAc;AACjD,SAASC,qBAAqB,QAAQ,2BAAwB;AAG9D,SAASC,2BAA2B,QAAQ,kCAAkC;AAE9E;;CAEC,GACD,OAAO,MAAMC,oBAAqCL,MAAMM,UAAU,CAAC,CAACC,OAAOC;IACzE,MAAMC,QAAQR,gBAAgBM,OAAOC;IAErCL,sBAAsBM;IAEtBL,4BAA4B,yBAAyBK;IAErD,OAAOP,mBAAmBO;AAC5B,GAAG;AAEHJ,IAAIK,WAAW,GAAG"}
@@ -0,0 +1,475 @@
1
+ @layer fluentui {
2
+ /* ---- Root: grid wrapper that holds content + pseudo-element indicators ---- */
3
+ .root {
4
+ align-items: center;
5
+ display: grid;
6
+ flex-shrink: 0;
7
+ grid-auto-flow: column;
8
+ grid-template-columns: auto;
9
+ grid-template-rows: auto;
10
+ outline-style: none;
11
+ position: relative;
12
+ }
13
+
14
+ /* ---- Button: interactive button layered on the root grid ---- */
15
+ .button {
16
+ align-items: center;
17
+ border: none;
18
+ border-radius: var(--borderRadiusMedium);
19
+ cursor: pointer;
20
+ display: grid;
21
+ flex-shrink: 0;
22
+ grid-auto-flow: column;
23
+ grid-template-columns: auto;
24
+ grid-template-rows: auto;
25
+ font-family: var(--fontFamilyBase);
26
+ line-height: var(--lineHeightBase300);
27
+ outline-style: none;
28
+ position: relative;
29
+ overflow: hidden;
30
+ text-transform: none;
31
+ }
32
+
33
+ /* ---- Orientation (also carries default "medium" padding) ---- */
34
+ .horizontal {
35
+ justify-content: center;
36
+ column-gap: var(--spacingHorizontalSNudge);
37
+ padding: var(--spacingVerticalM) var(--spacingHorizontalMNudge);
38
+ }
39
+ .vertical {
40
+ justify-content: start;
41
+ column-gap: var(--spacingHorizontalSNudge);
42
+ padding: var(--spacingVerticalSNudge) var(--spacingHorizontalMNudge);
43
+ }
44
+
45
+ /* ---- Size × orientation: padding overrides for small/large ---- */
46
+ /* medium is the default, covered by .horizontal/.vertical above */
47
+ .small.horizontal {
48
+ column-gap: var(--spacingHorizontalXXS);
49
+ padding: var(--spacingVerticalSNudge) var(--spacingHorizontalSNudge);
50
+ }
51
+ .small.vertical {
52
+ column-gap: var(--spacingHorizontalXXS);
53
+ padding: var(--spacingVerticalXXS) var(--spacingHorizontalSNudge);
54
+ }
55
+ .large.horizontal {
56
+ column-gap: var(--spacingHorizontalSNudge);
57
+ padding: var(--spacingVerticalL) var(--spacingHorizontalMNudge);
58
+ }
59
+ .large.vertical {
60
+ column-gap: var(--spacingHorizontalSNudge);
61
+ padding: var(--spacingVerticalS) var(--spacingHorizontalMNudge);
62
+ }
63
+
64
+ /* ---- Appearance: transparent ---- */
65
+ .transparent {
66
+ background-color: var(--colorTransparentBackground);
67
+ }
68
+ .transparent:enabled:hover {
69
+ background-color: var(--colorTransparentBackgroundHover);
70
+ }
71
+ .transparent:enabled:active {
72
+ background-color: var(--colorTransparentBackgroundPressed);
73
+ }
74
+
75
+ .transparent :global(.fui-Tab__icon),
76
+ .transparent :global(.fui-Tab__content) {
77
+ color: var(--colorNeutralForeground2);
78
+ }
79
+ .transparent:enabled:hover :global(.fui-Tab__icon),
80
+ .transparent:enabled:hover :global(.fui-Tab__content) {
81
+ color: var(--colorNeutralForeground2Hover);
82
+ }
83
+ .transparent:enabled:active :global(.fui-Tab__icon),
84
+ .transparent:enabled:active :global(.fui-Tab__content) {
85
+ color: var(--colorNeutralForeground2Pressed);
86
+ }
87
+
88
+ /* ---- Appearance: subtle ---- */
89
+ .subtle {
90
+ background-color: var(--colorSubtleBackground);
91
+ }
92
+ .subtle:enabled:hover {
93
+ background-color: var(--colorSubtleBackgroundHover);
94
+ }
95
+ .subtle:enabled:active {
96
+ background-color: var(--colorSubtleBackgroundPressed);
97
+ }
98
+
99
+ .subtle :global(.fui-Tab__icon),
100
+ .subtle :global(.fui-Tab__content) {
101
+ color: var(--colorNeutralForeground2);
102
+ }
103
+ .subtle:enabled:hover :global(.fui-Tab__icon),
104
+ .subtle:enabled:hover :global(.fui-Tab__content) {
105
+ color: var(--colorNeutralForeground2Hover);
106
+ }
107
+ .subtle:enabled:active :global(.fui-Tab__icon),
108
+ .subtle:enabled:active :global(.fui-Tab__content) {
109
+ color: var(--colorNeutralForeground2Pressed);
110
+ }
111
+
112
+ /* ---- Selected state colors (non-circular only — guarded below by .circularBase reset) ---- */
113
+ .selected :global(.fui-Tab__icon) {
114
+ color: var(--colorCompoundBrandForeground1);
115
+ }
116
+ .selected:enabled:hover :global(.fui-Tab__icon) {
117
+ color: var(--colorCompoundBrandForeground1Hover);
118
+ }
119
+ .selected:enabled:active :global(.fui-Tab__icon) {
120
+ color: var(--colorCompoundBrandForeground1Pressed);
121
+ }
122
+
123
+ .selected :global(.fui-Tab__content) {
124
+ color: var(--colorNeutralForeground1);
125
+ }
126
+ .selected:enabled:hover :global(.fui-Tab__content) {
127
+ color: var(--colorNeutralForeground1Hover);
128
+ }
129
+ .selected:enabled:active :global(.fui-Tab__content) {
130
+ color: var(--colorNeutralForeground1Pressed);
131
+ }
132
+
133
+ /* ---- Disabled ---- */
134
+ .disabled {
135
+ cursor: not-allowed;
136
+ background-color: var(--colorTransparentBackground);
137
+ }
138
+ .disabled :global(.fui-Tab__icon),
139
+ .disabled :global(.fui-Tab__content) {
140
+ color: var(--colorNeutralForegroundDisabled);
141
+ }
142
+
143
+ /* ---- Focus indicator ---- */
144
+ .focusBase[data-fui-focus-visible] {
145
+ border-color: transparent;
146
+ outline-width: var(--strokeWidthThick);
147
+ outline-color: transparent;
148
+ outline-style: solid;
149
+ box-shadow: var(--shadow4), 0 0 0 var(--strokeWidthThick) var(--colorStrokeFocus2);
150
+ z-index: 1;
151
+ }
152
+
153
+ .focusCircular[data-fui-focus-visible] {
154
+ border-color: transparent;
155
+ outline-width: var(--strokeWidthThick);
156
+ outline-color: transparent;
157
+ outline-style: solid;
158
+ box-shadow: var(--shadow4), 0 0 0 var(--strokeWidthThick) var(--colorStrokeFocus2),
159
+ 0 0 0 var(--strokeWidthThin) var(--colorNeutralStrokeOnBrand) inset;
160
+ z-index: 1;
161
+ }
162
+
163
+ /* ---- Pending indicator (::before) ---- */
164
+ .pendingBase:hover::before,
165
+ .pendingBase:active::before {
166
+ background-color: var(--colorNeutralStroke1Hover);
167
+ border-radius: var(--borderRadiusCircular);
168
+ content: '';
169
+ position: absolute;
170
+ }
171
+ .pendingBase:active::before {
172
+ background-color: var(--colorNeutralStroke1Pressed);
173
+ }
174
+
175
+ @media (forced-colors: active) {
176
+ .pendingBase:hover::before,
177
+ .pendingBase:active::before {
178
+ background-color: Highlight;
179
+ }
180
+ }
181
+
182
+ .pendingDisabled:hover::before,
183
+ .pendingDisabled:active::before {
184
+ background-color: var(--colorTransparentStroke);
185
+ }
186
+
187
+ @media (forced-colors: active) {
188
+ .pendingDisabled:hover::before,
189
+ .pendingDisabled:active::before {
190
+ background-color: transparent;
191
+ }
192
+ }
193
+
194
+ /* ---- Active indicator (::after) ---- */
195
+ .activeBase::after {
196
+ background-color: var(--colorTransparentStroke);
197
+ border-radius: var(--borderRadiusCircular);
198
+ content: '';
199
+ position: absolute;
200
+ }
201
+ .activeSelected::after {
202
+ background-color: var(--colorCompoundBrandStroke);
203
+ }
204
+ .activeSelected:enabled:hover::after {
205
+ background-color: var(--colorCompoundBrandStrokeHover);
206
+ }
207
+ .activeSelected:enabled:active::after {
208
+ background-color: var(--colorCompoundBrandStrokePressed);
209
+ }
210
+
211
+ @media (forced-colors: active) {
212
+ .activeSelected::after,
213
+ .activeSelected:enabled:hover::after,
214
+ .activeSelected:enabled:active::after {
215
+ background-color: ButtonText;
216
+ }
217
+ }
218
+
219
+ .activeDisabled::after {
220
+ background-color: var(--colorNeutralForegroundDisabled);
221
+ }
222
+
223
+ /* ---- Indicator positions: compound size × orientation selectors ---- */
224
+ /* Pending (::before) and active (::after) share the same geometry — handled together. */
225
+
226
+ /* Medium + horizontal (default via .horizontal baseline; small/large override below) */
227
+ .horizontal.pendingBase::before,
228
+ .horizontal.activeBase::after {
229
+ bottom: 0;
230
+ height: var(--strokeWidthThicker);
231
+ left: var(--spacingHorizontalM);
232
+ right: var(--spacingHorizontalM);
233
+ }
234
+ /* Medium + vertical */
235
+ .vertical.pendingBase::before,
236
+ .vertical.activeBase::after {
237
+ bottom: var(--spacingVerticalS);
238
+ inset-inline-start: 0;
239
+ top: var(--spacingVerticalS);
240
+ width: var(--strokeWidthThicker);
241
+ }
242
+ /* Small + horizontal */
243
+ .small.horizontal.pendingBase::before,
244
+ .small.horizontal.activeBase::after {
245
+ bottom: 0;
246
+ height: var(--strokeWidthThick);
247
+ left: var(--spacingHorizontalSNudge);
248
+ right: var(--spacingHorizontalSNudge);
249
+ }
250
+ /* Small + vertical */
251
+ .small.vertical.pendingBase::before,
252
+ .small.vertical.activeBase::after {
253
+ bottom: var(--spacingVerticalXS);
254
+ inset-inline-start: 0;
255
+ top: var(--spacingVerticalXS);
256
+ width: var(--strokeWidthThicker);
257
+ }
258
+ /* Large + horizontal: same geometry as medium, no override needed */
259
+ /* Large + vertical */
260
+ .large.vertical.pendingBase::before,
261
+ .large.vertical.activeBase::after {
262
+ bottom: var(--spacingVerticalMNudge);
263
+ inset-inline-start: 0;
264
+ top: var(--spacingVerticalMNudge);
265
+ width: var(--strokeWidthThicker);
266
+ }
267
+
268
+ /* ---- Circular appearance base ---- */
269
+ .circularBase {
270
+ border-radius: var(--borderRadiusCircular);
271
+ border: solid var(--strokeWidthThin) var(--colorTransparentStroke);
272
+ }
273
+
274
+ /* Reset selected icon/content colors inherited from non-circular .selected rules */
275
+ .circularBase :global(.fui-Tab__icon),
276
+ .circularBase :global(.fui-Tab__content) {
277
+ color: inherit;
278
+ }
279
+
280
+ /* Circular size padding: compound with .small/.large on the same button element */
281
+ .circularBase {
282
+ padding-block: calc(var(--spacingVerticalSNudge) - var(--strokeWidthThin));
283
+ }
284
+ .circularBase.small {
285
+ padding-block: calc(var(--spacingVerticalXXS) - var(--strokeWidthThin));
286
+ }
287
+ .circularBase.large {
288
+ padding-block: calc(var(--spacingVerticalS) - var(--strokeWidthThin));
289
+ }
290
+
291
+ /* ---- Subtle-circular appearance ---- */
292
+ .subtleCircular {
293
+ background-color: var(--colorSubtleBackground);
294
+ color: var(--colorNeutralForeground2);
295
+ }
296
+ .subtleCircular:enabled:hover {
297
+ background-color: var(--colorSubtleBackgroundHover);
298
+ border: solid var(--strokeWidthThin) var(--colorNeutralStroke1Hover);
299
+ color: var(--colorNeutralForeground2Hover);
300
+ }
301
+ .subtleCircular:enabled:active {
302
+ background-color: var(--colorSubtleBackgroundPressed);
303
+ border: solid var(--strokeWidthThin) var(--colorNeutralStroke1Pressed);
304
+ color: var(--colorNeutralForeground2Pressed);
305
+ }
306
+ @media (forced-colors: active) {
307
+ .subtleCircular {
308
+ border: solid var(--strokeWidthThin) Canvas;
309
+ }
310
+ }
311
+
312
+ /* selected, disabled: compound — CSS handles combinations, hook applies orthogonal classes */
313
+ .subtleCircular.selected {
314
+ background-color: var(--colorBrandBackground2);
315
+ border: solid var(--strokeWidthThin) var(--colorCompoundBrandStroke);
316
+ color: var(--colorBrandForeground2);
317
+ }
318
+ .subtleCircular.selected:enabled:hover {
319
+ background-color: var(--colorBrandBackground2Hover);
320
+ border: solid var(--strokeWidthThin) var(--colorCompoundBrandStrokeHover);
321
+ color: var(--colorBrandForeground2Hover);
322
+ }
323
+ .subtleCircular.selected:enabled:active {
324
+ background-color: var(--colorBrandBackground2Pressed);
325
+ border: solid var(--strokeWidthThin) var(--colorCompoundBrandStrokePressed);
326
+ color: var(--colorBrandForeground2Pressed);
327
+ }
328
+ @media (forced-colors: active) {
329
+ .subtleCircular.selected {
330
+ border: solid var(--strokeWidthThin) Highlight;
331
+ }
332
+ }
333
+
334
+ .subtleCircular.disabled {
335
+ background-color: var(--colorSubtleBackground);
336
+ color: var(--colorNeutralForegroundDisabled);
337
+ }
338
+ .subtleCircular.selected.disabled {
339
+ background-color: var(--colorNeutralBackgroundDisabled);
340
+ border: solid var(--strokeWidthThin) var(--colorNeutralStrokeDisabled);
341
+ color: var(--colorNeutralForegroundDisabled);
342
+ }
343
+
344
+ /* ---- Filled-circular appearance ---- */
345
+ .filledCircular {
346
+ background-color: var(--colorNeutralBackground3);
347
+ color: var(--colorNeutralForeground2);
348
+ }
349
+ .filledCircular:enabled:hover {
350
+ background-color: var(--colorNeutralBackground3Hover);
351
+ color: var(--colorNeutralForeground2Hover);
352
+ }
353
+ .filledCircular:enabled:active {
354
+ background-color: var(--colorNeutralBackground3Pressed);
355
+ color: var(--colorNeutralForeground2Pressed);
356
+ }
357
+
358
+ @media (forced-colors: active) {
359
+ .filledCircular:enabled:hover {
360
+ background-color: Highlight;
361
+ forced-color-adjust: none;
362
+ }
363
+ .filledCircular:enabled:hover :global(.fui-Tab__content),
364
+ .filledCircular:enabled:hover :global(.fui-Icon-filled),
365
+ .filledCircular:enabled:hover :global(.fui-Icon-regular) {
366
+ color: HighlightText;
367
+ }
368
+ }
369
+
370
+ .filledCircular.selected {
371
+ background-color: var(--colorBrandBackground);
372
+ color: var(--colorNeutralForegroundOnBrand);
373
+ }
374
+ .filledCircular.selected:enabled:hover {
375
+ background-color: var(--colorBrandBackgroundHover);
376
+ color: var(--colorNeutralForegroundOnBrand);
377
+ }
378
+ .filledCircular.selected:enabled:active {
379
+ background-color: var(--colorBrandBackgroundPressed);
380
+ color: var(--colorNeutralForegroundOnBrand);
381
+ }
382
+
383
+ @media (forced-colors: active) {
384
+ .filledCircular.selected:enabled {
385
+ background-color: ButtonText;
386
+ }
387
+ .filledCircular.selected:enabled :global(.fui-Tab__content) {
388
+ color: ButtonFace;
389
+ forced-color-adjust: none;
390
+ }
391
+ .filledCircular.selected:enabled :global(.fui-Tab__icon) {
392
+ color: ButtonFace;
393
+ }
394
+ }
395
+
396
+ .filledCircular.disabled {
397
+ background-color: var(--colorNeutralBackgroundDisabled);
398
+ color: var(--colorNeutralForegroundDisabled);
399
+ }
400
+ .filledCircular.selected.disabled {
401
+ background-color: var(--colorNeutralBackgroundDisabled);
402
+ border: solid var(--strokeWidthThin) var(--colorNeutralStrokeDisabled);
403
+ color: var(--colorNeutralForegroundDisabled);
404
+ }
405
+
406
+ /* ---- Icon slot ---- */
407
+ .icon {
408
+ grid-column-start: 1;
409
+ grid-row-start: 1;
410
+ align-items: center;
411
+ display: inline-flex;
412
+ justify-content: center;
413
+ overflow: hidden;
414
+ font-size: 20px;
415
+ height: 20px;
416
+ width: 20px;
417
+ }
418
+
419
+ .icon :global(.fui-Icon-filled) {
420
+ display: none;
421
+ }
422
+ .icon :global(.fui-Icon-regular) {
423
+ display: inline;
424
+ }
425
+
426
+ /* Large tab: bigger icon via descendant selector from the button's .large class */
427
+ .large :global(.fui-Tab__icon) {
428
+ font-size: 24px;
429
+ height: 24px;
430
+ width: 24px;
431
+ }
432
+
433
+ /* Selected state: swap to filled icon variant */
434
+ .selected :global(.fui-Tab__icon) :global(.fui-Icon-filled) {
435
+ display: inline;
436
+ }
437
+ .selected :global(.fui-Tab__icon) :global(.fui-Icon-regular) {
438
+ display: none;
439
+ }
440
+
441
+ /* ---- Content slot ---- */
442
+ .content {
443
+ overflow: hidden;
444
+ padding: 0 var(--spacingHorizontalXXS);
445
+ font-family: var(--fontFamilyBase);
446
+ font-size: var(--fontSizeBase300);
447
+ font-weight: var(--fontWeightRegular);
448
+ line-height: var(--lineHeightBase300);
449
+ }
450
+
451
+ /* Selected: semibold (body1Strong). Applies to all tabs including circular. */
452
+ .selected :global(.fui-Tab__content) {
453
+ font-weight: var(--fontWeightSemibold);
454
+ }
455
+
456
+ /* Large: bigger font (body2 / subtitle2) via descendant from button's .large class */
457
+ .large .content {
458
+ font-size: var(--fontSizeBase400);
459
+ line-height: var(--lineHeightBase400);
460
+ }
461
+
462
+ .contentNoIconBefore {
463
+ grid-column-start: 1;
464
+ grid-row-start: 1;
465
+ }
466
+ .contentIconBefore {
467
+ grid-column-start: 2;
468
+ grid-row-start: 1;
469
+ }
470
+
471
+ .contentPlaceholder {
472
+ visibility: hidden;
473
+ font-weight: var(--fontWeightSemibold);
474
+ }
475
+ }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/Tab/Tab.types.ts"],"sourcesContent":["import type { ComponentProps, ComponentState, Slot } from '@fluentui/react-utilities';\n\n/**\n * Any value that identifies a specific tab.\n */\nexport type TabValue = unknown;\n\nexport type TabSlots = {\n /**\n * Root of the component.\n */\n root: Slot<'button'>;\n\n /**\n * Icon that renders before the content.\n */\n icon?: Slot<'span'>;\n\n /**\n * Component children are placed in this slot\n * Avoid using the `children` property in this slot in favour of Component children whenever possible.\n */\n content: NonNullable<Slot<'span'>>;\n};\n\nexport type TabInternalSlots = TabSlots & {\n contentReservedSpace?: Slot<'span'>;\n};\n\n/**\n * Tab Props\n */\nexport type TabProps = Omit<ComponentProps<Partial<TabSlots>>, 'content' | 'value'> &\n Pick<Partial<TabSlots>, 'content'> & {\n /**\n * A tab can be set to disable interaction.\n * @default false\n */\n disabled?: boolean;\n /**\n * The value that identifies this tab when selected.\n */\n value: TabValue;\n };\n\nexport type TabBaseProps = Omit<TabProps, 'contentReservedSpace'>;\n\n/**\n * State used in rendering Tab\n */\nexport type TabState = ComponentState<TabInternalSlots> &\n Pick<TabProps, 'value'> &\n Required<Pick<TabProps, 'disabled'>> & {\n /**\n * A tab supports 'transparent', 'subtle', `subtle-circular` and `filled-circular` appearance.\n */\n appearance?: 'transparent' | 'subtle' | 'subtle-circular' | 'filled-circular';\n\n /**\n * A tab can have only an icon slot filled and no content.\n */\n iconOnly: boolean;\n /**\n * If this tab is selected\n */\n selected: boolean;\n /**\n * When defined, tab content with selected style is rendered hidden to reserve space.\n * This keeps consistent content size between unselected and selected states.\n *\n * @deprecated - use `contentReservedSpace` internal slot instead.\n */\n contentReservedSpaceClassName?: string;\n /**\n * A tab can be either 'small', 'medium', or 'large' size.\n */\n size: 'small' | 'medium' | 'large';\n /**\n * A tab can arrange its content based on if the tabs in the list are arranged vertically.\n */\n vertical: boolean;\n };\n\nexport type TabBaseState = Omit<TabState, 'appearance' | 'size' | 'contentReservedSpace'>;\n"],"names":[],"mappings":"AAmFA,WAA0F"}
1
+ {"version":3,"sources":["../../../src/components/Tab/Tab.types.ts"],"sourcesContent":["import type { ComponentProps, ComponentState, Slot } from '@fluentui/react-utilities';\n\n/**\n * Any value that identifies a specific tab.\n */\nexport type TabValue = unknown;\n\nexport type TabSlots = {\n /**\n * Root of the component.\n */\n root: Slot<'button'>;\n\n /**\n * Icon that renders before the content.\n */\n icon?: Slot<'span'>;\n\n /**\n * Component children are placed in this slot\n * Avoid using the `children` property in this slot in favour of Component children whenever possible.\n */\n content: NonNullable<Slot<'span'>>;\n};\n\nexport type TabInternalSlots = TabSlots & {\n contentReservedSpace?: Slot<'span'>;\n};\n\n/**\n * Tab Props\n */\nexport type TabProps = Omit<ComponentProps<Partial<TabSlots>>, 'content' | 'value'> &\n Pick<Partial<TabSlots>, 'content'> & {\n /**\n * A tab can be set to disable interaction.\n * @default false\n */\n disabled?: boolean;\n /**\n * The value that identifies this tab when selected.\n */\n value: TabValue;\n };\n\nexport type TabBaseProps = Omit<TabProps, 'contentReservedSpace'>;\n\n/**\n * State used in rendering Tab\n */\nexport type TabState = ComponentState<TabInternalSlots> &\n Pick<TabProps, 'value'> &\n Required<Pick<TabProps, 'disabled'>> & {\n /**\n * A tab supports 'transparent', 'subtle', `subtle-circular` and `filled-circular` appearance.\n */\n appearance?: 'transparent' | 'subtle' | 'subtle-circular' | 'filled-circular';\n\n /**\n * A tab can have only an icon slot filled and no content.\n */\n iconOnly: boolean;\n /**\n * If this tab is selected\n */\n selected: boolean;\n /**\n * When defined, tab content with selected style is rendered hidden to reserve space.\n * This keeps consistent content size between unselected and selected states.\n *\n * @deprecated - use `contentReservedSpace` internal slot instead.\n */\n contentReservedSpaceClassName?: string;\n /**\n * A tab can be either 'small', 'medium', or 'large' size.\n */\n size: 'small' | 'medium' | 'large';\n /**\n * A tab can arrange its content based on if the tabs in the list are arranged vertically.\n */\n vertical: boolean;\n };\n\nexport type TabBaseState = Omit<TabState, 'appearance' | 'size' | 'contentReservedSpace'>;\n"],"names":[],"mappings":"AAmFA,WAA0F"}
@@ -0,0 +1,27 @@
1
+ @layer fluentui {
2
+ .base {
3
+ overflow: visible;
4
+ }
5
+ .animated::after {
6
+ transition-property: transform;
7
+ transition-duration: var(--durationSlow);
8
+ transition-timing-function: var(--curveDecelerateMax);
9
+ }
10
+ .horizontal::after {
11
+ transform-origin: left;
12
+ transform: translateX(var(--fui-Tab__indicator--offset)) scaleX(var(--fui-Tab__indicator--scale));
13
+ }
14
+ :global([dir='rtl']) .horizontal::after {
15
+ transform-origin: right;
16
+ }
17
+ .vertical::after {
18
+ transform-origin: top;
19
+ transform: translateY(var(--fui-Tab__indicator--offset)) scaleY(var(--fui-Tab__indicator--scale));
20
+ }
21
+ @media (prefers-reduced-motion: reduce) {
22
+ .animated::after {
23
+ transition-property: none;
24
+ transition-duration: 0.01ms;
25
+ }
26
+ }
27
+ }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/Tab/index.ts"],"sourcesContent":["export { Tab } from './Tab';\nexport type { TabInternalSlots, TabBaseProps, TabProps, TabSlots, TabBaseState, TabState, TabValue } from './Tab.types';\nexport { renderTab_unstable } from './renderTab';\nexport { useTab_unstable, useTabBase_unstable, useTabA11yBehavior_unstable } from './useTab';\nexport {\n tabClassNames,\n tabReservedSpaceClassNames,\n useTabButtonStyles_unstable,\n useTabContentStyles_unstable,\n useTabIndicatorStyles_unstable,\n useTabStyles_unstable,\n} from './useTabStyles.styles';\nexport { useTabAnimatedIndicatorStyles_unstable } from './useTabAnimatedIndicator.styles';\n"],"names":["Tab","renderTab_unstable","useTab_unstable","useTabBase_unstable","useTabA11yBehavior_unstable","tabClassNames","tabReservedSpaceClassNames","useTabButtonStyles_unstable","useTabContentStyles_unstable","useTabIndicatorStyles_unstable","useTabStyles_unstable","useTabAnimatedIndicatorStyles_unstable"],"mappings":"AAAA,SAASA,GAAG,QAAQ,WAAQ;AAE5B,SAASC,kBAAkB,QAAQ,iBAAc;AACjD,SAASC,eAAe,EAAEC,mBAAmB,EAAEC,2BAA2B,QAAQ,cAAW;AAC7F,SACEC,aAAa,EACbC,0BAA0B,EAC1BC,2BAA2B,EAC3BC,4BAA4B,EAC5BC,8BAA8B,EAC9BC,qBAAqB,QAChB,2BAAwB;AAC/B,SAASC,sCAAsC,QAAQ,sCAAmC"}
1
+ {"version":3,"sources":["../../../src/components/Tab/index.ts"],"sourcesContent":["export { Tab } from './Tab';\nexport type { TabInternalSlots, TabBaseProps, TabProps, TabSlots, TabBaseState, TabState, TabValue } from './Tab.types';\nexport { renderTab_unstable } from './renderTab';\nexport { useTab_unstable, useTabBase_unstable, useTabA11yBehavior_unstable } from './useTab';\nexport {\n tabClassNames,\n tabReservedSpaceClassNames,\n useTabButtonStyles_unstable,\n useTabContentStyles_unstable,\n useTabIndicatorStyles_unstable,\n useTabStyles_unstable,\n} from './useTabStyles.styles';\nexport { useTabAnimatedIndicatorStyles_unstable } from './useTabAnimatedIndicator.styles';\n"],"names":["Tab","renderTab_unstable","useTab_unstable","useTabBase_unstable","useTabA11yBehavior_unstable","tabClassNames","tabReservedSpaceClassNames","useTabButtonStyles_unstable","useTabContentStyles_unstable","useTabIndicatorStyles_unstable","useTabStyles_unstable","useTabAnimatedIndicatorStyles_unstable"],"mappings":"AAAA,SAASA,GAAG,QAAQ,WAAQ;AAE5B,SAASC,kBAAkB,QAAQ,iBAAc;AACjD,SAASC,eAAe,EAAEC,mBAAmB,EAAEC,2BAA2B,QAAQ,cAAW;AAC7F,SACEC,aAAa,EACbC,0BAA0B,EAC1BC,2BAA2B,EAC3BC,4BAA4B,EAC5BC,8BAA8B,EAC9BC,qBAAqB,QAChB,2BAAwB;AAC/B,SAASC,sCAAsC,QAAQ,sCAAmC"}
@@ -1,5 +1,5 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "@fluentui/react-jsx-runtime/jsx-runtime";
2
- import { assertSlots } from "@fluentui/react-utilities";
1
+ import { jsx as _jsx, jsxs as _jsxs } from "@fluentui/react-jsx-runtime/jsx-runtime";
2
+ import { assertSlots } from "@fluentui/react-utilities";
3
3
  /**
4
4
  * Render the final JSX of Tab
5
5
  */ export const renderTab_unstable = (state)=>{
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/Tab/renderTab.tsx"],"sourcesContent":["/** @jsxRuntime automatic */\n/** @jsxImportSource @fluentui/react-jsx-runtime */\nimport { assertSlots } from '@fluentui/react-utilities';\nimport type { JSXElement } from '@fluentui/react-utilities';\nimport type { TabBaseState, TabInternalSlots } from './Tab.types';\n\n/**\n * Render the final JSX of Tab\n */\nexport const renderTab_unstable = (state: TabBaseState): JSXElement => {\n assertSlots<TabInternalSlots>(state);\n\n return (\n <state.root>\n {state.icon && <state.icon />}\n {!state.iconOnly && <state.content />}\n {state.contentReservedSpace && <state.contentReservedSpace />}\n </state.root>\n );\n};\n"],"names":["assertSlots","renderTab_unstable","state","root","icon","iconOnly","content","contentReservedSpace"],"mappings":"AAAA,0BAA0B,GAC1B,iDAAiD;AACjD,SAASA,WAAW,QAAQ,4BAA4B;AAIxD;;CAEC,GACD,OAAO,MAAMC,qBAAqB,CAACC;IACjCF,YAA8BE;IAE9B,qBACE,MAACA,MAAMC,IAAI;;YACRD,MAAME,IAAI,kBAAI,KAACF,MAAME,IAAI;YACzB,CAACF,MAAMG,QAAQ,kBAAI,KAACH,MAAMI,OAAO;YACjCJ,MAAMK,oBAAoB,kBAAI,KAACL,MAAMK,oBAAoB;;;AAGhE,EAAE"}
1
+ {"version":3,"sources":["../../../src/components/Tab/renderTab.tsx"],"sourcesContent":["/** @jsxRuntime automatic */\n/** @jsxImportSource @fluentui/react-jsx-runtime */\nimport { assertSlots } from '@fluentui/react-utilities';\nimport type { JSXElement } from '@fluentui/react-utilities';\nimport type { TabBaseState, TabInternalSlots } from './Tab.types';\n\n/**\n * Render the final JSX of Tab\n */\nexport const renderTab_unstable = (state: TabBaseState): JSXElement => {\n assertSlots<TabInternalSlots>(state);\n\n return (\n <state.root>\n {state.icon && <state.icon />}\n {!state.iconOnly && <state.content />}\n {state.contentReservedSpace && <state.contentReservedSpace />}\n </state.root>\n );\n};\n"],"names":["assertSlots","renderTab_unstable","state","root","icon","iconOnly","content","contentReservedSpace"],"mappings":";AAAA,0BAA0B,GAC1B,iDAAiD,GACjD,SAASA,WAAW,QAAQ,4BAA4B;AAIxD;;CAEC,GACD,OAAO,MAAMC,qBAAqB,CAACC;IACjCF,YAA8BE;IAE9B,qBACE,MAACA,MAAMC,IAAI;;YACRD,MAAME,IAAI,kBAAI,KAACF,MAAME,IAAI;YACzB,CAACF,MAAMG,QAAQ,kBAAI,KAACH,MAAMI,OAAO;YACjCJ,MAAMK,oBAAoB,kBAAI,KAACL,MAAMK,oBAAoB;;;AAGhE,EAAE"}