@cloudscape-design/components-themeable 3.0.663 → 3.0.665

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 (515) hide show
  1. package/lib/internal/manifest.json +1 -1
  2. package/lib/internal/scss/app-layout/visual-refresh/background.scss +0 -19
  3. package/lib/internal/scss/app-layout/visual-refresh/breadcrumbs.scss +0 -10
  4. package/lib/internal/scss/app-layout/visual-refresh/drawers.scss +0 -2
  5. package/lib/internal/scss/app-layout/visual-refresh/layout.scss +0 -9
  6. package/lib/internal/scss/app-layout/visual-refresh/notifications.scss +11 -1
  7. package/lib/internal/scss/app-layout/visual-refresh/tools.scss +0 -2
  8. package/lib/internal/scss/box/styles.scss +2 -5
  9. package/lib/internal/scss/button-dropdown/item-element/styles.scss +2 -1
  10. package/lib/internal/scss/code-editor/background-inline-svg.scss +0 -2
  11. package/lib/internal/scss/container/styles.scss +10 -2
  12. package/lib/internal/scss/drawer/styles.scss +2 -1
  13. package/lib/internal/scss/flashbar/collapsible.scss +0 -1
  14. package/lib/internal/scss/help-panel/styles.scss +11 -2
  15. package/lib/internal/scss/icon/mixins.scss +2 -1
  16. package/lib/internal/scss/input/styles.scss +2 -2
  17. package/lib/internal/scss/internal/components/abstract-switch/styles.scss +2 -2
  18. package/lib/internal/scss/internal/components/chart-popover-footer/styles.scss +1 -1
  19. package/lib/internal/scss/internal/components/token-list/styles.scss +0 -1
  20. package/lib/internal/scss/internal/styles/direction.scss +1 -2
  21. package/lib/internal/scss/internal/styles/forms/mixins.scss +2 -1
  22. package/lib/internal/scss/popover/body.scss +1 -2
  23. package/lib/internal/scss/popover/styles.scss +5 -0
  24. package/lib/internal/scss/s3-resource-selector/s3-in-context/styles.scss +1 -1
  25. package/lib/internal/scss/split-panel/styles.scss +0 -1
  26. package/lib/internal/scss/table/styles.scss +0 -2
  27. package/lib/internal/scss/textarea/styles.scss +1 -1
  28. package/lib/internal/scss/token-group/styles.scss +0 -1
  29. package/lib/internal/scss/tutorial-panel/components/tutorial-list/styles.scss +0 -1
  30. package/lib/internal/scss/wizard/styles.scss +4 -1
  31. package/lib/internal/template/alert/styles.css.js +25 -25
  32. package/lib/internal/template/alert/styles.scoped.css +39 -41
  33. package/lib/internal/template/alert/styles.selectors.js +25 -25
  34. package/lib/internal/template/anchor-navigation/styles.css.js +8 -8
  35. package/lib/internal/template/anchor-navigation/styles.scoped.css +18 -20
  36. package/lib/internal/template/anchor-navigation/styles.selectors.js +8 -8
  37. package/lib/internal/template/annotation-context/annotation/styles.css.js +24 -24
  38. package/lib/internal/template/annotation-context/annotation/styles.scoped.css +31 -32
  39. package/lib/internal/template/annotation-context/annotation/styles.selectors.js +24 -24
  40. package/lib/internal/template/app-layout/content-wrapper/styles.css.js +3 -3
  41. package/lib/internal/template/app-layout/content-wrapper/styles.scoped.css +6 -8
  42. package/lib/internal/template/app-layout/content-wrapper/styles.selectors.js +3 -3
  43. package/lib/internal/template/app-layout/drawer/index.js +2 -2
  44. package/lib/internal/template/app-layout/drawer/index.js.map +1 -1
  45. package/lib/internal/template/app-layout/drawer/styles.css.js +13 -13
  46. package/lib/internal/template/app-layout/drawer/styles.scoped.css +21 -23
  47. package/lib/internal/template/app-layout/drawer/styles.selectors.js +13 -13
  48. package/lib/internal/template/app-layout/mobile-toolbar/index.js +1 -1
  49. package/lib/internal/template/app-layout/mobile-toolbar/index.js.map +1 -1
  50. package/lib/internal/template/app-layout/mobile-toolbar/styles.css.js +8 -8
  51. package/lib/internal/template/app-layout/mobile-toolbar/styles.scoped.css +8 -10
  52. package/lib/internal/template/app-layout/mobile-toolbar/styles.selectors.js +8 -8
  53. package/lib/internal/template/app-layout/skeleton/styles.css.js +11 -11
  54. package/lib/internal/template/app-layout/skeleton/styles.scoped.css +20 -22
  55. package/lib/internal/template/app-layout/skeleton/styles.selectors.js +11 -11
  56. package/lib/internal/template/app-layout/split-panel/styles.css.js +2 -2
  57. package/lib/internal/template/app-layout/split-panel/styles.scoped.css +2 -4
  58. package/lib/internal/template/app-layout/split-panel/styles.selectors.js +2 -2
  59. package/lib/internal/template/app-layout/styles.css.js +16 -16
  60. package/lib/internal/template/app-layout/styles.scoped.css +19 -21
  61. package/lib/internal/template/app-layout/styles.selectors.js +16 -16
  62. package/lib/internal/template/app-layout/toggles/styles.css.js +2 -2
  63. package/lib/internal/template/app-layout/toggles/styles.scoped.css +6 -8
  64. package/lib/internal/template/app-layout/toggles/styles.selectors.js +2 -2
  65. package/lib/internal/template/app-layout/utils/sticky-offsets.d.ts +1 -1
  66. package/lib/internal/template/app-layout/utils/sticky-offsets.d.ts.map +1 -1
  67. package/lib/internal/template/app-layout/utils/sticky-offsets.js +2 -2
  68. package/lib/internal/template/app-layout/utils/sticky-offsets.js.map +1 -1
  69. package/lib/internal/template/app-layout/visual-refresh/background.d.ts.map +1 -1
  70. package/lib/internal/template/app-layout/visual-refresh/background.js +2 -5
  71. package/lib/internal/template/app-layout/visual-refresh/background.js.map +1 -1
  72. package/lib/internal/template/app-layout/visual-refresh/breadcrumbs.d.ts.map +1 -1
  73. package/lib/internal/template/app-layout/visual-refresh/breadcrumbs.js +1 -2
  74. package/lib/internal/template/app-layout/visual-refresh/breadcrumbs.js.map +1 -1
  75. package/lib/internal/template/app-layout/visual-refresh/context.d.ts +0 -2
  76. package/lib/internal/template/app-layout/visual-refresh/context.d.ts.map +1 -1
  77. package/lib/internal/template/app-layout/visual-refresh/context.js +2 -7
  78. package/lib/internal/template/app-layout/visual-refresh/context.js.map +1 -1
  79. package/lib/internal/template/app-layout/visual-refresh/drawers.js +2 -2
  80. package/lib/internal/template/app-layout/visual-refresh/drawers.js.map +1 -1
  81. package/lib/internal/template/app-layout/visual-refresh/layout.d.ts.map +1 -1
  82. package/lib/internal/template/app-layout/visual-refresh/layout.js +1 -3
  83. package/lib/internal/template/app-layout/visual-refresh/layout.js.map +1 -1
  84. package/lib/internal/template/app-layout/visual-refresh/main.d.ts.map +1 -1
  85. package/lib/internal/template/app-layout/visual-refresh/main.js +2 -4
  86. package/lib/internal/template/app-layout/visual-refresh/main.js.map +1 -1
  87. package/lib/internal/template/app-layout/visual-refresh/navigation.js +2 -2
  88. package/lib/internal/template/app-layout/visual-refresh/navigation.js.map +1 -1
  89. package/lib/internal/template/app-layout/visual-refresh/notifications.d.ts.map +1 -1
  90. package/lib/internal/template/app-layout/visual-refresh/notifications.js +3 -1
  91. package/lib/internal/template/app-layout/visual-refresh/notifications.js.map +1 -1
  92. package/lib/internal/template/app-layout/visual-refresh/styles.css.js +82 -83
  93. package/lib/internal/template/app-layout/visual-refresh/styles.scoped.css +169 -196
  94. package/lib/internal/template/app-layout/visual-refresh/styles.selectors.js +82 -83
  95. package/lib/internal/template/app-layout/visual-refresh/tools.js +2 -2
  96. package/lib/internal/template/app-layout/visual-refresh/tools.js.map +1 -1
  97. package/lib/internal/template/app-layout/visual-refresh/trigger-button.js +1 -1
  98. package/lib/internal/template/app-layout/visual-refresh/trigger-button.js.map +1 -1
  99. package/lib/internal/template/app-layout/visual-refresh/use-background-overlap.d.ts +0 -6
  100. package/lib/internal/template/app-layout/visual-refresh/use-background-overlap.d.ts.map +1 -1
  101. package/lib/internal/template/app-layout/visual-refresh/use-background-overlap.js +0 -6
  102. package/lib/internal/template/app-layout/visual-refresh/use-background-overlap.js.map +1 -1
  103. package/lib/internal/template/area-chart/styles.css.js +6 -6
  104. package/lib/internal/template/area-chart/styles.scoped.css +9 -11
  105. package/lib/internal/template/area-chart/styles.selectors.js +6 -6
  106. package/lib/internal/template/attribute-editor/styles.css.js +14 -14
  107. package/lib/internal/template/attribute-editor/styles.scoped.css +24 -26
  108. package/lib/internal/template/attribute-editor/styles.selectors.js +14 -14
  109. package/lib/internal/template/badge/styles.css.js +5 -5
  110. package/lib/internal/template/badge/styles.scoped.css +5 -7
  111. package/lib/internal/template/badge/styles.selectors.js +5 -5
  112. package/lib/internal/template/box/styles.css.js +191 -191
  113. package/lib/internal/template/box/styles.scoped.css +248 -446
  114. package/lib/internal/template/box/styles.selectors.js +191 -191
  115. package/lib/internal/template/breadcrumb-group/item/styles.css.js +8 -8
  116. package/lib/internal/template/breadcrumb-group/item/styles.scoped.css +16 -18
  117. package/lib/internal/template/breadcrumb-group/item/styles.selectors.js +8 -8
  118. package/lib/internal/template/breadcrumb-group/styles.css.js +7 -7
  119. package/lib/internal/template/breadcrumb-group/styles.scoped.css +12 -14
  120. package/lib/internal/template/breadcrumb-group/styles.selectors.js +7 -7
  121. package/lib/internal/template/button/styles.css.js +19 -19
  122. package/lib/internal/template/button/styles.scoped.css +153 -155
  123. package/lib/internal/template/button/styles.selectors.js +19 -19
  124. package/lib/internal/template/button-dropdown/category-elements/category-element.js +1 -1
  125. package/lib/internal/template/button-dropdown/category-elements/category-element.js.map +1 -1
  126. package/lib/internal/template/button-dropdown/category-elements/mobile-expandable-category-element.js +1 -1
  127. package/lib/internal/template/button-dropdown/category-elements/mobile-expandable-category-element.js.map +1 -1
  128. package/lib/internal/template/button-dropdown/category-elements/styles.css.js +14 -14
  129. package/lib/internal/template/button-dropdown/category-elements/styles.scoped.css +24 -25
  130. package/lib/internal/template/button-dropdown/category-elements/styles.selectors.js +14 -14
  131. package/lib/internal/template/button-dropdown/item-element/styles.css.js +11 -11
  132. package/lib/internal/template/button-dropdown/item-element/styles.scoped.css +16 -17
  133. package/lib/internal/template/button-dropdown/item-element/styles.selectors.js +11 -11
  134. package/lib/internal/template/button-dropdown/mobile-expandable-group/mobile-expandable-group.js +1 -1
  135. package/lib/internal/template/button-dropdown/mobile-expandable-group/mobile-expandable-group.js.map +1 -1
  136. package/lib/internal/template/button-dropdown/mobile-expandable-group/styles.css.js +5 -5
  137. package/lib/internal/template/button-dropdown/mobile-expandable-group/styles.scoped.css +5 -7
  138. package/lib/internal/template/button-dropdown/mobile-expandable-group/styles.selectors.js +5 -5
  139. package/lib/internal/template/button-dropdown/styles.css.js +15 -15
  140. package/lib/internal/template/button-dropdown/styles.scoped.css +22 -24
  141. package/lib/internal/template/button-dropdown/styles.selectors.js +15 -15
  142. package/lib/internal/template/calendar/styles.css.js +20 -20
  143. package/lib/internal/template/calendar/styles.scoped.css +42 -44
  144. package/lib/internal/template/calendar/styles.selectors.js +20 -20
  145. package/lib/internal/template/cards/styles.css.js +39 -39
  146. package/lib/internal/template/cards/styles.scoped.css +50 -52
  147. package/lib/internal/template/cards/styles.selectors.js +39 -39
  148. package/lib/internal/template/checkbox/styles.css.js +3 -3
  149. package/lib/internal/template/checkbox/styles.scoped.css +5 -7
  150. package/lib/internal/template/checkbox/styles.selectors.js +3 -3
  151. package/lib/internal/template/code-editor/resizable-box/styles.css.js +3 -3
  152. package/lib/internal/template/code-editor/resizable-box/styles.scoped.css +8 -10
  153. package/lib/internal/template/code-editor/resizable-box/styles.selectors.js +3 -3
  154. package/lib/internal/template/code-editor/styles.css.js +32 -32
  155. package/lib/internal/template/code-editor/styles.scoped.css +177 -211
  156. package/lib/internal/template/code-editor/styles.selectors.js +32 -32
  157. package/lib/internal/template/collection-preferences/content-display/styles.css.js +11 -11
  158. package/lib/internal/template/collection-preferences/content-display/styles.scoped.css +17 -21
  159. package/lib/internal/template/collection-preferences/content-display/styles.selectors.js +11 -11
  160. package/lib/internal/template/collection-preferences/styles.css.js +37 -37
  161. package/lib/internal/template/collection-preferences/styles.scoped.css +44 -52
  162. package/lib/internal/template/collection-preferences/styles.selectors.js +37 -37
  163. package/lib/internal/template/column-layout/styles.css.js +13 -13
  164. package/lib/internal/template/column-layout/styles.scoped.css +43 -45
  165. package/lib/internal/template/column-layout/styles.selectors.js +13 -13
  166. package/lib/internal/template/container/internal.d.ts.map +1 -1
  167. package/lib/internal/template/container/internal.js +7 -25
  168. package/lib/internal/template/container/internal.js.map +1 -1
  169. package/lib/internal/template/container/styles.css.js +30 -29
  170. package/lib/internal/template/container/styles.scoped.css +60 -55
  171. package/lib/internal/template/container/styles.selectors.js +30 -29
  172. package/lib/internal/template/container/use-sticky-header.d.ts +3 -2
  173. package/lib/internal/template/container/use-sticky-header.d.ts.map +1 -1
  174. package/lib/internal/template/container/use-sticky-header.js +5 -3
  175. package/lib/internal/template/container/use-sticky-header.js.map +1 -1
  176. package/lib/internal/template/content-layout/internal.js +2 -2
  177. package/lib/internal/template/content-layout/internal.js.map +1 -1
  178. package/lib/internal/template/content-layout/styles.css.js +14 -14
  179. package/lib/internal/template/content-layout/styles.scoped.css +16 -18
  180. package/lib/internal/template/content-layout/styles.selectors.js +14 -14
  181. package/lib/internal/template/date-picker/styles.css.js +7 -7
  182. package/lib/internal/template/date-picker/styles.scoped.css +9 -11
  183. package/lib/internal/template/date-picker/styles.selectors.js +7 -7
  184. package/lib/internal/template/date-range-picker/calendar/grids/styles.css.js +27 -27
  185. package/lib/internal/template/date-range-picker/calendar/grids/styles.scoped.css +42 -44
  186. package/lib/internal/template/date-range-picker/calendar/grids/styles.selectors.js +27 -27
  187. package/lib/internal/template/date-range-picker/relative-range/styles.css.js +9 -9
  188. package/lib/internal/template/date-range-picker/relative-range/styles.scoped.css +13 -15
  189. package/lib/internal/template/date-range-picker/relative-range/styles.selectors.js +9 -9
  190. package/lib/internal/template/date-range-picker/styles.css.js +39 -39
  191. package/lib/internal/template/date-range-picker/styles.scoped.css +48 -50
  192. package/lib/internal/template/date-range-picker/styles.selectors.js +39 -39
  193. package/lib/internal/template/drawer/implementation.js +2 -2
  194. package/lib/internal/template/drawer/implementation.js.map +1 -1
  195. package/lib/internal/template/drawer/styles.css.js +3 -3
  196. package/lib/internal/template/drawer/styles.scoped.css +10 -11
  197. package/lib/internal/template/drawer/styles.selectors.js +3 -3
  198. package/lib/internal/template/expandable-section/styles.css.js +32 -32
  199. package/lib/internal/template/expandable-section/styles.scoped.css +65 -66
  200. package/lib/internal/template/expandable-section/styles.selectors.js +32 -32
  201. package/lib/internal/template/file-upload/dropzone/styles.css.js +2 -2
  202. package/lib/internal/template/file-upload/dropzone/styles.scoped.css +2 -4
  203. package/lib/internal/template/file-upload/dropzone/styles.selectors.js +2 -2
  204. package/lib/internal/template/file-upload/file-input/styles.css.js +4 -4
  205. package/lib/internal/template/file-upload/file-input/styles.scoped.css +7 -9
  206. package/lib/internal/template/file-upload/file-input/styles.selectors.js +4 -4
  207. package/lib/internal/template/flashbar/styles.css.js +47 -47
  208. package/lib/internal/template/flashbar/styles.scoped.css +146 -154
  209. package/lib/internal/template/flashbar/styles.selectors.js +47 -47
  210. package/lib/internal/template/form/styles.css.js +8 -8
  211. package/lib/internal/template/form/styles.scoped.css +8 -10
  212. package/lib/internal/template/form/styles.selectors.js +8 -8
  213. package/lib/internal/template/form-field/styles.css.js +24 -24
  214. package/lib/internal/template/form-field/styles.scoped.css +38 -40
  215. package/lib/internal/template/form-field/styles.selectors.js +24 -24
  216. package/lib/internal/template/grid/styles.css.js +53 -53
  217. package/lib/internal/template/grid/styles.scoped.css +54 -56
  218. package/lib/internal/template/grid/styles.selectors.js +53 -53
  219. package/lib/internal/template/header/styles.css.js +34 -34
  220. package/lib/internal/template/header/styles.scoped.css +50 -52
  221. package/lib/internal/template/header/styles.selectors.js +34 -34
  222. package/lib/internal/template/help-panel/implementation.js +2 -2
  223. package/lib/internal/template/help-panel/implementation.js.map +1 -1
  224. package/lib/internal/template/help-panel/styles.css.js +4 -4
  225. package/lib/internal/template/help-panel/styles.scoped.css +78 -68
  226. package/lib/internal/template/help-panel/styles.selectors.js +4 -4
  227. package/lib/internal/template/hotspot/styles.css.js +7 -7
  228. package/lib/internal/template/hotspot/styles.scoped.css +7 -9
  229. package/lib/internal/template/hotspot/styles.selectors.js +7 -7
  230. package/lib/internal/template/icon/icons.js +1 -1
  231. package/lib/internal/template/icon/interfaces.d.ts +1 -1
  232. package/lib/internal/template/icon/interfaces.d.ts.map +1 -1
  233. package/lib/internal/template/icon/interfaces.js.map +1 -1
  234. package/lib/internal/template/icon/styles.css.js +37 -37
  235. package/lib/internal/template/icon/styles.scoped.css +84 -67
  236. package/lib/internal/template/icon/styles.selectors.js +37 -37
  237. package/lib/internal/template/input/styles.css.js +13 -13
  238. package/lib/internal/template/input/styles.scoped.css +34 -36
  239. package/lib/internal/template/input/styles.selectors.js +13 -13
  240. package/lib/internal/template/internal/analytics/index.d.ts +7 -1
  241. package/lib/internal/template/internal/analytics/index.d.ts.map +1 -1
  242. package/lib/internal/template/internal/analytics/index.js +10 -0
  243. package/lib/internal/template/internal/analytics/index.js.map +1 -1
  244. package/lib/internal/template/internal/analytics/interfaces.d.ts +12 -0
  245. package/lib/internal/template/internal/analytics/interfaces.d.ts.map +1 -1
  246. package/lib/internal/template/internal/analytics/interfaces.js.map +1 -1
  247. package/lib/internal/template/internal/base-component/index.d.ts +5 -3
  248. package/lib/internal/template/internal/base-component/index.d.ts.map +1 -1
  249. package/lib/internal/template/internal/base-component/index.js.map +1 -1
  250. package/lib/internal/template/internal/components/abstract-switch/styles.css.js +13 -13
  251. package/lib/internal/template/internal/components/abstract-switch/styles.scoped.css +23 -26
  252. package/lib/internal/template/internal/components/abstract-switch/styles.selectors.js +13 -13
  253. package/lib/internal/template/internal/components/button-trigger/styles.css.js +11 -11
  254. package/lib/internal/template/internal/components/button-trigger/styles.scoped.css +26 -28
  255. package/lib/internal/template/internal/components/button-trigger/styles.selectors.js +11 -11
  256. package/lib/internal/template/internal/components/cartesian-chart/inline-start-labels.js +1 -1
  257. package/lib/internal/template/internal/components/cartesian-chart/inline-start-labels.js.map +1 -1
  258. package/lib/internal/template/internal/components/chart-filter/styles.css.js +3 -3
  259. package/lib/internal/template/internal/components/chart-filter/styles.scoped.css +3 -5
  260. package/lib/internal/template/internal/components/chart-filter/styles.selectors.js +3 -3
  261. package/lib/internal/template/internal/components/chart-legend/styles.css.js +6 -6
  262. package/lib/internal/template/internal/components/chart-legend/styles.scoped.css +15 -17
  263. package/lib/internal/template/internal/components/chart-legend/styles.selectors.js +6 -6
  264. package/lib/internal/template/internal/components/chart-plot/styles.css.js +5 -5
  265. package/lib/internal/template/internal/components/chart-plot/styles.scoped.css +5 -7
  266. package/lib/internal/template/internal/components/chart-plot/styles.selectors.js +5 -5
  267. package/lib/internal/template/internal/components/chart-popover/styles.css.js +3 -3
  268. package/lib/internal/template/internal/components/chart-popover/styles.scoped.css +3 -5
  269. package/lib/internal/template/internal/components/chart-popover/styles.selectors.js +3 -3
  270. package/lib/internal/template/internal/components/chart-popover-footer/styles.css.js +1 -1
  271. package/lib/internal/template/internal/components/chart-popover-footer/styles.scoped.css +3 -3
  272. package/lib/internal/template/internal/components/chart-popover-footer/styles.selectors.js +1 -1
  273. package/lib/internal/template/internal/components/chart-series-details/styles.css.js +20 -20
  274. package/lib/internal/template/internal/components/chart-series-details/styles.scoped.css +33 -35
  275. package/lib/internal/template/internal/components/chart-series-details/styles.selectors.js +20 -20
  276. package/lib/internal/template/internal/components/chart-series-marker/styles.css.js +5 -5
  277. package/lib/internal/template/internal/components/chart-series-marker/styles.scoped.css +7 -9
  278. package/lib/internal/template/internal/components/chart-series-marker/styles.selectors.js +5 -5
  279. package/lib/internal/template/internal/components/chart-wrapper/styles.css.js +9 -9
  280. package/lib/internal/template/internal/components/chart-wrapper/styles.scoped.css +9 -11
  281. package/lib/internal/template/internal/components/chart-wrapper/styles.selectors.js +9 -9
  282. package/lib/internal/template/internal/components/checkbox-icon/styles.css.js +7 -7
  283. package/lib/internal/template/internal/components/checkbox-icon/styles.scoped.css +8 -10
  284. package/lib/internal/template/internal/components/checkbox-icon/styles.selectors.js +7 -7
  285. package/lib/internal/template/internal/components/dropdown/styles.css.js +20 -20
  286. package/lib/internal/template/internal/components/dropdown/styles.scoped.css +41 -41
  287. package/lib/internal/template/internal/components/dropdown/styles.selectors.js +20 -20
  288. package/lib/internal/template/internal/components/dropdown-footer/styles.css.js +3 -3
  289. package/lib/internal/template/internal/components/dropdown-footer/styles.scoped.css +3 -5
  290. package/lib/internal/template/internal/components/dropdown-footer/styles.selectors.js +3 -3
  291. package/lib/internal/template/internal/components/dropdown-status/styles.css.js +2 -2
  292. package/lib/internal/template/internal/components/dropdown-status/styles.scoped.css +2 -4
  293. package/lib/internal/template/internal/components/dropdown-status/styles.selectors.js +2 -2
  294. package/lib/internal/template/internal/components/filtering-token/styles.css.js +7 -7
  295. package/lib/internal/template/internal/components/filtering-token/styles.scoped.css +13 -15
  296. package/lib/internal/template/internal/components/filtering-token/styles.selectors.js +7 -7
  297. package/lib/internal/template/internal/components/handle/styles.css.js +2 -2
  298. package/lib/internal/template/internal/components/handle/styles.scoped.css +6 -8
  299. package/lib/internal/template/internal/components/handle/styles.selectors.js +2 -2
  300. package/lib/internal/template/internal/components/menu-dropdown/styles.css.js +7 -7
  301. package/lib/internal/template/internal/components/menu-dropdown/styles.scoped.css +13 -15
  302. package/lib/internal/template/internal/components/menu-dropdown/styles.selectors.js +7 -7
  303. package/lib/internal/template/internal/components/option/highlight-match.d.ts.map +1 -1
  304. package/lib/internal/template/internal/components/option/highlight-match.js +1 -2
  305. package/lib/internal/template/internal/components/option/highlight-match.js.map +1 -1
  306. package/lib/internal/template/internal/components/option/index.js +2 -2
  307. package/lib/internal/template/internal/components/option/index.js.map +1 -1
  308. package/lib/internal/template/internal/components/option/styles.css.js +17 -17
  309. package/lib/internal/template/internal/components/option/styles.scoped.css +29 -31
  310. package/lib/internal/template/internal/components/option/styles.selectors.js +17 -17
  311. package/lib/internal/template/internal/components/options-list/styles.css.js +2 -2
  312. package/lib/internal/template/internal/components/options-list/styles.scoped.css +2 -4
  313. package/lib/internal/template/internal/components/options-list/styles.selectors.js +2 -2
  314. package/lib/internal/template/internal/components/panel-resize-handle/styles.css.js +5 -5
  315. package/lib/internal/template/internal/components/panel-resize-handle/styles.scoped.css +10 -12
  316. package/lib/internal/template/internal/components/panel-resize-handle/styles.selectors.js +5 -5
  317. package/lib/internal/template/internal/components/screenreader-only/styles.css.js +1 -1
  318. package/lib/internal/template/internal/components/screenreader-only/styles.scoped.css +1 -3
  319. package/lib/internal/template/internal/components/screenreader-only/styles.selectors.js +1 -1
  320. package/lib/internal/template/internal/components/selectable-item/styles.css.js +16 -16
  321. package/lib/internal/template/internal/components/selectable-item/styles.scoped.css +29 -31
  322. package/lib/internal/template/internal/components/selectable-item/styles.selectors.js +16 -16
  323. package/lib/internal/template/internal/components/token-list/styles.css.js +9 -9
  324. package/lib/internal/template/internal/components/token-list/styles.scoped.css +20 -23
  325. package/lib/internal/template/internal/components/token-list/styles.selectors.js +9 -9
  326. package/lib/internal/template/internal/context/reset-contexts-for-modal.d.ts.map +1 -1
  327. package/lib/internal/template/internal/context/reset-contexts-for-modal.js +6 -8
  328. package/lib/internal/template/internal/context/reset-contexts-for-modal.js.map +1 -1
  329. package/lib/internal/template/internal/context/single-tab-stop-navigation-context.d.ts +16 -2
  330. package/lib/internal/template/internal/context/single-tab-stop-navigation-context.d.ts.map +1 -1
  331. package/lib/internal/template/internal/context/single-tab-stop-navigation-context.js +51 -1
  332. package/lib/internal/template/internal/context/single-tab-stop-navigation-context.js.map +1 -1
  333. package/lib/internal/template/internal/environment.js +1 -1
  334. package/lib/internal/template/internal/environment.json +1 -1
  335. package/lib/internal/template/internal/hooks/use-table-interaction-metrics/index.d.ts +10 -0
  336. package/lib/internal/template/internal/hooks/use-table-interaction-metrics/index.d.ts.map +1 -0
  337. package/lib/internal/template/internal/hooks/use-table-interaction-metrics/index.js +47 -0
  338. package/lib/internal/template/internal/hooks/use-table-interaction-metrics/index.js.map +1 -0
  339. package/lib/internal/template/link/styles.css.js +20 -20
  340. package/lib/internal/template/link/styles.scoped.css +71 -73
  341. package/lib/internal/template/link/styles.selectors.js +20 -20
  342. package/lib/internal/template/mixed-line-bar-chart/styles.css.js +11 -11
  343. package/lib/internal/template/mixed-line-bar-chart/styles.scoped.css +17 -19
  344. package/lib/internal/template/mixed-line-bar-chart/styles.selectors.js +11 -11
  345. package/lib/internal/template/modal/styles.css.js +23 -23
  346. package/lib/internal/template/modal/styles.scoped.css +38 -40
  347. package/lib/internal/template/modal/styles.selectors.js +23 -23
  348. package/lib/internal/template/multiselect/styles.css.js +2 -2
  349. package/lib/internal/template/multiselect/styles.scoped.css +2 -4
  350. package/lib/internal/template/multiselect/styles.selectors.js +2 -2
  351. package/lib/internal/template/pagination/styles.css.js +9 -9
  352. package/lib/internal/template/pagination/styles.scoped.css +23 -25
  353. package/lib/internal/template/pagination/styles.selectors.js +9 -9
  354. package/lib/internal/template/pie-chart/styles.css.js +27 -27
  355. package/lib/internal/template/pie-chart/styles.scoped.css +48 -50
  356. package/lib/internal/template/pie-chart/styles.selectors.js +27 -27
  357. package/lib/internal/template/popover/index.d.ts +1 -1
  358. package/lib/internal/template/popover/index.d.ts.map +1 -1
  359. package/lib/internal/template/popover/index.js +2 -2
  360. package/lib/internal/template/popover/index.js.map +1 -1
  361. package/lib/internal/template/popover/interfaces.d.ts +5 -0
  362. package/lib/internal/template/popover/interfaces.d.ts.map +1 -1
  363. package/lib/internal/template/popover/interfaces.js.map +1 -1
  364. package/lib/internal/template/popover/internal.js +2 -2
  365. package/lib/internal/template/popover/internal.js.map +1 -1
  366. package/lib/internal/template/popover/styles.css.js +50 -49
  367. package/lib/internal/template/popover/styles.scoped.css +78 -78
  368. package/lib/internal/template/popover/styles.selectors.js +50 -49
  369. package/lib/internal/template/progress-bar/styles.css.js +19 -19
  370. package/lib/internal/template/progress-bar/styles.scoped.css +33 -37
  371. package/lib/internal/template/progress-bar/styles.selectors.js +19 -19
  372. package/lib/internal/template/property-filter/styles.css.js +32 -32
  373. package/lib/internal/template/property-filter/styles.scoped.css +34 -36
  374. package/lib/internal/template/property-filter/styles.selectors.js +32 -32
  375. package/lib/internal/template/radio-group/styles.css.js +9 -9
  376. package/lib/internal/template/radio-group/styles.scoped.css +15 -17
  377. package/lib/internal/template/radio-group/styles.selectors.js +9 -9
  378. package/lib/internal/template/s3-resource-selector/s3-in-context/styles.css.js +7 -7
  379. package/lib/internal/template/s3-resource-selector/s3-in-context/styles.scoped.css +9 -9
  380. package/lib/internal/template/s3-resource-selector/s3-in-context/styles.selectors.js +7 -7
  381. package/lib/internal/template/segmented-control/styles.css.js +14 -14
  382. package/lib/internal/template/segmented-control/styles.scoped.css +33 -35
  383. package/lib/internal/template/segmented-control/styles.selectors.js +14 -14
  384. package/lib/internal/template/select/parts/styles.css.js +16 -16
  385. package/lib/internal/template/select/parts/styles.scoped.css +18 -19
  386. package/lib/internal/template/select/parts/styles.selectors.js +16 -16
  387. package/lib/internal/template/select/styles.css.js +1 -1
  388. package/lib/internal/template/select/styles.scoped.css +1 -3
  389. package/lib/internal/template/select/styles.selectors.js +1 -1
  390. package/lib/internal/template/side-navigation/styles.css.js +28 -28
  391. package/lib/internal/template/side-navigation/styles.scoped.css +38 -40
  392. package/lib/internal/template/side-navigation/styles.selectors.js +28 -28
  393. package/lib/internal/template/slider/internal.js +1 -1
  394. package/lib/internal/template/slider/internal.js.map +1 -1
  395. package/lib/internal/template/slider/slider-labels.js +1 -1
  396. package/lib/internal/template/slider/slider-labels.js.map +1 -1
  397. package/lib/internal/template/slider/styles.css.js +25 -25
  398. package/lib/internal/template/slider/styles.scoped.css +62 -64
  399. package/lib/internal/template/slider/styles.selectors.js +25 -25
  400. package/lib/internal/template/slider/tick-marks.js +2 -2
  401. package/lib/internal/template/slider/tick-marks.js.map +1 -1
  402. package/lib/internal/template/space-between/styles.css.js +23 -23
  403. package/lib/internal/template/space-between/styles.scoped.css +24 -26
  404. package/lib/internal/template/space-between/styles.selectors.js +23 -23
  405. package/lib/internal/template/spinner/styles.css.js +13 -13
  406. package/lib/internal/template/spinner/styles.scoped.css +20 -21
  407. package/lib/internal/template/spinner/styles.selectors.js +13 -13
  408. package/lib/internal/template/split-panel/icons/styles.css.js +22 -22
  409. package/lib/internal/template/split-panel/icons/styles.scoped.css +28 -24
  410. package/lib/internal/template/split-panel/icons/styles.selectors.js +22 -22
  411. package/lib/internal/template/split-panel/side.js +3 -3
  412. package/lib/internal/template/split-panel/side.js.map +1 -1
  413. package/lib/internal/template/split-panel/styles.css.js +26 -26
  414. package/lib/internal/template/split-panel/styles.scoped.css +41 -46
  415. package/lib/internal/template/split-panel/styles.selectors.js +26 -26
  416. package/lib/internal/template/status-indicator/styles.css.js +23 -23
  417. package/lib/internal/template/status-indicator/styles.scoped.css +29 -31
  418. package/lib/internal/template/status-indicator/styles.selectors.js +23 -23
  419. package/lib/internal/template/table/body-cell/styles.css.js +45 -45
  420. package/lib/internal/template/table/body-cell/styles.scoped.css +175 -174
  421. package/lib/internal/template/table/body-cell/styles.selectors.js +45 -45
  422. package/lib/internal/template/table/expandable-rows/styles.css.js +3 -3
  423. package/lib/internal/template/table/expandable-rows/styles.scoped.css +15 -15
  424. package/lib/internal/template/table/expandable-rows/styles.selectors.js +3 -3
  425. package/lib/internal/template/table/header-cell/styles.css.js +26 -26
  426. package/lib/internal/template/table/header-cell/styles.scoped.css +54 -54
  427. package/lib/internal/template/table/header-cell/styles.selectors.js +26 -26
  428. package/lib/internal/template/table/internal.d.ts.map +1 -1
  429. package/lib/internal/template/table/internal.js +23 -17
  430. package/lib/internal/template/table/internal.js.map +1 -1
  431. package/lib/internal/template/table/resizer/styles.css.js +8 -8
  432. package/lib/internal/template/table/resizer/styles.scoped.css +14 -16
  433. package/lib/internal/template/table/resizer/styles.selectors.js +8 -8
  434. package/lib/internal/template/table/selection/selection-control.js +1 -1
  435. package/lib/internal/template/table/selection/selection-control.js.map +1 -1
  436. package/lib/internal/template/table/selection/styles.css.js +3 -3
  437. package/lib/internal/template/table/selection/styles.scoped.css +3 -5
  438. package/lib/internal/template/table/selection/styles.selectors.js +3 -3
  439. package/lib/internal/template/table/sticky-scrollbar/styles.css.js +6 -6
  440. package/lib/internal/template/table/sticky-scrollbar/styles.scoped.css +7 -9
  441. package/lib/internal/template/table/sticky-scrollbar/styles.selectors.js +6 -6
  442. package/lib/internal/template/table/styles.css.js +34 -34
  443. package/lib/internal/template/table/styles.scoped.css +39 -43
  444. package/lib/internal/template/table/styles.selectors.js +34 -34
  445. package/lib/internal/template/table/table-role/grid-navigation.d.ts.map +1 -1
  446. package/lib/internal/template/table/table-role/grid-navigation.js +40 -67
  447. package/lib/internal/template/table/table-role/grid-navigation.js.map +1 -1
  448. package/lib/internal/template/table/thead.d.ts +1 -0
  449. package/lib/internal/template/table/thead.d.ts.map +1 -1
  450. package/lib/internal/template/table/thead.js +5 -2
  451. package/lib/internal/template/table/thead.js.map +1 -1
  452. package/lib/internal/template/table/tools-header.d.ts +2 -1
  453. package/lib/internal/template/table/tools-header.d.ts.map +1 -1
  454. package/lib/internal/template/table/tools-header.js +4 -4
  455. package/lib/internal/template/table/tools-header.js.map +1 -1
  456. package/lib/internal/template/tabs/styles.css.js +22 -22
  457. package/lib/internal/template/tabs/styles.scoped.css +42 -46
  458. package/lib/internal/template/tabs/styles.selectors.js +22 -22
  459. package/lib/internal/template/tabs/tab-header-bar.d.ts.map +1 -1
  460. package/lib/internal/template/tabs/tab-header-bar.js +19 -47
  461. package/lib/internal/template/tabs/tab-header-bar.js.map +1 -1
  462. package/lib/internal/template/tag-editor/styles.css.js +3 -3
  463. package/lib/internal/template/tag-editor/styles.scoped.css +10 -12
  464. package/lib/internal/template/tag-editor/styles.selectors.js +3 -3
  465. package/lib/internal/template/test-utils/tsconfig.tsbuildinfo +1 -1
  466. package/lib/internal/template/text-content/styles.css.js +1 -1
  467. package/lib/internal/template/text-content/styles.scoped.css +60 -62
  468. package/lib/internal/template/text-content/styles.selectors.js +1 -1
  469. package/lib/internal/template/text-filter/styles.css.js +3 -3
  470. package/lib/internal/template/text-filter/styles.scoped.css +3 -5
  471. package/lib/internal/template/text-filter/styles.selectors.js +3 -3
  472. package/lib/internal/template/textarea/styles.css.js +5 -5
  473. package/lib/internal/template/textarea/styles.scoped.css +15 -17
  474. package/lib/internal/template/textarea/styles.selectors.js +5 -5
  475. package/lib/internal/template/tiles/styles.css.js +29 -29
  476. package/lib/internal/template/tiles/styles.scoped.css +70 -72
  477. package/lib/internal/template/tiles/styles.selectors.js +29 -29
  478. package/lib/internal/template/toggle/styles.css.js +8 -8
  479. package/lib/internal/template/toggle/styles.scoped.css +15 -16
  480. package/lib/internal/template/toggle/styles.selectors.js +8 -8
  481. package/lib/internal/template/token-group/dismiss-button.d.ts.map +1 -1
  482. package/lib/internal/template/token-group/dismiss-button.js +1 -2
  483. package/lib/internal/template/token-group/dismiss-button.js.map +1 -1
  484. package/lib/internal/template/token-group/styles.css.js +9 -9
  485. package/lib/internal/template/token-group/styles.scoped.css +19 -22
  486. package/lib/internal/template/token-group/styles.selectors.js +9 -9
  487. package/lib/internal/template/top-navigation/1.0-beta/styles.css.js +25 -25
  488. package/lib/internal/template/top-navigation/1.0-beta/styles.scoped.css +42 -44
  489. package/lib/internal/template/top-navigation/1.0-beta/styles.selectors.js +25 -25
  490. package/lib/internal/template/top-navigation/styles.css.js +47 -47
  491. package/lib/internal/template/top-navigation/styles.scoped.css +66 -68
  492. package/lib/internal/template/top-navigation/styles.selectors.js +47 -47
  493. package/lib/internal/template/tutorial-panel/components/tutorial-detail-view/styles.css.js +20 -20
  494. package/lib/internal/template/tutorial-panel/components/tutorial-detail-view/styles.scoped.css +21 -23
  495. package/lib/internal/template/tutorial-panel/components/tutorial-detail-view/styles.selectors.js +20 -20
  496. package/lib/internal/template/tutorial-panel/components/tutorial-list/styles.css.js +18 -18
  497. package/lib/internal/template/tutorial-panel/components/tutorial-list/styles.scoped.css +27 -30
  498. package/lib/internal/template/tutorial-panel/components/tutorial-list/styles.selectors.js +18 -18
  499. package/lib/internal/template/tutorial-panel/styles.css.js +1 -1
  500. package/lib/internal/template/tutorial-panel/styles.scoped.css +1 -3
  501. package/lib/internal/template/tutorial-panel/styles.selectors.js +1 -1
  502. package/lib/internal/template/wizard/styles.css.js +30 -30
  503. package/lib/internal/template/wizard/styles.scoped.css +62 -61
  504. package/lib/internal/template/wizard/styles.selectors.js +30 -30
  505. package/lib/internal/template/wizard/wizard-form-header.js +1 -1
  506. package/lib/internal/template/wizard/wizard-form-header.js.map +1 -1
  507. package/lib/internal/template/wizard/wizard-form.js +1 -1
  508. package/lib/internal/template/wizard/wizard-form.js.map +1 -1
  509. package/lib/internal/template/wizard/wizard-navigation.js +3 -3
  510. package/lib/internal/template/wizard/wizard-navigation.js.map +1 -1
  511. package/package.json +1 -1
  512. package/lib/internal/template/internal/context/app-layout-context.d.ts +0 -8
  513. package/lib/internal/template/internal/context/app-layout-context.d.ts.map +0 -1
  514. package/lib/internal/template/internal/context/app-layout-context.js +0 -9
  515. package/lib/internal/template/internal/context/app-layout-context.js.map +0 -1
@@ -2,8 +2,6 @@
2
2
  Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3
3
  SPDX-License-Identifier: Apache-2.0
4
4
  */
5
- /* stylelint-disable plugin/no-unsupported-browser-features */
6
- /* stylelint-enable plugin/no-unsupported-browser-features */
7
5
  /*
8
6
  Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
9
7
  SPDX-License-Identifier: Apache-2.0
@@ -100,8 +98,6 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
100
98
  Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
101
99
  SPDX-License-Identifier: Apache-2.0
102
100
  */
103
- /* stylelint-disable plugin/no-unsupported-browser-features */
104
- /* stylelint-enable plugin/no-unsupported-browser-features */
105
101
  /*
106
102
  Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
107
103
  SPDX-License-Identifier: Apache-2.0
@@ -195,7 +191,7 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
195
191
  SPDX-License-Identifier: Apache-2.0
196
192
  */
197
193
  /* stylelint-disable selector-max-type */
198
- .awsui_tabs-header_14rmt_iftfj_198:not(#\9) {
194
+ .awsui_tabs-header_14rmt_1f77r_194:not(#\9) {
199
195
  margin-block: 0;
200
196
  margin-inline: 0;
201
197
  padding-block: 0;
@@ -203,7 +199,7 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
203
199
  display: flex;
204
200
  }
205
201
 
206
- .awsui_tabs-header-list_14rmt_iftfj_206:not(#\9) {
202
+ .awsui_tabs-header-list_14rmt_1f77r_202:not(#\9) {
207
203
  margin-block: 0;
208
204
  margin-inline: 0;
209
205
  padding-block: 0;
@@ -216,33 +212,33 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
216
212
  -ms-overflow-style: none; /* Internet Explorer 10+ */
217
213
  scrollbar-width: none; /* Firefox */
218
214
  }
219
- .awsui_tabs-header-list_14rmt_iftfj_206:not(#\9)::-webkit-scrollbar {
215
+ .awsui_tabs-header-list_14rmt_1f77r_202:not(#\9)::-webkit-scrollbar {
220
216
  display: none; /* Safari and Chrome */
221
217
  }
222
218
 
223
- .awsui_pagination-button_14rmt_iftfj_223:not(#\9) {
219
+ .awsui_pagination-button_14rmt_1f77r_219:not(#\9) {
224
220
  margin-block: var(--space-scaled-s-9q8n2q, 12px);
225
221
  margin-inline: 0;
226
222
  padding-block: 0;
227
223
  padding-inline: var(--space-xxs-9rrxti, 4px);
228
224
  display: flex;
229
225
  }
230
- .awsui_pagination-button-left_14rmt_iftfj_230:not(#\9) {
226
+ .awsui_pagination-button-left_14rmt_1f77r_226:not(#\9) {
231
227
  border-inline-end: var(--border-divider-section-width-wl9k66, 1px) solid var(--color-border-control-disabled-4hz3mo, #d5dbdb);
232
228
  }
233
- .awsui_pagination-button-left-scrollable_14rmt_iftfj_233:not(#\9) {
229
+ .awsui_pagination-button-left-scrollable_14rmt_1f77r_229:not(#\9) {
234
230
  z-index: 1;
235
231
  box-shadow: 5px 0px 4px -3px var(--color-border-tabs-shadow-vlaodw, #eaeded), 1px 0px 0px 0px var(--color-border-tabs-shadow-vlaodw, #eaeded);
236
232
  }
237
- .awsui_pagination-button-right_14rmt_iftfj_237:not(#\9) {
233
+ .awsui_pagination-button-right_14rmt_1f77r_233:not(#\9) {
238
234
  border-inline-start: var(--border-divider-section-width-wl9k66, 1px) solid var(--color-border-control-disabled-4hz3mo, #d5dbdb);
239
235
  }
240
- .awsui_pagination-button-right-scrollable_14rmt_iftfj_240:not(#\9) {
236
+ .awsui_pagination-button-right-scrollable_14rmt_1f77r_236:not(#\9) {
241
237
  z-index: 1;
242
238
  box-shadow: -5px 0px 4px -3px var(--color-border-tabs-shadow-vlaodw, #eaeded), -1px 0px 0px 0 var(--color-border-tabs-shadow-vlaodw, #eaeded);
243
239
  }
244
240
 
245
- .awsui_tabs-tab_14rmt_iftfj_245:not(#\9) {
241
+ .awsui_tabs-tab_14rmt_1f77r_241:not(#\9) {
246
242
  list-style: none;
247
243
  padding-block: 0;
248
244
  padding-inline: 0;
@@ -250,11 +246,11 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
250
246
  display: flex;
251
247
  max-inline-size: calc(90% - var(--space-l-xu1x80, 20px));
252
248
  }
253
- .awsui_tabs-tab_14rmt_iftfj_245 > button:not(#\9) {
249
+ .awsui_tabs-tab_14rmt_1f77r_241 > button:not(#\9) {
254
250
  background-color: transparent;
255
251
  }
256
252
 
257
- .awsui_tabs-tab-label_14rmt_iftfj_257:not(#\9) {
253
+ .awsui_tabs-tab-label_14rmt_1f77r_253:not(#\9) {
258
254
  display: flex;
259
255
  align-items: center;
260
256
  padding-block: var(--space-scaled-2x-xxs-r5f1ts, 4px);
@@ -265,12 +261,12 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
265
261
  word-break: break-word;
266
262
  }
267
263
 
268
- .awsui_tabs-tab_14rmt_iftfj_245:not(#\9):not(:last-child) > a > .awsui_tabs-tab-label_14rmt_iftfj_257, .awsui_tabs-tab_14rmt_iftfj_245:not(#\9):not(:last-child) > button > .awsui_tabs-tab-label_14rmt_iftfj_257 {
264
+ .awsui_tabs-tab_14rmt_1f77r_241:not(#\9):not(:last-child) > a > .awsui_tabs-tab-label_14rmt_1f77r_253, .awsui_tabs-tab_14rmt_1f77r_241:not(#\9):not(:last-child) > button > .awsui_tabs-tab-label_14rmt_1f77r_253 {
269
265
  margin-inline-end: calc(-1 * var(--border-divider-section-width-wl9k66, 1px));
270
266
  border-inline-end: var(--border-divider-section-width-wl9k66, 1px) solid var(--color-border-tabs-divider-xzqbyc, #aab7b8);
271
267
  }
272
268
 
273
- .awsui_tabs-tab-link_14rmt_iftfj_273:not(#\9) {
269
+ .awsui_tabs-tab-link_14rmt_1f77r_269:not(#\9) {
274
270
  position: relative;
275
271
  display: flex;
276
272
  align-items: stretch;
@@ -289,26 +285,26 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
289
285
  -webkit-font-smoothing: var(--font-smoothing-webkit-8fiijr, auto);
290
286
  -moz-osx-font-smoothing: var(--font-smoothing-moz-osx-fw8n0n, auto);
291
287
  }
292
- .awsui_tabs-tab-link_14rmt_iftfj_273.awsui_refresh_14rmt_iftfj_292:not(#\9) {
288
+ .awsui_tabs-tab-link_14rmt_1f77r_269.awsui_refresh_14rmt_1f77r_288:not(#\9) {
293
289
  padding-block-start: calc(var(--space-static-xs-fdj8ix, 8px) - 1px);
294
290
  padding-block-end: var(--space-static-xs-fdj8ix, 8px);
295
291
  padding-inline: 0;
296
292
  }
297
- .awsui_tabs-tab-link_14rmt_iftfj_273:not(#\9):hover {
293
+ .awsui_tabs-tab-link_14rmt_1f77r_269:not(#\9):hover {
298
294
  color: var(--color-text-accent-yy9054, #0073bb);
299
295
  }
300
- .awsui_tabs-tab-link_14rmt_iftfj_273:not(#\9):focus {
296
+ .awsui_tabs-tab-link_14rmt_1f77r_269:not(#\9):focus {
301
297
  outline: none;
302
298
  }
303
- body[data-awsui-focus-visible=true] .awsui_tabs-tab-link_14rmt_iftfj_273:not(#\9):focus {
299
+ body[data-awsui-focus-visible=true] .awsui_tabs-tab-link_14rmt_1f77r_269:not(#\9):focus {
304
300
  z-index: 1;
305
301
  position: relative;
306
302
  }
307
- body[data-awsui-focus-visible=true] .awsui_tabs-tab-link_14rmt_iftfj_273:not(#\9):focus {
303
+ body[data-awsui-focus-visible=true] .awsui_tabs-tab-link_14rmt_1f77r_269:not(#\9):focus {
308
304
  outline: 2px dotted transparent;
309
305
  outline-offset: calc(var(--space-tabs-focus-outline-gutter-2tu8wb, 0px) - 1px);
310
306
  }
311
- body[data-awsui-focus-visible=true] .awsui_tabs-tab-link_14rmt_iftfj_273:not(#\9):focus::before {
307
+ body[data-awsui-focus-visible=true] .awsui_tabs-tab-link_14rmt_1f77r_269:not(#\9):focus::before {
312
308
  content: " ";
313
309
  display: block;
314
310
  position: absolute;
@@ -322,32 +318,32 @@ body[data-awsui-focus-visible=true] .awsui_tabs-tab-link_14rmt_iftfj_273:not(#\9
322
318
  border-end-end-radius: var(--border-radius-control-default-focus-ring-a78bgq, 2px);
323
319
  box-shadow: 0 0 0 2px var(--color-border-item-focused-v8nq2m, #0073bb);
324
320
  }
325
- body[data-awsui-focus-visible=true] .awsui_tabs-tab-link_14rmt_iftfj_273:not(#\9):focus > a > .awsui_tabs-tab-label_14rmt_iftfj_257, body[data-awsui-focus-visible=true] .awsui_tabs-tab-link_14rmt_iftfj_273:not(#\9):focus > button > .awsui_tabs-tab-label_14rmt_iftfj_257 {
321
+ body[data-awsui-focus-visible=true] .awsui_tabs-tab-link_14rmt_1f77r_269:not(#\9):focus > a > .awsui_tabs-tab-label_14rmt_1f77r_253, body[data-awsui-focus-visible=true] .awsui_tabs-tab-link_14rmt_1f77r_269:not(#\9):focus > button > .awsui_tabs-tab-label_14rmt_1f77r_253 {
326
322
  border-inline-end-color: transparent;
327
323
  }
328
324
 
329
- .awsui_tabs-tab_14rmt_iftfj_245:not(#\9):first-child {
325
+ .awsui_tabs-tab_14rmt_1f77r_241:not(#\9):first-child {
330
326
  margin-inline-start: 1px;
331
327
  }
332
- .awsui_tabs-tab_14rmt_iftfj_245:not(#\9):first-child > a > .awsui_tabs-tab-label_14rmt_iftfj_257, .awsui_tabs-tab_14rmt_iftfj_245:not(#\9):first-child > button > .awsui_tabs-tab-label_14rmt_iftfj_257 {
328
+ .awsui_tabs-tab_14rmt_1f77r_241:not(#\9):first-child > a > .awsui_tabs-tab-label_14rmt_1f77r_253, .awsui_tabs-tab_14rmt_1f77r_241:not(#\9):first-child > button > .awsui_tabs-tab-label_14rmt_1f77r_253 {
333
329
  padding-inline-start: calc(var(--space-l-xu1x80, 20px) - 1px);
334
330
  }
335
331
 
336
- .awsui_tabs-tab_14rmt_iftfj_245:not(#\9):last-child {
332
+ .awsui_tabs-tab_14rmt_1f77r_241:not(#\9):last-child {
337
333
  margin-inline-end: 1px;
338
334
  }
339
- .awsui_tabs-tab_14rmt_iftfj_245:not(#\9):last-child > a > .awsui_tabs-tab-label_14rmt_iftfj_257, .awsui_tabs-tab_14rmt_iftfj_245:not(#\9):last-child > button > .awsui_tabs-tab-label_14rmt_iftfj_257 {
335
+ .awsui_tabs-tab_14rmt_1f77r_241:not(#\9):last-child > a > .awsui_tabs-tab-label_14rmt_1f77r_253, .awsui_tabs-tab_14rmt_1f77r_241:not(#\9):last-child > button > .awsui_tabs-tab-label_14rmt_1f77r_253 {
340
336
  padding-inline-end: calc(var(--space-l-xu1x80, 20px) - 1px);
341
337
  }
342
338
 
343
- .awsui_tabs-tab-disabled_14rmt_iftfj_343:not(#\9), .awsui_tabs-tab-disabled_14rmt_iftfj_343:not(#\9):hover {
339
+ .awsui_tabs-tab-disabled_14rmt_1f77r_339:not(#\9), .awsui_tabs-tab-disabled_14rmt_1f77r_339:not(#\9):hover {
344
340
  pointer-events: none;
345
341
  cursor: default;
346
342
  color: var(--color-text-interactive-disabled-e23z4j, #aab7b8);
347
343
  font-weight: var(--font-tabs-disabled-weight-uew17o, 400);
348
344
  }
349
345
 
350
- .awsui_tabs-tab-link_14rmt_iftfj_273:not(#\9):not(.awsui_tabs-tab-disabled_14rmt_iftfj_343):after {
346
+ .awsui_tabs-tab-link_14rmt_1f77r_269:not(#\9):not(.awsui_tabs-tab-disabled_14rmt_1f77r_339):after {
351
347
  content: "";
352
348
  position: absolute;
353
349
  inset-inline-start: 0;
@@ -361,36 +357,36 @@ body[data-awsui-focus-visible=true] .awsui_tabs-tab-link_14rmt_iftfj_273:not(#\9
361
357
  background: var(--color-border-tabs-underline-vxhq31, #16191f);
362
358
  opacity: 0;
363
359
  }
364
- .awsui_tabs-tab-link_14rmt_iftfj_273:not(#\9):not(.awsui_tabs-tab-disabled_14rmt_iftfj_343).awsui_refresh_14rmt_iftfj_292:after {
360
+ .awsui_tabs-tab-link_14rmt_1f77r_269:not(#\9):not(.awsui_tabs-tab-disabled_14rmt_1f77r_339).awsui_refresh_14rmt_1f77r_288:after {
365
361
  transition: opacity var(--motion-duration-refresh-only-medium-0rwzu1, 165ms) var(--motion-easing-refresh-only-c-2mltoq, cubic-bezier(0.84, 0, 0.16, 1));
366
362
  }
367
363
  @media (prefers-reduced-motion: reduce) {
368
- .awsui_tabs-tab-link_14rmt_iftfj_273:not(#\9):not(.awsui_tabs-tab-disabled_14rmt_iftfj_343).awsui_refresh_14rmt_iftfj_292:after {
364
+ .awsui_tabs-tab-link_14rmt_1f77r_269:not(#\9):not(.awsui_tabs-tab-disabled_14rmt_1f77r_339).awsui_refresh_14rmt_1f77r_288:after {
369
365
  animation: none;
370
366
  transition: none;
371
367
  }
372
368
  }
373
- .awsui-motion-disabled .awsui_tabs-tab-link_14rmt_iftfj_273:not(#\9):not(.awsui_tabs-tab-disabled_14rmt_iftfj_343).awsui_refresh_14rmt_iftfj_292:after, .awsui-mode-entering .awsui_tabs-tab-link_14rmt_iftfj_273:not(#\9):not(.awsui_tabs-tab-disabled_14rmt_iftfj_343).awsui_refresh_14rmt_iftfj_292:after {
369
+ .awsui-motion-disabled .awsui_tabs-tab-link_14rmt_1f77r_269:not(#\9):not(.awsui_tabs-tab-disabled_14rmt_1f77r_339).awsui_refresh_14rmt_1f77r_288:after, .awsui-mode-entering .awsui_tabs-tab-link_14rmt_1f77r_269:not(#\9):not(.awsui_tabs-tab-disabled_14rmt_1f77r_339).awsui_refresh_14rmt_1f77r_288:after {
374
370
  animation: none;
375
371
  transition: none;
376
372
  }
377
373
 
378
- .awsui_tabs-tab-active_14rmt_iftfj_378:not(#\9):not(.awsui_tabs-tab-disabled_14rmt_iftfj_343) {
374
+ .awsui_tabs-tab-active_14rmt_1f77r_374:not(#\9):not(.awsui_tabs-tab-disabled_14rmt_1f77r_339) {
379
375
  color: var(--color-text-accent-yy9054, #0073bb);
380
376
  }
381
- .awsui_tabs-tab-active_14rmt_iftfj_378:not(#\9):not(.awsui_tabs-tab-disabled_14rmt_iftfj_343):after {
377
+ .awsui_tabs-tab-active_14rmt_1f77r_374:not(#\9):not(.awsui_tabs-tab-disabled_14rmt_1f77r_339):after {
382
378
  opacity: 1;
383
379
  }
384
380
 
385
- .awsui_tabs-header-with-divider_14rmt_iftfj_385:not(#\9) {
381
+ .awsui_tabs-header-with-divider_14rmt_1f77r_381:not(#\9) {
386
382
  border-block-end: var(--border-divider-section-width-wl9k66, 1px) solid var(--color-border-tabs-divider-xzqbyc, #aab7b8);
387
383
  }
388
384
 
389
- .awsui_root_14rmt_iftfj_389:not(#\9) {
385
+ .awsui_root_14rmt_1f77r_385:not(#\9) {
390
386
  /* used in test-utils or tests */
391
387
  }
392
388
 
393
- .awsui_tabs_14rmt_iftfj_198:not(#\9) {
389
+ .awsui_tabs_14rmt_1f77r_194:not(#\9) {
394
390
  border-collapse: separate;
395
391
  border-spacing: 0;
396
392
  box-sizing: border-box;
@@ -428,21 +424,21 @@ body[data-awsui-focus-visible=true] .awsui_tabs-tab-link_14rmt_iftfj_273:not(#\9
428
424
  inline-size: 100%;
429
425
  }
430
426
 
431
- .awsui_tabs-content_14rmt_iftfj_430:not(#\9) {
427
+ .awsui_tabs-content_14rmt_1f77r_426:not(#\9) {
432
428
  display: none;
433
429
  }
434
430
 
435
- .awsui_fit-height_14rmt_iftfj_434:not(#\9) {
431
+ .awsui_fit-height_14rmt_1f77r_430:not(#\9) {
436
432
  display: flex;
437
433
  flex-direction: column;
438
434
  block-size: 100%;
439
435
  }
440
436
 
441
- .awsui_tabs-content-active_14rmt_iftfj_440:not(#\9) {
437
+ .awsui_tabs-content-active_14rmt_1f77r_436:not(#\9) {
442
438
  display: block;
443
439
  flex: 1;
444
440
  }
445
- body[data-awsui-focus-visible=true] .awsui_tabs-content-active_14rmt_iftfj_440:not(#\9):focus {
441
+ body[data-awsui-focus-visible=true] .awsui_tabs-content-active_14rmt_1f77r_436:not(#\9):focus {
446
442
  outline: 2px dotted transparent;
447
443
  outline-offset: 2px;
448
444
  border-start-start-radius: var(--border-radius-container-jm6teg, 0px);
@@ -452,23 +448,23 @@ body[data-awsui-focus-visible=true] .awsui_tabs-content-active_14rmt_iftfj_440:n
452
448
  box-shadow: 0 0 0 2px var(--color-border-item-focused-v8nq2m, #0073bb);
453
449
  }
454
450
 
455
- .awsui_tabs-content-wrapper_14rmt_iftfj_454.awsui_with-paddings_14rmt_iftfj_454 > .awsui_tabs-content_14rmt_iftfj_430:not(#\9) {
451
+ .awsui_tabs-content-wrapper_14rmt_1f77r_450.awsui_with-paddings_14rmt_1f77r_450 > .awsui_tabs-content_14rmt_1f77r_426:not(#\9) {
456
452
  padding-block: var(--space-scaled-m-er48cl, 16px);
457
453
  padding-inline: 0;
458
454
  }
459
- .awsui_fit-height_14rmt_iftfj_434 > .awsui_tabs-content-wrapper_14rmt_iftfj_454:not(#\9) {
455
+ .awsui_fit-height_14rmt_1f77r_430 > .awsui_tabs-content-wrapper_14rmt_1f77r_450:not(#\9) {
460
456
  flex: 1;
461
457
  display: flex;
462
458
  flex-direction: column;
463
459
  overflow: auto;
464
460
  }
465
461
 
466
- .awsui_fit-height_14rmt_iftfj_434 > .awsui_tabs-content-wrapper_14rmt_iftfj_454 > .awsui_tabs-container-content-wrapper_14rmt_iftfj_465:not(#\9) {
462
+ .awsui_fit-height_14rmt_1f77r_430 > .awsui_tabs-content-wrapper_14rmt_1f77r_450 > .awsui_tabs-container-content-wrapper_14rmt_1f77r_461:not(#\9) {
467
463
  block-size: 100%;
468
464
  display: flex;
469
465
  flex-direction: column;
470
466
  }
471
- .awsui_tabs-container-content-wrapper_14rmt_iftfj_465.awsui_with-paddings_14rmt_iftfj_454 > .awsui_tabs-content_14rmt_iftfj_430:not(#\9) {
467
+ .awsui_tabs-container-content-wrapper_14rmt_1f77r_461.awsui_with-paddings_14rmt_1f77r_450 > .awsui_tabs-content_14rmt_1f77r_426:not(#\9) {
472
468
  padding-block-start: var(--space-tabs-content-top-53djlo, 16px);
473
469
  padding-block-end: var(--space-scaled-l-08jb88, 20px);
474
470
  padding-inline: var(--space-container-horizontal-oebwqe, 20px);
@@ -2,27 +2,27 @@
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_iftfj_198",
6
- "tabs-header-list": "awsui_tabs-header-list_14rmt_iftfj_206",
7
- "pagination-button": "awsui_pagination-button_14rmt_iftfj_223",
8
- "pagination-button-left": "awsui_pagination-button-left_14rmt_iftfj_230",
9
- "pagination-button-left-scrollable": "awsui_pagination-button-left-scrollable_14rmt_iftfj_233",
10
- "pagination-button-right": "awsui_pagination-button-right_14rmt_iftfj_237",
11
- "pagination-button-right-scrollable": "awsui_pagination-button-right-scrollable_14rmt_iftfj_240",
12
- "tabs-tab": "awsui_tabs-tab_14rmt_iftfj_245",
13
- "tabs-tab-label": "awsui_tabs-tab-label_14rmt_iftfj_257",
14
- "tabs-tab-link": "awsui_tabs-tab-link_14rmt_iftfj_273",
15
- "refresh": "awsui_refresh_14rmt_iftfj_292",
16
- "tabs-tab-disabled": "awsui_tabs-tab-disabled_14rmt_iftfj_343",
17
- "tabs-tab-active": "awsui_tabs-tab-active_14rmt_iftfj_378",
18
- "tabs-header-with-divider": "awsui_tabs-header-with-divider_14rmt_iftfj_385",
19
- "root": "awsui_root_14rmt_iftfj_389",
20
- "tabs": "awsui_tabs_14rmt_iftfj_198",
21
- "tabs-content": "awsui_tabs-content_14rmt_iftfj_430",
22
- "fit-height": "awsui_fit-height_14rmt_iftfj_434",
23
- "tabs-content-active": "awsui_tabs-content-active_14rmt_iftfj_440",
24
- "tabs-content-wrapper": "awsui_tabs-content-wrapper_14rmt_iftfj_454",
25
- "with-paddings": "awsui_with-paddings_14rmt_iftfj_454",
26
- "tabs-container-content-wrapper": "awsui_tabs-container-content-wrapper_14rmt_iftfj_465"
5
+ "tabs-header": "awsui_tabs-header_14rmt_1f77r_194",
6
+ "tabs-header-list": "awsui_tabs-header-list_14rmt_1f77r_202",
7
+ "pagination-button": "awsui_pagination-button_14rmt_1f77r_219",
8
+ "pagination-button-left": "awsui_pagination-button-left_14rmt_1f77r_226",
9
+ "pagination-button-left-scrollable": "awsui_pagination-button-left-scrollable_14rmt_1f77r_229",
10
+ "pagination-button-right": "awsui_pagination-button-right_14rmt_1f77r_233",
11
+ "pagination-button-right-scrollable": "awsui_pagination-button-right-scrollable_14rmt_1f77r_236",
12
+ "tabs-tab": "awsui_tabs-tab_14rmt_1f77r_241",
13
+ "tabs-tab-label": "awsui_tabs-tab-label_14rmt_1f77r_253",
14
+ "tabs-tab-link": "awsui_tabs-tab-link_14rmt_1f77r_269",
15
+ "refresh": "awsui_refresh_14rmt_1f77r_288",
16
+ "tabs-tab-disabled": "awsui_tabs-tab-disabled_14rmt_1f77r_339",
17
+ "tabs-tab-active": "awsui_tabs-tab-active_14rmt_1f77r_374",
18
+ "tabs-header-with-divider": "awsui_tabs-header-with-divider_14rmt_1f77r_381",
19
+ "root": "awsui_root_14rmt_1f77r_385",
20
+ "tabs": "awsui_tabs_14rmt_1f77r_194",
21
+ "tabs-content": "awsui_tabs-content_14rmt_1f77r_426",
22
+ "fit-height": "awsui_fit-height_14rmt_1f77r_430",
23
+ "tabs-content-active": "awsui_tabs-content-active_14rmt_1f77r_436",
24
+ "tabs-content-wrapper": "awsui_tabs-content-wrapper_14rmt_1f77r_450",
25
+ "with-paddings": "awsui_with-paddings_14rmt_1f77r_450",
26
+ "tabs-container-content-wrapper": "awsui_tabs-container-content-wrapper_14rmt_1f77r_461"
27
27
  };
28
28
 
@@ -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;AA4BzC,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,eA4SnB;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;AA4BzC,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,eAgRnB;AAqBD,wBAAgB,eAAe,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,UAEzF"}
@@ -11,7 +11,7 @@ import { hasModifierKeys, isPlainLeftClick } from '../internal/events';
11
11
  import { useVisualRefresh } from '../internal/hooks/use-visual-mode';
12
12
  import { useInternalI18n } from '../i18n/context';
13
13
  import { useContainerQuery } from '@cloudscape-design/component-toolkit';
14
- import { SingleTabStopNavigationContext, useSingleTabStopNavigation, } from '../internal/context/single-tab-stop-navigation-context';
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
17
  const tabSelector = '[role="tab"]';
@@ -92,45 +92,8 @@ export function TabHeaderBar({ onChange, activeTabId, tabs, variant, idNamespace
92
92
  [styles['pagination-button-right']]: true,
93
93
  [styles['pagination-button-right-scrollable']]: inlineEndOverflow,
94
94
  });
95
- // A set of registered focusable elements that can use keyboard navigation.
96
- const focusables = useRef(new Set());
97
- // A map of registered focusable element handlers to update the respective tab indices.
98
- const focusHandlers = useRef(new Map());
99
- // A map of focusable element states to avoid issuing unnecessary updates to registered elements.
100
- const focusablesState = useRef(new WeakMap());
101
- // A reference to the currently focused element (tab or tab action).
102
- const focusTarget = useRef(null);
103
- // Register a focusable element to allow navigation into it.
104
- // The focusable element tabIndex is only set to 0 if the element matches the focus target.
105
- function registerFocusable(focusableElement, changeHandler) {
106
- focusables.current.add(focusableElement);
107
- focusHandlers.current.set(focusableElement, changeHandler);
108
- const isFocusable = !!focusablesState.current.get(focusableElement);
109
- const newIsFocusable = focusTarget.current === focusableElement;
110
- if (newIsFocusable !== isFocusable) {
111
- focusablesState.current.set(focusableElement, newIsFocusable);
112
- changeHandler(newIsFocusable);
113
- }
114
- return () => unregisterFocusable(focusableElement);
115
- }
116
- function unregisterFocusable(focusable) {
117
- focusables.current.delete(focusable);
118
- focusHandlers.current.delete(focusable);
119
- }
120
- // Update focus target with active tab and notify all registered focusables of a change.
121
- function updateFocusTarget() {
122
- var _a;
123
- focusTarget.current = getSingleFocusable();
124
- for (const focusableElement of focusables.current) {
125
- const isFocusable = (_a = focusablesState.current.get(focusableElement)) !== null && _a !== void 0 ? _a : false;
126
- const newIsFocusable = focusTarget.current === focusableElement;
127
- if (newIsFocusable !== isFocusable) {
128
- focusablesState.current.set(focusableElement, newIsFocusable);
129
- focusHandlers.current.get(focusableElement)(newIsFocusable);
130
- }
131
- }
132
- }
133
- function getSingleFocusable() {
95
+ const navigationAPI = useRef(null);
96
+ function getNextFocusTarget() {
134
97
  var _a, _b;
135
98
  if (!containerObjectRef.current) {
136
99
  return null;
@@ -139,25 +102,30 @@ export function TabHeaderBar({ onChange, activeTabId, tabs, variant, idNamespace
139
102
  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;
140
103
  }
141
104
  useEffect(() => {
142
- updateFocusTarget();
105
+ var _a;
106
+ (_a = navigationAPI.current) === null || _a === void 0 ? void 0 : _a.updateFocusTarget();
143
107
  });
144
108
  function onFocus() {
145
- updateFocusTarget();
109
+ var _a;
110
+ (_a = navigationAPI.current) === null || _a === void 0 ? void 0 : _a.updateFocusTarget();
146
111
  }
147
112
  function onBlur() {
148
- updateFocusTarget();
113
+ var _a;
114
+ (_a = navigationAPI.current) === null || _a === void 0 ? void 0 : _a.updateFocusTarget();
149
115
  }
150
116
  function onKeyDown(event) {
117
+ var _a;
118
+ const focusTarget = (_a = navigationAPI.current) === null || _a === void 0 ? void 0 : _a.getFocusTarget();
151
119
  const specialKeys = [KeyCode.right, KeyCode.left, KeyCode.end, KeyCode.home, KeyCode.pageUp, KeyCode.pageDown];
152
120
  if (hasModifierKeys(event) || specialKeys.indexOf(event.keyCode) === -1) {
153
121
  return;
154
122
  }
155
- if (!containerObjectRef.current || !focusTarget.current) {
123
+ if (!containerObjectRef.current || !focusTarget) {
156
124
  return;
157
125
  }
158
126
  event.preventDefault();
159
127
  const focusables = getFocusablesFrom(containerObjectRef.current);
160
- const activeIndex = focusables.indexOf(focusTarget.current);
128
+ const activeIndex = focusables.indexOf(focusTarget);
161
129
  handleKey(event, {
162
130
  onHome: () => focusElement(focusables[0]),
163
131
  onEnd: () => focusElement(focusables[focusables.length - 1]),
@@ -181,20 +149,24 @@ export function TabHeaderBar({ onChange, activeTabId, tabs, variant, idNamespace
181
149
  }
182
150
  // List all non-disabled and registered focusables: those are eligible for keyboard navigation.
183
151
  function getFocusablesFrom(target) {
152
+ function isElementRegistered(element) {
153
+ var _a, _b;
154
+ return (_b = (_a = navigationAPI.current) === null || _a === void 0 ? void 0 : _a.isRegistered(element)) !== null && _b !== void 0 ? _b : false;
155
+ }
184
156
  function isElementDisabled(element) {
185
157
  if (element instanceof HTMLButtonElement) {
186
158
  return element.disabled && element.getAttribute('aria-selected') !== 'true';
187
159
  }
188
160
  return false;
189
161
  }
190
- return getAllFocusables(target).filter(el => focusables.current.has(el) && !isElementDisabled(el));
162
+ return getAllFocusables(target).filter(el => isElementRegistered(el) && !isElementDisabled(el));
191
163
  }
192
164
  return (
193
165
  //converted span to div as list should not be a child of span for HTML validation
194
166
  React.createElement("div", { className: classes, ref: containerRef },
195
167
  horizontalOverflow && (React.createElement("span", { ref: inlineStartOverflowButton, className: leftButtonClasses },
196
168
  React.createElement(InternalButton, { formAction: "none", variant: "icon", iconName: "angle-left", disabled: !inlineStartOverflow, __focusable: true, onClick: () => onPaginationClick(headerBarRef, 'backward'), ariaLabel: i18n('i18nStrings.scrollLeftAriaLabel', i18nStrings === null || i18nStrings === void 0 ? void 0 : i18nStrings.scrollLeftAriaLabel) }))),
197
- React.createElement(SingleTabStopNavigationContext.Provider, { value: { navigationActive: true, registerFocusable } },
169
+ React.createElement(SingleTabStopNavigationProvider, { ref: navigationAPI, navigationActive: true, getNextFocusTarget: getNextFocusTarget },
198
170
  React.createElement("ul", { role: "tablist", className: styles['tabs-header-list'], "aria-label": ariaLabel, "aria-labelledby": ariaLabelledby, ref: headerBarRef, onScroll: onScroll, onKeyDown: onKeyDown, onFocus: onFocus, onBlur: onBlur }, tabs.map(renderTabHeader))),
199
171
  horizontalOverflow && (React.createElement("span", { className: rightButtonClasses },
200
172
  React.createElement(InternalButton, { formAction: "none", variant: "icon", iconName: "angle-right", disabled: !inlineEndOverflow, __focusable: true, onClick: () => onPaginationClick(headerBarRef, 'forward'), ariaLabel: i18n('i18nStrings.scrollRightAriaLabel', i18nStrings === null || i18nStrings === void 0 ? void 0 : i18nStrings.scrollRightAriaLabel) })))));
@@ -1 +1 @@
1
- {"version":3,"file":"tab-header-bar.js","sourceRoot":"","sources":["../../../src/tabs/tab-header-bar.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { useRef, useState, useEffect, forwardRef } from 'react';\nimport { TabsProps } from './interfaces';\nimport clsx from 'clsx';\nimport styles from './styles.css.js';\nimport { InternalButton } from '../button/internal';\nimport handleKey from '../internal/utils/handle-key';\nimport { KeyCode } from '../internal/keycode';\nimport {\n onPaginationClick,\n hasHorizontalOverflow,\n hasInlineStartOverflow,\n hasInlineEndOverflow,\n scrollIntoView,\n} from './scroll-utils';\nimport { hasModifierKeys, isPlainLeftClick } from '../internal/events';\nimport { useVisualRefresh } from '../internal/hooks/use-visual-mode';\nimport { useInternalI18n } from '../i18n/context';\nimport { useContainerQuery } from '@cloudscape-design/component-toolkit';\nimport {\n FocusableChangeHandler,\n SingleTabStopNavigationContext,\n useSingleTabStopNavigation,\n} from '../internal/context/single-tab-stop-navigation-context';\nimport { useMergeRefs } from '../internal/hooks/use-merge-refs';\nimport { getAllFocusables } from '../internal/components/focus-lock/utils';\n\nconst tabSelector = '[role=\"tab\"]';\nconst activeTabSelector = '[role=\"tab\"][aria-selected=\"true\"]';\n\nexport interface TabHeaderBarProps {\n onChange: (changeDetail: TabsProps.ChangeDetail) => void;\n activeTabId: TabsProps['activeTabId'];\n tabs: TabsProps['tabs'];\n variant: TabsProps['variant'];\n idNamespace: string;\n ariaLabel?: string;\n ariaLabelledby?: string;\n i18nStrings?: TabsProps.I18nStrings;\n}\n\nexport function TabHeaderBar({\n onChange,\n activeTabId,\n tabs,\n variant,\n idNamespace,\n ariaLabel,\n ariaLabelledby,\n i18nStrings,\n}: TabHeaderBarProps) {\n const headerBarRef = useRef<HTMLUListElement>(null);\n const activeTabHeaderRef = useRef<null | HTMLElement>(null);\n const inlineStartOverflowButton = useRef<HTMLElement>(null);\n const i18n = useInternalI18n('tabs');\n\n const isVisualRefresh = useVisualRefresh();\n\n const containerObjectRef = useRef<HTMLDivElement>(null);\n const [widthChange, containerMeasureRef] = useContainerQuery<number>(rect => rect.contentBoxWidth);\n const containerRef = useMergeRefs(containerObjectRef, containerMeasureRef);\n const tabRefs = useRef<Map<string, HTMLElement>>(new Map());\n const [horizontalOverflow, setHorizontalOverflow] = useState(false);\n const [inlineStartOverflow, setInlineStartOverflow] = useState(false);\n const [inlineEndOverflow, setInlineEndOverflow] = useState(false);\n\n useEffect(() => {\n if (headerBarRef.current) {\n setHorizontalOverflow(hasHorizontalOverflow(headerBarRef.current, inlineStartOverflowButton));\n setInlineStartOverflow(hasInlineStartOverflow(headerBarRef.current));\n setInlineEndOverflow(hasInlineEndOverflow(headerBarRef.current));\n }\n }, [widthChange, tabs]);\n\n const scrollIntoViewIfPossible = (smooth: boolean) => {\n if (!activeTabId) {\n return;\n }\n const activeTabRef = tabRefs.current.get(activeTabId);\n if (activeTabRef && activeTabRef.parentElement && headerBarRef.current) {\n scrollIntoView(activeTabRef.parentElement, headerBarRef.current, smooth);\n }\n };\n\n useEffect(() => {\n // Delay scrollIntoView as the position is depending on parent elements\n // (effects are called inside-out in the component tree).\n // Wait one frame to allow parents to complete it's calculation.\n requestAnimationFrame(() => {\n scrollIntoViewIfPossible(false);\n });\n // Non-smooth scrolling should not be called upon activeId change\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [horizontalOverflow, widthChange, tabs.length]);\n\n useEffect(() => {\n scrollIntoViewIfPossible(true);\n // Smooth scrolling should only be called upon activeId change\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [activeTabId]);\n\n useEffect(() => {\n /*\n When the selected tab changes and we are currently already focused on a tab,\n move the focus to the newly selected tab.\n */\n if (headerBarRef.current?.contains(document.activeElement)) {\n if (document.activeElement !== activeTabHeaderRef.current) {\n activeTabHeaderRef.current?.focus({ preventScroll: true });\n }\n }\n }, [activeTabId]);\n\n const onScroll = () => {\n if (headerBarRef.current) {\n setInlineStartOverflow(hasInlineStartOverflow(headerBarRef.current));\n setInlineEndOverflow(hasInlineEndOverflow(headerBarRef.current));\n }\n };\n\n const classes = clsx({\n [styles['tabs-header']]: true,\n [styles['tabs-header-with-divider']]: variant === 'default' || isVisualRefresh,\n });\n\n const leftButtonClasses = clsx({\n [styles['pagination-button']]: true,\n [styles['pagination-button-left']]: true,\n [styles['pagination-button-left-scrollable']]: inlineStartOverflow,\n });\n\n const rightButtonClasses = clsx({\n [styles['pagination-button']]: true,\n [styles['pagination-button-right']]: true,\n [styles['pagination-button-right-scrollable']]: inlineEndOverflow,\n });\n\n // A set of registered focusable elements that can use keyboard navigation.\n const focusables = useRef(new Set<Element>());\n // A map of registered focusable element handlers to update the respective tab indices.\n const focusHandlers = useRef(new Map<Element, FocusableChangeHandler>());\n // A map of focusable element states to avoid issuing unnecessary updates to registered elements.\n const focusablesState = useRef(new WeakMap<Element, boolean>());\n // A reference to the currently focused element (tab or tab action).\n const focusTarget = useRef<null | HTMLElement>(null);\n\n // Register a focusable element to allow navigation into it.\n // The focusable element tabIndex is only set to 0 if the element matches the focus target.\n function registerFocusable(focusableElement: Element, changeHandler: FocusableChangeHandler) {\n focusables.current.add(focusableElement);\n focusHandlers.current.set(focusableElement, changeHandler);\n const isFocusable = !!focusablesState.current.get(focusableElement);\n const newIsFocusable = focusTarget.current === focusableElement;\n if (newIsFocusable !== isFocusable) {\n focusablesState.current.set(focusableElement, newIsFocusable);\n changeHandler(newIsFocusable);\n }\n return () => unregisterFocusable(focusableElement);\n }\n function unregisterFocusable(focusable: Element) {\n focusables.current.delete(focusable);\n focusHandlers.current.delete(focusable);\n }\n\n // Update focus target with active tab and notify all registered focusables of a change.\n function updateFocusTarget() {\n focusTarget.current = getSingleFocusable();\n for (const focusableElement of focusables.current) {\n const isFocusable = focusablesState.current.get(focusableElement) ?? false;\n const newIsFocusable = focusTarget.current === focusableElement;\n if (newIsFocusable !== isFocusable) {\n focusablesState.current.set(focusableElement, newIsFocusable);\n focusHandlers.current.get(focusableElement)!(newIsFocusable);\n }\n }\n }\n function getSingleFocusable(): null | HTMLElement {\n if (!containerObjectRef.current) {\n return null;\n }\n const tabElements: HTMLButtonElement[] = Array.from(containerObjectRef.current.querySelectorAll(tabSelector));\n return tabElements.find(tab => tab.matches(activeTabSelector)) ?? tabElements.find(tab => !tab.disabled) ?? null;\n }\n useEffect(() => {\n updateFocusTarget();\n });\n function onFocus() {\n updateFocusTarget();\n }\n function onBlur() {\n updateFocusTarget();\n }\n\n function onKeyDown(event: React.KeyboardEvent) {\n const specialKeys = [KeyCode.right, KeyCode.left, KeyCode.end, KeyCode.home, KeyCode.pageUp, KeyCode.pageDown];\n if (hasModifierKeys(event) || specialKeys.indexOf(event.keyCode) === -1) {\n return;\n }\n if (!containerObjectRef.current || !focusTarget.current) {\n return;\n }\n event.preventDefault();\n\n const focusables = getFocusablesFrom(containerObjectRef.current);\n const activeIndex = focusables.indexOf(focusTarget.current as HTMLElement);\n handleKey(event as any, {\n onHome: () => focusElement(focusables[0]),\n onEnd: () => focusElement(focusables[focusables.length - 1]),\n onInlineStart: () => focusElement(focusables[circleIndex(activeIndex - 1, [0, focusables.length - 1])]),\n onInlineEnd: () => focusElement(focusables[circleIndex(activeIndex + 1, [0, focusables.length - 1])]),\n onPageDown: () => inlineEndOverflow && onPaginationClick(headerBarRef, 'forward'),\n onPageUp: () => inlineStartOverflow && onPaginationClick(headerBarRef, 'backward'),\n });\n }\n function focusElement(element: HTMLElement) {\n element.focus();\n // If focusable element is a tab - fire the onChange for it.\n const tabsById = tabs.reduce((map, tab) => map.set(tab.id, tab), new Map<string, TabsProps.Tab>());\n for (const [tabId, tabTriggerElement] of tabRefs.current.entries()) {\n if (tabId !== activeTabId && tabTriggerElement === element) {\n onChange({ activeTabId: tabId, activeTabHref: tabsById.get(tabId)?.href });\n break;\n }\n }\n }\n // List all non-disabled and registered focusables: those are eligible for keyboard navigation.\n function getFocusablesFrom(target: HTMLElement) {\n function isElementDisabled(element: HTMLElement) {\n if (element instanceof HTMLButtonElement) {\n return element.disabled && element.getAttribute('aria-selected') !== 'true';\n }\n return false;\n }\n return getAllFocusables(target).filter(el => focusables.current.has(el) && !isElementDisabled(el));\n }\n\n return (\n //converted span to div as list should not be a child of span for HTML validation\n <div className={classes} ref={containerRef}>\n {horizontalOverflow && (\n <span ref={inlineStartOverflowButton} className={leftButtonClasses}>\n <InternalButton\n formAction=\"none\"\n variant=\"icon\"\n iconName=\"angle-left\"\n disabled={!inlineStartOverflow}\n __focusable={true}\n onClick={() => onPaginationClick(headerBarRef, 'backward')}\n ariaLabel={i18n('i18nStrings.scrollLeftAriaLabel', i18nStrings?.scrollLeftAriaLabel)}\n />\n </span>\n )}\n <SingleTabStopNavigationContext.Provider value={{ navigationActive: true, registerFocusable }}>\n <ul\n role=\"tablist\"\n className={styles['tabs-header-list']}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledby}\n ref={headerBarRef}\n onScroll={onScroll}\n onKeyDown={onKeyDown}\n onFocus={onFocus}\n onBlur={onBlur}\n >\n {tabs.map(renderTabHeader)}\n </ul>\n </SingleTabStopNavigationContext.Provider>\n {horizontalOverflow && (\n <span className={rightButtonClasses}>\n <InternalButton\n formAction=\"none\"\n variant=\"icon\"\n iconName=\"angle-right\"\n disabled={!inlineEndOverflow}\n __focusable={true}\n onClick={() => onPaginationClick(headerBarRef, 'forward')}\n ariaLabel={i18n('i18nStrings.scrollRightAriaLabel', i18nStrings?.scrollRightAriaLabel)}\n />\n </span>\n )}\n </div>\n );\n\n function renderTabHeader(tab: TabsProps.Tab) {\n const clickTab = (event: React.MouseEvent) => {\n if (tab.disabled) {\n event.preventDefault();\n return;\n }\n\n // if the primary mouse button is clicked with a modifier key, the browser will handle opening a new tab\n const specialKey = !isPlainLeftClick(event);\n if (specialKey && tab.href) {\n return;\n }\n\n event.preventDefault();\n // for browsers that do not focus buttons on button click\n if (!tab.href) {\n const clickedTabRef = tabRefs.current.get(tab.id) as undefined | HTMLButtonElement;\n if (clickedTabRef) {\n if (clickedTabRef && clickedTabRef !== document.activeElement) {\n clickedTabRef.focus({ preventScroll: true });\n }\n }\n }\n\n if (tab.id === activeTabId) {\n return;\n }\n\n onChange({ activeTabId: tab.id, activeTabHref: tab.href });\n };\n\n const classes = clsx({\n [styles['tabs-tab-link']]: true,\n [styles.refresh]: isVisualRefresh,\n [styles['tabs-tab-active']]: activeTabId === tab.id && !tab.disabled,\n [styles['tabs-tab-disabled']]: tab.disabled,\n });\n\n const commonProps: (JSX.IntrinsicElements['a'] | JSX.IntrinsicElements['button']) & { 'data-testid': string } = {\n className: classes,\n role: 'tab',\n 'aria-selected': tab.id === activeTabId,\n 'aria-controls': `${idNamespace}-${tab.id}-panel`,\n 'data-testid': tab.id,\n id: getTabElementId({ namespace: idNamespace, tabId: tab.id }),\n children: <span className={styles['tabs-tab-label']}>{tab.label}</span>,\n };\n\n if (tab.disabled) {\n commonProps['aria-disabled'] = 'true';\n } else {\n commonProps.onClick = clickTab;\n }\n\n const setElement = (tabElement: null | HTMLElement) => {\n if (tab.id === activeTabId) {\n activeTabHeaderRef.current = tabElement;\n }\n tabRefs.current.set(tab.id, tabElement as HTMLElement);\n };\n\n return (\n <li className={styles['tabs-tab']} role=\"presentation\" key={tab.id}>\n <TabTrigger ref={setElement} tab={tab} elementProps={commonProps} />\n </li>\n );\n }\n}\n\nconst TabTrigger = forwardRef(\n (\n {\n tab,\n elementProps,\n }: { tab: TabsProps.Tab; elementProps: React.HTMLAttributes<HTMLAnchorElement | HTMLButtonElement> },\n ref: React.Ref<HTMLElement>\n ) => {\n const refObject = useRef<HTMLElement>(null);\n const mergedRef = useMergeRefs(refObject, ref);\n const { tabIndex } = useSingleTabStopNavigation(refObject);\n return tab.href ? (\n <a {...elementProps} href={tab.href} ref={mergedRef} tabIndex={tabIndex} />\n ) : (\n <button {...elementProps} type=\"button\" disabled={tab.disabled} ref={mergedRef} tabIndex={tabIndex} />\n );\n }\n);\n\nexport function getTabElementId({ namespace, tabId }: { namespace: string; tabId: string }) {\n return namespace + '-' + tabId;\n}\n\nfunction circleIndex(index: number, [from, to]: [number, number]): number {\n if (index < from) {\n return to;\n }\n if (index > to) {\n return from;\n }\n return index;\n}\n"]}
1
+ {"version":3,"file":"tab-header-bar.js","sourceRoot":"","sources":["../../../src/tabs/tab-header-bar.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { useRef, useState, useEffect, forwardRef } from 'react';\nimport { TabsProps } from './interfaces';\nimport clsx from 'clsx';\nimport styles from './styles.css.js';\nimport { InternalButton } from '../button/internal';\nimport handleKey from '../internal/utils/handle-key';\nimport { KeyCode } from '../internal/keycode';\nimport {\n onPaginationClick,\n hasHorizontalOverflow,\n hasInlineStartOverflow,\n hasInlineEndOverflow,\n scrollIntoView,\n} from './scroll-utils';\nimport { hasModifierKeys, isPlainLeftClick } from '../internal/events';\nimport { useVisualRefresh } from '../internal/hooks/use-visual-mode';\nimport { useInternalI18n } from '../i18n/context';\nimport { useContainerQuery } from '@cloudscape-design/component-toolkit';\nimport {\n SingleTabStopNavigationAPI,\n SingleTabStopNavigationProvider,\n useSingleTabStopNavigation,\n} from '../internal/context/single-tab-stop-navigation-context';\nimport { useMergeRefs } from '../internal/hooks/use-merge-refs';\nimport { getAllFocusables } from '../internal/components/focus-lock/utils';\n\nconst tabSelector = '[role=\"tab\"]';\nconst activeTabSelector = '[role=\"tab\"][aria-selected=\"true\"]';\n\nexport interface TabHeaderBarProps {\n onChange: (changeDetail: TabsProps.ChangeDetail) => void;\n activeTabId: TabsProps['activeTabId'];\n tabs: TabsProps['tabs'];\n variant: TabsProps['variant'];\n idNamespace: string;\n ariaLabel?: string;\n ariaLabelledby?: string;\n i18nStrings?: TabsProps.I18nStrings;\n}\n\nexport function TabHeaderBar({\n onChange,\n activeTabId,\n tabs,\n variant,\n idNamespace,\n ariaLabel,\n ariaLabelledby,\n i18nStrings,\n}: TabHeaderBarProps) {\n const headerBarRef = useRef<HTMLUListElement>(null);\n const activeTabHeaderRef = useRef<null | HTMLElement>(null);\n const inlineStartOverflowButton = useRef<HTMLElement>(null);\n const i18n = useInternalI18n('tabs');\n\n const isVisualRefresh = useVisualRefresh();\n\n const containerObjectRef = useRef<HTMLDivElement>(null);\n const [widthChange, containerMeasureRef] = useContainerQuery<number>(rect => rect.contentBoxWidth);\n const containerRef = useMergeRefs(containerObjectRef, containerMeasureRef);\n const tabRefs = useRef<Map<string, HTMLElement>>(new Map());\n const [horizontalOverflow, setHorizontalOverflow] = useState(false);\n const [inlineStartOverflow, setInlineStartOverflow] = useState(false);\n const [inlineEndOverflow, setInlineEndOverflow] = useState(false);\n\n useEffect(() => {\n if (headerBarRef.current) {\n setHorizontalOverflow(hasHorizontalOverflow(headerBarRef.current, inlineStartOverflowButton));\n setInlineStartOverflow(hasInlineStartOverflow(headerBarRef.current));\n setInlineEndOverflow(hasInlineEndOverflow(headerBarRef.current));\n }\n }, [widthChange, tabs]);\n\n const scrollIntoViewIfPossible = (smooth: boolean) => {\n if (!activeTabId) {\n return;\n }\n const activeTabRef = tabRefs.current.get(activeTabId);\n if (activeTabRef && activeTabRef.parentElement && headerBarRef.current) {\n scrollIntoView(activeTabRef.parentElement, headerBarRef.current, smooth);\n }\n };\n\n useEffect(() => {\n // Delay scrollIntoView as the position is depending on parent elements\n // (effects are called inside-out in the component tree).\n // Wait one frame to allow parents to complete it's calculation.\n requestAnimationFrame(() => {\n scrollIntoViewIfPossible(false);\n });\n // Non-smooth scrolling should not be called upon activeId change\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [horizontalOverflow, widthChange, tabs.length]);\n\n useEffect(() => {\n scrollIntoViewIfPossible(true);\n // Smooth scrolling should only be called upon activeId change\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [activeTabId]);\n\n useEffect(() => {\n /*\n When the selected tab changes and we are currently already focused on a tab,\n move the focus to the newly selected tab.\n */\n if (headerBarRef.current?.contains(document.activeElement)) {\n if (document.activeElement !== activeTabHeaderRef.current) {\n activeTabHeaderRef.current?.focus({ preventScroll: true });\n }\n }\n }, [activeTabId]);\n\n const onScroll = () => {\n if (headerBarRef.current) {\n setInlineStartOverflow(hasInlineStartOverflow(headerBarRef.current));\n setInlineEndOverflow(hasInlineEndOverflow(headerBarRef.current));\n }\n };\n\n const classes = clsx({\n [styles['tabs-header']]: true,\n [styles['tabs-header-with-divider']]: variant === 'default' || isVisualRefresh,\n });\n\n const leftButtonClasses = clsx({\n [styles['pagination-button']]: true,\n [styles['pagination-button-left']]: true,\n [styles['pagination-button-left-scrollable']]: inlineStartOverflow,\n });\n\n const rightButtonClasses = clsx({\n [styles['pagination-button']]: true,\n [styles['pagination-button-right']]: true,\n [styles['pagination-button-right-scrollable']]: inlineEndOverflow,\n });\n\n const navigationAPI = useRef<SingleTabStopNavigationAPI>(null);\n\n function getNextFocusTarget(): null | HTMLElement {\n if (!containerObjectRef.current) {\n return null;\n }\n const tabElements: HTMLButtonElement[] = Array.from(containerObjectRef.current.querySelectorAll(tabSelector));\n return tabElements.find(tab => tab.matches(activeTabSelector)) ?? tabElements.find(tab => !tab.disabled) ?? null;\n }\n\n useEffect(() => {\n navigationAPI.current?.updateFocusTarget();\n });\n function onFocus() {\n navigationAPI.current?.updateFocusTarget();\n }\n function onBlur() {\n navigationAPI.current?.updateFocusTarget();\n }\n\n function onKeyDown(event: React.KeyboardEvent) {\n const focusTarget = navigationAPI.current?.getFocusTarget();\n const specialKeys = [KeyCode.right, KeyCode.left, KeyCode.end, KeyCode.home, KeyCode.pageUp, KeyCode.pageDown];\n if (hasModifierKeys(event) || specialKeys.indexOf(event.keyCode) === -1) {\n return;\n }\n if (!containerObjectRef.current || !focusTarget) {\n return;\n }\n event.preventDefault();\n\n const focusables = getFocusablesFrom(containerObjectRef.current);\n const activeIndex = focusables.indexOf(focusTarget);\n handleKey(event as any, {\n onHome: () => focusElement(focusables[0]),\n onEnd: () => focusElement(focusables[focusables.length - 1]),\n onInlineStart: () => focusElement(focusables[circleIndex(activeIndex - 1, [0, focusables.length - 1])]),\n onInlineEnd: () => focusElement(focusables[circleIndex(activeIndex + 1, [0, focusables.length - 1])]),\n onPageDown: () => inlineEndOverflow && onPaginationClick(headerBarRef, 'forward'),\n onPageUp: () => inlineStartOverflow && onPaginationClick(headerBarRef, 'backward'),\n });\n }\n function focusElement(element: HTMLElement) {\n element.focus();\n // If focusable element is a tab - fire the onChange for it.\n const tabsById = tabs.reduce((map, tab) => map.set(tab.id, tab), new Map<string, TabsProps.Tab>());\n for (const [tabId, tabTriggerElement] of tabRefs.current.entries()) {\n if (tabId !== activeTabId && tabTriggerElement === element) {\n onChange({ activeTabId: tabId, activeTabHref: tabsById.get(tabId)?.href });\n break;\n }\n }\n }\n // List all non-disabled and registered focusables: those are eligible for keyboard navigation.\n function getFocusablesFrom(target: HTMLElement) {\n function isElementRegistered(element: HTMLElement) {\n return navigationAPI.current?.isRegistered(element) ?? false;\n }\n function isElementDisabled(element: HTMLElement) {\n if (element instanceof HTMLButtonElement) {\n return element.disabled && element.getAttribute('aria-selected') !== 'true';\n }\n return false;\n }\n return getAllFocusables(target).filter(el => isElementRegistered(el) && !isElementDisabled(el));\n }\n\n return (\n //converted span to div as list should not be a child of span for HTML validation\n <div className={classes} ref={containerRef}>\n {horizontalOverflow && (\n <span ref={inlineStartOverflowButton} className={leftButtonClasses}>\n <InternalButton\n formAction=\"none\"\n variant=\"icon\"\n iconName=\"angle-left\"\n disabled={!inlineStartOverflow}\n __focusable={true}\n onClick={() => onPaginationClick(headerBarRef, 'backward')}\n ariaLabel={i18n('i18nStrings.scrollLeftAriaLabel', i18nStrings?.scrollLeftAriaLabel)}\n />\n </span>\n )}\n <SingleTabStopNavigationProvider\n ref={navigationAPI}\n navigationActive={true}\n getNextFocusTarget={getNextFocusTarget}\n >\n <ul\n role=\"tablist\"\n className={styles['tabs-header-list']}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledby}\n ref={headerBarRef}\n onScroll={onScroll}\n onKeyDown={onKeyDown}\n onFocus={onFocus}\n onBlur={onBlur}\n >\n {tabs.map(renderTabHeader)}\n </ul>\n </SingleTabStopNavigationProvider>\n {horizontalOverflow && (\n <span className={rightButtonClasses}>\n <InternalButton\n formAction=\"none\"\n variant=\"icon\"\n iconName=\"angle-right\"\n disabled={!inlineEndOverflow}\n __focusable={true}\n onClick={() => onPaginationClick(headerBarRef, 'forward')}\n ariaLabel={i18n('i18nStrings.scrollRightAriaLabel', i18nStrings?.scrollRightAriaLabel)}\n />\n </span>\n )}\n </div>\n );\n\n function renderTabHeader(tab: TabsProps.Tab) {\n const clickTab = (event: React.MouseEvent) => {\n if (tab.disabled) {\n event.preventDefault();\n return;\n }\n\n // if the primary mouse button is clicked with a modifier key, the browser will handle opening a new tab\n const specialKey = !isPlainLeftClick(event);\n if (specialKey && tab.href) {\n return;\n }\n\n event.preventDefault();\n // for browsers that do not focus buttons on button click\n if (!tab.href) {\n const clickedTabRef = tabRefs.current.get(tab.id) as undefined | HTMLButtonElement;\n if (clickedTabRef) {\n if (clickedTabRef && clickedTabRef !== document.activeElement) {\n clickedTabRef.focus({ preventScroll: true });\n }\n }\n }\n\n if (tab.id === activeTabId) {\n return;\n }\n\n onChange({ activeTabId: tab.id, activeTabHref: tab.href });\n };\n\n const classes = clsx({\n [styles['tabs-tab-link']]: true,\n [styles.refresh]: isVisualRefresh,\n [styles['tabs-tab-active']]: activeTabId === tab.id && !tab.disabled,\n [styles['tabs-tab-disabled']]: tab.disabled,\n });\n\n const commonProps: (JSX.IntrinsicElements['a'] | JSX.IntrinsicElements['button']) & { 'data-testid': string } = {\n className: classes,\n role: 'tab',\n 'aria-selected': tab.id === activeTabId,\n 'aria-controls': `${idNamespace}-${tab.id}-panel`,\n 'data-testid': tab.id,\n id: getTabElementId({ namespace: idNamespace, tabId: tab.id }),\n children: <span className={styles['tabs-tab-label']}>{tab.label}</span>,\n };\n\n if (tab.disabled) {\n commonProps['aria-disabled'] = 'true';\n } else {\n commonProps.onClick = clickTab;\n }\n\n const setElement = (tabElement: null | HTMLElement) => {\n if (tab.id === activeTabId) {\n activeTabHeaderRef.current = tabElement;\n }\n tabRefs.current.set(tab.id, tabElement as HTMLElement);\n };\n\n return (\n <li className={styles['tabs-tab']} role=\"presentation\" key={tab.id}>\n <TabTrigger ref={setElement} tab={tab} elementProps={commonProps} />\n </li>\n );\n }\n}\n\nconst TabTrigger = forwardRef(\n (\n {\n tab,\n elementProps,\n }: { tab: TabsProps.Tab; elementProps: React.HTMLAttributes<HTMLAnchorElement | HTMLButtonElement> },\n ref: React.Ref<HTMLElement>\n ) => {\n const refObject = useRef<HTMLElement>(null);\n const mergedRef = useMergeRefs(refObject, ref);\n const { tabIndex } = useSingleTabStopNavigation(refObject);\n return tab.href ? (\n <a {...elementProps} href={tab.href} ref={mergedRef} tabIndex={tabIndex} />\n ) : (\n <button {...elementProps} type=\"button\" disabled={tab.disabled} ref={mergedRef} tabIndex={tabIndex} />\n );\n }\n);\n\nexport function getTabElementId({ namespace, tabId }: { namespace: string; tabId: string }) {\n return namespace + '-' + tabId;\n}\n\nfunction circleIndex(index: number, [from, to]: [number, number]): number {\n if (index < from) {\n return to;\n }\n if (index > to) {\n return from;\n }\n return index;\n}\n"]}
@@ -1,8 +1,8 @@
1
1
 
2
2
  import './styles.scoped.css';
3
3
  export default {
4
- "root": "awsui_root_brdst_t5572_99",
5
- "loading": "awsui_loading_brdst_t5572_103",
6
- "undo-button": "awsui_undo-button_brdst_t5572_107"
4
+ "root": "awsui_root_brdst_1g150_97",
5
+ "loading": "awsui_loading_brdst_1g150_101",
6
+ "undo-button": "awsui_undo-button_brdst_1g150_105"
7
7
  };
8
8