@cloudscape-design/components 3.0.648 → 3.0.650

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 (486) hide show
  1. package/alert/styles.css.js +25 -25
  2. package/alert/styles.scoped.css +39 -41
  3. package/alert/styles.selectors.js +25 -25
  4. package/anchor-navigation/styles.css.js +8 -8
  5. package/anchor-navigation/styles.scoped.css +18 -20
  6. package/anchor-navigation/styles.selectors.js +8 -8
  7. package/annotation-context/annotation/styles.css.js +24 -24
  8. package/annotation-context/annotation/styles.scoped.css +31 -32
  9. package/annotation-context/annotation/styles.selectors.js +24 -24
  10. package/app-layout/content-wrapper/styles.css.js +3 -3
  11. package/app-layout/content-wrapper/styles.scoped.css +6 -8
  12. package/app-layout/content-wrapper/styles.selectors.js +3 -3
  13. package/app-layout/drawer/index.js +2 -2
  14. package/app-layout/drawer/index.js.map +1 -1
  15. package/app-layout/drawer/styles.css.js +13 -13
  16. package/app-layout/drawer/styles.scoped.css +21 -23
  17. package/app-layout/drawer/styles.selectors.js +13 -13
  18. package/app-layout/mobile-toolbar/index.js +1 -1
  19. package/app-layout/mobile-toolbar/index.js.map +1 -1
  20. package/app-layout/mobile-toolbar/styles.css.js +8 -8
  21. package/app-layout/mobile-toolbar/styles.scoped.css +8 -10
  22. package/app-layout/mobile-toolbar/styles.selectors.js +8 -8
  23. package/app-layout/skeleton/styles.css.js +11 -11
  24. package/app-layout/skeleton/styles.scoped.css +20 -22
  25. package/app-layout/skeleton/styles.selectors.js +11 -11
  26. package/app-layout/split-panel/styles.css.js +2 -2
  27. package/app-layout/split-panel/styles.scoped.css +2 -4
  28. package/app-layout/split-panel/styles.selectors.js +2 -2
  29. package/app-layout/styles.css.js +16 -16
  30. package/app-layout/styles.scoped.css +19 -21
  31. package/app-layout/styles.selectors.js +16 -16
  32. package/app-layout/toggles/styles.css.js +2 -2
  33. package/app-layout/toggles/styles.scoped.css +6 -8
  34. package/app-layout/toggles/styles.selectors.js +2 -2
  35. package/app-layout/utils/sticky-offsets.d.ts +1 -1
  36. package/app-layout/utils/sticky-offsets.d.ts.map +1 -1
  37. package/app-layout/utils/sticky-offsets.js +2 -2
  38. package/app-layout/utils/sticky-offsets.js.map +1 -1
  39. package/app-layout/visual-refresh/background.d.ts.map +1 -1
  40. package/app-layout/visual-refresh/background.js +2 -5
  41. package/app-layout/visual-refresh/background.js.map +1 -1
  42. package/app-layout/visual-refresh/breadcrumbs.d.ts.map +1 -1
  43. package/app-layout/visual-refresh/breadcrumbs.js +1 -2
  44. package/app-layout/visual-refresh/breadcrumbs.js.map +1 -1
  45. package/app-layout/visual-refresh/context.d.ts +0 -2
  46. package/app-layout/visual-refresh/context.d.ts.map +1 -1
  47. package/app-layout/visual-refresh/context.js +2 -7
  48. package/app-layout/visual-refresh/context.js.map +1 -1
  49. package/app-layout/visual-refresh/drawers.js +2 -2
  50. package/app-layout/visual-refresh/drawers.js.map +1 -1
  51. package/app-layout/visual-refresh/layout.d.ts.map +1 -1
  52. package/app-layout/visual-refresh/layout.js +1 -3
  53. package/app-layout/visual-refresh/layout.js.map +1 -1
  54. package/app-layout/visual-refresh/main.d.ts.map +1 -1
  55. package/app-layout/visual-refresh/main.js +2 -4
  56. package/app-layout/visual-refresh/main.js.map +1 -1
  57. package/app-layout/visual-refresh/navigation.js +2 -2
  58. package/app-layout/visual-refresh/navigation.js.map +1 -1
  59. package/app-layout/visual-refresh/notifications.d.ts.map +1 -1
  60. package/app-layout/visual-refresh/notifications.js +3 -1
  61. package/app-layout/visual-refresh/notifications.js.map +1 -1
  62. package/app-layout/visual-refresh/styles.css.js +82 -83
  63. package/app-layout/visual-refresh/styles.scoped.css +169 -196
  64. package/app-layout/visual-refresh/styles.selectors.js +82 -83
  65. package/app-layout/visual-refresh/tools.js +2 -2
  66. package/app-layout/visual-refresh/tools.js.map +1 -1
  67. package/app-layout/visual-refresh/trigger-button.js +1 -1
  68. package/app-layout/visual-refresh/trigger-button.js.map +1 -1
  69. package/app-layout/visual-refresh/use-background-overlap.d.ts +0 -6
  70. package/app-layout/visual-refresh/use-background-overlap.d.ts.map +1 -1
  71. package/app-layout/visual-refresh/use-background-overlap.js +0 -6
  72. package/app-layout/visual-refresh/use-background-overlap.js.map +1 -1
  73. package/area-chart/styles.css.js +6 -6
  74. package/area-chart/styles.scoped.css +9 -11
  75. package/area-chart/styles.selectors.js +6 -6
  76. package/attribute-editor/styles.css.js +14 -14
  77. package/attribute-editor/styles.scoped.css +24 -26
  78. package/attribute-editor/styles.selectors.js +14 -14
  79. package/badge/styles.css.js +5 -5
  80. package/badge/styles.scoped.css +5 -7
  81. package/badge/styles.selectors.js +5 -5
  82. package/box/styles.css.js +191 -191
  83. package/box/styles.scoped.css +248 -446
  84. package/box/styles.selectors.js +191 -191
  85. package/breadcrumb-group/item/styles.css.js +8 -8
  86. package/breadcrumb-group/item/styles.scoped.css +16 -18
  87. package/breadcrumb-group/item/styles.selectors.js +8 -8
  88. package/breadcrumb-group/styles.css.js +7 -7
  89. package/breadcrumb-group/styles.scoped.css +12 -14
  90. package/breadcrumb-group/styles.selectors.js +7 -7
  91. package/button/styles.css.js +19 -19
  92. package/button/styles.scoped.css +153 -155
  93. package/button/styles.selectors.js +19 -19
  94. package/button-dropdown/category-elements/category-element.js +1 -1
  95. package/button-dropdown/category-elements/category-element.js.map +1 -1
  96. package/button-dropdown/category-elements/mobile-expandable-category-element.js +1 -1
  97. package/button-dropdown/category-elements/mobile-expandable-category-element.js.map +1 -1
  98. package/button-dropdown/category-elements/styles.css.js +14 -14
  99. package/button-dropdown/category-elements/styles.scoped.css +24 -25
  100. package/button-dropdown/category-elements/styles.selectors.js +14 -14
  101. package/button-dropdown/item-element/styles.css.js +11 -11
  102. package/button-dropdown/item-element/styles.scoped.css +16 -17
  103. package/button-dropdown/item-element/styles.selectors.js +11 -11
  104. package/button-dropdown/mobile-expandable-group/mobile-expandable-group.js +1 -1
  105. package/button-dropdown/mobile-expandable-group/mobile-expandable-group.js.map +1 -1
  106. package/button-dropdown/mobile-expandable-group/styles.css.js +5 -5
  107. package/button-dropdown/mobile-expandable-group/styles.scoped.css +5 -7
  108. package/button-dropdown/mobile-expandable-group/styles.selectors.js +5 -5
  109. package/button-dropdown/styles.css.js +15 -15
  110. package/button-dropdown/styles.scoped.css +22 -24
  111. package/button-dropdown/styles.selectors.js +15 -15
  112. package/calendar/styles.css.js +20 -20
  113. package/calendar/styles.scoped.css +42 -44
  114. package/calendar/styles.selectors.js +20 -20
  115. package/cards/styles.css.js +39 -39
  116. package/cards/styles.scoped.css +50 -52
  117. package/cards/styles.selectors.js +39 -39
  118. package/checkbox/styles.css.js +3 -3
  119. package/checkbox/styles.scoped.css +5 -7
  120. package/checkbox/styles.selectors.js +3 -3
  121. package/code-editor/resizable-box/styles.css.js +3 -3
  122. package/code-editor/resizable-box/styles.scoped.css +5 -6
  123. package/code-editor/resizable-box/styles.selectors.js +3 -3
  124. package/code-editor/styles.css.js +32 -32
  125. package/code-editor/styles.scoped.css +129 -147
  126. package/code-editor/styles.selectors.js +32 -32
  127. package/collection-preferences/content-display/styles.css.js +11 -11
  128. package/collection-preferences/content-display/styles.scoped.css +17 -21
  129. package/collection-preferences/content-display/styles.selectors.js +11 -11
  130. package/collection-preferences/styles.css.js +37 -37
  131. package/collection-preferences/styles.scoped.css +44 -52
  132. package/collection-preferences/styles.selectors.js +37 -37
  133. package/column-layout/styles.css.js +13 -13
  134. package/column-layout/styles.scoped.css +43 -45
  135. package/column-layout/styles.selectors.js +13 -13
  136. package/container/internal.d.ts.map +1 -1
  137. package/container/internal.js +7 -25
  138. package/container/internal.js.map +1 -1
  139. package/container/styles.css.js +30 -29
  140. package/container/styles.scoped.css +60 -55
  141. package/container/styles.selectors.js +30 -29
  142. package/container/use-sticky-header.d.ts +3 -2
  143. package/container/use-sticky-header.d.ts.map +1 -1
  144. package/container/use-sticky-header.js +5 -3
  145. package/container/use-sticky-header.js.map +1 -1
  146. package/content-layout/internal.js +2 -2
  147. package/content-layout/internal.js.map +1 -1
  148. package/content-layout/styles.css.js +14 -14
  149. package/content-layout/styles.scoped.css +16 -18
  150. package/content-layout/styles.selectors.js +14 -14
  151. package/date-picker/styles.css.js +7 -7
  152. package/date-picker/styles.scoped.css +9 -11
  153. package/date-picker/styles.selectors.js +7 -7
  154. package/date-range-picker/calendar/grids/styles.css.js +27 -27
  155. package/date-range-picker/calendar/grids/styles.scoped.css +42 -44
  156. package/date-range-picker/calendar/grids/styles.selectors.js +27 -27
  157. package/date-range-picker/relative-range/styles.css.js +9 -9
  158. package/date-range-picker/relative-range/styles.scoped.css +13 -15
  159. package/date-range-picker/relative-range/styles.selectors.js +9 -9
  160. package/date-range-picker/styles.css.js +39 -39
  161. package/date-range-picker/styles.scoped.css +48 -50
  162. package/date-range-picker/styles.selectors.js +39 -39
  163. package/drawer/implementation.js +2 -2
  164. package/drawer/implementation.js.map +1 -1
  165. package/drawer/styles.css.js +3 -3
  166. package/drawer/styles.scoped.css +10 -11
  167. package/drawer/styles.selectors.js +3 -3
  168. package/expandable-section/styles.css.js +32 -32
  169. package/expandable-section/styles.scoped.css +65 -66
  170. package/expandable-section/styles.selectors.js +32 -32
  171. package/file-upload/dropzone/styles.css.js +2 -2
  172. package/file-upload/dropzone/styles.scoped.css +2 -4
  173. package/file-upload/dropzone/styles.selectors.js +2 -2
  174. package/file-upload/file-input/styles.css.js +4 -4
  175. package/file-upload/file-input/styles.scoped.css +7 -9
  176. package/file-upload/file-input/styles.selectors.js +4 -4
  177. package/flashbar/styles.css.js +47 -47
  178. package/flashbar/styles.scoped.css +146 -154
  179. package/flashbar/styles.selectors.js +47 -47
  180. package/form/styles.css.js +8 -8
  181. package/form/styles.scoped.css +8 -10
  182. package/form/styles.selectors.js +8 -8
  183. package/form-field/styles.css.js +24 -24
  184. package/form-field/styles.scoped.css +38 -40
  185. package/form-field/styles.selectors.js +24 -24
  186. package/grid/styles.css.js +53 -53
  187. package/grid/styles.scoped.css +54 -56
  188. package/grid/styles.selectors.js +53 -53
  189. package/header/styles.css.js +34 -34
  190. package/header/styles.scoped.css +50 -52
  191. package/header/styles.selectors.js +34 -34
  192. package/help-panel/implementation.js +2 -2
  193. package/help-panel/implementation.js.map +1 -1
  194. package/help-panel/styles.css.js +4 -4
  195. package/help-panel/styles.scoped.css +78 -68
  196. package/help-panel/styles.selectors.js +4 -4
  197. package/hotspot/styles.css.js +7 -7
  198. package/hotspot/styles.scoped.css +7 -9
  199. package/hotspot/styles.selectors.js +7 -7
  200. package/icon/icons.js +1 -1
  201. package/icon/interfaces.d.ts +1 -1
  202. package/icon/interfaces.d.ts.map +1 -1
  203. package/icon/interfaces.js.map +1 -1
  204. package/icon/styles.css.js +37 -37
  205. package/icon/styles.scoped.css +84 -67
  206. package/icon/styles.selectors.js +37 -37
  207. package/input/styles.css.js +13 -13
  208. package/input/styles.scoped.css +34 -36
  209. package/input/styles.selectors.js +13 -13
  210. package/internal/analytics/index.d.ts +7 -1
  211. package/internal/analytics/index.d.ts.map +1 -1
  212. package/internal/analytics/index.js +10 -0
  213. package/internal/analytics/index.js.map +1 -1
  214. package/internal/analytics/interfaces.d.ts +12 -0
  215. package/internal/analytics/interfaces.d.ts.map +1 -1
  216. package/internal/analytics/interfaces.js.map +1 -1
  217. package/internal/base-component/index.d.ts +5 -3
  218. package/internal/base-component/index.d.ts.map +1 -1
  219. package/internal/base-component/index.js.map +1 -1
  220. package/internal/components/abstract-switch/styles.css.js +13 -13
  221. package/internal/components/abstract-switch/styles.scoped.css +23 -26
  222. package/internal/components/abstract-switch/styles.selectors.js +13 -13
  223. package/internal/components/button-trigger/styles.css.js +11 -11
  224. package/internal/components/button-trigger/styles.scoped.css +26 -28
  225. package/internal/components/button-trigger/styles.selectors.js +11 -11
  226. package/internal/components/cartesian-chart/inline-start-labels.js +1 -1
  227. package/internal/components/cartesian-chart/inline-start-labels.js.map +1 -1
  228. package/internal/components/chart-filter/styles.css.js +3 -3
  229. package/internal/components/chart-filter/styles.scoped.css +3 -5
  230. package/internal/components/chart-filter/styles.selectors.js +3 -3
  231. package/internal/components/chart-legend/styles.css.js +6 -6
  232. package/internal/components/chart-legend/styles.scoped.css +15 -17
  233. package/internal/components/chart-legend/styles.selectors.js +6 -6
  234. package/internal/components/chart-plot/styles.css.js +5 -5
  235. package/internal/components/chart-plot/styles.scoped.css +5 -7
  236. package/internal/components/chart-plot/styles.selectors.js +5 -5
  237. package/internal/components/chart-popover/styles.css.js +3 -3
  238. package/internal/components/chart-popover/styles.scoped.css +3 -5
  239. package/internal/components/chart-popover/styles.selectors.js +3 -3
  240. package/internal/components/chart-popover-footer/styles.css.js +1 -1
  241. package/internal/components/chart-popover-footer/styles.scoped.css +3 -3
  242. package/internal/components/chart-popover-footer/styles.selectors.js +1 -1
  243. package/internal/components/chart-series-details/styles.css.js +20 -20
  244. package/internal/components/chart-series-details/styles.scoped.css +33 -35
  245. package/internal/components/chart-series-details/styles.selectors.js +20 -20
  246. package/internal/components/chart-series-marker/styles.css.js +5 -5
  247. package/internal/components/chart-series-marker/styles.scoped.css +7 -9
  248. package/internal/components/chart-series-marker/styles.selectors.js +5 -5
  249. package/internal/components/chart-wrapper/styles.css.js +9 -9
  250. package/internal/components/chart-wrapper/styles.scoped.css +9 -11
  251. package/internal/components/chart-wrapper/styles.selectors.js +9 -9
  252. package/internal/components/checkbox-icon/styles.css.js +7 -7
  253. package/internal/components/checkbox-icon/styles.scoped.css +8 -10
  254. package/internal/components/checkbox-icon/styles.selectors.js +7 -7
  255. package/internal/components/dropdown/styles.css.js +20 -20
  256. package/internal/components/dropdown/styles.scoped.css +41 -41
  257. package/internal/components/dropdown/styles.selectors.js +20 -20
  258. package/internal/components/dropdown-footer/styles.css.js +3 -3
  259. package/internal/components/dropdown-footer/styles.scoped.css +3 -5
  260. package/internal/components/dropdown-footer/styles.selectors.js +3 -3
  261. package/internal/components/dropdown-status/styles.css.js +2 -2
  262. package/internal/components/dropdown-status/styles.scoped.css +2 -4
  263. package/internal/components/dropdown-status/styles.selectors.js +2 -2
  264. package/internal/components/filtering-token/styles.css.js +7 -7
  265. package/internal/components/filtering-token/styles.scoped.css +13 -15
  266. package/internal/components/filtering-token/styles.selectors.js +7 -7
  267. package/internal/components/handle/styles.css.js +2 -2
  268. package/internal/components/handle/styles.scoped.css +6 -8
  269. package/internal/components/handle/styles.selectors.js +2 -2
  270. package/internal/components/menu-dropdown/styles.css.js +7 -7
  271. package/internal/components/menu-dropdown/styles.scoped.css +13 -15
  272. package/internal/components/menu-dropdown/styles.selectors.js +7 -7
  273. package/internal/components/option/highlight-match.d.ts.map +1 -1
  274. package/internal/components/option/highlight-match.js +1 -2
  275. package/internal/components/option/highlight-match.js.map +1 -1
  276. package/internal/components/option/index.js +2 -2
  277. package/internal/components/option/index.js.map +1 -1
  278. package/internal/components/option/styles.css.js +17 -17
  279. package/internal/components/option/styles.scoped.css +29 -31
  280. package/internal/components/option/styles.selectors.js +17 -17
  281. package/internal/components/options-list/styles.css.js +2 -2
  282. package/internal/components/options-list/styles.scoped.css +2 -4
  283. package/internal/components/options-list/styles.selectors.js +2 -2
  284. package/internal/components/panel-resize-handle/styles.css.js +5 -5
  285. package/internal/components/panel-resize-handle/styles.scoped.css +10 -12
  286. package/internal/components/panel-resize-handle/styles.selectors.js +5 -5
  287. package/internal/components/screenreader-only/styles.css.js +1 -1
  288. package/internal/components/screenreader-only/styles.scoped.css +1 -3
  289. package/internal/components/screenreader-only/styles.selectors.js +1 -1
  290. package/internal/components/selectable-item/styles.css.js +16 -16
  291. package/internal/components/selectable-item/styles.scoped.css +29 -31
  292. package/internal/components/selectable-item/styles.selectors.js +16 -16
  293. package/internal/components/token-list/styles.css.js +9 -9
  294. package/internal/components/token-list/styles.scoped.css +20 -23
  295. package/internal/components/token-list/styles.selectors.js +9 -9
  296. package/internal/context/reset-contexts-for-modal.d.ts.map +1 -1
  297. package/internal/context/reset-contexts-for-modal.js +6 -8
  298. package/internal/context/reset-contexts-for-modal.js.map +1 -1
  299. package/internal/context/single-tab-stop-navigation-context.d.ts +16 -2
  300. package/internal/context/single-tab-stop-navigation-context.d.ts.map +1 -1
  301. package/internal/context/single-tab-stop-navigation-context.js +51 -1
  302. package/internal/context/single-tab-stop-navigation-context.js.map +1 -1
  303. package/internal/environment.js +1 -1
  304. package/internal/environment.json +1 -1
  305. package/internal/hooks/use-table-interaction-metrics/index.d.ts +10 -0
  306. package/internal/hooks/use-table-interaction-metrics/index.d.ts.map +1 -0
  307. package/internal/hooks/use-table-interaction-metrics/index.js +47 -0
  308. package/internal/hooks/use-table-interaction-metrics/index.js.map +1 -0
  309. package/internal/manifest.json +1 -1
  310. package/link/styles.css.js +20 -20
  311. package/link/styles.scoped.css +71 -73
  312. package/link/styles.selectors.js +20 -20
  313. package/mixed-line-bar-chart/styles.css.js +11 -11
  314. package/mixed-line-bar-chart/styles.scoped.css +17 -19
  315. package/mixed-line-bar-chart/styles.selectors.js +11 -11
  316. package/modal/styles.css.js +23 -23
  317. package/modal/styles.scoped.css +38 -40
  318. package/modal/styles.selectors.js +23 -23
  319. package/multiselect/styles.css.js +2 -2
  320. package/multiselect/styles.scoped.css +2 -4
  321. package/multiselect/styles.selectors.js +2 -2
  322. package/package.json +1 -1
  323. package/pagination/styles.css.js +9 -9
  324. package/pagination/styles.scoped.css +23 -25
  325. package/pagination/styles.selectors.js +9 -9
  326. package/pie-chart/styles.css.js +27 -27
  327. package/pie-chart/styles.scoped.css +48 -50
  328. package/pie-chart/styles.selectors.js +27 -27
  329. package/popover/index.d.ts +1 -1
  330. package/popover/index.d.ts.map +1 -1
  331. package/popover/index.js +2 -2
  332. package/popover/index.js.map +1 -1
  333. package/popover/interfaces.d.ts +5 -0
  334. package/popover/interfaces.d.ts.map +1 -1
  335. package/popover/interfaces.js.map +1 -1
  336. package/popover/internal.js +2 -2
  337. package/popover/internal.js.map +1 -1
  338. package/popover/styles.css.js +50 -49
  339. package/popover/styles.scoped.css +78 -78
  340. package/popover/styles.selectors.js +50 -49
  341. package/progress-bar/styles.css.js +19 -19
  342. package/progress-bar/styles.scoped.css +33 -37
  343. package/progress-bar/styles.selectors.js +19 -19
  344. package/property-filter/styles.css.js +32 -32
  345. package/property-filter/styles.scoped.css +34 -36
  346. package/property-filter/styles.selectors.js +32 -32
  347. package/radio-group/styles.css.js +9 -9
  348. package/radio-group/styles.scoped.css +15 -17
  349. package/radio-group/styles.selectors.js +9 -9
  350. package/s3-resource-selector/s3-in-context/styles.css.js +7 -7
  351. package/s3-resource-selector/s3-in-context/styles.scoped.css +9 -9
  352. package/s3-resource-selector/s3-in-context/styles.selectors.js +7 -7
  353. package/segmented-control/styles.css.js +14 -14
  354. package/segmented-control/styles.scoped.css +33 -35
  355. package/segmented-control/styles.selectors.js +14 -14
  356. package/select/parts/styles.css.js +16 -16
  357. package/select/parts/styles.scoped.css +18 -19
  358. package/select/parts/styles.selectors.js +16 -16
  359. package/select/styles.css.js +1 -1
  360. package/select/styles.scoped.css +1 -3
  361. package/select/styles.selectors.js +1 -1
  362. package/side-navigation/styles.css.js +28 -28
  363. package/side-navigation/styles.scoped.css +38 -40
  364. package/side-navigation/styles.selectors.js +28 -28
  365. package/slider/internal.js +1 -1
  366. package/slider/internal.js.map +1 -1
  367. package/slider/slider-labels.js +1 -1
  368. package/slider/slider-labels.js.map +1 -1
  369. package/slider/styles.css.js +25 -25
  370. package/slider/styles.scoped.css +62 -64
  371. package/slider/styles.selectors.js +25 -25
  372. package/slider/tick-marks.js +2 -2
  373. package/slider/tick-marks.js.map +1 -1
  374. package/space-between/styles.css.js +23 -23
  375. package/space-between/styles.scoped.css +24 -26
  376. package/space-between/styles.selectors.js +23 -23
  377. package/spinner/styles.css.js +13 -13
  378. package/spinner/styles.scoped.css +20 -21
  379. package/spinner/styles.selectors.js +13 -13
  380. package/split-panel/icons/styles.css.js +22 -22
  381. package/split-panel/icons/styles.scoped.css +28 -24
  382. package/split-panel/icons/styles.selectors.js +22 -22
  383. package/split-panel/side.js +3 -3
  384. package/split-panel/side.js.map +1 -1
  385. package/split-panel/styles.css.js +26 -26
  386. package/split-panel/styles.scoped.css +41 -46
  387. package/split-panel/styles.selectors.js +26 -26
  388. package/status-indicator/styles.css.js +23 -23
  389. package/status-indicator/styles.scoped.css +29 -31
  390. package/status-indicator/styles.selectors.js +23 -23
  391. package/table/body-cell/styles.css.js +45 -45
  392. package/table/body-cell/styles.scoped.css +175 -174
  393. package/table/body-cell/styles.selectors.js +45 -45
  394. package/table/expandable-rows/styles.css.js +3 -3
  395. package/table/expandable-rows/styles.scoped.css +15 -15
  396. package/table/expandable-rows/styles.selectors.js +3 -3
  397. package/table/header-cell/styles.css.js +26 -26
  398. package/table/header-cell/styles.scoped.css +54 -54
  399. package/table/header-cell/styles.selectors.js +26 -26
  400. package/table/internal.d.ts.map +1 -1
  401. package/table/internal.js +23 -17
  402. package/table/internal.js.map +1 -1
  403. package/table/resizer/styles.css.js +8 -8
  404. package/table/resizer/styles.scoped.css +14 -16
  405. package/table/resizer/styles.selectors.js +8 -8
  406. package/table/selection/selection-control.js +1 -1
  407. package/table/selection/selection-control.js.map +1 -1
  408. package/table/selection/styles.css.js +3 -3
  409. package/table/selection/styles.scoped.css +3 -5
  410. package/table/selection/styles.selectors.js +3 -3
  411. package/table/sticky-scrollbar/styles.css.js +6 -6
  412. package/table/sticky-scrollbar/styles.scoped.css +7 -9
  413. package/table/sticky-scrollbar/styles.selectors.js +6 -6
  414. package/table/styles.css.js +34 -34
  415. package/table/styles.scoped.css +39 -43
  416. package/table/styles.selectors.js +34 -34
  417. package/table/table-role/grid-navigation.d.ts.map +1 -1
  418. package/table/table-role/grid-navigation.js +40 -67
  419. package/table/table-role/grid-navigation.js.map +1 -1
  420. package/table/thead.d.ts +1 -0
  421. package/table/thead.d.ts.map +1 -1
  422. package/table/thead.js +5 -2
  423. package/table/thead.js.map +1 -1
  424. package/table/tools-header.d.ts +2 -1
  425. package/table/tools-header.d.ts.map +1 -1
  426. package/table/tools-header.js +4 -4
  427. package/table/tools-header.js.map +1 -1
  428. package/tabs/styles.css.js +22 -22
  429. package/tabs/styles.scoped.css +42 -46
  430. package/tabs/styles.selectors.js +22 -22
  431. package/tabs/tab-header-bar.d.ts.map +1 -1
  432. package/tabs/tab-header-bar.js +19 -47
  433. package/tabs/tab-header-bar.js.map +1 -1
  434. package/tag-editor/styles.css.js +3 -3
  435. package/tag-editor/styles.scoped.css +10 -12
  436. package/tag-editor/styles.selectors.js +3 -3
  437. package/test-utils/tsconfig.tsbuildinfo +1 -1
  438. package/text-content/styles.css.js +1 -1
  439. package/text-content/styles.scoped.css +60 -62
  440. package/text-content/styles.selectors.js +1 -1
  441. package/text-filter/styles.css.js +3 -3
  442. package/text-filter/styles.scoped.css +3 -5
  443. package/text-filter/styles.selectors.js +3 -3
  444. package/textarea/styles.css.js +5 -5
  445. package/textarea/styles.scoped.css +15 -17
  446. package/textarea/styles.selectors.js +5 -5
  447. package/tiles/styles.css.js +29 -29
  448. package/tiles/styles.scoped.css +70 -72
  449. package/tiles/styles.selectors.js +29 -29
  450. package/toggle/styles.css.js +8 -8
  451. package/toggle/styles.scoped.css +15 -16
  452. package/toggle/styles.selectors.js +8 -8
  453. package/token-group/dismiss-button.d.ts.map +1 -1
  454. package/token-group/dismiss-button.js +1 -2
  455. package/token-group/dismiss-button.js.map +1 -1
  456. package/token-group/styles.css.js +9 -9
  457. package/token-group/styles.scoped.css +19 -22
  458. package/token-group/styles.selectors.js +9 -9
  459. package/top-navigation/1.0-beta/styles.css.js +25 -25
  460. package/top-navigation/1.0-beta/styles.scoped.css +42 -44
  461. package/top-navigation/1.0-beta/styles.selectors.js +25 -25
  462. package/top-navigation/styles.css.js +47 -47
  463. package/top-navigation/styles.scoped.css +66 -68
  464. package/top-navigation/styles.selectors.js +47 -47
  465. package/tutorial-panel/components/tutorial-detail-view/styles.css.js +20 -20
  466. package/tutorial-panel/components/tutorial-detail-view/styles.scoped.css +21 -23
  467. package/tutorial-panel/components/tutorial-detail-view/styles.selectors.js +20 -20
  468. package/tutorial-panel/components/tutorial-list/styles.css.js +18 -18
  469. package/tutorial-panel/components/tutorial-list/styles.scoped.css +27 -30
  470. package/tutorial-panel/components/tutorial-list/styles.selectors.js +18 -18
  471. package/tutorial-panel/styles.css.js +1 -1
  472. package/tutorial-panel/styles.scoped.css +1 -3
  473. package/tutorial-panel/styles.selectors.js +1 -1
  474. package/wizard/styles.css.js +30 -30
  475. package/wizard/styles.scoped.css +62 -61
  476. package/wizard/styles.selectors.js +30 -30
  477. package/wizard/wizard-form-header.js +1 -1
  478. package/wizard/wizard-form-header.js.map +1 -1
  479. package/wizard/wizard-form.js +1 -1
  480. package/wizard/wizard-form.js.map +1 -1
  481. package/wizard/wizard-navigation.js +3 -3
  482. package/wizard/wizard-navigation.js.map +1 -1
  483. package/internal/context/app-layout-context.d.ts +0 -8
  484. package/internal/context/app-layout-context.d.ts.map +0 -1
  485. package/internal/context/app-layout-context.js +0 -9
  486. package/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_n8497_198:not(#\9) {
194
+ .awsui_tabs-header_14rmt_qo9ae_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_n8497_206:not(#\9) {
202
+ .awsui_tabs-header-list_14rmt_qo9ae_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_n8497_206:not(#\9)::-webkit-scrollbar {
215
+ .awsui_tabs-header-list_14rmt_qo9ae_202:not(#\9)::-webkit-scrollbar {
220
216
  display: none; /* Safari and Chrome */
221
217
  }
222
218
 
223
- .awsui_pagination-button_14rmt_n8497_223:not(#\9) {
219
+ .awsui_pagination-button_14rmt_qo9ae_219:not(#\9) {
224
220
  margin-block: var(--space-scaled-s-aqzyko, 12px);
225
221
  margin-inline: 0;
226
222
  padding-block: 0;
227
223
  padding-inline: var(--space-xxs-p8yyaw, 4px);
228
224
  display: flex;
229
225
  }
230
- .awsui_pagination-button-left_14rmt_n8497_230:not(#\9) {
226
+ .awsui_pagination-button-left_14rmt_qo9ae_226:not(#\9) {
231
227
  border-inline-end: var(--border-divider-section-width-1061zr, 1px) solid var(--color-border-control-disabled-bv2kkn, #d1d5db);
232
228
  }
233
- .awsui_pagination-button-left-scrollable_14rmt_n8497_233:not(#\9) {
229
+ .awsui_pagination-button-left-scrollable_14rmt_qo9ae_229:not(#\9) {
234
230
  z-index: 1;
235
231
  box-shadow: 5px 0px 4px -3px var(--color-border-tabs-shadow-w5xpb4, rgba(0, 7, 22, 0.12)), 1px 0px 0px 0px var(--color-border-tabs-shadow-w5xpb4, rgba(0, 7, 22, 0.12));
236
232
  }
237
- .awsui_pagination-button-right_14rmt_n8497_237:not(#\9) {
233
+ .awsui_pagination-button-right_14rmt_qo9ae_233:not(#\9) {
238
234
  border-inline-start: var(--border-divider-section-width-1061zr, 1px) solid var(--color-border-control-disabled-bv2kkn, #d1d5db);
239
235
  }
240
- .awsui_pagination-button-right-scrollable_14rmt_n8497_240:not(#\9) {
236
+ .awsui_pagination-button-right-scrollable_14rmt_qo9ae_236:not(#\9) {
241
237
  z-index: 1;
242
238
  box-shadow: -5px 0px 4px -3px var(--color-border-tabs-shadow-w5xpb4, rgba(0, 7, 22, 0.12)), -1px 0px 0px 0 var(--color-border-tabs-shadow-w5xpb4, rgba(0, 7, 22, 0.12));
243
239
  }
244
240
 
245
- .awsui_tabs-tab_14rmt_n8497_245:not(#\9) {
241
+ .awsui_tabs-tab_14rmt_qo9ae_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-t419sm, 20px));
252
248
  }
253
- .awsui_tabs-tab_14rmt_n8497_245 > button:not(#\9) {
249
+ .awsui_tabs-tab_14rmt_qo9ae_241 > button:not(#\9) {
254
250
  background-color: transparent;
255
251
  }
256
252
 
257
- .awsui_tabs-tab-label_14rmt_n8497_257:not(#\9) {
253
+ .awsui_tabs-tab-label_14rmt_qo9ae_253:not(#\9) {
258
254
  display: flex;
259
255
  align-items: center;
260
256
  padding-block: var(--space-scaled-2x-xxs-7v8ivz, 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_n8497_245:not(#\9):not(:last-child) > a > .awsui_tabs-tab-label_14rmt_n8497_257, .awsui_tabs-tab_14rmt_n8497_245:not(#\9):not(:last-child) > button > .awsui_tabs-tab-label_14rmt_n8497_257 {
264
+ .awsui_tabs-tab_14rmt_qo9ae_241:not(#\9):not(:last-child) > a > .awsui_tabs-tab-label_14rmt_qo9ae_253, .awsui_tabs-tab_14rmt_qo9ae_241:not(#\9):not(:last-child) > button > .awsui_tabs-tab-label_14rmt_qo9ae_253 {
269
265
  margin-inline-end: calc(-1 * var(--border-divider-section-width-1061zr, 1px));
270
266
  border-inline-end: var(--border-divider-section-width-1061zr, 1px) solid var(--color-border-tabs-divider-6vpso4, #b6bec9);
271
267
  }
272
268
 
273
- .awsui_tabs-tab-link_14rmt_n8497_273:not(#\9) {
269
+ .awsui_tabs-tab-link_14rmt_qo9ae_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-m8nc84, antialiased);
290
286
  -moz-osx-font-smoothing: var(--font-smoothing-moz-osx-foywby, grayscale);
291
287
  }
292
- .awsui_tabs-tab-link_14rmt_n8497_273.awsui_refresh_14rmt_n8497_292:not(#\9) {
288
+ .awsui_tabs-tab-link_14rmt_qo9ae_269.awsui_refresh_14rmt_qo9ae_288:not(#\9) {
293
289
  padding-block-start: calc(var(--space-static-xs-7sfb63, 8px) - 1px);
294
290
  padding-block-end: var(--space-static-xs-7sfb63, 8px);
295
291
  padding-inline: 0;
296
292
  }
297
- .awsui_tabs-tab-link_14rmt_n8497_273:not(#\9):hover {
293
+ .awsui_tabs-tab-link_14rmt_qo9ae_269:not(#\9):hover {
298
294
  color: var(--color-text-accent-n2acxv, #0972d3);
299
295
  }
300
- .awsui_tabs-tab-link_14rmt_n8497_273:not(#\9):focus {
296
+ .awsui_tabs-tab-link_14rmt_qo9ae_269:not(#\9):focus {
301
297
  outline: none;
302
298
  }
303
- body[data-awsui-focus-visible=true] .awsui_tabs-tab-link_14rmt_n8497_273:not(#\9):focus {
299
+ body[data-awsui-focus-visible=true] .awsui_tabs-tab-link_14rmt_qo9ae_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_n8497_273:not(#\9):focus {
303
+ body[data-awsui-focus-visible=true] .awsui_tabs-tab-link_14rmt_qo9ae_269:not(#\9):focus {
308
304
  outline: 2px dotted transparent;
309
305
  outline-offset: calc(var(--space-tabs-focus-outline-gutter-xm37ly, -8px) - 1px);
310
306
  }
311
- body[data-awsui-focus-visible=true] .awsui_tabs-tab-link_14rmt_n8497_273:not(#\9):focus::before {
307
+ body[data-awsui-focus-visible=true] .awsui_tabs-tab-link_14rmt_qo9ae_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_n8497_273:not(#\9
322
318
  border-end-end-radius: var(--border-radius-control-default-focus-ring-u8zbsz, 4px);
323
319
  box-shadow: 0 0 0 2px var(--color-border-item-focused-b2ntyl, #0972d3);
324
320
  }
325
- body[data-awsui-focus-visible=true] .awsui_tabs-tab-link_14rmt_n8497_273:not(#\9):focus > a > .awsui_tabs-tab-label_14rmt_n8497_257, body[data-awsui-focus-visible=true] .awsui_tabs-tab-link_14rmt_n8497_273:not(#\9):focus > button > .awsui_tabs-tab-label_14rmt_n8497_257 {
321
+ body[data-awsui-focus-visible=true] .awsui_tabs-tab-link_14rmt_qo9ae_269:not(#\9):focus > a > .awsui_tabs-tab-label_14rmt_qo9ae_253, body[data-awsui-focus-visible=true] .awsui_tabs-tab-link_14rmt_qo9ae_269:not(#\9):focus > button > .awsui_tabs-tab-label_14rmt_qo9ae_253 {
326
322
  border-inline-end-color: transparent;
327
323
  }
328
324
 
329
- .awsui_tabs-tab_14rmt_n8497_245:not(#\9):first-child {
325
+ .awsui_tabs-tab_14rmt_qo9ae_241:not(#\9):first-child {
330
326
  margin-inline-start: 1px;
331
327
  }
332
- .awsui_tabs-tab_14rmt_n8497_245:not(#\9):first-child > a > .awsui_tabs-tab-label_14rmt_n8497_257, .awsui_tabs-tab_14rmt_n8497_245:not(#\9):first-child > button > .awsui_tabs-tab-label_14rmt_n8497_257 {
328
+ .awsui_tabs-tab_14rmt_qo9ae_241:not(#\9):first-child > a > .awsui_tabs-tab-label_14rmt_qo9ae_253, .awsui_tabs-tab_14rmt_qo9ae_241:not(#\9):first-child > button > .awsui_tabs-tab-label_14rmt_qo9ae_253 {
333
329
  padding-inline-start: calc(var(--space-l-t419sm, 20px) - 1px);
334
330
  }
335
331
 
336
- .awsui_tabs-tab_14rmt_n8497_245:not(#\9):last-child {
332
+ .awsui_tabs-tab_14rmt_qo9ae_241:not(#\9):last-child {
337
333
  margin-inline-end: 1px;
338
334
  }
339
- .awsui_tabs-tab_14rmt_n8497_245:not(#\9):last-child > a > .awsui_tabs-tab-label_14rmt_n8497_257, .awsui_tabs-tab_14rmt_n8497_245:not(#\9):last-child > button > .awsui_tabs-tab-label_14rmt_n8497_257 {
335
+ .awsui_tabs-tab_14rmt_qo9ae_241:not(#\9):last-child > a > .awsui_tabs-tab-label_14rmt_qo9ae_253, .awsui_tabs-tab_14rmt_qo9ae_241:not(#\9):last-child > button > .awsui_tabs-tab-label_14rmt_qo9ae_253 {
340
336
  padding-inline-end: calc(var(--space-l-t419sm, 20px) - 1px);
341
337
  }
342
338
 
343
- .awsui_tabs-tab-disabled_14rmt_n8497_343:not(#\9), .awsui_tabs-tab-disabled_14rmt_n8497_343:not(#\9):hover {
339
+ .awsui_tabs-tab-disabled_14rmt_qo9ae_339:not(#\9), .awsui_tabs-tab-disabled_14rmt_qo9ae_339:not(#\9):hover {
344
340
  pointer-events: none;
345
341
  cursor: default;
346
342
  color: var(--color-text-interactive-disabled-z7a3t4, #9ba7b6);
347
343
  font-weight: var(--font-tabs-disabled-weight-1xcs5l, 700);
348
344
  }
349
345
 
350
- .awsui_tabs-tab-link_14rmt_n8497_273:not(#\9):not(.awsui_tabs-tab-disabled_14rmt_n8497_343):after {
346
+ .awsui_tabs-tab-link_14rmt_qo9ae_269:not(#\9):not(.awsui_tabs-tab-disabled_14rmt_qo9ae_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_n8497_273:not(#\9
361
357
  background: var(--color-border-tabs-underline-f1qo5r, #0972d3);
362
358
  opacity: 0;
363
359
  }
364
- .awsui_tabs-tab-link_14rmt_n8497_273:not(#\9):not(.awsui_tabs-tab-disabled_14rmt_n8497_343).awsui_refresh_14rmt_n8497_292:after {
360
+ .awsui_tabs-tab-link_14rmt_qo9ae_269:not(#\9):not(.awsui_tabs-tab-disabled_14rmt_qo9ae_339).awsui_refresh_14rmt_qo9ae_288:after {
365
361
  transition: opacity var(--motion-duration-refresh-only-medium-nf6485, 165ms) var(--motion-easing-refresh-only-c-vg1m9h, cubic-bezier(0.84, 0, 0.16, 1));
366
362
  }
367
363
  @media (prefers-reduced-motion: reduce) {
368
- .awsui_tabs-tab-link_14rmt_n8497_273:not(#\9):not(.awsui_tabs-tab-disabled_14rmt_n8497_343).awsui_refresh_14rmt_n8497_292:after {
364
+ .awsui_tabs-tab-link_14rmt_qo9ae_269:not(#\9):not(.awsui_tabs-tab-disabled_14rmt_qo9ae_339).awsui_refresh_14rmt_qo9ae_288:after {
369
365
  animation: none;
370
366
  transition: none;
371
367
  }
372
368
  }
373
- .awsui-motion-disabled .awsui_tabs-tab-link_14rmt_n8497_273:not(#\9):not(.awsui_tabs-tab-disabled_14rmt_n8497_343).awsui_refresh_14rmt_n8497_292:after, .awsui-mode-entering .awsui_tabs-tab-link_14rmt_n8497_273:not(#\9):not(.awsui_tabs-tab-disabled_14rmt_n8497_343).awsui_refresh_14rmt_n8497_292:after {
369
+ .awsui-motion-disabled .awsui_tabs-tab-link_14rmt_qo9ae_269:not(#\9):not(.awsui_tabs-tab-disabled_14rmt_qo9ae_339).awsui_refresh_14rmt_qo9ae_288:after, .awsui-mode-entering .awsui_tabs-tab-link_14rmt_qo9ae_269:not(#\9):not(.awsui_tabs-tab-disabled_14rmt_qo9ae_339).awsui_refresh_14rmt_qo9ae_288:after {
374
370
  animation: none;
375
371
  transition: none;
376
372
  }
377
373
 
378
- .awsui_tabs-tab-active_14rmt_n8497_378:not(#\9):not(.awsui_tabs-tab-disabled_14rmt_n8497_343) {
374
+ .awsui_tabs-tab-active_14rmt_qo9ae_374:not(#\9):not(.awsui_tabs-tab-disabled_14rmt_qo9ae_339) {
379
375
  color: var(--color-text-accent-n2acxv, #0972d3);
380
376
  }
381
- .awsui_tabs-tab-active_14rmt_n8497_378:not(#\9):not(.awsui_tabs-tab-disabled_14rmt_n8497_343):after {
377
+ .awsui_tabs-tab-active_14rmt_qo9ae_374:not(#\9):not(.awsui_tabs-tab-disabled_14rmt_qo9ae_339):after {
382
378
  opacity: 1;
383
379
  }
384
380
 
385
- .awsui_tabs-header-with-divider_14rmt_n8497_385:not(#\9) {
381
+ .awsui_tabs-header-with-divider_14rmt_qo9ae_381:not(#\9) {
386
382
  border-block-end: var(--border-divider-section-width-1061zr, 1px) solid var(--color-border-tabs-divider-6vpso4, #b6bec9);
387
383
  }
388
384
 
389
- .awsui_root_14rmt_n8497_389:not(#\9) {
385
+ .awsui_root_14rmt_qo9ae_385:not(#\9) {
390
386
  /* used in test-utils or tests */
391
387
  }
392
388
 
393
- .awsui_tabs_14rmt_n8497_198:not(#\9) {
389
+ .awsui_tabs_14rmt_qo9ae_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_n8497_273:not(#\9
428
424
  inline-size: 100%;
429
425
  }
430
426
 
431
- .awsui_tabs-content_14rmt_n8497_430:not(#\9) {
427
+ .awsui_tabs-content_14rmt_qo9ae_426:not(#\9) {
432
428
  display: none;
433
429
  }
434
430
 
435
- .awsui_fit-height_14rmt_n8497_434:not(#\9) {
431
+ .awsui_fit-height_14rmt_qo9ae_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_n8497_440:not(#\9) {
437
+ .awsui_tabs-content-active_14rmt_qo9ae_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_n8497_440:not(#\9):focus {
441
+ body[data-awsui-focus-visible=true] .awsui_tabs-content-active_14rmt_qo9ae_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-wqv1zi, 16px);
@@ -452,23 +448,23 @@ body[data-awsui-focus-visible=true] .awsui_tabs-content-active_14rmt_n8497_440:n
452
448
  box-shadow: 0 0 0 2px var(--color-border-item-focused-b2ntyl, #0972d3);
453
449
  }
454
450
 
455
- .awsui_tabs-content-wrapper_14rmt_n8497_454.awsui_with-paddings_14rmt_n8497_454 > .awsui_tabs-content_14rmt_n8497_430:not(#\9) {
451
+ .awsui_tabs-content-wrapper_14rmt_qo9ae_450.awsui_with-paddings_14rmt_qo9ae_450 > .awsui_tabs-content_14rmt_qo9ae_426:not(#\9) {
456
452
  padding-block: var(--space-scaled-m-mo5yse, 16px);
457
453
  padding-inline: 0;
458
454
  }
459
- .awsui_fit-height_14rmt_n8497_434 > .awsui_tabs-content-wrapper_14rmt_n8497_454:not(#\9) {
455
+ .awsui_fit-height_14rmt_qo9ae_430 > .awsui_tabs-content-wrapper_14rmt_qo9ae_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_n8497_434 > .awsui_tabs-content-wrapper_14rmt_n8497_454 > .awsui_tabs-container-content-wrapper_14rmt_n8497_465:not(#\9) {
462
+ .awsui_fit-height_14rmt_qo9ae_430 > .awsui_tabs-content-wrapper_14rmt_qo9ae_450 > .awsui_tabs-container-content-wrapper_14rmt_qo9ae_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_n8497_465.awsui_with-paddings_14rmt_n8497_454 > .awsui_tabs-content_14rmt_n8497_430:not(#\9) {
467
+ .awsui_tabs-container-content-wrapper_14rmt_qo9ae_461.awsui_with-paddings_14rmt_qo9ae_450 > .awsui_tabs-content_14rmt_qo9ae_426:not(#\9) {
472
468
  padding-block-start: var(--space-tabs-content-top-dedu0k, 12px);
473
469
  padding-block-end: var(--space-scaled-l-0hpmd7, 20px);
474
470
  padding-inline: var(--space-container-horizontal-wfukh3, 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_n8497_198",
6
- "tabs-header-list": "awsui_tabs-header-list_14rmt_n8497_206",
7
- "pagination-button": "awsui_pagination-button_14rmt_n8497_223",
8
- "pagination-button-left": "awsui_pagination-button-left_14rmt_n8497_230",
9
- "pagination-button-left-scrollable": "awsui_pagination-button-left-scrollable_14rmt_n8497_233",
10
- "pagination-button-right": "awsui_pagination-button-right_14rmt_n8497_237",
11
- "pagination-button-right-scrollable": "awsui_pagination-button-right-scrollable_14rmt_n8497_240",
12
- "tabs-tab": "awsui_tabs-tab_14rmt_n8497_245",
13
- "tabs-tab-label": "awsui_tabs-tab-label_14rmt_n8497_257",
14
- "tabs-tab-link": "awsui_tabs-tab-link_14rmt_n8497_273",
15
- "refresh": "awsui_refresh_14rmt_n8497_292",
16
- "tabs-tab-disabled": "awsui_tabs-tab-disabled_14rmt_n8497_343",
17
- "tabs-tab-active": "awsui_tabs-tab-active_14rmt_n8497_378",
18
- "tabs-header-with-divider": "awsui_tabs-header-with-divider_14rmt_n8497_385",
19
- "root": "awsui_root_14rmt_n8497_389",
20
- "tabs": "awsui_tabs_14rmt_n8497_198",
21
- "tabs-content": "awsui_tabs-content_14rmt_n8497_430",
22
- "fit-height": "awsui_fit-height_14rmt_n8497_434",
23
- "tabs-content-active": "awsui_tabs-content-active_14rmt_n8497_440",
24
- "tabs-content-wrapper": "awsui_tabs-content-wrapper_14rmt_n8497_454",
25
- "with-paddings": "awsui_with-paddings_14rmt_n8497_454",
26
- "tabs-container-content-wrapper": "awsui_tabs-container-content-wrapper_14rmt_n8497_465"
5
+ "tabs-header": "awsui_tabs-header_14rmt_qo9ae_194",
6
+ "tabs-header-list": "awsui_tabs-header-list_14rmt_qo9ae_202",
7
+ "pagination-button": "awsui_pagination-button_14rmt_qo9ae_219",
8
+ "pagination-button-left": "awsui_pagination-button-left_14rmt_qo9ae_226",
9
+ "pagination-button-left-scrollable": "awsui_pagination-button-left-scrollable_14rmt_qo9ae_229",
10
+ "pagination-button-right": "awsui_pagination-button-right_14rmt_qo9ae_233",
11
+ "pagination-button-right-scrollable": "awsui_pagination-button-right-scrollable_14rmt_qo9ae_236",
12
+ "tabs-tab": "awsui_tabs-tab_14rmt_qo9ae_241",
13
+ "tabs-tab-label": "awsui_tabs-tab-label_14rmt_qo9ae_253",
14
+ "tabs-tab-link": "awsui_tabs-tab-link_14rmt_qo9ae_269",
15
+ "refresh": "awsui_refresh_14rmt_qo9ae_288",
16
+ "tabs-tab-disabled": "awsui_tabs-tab-disabled_14rmt_qo9ae_339",
17
+ "tabs-tab-active": "awsui_tabs-tab-active_14rmt_qo9ae_374",
18
+ "tabs-header-with-divider": "awsui_tabs-header-with-divider_14rmt_qo9ae_381",
19
+ "root": "awsui_root_14rmt_qo9ae_385",
20
+ "tabs": "awsui_tabs_14rmt_qo9ae_194",
21
+ "tabs-content": "awsui_tabs-content_14rmt_qo9ae_426",
22
+ "fit-height": "awsui_fit-height_14rmt_qo9ae_430",
23
+ "tabs-content-active": "awsui_tabs-content-active_14rmt_qo9ae_436",
24
+ "tabs-content-wrapper": "awsui_tabs-content-wrapper_14rmt_qo9ae_450",
25
+ "with-paddings": "awsui_with-paddings_14rmt_qo9ae_450",
26
+ "tabs-container-content-wrapper": "awsui_tabs-container-content-wrapper_14rmt_qo9ae_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_1yvx7_99",
5
- "loading": "awsui_loading_brdst_1yvx7_103",
6
- "undo-button": "awsui_undo-button_brdst_1yvx7_107"
4
+ "root": "awsui_root_brdst_z50yn_97",
5
+ "loading": "awsui_loading_brdst_z50yn_101",
6
+ "undo-button": "awsui_undo-button_brdst_z50yn_105"
7
7
  };
8
8