@cloudscape-design/components-themeable 3.0.1332 → 3.0.1334

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 (375) hide show
  1. package/lib/internal/manifest.json +1 -1
  2. package/lib/internal/scss/app-layout/constants.scss +4 -0
  3. package/lib/internal/scss/app-layout/visual-refresh-toolbar/navigation/styles.scss +43 -13
  4. package/lib/internal/scss/app-layout/visual-refresh-toolbar/skeleton/styles.scss +7 -1
  5. package/lib/internal/scss/app-layout/visual-refresh-toolbar/toolbar/styles.scss +2 -2
  6. package/lib/internal/scss/box/visual-accent.scss +61 -25
  7. package/lib/internal/scss/button/styles.scss +6 -0
  8. package/lib/internal/scss/code-editor/ace-editor.scss +1 -1
  9. package/lib/internal/scss/internal/generated/custom-css-properties/index.scss +174 -173
  10. package/lib/internal/scss/side-navigation/styles.scss +14 -10
  11. package/lib/internal/scss/status-indicator/styles.scss +4 -2
  12. package/lib/internal/scss/steps/styles.scss +113 -31
  13. package/lib/internal/scss/table/header-cell/styles.scss +42 -14
  14. package/lib/internal/scss/table/styles.scss +6 -0
  15. package/lib/internal/scss/tooltip/styles.scss +22 -0
  16. package/lib/internal/template/alert/styles.css.js +27 -27
  17. package/lib/internal/template/alert/styles.scoped.css +50 -50
  18. package/lib/internal/template/alert/styles.selectors.js +27 -27
  19. package/lib/internal/template/annotation-context/annotation/styles.css.js +13 -13
  20. package/lib/internal/template/annotation-context/annotation/styles.scoped.css +21 -21
  21. package/lib/internal/template/annotation-context/annotation/styles.selectors.js +13 -13
  22. package/lib/internal/template/app-layout/classic.d.ts +1 -0
  23. package/lib/internal/template/app-layout/classic.d.ts.map +1 -1
  24. package/lib/internal/template/app-layout/index.d.ts.map +1 -1
  25. package/lib/internal/template/app-layout/index.js +2 -1
  26. package/lib/internal/template/app-layout/index.js.map +1 -1
  27. package/lib/internal/template/app-layout/interfaces.d.ts +16 -1
  28. package/lib/internal/template/app-layout/interfaces.d.ts.map +1 -1
  29. package/lib/internal/template/app-layout/interfaces.js.map +1 -1
  30. package/lib/internal/template/app-layout/internal.d.ts +1 -0
  31. package/lib/internal/template/app-layout/internal.d.ts.map +1 -1
  32. package/lib/internal/template/app-layout/notifications/styles.css.js +3 -3
  33. package/lib/internal/template/app-layout/notifications/styles.scoped.css +7 -7
  34. package/lib/internal/template/app-layout/notifications/styles.selectors.js +3 -3
  35. package/lib/internal/template/app-layout/visual-refresh/index.d.ts +1 -0
  36. package/lib/internal/template/app-layout/visual-refresh/index.d.ts.map +1 -1
  37. package/lib/internal/template/app-layout/visual-refresh/styles.css.js +86 -86
  38. package/lib/internal/template/app-layout/visual-refresh/styles.scoped.css +262 -262
  39. package/lib/internal/template/app-layout/visual-refresh/styles.selectors.js +86 -86
  40. package/lib/internal/template/app-layout/visual-refresh-toolbar/compute-layout.d.ts +3 -1
  41. package/lib/internal/template/app-layout/visual-refresh-toolbar/compute-layout.d.ts.map +1 -1
  42. package/lib/internal/template/app-layout/visual-refresh-toolbar/compute-layout.js +2 -2
  43. package/lib/internal/template/app-layout/visual-refresh-toolbar/compute-layout.js.map +1 -1
  44. package/lib/internal/template/app-layout/visual-refresh-toolbar/drawer/styles.css.js +32 -32
  45. package/lib/internal/template/app-layout/visual-refresh-toolbar/drawer/styles.scoped.css +93 -93
  46. package/lib/internal/template/app-layout/visual-refresh-toolbar/drawer/styles.selectors.js +32 -32
  47. package/lib/internal/template/app-layout/visual-refresh-toolbar/interfaces.d.ts +2 -0
  48. package/lib/internal/template/app-layout/visual-refresh-toolbar/interfaces.d.ts.map +1 -1
  49. package/lib/internal/template/app-layout/visual-refresh-toolbar/interfaces.js.map +1 -1
  50. package/lib/internal/template/app-layout/visual-refresh-toolbar/navigation/index.d.ts +2 -1
  51. package/lib/internal/template/app-layout/visual-refresh-toolbar/navigation/index.d.ts.map +1 -1
  52. package/lib/internal/template/app-layout/visual-refresh-toolbar/navigation/index.js +11 -5
  53. package/lib/internal/template/app-layout/visual-refresh-toolbar/navigation/index.js.map +1 -1
  54. package/lib/internal/template/app-layout/visual-refresh-toolbar/navigation/styles.css.js +6 -4
  55. package/lib/internal/template/app-layout/visual-refresh-toolbar/navigation/styles.scoped.css +34 -15
  56. package/lib/internal/template/app-layout/visual-refresh-toolbar/navigation/styles.selectors.js +6 -4
  57. package/lib/internal/template/app-layout/visual-refresh-toolbar/skeleton/skeleton-parts.d.ts.map +1 -1
  58. package/lib/internal/template/app-layout/visual-refresh-toolbar/skeleton/skeleton-parts.js +4 -2
  59. package/lib/internal/template/app-layout/visual-refresh-toolbar/skeleton/skeleton-parts.js.map +1 -1
  60. package/lib/internal/template/app-layout/visual-refresh-toolbar/skeleton/styles.css.js +30 -29
  61. package/lib/internal/template/app-layout/visual-refresh-toolbar/skeleton/styles.scoped.css +72 -67
  62. package/lib/internal/template/app-layout/visual-refresh-toolbar/skeleton/styles.selectors.js +30 -29
  63. package/lib/internal/template/app-layout/visual-refresh-toolbar/state/interfaces.d.ts +1 -0
  64. package/lib/internal/template/app-layout/visual-refresh-toolbar/state/interfaces.d.ts.map +1 -1
  65. package/lib/internal/template/app-layout/visual-refresh-toolbar/state/interfaces.js.map +1 -1
  66. package/lib/internal/template/app-layout/visual-refresh-toolbar/state/props-merger.d.ts.map +1 -1
  67. package/lib/internal/template/app-layout/visual-refresh-toolbar/state/props-merger.js +2 -0
  68. package/lib/internal/template/app-layout/visual-refresh-toolbar/state/props-merger.js.map +1 -1
  69. package/lib/internal/template/app-layout/visual-refresh-toolbar/state/use-app-layout.d.ts +1 -1
  70. package/lib/internal/template/app-layout/visual-refresh-toolbar/state/use-app-layout.d.ts.map +1 -1
  71. package/lib/internal/template/app-layout/visual-refresh-toolbar/state/use-app-layout.js +26 -3
  72. package/lib/internal/template/app-layout/visual-refresh-toolbar/state/use-app-layout.js.map +1 -1
  73. package/lib/internal/template/app-layout/visual-refresh-toolbar/state/use-skeleton-slots-attributes.d.ts.map +1 -1
  74. package/lib/internal/template/app-layout/visual-refresh-toolbar/state/use-skeleton-slots-attributes.js +2 -1
  75. package/lib/internal/template/app-layout/visual-refresh-toolbar/state/use-skeleton-slots-attributes.js.map +1 -1
  76. package/lib/internal/template/app-layout/visual-refresh-toolbar/toolbar/index.d.ts +1 -0
  77. package/lib/internal/template/app-layout/visual-refresh-toolbar/toolbar/index.d.ts.map +1 -1
  78. package/lib/internal/template/app-layout/visual-refresh-toolbar/toolbar/index.js.map +1 -1
  79. package/lib/internal/template/app-layout/visual-refresh-toolbar/toolbar/styles.css.js +14 -14
  80. package/lib/internal/template/app-layout/visual-refresh-toolbar/toolbar/styles.scoped.css +36 -36
  81. package/lib/internal/template/app-layout/visual-refresh-toolbar/toolbar/styles.selectors.js +14 -14
  82. package/lib/internal/template/app-layout/visual-refresh-toolbar/widget-areas/before-main-slot.d.ts.map +1 -1
  83. package/lib/internal/template/app-layout/visual-refresh-toolbar/widget-areas/before-main-slot.js +3 -3
  84. package/lib/internal/template/app-layout/visual-refresh-toolbar/widget-areas/before-main-slot.js.map +1 -1
  85. package/lib/internal/template/app-layout-toolbar/index.d.ts.map +1 -1
  86. package/lib/internal/template/app-layout-toolbar/index.js +2 -1
  87. package/lib/internal/template/app-layout-toolbar/index.js.map +1 -1
  88. package/lib/internal/template/attribute-editor/styles.css.js +15 -15
  89. package/lib/internal/template/attribute-editor/styles.scoped.css +29 -29
  90. package/lib/internal/template/attribute-editor/styles.selectors.js +15 -15
  91. package/lib/internal/template/box/interfaces.d.ts +1 -1
  92. package/lib/internal/template/box/interfaces.d.ts.map +1 -1
  93. package/lib/internal/template/box/interfaces.js.map +1 -1
  94. package/lib/internal/template/box/styles.css.js +220 -224
  95. package/lib/internal/template/box/styles.scoped.css +293 -313
  96. package/lib/internal/template/box/styles.selectors.js +220 -224
  97. package/lib/internal/template/breadcrumb-group/item/styles.css.js +7 -7
  98. package/lib/internal/template/breadcrumb-group/item/styles.scoped.css +30 -30
  99. package/lib/internal/template/breadcrumb-group/item/styles.selectors.js +7 -7
  100. package/lib/internal/template/button/internal.d.ts +2 -0
  101. package/lib/internal/template/button/internal.d.ts.map +1 -1
  102. package/lib/internal/template/button/internal.js +2 -1
  103. package/lib/internal/template/button/internal.js.map +1 -1
  104. package/lib/internal/template/button/styles.css.js +23 -22
  105. package/lib/internal/template/button/styles.scoped.css +261 -256
  106. package/lib/internal/template/button/styles.selectors.js +23 -22
  107. package/lib/internal/template/button-dropdown/internal-interfaces.d.ts +11 -0
  108. package/lib/internal/template/button-dropdown/internal-interfaces.d.ts.map +1 -1
  109. package/lib/internal/template/button-dropdown/internal-interfaces.js.map +1 -1
  110. package/lib/internal/template/button-dropdown/internal.d.ts.map +1 -1
  111. package/lib/internal/template/button-dropdown/internal.js +3 -2
  112. package/lib/internal/template/button-dropdown/internal.js.map +1 -1
  113. package/lib/internal/template/button-dropdown/item-element/styles.css.js +21 -21
  114. package/lib/internal/template/button-dropdown/item-element/styles.scoped.css +37 -37
  115. package/lib/internal/template/button-dropdown/item-element/styles.selectors.js +21 -21
  116. package/lib/internal/template/button-group/copy-to-clipboard-item.d.ts +16 -0
  117. package/lib/internal/template/button-group/copy-to-clipboard-item.d.ts.map +1 -0
  118. package/lib/internal/template/button-group/copy-to-clipboard-item.js +38 -0
  119. package/lib/internal/template/button-group/copy-to-clipboard-item.js.map +1 -0
  120. package/lib/internal/template/button-group/index.d.ts.map +1 -1
  121. package/lib/internal/template/button-group/index.js +9 -1
  122. package/lib/internal/template/button-group/index.js.map +1 -1
  123. package/lib/internal/template/button-group/interfaces.d.ts +38 -2
  124. package/lib/internal/template/button-group/interfaces.d.ts.map +1 -1
  125. package/lib/internal/template/button-group/interfaces.js.map +1 -1
  126. package/lib/internal/template/button-group/internal-interfaces.d.ts +1 -1
  127. package/lib/internal/template/button-group/internal-interfaces.d.ts.map +1 -1
  128. package/lib/internal/template/button-group/internal-interfaces.js.map +1 -1
  129. package/lib/internal/template/button-group/internal.d.ts.map +1 -1
  130. package/lib/internal/template/button-group/internal.js +2 -2
  131. package/lib/internal/template/button-group/internal.js.map +1 -1
  132. package/lib/internal/template/button-group/item-element.d.ts +2 -0
  133. package/lib/internal/template/button-group/item-element.d.ts.map +1 -1
  134. package/lib/internal/template/button-group/item-element.js +13 -3
  135. package/lib/internal/template/button-group/item-element.js.map +1 -1
  136. package/lib/internal/template/checkbox/styles.css.js +3 -3
  137. package/lib/internal/template/checkbox/styles.scoped.css +11 -11
  138. package/lib/internal/template/checkbox/styles.selectors.js +3 -3
  139. package/lib/internal/template/code-editor/styles.css.js +33 -33
  140. package/lib/internal/template/code-editor/styles.scoped.css +187 -187
  141. package/lib/internal/template/code-editor/styles.selectors.js +33 -33
  142. package/lib/internal/template/content-layout/styles.css.js +14 -14
  143. package/lib/internal/template/content-layout/styles.scoped.css +27 -27
  144. package/lib/internal/template/content-layout/styles.selectors.js +14 -14
  145. package/lib/internal/template/dropdown/styles.css.js +20 -20
  146. package/lib/internal/template/dropdown/styles.scoped.css +49 -49
  147. package/lib/internal/template/dropdown/styles.selectors.js +20 -20
  148. package/lib/internal/template/file-token-group/styles.css.js +23 -23
  149. package/lib/internal/template/file-token-group/styles.scoped.css +36 -36
  150. package/lib/internal/template/file-token-group/styles.selectors.js +23 -23
  151. package/lib/internal/template/flashbar/styles.css.js +50 -50
  152. package/lib/internal/template/flashbar/styles.scoped.css +192 -192
  153. package/lib/internal/template/flashbar/styles.selectors.js +50 -50
  154. package/lib/internal/template/help-panel/styles.css.js +6 -6
  155. package/lib/internal/template/help-panel/styles.scoped.css +72 -72
  156. package/lib/internal/template/help-panel/styles.selectors.js +6 -6
  157. package/lib/internal/template/i18n/messages/all.all.js +1 -1
  158. package/lib/internal/template/i18n/messages/all.all.json +1 -1
  159. package/lib/internal/template/i18n/messages/all.ar.js +1 -1
  160. package/lib/internal/template/i18n/messages/all.ar.json +1 -1
  161. package/lib/internal/template/i18n/messages/all.de.js +1 -1
  162. package/lib/internal/template/i18n/messages/all.de.json +1 -1
  163. package/lib/internal/template/i18n/messages/all.en-GB.js +1 -1
  164. package/lib/internal/template/i18n/messages/all.en-GB.json +1 -1
  165. package/lib/internal/template/i18n/messages/all.en.js +1 -1
  166. package/lib/internal/template/i18n/messages/all.en.json +1 -1
  167. package/lib/internal/template/i18n/messages/all.es.js +1 -1
  168. package/lib/internal/template/i18n/messages/all.es.json +1 -1
  169. package/lib/internal/template/i18n/messages/all.fr.js +1 -1
  170. package/lib/internal/template/i18n/messages/all.fr.json +1 -1
  171. package/lib/internal/template/i18n/messages/all.id.js +1 -1
  172. package/lib/internal/template/i18n/messages/all.id.json +1 -1
  173. package/lib/internal/template/i18n/messages/all.it.js +1 -1
  174. package/lib/internal/template/i18n/messages/all.it.json +1 -1
  175. package/lib/internal/template/i18n/messages/all.ja.js +1 -1
  176. package/lib/internal/template/i18n/messages/all.ja.json +1 -1
  177. package/lib/internal/template/i18n/messages/all.ko.js +1 -1
  178. package/lib/internal/template/i18n/messages/all.ko.json +1 -1
  179. package/lib/internal/template/i18n/messages/all.pt-BR.js +1 -1
  180. package/lib/internal/template/i18n/messages/all.pt-BR.json +1 -1
  181. package/lib/internal/template/i18n/messages/all.tr.js +1 -1
  182. package/lib/internal/template/i18n/messages/all.tr.json +1 -1
  183. package/lib/internal/template/i18n/messages/all.zh-CN.js +1 -1
  184. package/lib/internal/template/i18n/messages/all.zh-CN.json +1 -1
  185. package/lib/internal/template/i18n/messages/all.zh-TW.js +1 -1
  186. package/lib/internal/template/i18n/messages/all.zh-TW.json +1 -1
  187. package/lib/internal/template/i18n/messages-types.d.ts +19 -0
  188. package/lib/internal/template/i18n/messages-types.d.ts.map +1 -1
  189. package/lib/internal/template/i18n/messages-types.js.map +1 -1
  190. package/lib/internal/template/input/styles.css.js +18 -18
  191. package/lib/internal/template/input/styles.scoped.css +82 -82
  192. package/lib/internal/template/input/styles.selectors.js +18 -18
  193. package/lib/internal/template/internal/base-component/styles.scoped.css +171 -3
  194. package/lib/internal/template/internal/components/abstract-switch/index.d.ts.map +1 -1
  195. package/lib/internal/template/internal/components/abstract-switch/index.js +7 -1
  196. package/lib/internal/template/internal/components/abstract-switch/index.js.map +1 -1
  197. package/lib/internal/template/internal/components/drag-handle-wrapper/styles.css.js +30 -30
  198. package/lib/internal/template/internal/components/drag-handle-wrapper/styles.scoped.css +58 -58
  199. package/lib/internal/template/internal/components/drag-handle-wrapper/styles.selectors.js +30 -30
  200. package/lib/internal/template/internal/components/option/styles.css.js +17 -17
  201. package/lib/internal/template/internal/components/option/styles.scoped.css +31 -31
  202. package/lib/internal/template/internal/components/option/styles.selectors.js +17 -17
  203. package/lib/internal/template/internal/components/radio-button/styles.css.js +7 -7
  204. package/lib/internal/template/internal/components/radio-button/styles.scoped.css +18 -18
  205. package/lib/internal/template/internal/components/radio-button/styles.selectors.js +7 -7
  206. package/lib/internal/template/internal/components/selectable-item/styles.css.js +22 -22
  207. package/lib/internal/template/internal/components/selectable-item/styles.scoped.css +57 -57
  208. package/lib/internal/template/internal/components/selectable-item/styles.selectors.js +22 -22
  209. package/lib/internal/template/internal/components/token-list/styles.css.js +10 -10
  210. package/lib/internal/template/internal/components/token-list/styles.scoped.css +25 -25
  211. package/lib/internal/template/internal/components/token-list/styles.selectors.js +10 -10
  212. package/lib/internal/template/internal/environment.js +2 -2
  213. package/lib/internal/template/internal/environment.json +2 -2
  214. package/lib/internal/template/internal/generated/custom-css-properties/index.d.ts +1 -0
  215. package/lib/internal/template/internal/generated/custom-css-properties/index.d.ts.map +1 -1
  216. package/lib/internal/template/internal/generated/custom-css-properties/index.js +173 -172
  217. package/lib/internal/template/internal/generated/custom-css-properties/index.js.map +1 -1
  218. package/lib/internal/template/internal/generated/styles/tokens.d.ts +37 -38
  219. package/lib/internal/template/internal/generated/styles/tokens.js +37 -38
  220. package/lib/internal/template/internal/generated/theming/index.cjs +625 -774
  221. package/lib/internal/template/internal/generated/theming/index.cjs.d.ts +63 -9
  222. package/lib/internal/template/internal/generated/theming/index.d.ts +63 -9
  223. package/lib/internal/template/internal/generated/theming/index.js +625 -774
  224. package/lib/internal/template/item-card/styles.css.js +14 -14
  225. package/lib/internal/template/item-card/styles.scoped.css +63 -63
  226. package/lib/internal/template/item-card/styles.selectors.js +14 -14
  227. package/lib/internal/template/link/styles.css.js +21 -21
  228. package/lib/internal/template/link/styles.scoped.css +117 -117
  229. package/lib/internal/template/link/styles.selectors.js +21 -21
  230. package/lib/internal/template/modal/styles.css.js +31 -31
  231. package/lib/internal/template/modal/styles.scoped.css +48 -48
  232. package/lib/internal/template/modal/styles.selectors.js +31 -31
  233. package/lib/internal/template/package.json +94 -0
  234. package/lib/internal/template/progress-bar/styles.css.js +18 -18
  235. package/lib/internal/template/progress-bar/styles.scoped.css +48 -48
  236. package/lib/internal/template/progress-bar/styles.selectors.js +18 -18
  237. package/lib/internal/template/prompt-input/styles.css.js +26 -26
  238. package/lib/internal/template/prompt-input/styles.scoped.css +105 -105
  239. package/lib/internal/template/prompt-input/styles.selectors.js +26 -26
  240. package/lib/internal/template/segmented-control/styles.css.js +16 -16
  241. package/lib/internal/template/segmented-control/styles.scoped.css +46 -46
  242. package/lib/internal/template/segmented-control/styles.selectors.js +16 -16
  243. package/lib/internal/template/side-navigation/implementation.d.ts.map +1 -1
  244. package/lib/internal/template/side-navigation/implementation.js +6 -4
  245. package/lib/internal/template/side-navigation/implementation.js.map +1 -1
  246. package/lib/internal/template/side-navigation/parts.d.ts +4 -1
  247. package/lib/internal/template/side-navigation/parts.d.ts.map +1 -1
  248. package/lib/internal/template/side-navigation/parts.js +45 -32
  249. package/lib/internal/template/side-navigation/parts.js.map +1 -1
  250. package/lib/internal/template/side-navigation/styles.css.js +48 -47
  251. package/lib/internal/template/side-navigation/styles.scoped.css +79 -78
  252. package/lib/internal/template/side-navigation/styles.selectors.js +48 -47
  253. package/lib/internal/template/side-navigation/util.d.ts +1 -0
  254. package/lib/internal/template/side-navigation/util.d.ts.map +1 -1
  255. package/lib/internal/template/side-navigation/util.js +5 -0
  256. package/lib/internal/template/side-navigation/util.js.map +1 -1
  257. package/lib/internal/template/slider/styles.css.js +26 -26
  258. package/lib/internal/template/slider/styles.scoped.css +165 -165
  259. package/lib/internal/template/slider/styles.selectors.js +26 -26
  260. package/lib/internal/template/spinner/styles.css.js +13 -13
  261. package/lib/internal/template/spinner/styles.scoped.css +39 -39
  262. package/lib/internal/template/spinner/styles.selectors.js +13 -13
  263. package/lib/internal/template/status-indicator/internal-interfaces.d.ts +3 -0
  264. package/lib/internal/template/status-indicator/internal-interfaces.d.ts.map +1 -0
  265. package/lib/internal/template/status-indicator/internal-interfaces.js +2 -0
  266. package/lib/internal/template/status-indicator/internal-interfaces.js.map +1 -0
  267. package/lib/internal/template/status-indicator/internal.d.ts +6 -2
  268. package/lib/internal/template/status-indicator/internal.d.ts.map +1 -1
  269. package/lib/internal/template/status-indicator/internal.js +1 -0
  270. package/lib/internal/template/status-indicator/internal.js.map +1 -1
  271. package/lib/internal/template/status-indicator/styles.css.js +25 -24
  272. package/lib/internal/template/status-indicator/styles.scoped.css +59 -53
  273. package/lib/internal/template/status-indicator/styles.selectors.js +25 -24
  274. package/lib/internal/template/steps/interfaces.d.ts +4 -2
  275. package/lib/internal/template/steps/interfaces.d.ts.map +1 -1
  276. package/lib/internal/template/steps/interfaces.js.map +1 -1
  277. package/lib/internal/template/steps/internal.d.ts.map +1 -1
  278. package/lib/internal/template/steps/internal.js +36 -12
  279. package/lib/internal/template/steps/internal.js.map +1 -1
  280. package/lib/internal/template/steps/styles.css.js +17 -13
  281. package/lib/internal/template/steps/styles.scoped.css +99 -42
  282. package/lib/internal/template/steps/styles.selectors.js +17 -13
  283. package/lib/internal/template/table/clear-sort.d.ts +9 -0
  284. package/lib/internal/template/table/clear-sort.d.ts.map +1 -0
  285. package/lib/internal/template/table/clear-sort.js +15 -0
  286. package/lib/internal/template/table/clear-sort.js.map +1 -0
  287. package/lib/internal/template/table/header-cell/index.d.ts +4 -1
  288. package/lib/internal/template/table/header-cell/index.d.ts.map +1 -1
  289. package/lib/internal/template/table/header-cell/index.js +122 -33
  290. package/lib/internal/template/table/header-cell/index.js.map +1 -1
  291. package/lib/internal/template/table/header-cell/sort-menu.d.ts +14 -0
  292. package/lib/internal/template/table/header-cell/sort-menu.d.ts.map +1 -0
  293. package/lib/internal/template/table/header-cell/sort-menu.js +50 -0
  294. package/lib/internal/template/table/header-cell/sort-menu.js.map +1 -0
  295. package/lib/internal/template/table/header-cell/styles.css.js +38 -33
  296. package/lib/internal/template/table/header-cell/styles.scoped.css +101 -76
  297. package/lib/internal/template/table/header-cell/styles.selectors.js +38 -33
  298. package/lib/internal/template/table/header-cell/th-element.d.ts +8 -1
  299. package/lib/internal/template/table/header-cell/th-element.d.ts.map +1 -1
  300. package/lib/internal/template/table/header-cell/th-element.js +6 -2
  301. package/lib/internal/template/table/header-cell/th-element.js.map +1 -1
  302. package/lib/internal/template/table/index.d.ts.map +1 -1
  303. package/lib/internal/template/table/index.js +1 -0
  304. package/lib/internal/template/table/index.js.map +1 -1
  305. package/lib/internal/template/table/interfaces.d.ts +67 -1
  306. package/lib/internal/template/table/interfaces.d.ts.map +1 -1
  307. package/lib/internal/template/table/interfaces.js.map +1 -1
  308. package/lib/internal/template/table/internal.d.ts.map +1 -1
  309. package/lib/internal/template/table/internal.js +21 -3
  310. package/lib/internal/template/table/internal.js.map +1 -1
  311. package/lib/internal/template/table/multi-column-sort/live-announcement.d.ts +16 -0
  312. package/lib/internal/template/table/multi-column-sort/live-announcement.d.ts.map +1 -0
  313. package/lib/internal/template/table/multi-column-sort/live-announcement.js +68 -0
  314. package/lib/internal/template/table/multi-column-sort/live-announcement.js.map +1 -0
  315. package/lib/internal/template/table/multi-column-sort/utils.d.ts +45 -0
  316. package/lib/internal/template/table/multi-column-sort/utils.d.ts.map +1 -0
  317. package/lib/internal/template/table/multi-column-sort/utils.js +76 -0
  318. package/lib/internal/template/table/multi-column-sort/utils.js.map +1 -0
  319. package/lib/internal/template/table/styles.css.js +37 -36
  320. package/lib/internal/template/table/styles.scoped.css +46 -43
  321. package/lib/internal/template/table/styles.selectors.js +37 -36
  322. package/lib/internal/template/table/thead.d.ts +3 -0
  323. package/lib/internal/template/table/thead.d.ts.map +1 -1
  324. package/lib/internal/template/table/thead.js +3 -3
  325. package/lib/internal/template/table/thead.js.map +1 -1
  326. package/lib/internal/template/table/tools-header.d.ts +2 -1
  327. package/lib/internal/template/table/tools-header.d.ts.map +1 -1
  328. package/lib/internal/template/table/tools-header.js +4 -3
  329. package/lib/internal/template/table/tools-header.js.map +1 -1
  330. package/lib/internal/template/tabs/styles.css.js +30 -30
  331. package/lib/internal/template/tabs/styles.scoped.css +76 -76
  332. package/lib/internal/template/tabs/styles.selectors.js +30 -30
  333. package/lib/internal/template/tag-editor/styles.css.js +3 -3
  334. package/lib/internal/template/tag-editor/styles.scoped.css +13 -13
  335. package/lib/internal/template/tag-editor/styles.selectors.js +3 -3
  336. package/lib/internal/template/test-utils/dom/button-group/index.d.ts +4 -0
  337. package/lib/internal/template/test-utils/dom/button-group/index.js +8 -0
  338. package/lib/internal/template/test-utils/dom/button-group/index.js.map +1 -1
  339. package/lib/internal/template/test-utils/dom/steps/index.d.ts +4 -0
  340. package/lib/internal/template/test-utils/dom/steps/index.js +6 -0
  341. package/lib/internal/template/test-utils/dom/steps/index.js.map +1 -1
  342. package/lib/internal/template/test-utils/dom/table/index.d.ts +77 -0
  343. package/lib/internal/template/test-utils/dom/table/index.js +87 -2
  344. package/lib/internal/template/test-utils/dom/table/index.js.map +1 -1
  345. package/lib/internal/template/test-utils/selectors/button-group/index.d.ts +4 -0
  346. package/lib/internal/template/test-utils/selectors/button-group/index.js +8 -0
  347. package/lib/internal/template/test-utils/selectors/button-group/index.js.map +1 -1
  348. package/lib/internal/template/test-utils/selectors/steps/index.d.ts +4 -0
  349. package/lib/internal/template/test-utils/selectors/steps/index.js +6 -0
  350. package/lib/internal/template/test-utils/selectors/steps/index.js.map +1 -1
  351. package/lib/internal/template/test-utils/selectors/table/index.d.ts +77 -0
  352. package/lib/internal/template/test-utils/selectors/table/index.js +87 -2
  353. package/lib/internal/template/test-utils/selectors/table/index.js.map +1 -1
  354. package/lib/internal/template/text-content/styles.css.js +1 -1
  355. package/lib/internal/template/text-content/styles.scoped.css +66 -66
  356. package/lib/internal/template/text-content/styles.selectors.js +1 -1
  357. package/lib/internal/template/textarea/styles.css.js +5 -5
  358. package/lib/internal/template/textarea/styles.scoped.css +45 -45
  359. package/lib/internal/template/textarea/styles.selectors.js +5 -5
  360. package/lib/internal/template/toggle/styles.css.js +10 -10
  361. package/lib/internal/template/toggle/styles.scoped.css +23 -23
  362. package/lib/internal/template/toggle/styles.selectors.js +10 -10
  363. package/lib/internal/template/token/styles.css.js +14 -14
  364. package/lib/internal/template/token/styles.scoped.css +47 -47
  365. package/lib/internal/template/token/styles.selectors.js +14 -14
  366. package/lib/internal/template/tooltip/internal.d.ts.map +1 -1
  367. package/lib/internal/template/tooltip/internal.js +2 -1
  368. package/lib/internal/template/tooltip/internal.js.map +1 -1
  369. package/lib/internal/template/tooltip/styles.css.js +7 -0
  370. package/lib/internal/template/tooltip/styles.scoped.css +165 -0
  371. package/lib/internal/template/tooltip/styles.selectors.js +8 -0
  372. package/lib/internal/template/top-navigation/use-top-navigation.d.ts.map +1 -1
  373. package/lib/internal/template/top-navigation/use-top-navigation.js +2 -5
  374. package/lib/internal/template/top-navigation/use-top-navigation.js.map +1 -1
  375. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"use-top-navigation.js","sourceRoot":"","sources":["../../../src/top-navigation/use-top-navigation.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sCAAsC;AACtC,OAAc,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEjF,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AACzE,OAAO,EAAE,YAAY,EAAE,MAAM,+CAA+C,CAAC;AAE7E,OAAO,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAG9E,OAAO,MAAM,MAAM,iBAAiB,CAAC;AAsCrC,+FAA+F;AAC/F,MAAM,qBAAqB,GAAG,EAAE,CAAC;AAEjC,MAAM,UAAU,gBAAgB,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAA0B;IACtF,uBAAuB;IACvB,MAAM,OAAO,GAAG,MAAM,CAAqB,IAAI,CAAC,CAAC;IACjD,MAAM,UAAU,GAAG,MAAM,CAAwB,IAAI,CAAC,CAAC;IACvD,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,uBAAuB,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;IAE1E,uBAAuB;IACvB,4EAA4E;IAC5E,8EAA8E;IAC9E,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3B,MAAM,gBAAgB,GAAG,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;IAC3E,MAAM,gBAAgB,GAAG,OAAO,CAAiC,GAAG,EAAE;QACpE,OAAO,2BAA2B,CAAC,SAAS,EAAE,SAAS,EAAE,gBAAgB,CAAC,CAAC;IAC7E,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAE7C,kFAAkF;IAClF,qFAAqF;IACrF,wFAAwF;IACxF,uFAAuF;IACvF,uDAAuD;IACvD,EAAE;IACF,qFAAqF;IACrF,mFAAmF;IACnF,sDAAsD;IACtD,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,QAAQ,EAA+B,CAAC;IACtF,MAAM,cAAc,GAAG,WAAW,CAAC,GAAG,EAAE;QACtC,IAAI,CAAC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,CAAA,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;YAC7C,kBAAkB,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;YACxC,OAAO;QACT,CAAC;QAED,uDAAuD;QACvD,MAAM,cAAc,GAAG,kBAAkB,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,MAAM,CAAC,aAAa,CAAC,EAAE,CAAE,CAAC,CAAC;QACvG,IAAI,cAAc,KAAK,CAAC,EAAE,CAAC;YACzB,sCAAsC;YACtC,kBAAkB,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;YACxC,OAAO;QACT,CAAC;QAED,MAAM,iBAAiB,GAAG;YACxB,SAAS;YACT,cAAc;YAEd,4CAA4C;YAC5C,iBAAiB,EAAE,uBAAuB,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACrF,UAAU,EAAE,uBAAuB,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YAC3E,eAAe,EAAE,uBAAuB,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YACjF,kBAAkB,EAAE,UAAU,CAAC,OAAO,CAAC,aAAa,CAAC,iCAAiC,CAAE,CAAC,qBAAqB,EAAE;iBAC7G,KAAK;YACR,oBAAoB,EAAE,UAAU,CAC9B,gBAAgB,CAAC,UAAU,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,MAAM,CAAC,SAAS,EAAE,CAAE,CAAC,CAAC,WAAW,IAAI,KAAK,CACjG;YACD,sBAAsB,EAAE,KAAK,CAAC,SAAS,CAAC,KAAK;iBAC1C,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,gBAAgB,CAAC,6BAA6B,CAAC,CAAC;iBACxE,GAAG,CAAC,CAAC,OAAgB,EAAE,EAAE,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC,KAAK,CAAC;YACnE,yBAAyB,EAAE,KAAK,CAAC,SAAS,CAAC,KAAK;iBAC7C,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,gBAAgB,CAAC,4BAA4B,CAAC,CAAC;iBACvE,GAAG,CAAC,CAAC,OAAgB,EAAE,EAAE,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC,KAAK,CAAC;YACnE,uBAAuB,EAAE,UAAU,CAAC,OAAO;iBACxC,aAAa,CAAC,uCAAuC,CAAE;iBACvD,qBAAqB,EAAE,CAAC,KAAK;SACjC,CAAC;QACF,kBAAkB,CAAC,4BAA4B,CAAC,gBAAgB,EAAE,iBAAiB,CAAC,CAAC,CAAC;IACxF,CAAC,EAAE,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAC,CAAC;IAElC,MAAM,CAAC,EAAE,iBAAiB,CAAC,GAAG,iBAAiB,CAAC,GAAG,EAAE;QACnD,cAAc,EAAE,CAAC;IACnB,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;IAErB,2EAA2E;IAC3E,oCAAoC;IACpC,MAAM,cAAc,GAAG,WAAW,CAChC,CAAC,OAA8B,EAAE,EAAE;QACjC,UAAU,CAAC,OAAO,GAAG,OAAO,CAAC;QAC7B,cAAc,EAAE,CAAC;IACnB,CAAC,EACD,CAAC,cAAc,CAAC,CACjB,CAAC;IAEF,yCAAyC;IACzC,MAAM,CAAC,iBAAiB,EAAE,kBAAkB,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC/D,MAAM,gBAAgB,GAAG,CAAC,iBAAiB,IAAI,SAAS,KAAI,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,UAAU,CAAA,CAAC;IAExF,sEAAsE;IACtE,kEAAkE;IAClE,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,CAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,UAAU,CAAA,EAAE,CAAC;YACjC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;IAEtB,uEAAuE;IACvE,2EAA2E;IAC3E,uEAAuE;IACvE,SAAS,CAAC,GAAG,EAAE;;QACb,IAAI,gBAAgB,EAAE,CAAC;YACrB,MAAA,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,0CAAE,aAAa,CAAmB,IAAI,MAAM,CAAC,MAAM,QAAQ,CAAC,0CAAE,KAAK,EAAE,CAAC;QACxF,CAAC;IACH,CAAC,EAAE,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC,CAAC;IAEhC,MAAM,aAAa,GAAG,YAAY,CAAC,OAAO,EAAE,iBAAiB,EAAE,aAAa,CAAC,CAAC;IAE9E,OAAO;QACL,OAAO,EAAE,aAAa;QACtB,UAAU,EAAE,cAAc;QAC1B,eAAe,EAAE,eAAe,aAAf,eAAe,cAAf,eAAe,GAAI,gBAAgB,CAAC,CAAC,CAAC;QACvD,UAAU,EAAE,UAAU,aAAV,UAAU,cAAV,UAAU,GAAI,SAAS;QACnC,gBAAgB,EAAE,CAAC,CAAC,gBAAgB;QACpC,oBAAoB,EAAE,GAAG,EAAE,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC,iBAAiB,CAAC;KACxF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,kBAAkB,CAAC,OAAgB;IAC1C,MAAM,KAAK,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACxC,OAAO,CACL,UAAU,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,YAAY,IAAI,KAAK,CAAC,CACpH,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CAAC,MAAe,EAAE,QAAgB;;IACvE,OAAO,MAAA,MAAA,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,0CAAE,qBAAqB,GAAG,KAAK,mCAAI,CAAC,CAAC;AAC5E,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,2BAA2B,CACzC,SAAoD,EACpD,aAAsB,EACtB,YAAqB;IAErB,MAAM,MAAM,GAAsB,CAAC,EAAE,CAAC,CAAC;IACvC,IAAI,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5C,MAAM,CAAC,IAAI,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;IACzC,CAAC;IACD,IAAI,aAAa,EAAE,CAAC;QAClB,MAAM,CAAC,IAAI,CAAC;YACV,eAAe,EAAE,IAAI;YACrB,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;IACL,CAAC;IACD,MAAM,cAAc,GAAG,EAAE,CAAC;IAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC1C,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,sBAAsB,EAAE,CAAC;YACzC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACvB,MAAM,CAAC,IAAI,CAAC;gBACV,eAAe,EAAE,IAAI;gBACrB,UAAU,EAAE,aAAa,IAAI,SAAS;gBACtC,aAAa,EAAE,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS;aAC9E,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IACD,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,CAAC,IAAI,CAAC;YACV,eAAe,EAAE,IAAI;YACrB,UAAU,EAAE,aAAa,IAAI,SAAS;YACtC,aAAa,EAAE,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS;YAC7E,SAAS,EAAE,IAAI;SAChB,CAAC,CAAC;IACL,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,4BAA4B,CAC1C,cAA8C,EAC9C,KAAqC;IAErC,MAAM,EACJ,SAAS,EACT,cAAc,EACd,oBAAoB,EACpB,iBAAiB,EACjB,UAAU,EACV,eAAe,EACf,kBAAkB,EAClB,sBAAsB,EACtB,yBAAyB,EACzB,uBAAuB,GACxB,GAAG,KAAK,CAAC;IACV,wEAAwE;IACxE,KAAK,MAAM,KAAK,IAAI,cAAc,EAAE,CAAC;QACnC,MAAM,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9F,MAAM,cAAc,GAAW,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,sBAAsB,CAAC;aACxG,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;aACpF,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC;QAC1C,MAAM,gBAAgB,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3E,MAAM,aAAa,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,iBAAiB,GAAG,UAAU,CAAC,CAAC,CAAC,iBAAiB,CAAC;QAC3F,MAAM,kBAAkB,GAAG,aAAa,GAAG,WAAW,GAAG,oBAAoB,GAAG,cAAc,GAAG,gBAAgB,CAAC;QAClH,IAAI,kBAAkB,IAAI,cAAc,GAAG,qBAAqB,EAAE,CAAC;YACjE,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,wDAAwD;IACxD,OAAO,cAAc,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACnD,CAAC","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\n\nimport { useContainerQuery } from '@cloudscape-design/component-toolkit';\nimport { useMergeRefs } from '@cloudscape-design/component-toolkit/internal';\n\nimport { useContainerBreakpoints } from '../internal/hooks/container-queries';\nimport { TopNavigationProps } from './interfaces';\n\nimport styles from './styles.css.js';\n\ninterface UseTopNavigationParams {\n identity: TopNavigationProps['identity'];\n search: TopNavigationProps['search'];\n utilities: NonNullable<TopNavigationProps['utilities']>;\n}\n\ninterface ResponsiveState {\n hideUtilityText?: boolean;\n hideSearch?: boolean;\n hideUtilities?: number[];\n hideTitle?: boolean;\n}\n\nexport interface TopNavigationSizeConfiguration {\n hasSearch: boolean;\n availableWidth: number;\n utilitiesLeftPadding: number;\n fullIdentityWidth: number;\n titleWidth: number;\n searchSlotWidth: number;\n searchUtilityWidth: number;\n utilityWithLabelWidths: number[];\n utilityWithoutLabelWidths: number[];\n menuTriggerUtilityWidth: number;\n}\n\ninterface UseTopNavigation {\n mainRef: React.Ref<HTMLDivElement>;\n virtualRef: React.Ref<HTMLDivElement>;\n\n responsiveState: ResponsiveState;\n breakpoint: 'default' | 'xxs' | 's';\n isSearchExpanded: boolean;\n onSearchUtilityClick: () => void;\n}\n\n// A small buffer to make calculations more lenient against browser lag or padding adjustments.\nconst RESPONSIVENESS_BUFFER = 20;\n\nexport function useTopNavigation({ identity, search, utilities }: UseTopNavigationParams): UseTopNavigation {\n // Refs and breakpoints\n const mainRef = useRef<HTMLElement | null>(null);\n const virtualRef = useRef<HTMLDivElement | null>(null);\n const [breakpoint, breakpointRef] = useContainerBreakpoints(['xxs', 's']);\n\n // Responsiveness state\n // The component works by calculating the possible resize states that it can\n // be in, and having a state variable to track which state we're currently in.\n const hasSearch = !!search;\n const hasTitleWithLogo = !!identity && !!identity.logo && !!identity.title;\n const responsiveStates = useMemo<ReadonlyArray<ResponsiveState>>(() => {\n return generateResponsiveStateKeys(utilities, hasSearch, hasTitleWithLogo);\n }, [utilities, hasSearch, hasTitleWithLogo]);\n\n // To hide/show elements dynamically, we need to know how much space they take up,\n // even if they're not being rendered. The top navigation elements are hidden/resized\n // based on the available size or if a search bar is open, and they need to be available\n // for calculations so we know where to toggle them. So we render a second, more stable\n // top-nav off screen to do these calculations against.\n //\n // We can't \"affix\" these values to pixels because they can depend on spacing tokens.\n // It's easier to render all of these utilities separately rather than figuring out\n // spacing token values, icon sizes, text widths, etc.\n const [responsiveState, setResponsiveState] = useState<ResponsiveState | undefined>();\n const recalculateFit = useCallback(() => {\n if (!mainRef?.current || !virtualRef.current) {\n setResponsiveState(responsiveStates[0]);\n return;\n }\n\n // Get available width from the visible top navigation.\n const availableWidth = getContentBoxWidth(mainRef.current.querySelector(`.${styles['padding-box']}`)!);\n if (availableWidth === 0) {\n // Likely in an SSR or Jest situation.\n setResponsiveState(responsiveStates[0]);\n return;\n }\n\n const sizeConfiguration = {\n hasSearch,\n availableWidth,\n\n // Get widths from the hidden top navigation\n fullIdentityWidth: getOptionalElementWidth(virtualRef.current, `.${styles.identity}`),\n titleWidth: getOptionalElementWidth(virtualRef.current, `.${styles.title}`),\n searchSlotWidth: getOptionalElementWidth(virtualRef.current, `.${styles.search}`),\n searchUtilityWidth: virtualRef.current.querySelector('[data-utility-special=\"search\"]')!.getBoundingClientRect()\n .width,\n utilitiesLeftPadding: parseFloat(\n getComputedStyle(virtualRef.current.querySelector(`.${styles.utilities}`)!).paddingLeft || '0px'\n ),\n utilityWithLabelWidths: Array.prototype.slice\n .call(virtualRef.current.querySelectorAll(`[data-utility-hide=\"false\"]`))\n .map((element: Element) => element.getBoundingClientRect().width),\n utilityWithoutLabelWidths: Array.prototype.slice\n .call(virtualRef.current.querySelectorAll(`[data-utility-hide=\"true\"]`))\n .map((element: Element) => element.getBoundingClientRect().width),\n menuTriggerUtilityWidth: virtualRef.current\n .querySelector('[data-utility-special=\"menu-trigger\"]')!\n .getBoundingClientRect().width,\n };\n setResponsiveState(determineBestResponsiveState(responsiveStates, sizeConfiguration));\n }, [responsiveStates, hasSearch]);\n\n const [, containerQueryRef] = useContainerQuery(() => {\n recalculateFit();\n }, [recalculateFit]);\n\n // Due to being rendered in a portal, the virtual navigation isn't rendered\n // at the same time as the main one.\n const onVirtualMount = useCallback(\n (element: HTMLDivElement | null) => {\n virtualRef.current = element;\n recalculateFit();\n },\n [recalculateFit]\n );\n\n // Search slot expansion on small screens\n const [isSearchMinimized, setSearchMinimized] = useState(true);\n const isSearchExpanded = !isSearchMinimized && hasSearch && responsiveState?.hideSearch;\n\n // If the search was expanded, and then the screen resized so that the\n // expansion is no longer necessary. So we implicitly minimize it.\n useEffect(() => {\n if (!responsiveState?.hideSearch) {\n setSearchMinimized(true);\n }\n }, [responsiveState]);\n\n // If the search is expanded after clicking on the search utility, move\n // the focus to the input. Since this is a user-controlled slot, we're just\n // assuming that it contains an input, though it's a pretty safe guess.\n useEffect(() => {\n if (isSearchExpanded) {\n mainRef?.current?.querySelector<HTMLInputElement>(`.${styles.search} input`)?.focus();\n }\n }, [isSearchExpanded, mainRef]);\n\n const mergedMainRef = useMergeRefs(mainRef, containerQueryRef, breakpointRef);\n\n return {\n mainRef: mergedMainRef,\n virtualRef: onVirtualMount,\n responsiveState: responsiveState ?? responsiveStates[0],\n breakpoint: breakpoint ?? 'default',\n isSearchExpanded: !!isSearchExpanded,\n onSearchUtilityClick: () => setSearchMinimized(isSearchMinimized => !isSearchMinimized),\n };\n}\n\n/**\n * Get the width of the content box (assuming the element's box-sizing is border-box).\n */\nfunction getContentBoxWidth(element: Element): number {\n const style = getComputedStyle(element);\n return (\n parseFloat(style.width || '0px') - parseFloat(style.paddingLeft || '0px') - parseFloat(style.paddingRight || '0px')\n );\n}\n\n/**\n * Measures the width of an optional element, returning 0 when it is not rendered\n * (e.g. there is no `identity`, `title` or `search`).\n */\nexport function getOptionalElementWidth(parent: Element, selector: string): number {\n return parent.querySelector(selector)?.getBoundingClientRect().width ?? 0;\n}\n\n/**\n * Generates the series of responsive steps that can be performed on the header in order.\n */\nexport function generateResponsiveStateKeys(\n utilities: ReadonlyArray<TopNavigationProps.Utility>,\n canHideSearch: boolean,\n canHideTitle: boolean\n): ReadonlyArray<ResponsiveState> {\n const states: ResponsiveState[] = [{}];\n if (utilities.some(utility => utility.text)) {\n states.push({ hideUtilityText: true });\n }\n if (canHideSearch) {\n states.push({\n hideUtilityText: true,\n hideSearch: true,\n });\n }\n const hiddenUtilties = [];\n for (let i = 0; i < utilities.length; i++) {\n if (!utilities[i].disableUtilityCollapse) {\n hiddenUtilties.push(i);\n states.push({\n hideUtilityText: true,\n hideSearch: canHideSearch || undefined,\n hideUtilities: hiddenUtilties.length > 0 ? hiddenUtilties.slice() : undefined,\n });\n }\n }\n if (canHideTitle) {\n states.push({\n hideUtilityText: true,\n hideSearch: canHideSearch || undefined,\n hideUtilities: hiddenUtilties.length > 0 ? hiddenUtilties.slice() : undefined,\n hideTitle: true,\n });\n }\n return states;\n}\n\n/**\n * Determines the best responsive state configuration of the top navigation, based on the given list of possible responsive states\n * and the current sizes of all elements inside the navigation bar.\n */\nexport function determineBestResponsiveState(\n possibleStates: ReadonlyArray<ResponsiveState>,\n sizes: TopNavigationSizeConfiguration\n): ResponsiveState {\n const {\n hasSearch,\n availableWidth,\n utilitiesLeftPadding,\n fullIdentityWidth,\n titleWidth,\n searchSlotWidth,\n searchUtilityWidth,\n utilityWithLabelWidths,\n utilityWithoutLabelWidths,\n menuTriggerUtilityWidth,\n } = sizes;\n // Iterate through each state and calculate its expected required width.\n for (const state of possibleStates) {\n const searchWidth = hasSearch ? (state.hideSearch ? searchUtilityWidth : searchSlotWidth) : 0;\n const utilitiesWidth: number = (state.hideUtilityText ? utilityWithoutLabelWidths : utilityWithLabelWidths)\n .filter((_width, i) => !state.hideUtilities || state.hideUtilities.indexOf(i) === -1)\n .reduce((sum, width) => sum + width, 0);\n const menuTriggerWidth = state.hideUtilities ? menuTriggerUtilityWidth : 0;\n const identityWidth = state.hideTitle ? fullIdentityWidth - titleWidth : fullIdentityWidth;\n const expectedInnerWidth = identityWidth + searchWidth + utilitiesLeftPadding + utilitiesWidth + menuTriggerWidth;\n if (expectedInnerWidth <= availableWidth - RESPONSIVENESS_BUFFER) {\n return state;\n }\n }\n\n // If nothing matches, pick the smallest possible state.\n return possibleStates[possibleStates.length - 1];\n}\n"]}
1
+ {"version":3,"file":"use-top-navigation.js","sourceRoot":"","sources":["../../../src/top-navigation/use-top-navigation.ts"],"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, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\n\nimport { useContainerQuery } from '@cloudscape-design/component-toolkit';\nimport { useMergeRefs } from '@cloudscape-design/component-toolkit/internal';\n\nimport { useContainerBreakpoints } from '../internal/hooks/container-queries';\nimport { TopNavigationProps } from './interfaces';\n\nimport styles from './styles.css.js';\n\ninterface UseTopNavigationParams {\n identity: TopNavigationProps['identity'];\n search: TopNavigationProps['search'];\n utilities: NonNullable<TopNavigationProps['utilities']>;\n}\n\ninterface ResponsiveState {\n hideUtilityText?: boolean;\n hideSearch?: boolean;\n hideUtilities?: number[];\n hideTitle?: boolean;\n}\n\nexport interface TopNavigationSizeConfiguration {\n hasSearch: boolean;\n availableWidth: number;\n utilitiesLeftPadding: number;\n fullIdentityWidth: number;\n titleWidth: number;\n searchSlotWidth: number;\n searchUtilityWidth: number;\n utilityWithLabelWidths: number[];\n utilityWithoutLabelWidths: number[];\n menuTriggerUtilityWidth: number;\n}\n\ninterface UseTopNavigation {\n mainRef: React.Ref<HTMLDivElement>;\n virtualRef: React.Ref<HTMLDivElement>;\n\n responsiveState: ResponsiveState;\n breakpoint: 'default' | 'xxs' | 's';\n isSearchExpanded: boolean;\n onSearchUtilityClick: () => void;\n}\n\n// A small buffer to make calculations more lenient against browser lag or padding adjustments.\nconst RESPONSIVENESS_BUFFER = 20;\n\nexport function useTopNavigation({ identity, search, utilities }: UseTopNavigationParams): UseTopNavigation {\n // Refs and breakpoints\n const mainRef = useRef<HTMLElement | null>(null);\n const virtualRef = useRef<HTMLDivElement | null>(null);\n const [breakpoint, breakpointRef] = useContainerBreakpoints(['xxs', 's']);\n\n // Responsiveness state\n // The component works by calculating the possible resize states that it can\n // be in, and having a state variable to track which state we're currently in.\n const hasSearch = !!search;\n const hasTitleWithLogo = !!identity && !!identity.logo && !!identity.title;\n const responsiveStates = useMemo<ReadonlyArray<ResponsiveState>>(() => {\n return generateResponsiveStateKeys(utilities, hasSearch, hasTitleWithLogo);\n }, [utilities, hasSearch, hasTitleWithLogo]);\n\n // To hide/show elements dynamically, we need to know how much space they take up,\n // even if they're not being rendered. The top navigation elements are hidden/resized\n // based on the available size or if a search bar is open, and they need to be available\n // for calculations so we know where to toggle them. So we render a second, more stable\n // top-nav off screen to do these calculations against.\n //\n // We can't \"affix\" these values to pixels because they can depend on spacing tokens.\n // It's easier to render all of these utilities separately rather than figuring out\n // spacing token values, icon sizes, text widths, etc.\n const [responsiveState, setResponsiveState] = useState<ResponsiveState | undefined>();\n const recalculateFit = useCallback(() => {\n if (!mainRef?.current || !virtualRef.current) {\n setResponsiveState(responsiveStates[0]);\n return;\n }\n\n // Get available width from the visible top navigation.\n const availableWidth = getContentBoxWidth(mainRef.current.querySelector(`.${styles['padding-box']}`)!);\n if (availableWidth === 0) {\n // Likely in an SSR or Jest situation.\n setResponsiveState(responsiveStates[0]);\n return;\n }\n\n const sizeConfiguration = {\n hasSearch,\n availableWidth,\n\n // Get widths from the hidden top navigation\n fullIdentityWidth: getOptionalElementWidth(virtualRef.current, `.${styles.identity}`),\n titleWidth: getOptionalElementWidth(virtualRef.current, `.${styles.title}`),\n searchSlotWidth: getOptionalElementWidth(virtualRef.current, `.${styles.search}`),\n searchUtilityWidth: getOptionalElementWidth(virtualRef.current, '[data-utility-special=\"search\"]'),\n utilitiesLeftPadding: parseFloat(\n getComputedStyle(virtualRef.current.querySelector(`.${styles.utilities}`)!).paddingLeft || '0px'\n ),\n utilityWithLabelWidths: Array.prototype.slice\n .call(virtualRef.current.querySelectorAll(`[data-utility-hide=\"false\"]`))\n .map((element: Element) => element.getBoundingClientRect().width),\n utilityWithoutLabelWidths: Array.prototype.slice\n .call(virtualRef.current.querySelectorAll(`[data-utility-hide=\"true\"]`))\n .map((element: Element) => element.getBoundingClientRect().width),\n menuTriggerUtilityWidth: getOptionalElementWidth(virtualRef.current, '[data-utility-special=\"menu-trigger\"]'),\n };\n setResponsiveState(determineBestResponsiveState(responsiveStates, sizeConfiguration));\n }, [responsiveStates, hasSearch]);\n\n const [, containerQueryRef] = useContainerQuery(() => {\n recalculateFit();\n }, [recalculateFit]);\n\n // Due to being rendered in a portal, the virtual navigation isn't rendered\n // at the same time as the main one.\n const onVirtualMount = useCallback(\n (element: HTMLDivElement | null) => {\n virtualRef.current = element;\n recalculateFit();\n },\n [recalculateFit]\n );\n\n // Search slot expansion on small screens\n const [isSearchMinimized, setSearchMinimized] = useState(true);\n const isSearchExpanded = !isSearchMinimized && hasSearch && responsiveState?.hideSearch;\n\n // If the search was expanded, and then the screen resized so that the\n // expansion is no longer necessary. So we implicitly minimize it.\n useEffect(() => {\n if (!responsiveState?.hideSearch) {\n setSearchMinimized(true);\n }\n }, [responsiveState]);\n\n // If the search is expanded after clicking on the search utility, move\n // the focus to the input. Since this is a user-controlled slot, we're just\n // assuming that it contains an input, though it's a pretty safe guess.\n useEffect(() => {\n if (isSearchExpanded) {\n mainRef?.current?.querySelector<HTMLInputElement>(`.${styles.search} input`)?.focus();\n }\n }, [isSearchExpanded, mainRef]);\n\n const mergedMainRef = useMergeRefs(mainRef, containerQueryRef, breakpointRef);\n\n return {\n mainRef: mergedMainRef,\n virtualRef: onVirtualMount,\n responsiveState: responsiveState ?? responsiveStates[0],\n breakpoint: breakpoint ?? 'default',\n isSearchExpanded: !!isSearchExpanded,\n onSearchUtilityClick: () => setSearchMinimized(isSearchMinimized => !isSearchMinimized),\n };\n}\n\n/**\n * Get the width of the content box (assuming the element's box-sizing is border-box).\n */\nfunction getContentBoxWidth(element: Element): number {\n const style = getComputedStyle(element);\n return (\n parseFloat(style.width || '0px') - parseFloat(style.paddingLeft || '0px') - parseFloat(style.paddingRight || '0px')\n );\n}\n\n/**\n * Measures the width of an optional element, returning 0 when it is not rendered\n * (e.g. there is no `identity`, `title` or `search`).\n */\nexport function getOptionalElementWidth(parent: Element, selector: string): number {\n return parent.querySelector(selector)?.getBoundingClientRect().width ?? 0;\n}\n\n/**\n * Generates the series of responsive steps that can be performed on the header in order.\n */\nexport function generateResponsiveStateKeys(\n utilities: ReadonlyArray<TopNavigationProps.Utility>,\n canHideSearch: boolean,\n canHideTitle: boolean\n): ReadonlyArray<ResponsiveState> {\n const states: ResponsiveState[] = [{}];\n if (utilities.some(utility => utility.text)) {\n states.push({ hideUtilityText: true });\n }\n if (canHideSearch) {\n states.push({\n hideUtilityText: true,\n hideSearch: true,\n });\n }\n const hiddenUtilties = [];\n for (let i = 0; i < utilities.length; i++) {\n if (!utilities[i].disableUtilityCollapse) {\n hiddenUtilties.push(i);\n states.push({\n hideUtilityText: true,\n hideSearch: canHideSearch || undefined,\n hideUtilities: hiddenUtilties.length > 0 ? hiddenUtilties.slice() : undefined,\n });\n }\n }\n if (canHideTitle) {\n states.push({\n hideUtilityText: true,\n hideSearch: canHideSearch || undefined,\n hideUtilities: hiddenUtilties.length > 0 ? hiddenUtilties.slice() : undefined,\n hideTitle: true,\n });\n }\n return states;\n}\n\n/**\n * Determines the best responsive state configuration of the top navigation, based on the given list of possible responsive states\n * and the current sizes of all elements inside the navigation bar.\n */\nexport function determineBestResponsiveState(\n possibleStates: ReadonlyArray<ResponsiveState>,\n sizes: TopNavigationSizeConfiguration\n): ResponsiveState {\n const {\n hasSearch,\n availableWidth,\n utilitiesLeftPadding,\n fullIdentityWidth,\n titleWidth,\n searchSlotWidth,\n searchUtilityWidth,\n utilityWithLabelWidths,\n utilityWithoutLabelWidths,\n menuTriggerUtilityWidth,\n } = sizes;\n // Iterate through each state and calculate its expected required width.\n for (const state of possibleStates) {\n const searchWidth = hasSearch ? (state.hideSearch ? searchUtilityWidth : searchSlotWidth) : 0;\n const utilitiesWidth: number = (state.hideUtilityText ? utilityWithoutLabelWidths : utilityWithLabelWidths)\n .filter((_width, i) => !state.hideUtilities || state.hideUtilities.indexOf(i) === -1)\n .reduce((sum, width) => sum + width, 0);\n const menuTriggerWidth = state.hideUtilities ? menuTriggerUtilityWidth : 0;\n const identityWidth = state.hideTitle ? fullIdentityWidth - titleWidth : fullIdentityWidth;\n const expectedInnerWidth = identityWidth + searchWidth + utilitiesLeftPadding + utilitiesWidth + menuTriggerWidth;\n if (expectedInnerWidth <= availableWidth - RESPONSIVENESS_BUFFER) {\n return state;\n }\n }\n\n // If nothing matches, pick the smallest possible state.\n return possibleStates[possibleStates.length - 1];\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cloudscape-design/components-themeable",
3
- "version": "3.0.1332",
3
+ "version": "3.0.1334",
4
4
  "files": [
5
5
  "lib"
6
6
  ],