@cloudscape-design/components 3.0.681 → 3.0.682

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 (192) hide show
  1. package/button/index.d.ts.map +1 -1
  2. package/button/index.js +2 -2
  3. package/button/index.js.map +1 -1
  4. package/button/interfaces.d.ts +6 -0
  5. package/button/interfaces.d.ts.map +1 -1
  6. package/button/interfaces.js.map +1 -1
  7. package/button/internal.d.ts.map +1 -1
  8. package/button/internal.js +15 -4
  9. package/button/internal.js.map +1 -1
  10. package/button/styles.css.js +20 -19
  11. package/button/styles.scoped.css +161 -167
  12. package/button/styles.selectors.js +20 -19
  13. package/button/test-classes/styles.css.js +6 -0
  14. package/button/test-classes/styles.scoped.css +7 -0
  15. package/button/test-classes/styles.selectors.js +7 -0
  16. package/button-dropdown/category-elements/expandable-category-element.js +1 -1
  17. package/button-dropdown/category-elements/expandable-category-element.js.map +1 -1
  18. package/button-dropdown/category-elements/mobile-expandable-category-element.js +1 -1
  19. package/button-dropdown/category-elements/mobile-expandable-category-element.js.map +1 -1
  20. package/button-dropdown/index.d.ts.map +1 -1
  21. package/button-dropdown/index.js +2 -2
  22. package/button-dropdown/index.js.map +1 -1
  23. package/button-dropdown/interfaces.d.ts +7 -0
  24. package/button-dropdown/interfaces.d.ts.map +1 -1
  25. package/button-dropdown/interfaces.js.map +1 -1
  26. package/button-dropdown/internal.d.ts.map +1 -1
  27. package/button-dropdown/internal.js +4 -2
  28. package/button-dropdown/internal.js.map +1 -1
  29. package/button-dropdown/item-element/index.js +1 -1
  30. package/button-dropdown/item-element/index.js.map +1 -1
  31. package/calendar/grid/index.d.ts +3 -1
  32. package/calendar/grid/index.d.ts.map +1 -1
  33. package/calendar/grid/index.js +26 -6
  34. package/calendar/grid/index.js.map +1 -1
  35. package/calendar/grid/use-calendar-grid-keyboard-navigation.d.ts +2 -1
  36. package/calendar/grid/use-calendar-grid-keyboard-navigation.d.ts.map +1 -1
  37. package/calendar/grid/use-calendar-grid-keyboard-navigation.js +8 -5
  38. package/calendar/grid/use-calendar-grid-keyboard-navigation.js.map +1 -1
  39. package/calendar/interfaces.d.ts +9 -0
  40. package/calendar/interfaces.d.ts.map +1 -1
  41. package/calendar/interfaces.js.map +1 -1
  42. package/calendar/internal.d.ts +1 -1
  43. package/calendar/internal.d.ts.map +1 -1
  44. package/calendar/internal.js +7 -5
  45. package/calendar/internal.js.map +1 -1
  46. package/calendar/styles.css.js +21 -20
  47. package/calendar/styles.scoped.css +46 -42
  48. package/calendar/styles.selectors.js +21 -20
  49. package/calendar/utils/navigation.d.ts +10 -10
  50. package/calendar/utils/navigation.d.ts.map +1 -1
  51. package/calendar/utils/navigation.js +29 -29
  52. package/calendar/utils/navigation.js.map +1 -1
  53. package/date-picker/index.d.ts.map +1 -1
  54. package/date-picker/index.js +2 -2
  55. package/date-picker/index.js.map +1 -1
  56. package/date-range-picker/calendar/grids/grid.d.ts +2 -1
  57. package/date-range-picker/calendar/grids/grid.d.ts.map +1 -1
  58. package/date-range-picker/calendar/grids/grid.js +55 -7
  59. package/date-range-picker/calendar/grids/grid.js.map +1 -1
  60. package/date-range-picker/calendar/grids/index.d.ts +2 -1
  61. package/date-range-picker/calendar/grids/index.d.ts.map +1 -1
  62. package/date-range-picker/calendar/grids/index.js +20 -12
  63. package/date-range-picker/calendar/grids/index.js.map +1 -1
  64. package/date-range-picker/calendar/grids/styles.css.js +28 -27
  65. package/date-range-picker/calendar/grids/styles.scoped.css +46 -42
  66. package/date-range-picker/calendar/grids/styles.selectors.js +28 -27
  67. package/date-range-picker/calendar/index.d.ts +2 -1
  68. package/date-range-picker/calendar/index.d.ts.map +1 -1
  69. package/date-range-picker/calendar/index.js +2 -2
  70. package/date-range-picker/calendar/index.js.map +1 -1
  71. package/date-range-picker/dropdown.d.ts +2 -2
  72. package/date-range-picker/dropdown.d.ts.map +1 -1
  73. package/date-range-picker/dropdown.js +2 -2
  74. package/date-range-picker/dropdown.js.map +1 -1
  75. package/date-range-picker/index.d.ts.map +1 -1
  76. package/date-range-picker/index.js +2 -2
  77. package/date-range-picker/index.js.map +1 -1
  78. package/date-range-picker/interfaces.d.ts +9 -0
  79. package/date-range-picker/interfaces.d.ts.map +1 -1
  80. package/date-range-picker/interfaces.js.map +1 -1
  81. package/internal/base-component/styles.scoped.css +12 -10
  82. package/internal/components/option/interfaces.d.ts +2 -0
  83. package/internal/components/option/interfaces.d.ts.map +1 -1
  84. package/internal/components/option/interfaces.js.map +1 -1
  85. package/internal/components/selectable-item/index.d.ts +1 -0
  86. package/internal/components/selectable-item/index.d.ts.map +1 -1
  87. package/internal/components/selectable-item/index.js +3 -0
  88. package/internal/components/selectable-item/index.js.map +1 -1
  89. package/internal/components/tooltip/index.d.ts +3 -1
  90. package/internal/components/tooltip/index.d.ts.map +1 -1
  91. package/internal/components/tooltip/index.js +3 -3
  92. package/internal/components/tooltip/index.js.map +1 -1
  93. package/internal/environment.js +1 -1
  94. package/internal/environment.json +1 -1
  95. package/internal/generated/styles/tokens.d.ts +2 -0
  96. package/internal/generated/styles/tokens.js +4 -2
  97. package/internal/generated/theming/index.cjs +78 -12
  98. package/internal/generated/theming/index.cjs.d.ts +16 -0
  99. package/internal/generated/theming/index.d.ts +16 -0
  100. package/internal/generated/theming/index.js +78 -12
  101. package/{button-dropdown/utils/use-hidden-description.d.ts → internal/hooks/use-hidden-description/index.d.ts} +2 -1
  102. package/internal/hooks/use-hidden-description/index.d.ts.map +1 -0
  103. package/{button-dropdown/utils/use-hidden-description.js → internal/hooks/use-hidden-description/index.js} +3 -2
  104. package/internal/hooks/use-hidden-description/index.js.map +1 -0
  105. package/internal/manifest.json +1 -1
  106. package/package.json +1 -1
  107. package/segmented-control/interfaces.d.ts +2 -0
  108. package/segmented-control/interfaces.d.ts.map +1 -1
  109. package/segmented-control/interfaces.js.map +1 -1
  110. package/segmented-control/internal-segmented-control.d.ts.map +1 -1
  111. package/segmented-control/internal-segmented-control.js +11 -8
  112. package/segmented-control/internal-segmented-control.js.map +1 -1
  113. package/segmented-control/segment.d.ts.map +1 -1
  114. package/segmented-control/segment.js +14 -4
  115. package/segmented-control/segment.js.map +1 -1
  116. package/segmented-control/styles.css.js +15 -14
  117. package/segmented-control/styles.scoped.css +37 -33
  118. package/segmented-control/styles.selectors.js +15 -14
  119. package/select/interfaces.d.ts +1 -0
  120. package/select/interfaces.d.ts.map +1 -1
  121. package/select/interfaces.js.map +1 -1
  122. package/select/parts/filter.d.ts +1 -1
  123. package/select/parts/item.d.ts.map +1 -1
  124. package/select/parts/item.js +13 -3
  125. package/select/parts/item.js.map +1 -1
  126. package/select/parts/multiselect-item.d.ts.map +1 -1
  127. package/select/parts/multiselect-item.js +15 -3
  128. package/select/parts/multiselect-item.js.map +1 -1
  129. package/select/parts/styles.css.js +17 -16
  130. package/select/parts/styles.scoped.css +21 -17
  131. package/select/parts/styles.selectors.js +17 -16
  132. package/split-panel/icons/styles.css.js +22 -22
  133. package/split-panel/icons/styles.scoped.css +25 -25
  134. package/split-panel/icons/styles.selectors.js +22 -22
  135. package/table/body-cell/disabled-inline-editor.js +1 -1
  136. package/table/body-cell/disabled-inline-editor.js.map +1 -1
  137. package/tabs/interfaces.d.ts +5 -0
  138. package/tabs/interfaces.d.ts.map +1 -1
  139. package/tabs/interfaces.js.map +1 -1
  140. package/tabs/styles.css.js +28 -25
  141. package/tabs/styles.scoped.css +60 -49
  142. package/tabs/styles.selectors.js +28 -25
  143. package/tabs/tab-header-bar.d.ts.map +1 -1
  144. package/tabs/tab-header-bar.js +38 -14
  145. package/tabs/tab-header-bar.js.map +1 -1
  146. package/test-utils/dom/button/index.d.ts +1 -0
  147. package/test-utils/dom/button/index.js +6 -2
  148. package/test-utils/dom/button/index.js.map +1 -1
  149. package/test-utils/dom/button-dropdown/index.d.ts +2 -1
  150. package/test-utils/dom/button-dropdown/index.js +5 -1
  151. package/test-utils/dom/button-dropdown/index.js.map +1 -1
  152. package/test-utils/dom/calendar/index.d.ts +4 -1
  153. package/test-utils/dom/calendar/index.js +8 -1
  154. package/test-utils/dom/calendar/index.js.map +1 -1
  155. package/test-utils/dom/date-range-picker/index.d.ts +4 -1
  156. package/test-utils/dom/date-range-picker/index.js +8 -2
  157. package/test-utils/dom/date-range-picker/index.js.map +1 -1
  158. package/test-utils/dom/internal/dropdown-host.js.map +1 -1
  159. package/test-utils/dom/internal/option.d.ts +1 -0
  160. package/test-utils/dom/internal/option.js +4 -0
  161. package/test-utils/dom/internal/option.js.map +1 -1
  162. package/test-utils/dom/segmented-control/index.d.ts +9 -0
  163. package/test-utils/dom/segmented-control/index.js +15 -0
  164. package/test-utils/dom/segmented-control/index.js.map +1 -1
  165. package/test-utils/dom/tabs/index.d.ts +9 -2
  166. package/test-utils/dom/tabs/index.js +15 -2
  167. package/test-utils/dom/tabs/index.js.map +1 -1
  168. package/test-utils/selectors/button/index.d.ts +1 -0
  169. package/test-utils/selectors/button/index.js +6 -2
  170. package/test-utils/selectors/button/index.js.map +1 -1
  171. package/test-utils/selectors/button-dropdown/index.d.ts +2 -1
  172. package/test-utils/selectors/button-dropdown/index.js +5 -1
  173. package/test-utils/selectors/button-dropdown/index.js.map +1 -1
  174. package/test-utils/selectors/calendar/index.d.ts +4 -1
  175. package/test-utils/selectors/calendar/index.js +8 -1
  176. package/test-utils/selectors/calendar/index.js.map +1 -1
  177. package/test-utils/selectors/date-range-picker/index.d.ts +4 -1
  178. package/test-utils/selectors/date-range-picker/index.js +8 -2
  179. package/test-utils/selectors/date-range-picker/index.js.map +1 -1
  180. package/test-utils/selectors/internal/dropdown-host.js.map +1 -1
  181. package/test-utils/selectors/internal/option.d.ts +1 -0
  182. package/test-utils/selectors/internal/option.js +4 -0
  183. package/test-utils/selectors/internal/option.js.map +1 -1
  184. package/test-utils/selectors/segmented-control/index.d.ts +9 -0
  185. package/test-utils/selectors/segmented-control/index.js +15 -0
  186. package/test-utils/selectors/segmented-control/index.js.map +1 -1
  187. package/test-utils/selectors/tabs/index.d.ts +9 -2
  188. package/test-utils/selectors/tabs/index.js +15 -2
  189. package/test-utils/selectors/tabs/index.js.map +1 -1
  190. package/test-utils/tsconfig.tsbuildinfo +1 -1
  191. package/button-dropdown/utils/use-hidden-description.d.ts.map +0 -1
  192. package/button-dropdown/utils/use-hidden-description.js.map +0 -1
@@ -191,7 +191,7 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
191
191
  SPDX-License-Identifier: Apache-2.0
192
192
  */
193
193
  /* stylelint-disable selector-max-type */
194
- .awsui_tabs-header_14rmt_8vbks_194:not(#\9) {
194
+ .awsui_tabs-header_14rmt_1piyt_194:not(#\9) {
195
195
  margin-block: 0;
196
196
  margin-inline: 0;
197
197
  padding-block: 0;
@@ -199,7 +199,7 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
199
199
  display: flex;
200
200
  }
201
201
 
202
- .awsui_tabs-header-list_14rmt_8vbks_202:not(#\9) {
202
+ .awsui_tabs-header-list_14rmt_1piyt_202:not(#\9) {
203
203
  margin-block: 0;
204
204
  margin-inline: 0;
205
205
  padding-block: 0;
@@ -212,33 +212,33 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
212
212
  -ms-overflow-style: none; /* Internet Explorer 10+ */
213
213
  scrollbar-width: none; /* Firefox */
214
214
  }
215
- .awsui_tabs-header-list_14rmt_8vbks_202:not(#\9)::-webkit-scrollbar {
215
+ .awsui_tabs-header-list_14rmt_1piyt_202:not(#\9)::-webkit-scrollbar {
216
216
  display: none; /* Safari and Chrome */
217
217
  }
218
218
 
219
- .awsui_pagination-button_14rmt_8vbks_219:not(#\9) {
219
+ .awsui_pagination-button_14rmt_1piyt_219:not(#\9) {
220
220
  margin-block: var(--space-scaled-s-aqzyko, 12px);
221
221
  margin-inline: 0;
222
222
  padding-block: 0;
223
223
  padding-inline: var(--space-xxs-p8yyaw, 4px);
224
224
  display: flex;
225
225
  }
226
- .awsui_pagination-button-left_14rmt_8vbks_226:not(#\9) {
226
+ .awsui_pagination-button-left_14rmt_1piyt_226:not(#\9) {
227
227
  border-inline-end: var(--border-divider-section-width-1061zr, 1px) solid var(--color-border-control-disabled-bv2kkn, #d1d5db);
228
228
  }
229
- .awsui_pagination-button-left-scrollable_14rmt_8vbks_229:not(#\9) {
229
+ .awsui_pagination-button-left-scrollable_14rmt_1piyt_229:not(#\9) {
230
230
  z-index: 1;
231
231
  box-shadow: 5px 0px 4px -3px var(--color-border-tabs-shadow-w5xpb4, rgba(0, 7, 22, 0.12)), 1px 0px 0px 0px var(--color-border-tabs-shadow-w5xpb4, rgba(0, 7, 22, 0.12));
232
232
  }
233
- .awsui_pagination-button-right_14rmt_8vbks_233:not(#\9) {
233
+ .awsui_pagination-button-right_14rmt_1piyt_233:not(#\9) {
234
234
  border-inline-start: var(--border-divider-section-width-1061zr, 1px) solid var(--color-border-control-disabled-bv2kkn, #d1d5db);
235
235
  }
236
- .awsui_pagination-button-right-scrollable_14rmt_8vbks_236:not(#\9) {
236
+ .awsui_pagination-button-right-scrollable_14rmt_1piyt_236:not(#\9) {
237
237
  z-index: 1;
238
238
  box-shadow: -5px 0px 4px -3px var(--color-border-tabs-shadow-w5xpb4, rgba(0, 7, 22, 0.12)), -1px 0px 0px 0 var(--color-border-tabs-shadow-w5xpb4, rgba(0, 7, 22, 0.12));
239
239
  }
240
240
 
241
- .awsui_tabs-tab_14rmt_8vbks_241:not(#\9) {
241
+ .awsui_tabs-tab_14rmt_1piyt_241:not(#\9) {
242
242
  list-style: none;
243
243
  padding-block: 0;
244
244
  padding-inline: 0;
@@ -247,7 +247,7 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
247
247
  max-inline-size: calc(90% - var(--space-l-t419sm, 20px));
248
248
  }
249
249
 
250
- .awsui_tabs-tab-label_14rmt_8vbks_250:not(#\9) {
250
+ .awsui_tabs-tab-label_14rmt_1piyt_250:not(#\9) {
251
251
  display: flex;
252
252
  align-items: center;
253
253
  padding-inline: var(--space-xs-zb16t3, 8px);
@@ -258,12 +258,12 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
258
258
  word-break: break-word;
259
259
  }
260
260
 
261
- .awsui_tabs-tab-dismiss_14rmt_8vbks_261:not(#\9),
262
- .awsui_tabs-tab-action_14rmt_8vbks_262:not(#\9) {
261
+ .awsui_tabs-tab-dismiss_14rmt_1piyt_261:not(#\9),
262
+ .awsui_tabs-tab-action_14rmt_1piyt_262:not(#\9) {
263
263
  /* Used as a selector for tests */
264
264
  }
265
265
 
266
- .awsui_tabs-tab-header-container_14rmt_8vbks_266:not(#\9) {
266
+ .awsui_tabs-tab-header-container_14rmt_1piyt_266:not(#\9) {
267
267
  position: relative;
268
268
  border-block: var(--border-divider-section-width-1061zr, 1px) solid transparent;
269
269
  border-inline: var(--border-divider-section-width-1061zr, 1px) solid transparent;
@@ -271,18 +271,18 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
271
271
  display: flex;
272
272
  align-items: stretch;
273
273
  }
274
- .awsui_tabs-tab-header-container_14rmt_8vbks_266:not(#\9), .awsui_tabs-tab-header-container_14rmt_8vbks_266 > button:not(#\9) {
274
+ .awsui_tabs-tab-header-container_14rmt_1piyt_266:not(#\9), .awsui_tabs-tab-header-container_14rmt_1piyt_266 > button:not(#\9) {
275
275
  background-color: transparent;
276
276
  }
277
- .awsui_tabs-tab-header-container_14rmt_8vbks_266 > .awsui_tabs-tab-dismiss_14rmt_8vbks_261:not(#\9), .awsui_tabs-tab-header-container_14rmt_8vbks_266 > .awsui_tabs-tab-action_14rmt_8vbks_262:not(#\9) {
277
+ .awsui_tabs-tab-header-container_14rmt_1piyt_266 > .awsui_tabs-tab-dismiss_14rmt_1piyt_261:not(#\9), .awsui_tabs-tab-header-container_14rmt_1piyt_266 > .awsui_tabs-tab-action_14rmt_1piyt_262:not(#\9) {
278
278
  display: flex;
279
279
  align-items: center;
280
280
  }
281
- .awsui_tabs-tab-header-container_14rmt_8vbks_266.awsui_refresh_14rmt_8vbks_281 > span:not(#\9):first-of-type {
281
+ .awsui_tabs-tab-header-container_14rmt_1piyt_266.awsui_refresh_14rmt_1piyt_281 > span:not(#\9):first-of-type {
282
282
  margin-inline-start: calc(-1 * var(--space-scaled-xs-26e2du, 8px));
283
283
  }
284
284
 
285
- .awsui_tabs-tab-header-container_14rmt_8vbks_266:not(#\9):not(.awsui_tabs-tab-disabled_14rmt_8vbks_285):after {
285
+ .awsui_tabs-tab-header-container_14rmt_1piyt_266:not(#\9):not(.awsui_tabs-tab-disabled_14rmt_1piyt_285):after {
286
286
  content: "";
287
287
  position: absolute;
288
288
  inset-inline-start: 0;
@@ -296,35 +296,35 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
296
296
  background: var(--color-border-tabs-underline-f1qo5r, #0972d3);
297
297
  opacity: 0;
298
298
  }
299
- .awsui_tabs-tab-header-container_14rmt_8vbks_266:not(#\9):not(.awsui_tabs-tab-disabled_14rmt_8vbks_285).awsui_refresh_14rmt_8vbks_281:after {
299
+ .awsui_tabs-tab-header-container_14rmt_1piyt_266:not(#\9):not(.awsui_tabs-tab-disabled_14rmt_1piyt_285).awsui_refresh_14rmt_1piyt_281:after {
300
300
  transition: opacity var(--motion-duration-refresh-only-medium-nf6485, 165ms) var(--motion-easing-refresh-only-c-vg1m9h, cubic-bezier(0.84, 0, 0.16, 1));
301
301
  }
302
302
  @media (prefers-reduced-motion: reduce) {
303
- .awsui_tabs-tab-header-container_14rmt_8vbks_266:not(#\9):not(.awsui_tabs-tab-disabled_14rmt_8vbks_285).awsui_refresh_14rmt_8vbks_281:after {
303
+ .awsui_tabs-tab-header-container_14rmt_1piyt_266:not(#\9):not(.awsui_tabs-tab-disabled_14rmt_1piyt_285).awsui_refresh_14rmt_1piyt_281:after {
304
304
  animation: none;
305
305
  transition: none;
306
306
  }
307
307
  }
308
- .awsui-motion-disabled .awsui_tabs-tab-header-container_14rmt_8vbks_266:not(#\9):not(.awsui_tabs-tab-disabled_14rmt_8vbks_285).awsui_refresh_14rmt_8vbks_281:after, .awsui-mode-entering .awsui_tabs-tab-header-container_14rmt_8vbks_266:not(#\9):not(.awsui_tabs-tab-disabled_14rmt_8vbks_285).awsui_refresh_14rmt_8vbks_281:after {
308
+ .awsui-motion-disabled .awsui_tabs-tab-header-container_14rmt_1piyt_266:not(#\9):not(.awsui_tabs-tab-disabled_14rmt_1piyt_285).awsui_refresh_14rmt_1piyt_281:after, .awsui-mode-entering .awsui_tabs-tab-header-container_14rmt_1piyt_266:not(#\9):not(.awsui_tabs-tab-disabled_14rmt_1piyt_285).awsui_refresh_14rmt_1piyt_281:after {
309
309
  animation: none;
310
310
  transition: none;
311
311
  }
312
312
 
313
- .awsui_tabs-tab_14rmt_8vbks_241:not(#\9):not(:last-child) > .awsui_tabs-tab-header-container_14rmt_8vbks_266 {
313
+ .awsui_tabs-tab_14rmt_1piyt_241:not(#\9):not(:last-child) > .awsui_tabs-tab-header-container_14rmt_1piyt_266 {
314
314
  margin-inline-end: calc(-1 * var(--border-divider-section-width-1061zr, 1px));
315
315
  }
316
- .awsui_tabs-tab_14rmt_8vbks_241:not(#\9):not(:last-child) > .awsui_tabs-tab-header-container_14rmt_8vbks_266:before {
316
+ .awsui_tabs-tab_14rmt_1piyt_241:not(#\9):not(:last-child) > .awsui_tabs-tab-header-container_14rmt_1piyt_266:before {
317
317
  content: "";
318
318
  position: absolute;
319
319
  border-inline-end: var(--border-divider-section-width-1061zr, 1px) solid var(--color-border-tabs-divider-6vpso4, #b6bec9);
320
320
  inset: calc(var(--space-scaled-s-aqzyko, 12px)) 0;
321
321
  opacity: 1;
322
322
  }
323
- .awsui_tabs-tab_14rmt_8vbks_241:not(#\9):not(:last-child) > .awsui_tabs-tab-header-container_14rmt_8vbks_266.awsui_refresh_14rmt_8vbks_281:before {
323
+ .awsui_tabs-tab_14rmt_1piyt_241:not(#\9):not(:last-child) > .awsui_tabs-tab-header-container_14rmt_1piyt_266.awsui_refresh_14rmt_1piyt_281:before {
324
324
  inset: calc(var(--space-scaled-s-aqzyko, 12px) - var(--border-active-width-9dmqf4, 4px)) 0;
325
325
  }
326
326
 
327
- .awsui_tabs-tab-link_14rmt_8vbks_327:not(#\9) {
327
+ .awsui_tabs-tab-link_14rmt_1piyt_327:not(#\9) {
328
328
  position: relative;
329
329
  display: flex;
330
330
  align-items: stretch;
@@ -345,27 +345,27 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
345
345
  -webkit-font-smoothing: var(--font-smoothing-webkit-m8nc84, antialiased);
346
346
  -moz-osx-font-smoothing: var(--font-smoothing-moz-osx-foywby, grayscale);
347
347
  }
348
- .awsui_tabs-tab-link_14rmt_8vbks_327.awsui_refresh_14rmt_8vbks_281:not(#\9) {
348
+ .awsui_tabs-tab-link_14rmt_1piyt_327.awsui_refresh_14rmt_1piyt_281:not(#\9) {
349
349
  padding-block-start: calc(var(--space-static-xs-7sfb63, 8px) - 1px);
350
350
  padding-block-end: calc(var(--space-static-xs-7sfb63, 8px) - 1px);
351
351
  margin-block-start: 0;
352
352
  }
353
- .awsui_tabs-tab-link_14rmt_8vbks_327:not(#\9):hover {
353
+ .awsui_tabs-tab-link_14rmt_1piyt_327:not(#\9):hover {
354
354
  color: var(--color-text-accent-n2acxv, #0972d3);
355
355
  }
356
- .awsui_tabs-tab-link_14rmt_8vbks_327:not(#\9):focus {
356
+ .awsui_tabs-tab-link_14rmt_1piyt_327:not(#\9):focus {
357
357
  outline: none;
358
358
  }
359
- body[data-awsui-focus-visible=true] .awsui_tabs-tab-link_14rmt_8vbks_327:not(#\9):focus {
359
+ body[data-awsui-focus-visible=true] .awsui_tabs-tab-link_14rmt_1piyt_327:not(#\9):focus {
360
360
  z-index: 1;
361
361
  position: relative;
362
362
  border-inline-end-color: transparent;
363
363
  }
364
- body[data-awsui-focus-visible=true] .awsui_tabs-tab-link_14rmt_8vbks_327:not(#\9):focus {
364
+ body[data-awsui-focus-visible=true] .awsui_tabs-tab-link_14rmt_1piyt_327:not(#\9):focus {
365
365
  outline: 2px dotted transparent;
366
366
  outline-offset: calc(var(--space-tabs-focus-outline-gutter-xm37ly, -8px) - 1px);
367
367
  }
368
- body[data-awsui-focus-visible=true] .awsui_tabs-tab-link_14rmt_8vbks_327:not(#\9):focus::before {
368
+ body[data-awsui-focus-visible=true] .awsui_tabs-tab-link_14rmt_1piyt_327:not(#\9):focus::before {
369
369
  content: " ";
370
370
  display: block;
371
371
  position: absolute;
@@ -380,43 +380,46 @@ body[data-awsui-focus-visible=true] .awsui_tabs-tab-link_14rmt_8vbks_327:not(#\9
380
380
  box-shadow: 0 0 0 2px var(--color-border-item-focused-b2ntyl, #0972d3);
381
381
  }
382
382
 
383
- .awsui_tabs-tab_14rmt_8vbks_241:not(#\9):first-child {
383
+ .awsui_tabs-tab_14rmt_1piyt_241:not(#\9):first-child {
384
384
  margin-inline-start: 1px;
385
385
  }
386
- .awsui_tabs-tab_14rmt_8vbks_241:not(#\9):first-child > .awsui_tabs-tab-header-container_14rmt_8vbks_266 {
386
+ .awsui_tabs-tab_14rmt_1piyt_241:not(#\9):first-child > .awsui_tabs-tab-header-container_14rmt_1piyt_266 {
387
387
  padding-inline-start: calc(var(--space-xs-zb16t3, 8px) - 1px);
388
388
  }
389
389
 
390
- .awsui_tabs-tab_14rmt_8vbks_241:not(#\9):last-child {
390
+ .awsui_tabs-tab_14rmt_1piyt_241:not(#\9):last-child {
391
391
  margin-inline-end: 1px;
392
392
  }
393
- .awsui_tabs-tab_14rmt_8vbks_241:not(#\9):last-child > .awsui_tabs-tab-header-container_14rmt_8vbks_266 {
393
+ .awsui_tabs-tab_14rmt_1piyt_241:not(#\9):last-child > .awsui_tabs-tab-header-container_14rmt_1piyt_266 {
394
394
  padding-inline-end: calc(var(--space-xs-zb16t3, 8px) - 1px);
395
395
  }
396
396
 
397
- .awsui_tabs-tab-disabled_14rmt_8vbks_285:not(#\9), .awsui_tabs-tab-disabled_14rmt_8vbks_285:not(#\9):hover {
398
- pointer-events: none;
397
+ .awsui_tabs-tab-disabled_14rmt_1piyt_285:not(#\9), .awsui_tabs-tab-disabled_14rmt_1piyt_285:not(#\9):hover {
399
398
  cursor: default;
400
399
  color: var(--color-text-interactive-disabled-z7a3t4, #9ba7b6);
401
400
  font-weight: var(--font-tabs-disabled-weight-1xcs5l, 700);
402
401
  }
403
402
 
404
- .awsui_tabs-tab-active_14rmt_8vbks_404:not(#\9):not(.awsui_tabs-tab-disabled_14rmt_8vbks_285) {
403
+ .awsui_tabs-tab-active_14rmt_1piyt_403:not(#\9):not(.awsui_tabs-tab-disabled_14rmt_1piyt_285) {
405
404
  color: var(--color-text-accent-n2acxv, #0972d3);
406
405
  }
407
- .awsui_tabs-tab-active_14rmt_8vbks_404:not(#\9):not(.awsui_tabs-tab-disabled_14rmt_8vbks_285):after {
406
+ .awsui_tabs-tab-active_14rmt_1piyt_403:not(#\9):not(.awsui_tabs-tab-disabled_14rmt_1piyt_285):after {
408
407
  opacity: 1;
409
408
  }
410
409
 
411
- .awsui_tabs-header-with-divider_14rmt_8vbks_411:not(#\9) {
410
+ .awsui_tabs-header-with-divider_14rmt_1piyt_410:not(#\9) {
412
411
  border-block-end: var(--border-divider-section-width-1061zr, 1px) solid var(--color-border-tabs-divider-6vpso4, #b6bec9);
413
412
  }
414
413
 
415
- .awsui_root_14rmt_8vbks_415:not(#\9) {
414
+ .awsui_tabs-tab-focusable_14rmt_1piyt_414:not(#\9) {
415
+ /* used to manage focusable logic */
416
+ }
417
+
418
+ .awsui_root_14rmt_1piyt_418:not(#\9) {
416
419
  /* used in test-utils or tests */
417
420
  }
418
421
 
419
- .awsui_tabs_14rmt_8vbks_194:not(#\9) {
422
+ .awsui_tabs_14rmt_1piyt_194:not(#\9) {
420
423
  border-collapse: separate;
421
424
  border-spacing: 0;
422
425
  box-sizing: border-box;
@@ -454,21 +457,21 @@ body[data-awsui-focus-visible=true] .awsui_tabs-tab-link_14rmt_8vbks_327:not(#\9
454
457
  inline-size: 100%;
455
458
  }
456
459
 
457
- .awsui_tabs-content_14rmt_8vbks_456:not(#\9) {
460
+ .awsui_tabs-content_14rmt_1piyt_459:not(#\9) {
458
461
  display: none;
459
462
  }
460
463
 
461
- .awsui_fit-height_14rmt_8vbks_460:not(#\9) {
464
+ .awsui_fit-height_14rmt_1piyt_463:not(#\9) {
462
465
  display: flex;
463
466
  flex-direction: column;
464
467
  block-size: 100%;
465
468
  }
466
469
 
467
- .awsui_tabs-content-active_14rmt_8vbks_466:not(#\9) {
470
+ .awsui_tabs-content-active_14rmt_1piyt_469:not(#\9) {
468
471
  display: block;
469
472
  flex: 1;
470
473
  }
471
- body[data-awsui-focus-visible=true] .awsui_tabs-content-active_14rmt_8vbks_466:not(#\9):focus {
474
+ body[data-awsui-focus-visible=true] .awsui_tabs-content-active_14rmt_1piyt_469:not(#\9):focus {
472
475
  outline: 2px dotted transparent;
473
476
  outline-offset: 2px;
474
477
  border-start-start-radius: var(--border-radius-container-wqv1zi, 16px);
@@ -478,24 +481,32 @@ body[data-awsui-focus-visible=true] .awsui_tabs-content-active_14rmt_8vbks_466:n
478
481
  box-shadow: 0 0 0 2px var(--color-border-item-focused-b2ntyl, #0972d3);
479
482
  }
480
483
 
481
- .awsui_tabs-content-wrapper_14rmt_8vbks_480.awsui_with-paddings_14rmt_8vbks_480 > .awsui_tabs-content_14rmt_8vbks_456:not(#\9) {
484
+ .awsui_tabs-content-wrapper_14rmt_1piyt_483.awsui_with-paddings_14rmt_1piyt_483 > .awsui_tabs-content_14rmt_1piyt_459:not(#\9) {
482
485
  padding-block: var(--space-scaled-m-mo5yse, 16px);
483
486
  padding-inline: 0;
484
487
  }
485
- .awsui_fit-height_14rmt_8vbks_460 > .awsui_tabs-content-wrapper_14rmt_8vbks_480:not(#\9) {
488
+ .awsui_fit-height_14rmt_1piyt_463 > .awsui_tabs-content-wrapper_14rmt_1piyt_483:not(#\9) {
486
489
  flex: 1;
487
490
  display: flex;
488
491
  flex-direction: column;
489
492
  overflow: auto;
490
493
  }
491
494
 
492
- .awsui_fit-height_14rmt_8vbks_460 > .awsui_tabs-content-wrapper_14rmt_8vbks_480 > .awsui_tabs-container-content-wrapper_14rmt_8vbks_491:not(#\9) {
495
+ .awsui_fit-height_14rmt_1piyt_463 > .awsui_tabs-content-wrapper_14rmt_1piyt_483 > .awsui_tabs-container-content-wrapper_14rmt_1piyt_494:not(#\9) {
493
496
  block-size: 100%;
494
497
  display: flex;
495
498
  flex-direction: column;
496
499
  }
497
- .awsui_tabs-container-content-wrapper_14rmt_8vbks_491.awsui_with-paddings_14rmt_8vbks_480 > .awsui_tabs-content_14rmt_8vbks_456:not(#\9) {
500
+ .awsui_tabs-container-content-wrapper_14rmt_1piyt_494.awsui_with-paddings_14rmt_1piyt_483 > .awsui_tabs-content_14rmt_1piyt_459:not(#\9) {
498
501
  padding-block-start: var(--space-tabs-content-top-dedu0k, 12px);
499
502
  padding-block-end: var(--space-scaled-l-0hpmd7, 20px);
500
503
  padding-inline: var(--space-container-horizontal-wfukh3, 20px);
504
+ }
505
+
506
+ .awsui_disabled-reason-tooltip_14rmt_1piyt_505:not(#\9) {
507
+ /* used in test-utils or tests */
508
+ }
509
+
510
+ .awsui_tabs-tab-focused_14rmt_1piyt_509:not(#\9) {
511
+ /* used to manage focusable state for disabled with reason tabs */
501
512
  }
@@ -2,30 +2,33 @@
2
2
  // es-module interop with Babel and Typescript
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  module.exports.default = {
5
- "tabs-header": "awsui_tabs-header_14rmt_8vbks_194",
6
- "tabs-header-list": "awsui_tabs-header-list_14rmt_8vbks_202",
7
- "pagination-button": "awsui_pagination-button_14rmt_8vbks_219",
8
- "pagination-button-left": "awsui_pagination-button-left_14rmt_8vbks_226",
9
- "pagination-button-left-scrollable": "awsui_pagination-button-left-scrollable_14rmt_8vbks_229",
10
- "pagination-button-right": "awsui_pagination-button-right_14rmt_8vbks_233",
11
- "pagination-button-right-scrollable": "awsui_pagination-button-right-scrollable_14rmt_8vbks_236",
12
- "tabs-tab": "awsui_tabs-tab_14rmt_8vbks_241",
13
- "tabs-tab-label": "awsui_tabs-tab-label_14rmt_8vbks_250",
14
- "tabs-tab-dismiss": "awsui_tabs-tab-dismiss_14rmt_8vbks_261",
15
- "tabs-tab-action": "awsui_tabs-tab-action_14rmt_8vbks_262",
16
- "tabs-tab-header-container": "awsui_tabs-tab-header-container_14rmt_8vbks_266",
17
- "refresh": "awsui_refresh_14rmt_8vbks_281",
18
- "tabs-tab-disabled": "awsui_tabs-tab-disabled_14rmt_8vbks_285",
19
- "tabs-tab-link": "awsui_tabs-tab-link_14rmt_8vbks_327",
20
- "tabs-tab-active": "awsui_tabs-tab-active_14rmt_8vbks_404",
21
- "tabs-header-with-divider": "awsui_tabs-header-with-divider_14rmt_8vbks_411",
22
- "root": "awsui_root_14rmt_8vbks_415",
23
- "tabs": "awsui_tabs_14rmt_8vbks_194",
24
- "tabs-content": "awsui_tabs-content_14rmt_8vbks_456",
25
- "fit-height": "awsui_fit-height_14rmt_8vbks_460",
26
- "tabs-content-active": "awsui_tabs-content-active_14rmt_8vbks_466",
27
- "tabs-content-wrapper": "awsui_tabs-content-wrapper_14rmt_8vbks_480",
28
- "with-paddings": "awsui_with-paddings_14rmt_8vbks_480",
29
- "tabs-container-content-wrapper": "awsui_tabs-container-content-wrapper_14rmt_8vbks_491"
5
+ "tabs-header": "awsui_tabs-header_14rmt_1piyt_194",
6
+ "tabs-header-list": "awsui_tabs-header-list_14rmt_1piyt_202",
7
+ "pagination-button": "awsui_pagination-button_14rmt_1piyt_219",
8
+ "pagination-button-left": "awsui_pagination-button-left_14rmt_1piyt_226",
9
+ "pagination-button-left-scrollable": "awsui_pagination-button-left-scrollable_14rmt_1piyt_229",
10
+ "pagination-button-right": "awsui_pagination-button-right_14rmt_1piyt_233",
11
+ "pagination-button-right-scrollable": "awsui_pagination-button-right-scrollable_14rmt_1piyt_236",
12
+ "tabs-tab": "awsui_tabs-tab_14rmt_1piyt_241",
13
+ "tabs-tab-label": "awsui_tabs-tab-label_14rmt_1piyt_250",
14
+ "tabs-tab-dismiss": "awsui_tabs-tab-dismiss_14rmt_1piyt_261",
15
+ "tabs-tab-action": "awsui_tabs-tab-action_14rmt_1piyt_262",
16
+ "tabs-tab-header-container": "awsui_tabs-tab-header-container_14rmt_1piyt_266",
17
+ "refresh": "awsui_refresh_14rmt_1piyt_281",
18
+ "tabs-tab-disabled": "awsui_tabs-tab-disabled_14rmt_1piyt_285",
19
+ "tabs-tab-link": "awsui_tabs-tab-link_14rmt_1piyt_327",
20
+ "tabs-tab-active": "awsui_tabs-tab-active_14rmt_1piyt_403",
21
+ "tabs-header-with-divider": "awsui_tabs-header-with-divider_14rmt_1piyt_410",
22
+ "tabs-tab-focusable": "awsui_tabs-tab-focusable_14rmt_1piyt_414",
23
+ "root": "awsui_root_14rmt_1piyt_418",
24
+ "tabs": "awsui_tabs_14rmt_1piyt_194",
25
+ "tabs-content": "awsui_tabs-content_14rmt_1piyt_459",
26
+ "fit-height": "awsui_fit-height_14rmt_1piyt_463",
27
+ "tabs-content-active": "awsui_tabs-content-active_14rmt_1piyt_469",
28
+ "tabs-content-wrapper": "awsui_tabs-content-wrapper_14rmt_1piyt_483",
29
+ "with-paddings": "awsui_with-paddings_14rmt_1piyt_483",
30
+ "tabs-container-content-wrapper": "awsui_tabs-container-content-wrapper_14rmt_1piyt_494",
31
+ "disabled-reason-tooltip": "awsui_disabled-reason-tooltip_14rmt_1piyt_505",
32
+ "tabs-tab-focused": "awsui_tabs-tab-focused_14rmt_1piyt_509"
30
33
  };
31
34
 
@@ -1 +1 @@
1
- {"version":3,"file":"tab-header-bar.d.ts","sourceRoot":"","sources":["../../../src/tabs/tab-header-bar.tsx"],"names":[],"mappings":";AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AA8CzC,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,CAAC,YAAY,EAAE,SAAS,CAAC,YAAY,KAAK,IAAI,CAAC;IACzD,WAAW,EAAE,SAAS,CAAC,aAAa,CAAC,CAAC;IACtC,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IACxB,OAAO,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,SAAS,CAAC,WAAW,CAAC;CACrC;AAED,wBAAgB,YAAY,CAAC,EAC3B,QAAQ,EACR,WAAW,EACX,IAAI,EACJ,OAAO,EACP,WAAW,EACX,SAAS,EACT,cAAc,EACd,WAAW,GACZ,EAAE,iBAAiB,eA6XnB;AAqBD,wBAAgB,eAAe,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,UAEzF"}
1
+ {"version":3,"file":"tab-header-bar.d.ts","sourceRoot":"","sources":["../../../src/tabs/tab-header-bar.tsx"],"names":[],"mappings":";AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAkDzC,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,CAAC,YAAY,EAAE,SAAS,CAAC,YAAY,KAAK,IAAI,CAAC;IACzD,WAAW,EAAE,SAAS,CAAC,aAAa,CAAC,CAAC;IACtC,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IACxB,OAAO,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,SAAS,CAAC,WAAW,CAAC;CACrC;AAED,wBAAgB,YAAY,CAAC,EAC3B,QAAQ,EACR,WAAW,EACX,IAAI,EACJ,OAAO,EACP,WAAW,EACX,SAAS,EACT,cAAc,EACd,WAAW,GACZ,EAAE,iBAAiB,eAoYnB;AAgED,wBAAgB,eAAe,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,UAEzF"}
@@ -14,8 +14,12 @@ import { useContainerQuery } from '@cloudscape-design/component-toolkit';
14
14
  import { SingleTabStopNavigationProvider, useSingleTabStopNavigation, } from '../internal/context/single-tab-stop-navigation-context';
15
15
  import { useMergeRefs } from '../internal/hooks/use-merge-refs';
16
16
  import { getAllFocusables } from '../internal/components/focus-lock/utils';
17
+ import useHiddenDescription from '../internal/hooks/use-hidden-description';
18
+ import Tooltip from '../internal/components/tooltip';
17
19
  import { nodeBelongs } from '../internal/utils/node-belongs';
18
20
  const tabSelector = `.${styles['tabs-tab-link']}`;
21
+ const focusedTabSelector = `[role="tab"].${styles['tabs-tab-focused']}`;
22
+ const focusableTabSelector = `.${styles['tabs-tab-focusable']}`;
19
23
  function dismissButton(dismissLabel, dismissDisabled, onDismiss) {
20
24
  return (React.createElement(InternalButton, { onClick: onDismiss, variant: "icon", iconName: "close", formAction: "none", ariaLabel: dismissLabel, disabled: dismissDisabled }));
21
25
  }
@@ -32,6 +36,7 @@ export function TabHeaderBar({ onChange, activeTabId, tabs, variant, idNamespace
32
36
  const [horizontalOverflow, setHorizontalOverflow] = useState(false);
33
37
  const [inlineStartOverflow, setInlineStartOverflow] = useState(false);
34
38
  const [inlineEndOverflow, setInlineEndOverflow] = useState(false);
39
+ const [focusedTabId, setFocusedTabId] = useState(activeTabId);
35
40
  const [previousActiveTabId, setPreviousActiveTabId] = useState(activeTabId);
36
41
  const hasActionOrDismissible = tabs.some(tab => tab.action || tab.dismissible);
37
42
  const tabActionAttributes = hasActionOrDismissible
@@ -112,9 +117,7 @@ export function TabHeaderBar({ onChange, activeTabId, tabs, variant, idNamespace
112
117
  return null;
113
118
  }
114
119
  const tabElements = Array.from(containerObjectRef.current.querySelectorAll(tabSelector));
115
- const tabAriaSelector = hasActionOrDismissible ? '[aria-expanded="true"]' : '[aria-selected="true"]';
116
- const activeTabSelector = `${tabSelector}${tabAriaSelector}`;
117
- return (_b = (_a = tabElements.find(tab => tab.matches(activeTabSelector))) !== null && _a !== void 0 ? _a : tabElements.find(tab => !tab.disabled)) !== null && _b !== void 0 ? _b : null;
120
+ return (_b = (_a = tabElements.find(tab => tab.matches(focusedTabSelector))) !== null && _a !== void 0 ? _a : tabElements.find(tab => !tab.disabled)) !== null && _b !== void 0 ? _b : null;
118
121
  }
119
122
  function onUnregisterFocusable(focusableElement) {
120
123
  const isUnregisteringFocusedNode = nodeBelongs(focusableElement, document.activeElement);
@@ -174,7 +177,7 @@ export function TabHeaderBar({ onChange, activeTabId, tabs, variant, idNamespace
174
177
  });
175
178
  }
176
179
  function focusElement(element) {
177
- var _a;
180
+ var _a, _b;
178
181
  element.focus();
179
182
  // If focusable element is a tab - fire the onChange for it.
180
183
  const tabsById = tabs.reduce((map, tab) => map.set(tab.id, tab), new Map());
@@ -182,7 +185,10 @@ export function TabHeaderBar({ onChange, activeTabId, tabs, variant, idNamespace
182
185
  const focusTargetTabLabelElement = focusTargetTabTriggerElement === null || focusTargetTabTriggerElement === void 0 ? void 0 : focusTargetTabTriggerElement.querySelector(`.${styles['tabs-tab-link']}`);
183
186
  if (tabId !== activeTabId && focusTargetTabLabelElement === element) {
184
187
  setPreviousActiveTabId(tabId);
185
- onChange({ activeTabId: tabId, activeTabHref: (_a = tabsById.get(tabId)) === null || _a === void 0 ? void 0 : _a.href });
188
+ setFocusedTabId(tabId);
189
+ if (!((_a = tabsById.get(tabId)) === null || _a === void 0 ? void 0 : _a.disabled)) {
190
+ onChange({ activeTabId: tabId, activeTabHref: (_b = tabsById.get(tabId)) === null || _b === void 0 ? void 0 : _b.href });
191
+ }
186
192
  break;
187
193
  }
188
194
  }
@@ -193,13 +199,13 @@ export function TabHeaderBar({ onChange, activeTabId, tabs, variant, idNamespace
193
199
  var _a, _b;
194
200
  return (_b = (_a = navigationAPI.current) === null || _a === void 0 ? void 0 : _a.isRegistered(element)) !== null && _b !== void 0 ? _b : false;
195
201
  }
196
- function isElementDisabled(element) {
202
+ function isElementFocusable(element) {
197
203
  if (element instanceof HTMLButtonElement) {
198
- return element.disabled || element.closest(`.${styles['tabs-tab-disabled']}`);
204
+ return !element.disabled || element.closest(focusableTabSelector);
199
205
  }
200
- return false;
206
+ return element.matches(focusableTabSelector);
201
207
  }
202
- return getAllFocusables(target).filter(el => isElementRegistered(el) && !isElementDisabled(el));
208
+ return getAllFocusables(target).filter(el => isElementRegistered(el) && isElementFocusable(el));
203
209
  }
204
210
  const TabList = hasActionOrDismissible ? 'div' : 'ul';
205
211
  return (
@@ -237,20 +243,25 @@ export function TabHeaderBar({ onChange, activeTabId, tabs, variant, idNamespace
237
243
  if (tab.id === activeTabId) {
238
244
  return;
239
245
  }
246
+ setFocusedTabId(tab.id);
240
247
  setPreviousActiveTabId(tab.id);
241
248
  onChange({ activeTabId: tab.id, activeTabHref: tab.href });
242
249
  };
243
250
  const classes = clsx({
244
251
  [styles['tabs-tab-link']]: true,
245
252
  [styles.refresh]: isVisualRefresh,
253
+ [styles['tabs-tab-active']]: activeTabId === tab.id && !tab.disabled,
254
+ [styles['tabs-tab-focused']]: focusedTabId === tab.id,
246
255
  [styles['tabs-tab-active']]: isActive,
247
256
  [styles['tabs-tab-disabled']]: tab.disabled,
257
+ [styles['tabs-tab-focusable']]: !tab.disabled || (tab.disabled && !!tab.disabledReason),
248
258
  });
249
259
  const tabHeaderContainerClasses = clsx({
250
260
  [styles['tabs-tab-header-container']]: true,
251
261
  [styles.refresh]: isVisualRefresh,
252
262
  [styles['tabs-tab-active']]: isActive,
253
263
  [styles['tabs-tab-disabled']]: tab.disabled,
264
+ [styles['tabs-tab-focusable']]: !tab.disabled || (tab.disabled && !!tab.disabledReason),
254
265
  });
255
266
  const tabActionClasses = clsx({
256
267
  [styles['tabs-tab-action']]: true,
@@ -261,7 +272,7 @@ export function TabHeaderBar({ onChange, activeTabId, tabs, variant, idNamespace
261
272
  'aria-controls': `${idNamespace}-${tab.id}-panel`,
262
273
  'data-testid': tab.id,
263
274
  id: getTabElementId({ namespace: idNamespace, tabId: tab.id }),
264
- children: React.createElement("span", { className: styles['tabs-tab-label'] }, tab.label),
275
+ onClick: clickTab,
265
276
  };
266
277
  const tabHeaderContainerAriaProps = hasActionOrDismissible
267
278
  ? {
@@ -279,9 +290,6 @@ export function TabHeaderBar({ onChange, activeTabId, tabs, variant, idNamespace
279
290
  if (tab.disabled) {
280
291
  commonProps['aria-disabled'] = 'true';
281
292
  }
282
- else {
283
- commonProps.onClick = clickTab;
284
- }
285
293
  const setElement = (tabElement) => {
286
294
  if (tab.id === activeTabId) {
287
295
  activeTabHeaderRef.current = tabElement;
@@ -318,9 +326,25 @@ export function TabHeaderBar({ onChange, activeTabId, tabs, variant, idNamespace
318
326
  }
319
327
  const TabTrigger = forwardRef(({ tab, elementProps, }, ref) => {
320
328
  const refObject = useRef(null);
329
+ const tabLabelRefObject = useRef(null);
321
330
  const mergedRef = useMergeRefs(refObject, ref);
322
331
  const { tabIndex } = useSingleTabStopNavigation(refObject);
323
- return tab.href ? (React.createElement("a", Object.assign({}, elementProps, { href: tab.href, ref: mergedRef, tabIndex: tabIndex }))) : (React.createElement("button", Object.assign({}, elementProps, { type: "button", disabled: tab.disabled, ref: mergedRef, tabIndex: tabIndex })));
332
+ const isDisabledWithReason = tab.disabled && !!tab.disabledReason;
333
+ const [showTooltip, setShowTooltip] = useState(false);
334
+ const { targetProps, descriptionEl } = useHiddenDescription(tab.disabledReason);
335
+ const children = (React.createElement(React.Fragment, null,
336
+ React.createElement("span", { className: styles['tabs-tab-label'], ref: tabLabelRefObject }, tab.label),
337
+ isDisabledWithReason && (React.createElement(React.Fragment, null,
338
+ descriptionEl,
339
+ showTooltip && (React.createElement(Tooltip, { className: styles['disabled-reason-tooltip'], trackRef: tabLabelRefObject, value: tab.disabledReason }))))));
340
+ const handlers = {
341
+ onFocus: () => setShowTooltip(true),
342
+ onBlur: () => setShowTooltip(false),
343
+ onMouseEnter: () => setShowTooltip(true),
344
+ onMouseLeave: () => setShowTooltip(false),
345
+ };
346
+ const commonProps = Object.assign(Object.assign(Object.assign(Object.assign({}, elementProps), (isDisabledWithReason ? targetProps : {})), (isDisabledWithReason ? handlers : {})), { ref: mergedRef, tabIndex: tabIndex });
347
+ return tab.href ? (React.createElement("a", Object.assign({}, commonProps, { href: tab.href }), children)) : (React.createElement("button", Object.assign({}, commonProps, { type: "button", disabled: tab.disabled && !isDisabledWithReason }), children));
324
348
  });
325
349
  export function getTabElementId({ namespace, tabId }) {
326
350
  return namespace + '-' + tabId;