@hashicorp/design-system-components 6.2.0 → 6.2.1

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 (748) hide show
  1. package/declarations/components/hds/accordion/index.d.ts +1 -1
  2. package/declarations/components/hds/accordion/item/button.d.ts +1 -1
  3. package/declarations/components/hds/accordion/item/index.d.ts +1 -1
  4. package/declarations/components/hds/advanced-table/body.d.ts +4 -0
  5. package/declarations/components/hds/advanced-table/column-manager/index.d.ts +1 -1
  6. package/declarations/components/hds/advanced-table/column-manager/order.d.ts +4 -0
  7. package/declarations/components/hds/advanced-table/column-manager/width.d.ts +4 -0
  8. package/declarations/components/hds/advanced-table/index.d.ts +1 -1
  9. package/declarations/components/hds/advanced-table/td.d.ts +1 -1
  10. package/declarations/components/hds/advanced-table/th-button-expand.d.ts +1 -1
  11. package/declarations/components/hds/advanced-table/th-button-sort.d.ts +1 -1
  12. package/declarations/components/hds/advanced-table/th-button-tooltip.d.ts +1 -1
  13. package/declarations/components/hds/advanced-table/th-context-menu.d.ts +1 -1
  14. package/declarations/components/hds/advanced-table/th-reorder-drop-target.d.ts +1 -1
  15. package/declarations/components/hds/advanced-table/th-reorder-handle.d.ts +1 -1
  16. package/declarations/components/hds/advanced-table/th-resize-handle.d.ts +1 -1
  17. package/declarations/components/hds/advanced-table/th-selectable.d.ts +1 -1
  18. package/declarations/components/hds/advanced-table/th.d.ts +1 -1
  19. package/declarations/components/hds/advanced-table/tr.d.ts +1 -1
  20. package/declarations/components/hds/advanced-table/types.d.ts +1 -1
  21. package/declarations/components/hds/advanced-table/utils.d.ts +1 -1
  22. package/declarations/components/hds/alert/description.d.ts +1 -1
  23. package/declarations/components/hds/alert/index.d.ts +1 -1
  24. package/declarations/components/hds/alert/title.d.ts +1 -1
  25. package/declarations/components/hds/app-footer/copyright.d.ts +1 -1
  26. package/declarations/components/hds/app-footer/index.d.ts +1 -1
  27. package/declarations/components/hds/app-footer/item.d.ts +1 -1
  28. package/declarations/components/hds/app-footer/legal-links.d.ts +1 -1
  29. package/declarations/components/hds/app-footer/link.d.ts +1 -1
  30. package/declarations/components/hds/app-footer/status-link.d.ts +3 -3
  31. package/declarations/components/hds/app-footer/types.d.ts +1 -1
  32. package/declarations/components/hds/app-frame/index.d.ts +1 -1
  33. package/declarations/components/hds/app-frame/parts/footer.d.ts +1 -1
  34. package/declarations/components/hds/app-frame/parts/header.d.ts +1 -1
  35. package/declarations/components/hds/app-frame/parts/main.d.ts +1 -1
  36. package/declarations/components/hds/app-frame/parts/modals.d.ts +1 -1
  37. package/declarations/components/hds/app-frame/parts/sidebar.d.ts +1 -1
  38. package/declarations/components/hds/app-header/home-link.d.ts +1 -1
  39. package/declarations/components/hds/app-header/index.d.ts +1 -1
  40. package/declarations/components/hds/app-header/menu-button.d.ts +1 -1
  41. package/declarations/components/hds/app-side-nav/index.d.ts +1 -1
  42. package/declarations/components/hds/app-side-nav/list/back-link.d.ts +1 -1
  43. package/declarations/components/hds/app-side-nav/list/index.d.ts +1 -1
  44. package/declarations/components/hds/app-side-nav/list/item.d.ts +1 -1
  45. package/declarations/components/hds/app-side-nav/list/link.d.ts +1 -1
  46. package/declarations/components/hds/app-side-nav/list/title.d.ts +1 -1
  47. package/declarations/components/hds/app-side-nav/portal/index.d.ts +1 -1
  48. package/declarations/components/hds/app-side-nav/portal/target.d.ts +1 -1
  49. package/declarations/components/hds/app-side-nav/toggle-button.d.ts +1 -1
  50. package/declarations/components/hds/application-state/body.d.ts +1 -1
  51. package/declarations/components/hds/application-state/footer.d.ts +1 -1
  52. package/declarations/components/hds/application-state/header.d.ts +1 -1
  53. package/declarations/components/hds/application-state/index.d.ts +1 -1
  54. package/declarations/components/hds/application-state/media.d.ts +1 -1
  55. package/declarations/components/hds/badge/index.d.ts +1 -1
  56. package/declarations/components/hds/badge-count/index.d.ts +1 -1
  57. package/declarations/components/hds/breadcrumb/index.d.ts +1 -1
  58. package/declarations/components/hds/breadcrumb/item.d.ts +2 -3
  59. package/declarations/components/hds/breadcrumb/truncation.d.ts +1 -1
  60. package/declarations/components/hds/button/index.d.ts +1 -1
  61. package/declarations/components/hds/button-set/index.d.ts +1 -1
  62. package/declarations/components/hds/card/container.d.ts +1 -1
  63. package/declarations/components/hds/code-block/copy-button.d.ts +1 -1
  64. package/declarations/components/hds/code-block/description.d.ts +1 -1
  65. package/declarations/components/hds/code-block/index.d.ts +1 -1
  66. package/declarations/components/hds/code-block/title.d.ts +1 -1
  67. package/declarations/components/hds/code-editor/description.d.ts +1 -1
  68. package/declarations/components/hds/code-editor/full-screen-button.d.ts +1 -1
  69. package/declarations/components/hds/code-editor/generic.d.ts +1 -1
  70. package/declarations/components/hds/code-editor/index.d.ts +1 -1
  71. package/declarations/components/hds/code-editor/title.d.ts +1 -1
  72. package/declarations/components/hds/composite/index.d.ts +4 -0
  73. package/declarations/components/hds/composite/navigation.d.ts +4 -0
  74. package/declarations/components/hds/composite/types.d.ts +4 -0
  75. package/declarations/components/hds/copy/button/index.d.ts +1 -1
  76. package/declarations/components/hds/copy/snippet/index.d.ts +5 -1
  77. package/declarations/components/hds/dialog-primitive/body.d.ts +1 -1
  78. package/declarations/components/hds/dialog-primitive/description.d.ts +1 -1
  79. package/declarations/components/hds/dialog-primitive/footer.d.ts +1 -1
  80. package/declarations/components/hds/dialog-primitive/header.d.ts +1 -1
  81. package/declarations/components/hds/dialog-primitive/overlay.d.ts +1 -1
  82. package/declarations/components/hds/dialog-primitive/wrapper.d.ts +1 -1
  83. package/declarations/components/hds/disclosure-primitive/index.d.ts +1 -1
  84. package/declarations/components/hds/dismiss-button/index.d.ts +1 -1
  85. package/declarations/components/hds/dropdown/footer.d.ts +1 -1
  86. package/declarations/components/hds/dropdown/header.d.ts +1 -1
  87. package/declarations/components/hds/dropdown/index.d.ts +1 -1
  88. package/declarations/components/hds/dropdown/list-item/checkbox.d.ts +1 -1
  89. package/declarations/components/hds/dropdown/list-item/checkmark.d.ts +1 -1
  90. package/declarations/components/hds/dropdown/list-item/copy-item.d.ts +1 -1
  91. package/declarations/components/hds/dropdown/list-item/description.d.ts +1 -1
  92. package/declarations/components/hds/dropdown/list-item/generic.d.ts +1 -1
  93. package/declarations/components/hds/dropdown/list-item/interactive.d.ts +1 -1
  94. package/declarations/components/hds/dropdown/list-item/radio.d.ts +1 -1
  95. package/declarations/components/hds/dropdown/list-item/separator.d.ts +1 -1
  96. package/declarations/components/hds/dropdown/list-item/title.d.ts +1 -1
  97. package/declarations/components/hds/dropdown/toggle/button.d.ts +1 -1
  98. package/declarations/components/hds/dropdown/toggle/chevron.d.ts +1 -1
  99. package/declarations/components/hds/dropdown/toggle/icon.d.ts +1 -1
  100. package/declarations/components/hds/filter-bar/actions-dropdown.d.ts +1 -1
  101. package/declarations/components/hds/filter-bar/applied-filters.d.ts +1 -1
  102. package/declarations/components/hds/filter-bar/filter-group/checkbox.d.ts +1 -1
  103. package/declarations/components/hds/filter-bar/filter-group/clear-button.d.ts +1 -1
  104. package/declarations/components/hds/filter-bar/filter-group/date.d.ts +1 -1
  105. package/declarations/components/hds/filter-bar/filter-group/generic.d.ts +1 -1
  106. package/declarations/components/hds/filter-bar/filter-group/index.d.ts +1 -1
  107. package/declarations/components/hds/filter-bar/filter-group/numerical.d.ts +1 -1
  108. package/declarations/components/hds/filter-bar/filter-group/radio.d.ts +1 -1
  109. package/declarations/components/hds/filter-bar/filters-dropdown.d.ts +1 -1
  110. package/declarations/components/hds/filter-bar/index.d.ts +1 -1
  111. package/declarations/components/hds/filter-bar/tabs/index.d.ts +1 -1
  112. package/declarations/components/hds/filter-bar/tabs/panel.d.ts +1 -1
  113. package/declarations/components/hds/filter-bar/tabs/tab.d.ts +1 -1
  114. package/declarations/components/hds/filter-bar/types.d.ts +1 -1
  115. package/declarations/components/hds/flyout/index.d.ts +1 -1
  116. package/declarations/components/hds/form/character-count/index.d.ts +1 -1
  117. package/declarations/components/hds/form/checkbox/base.d.ts +1 -1
  118. package/declarations/components/hds/form/checkbox/field.d.ts +1 -1
  119. package/declarations/components/hds/form/checkbox/group.d.ts +1 -1
  120. package/declarations/components/hds/form/error/index.d.ts +1 -1
  121. package/declarations/components/hds/form/error/message.d.ts +1 -1
  122. package/declarations/components/hds/form/field/index.d.ts +1 -1
  123. package/declarations/components/hds/form/fieldset/index.d.ts +1 -1
  124. package/declarations/components/hds/form/file-input/base.d.ts +1 -1
  125. package/declarations/components/hds/form/file-input/field.d.ts +1 -1
  126. package/declarations/components/hds/form/footer/index.d.ts +1 -1
  127. package/declarations/components/hds/form/header/description.d.ts +1 -1
  128. package/declarations/components/hds/form/header/index.d.ts +1 -1
  129. package/declarations/components/hds/form/header/title.d.ts +1 -1
  130. package/declarations/components/hds/form/helper-text/index.d.ts +1 -1
  131. package/declarations/components/hds/form/index.d.ts +1 -1
  132. package/declarations/components/hds/form/indicator/index.d.ts +1 -1
  133. package/declarations/components/hds/form/key-value-inputs/add-row-button.d.ts +1 -1
  134. package/declarations/components/hds/form/key-value-inputs/delete-row-button.d.ts +1 -1
  135. package/declarations/components/hds/form/key-value-inputs/field.d.ts +1 -1
  136. package/declarations/components/hds/form/key-value-inputs/generic.d.ts +1 -1
  137. package/declarations/components/hds/form/key-value-inputs/index.d.ts +1 -1
  138. package/declarations/components/hds/form/label/index.d.ts +1 -1
  139. package/declarations/components/hds/form/legend/index.d.ts +1 -1
  140. package/declarations/components/hds/form/masked-input/base.d.ts +1 -1
  141. package/declarations/components/hds/form/masked-input/field.d.ts +1 -1
  142. package/declarations/components/hds/form/radio/base.d.ts +1 -1
  143. package/declarations/components/hds/form/radio/field.d.ts +1 -1
  144. package/declarations/components/hds/form/radio/group.d.ts +1 -1
  145. package/declarations/components/hds/form/radio-card/description.d.ts +1 -1
  146. package/declarations/components/hds/form/radio-card/group.d.ts +1 -1
  147. package/declarations/components/hds/form/radio-card/index.d.ts +1 -1
  148. package/declarations/components/hds/form/radio-card/label.d.ts +1 -1
  149. package/declarations/components/hds/form/section/header.d.ts +1 -1
  150. package/declarations/components/hds/form/section/index.d.ts +1 -1
  151. package/declarations/components/hds/form/section/multi-field-group/index.d.ts +1 -1
  152. package/declarations/components/hds/form/section/multi-field-group/item.d.ts +1 -1
  153. package/declarations/components/hds/form/select/base.d.ts +1 -1
  154. package/declarations/components/hds/form/select/field.d.ts +1 -1
  155. package/declarations/components/hds/form/separator/index.d.ts +1 -1
  156. package/declarations/components/hds/form/super-select/after-options.d.ts +1 -1
  157. package/declarations/components/hds/form/super-select/multiple/base.d.ts +1 -1
  158. package/declarations/components/hds/form/super-select/multiple/field.d.ts +1 -1
  159. package/declarations/components/hds/form/super-select/option-group.d.ts +1 -1
  160. package/declarations/components/hds/form/super-select/placeholder.d.ts +1 -1
  161. package/declarations/components/hds/form/super-select/single/base.d.ts +1 -1
  162. package/declarations/components/hds/form/super-select/single/field.d.ts +1 -1
  163. package/declarations/components/hds/form/text-input/base.d.ts +1 -1
  164. package/declarations/components/hds/form/text-input/field.d.ts +1 -1
  165. package/declarations/components/hds/form/textarea/base.d.ts +1 -1
  166. package/declarations/components/hds/form/textarea/field.d.ts +1 -1
  167. package/declarations/components/hds/form/toggle/base.d.ts +1 -1
  168. package/declarations/components/hds/form/toggle/field.d.ts +1 -1
  169. package/declarations/components/hds/form/toggle/group.d.ts +1 -1
  170. package/declarations/components/hds/form/visibility-toggle/index.d.ts +1 -1
  171. package/declarations/components/hds/icon/index.d.ts +1 -1
  172. package/declarations/components/hds/icon-tile/index.d.ts +1 -1
  173. package/declarations/components/hds/interactive/index.d.ts +1 -1
  174. package/declarations/components/hds/layout/flex/index.d.ts +1 -1
  175. package/declarations/components/hds/layout/flex/item.d.ts +1 -1
  176. package/declarations/components/hds/layout/grid/index.d.ts +1 -1
  177. package/declarations/components/hds/layout/grid/item.d.ts +1 -1
  178. package/declarations/components/hds/link/inline.d.ts +1 -1
  179. package/declarations/components/hds/link/standalone.d.ts +1 -1
  180. package/declarations/components/hds/modal/index.d.ts +1 -1
  181. package/declarations/components/hds/page-header/actions.d.ts +1 -1
  182. package/declarations/components/hds/page-header/badges.d.ts +1 -1
  183. package/declarations/components/hds/page-header/description.d.ts +1 -1
  184. package/declarations/components/hds/page-header/index.d.ts +1 -1
  185. package/declarations/components/hds/page-header/subtitle.d.ts +1 -1
  186. package/declarations/components/hds/page-header/title.d.ts +1 -1
  187. package/declarations/components/hds/pagination/compact/index.d.ts +1 -1
  188. package/declarations/components/hds/pagination/info/index.d.ts +1 -1
  189. package/declarations/components/hds/pagination/nav/arrow.d.ts +1 -1
  190. package/declarations/components/hds/pagination/nav/ellipsis.d.ts +1 -1
  191. package/declarations/components/hds/pagination/nav/number.d.ts +1 -1
  192. package/declarations/components/hds/pagination/numbered/index.d.ts +1 -1
  193. package/declarations/components/hds/pagination/size-selector/index.d.ts +1 -1
  194. package/declarations/components/hds/pagination/types.d.ts +1 -1
  195. package/declarations/components/hds/popover-primitive/index.d.ts +1 -1
  196. package/declarations/components/hds/reveal/index.d.ts +1 -1
  197. package/declarations/components/hds/reveal/toggle/button.d.ts +1 -1
  198. package/declarations/components/hds/rich-tooltip/bubble.d.ts +1 -1
  199. package/declarations/components/hds/rich-tooltip/index.d.ts +1 -1
  200. package/declarations/components/hds/rich-tooltip/toggle.d.ts +1 -1
  201. package/declarations/components/hds/segmented-group/index.d.ts +1 -1
  202. package/declarations/components/hds/separator/index.d.ts +1 -1
  203. package/declarations/components/hds/stepper/list/index.d.ts +1 -1
  204. package/declarations/components/hds/stepper/list/step.d.ts +1 -1
  205. package/declarations/components/hds/stepper/nav/index.d.ts +1 -1
  206. package/declarations/components/hds/stepper/nav/panel.d.ts +1 -1
  207. package/declarations/components/hds/stepper/nav/step.d.ts +1 -1
  208. package/declarations/components/hds/stepper/step/indicator.d.ts +1 -1
  209. package/declarations/components/hds/stepper/task/indicator.d.ts +1 -1
  210. package/declarations/components/hds/stepper/types.d.ts +1 -1
  211. package/declarations/components/hds/table/index.d.ts +1 -1
  212. package/declarations/components/hds/table/td.d.ts +1 -1
  213. package/declarations/components/hds/table/th-button-sort.d.ts +1 -1
  214. package/declarations/components/hds/table/th-button-tooltip.d.ts +1 -1
  215. package/declarations/components/hds/table/th-selectable.d.ts +1 -1
  216. package/declarations/components/hds/table/th-sort.d.ts +1 -1
  217. package/declarations/components/hds/table/th.d.ts +1 -1
  218. package/declarations/components/hds/table/tr.d.ts +1 -1
  219. package/declarations/components/hds/table/types.d.ts +1 -1
  220. package/declarations/components/hds/tabs/index.d.ts +1 -1
  221. package/declarations/components/hds/tabs/panel.d.ts +1 -1
  222. package/declarations/components/hds/tabs/tab.d.ts +1 -1
  223. package/declarations/components/hds/tag/index.d.ts +1 -1
  224. package/declarations/components/hds/text/body.d.ts +1 -1
  225. package/declarations/components/hds/text/code.d.ts +1 -1
  226. package/declarations/components/hds/text/display.d.ts +1 -1
  227. package/declarations/components/hds/text/index.d.ts +1 -1
  228. package/declarations/components/hds/time/index.d.ts +1 -1
  229. package/declarations/components/hds/time/range.d.ts +1 -1
  230. package/declarations/components/hds/time/single.d.ts +1 -1
  231. package/declarations/components/hds/toast/index.d.ts +1 -1
  232. package/declarations/components/hds/tooltip-button/index.d.ts +1 -1
  233. package/declarations/components/hds/yield/index.d.ts +1 -1
  234. package/declarations/components.d.ts +1 -1
  235. package/declarations/helpers/hds-t.d.ts +1 -1
  236. package/declarations/modifiers/hds-advanced-table-cell/dom-management.d.ts +1 -1
  237. package/declarations/modifiers/hds-advanced-table-cell.d.ts +1 -1
  238. package/declarations/modifiers/hds-code-editor.d.ts +1 -1
  239. package/declarations/modifiers/hds-scroll-into-view-on-focus.d.ts +1 -1
  240. package/declarations/modifiers/hds-tooltip.d.ts +1 -1
  241. package/declarations/re-exports/codemirror.d.ts +4 -0
  242. package/declarations/services/hds-intl.d.ts +1 -1
  243. package/declarations/template-registry.d.ts +1 -1
  244. package/declarations/utils/hds-aria-described-by.d.ts +1 -1
  245. package/declarations/utils/hds-link-to-external.d.ts +4 -0
  246. package/dist/components/hds/accordion/index.js +1 -1
  247. package/dist/components/hds/accordion/index.js.map +1 -1
  248. package/dist/components/hds/accordion/item/button.js +1 -1
  249. package/dist/components/hds/accordion/item/button.js.map +1 -1
  250. package/dist/components/hds/accordion/item/index.js +1 -1
  251. package/dist/components/hds/accordion/item/index.js.map +1 -1
  252. package/dist/components/hds/advanced-table/body.js +4 -0
  253. package/dist/components/hds/advanced-table/body.js.map +1 -1
  254. package/dist/components/hds/advanced-table/column-manager/index.js +1 -1
  255. package/dist/components/hds/advanced-table/column-manager/index.js.map +1 -1
  256. package/dist/components/hds/advanced-table/column-manager/order.js +4 -0
  257. package/dist/components/hds/advanced-table/column-manager/order.js.map +1 -1
  258. package/dist/components/hds/advanced-table/column-manager/width.js +4 -0
  259. package/dist/components/hds/advanced-table/column-manager/width.js.map +1 -1
  260. package/dist/components/hds/advanced-table/index.js +1 -1
  261. package/dist/components/hds/advanced-table/td.js +1 -1
  262. package/dist/components/hds/advanced-table/td.js.map +1 -1
  263. package/dist/components/hds/advanced-table/th-button-expand.js +1 -1
  264. package/dist/components/hds/advanced-table/th-button-expand.js.map +1 -1
  265. package/dist/components/hds/advanced-table/th-button-sort.js +1 -1
  266. package/dist/components/hds/advanced-table/th-button-sort.js.map +1 -1
  267. package/dist/components/hds/advanced-table/th-button-tooltip.js +1 -1
  268. package/dist/components/hds/advanced-table/th-button-tooltip.js.map +1 -1
  269. package/dist/components/hds/advanced-table/th-context-menu.js +1 -1
  270. package/dist/components/hds/advanced-table/th-context-menu.js.map +1 -1
  271. package/dist/components/hds/advanced-table/th-reorder-drop-target.js +1 -1
  272. package/dist/components/hds/advanced-table/th-reorder-handle.js +1 -1
  273. package/dist/components/hds/advanced-table/th-reorder-handle.js.map +1 -1
  274. package/dist/components/hds/advanced-table/th-resize-handle.js +1 -1
  275. package/dist/components/hds/advanced-table/th-selectable.js +1 -1
  276. package/dist/components/hds/advanced-table/th.js +1 -1
  277. package/dist/components/hds/advanced-table/tr.js +1 -1
  278. package/dist/components/hds/advanced-table/types.js +1 -1
  279. package/dist/components/hds/advanced-table/types.js.map +1 -1
  280. package/dist/components/hds/advanced-table/utils.js +1 -1
  281. package/dist/components/hds/advanced-table/utils.js.map +1 -1
  282. package/dist/components/hds/alert/description.js +1 -1
  283. package/dist/components/hds/alert/description.js.map +1 -1
  284. package/dist/components/hds/alert/index.js +1 -1
  285. package/dist/components/hds/alert/index.js.map +1 -1
  286. package/dist/components/hds/alert/title.js +1 -1
  287. package/dist/components/hds/alert/title.js.map +1 -1
  288. package/dist/components/hds/app-footer/copyright.js +1 -1
  289. package/dist/components/hds/app-footer/copyright.js.map +1 -1
  290. package/dist/components/hds/app-footer/index.js +1 -1
  291. package/dist/components/hds/app-footer/index.js.map +1 -1
  292. package/dist/components/hds/app-footer/item.js +1 -1
  293. package/dist/components/hds/app-footer/item.js.map +1 -1
  294. package/dist/components/hds/app-footer/legal-links.js +1 -1
  295. package/dist/components/hds/app-footer/legal-links.js.map +1 -1
  296. package/dist/components/hds/app-footer/link.js +1 -1
  297. package/dist/components/hds/app-footer/link.js.map +1 -1
  298. package/dist/components/hds/app-footer/status-link.js +9 -6
  299. package/dist/components/hds/app-footer/status-link.js.map +1 -1
  300. package/dist/components/hds/app-footer/types.js +1 -1
  301. package/dist/components/hds/app-footer/types.js.map +1 -1
  302. package/dist/components/hds/app-frame/index.js +1 -1
  303. package/dist/components/hds/app-frame/index.js.map +1 -1
  304. package/dist/components/hds/app-frame/parts/footer.js +1 -1
  305. package/dist/components/hds/app-frame/parts/footer.js.map +1 -1
  306. package/dist/components/hds/app-frame/parts/header.js +1 -1
  307. package/dist/components/hds/app-frame/parts/header.js.map +1 -1
  308. package/dist/components/hds/app-frame/parts/main.js +1 -1
  309. package/dist/components/hds/app-frame/parts/main.js.map +1 -1
  310. package/dist/components/hds/app-frame/parts/modals.js +1 -1
  311. package/dist/components/hds/app-frame/parts/modals.js.map +1 -1
  312. package/dist/components/hds/app-frame/parts/sidebar.js +1 -1
  313. package/dist/components/hds/app-frame/parts/sidebar.js.map +1 -1
  314. package/dist/components/hds/app-header/home-link.js +1 -1
  315. package/dist/components/hds/app-header/home-link.js.map +1 -1
  316. package/dist/components/hds/app-header/index.js +1 -1
  317. package/dist/components/hds/app-header/index.js.map +1 -1
  318. package/dist/components/hds/app-header/menu-button.js +1 -1
  319. package/dist/components/hds/app-header/menu-button.js.map +1 -1
  320. package/dist/components/hds/app-side-nav/index.js +1 -1
  321. package/dist/components/hds/app-side-nav/index.js.map +1 -1
  322. package/dist/components/hds/app-side-nav/list/back-link.js +1 -1
  323. package/dist/components/hds/app-side-nav/list/back-link.js.map +1 -1
  324. package/dist/components/hds/app-side-nav/list/index.js +1 -1
  325. package/dist/components/hds/app-side-nav/list/index.js.map +1 -1
  326. package/dist/components/hds/app-side-nav/list/item.js +1 -1
  327. package/dist/components/hds/app-side-nav/list/item.js.map +1 -1
  328. package/dist/components/hds/app-side-nav/list/link.js +1 -1
  329. package/dist/components/hds/app-side-nav/list/link.js.map +1 -1
  330. package/dist/components/hds/app-side-nav/list/title.js +1 -1
  331. package/dist/components/hds/app-side-nav/list/title.js.map +1 -1
  332. package/dist/components/hds/app-side-nav/portal/index.js +1 -1
  333. package/dist/components/hds/app-side-nav/portal/index.js.map +1 -1
  334. package/dist/components/hds/app-side-nav/portal/target.js +1 -1
  335. package/dist/components/hds/app-side-nav/portal/target.js.map +1 -1
  336. package/dist/components/hds/app-side-nav/toggle-button.js +1 -1
  337. package/dist/components/hds/app-side-nav/toggle-button.js.map +1 -1
  338. package/dist/components/hds/application-state/body.js +1 -1
  339. package/dist/components/hds/application-state/body.js.map +1 -1
  340. package/dist/components/hds/application-state/footer.js +1 -1
  341. package/dist/components/hds/application-state/footer.js.map +1 -1
  342. package/dist/components/hds/application-state/header.js +1 -1
  343. package/dist/components/hds/application-state/header.js.map +1 -1
  344. package/dist/components/hds/application-state/index.js +1 -1
  345. package/dist/components/hds/application-state/index.js.map +1 -1
  346. package/dist/components/hds/application-state/media.js +1 -1
  347. package/dist/components/hds/application-state/media.js.map +1 -1
  348. package/dist/components/hds/badge/index.js +1 -1
  349. package/dist/components/hds/badge/index.js.map +1 -1
  350. package/dist/components/hds/badge-count/index.js +1 -1
  351. package/dist/components/hds/badge-count/index.js.map +1 -1
  352. package/dist/components/hds/breadcrumb/index.js +1 -1
  353. package/dist/components/hds/breadcrumb/index.js.map +1 -1
  354. package/dist/components/hds/breadcrumb/item.js +8 -5
  355. package/dist/components/hds/breadcrumb/item.js.map +1 -1
  356. package/dist/components/hds/breadcrumb/truncation.js +1 -1
  357. package/dist/components/hds/breadcrumb/truncation.js.map +1 -1
  358. package/dist/components/hds/button/index.js +1 -1
  359. package/dist/components/hds/button/index.js.map +1 -1
  360. package/dist/components/hds/button-set/index.js +1 -1
  361. package/dist/components/hds/button-set/index.js.map +1 -1
  362. package/dist/components/hds/card/container.js +1 -1
  363. package/dist/components/hds/card/container.js.map +1 -1
  364. package/dist/components/hds/code-block/copy-button.js +1 -1
  365. package/dist/components/hds/code-block/copy-button.js.map +1 -1
  366. package/dist/components/hds/code-block/description.js +1 -1
  367. package/dist/components/hds/code-block/description.js.map +1 -1
  368. package/dist/components/hds/code-block/index.js +4 -2
  369. package/dist/components/hds/code-block/index.js.map +1 -1
  370. package/dist/components/hds/code-block/title.js +1 -1
  371. package/dist/components/hds/code-block/title.js.map +1 -1
  372. package/dist/components/hds/code-editor/description.js +1 -1
  373. package/dist/components/hds/code-editor/description.js.map +1 -1
  374. package/dist/components/hds/code-editor/full-screen-button.js +1 -1
  375. package/dist/components/hds/code-editor/full-screen-button.js.map +1 -1
  376. package/dist/components/hds/code-editor/generic.js +1 -1
  377. package/dist/components/hds/code-editor/generic.js.map +1 -1
  378. package/dist/components/hds/code-editor/index.js +1 -1
  379. package/dist/components/hds/code-editor/index.js.map +1 -1
  380. package/dist/components/hds/code-editor/title.js +1 -1
  381. package/dist/components/hds/code-editor/title.js.map +1 -1
  382. package/dist/components/hds/composite/index.js +4 -0
  383. package/dist/components/hds/composite/index.js.map +1 -1
  384. package/dist/components/hds/composite/navigation.js +5 -0
  385. package/dist/components/hds/composite/navigation.js.map +1 -1
  386. package/dist/components/hds/copy/button/index.js +6 -2
  387. package/dist/components/hds/copy/button/index.js.map +1 -1
  388. package/dist/components/hds/copy/snippet/index.js +20 -2
  389. package/dist/components/hds/copy/snippet/index.js.map +1 -1
  390. package/dist/components/hds/dialog-primitive/body.js +1 -1
  391. package/dist/components/hds/dialog-primitive/body.js.map +1 -1
  392. package/dist/components/hds/dialog-primitive/description.js +1 -1
  393. package/dist/components/hds/dialog-primitive/description.js.map +1 -1
  394. package/dist/components/hds/dialog-primitive/footer.js +1 -1
  395. package/dist/components/hds/dialog-primitive/footer.js.map +1 -1
  396. package/dist/components/hds/dialog-primitive/header.js +1 -1
  397. package/dist/components/hds/dialog-primitive/header.js.map +1 -1
  398. package/dist/components/hds/dialog-primitive/overlay.js +1 -1
  399. package/dist/components/hds/dialog-primitive/overlay.js.map +1 -1
  400. package/dist/components/hds/dialog-primitive/wrapper.js +1 -1
  401. package/dist/components/hds/dialog-primitive/wrapper.js.map +1 -1
  402. package/dist/components/hds/disclosure-primitive/index.js +1 -1
  403. package/dist/components/hds/disclosure-primitive/index.js.map +1 -1
  404. package/dist/components/hds/dismiss-button/index.js +1 -1
  405. package/dist/components/hds/dismiss-button/index.js.map +1 -1
  406. package/dist/components/hds/dropdown/footer.js +1 -1
  407. package/dist/components/hds/dropdown/footer.js.map +1 -1
  408. package/dist/components/hds/dropdown/header.js +1 -1
  409. package/dist/components/hds/dropdown/header.js.map +1 -1
  410. package/dist/components/hds/dropdown/index.js +1 -1
  411. package/dist/components/hds/dropdown/index.js.map +1 -1
  412. package/dist/components/hds/dropdown/list-item/checkbox.js +1 -1
  413. package/dist/components/hds/dropdown/list-item/checkbox.js.map +1 -1
  414. package/dist/components/hds/dropdown/list-item/checkmark.js +1 -1
  415. package/dist/components/hds/dropdown/list-item/checkmark.js.map +1 -1
  416. package/dist/components/hds/dropdown/list-item/copy-item.js +1 -1
  417. package/dist/components/hds/dropdown/list-item/copy-item.js.map +1 -1
  418. package/dist/components/hds/dropdown/list-item/description.js +1 -1
  419. package/dist/components/hds/dropdown/list-item/description.js.map +1 -1
  420. package/dist/components/hds/dropdown/list-item/generic.js +1 -1
  421. package/dist/components/hds/dropdown/list-item/generic.js.map +1 -1
  422. package/dist/components/hds/dropdown/list-item/interactive.js +1 -1
  423. package/dist/components/hds/dropdown/list-item/interactive.js.map +1 -1
  424. package/dist/components/hds/dropdown/list-item/radio.js +1 -1
  425. package/dist/components/hds/dropdown/list-item/radio.js.map +1 -1
  426. package/dist/components/hds/dropdown/list-item/separator.js +1 -1
  427. package/dist/components/hds/dropdown/list-item/separator.js.map +1 -1
  428. package/dist/components/hds/dropdown/list-item/title.js +1 -1
  429. package/dist/components/hds/dropdown/list-item/title.js.map +1 -1
  430. package/dist/components/hds/dropdown/toggle/button.js +1 -1
  431. package/dist/components/hds/dropdown/toggle/button.js.map +1 -1
  432. package/dist/components/hds/dropdown/toggle/chevron.js +1 -1
  433. package/dist/components/hds/dropdown/toggle/chevron.js.map +1 -1
  434. package/dist/components/hds/dropdown/toggle/icon.js +1 -1
  435. package/dist/components/hds/dropdown/toggle/icon.js.map +1 -1
  436. package/dist/components/hds/filter-bar/actions-dropdown.js +1 -1
  437. package/dist/components/hds/filter-bar/actions-dropdown.js.map +1 -1
  438. package/dist/components/hds/filter-bar/applied-filters.js +1 -1
  439. package/dist/components/hds/filter-bar/applied-filters.js.map +1 -1
  440. package/dist/components/hds/filter-bar/filter-group/checkbox.js +1 -1
  441. package/dist/components/hds/filter-bar/filter-group/checkbox.js.map +1 -1
  442. package/dist/components/hds/filter-bar/filter-group/clear-button.js +1 -1
  443. package/dist/components/hds/filter-bar/filter-group/clear-button.js.map +1 -1
  444. package/dist/components/hds/filter-bar/filter-group/date.js +1 -1
  445. package/dist/components/hds/filter-bar/filter-group/date.js.map +1 -1
  446. package/dist/components/hds/filter-bar/filter-group/generic.js +1 -1
  447. package/dist/components/hds/filter-bar/filter-group/generic.js.map +1 -1
  448. package/dist/components/hds/filter-bar/filter-group/index.js +1 -1
  449. package/dist/components/hds/filter-bar/filter-group/index.js.map +1 -1
  450. package/dist/components/hds/filter-bar/filter-group/numerical.js +1 -1
  451. package/dist/components/hds/filter-bar/filter-group/numerical.js.map +1 -1
  452. package/dist/components/hds/filter-bar/filter-group/radio.js +1 -1
  453. package/dist/components/hds/filter-bar/filter-group/radio.js.map +1 -1
  454. package/dist/components/hds/filter-bar/filters-dropdown.js +1 -1
  455. package/dist/components/hds/filter-bar/filters-dropdown.js.map +1 -1
  456. package/dist/components/hds/filter-bar/index.js +1 -1
  457. package/dist/components/hds/filter-bar/index.js.map +1 -1
  458. package/dist/components/hds/filter-bar/tabs/index.js +1 -1
  459. package/dist/components/hds/filter-bar/tabs/index.js.map +1 -1
  460. package/dist/components/hds/filter-bar/tabs/panel.js +1 -1
  461. package/dist/components/hds/filter-bar/tabs/panel.js.map +1 -1
  462. package/dist/components/hds/filter-bar/tabs/tab.js +1 -1
  463. package/dist/components/hds/filter-bar/tabs/tab.js.map +1 -1
  464. package/dist/components/hds/filter-bar/types.js +1 -1
  465. package/dist/components/hds/filter-bar/types.js.map +1 -1
  466. package/dist/components/hds/flyout/index.js +1 -1
  467. package/dist/components/hds/flyout/index.js.map +1 -1
  468. package/dist/components/hds/form/character-count/index.js +1 -1
  469. package/dist/components/hds/form/character-count/index.js.map +1 -1
  470. package/dist/components/hds/form/checkbox/base.js +1 -1
  471. package/dist/components/hds/form/checkbox/base.js.map +1 -1
  472. package/dist/components/hds/form/checkbox/field.js +1 -1
  473. package/dist/components/hds/form/checkbox/field.js.map +1 -1
  474. package/dist/components/hds/form/checkbox/group.js +1 -1
  475. package/dist/components/hds/form/checkbox/group.js.map +1 -1
  476. package/dist/components/hds/form/error/index.js +1 -1
  477. package/dist/components/hds/form/error/index.js.map +1 -1
  478. package/dist/components/hds/form/error/message.js +1 -1
  479. package/dist/components/hds/form/error/message.js.map +1 -1
  480. package/dist/components/hds/form/field/index.js +1 -1
  481. package/dist/components/hds/form/field/index.js.map +1 -1
  482. package/dist/components/hds/form/fieldset/index.js +1 -1
  483. package/dist/components/hds/form/fieldset/index.js.map +1 -1
  484. package/dist/components/hds/form/file-input/base.js +1 -1
  485. package/dist/components/hds/form/file-input/base.js.map +1 -1
  486. package/dist/components/hds/form/file-input/field.js +1 -1
  487. package/dist/components/hds/form/file-input/field.js.map +1 -1
  488. package/dist/components/hds/form/footer/index.js +1 -1
  489. package/dist/components/hds/form/footer/index.js.map +1 -1
  490. package/dist/components/hds/form/header/description.js +1 -1
  491. package/dist/components/hds/form/header/description.js.map +1 -1
  492. package/dist/components/hds/form/header/index.js +1 -1
  493. package/dist/components/hds/form/header/index.js.map +1 -1
  494. package/dist/components/hds/form/header/title.js +1 -1
  495. package/dist/components/hds/form/header/title.js.map +1 -1
  496. package/dist/components/hds/form/helper-text/index.js +1 -1
  497. package/dist/components/hds/form/helper-text/index.js.map +1 -1
  498. package/dist/components/hds/form/index.js +1 -1
  499. package/dist/components/hds/form/index.js.map +1 -1
  500. package/dist/components/hds/form/indicator/index.js +1 -1
  501. package/dist/components/hds/form/indicator/index.js.map +1 -1
  502. package/dist/components/hds/form/key-value-inputs/add-row-button.js +1 -1
  503. package/dist/components/hds/form/key-value-inputs/add-row-button.js.map +1 -1
  504. package/dist/components/hds/form/key-value-inputs/delete-row-button.js +1 -1
  505. package/dist/components/hds/form/key-value-inputs/delete-row-button.js.map +1 -1
  506. package/dist/components/hds/form/key-value-inputs/field.js +1 -1
  507. package/dist/components/hds/form/key-value-inputs/field.js.map +1 -1
  508. package/dist/components/hds/form/key-value-inputs/generic.js +1 -1
  509. package/dist/components/hds/form/key-value-inputs/generic.js.map +1 -1
  510. package/dist/components/hds/form/key-value-inputs/index.js +1 -1
  511. package/dist/components/hds/form/key-value-inputs/index.js.map +1 -1
  512. package/dist/components/hds/form/label/index.js +1 -1
  513. package/dist/components/hds/form/label/index.js.map +1 -1
  514. package/dist/components/hds/form/legend/index.js +1 -1
  515. package/dist/components/hds/form/legend/index.js.map +1 -1
  516. package/dist/components/hds/form/masked-input/base.js +1 -1
  517. package/dist/components/hds/form/masked-input/base.js.map +1 -1
  518. package/dist/components/hds/form/masked-input/field.js +1 -1
  519. package/dist/components/hds/form/masked-input/field.js.map +1 -1
  520. package/dist/components/hds/form/radio/base.js +1 -1
  521. package/dist/components/hds/form/radio/base.js.map +1 -1
  522. package/dist/components/hds/form/radio/field.js +1 -1
  523. package/dist/components/hds/form/radio/field.js.map +1 -1
  524. package/dist/components/hds/form/radio/group.js +1 -1
  525. package/dist/components/hds/form/radio/group.js.map +1 -1
  526. package/dist/components/hds/form/radio-card/description.js +1 -1
  527. package/dist/components/hds/form/radio-card/description.js.map +1 -1
  528. package/dist/components/hds/form/radio-card/group.js +1 -1
  529. package/dist/components/hds/form/radio-card/group.js.map +1 -1
  530. package/dist/components/hds/form/radio-card/index.js +1 -1
  531. package/dist/components/hds/form/radio-card/index.js.map +1 -1
  532. package/dist/components/hds/form/radio-card/label.js +1 -1
  533. package/dist/components/hds/form/radio-card/label.js.map +1 -1
  534. package/dist/components/hds/form/section/header.js +1 -1
  535. package/dist/components/hds/form/section/header.js.map +1 -1
  536. package/dist/components/hds/form/section/index.js +1 -1
  537. package/dist/components/hds/form/section/index.js.map +1 -1
  538. package/dist/components/hds/form/section/multi-field-group/index.js +1 -1
  539. package/dist/components/hds/form/section/multi-field-group/index.js.map +1 -1
  540. package/dist/components/hds/form/section/multi-field-group/item.js +1 -1
  541. package/dist/components/hds/form/section/multi-field-group/item.js.map +1 -1
  542. package/dist/components/hds/form/select/base.js +1 -1
  543. package/dist/components/hds/form/select/base.js.map +1 -1
  544. package/dist/components/hds/form/select/field.js +1 -1
  545. package/dist/components/hds/form/select/field.js.map +1 -1
  546. package/dist/components/hds/form/separator/index.js +1 -1
  547. package/dist/components/hds/form/separator/index.js.map +1 -1
  548. package/dist/components/hds/form/super-select/after-options.js +1 -1
  549. package/dist/components/hds/form/super-select/after-options.js.map +1 -1
  550. package/dist/components/hds/form/super-select/multiple/base.js +1 -1
  551. package/dist/components/hds/form/super-select/multiple/base.js.map +1 -1
  552. package/dist/components/hds/form/super-select/multiple/field.js +1 -1
  553. package/dist/components/hds/form/super-select/multiple/field.js.map +1 -1
  554. package/dist/components/hds/form/super-select/option-group.js +1 -1
  555. package/dist/components/hds/form/super-select/option-group.js.map +1 -1
  556. package/dist/components/hds/form/super-select/placeholder.js +1 -1
  557. package/dist/components/hds/form/super-select/placeholder.js.map +1 -1
  558. package/dist/components/hds/form/super-select/single/base.js +1 -1
  559. package/dist/components/hds/form/super-select/single/base.js.map +1 -1
  560. package/dist/components/hds/form/super-select/single/field.js +1 -1
  561. package/dist/components/hds/form/super-select/single/field.js.map +1 -1
  562. package/dist/components/hds/form/text-input/base.js +1 -1
  563. package/dist/components/hds/form/text-input/base.js.map +1 -1
  564. package/dist/components/hds/form/text-input/field.js +1 -1
  565. package/dist/components/hds/form/text-input/field.js.map +1 -1
  566. package/dist/components/hds/form/textarea/base.js +1 -1
  567. package/dist/components/hds/form/textarea/base.js.map +1 -1
  568. package/dist/components/hds/form/textarea/field.js +1 -1
  569. package/dist/components/hds/form/textarea/field.js.map +1 -1
  570. package/dist/components/hds/form/toggle/base.js +1 -1
  571. package/dist/components/hds/form/toggle/base.js.map +1 -1
  572. package/dist/components/hds/form/toggle/field.js +1 -1
  573. package/dist/components/hds/form/toggle/field.js.map +1 -1
  574. package/dist/components/hds/form/toggle/group.js +1 -1
  575. package/dist/components/hds/form/toggle/group.js.map +1 -1
  576. package/dist/components/hds/form/visibility-toggle/index.js +1 -1
  577. package/dist/components/hds/form/visibility-toggle/index.js.map +1 -1
  578. package/dist/components/hds/icon/index.js +1 -1
  579. package/dist/components/hds/icon/index.js.map +1 -1
  580. package/dist/components/hds/icon-tile/index.js +1 -1
  581. package/dist/components/hds/icon-tile/index.js.map +1 -1
  582. package/dist/components/hds/interactive/index.js +1 -1
  583. package/dist/components/hds/interactive/index.js.map +1 -1
  584. package/dist/components/hds/layout/flex/index.js +1 -1
  585. package/dist/components/hds/layout/flex/index.js.map +1 -1
  586. package/dist/components/hds/layout/flex/item.js +1 -1
  587. package/dist/components/hds/layout/flex/item.js.map +1 -1
  588. package/dist/components/hds/layout/grid/index.js +1 -1
  589. package/dist/components/hds/layout/grid/index.js.map +1 -1
  590. package/dist/components/hds/layout/grid/item.js +1 -1
  591. package/dist/components/hds/layout/grid/item.js.map +1 -1
  592. package/dist/components/hds/link/inline.js +1 -1
  593. package/dist/components/hds/link/inline.js.map +1 -1
  594. package/dist/components/hds/link/standalone.js +1 -1
  595. package/dist/components/hds/link/standalone.js.map +1 -1
  596. package/dist/components/hds/modal/index.js +1 -1
  597. package/dist/components/hds/modal/index.js.map +1 -1
  598. package/dist/components/hds/page-header/actions.js +1 -1
  599. package/dist/components/hds/page-header/actions.js.map +1 -1
  600. package/dist/components/hds/page-header/badges.js +1 -1
  601. package/dist/components/hds/page-header/badges.js.map +1 -1
  602. package/dist/components/hds/page-header/description.js +1 -1
  603. package/dist/components/hds/page-header/description.js.map +1 -1
  604. package/dist/components/hds/page-header/index.js +1 -1
  605. package/dist/components/hds/page-header/index.js.map +1 -1
  606. package/dist/components/hds/page-header/subtitle.js +1 -1
  607. package/dist/components/hds/page-header/subtitle.js.map +1 -1
  608. package/dist/components/hds/page-header/title.js +1 -1
  609. package/dist/components/hds/page-header/title.js.map +1 -1
  610. package/dist/components/hds/pagination/compact/index.js +1 -1
  611. package/dist/components/hds/pagination/compact/index.js.map +1 -1
  612. package/dist/components/hds/pagination/info/index.js +1 -1
  613. package/dist/components/hds/pagination/info/index.js.map +1 -1
  614. package/dist/components/hds/pagination/nav/arrow.js +1 -1
  615. package/dist/components/hds/pagination/nav/arrow.js.map +1 -1
  616. package/dist/components/hds/pagination/nav/ellipsis.js +1 -1
  617. package/dist/components/hds/pagination/nav/ellipsis.js.map +1 -1
  618. package/dist/components/hds/pagination/nav/number.js +1 -1
  619. package/dist/components/hds/pagination/nav/number.js.map +1 -1
  620. package/dist/components/hds/pagination/numbered/index.js +1 -1
  621. package/dist/components/hds/pagination/numbered/index.js.map +1 -1
  622. package/dist/components/hds/pagination/size-selector/index.js +1 -1
  623. package/dist/components/hds/pagination/size-selector/index.js.map +1 -1
  624. package/dist/components/hds/pagination/types.js +1 -1
  625. package/dist/components/hds/pagination/types.js.map +1 -1
  626. package/dist/components/hds/popover-primitive/index.js +1 -1
  627. package/dist/components/hds/popover-primitive/index.js.map +1 -1
  628. package/dist/components/hds/reveal/index.js +1 -1
  629. package/dist/components/hds/reveal/index.js.map +1 -1
  630. package/dist/components/hds/reveal/toggle/button.js +1 -1
  631. package/dist/components/hds/reveal/toggle/button.js.map +1 -1
  632. package/dist/components/hds/rich-tooltip/bubble.js +1 -1
  633. package/dist/components/hds/rich-tooltip/bubble.js.map +1 -1
  634. package/dist/components/hds/rich-tooltip/index.js +1 -1
  635. package/dist/components/hds/rich-tooltip/index.js.map +1 -1
  636. package/dist/components/hds/rich-tooltip/toggle.js +1 -1
  637. package/dist/components/hds/rich-tooltip/toggle.js.map +1 -1
  638. package/dist/components/hds/segmented-group/index.js +1 -1
  639. package/dist/components/hds/segmented-group/index.js.map +1 -1
  640. package/dist/components/hds/separator/index.js +1 -1
  641. package/dist/components/hds/separator/index.js.map +1 -1
  642. package/dist/components/hds/stepper/list/index.js +1 -1
  643. package/dist/components/hds/stepper/list/index.js.map +1 -1
  644. package/dist/components/hds/stepper/list/step.js +1 -1
  645. package/dist/components/hds/stepper/list/step.js.map +1 -1
  646. package/dist/components/hds/stepper/nav/index.js +1 -1
  647. package/dist/components/hds/stepper/nav/index.js.map +1 -1
  648. package/dist/components/hds/stepper/nav/panel.js +1 -1
  649. package/dist/components/hds/stepper/nav/panel.js.map +1 -1
  650. package/dist/components/hds/stepper/nav/step.js +1 -7
  651. package/dist/components/hds/stepper/nav/step.js.map +1 -1
  652. package/dist/components/hds/stepper/step/indicator.js +1 -1
  653. package/dist/components/hds/stepper/step/indicator.js.map +1 -1
  654. package/dist/components/hds/stepper/task/indicator.js +1 -1
  655. package/dist/components/hds/stepper/task/indicator.js.map +1 -1
  656. package/dist/components/hds/stepper/types.js +1 -1
  657. package/dist/components/hds/stepper/types.js.map +1 -1
  658. package/dist/components/hds/table/index.js +1 -1
  659. package/dist/components/hds/table/index.js.map +1 -1
  660. package/dist/components/hds/table/td.js +1 -1
  661. package/dist/components/hds/table/td.js.map +1 -1
  662. package/dist/components/hds/table/th-button-sort.js +1 -1
  663. package/dist/components/hds/table/th-button-sort.js.map +1 -1
  664. package/dist/components/hds/table/th-button-tooltip.js +1 -1
  665. package/dist/components/hds/table/th-button-tooltip.js.map +1 -1
  666. package/dist/components/hds/table/th-selectable.js +1 -1
  667. package/dist/components/hds/table/th-selectable.js.map +1 -1
  668. package/dist/components/hds/table/th-sort.js +1 -1
  669. package/dist/components/hds/table/th-sort.js.map +1 -1
  670. package/dist/components/hds/table/th.js +1 -1
  671. package/dist/components/hds/table/th.js.map +1 -1
  672. package/dist/components/hds/table/tr.js +1 -1
  673. package/dist/components/hds/table/tr.js.map +1 -1
  674. package/dist/components/hds/table/types.js +1 -1
  675. package/dist/components/hds/table/types.js.map +1 -1
  676. package/dist/components/hds/tabs/index.js +1 -1
  677. package/dist/components/hds/tabs/index.js.map +1 -1
  678. package/dist/components/hds/tabs/panel.js +1 -1
  679. package/dist/components/hds/tabs/panel.js.map +1 -1
  680. package/dist/components/hds/tabs/tab.js +1 -1
  681. package/dist/components/hds/tabs/tab.js.map +1 -1
  682. package/dist/components/hds/tag/index.js +1 -1
  683. package/dist/components/hds/tag/index.js.map +1 -1
  684. package/dist/components/hds/text/body.js +1 -1
  685. package/dist/components/hds/text/body.js.map +1 -1
  686. package/dist/components/hds/text/code.js +1 -1
  687. package/dist/components/hds/text/code.js.map +1 -1
  688. package/dist/components/hds/text/display.js +1 -1
  689. package/dist/components/hds/text/display.js.map +1 -1
  690. package/dist/components/hds/text/index.js +1 -1
  691. package/dist/components/hds/text/index.js.map +1 -1
  692. package/dist/components/hds/time/index.js +1 -1
  693. package/dist/components/hds/time/index.js.map +1 -1
  694. package/dist/components/hds/time/range.js +1 -1
  695. package/dist/components/hds/time/range.js.map +1 -1
  696. package/dist/components/hds/time/single.js +1 -1
  697. package/dist/components/hds/time/single.js.map +1 -1
  698. package/dist/components/hds/toast/index.js +1 -1
  699. package/dist/components/hds/toast/index.js.map +1 -1
  700. package/dist/components/hds/tooltip-button/index.js +1 -1
  701. package/dist/components/hds/tooltip-button/index.js.map +1 -1
  702. package/dist/components/hds/yield/index.js +1 -1
  703. package/dist/components/hds/yield/index.js.map +1 -1
  704. package/dist/components.js +1 -1
  705. package/dist/helpers/hds-t.js +1 -1
  706. package/dist/helpers/hds-t.js.map +1 -1
  707. package/dist/{index-B9OqWZ9U.js → index-DtMB-P9m.js} +7 -7
  708. package/dist/{index-B9OqWZ9U.js.map → index-DtMB-P9m.js.map} +1 -1
  709. package/dist/modifiers/hds-advanced-table-cell/dom-management.js +1 -1
  710. package/dist/modifiers/hds-advanced-table-cell/dom-management.js.map +1 -1
  711. package/dist/modifiers/hds-advanced-table-cell.js +1 -1
  712. package/dist/modifiers/hds-advanced-table-cell.js.map +1 -1
  713. package/dist/modifiers/hds-clipboard.js +6 -2
  714. package/dist/modifiers/hds-clipboard.js.map +1 -1
  715. package/dist/modifiers/hds-code-editor.js.map +1 -1
  716. package/dist/modifiers/hds-scroll-into-view-on-focus.js +1 -1
  717. package/dist/modifiers/hds-scroll-into-view-on-focus.js.map +1 -1
  718. package/dist/modifiers/hds-tooltip.js +1 -1
  719. package/dist/modifiers/hds-tooltip.js.map +1 -1
  720. package/dist/services/hds-intl.js +1 -1
  721. package/dist/services/hds-intl.js.map +1 -1
  722. package/dist/styles/@hashicorp/design-system-components-common.scss +1 -1
  723. package/dist/styles/@hashicorp/design-system-components.css +159 -153
  724. package/dist/styles/@hashicorp/design-system-components.css.map +1 -1
  725. package/dist/styles/@hashicorp/design-system-components.scss +1 -1
  726. package/dist/styles/@hashicorp/design-system-ember-a11y-refocus.scss +5 -0
  727. package/dist/styles/components/advanced-table.scss +1 -1
  728. package/dist/styles/components/app-header.scss +1 -1
  729. package/dist/styles/components/app-side-nav/content.scss +1 -1
  730. package/dist/styles/components/app-side-nav/vars.scss +1 -1
  731. package/dist/styles/components/breadcrumb.scss +1 -1
  732. package/dist/styles/components/code-block/index.scss +1 -1
  733. package/dist/styles/components/code-editor/index.scss +1 -1
  734. package/dist/styles/components/dropdown.scss +4 -0
  735. package/dist/styles/components/filter-bar.scss +1 -1
  736. package/dist/styles/components/flyout.scss +1 -1
  737. package/dist/styles/components/index.scss +1 -1
  738. package/dist/styles/components/layout/grid.scss +1 -1
  739. package/dist/styles/components/stepper/nav.scss +66 -67
  740. package/dist/styles/mixins/_interactive-dark-theme.scss +1 -1
  741. package/dist/utils/hds-aria-described-by.js +1 -1
  742. package/dist/utils/hds-aria-described-by.js.map +1 -1
  743. package/dist/utils/hds-link-to-external.js +5 -0
  744. package/dist/utils/hds-link-to-external.js.map +1 -1
  745. package/package.json +2 -2
  746. package/translations/hds/components/code-block/en-us.yaml +3 -0
  747. package/translations/hds/components/copy-button/en-us.yaml +3 -1
  748. package/translations/hds/components/copy-snippet/en-us.yaml +3 -0
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/components/hds/code-editor/index.gts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2021, 2025\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { guidFor } from '@ember/object/internals';\nimport { hash } from '@ember/helper';\nimport { modifier } from 'ember-modifier';\nimport { or } from 'ember-truth-helpers';\nimport { tracked } from '@glimmer/tracking';\n// @ts-expect-error: missing types https://github.com/josemarluedke/ember-focus-trap/issues/86\nimport focusTrap from 'ember-focus-trap/modifiers/focus-trap';\n\nimport type { EditorView } from '@codemirror/view';\nimport type { WithBoundArgs } from '@glint/template';\nimport type Owner from '@ember/owner';\n\nimport hdsCodeEditorModifier from '../../../modifiers/hds-code-editor.ts';\nimport HdsCodeEditorDescription from './description.gts';\nimport HdsCodeEditorFullScreenButton from './full-screen-button.gts';\nimport HdsCodeEditorGeneric from './generic.gts';\nimport HdsCodeEditorTitle from './title.gts';\nimport HdsCopyButton from '../copy/button/index.gts';\nimport HdsIcon from '../icon/index.gts';\nimport hdsT from '../../../helpers/hds-t.ts';\n\nimport type { HdsCodeEditorDescriptionSignature } from './description.gts';\nimport type { HdsCodeEditorSignature as HdsCodeEditorModifierSignature } from '../../../modifiers/hds-code-editor.ts';\nimport type { HdsCodeEditorTitleSignature } from './title.gts';\nimport type { HdsCopyButtonSignature } from '../copy/button/index.gts';\n\nexport interface HdsCodeEditorSignature {\n Args: {\n hasCopyButton?: boolean;\n hasFullScreenButton?: boolean;\n isStandalone?: boolean;\n copyButtonText?: HdsCopyButtonSignature['Args']['text'];\n } & HdsCodeEditorModifierSignature['Args']['Named'];\n Blocks: {\n default: [\n {\n Title?: WithBoundArgs<\n typeof HdsCodeEditorTitle,\n 'onInsert' | 'editorId'\n >;\n Description?: WithBoundArgs<\n typeof HdsCodeEditorDescription,\n 'onInsert' | 'editorId'\n >;\n Generic?: typeof HdsCodeEditorGeneric;\n },\n ];\n };\n Element: HTMLDivElement;\n}\n\nexport default class HdsCodeEditor extends Component<HdsCodeEditorSignature> {\n @tracked private _isFullScreen = false;\n @tracked private _isSetupComplete = false;\n @tracked private _value;\n @tracked private _titleId: string | undefined;\n @tracked private _descriptionId: string | undefined;\n\n private _id = guidFor(this);\n\n private _handleEscape = modifier(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key !== 'Escape' || !this._isFullScreen) {\n return;\n }\n\n this.toggleFullScreen();\n };\n\n document.addEventListener('keydown', handleKeyDown);\n\n return () => {\n document.removeEventListener('keydown', handleKeyDown);\n };\n });\n\n constructor(owner: Owner, args: HdsCodeEditorSignature['Args']) {\n super(owner, args);\n\n if (args.value) {\n this._value = args.value;\n }\n }\n\n get ariaLabelledBy(): string | undefined {\n if (this.args.ariaLabel !== undefined) {\n return;\n }\n\n return this.args.ariaLabelledBy ?? this._titleId;\n }\n\n get ariaDescribedBy(): string | undefined {\n return this.args.ariaDescribedBy ?? this._descriptionId;\n }\n\n get hasActions(): boolean {\n return (this.args.hasCopyButton || this.args.hasFullScreenButton) ?? false;\n }\n\n get isStandalone(): boolean {\n return this.args.isStandalone ?? true;\n }\n\n get classNames(): string {\n // Currently there is only one theme so the class name is hard-coded.\n // In the future, additional themes such as a \"light\" theme could be added.\n const classes = ['hds-code-editor', 'hds-code-editor--theme-dark'];\n\n if (this._isFullScreen) {\n classes.push('hds-code-editor--is-full-screen');\n }\n\n if (this.isStandalone) {\n classes.push('hds-code-editor--is-standalone');\n }\n\n return classes.join(' ');\n }\n\n get copyButtonText(): HdsCopyButtonSignature['Args']['text'] {\n return this.args.copyButtonText ? this.args.copyButtonText : 'Copy';\n }\n\n registerTitleElement = (\n element: HdsCodeEditorTitleSignature['Element']\n ): void => {\n this._titleId = element.id;\n };\n\n registerDescriptionElement = (\n element: HdsCodeEditorDescriptionSignature['Element']\n ): void => {\n this._descriptionId = element.id;\n };\n\n toggleFullScreen = (): void => {\n this._isFullScreen = !this._isFullScreen;\n };\n\n onInput = (newValue: string, editorView: EditorView): void => {\n this._value = newValue;\n this.args.onInput?.(newValue, editorView);\n };\n\n onKeyDown = (event: KeyboardEvent): void => {\n if (event.key === 'Escape' && this._isFullScreen) {\n this.toggleFullScreen();\n }\n };\n\n onSetup = (editorView: EditorView): void => {\n this._isSetupComplete = true;\n this.args.onSetup?.(editorView);\n };\n\n <template>\n <div\n id={{this._id}}\n class={{this.classNames}}\n {{focusTrap isActive=this._isFullScreen}}\n {{this._handleEscape}}\n ...attributes\n >\n {{! header }}\n {{#if (or this.hasActions (has-block))}}\n <div class=\"hds-code-editor__header\">\n <div class=\"hds-code-editor__header-content\">\n {{yield\n (hash\n Title=(component\n HdsCodeEditorTitle\n editorId=this._id\n onInsert=this.registerTitleElement\n )\n Description=(component\n HdsCodeEditorDescription\n editorId=this._id\n onInsert=this.registerDescriptionElement\n )\n Generic=HdsCodeEditorGeneric\n )\n }}\n </div>\n\n {{#if this.hasActions}}\n <div class=\"hds-code-editor__header-actions\">\n {{#if @hasCopyButton}}\n <HdsCopyButton\n class=\"hds-code-editor__button hds-code-editor__copy-button\"\n @isIconOnly={{true}}\n @size=\"small\"\n @text={{this.copyButtonText}}\n @textToCopy={{this._value}}\n />\n {{/if}}\n {{#if @hasFullScreenButton}}\n <HdsCodeEditorFullScreenButton\n @isFullScreen={{this._isFullScreen}}\n @onToggleFullScreen={{this.toggleFullScreen}}\n />\n {{/if}}\n </div>\n {{/if}}\n </div>\n {{/if}}\n\n {{! editor }}\n <div\n class=\"hds-code-editor__editor\"\n {{hdsCodeEditorModifier\n ariaDescribedBy=this.ariaDescribedBy\n ariaLabel=@ariaLabel\n ariaLabelledBy=this.ariaLabelledBy\n customExtensions=@customExtensions\n cspNonce=@cspNonce\n extraKeys=@extraKeys\n hasLineWrapping=@hasLineWrapping\n isLintingEnabled=@isLintingEnabled\n language=@language\n value=@value\n onBlur=@onBlur\n onInput=this.onInput\n onSetup=this.onSetup\n onLint=@onLint\n }}\n />\n\n {{! loader }}\n {{#unless this._isSetupComplete}}\n <div class=\"hds-code-editor__loader\" aria-live=\"polite\" role=\"status\">\n <HdsIcon @name=\"loading\" @size=\"24\" />\n <span class=\"sr-only\">{{hdsT\n \"hds.components.common.loading\"\n default=\"Loading\"\n }}</span>\n </div>\n {{/unless}}\n </div>\n </template>\n}\n"],"names":["HdsCodeEditor","Component","g","prototype","tracked","i","_id","guidFor","_handleEscape","modifier","handleKeyDown","event","key","_isFullScreen","toggleFullScreen","document","addEventListener","removeEventListener","constructor","owner","args","value","_value","ariaLabelledBy","ariaLabel","undefined","_titleId","ariaDescribedBy","_descriptionId","hasActions","hasCopyButton","hasFullScreenButton","isStandalone","classNames","classes","push","join","copyButtonText","registerTitleElement","element","id","registerDescriptionElement","onInput","newValue","editorView","onKeyDown","onSetup","_isSetupComplete","setComponentTemplate","precompileTemplate","strictMode","scope","focusTrap","or","hash","HdsCodeEditorTitle","HdsCodeEditorDescription","HdsCodeEditorGeneric","HdsCopyButton","HdsCodeEditorFullScreenButton","hdsCodeEditorModifier","HdsIcon","hdsT"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../src/components/hds/code-editor/index.gts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2021, 2026\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { guidFor } from '@ember/object/internals';\nimport { hash } from '@ember/helper';\nimport { modifier } from 'ember-modifier';\nimport { or } from 'ember-truth-helpers';\nimport { tracked } from '@glimmer/tracking';\n// @ts-expect-error: missing types https://github.com/josemarluedke/ember-focus-trap/issues/86\nimport focusTrap from 'ember-focus-trap/modifiers/focus-trap';\n\nimport type { EditorView } from '@codemirror/view';\nimport type { WithBoundArgs } from '@glint/template';\nimport type Owner from '@ember/owner';\n\nimport hdsCodeEditorModifier from '../../../modifiers/hds-code-editor.ts';\nimport HdsCodeEditorDescription from './description.gts';\nimport HdsCodeEditorFullScreenButton from './full-screen-button.gts';\nimport HdsCodeEditorGeneric from './generic.gts';\nimport HdsCodeEditorTitle from './title.gts';\nimport HdsCopyButton from '../copy/button/index.gts';\nimport HdsIcon from '../icon/index.gts';\nimport hdsT from '../../../helpers/hds-t.ts';\n\nimport type { HdsCodeEditorDescriptionSignature } from './description.gts';\nimport type { HdsCodeEditorSignature as HdsCodeEditorModifierSignature } from '../../../modifiers/hds-code-editor.ts';\nimport type { HdsCodeEditorTitleSignature } from './title.gts';\nimport type { HdsCopyButtonSignature } from '../copy/button/index.gts';\n\nexport interface HdsCodeEditorSignature {\n Args: {\n hasCopyButton?: boolean;\n hasFullScreenButton?: boolean;\n isStandalone?: boolean;\n copyButtonText?: HdsCopyButtonSignature['Args']['text'];\n } & HdsCodeEditorModifierSignature['Args']['Named'];\n Blocks: {\n default: [\n {\n Title?: WithBoundArgs<\n typeof HdsCodeEditorTitle,\n 'onInsert' | 'editorId'\n >;\n Description?: WithBoundArgs<\n typeof HdsCodeEditorDescription,\n 'onInsert' | 'editorId'\n >;\n Generic?: typeof HdsCodeEditorGeneric;\n },\n ];\n };\n Element: HTMLDivElement;\n}\n\nexport default class HdsCodeEditor extends Component<HdsCodeEditorSignature> {\n @tracked private _isFullScreen = false;\n @tracked private _isSetupComplete = false;\n @tracked private _value;\n @tracked private _titleId: string | undefined;\n @tracked private _descriptionId: string | undefined;\n\n private _id = guidFor(this);\n\n private _handleEscape = modifier(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key !== 'Escape' || !this._isFullScreen) {\n return;\n }\n\n this.toggleFullScreen();\n };\n\n document.addEventListener('keydown', handleKeyDown);\n\n return () => {\n document.removeEventListener('keydown', handleKeyDown);\n };\n });\n\n constructor(owner: Owner, args: HdsCodeEditorSignature['Args']) {\n super(owner, args);\n\n if (args.value) {\n this._value = args.value;\n }\n }\n\n get ariaLabelledBy(): string | undefined {\n if (this.args.ariaLabel !== undefined) {\n return;\n }\n\n return this.args.ariaLabelledBy ?? this._titleId;\n }\n\n get ariaDescribedBy(): string | undefined {\n return this.args.ariaDescribedBy ?? this._descriptionId;\n }\n\n get hasActions(): boolean {\n return (this.args.hasCopyButton || this.args.hasFullScreenButton) ?? false;\n }\n\n get isStandalone(): boolean {\n return this.args.isStandalone ?? true;\n }\n\n get classNames(): string {\n // Currently there is only one theme so the class name is hard-coded.\n // In the future, additional themes such as a \"light\" theme could be added.\n const classes = ['hds-code-editor', 'hds-code-editor--theme-dark'];\n\n if (this._isFullScreen) {\n classes.push('hds-code-editor--is-full-screen');\n }\n\n if (this.isStandalone) {\n classes.push('hds-code-editor--is-standalone');\n }\n\n return classes.join(' ');\n }\n\n get copyButtonText(): HdsCopyButtonSignature['Args']['text'] {\n return this.args.copyButtonText ? this.args.copyButtonText : 'Copy';\n }\n\n registerTitleElement = (\n element: HdsCodeEditorTitleSignature['Element']\n ): void => {\n this._titleId = element.id;\n };\n\n registerDescriptionElement = (\n element: HdsCodeEditorDescriptionSignature['Element']\n ): void => {\n this._descriptionId = element.id;\n };\n\n toggleFullScreen = (): void => {\n this._isFullScreen = !this._isFullScreen;\n };\n\n onInput = (newValue: string, editorView: EditorView): void => {\n this._value = newValue;\n this.args.onInput?.(newValue, editorView);\n };\n\n onKeyDown = (event: KeyboardEvent): void => {\n if (event.key === 'Escape' && this._isFullScreen) {\n this.toggleFullScreen();\n }\n };\n\n onSetup = (editorView: EditorView): void => {\n this._isSetupComplete = true;\n this.args.onSetup?.(editorView);\n };\n\n <template>\n <div\n id={{this._id}}\n class={{this.classNames}}\n {{focusTrap isActive=this._isFullScreen}}\n {{this._handleEscape}}\n ...attributes\n >\n {{! header }}\n {{#if (or this.hasActions (has-block))}}\n <div class=\"hds-code-editor__header\">\n <div class=\"hds-code-editor__header-content\">\n {{yield\n (hash\n Title=(component\n HdsCodeEditorTitle\n editorId=this._id\n onInsert=this.registerTitleElement\n )\n Description=(component\n HdsCodeEditorDescription\n editorId=this._id\n onInsert=this.registerDescriptionElement\n )\n Generic=HdsCodeEditorGeneric\n )\n }}\n </div>\n\n {{#if this.hasActions}}\n <div class=\"hds-code-editor__header-actions\">\n {{#if @hasCopyButton}}\n <HdsCopyButton\n class=\"hds-code-editor__button hds-code-editor__copy-button\"\n @isIconOnly={{true}}\n @size=\"small\"\n @text={{this.copyButtonText}}\n @textToCopy={{this._value}}\n />\n {{/if}}\n {{#if @hasFullScreenButton}}\n <HdsCodeEditorFullScreenButton\n @isFullScreen={{this._isFullScreen}}\n @onToggleFullScreen={{this.toggleFullScreen}}\n />\n {{/if}}\n </div>\n {{/if}}\n </div>\n {{/if}}\n\n {{! editor }}\n <div\n class=\"hds-code-editor__editor\"\n {{hdsCodeEditorModifier\n ariaDescribedBy=this.ariaDescribedBy\n ariaLabel=@ariaLabel\n ariaLabelledBy=this.ariaLabelledBy\n customExtensions=@customExtensions\n cspNonce=@cspNonce\n extraKeys=@extraKeys\n hasLineWrapping=@hasLineWrapping\n isLintingEnabled=@isLintingEnabled\n language=@language\n value=@value\n onBlur=@onBlur\n onInput=this.onInput\n onSetup=this.onSetup\n onLint=@onLint\n }}\n />\n\n {{! loader }}\n {{#unless this._isSetupComplete}}\n <div class=\"hds-code-editor__loader\" aria-live=\"polite\" role=\"status\">\n <HdsIcon @name=\"loading\" @size=\"24\" />\n <span class=\"sr-only\">{{hdsT\n \"hds.components.common.loading\"\n default=\"Loading\"\n }}</span>\n </div>\n {{/unless}}\n </div>\n </template>\n}\n"],"names":["HdsCodeEditor","Component","g","prototype","tracked","i","_id","guidFor","_handleEscape","modifier","handleKeyDown","event","key","_isFullScreen","toggleFullScreen","document","addEventListener","removeEventListener","constructor","owner","args","value","_value","ariaLabelledBy","ariaLabel","undefined","_titleId","ariaDescribedBy","_descriptionId","hasActions","hasCopyButton","hasFullScreenButton","isStandalone","classNames","classes","push","join","copyButtonText","registerTitleElement","element","id","registerDescriptionElement","onInput","newValue","editorView","onKeyDown","onSetup","_isSetupComplete","setComponentTemplate","precompileTemplate","strictMode","scope","focusTrap","or","hash","HdsCodeEditorTitle","HdsCodeEditorDescription","HdsCodeEditorGeneric","HdsCopyButton","HdsCodeEditorFullScreenButton","hdsCodeEditorModifier","HdsIcon","hdsT"],"mappings":"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"}
@@ -5,7 +5,7 @@ import { precompileTemplate } from '@ember/template-compilation';
5
5
  import { setComponentTemplate } from '@ember/component';
6
6
 
7
7
  /**
8
- * Copyright IBM Corp. 2021, 2025
8
+ * Copyright IBM Corp. 2021, 2026
9
9
  * SPDX-License-Identifier: MPL-2.0
10
10
  */
11
11
  class HdsCodeEditorTitle extends Component {
@@ -1 +1 @@
1
- {"version":3,"file":"title.js","sources":["../../../../src/components/hds/code-editor/title.gts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2021, 2025\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\n// eslint-disable-next-line ember/no-at-ember-render-modifiers\nimport didInsert from '@ember/render-modifiers/modifiers/did-insert';\n\nimport HdsTextBody from '../text/body.gts';\n\nimport type { HdsTextBodySignature } from '../text/body.gts';\n\ntype HdsCodeEditorTitleElement = HdsTextBodySignature['Element'];\n\nexport interface HdsCodeEditorTitleSignature {\n Args: {\n editorId: string;\n tag?: HdsTextBodySignature['Args']['tag'];\n onInsert: (element: HdsCodeEditorTitleElement) => void;\n };\n Blocks: {\n default: [];\n };\n Element: HdsCodeEditorTitleElement;\n}\n\nexport default class HdsCodeEditorTitle extends Component<HdsCodeEditorTitleSignature> {\n private _id = `${this.args.editorId}-title`;\n\n get tag(): HdsTextBodySignature['Args']['tag'] {\n return this.args.tag ?? 'h2';\n }\n\n <template>\n <HdsTextBody\n id={{this._id}}\n class=\"hds-code-editor__title\"\n @tag={{this.tag}}\n @size=\"200\"\n @weight=\"semibold\"\n {{didInsert @onInsert}}\n ...attributes\n >\n {{yield}}\n </HdsTextBody>\n </template>\n}\n"],"names":["HdsCodeEditorTitle","Component","_id","args","editorId","tag","setComponentTemplate","precompileTemplate","strictMode","scope","HdsTextBody","didInsert"],"mappings":";;;;;;AAAA;;;AAGC;AAwBc,MAAMA,2BAA2BC,SAAA,CAAU;AAChDC,EAAAA,GAAA,GAAM,CAAA,EAAG,IAAI,CAACC,IAAI,CAACC,QAAQ,CAAA,MAAA,CAAQ;EAE3C,IAAIC,GAAAA,GAA2C;AAC7C,IAAA,OAAO,IAAI,CAACF,IAAI,CAACE,GAAG,IAAI,IAAA;AAC1B,EAAA;AAEA,EAAA;IAAAC,oBAAA,CAAAC,kBAAA,CAAA,wLAAA,EAYA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;QAAAC,WAAA;AAAAC,QAAAA;AAAA,OAAA;KAAU,CAAA,EAAV,IAAW,CAAA;AAAD;AACZ;;;;"}
1
+ {"version":3,"file":"title.js","sources":["../../../../src/components/hds/code-editor/title.gts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2021, 2026\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\n// eslint-disable-next-line ember/no-at-ember-render-modifiers\nimport didInsert from '@ember/render-modifiers/modifiers/did-insert';\n\nimport HdsTextBody from '../text/body.gts';\n\nimport type { HdsTextBodySignature } from '../text/body.gts';\n\ntype HdsCodeEditorTitleElement = HdsTextBodySignature['Element'];\n\nexport interface HdsCodeEditorTitleSignature {\n Args: {\n editorId: string;\n tag?: HdsTextBodySignature['Args']['tag'];\n onInsert: (element: HdsCodeEditorTitleElement) => void;\n };\n Blocks: {\n default: [];\n };\n Element: HdsCodeEditorTitleElement;\n}\n\nexport default class HdsCodeEditorTitle extends Component<HdsCodeEditorTitleSignature> {\n private _id = `${this.args.editorId}-title`;\n\n get tag(): HdsTextBodySignature['Args']['tag'] {\n return this.args.tag ?? 'h2';\n }\n\n <template>\n <HdsTextBody\n id={{this._id}}\n class=\"hds-code-editor__title\"\n @tag={{this.tag}}\n @size=\"200\"\n @weight=\"semibold\"\n {{didInsert @onInsert}}\n ...attributes\n >\n {{yield}}\n </HdsTextBody>\n </template>\n}\n"],"names":["HdsCodeEditorTitle","Component","_id","args","editorId","tag","setComponentTemplate","precompileTemplate","strictMode","scope","HdsTextBody","didInsert"],"mappings":";;;;;;AAAA;;;AAGC;AAwBc,MAAMA,2BAA2BC,SAAA,CAAU;AAChDC,EAAAA,GAAA,GAAM,CAAA,EAAG,IAAI,CAACC,IAAI,CAACC,QAAQ,CAAA,MAAA,CAAQ;EAE3C,IAAIC,GAAAA,GAA2C;AAC7C,IAAA,OAAO,IAAI,CAACF,IAAI,CAACE,GAAG,IAAI,IAAA;AAC1B,EAAA;AAEA,EAAA;IAAAC,oBAAA,CAAAC,kBAAA,CAAA,wLAAA,EAYA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;QAAAC,WAAA;AAAAC,QAAAA;AAAA,OAAA;KAAU,CAAA,EAAV,IAAW,CAAA;AAAD;AACZ;;;;"}
@@ -6,6 +6,10 @@ import { findFirstEnabled, handleKey } from './navigation.js';
6
6
  import { precompileTemplate } from '@ember/template-compilation';
7
7
  import { setComponentTemplate } from '@ember/component';
8
8
 
9
+ /**
10
+ * Copyright IBM Corp. 2021, 2026
11
+ * SPDX-License-Identifier: MPL-2.0
12
+ */
9
13
  function getElementId(element, prefix) {
10
14
  if (element.id !== '') {
11
15
  return element.id;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/components/hds/composite/index.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { modifier } from 'ember-modifier';\nimport { hash } from '@ember/helper';\n\nimport { guidFor } from '@ember/object/internals';\n\nimport { handleKey, findFirstEnabled } from './navigation.ts';\n\nimport type Owner from '@ember/owner';\nimport type { ModifierLike } from '@glint/template';\nimport type {\n HdsCompositeOrientations,\n HdsCompositeNavigationConfig,\n HdsCompositeNavigationSnapshot,\n HdsCompositeItem,\n HdsCompositeGroup,\n} from './types.ts';\n\nfunction getElementId(element: HTMLElement, prefix: string): string {\n if (element.id !== '') {\n return element.id;\n }\n\n return `${prefix}-${guidFor(element)}`;\n}\n\nfunction sortByDOMPosition<T extends { element: HTMLElement }>(\n items: T[]\n): T[] {\n const indexedItems = items.map((item, index) => ({ item, index }));\n\n return indexedItems\n .slice()\n .sort((leftEntry, rightEntry) => {\n const { item: left, index: leftIndex } = leftEntry;\n const { item: right, index: rightIndex } = rightEntry;\n\n if (!left.element.isConnected && right.element.isConnected) {\n return 1;\n }\n\n if (left.element.isConnected && !right.element.isConnected) {\n return -1;\n }\n\n const position = left.element.compareDocumentPosition(right.element);\n\n if ((position & Node.DOCUMENT_POSITION_FOLLOWING) !== 0) {\n return -1;\n }\n\n if ((position & Node.DOCUMENT_POSITION_PRECEDING) !== 0) {\n return 1;\n }\n\n // keep sort stable when DOM position cannot be resolved\n return leftIndex - rightIndex;\n })\n .map((entry) => entry.item);\n}\n\nfunction findGroupId(\n element: HTMLElement,\n groups: { id: string; element: HTMLElement }[]\n): string | undefined {\n for (const group of groups) {\n if (group.element.contains(element)) {\n return group.id;\n }\n }\n\n return undefined;\n}\n\ninterface HdsCompositeCompositeModifierSignature {\n Element: HTMLElement;\n}\n\ninterface HdsCompositeItemModifierSignature {\n Element: HTMLElement;\n Args: {\n Named: {\n disabled?: boolean;\n };\n };\n}\n\ninterface HdsCompositeGroupModifierSignature {\n Element: HTMLElement;\n}\n\nexport interface HdsCompositeSignature {\n Args: {\n orientation?: HdsCompositeOrientations;\n loop?: boolean | HdsCompositeOrientations;\n wrap?: boolean | HdsCompositeOrientations;\n defaultCurrentId?: string | null;\n };\n Blocks: {\n default: [\n {\n composite: ModifierLike<HdsCompositeCompositeModifierSignature>;\n item: ModifierLike<HdsCompositeItemModifierSignature>;\n group: ModifierLike<HdsCompositeGroupModifierSignature>;\n },\n ];\n };\n}\n\nexport default class Composite extends Component<HdsCompositeSignature> {\n // not tracked because registration happens inside modifier installation\n private _items: HdsCompositeItem[] = [];\n private _groups: HdsCompositeGroup[] = [];\n\n // undefined = uninitialized (auto-select first enabled on registration)\n // null = explicitly no active item (container gets tabindex=\"0\")\n // string = active item id\n private _currentId: string | null | undefined = undefined;\n\n private _compositeElement: HTMLElement | null = null;\n private _preserveTabIndex = false;\n\n constructor(owner: Owner, args: HdsCompositeSignature['Args']) {\n super(owner, args);\n\n if (args.defaultCurrentId !== undefined) {\n this._currentId = args.defaultCurrentId;\n }\n }\n\n private get _resolvedCurrentId(): string | null | undefined {\n // explicitly null (no active item)\n if (this._currentId === null) {\n return null;\n }\n\n const requestedItem = this._items.find(\n (item) => item.id === this._currentId\n );\n\n if (requestedItem !== undefined && requestedItem.disabled === false) {\n return this._currentId;\n }\n\n return this._firstEnabledItem !== undefined\n ? this._firstEnabledItem.id\n : undefined;\n }\n\n private get _currentItem(): HdsCompositeItem | undefined {\n const activeId = this._resolvedCurrentId;\n\n if (activeId === null || activeId === undefined) {\n return undefined;\n }\n\n return this._items.find((item) => item.id === activeId);\n }\n\n private get _firstEnabledItem(): HdsCompositeItem | undefined {\n return findFirstEnabled(this._items);\n }\n\n private get _currentIndex(): number {\n const activeId = this._resolvedCurrentId;\n\n if (activeId === null || activeId === undefined) {\n return -1;\n }\n\n return this._items.findIndex((item) => item.id === activeId);\n }\n\n private get _config(): HdsCompositeNavigationConfig {\n return {\n orientation: this.args.orientation,\n loop: this.args.loop ?? false,\n wrap: this.args.wrap ?? false,\n };\n }\n\n private get _navigationSnapshot(): HdsCompositeNavigationSnapshot {\n return {\n items: this._items,\n groups: this._groups,\n currentItem: this._currentItem,\n currentIndex: this._currentIndex,\n };\n }\n\n private _registerItem(newItem: HdsCompositeItem): void {\n newItem.groupId = findGroupId(newItem.element, this._groups);\n\n this._items = sortByDOMPosition([\n ...this._items.filter((item) => item.id !== newItem.id),\n newItem,\n ]);\n\n this._syncAllElements();\n }\n\n private _unregisterItem(id: string): void {\n const wasCurrent = this._resolvedCurrentId === id;\n this._items = this._items.filter((item) => item.id !== id);\n\n if (wasCurrent) {\n // reset to \"auto\" so newly rendered first items can become active\n this._currentId = undefined;\n this._syncAllElements();\n\n return;\n }\n\n this._syncAllElements();\n }\n\n private _registerGroup(newGroup: HdsCompositeGroup): void {\n this._groups = sortByDOMPosition([\n ...this._groups.filter((group) => group.id !== newGroup.id),\n newGroup,\n ]);\n\n this._reassociateGroups();\n }\n\n private _unregisterGroup(id: string): void {\n this._groups = this._groups.filter((group) => group.id !== id);\n this._reassociateGroups();\n\n const currentExists = this._items.some(\n (item) => item.id === this._resolvedCurrentId\n );\n\n if (!currentExists && this._firstEnabledItem) {\n // reset to \"auto\" so group reordering/mount order can settle first\n this._currentId = undefined;\n this._syncAllElements();\n }\n }\n\n private _reassociateGroups(): void {\n for (const item of this._items) {\n item.groupId = findGroupId(item.element, this._groups);\n }\n }\n\n private _moveTo(id: string): void {\n if (this._currentId === id) {\n return;\n }\n\n const previousItem = this._currentItem;\n\n this._currentId = id;\n\n const nextItem = this._currentItem;\n\n if (previousItem !== undefined) {\n this._syncItemElement(previousItem);\n }\n\n if (nextItem !== undefined) {\n this._syncItemElement(nextItem);\n }\n\n this._syncCompositeElement();\n }\n\n private _syncAllElements(): void {\n for (const item of this._items) {\n this._syncItemElement(item);\n }\n\n this._syncCompositeElement();\n }\n\n private _syncItemElement(item: HdsCompositeItem): void {\n const element = item.element;\n const isCurrent = item.id === this._resolvedCurrentId;\n\n if (item.disabled === true) {\n element.setAttribute('aria-disabled', 'true');\n element.setAttribute('disabled', '');\n element.setAttribute('tabindex', '-1');\n } else {\n element.removeAttribute('aria-disabled');\n element.removeAttribute('disabled');\n element.setAttribute('tabindex', isCurrent === true ? '0' : '-1');\n }\n\n if (isCurrent === true) {\n element.setAttribute('data-active-item', '');\n } else {\n element.removeAttribute('data-active-item');\n }\n\n element.setAttribute('tabindex', isCurrent === true ? '0' : '-1');\n }\n\n private _syncCompositeElement(): void {\n const element = this._compositeElement;\n\n if (element === null || this._preserveTabIndex === true) {\n return;\n }\n\n const activeId = this._resolvedCurrentId;\n\n if (activeId === null || activeId === undefined) {\n element.setAttribute('tabindex', '0');\n } else {\n element.removeAttribute('tabindex');\n }\n }\n\n compositeModifier = modifier<HdsCompositeCompositeModifierSignature>(\n (element: HTMLElement) => {\n this._compositeElement = element;\n this._preserveTabIndex = element.hasAttribute('tabindex');\n\n this._syncCompositeElement();\n\n const onKeyDown = (event: KeyboardEvent): void => {\n const managedKeys = [\n 'ArrowUp',\n 'ArrowDown',\n 'ArrowLeft',\n 'ArrowRight',\n 'Home',\n 'End',\n 'PageUp',\n 'PageDown',\n ];\n\n if (managedKeys.includes(event.key)) {\n event.preventDefault();\n }\n\n const target = handleKey(event, this._navigationSnapshot, this._config);\n\n if (target === undefined) {\n return;\n }\n\n this._moveTo(target.id);\n\n target.element.focus();\n };\n\n element.addEventListener('keydown', onKeyDown);\n\n return () => {\n element.removeEventListener('keydown', onKeyDown);\n\n if (this._compositeElement === element) {\n this._compositeElement = null;\n }\n };\n }\n );\n\n itemModifier = modifier<HdsCompositeItemModifierSignature>(\n (element: HTMLElement, _positional: unknown[], named) => {\n const disabled = named.disabled ?? false;\n const id = getElementId(element, 'composite-item');\n\n element.id = id;\n\n this._registerItem({ id, element, disabled });\n\n const onFocus = (): void => {\n const item = this._items.find((registered) => registered.id === id);\n\n if (item === undefined || item.disabled === true) {\n return;\n }\n\n this._moveTo(id);\n };\n\n element.addEventListener('focus', onFocus);\n\n return () => {\n element.removeEventListener('focus', onFocus);\n\n this._unregisterItem(id);\n };\n }\n );\n\n groupModifier = modifier<HdsCompositeGroupModifierSignature>(\n (element: HTMLElement) => {\n const id = getElementId(element, 'composite-group');\n\n element.id = id;\n\n this._registerGroup({ id, element });\n\n return () => {\n this._unregisterGroup(id);\n };\n }\n );\n\n <template>\n {{yield\n (hash\n composite=this.compositeModifier\n item=this.itemModifier\n group=this.groupModifier\n )\n }}\n </template>\n}\n"],"names":["getElementId","element","prefix","id","guidFor","sortByDOMPosition","items","indexedItems","map","item","index","slice","sort","leftEntry","rightEntry","left","leftIndex","right","rightIndex","isConnected","position","compareDocumentPosition","Node","DOCUMENT_POSITION_FOLLOWING","DOCUMENT_POSITION_PRECEDING","entry","findGroupId","groups","group","contains","undefined","Composite","Component","_items","_groups","_currentId","_compositeElement","_preserveTabIndex","constructor","owner","args","defaultCurrentId","_resolvedCurrentId","requestedItem","find","disabled","_firstEnabledItem","_currentItem","activeId","findFirstEnabled","_currentIndex","findIndex","_config","orientation","loop","wrap","_navigationSnapshot","currentItem","currentIndex","_registerItem","newItem","groupId","filter","_syncAllElements","_unregisterItem","wasCurrent","_registerGroup","newGroup","_reassociateGroups","_unregisterGroup","currentExists","some","_moveTo","previousItem","nextItem","_syncItemElement","_syncCompositeElement","isCurrent","setAttribute","removeAttribute","compositeModifier","modifier","hasAttribute","onKeyDown","event","managedKeys","includes","key","preventDefault","target","handleKey","focus","addEventListener","removeEventListener","itemModifier","_positional","named","onFocus","registered","groupModifier","setComponentTemplate","precompileTemplate","strictMode","scope","hash"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../src/components/hds/composite/index.gts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2021, 2026\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { modifier } from 'ember-modifier';\nimport { hash } from '@ember/helper';\n\nimport { guidFor } from '@ember/object/internals';\n\nimport { handleKey, findFirstEnabled } from './navigation.ts';\n\nimport type Owner from '@ember/owner';\nimport type { ModifierLike } from '@glint/template';\nimport type {\n HdsCompositeOrientations,\n HdsCompositeNavigationConfig,\n HdsCompositeNavigationSnapshot,\n HdsCompositeItem,\n HdsCompositeGroup,\n} from './types.ts';\n\nfunction getElementId(element: HTMLElement, prefix: string): string {\n if (element.id !== '') {\n return element.id;\n }\n\n return `${prefix}-${guidFor(element)}`;\n}\n\nfunction sortByDOMPosition<T extends { element: HTMLElement }>(\n items: T[]\n): T[] {\n const indexedItems = items.map((item, index) => ({ item, index }));\n\n return indexedItems\n .slice()\n .sort((leftEntry, rightEntry) => {\n const { item: left, index: leftIndex } = leftEntry;\n const { item: right, index: rightIndex } = rightEntry;\n\n if (!left.element.isConnected && right.element.isConnected) {\n return 1;\n }\n\n if (left.element.isConnected && !right.element.isConnected) {\n return -1;\n }\n\n const position = left.element.compareDocumentPosition(right.element);\n\n if ((position & Node.DOCUMENT_POSITION_FOLLOWING) !== 0) {\n return -1;\n }\n\n if ((position & Node.DOCUMENT_POSITION_PRECEDING) !== 0) {\n return 1;\n }\n\n // keep sort stable when DOM position cannot be resolved\n return leftIndex - rightIndex;\n })\n .map((entry) => entry.item);\n}\n\nfunction findGroupId(\n element: HTMLElement,\n groups: { id: string; element: HTMLElement }[]\n): string | undefined {\n for (const group of groups) {\n if (group.element.contains(element)) {\n return group.id;\n }\n }\n\n return undefined;\n}\n\ninterface HdsCompositeCompositeModifierSignature {\n Element: HTMLElement;\n}\n\ninterface HdsCompositeItemModifierSignature {\n Element: HTMLElement;\n Args: {\n Named: {\n disabled?: boolean;\n };\n };\n}\n\ninterface HdsCompositeGroupModifierSignature {\n Element: HTMLElement;\n}\n\nexport interface HdsCompositeSignature {\n Args: {\n orientation?: HdsCompositeOrientations;\n loop?: boolean | HdsCompositeOrientations;\n wrap?: boolean | HdsCompositeOrientations;\n defaultCurrentId?: string | null;\n };\n Blocks: {\n default: [\n {\n composite: ModifierLike<HdsCompositeCompositeModifierSignature>;\n item: ModifierLike<HdsCompositeItemModifierSignature>;\n group: ModifierLike<HdsCompositeGroupModifierSignature>;\n },\n ];\n };\n}\n\nexport default class Composite extends Component<HdsCompositeSignature> {\n // not tracked because registration happens inside modifier installation\n private _items: HdsCompositeItem[] = [];\n private _groups: HdsCompositeGroup[] = [];\n\n // undefined = uninitialized (auto-select first enabled on registration)\n // null = explicitly no active item (container gets tabindex=\"0\")\n // string = active item id\n private _currentId: string | null | undefined = undefined;\n\n private _compositeElement: HTMLElement | null = null;\n private _preserveTabIndex = false;\n\n constructor(owner: Owner, args: HdsCompositeSignature['Args']) {\n super(owner, args);\n\n if (args.defaultCurrentId !== undefined) {\n this._currentId = args.defaultCurrentId;\n }\n }\n\n private get _resolvedCurrentId(): string | null | undefined {\n // explicitly null (no active item)\n if (this._currentId === null) {\n return null;\n }\n\n const requestedItem = this._items.find(\n (item) => item.id === this._currentId\n );\n\n if (requestedItem !== undefined && requestedItem.disabled === false) {\n return this._currentId;\n }\n\n return this._firstEnabledItem !== undefined\n ? this._firstEnabledItem.id\n : undefined;\n }\n\n private get _currentItem(): HdsCompositeItem | undefined {\n const activeId = this._resolvedCurrentId;\n\n if (activeId === null || activeId === undefined) {\n return undefined;\n }\n\n return this._items.find((item) => item.id === activeId);\n }\n\n private get _firstEnabledItem(): HdsCompositeItem | undefined {\n return findFirstEnabled(this._items);\n }\n\n private get _currentIndex(): number {\n const activeId = this._resolvedCurrentId;\n\n if (activeId === null || activeId === undefined) {\n return -1;\n }\n\n return this._items.findIndex((item) => item.id === activeId);\n }\n\n private get _config(): HdsCompositeNavigationConfig {\n return {\n orientation: this.args.orientation,\n loop: this.args.loop ?? false,\n wrap: this.args.wrap ?? false,\n };\n }\n\n private get _navigationSnapshot(): HdsCompositeNavigationSnapshot {\n return {\n items: this._items,\n groups: this._groups,\n currentItem: this._currentItem,\n currentIndex: this._currentIndex,\n };\n }\n\n private _registerItem(newItem: HdsCompositeItem): void {\n newItem.groupId = findGroupId(newItem.element, this._groups);\n\n this._items = sortByDOMPosition([\n ...this._items.filter((item) => item.id !== newItem.id),\n newItem,\n ]);\n\n this._syncAllElements();\n }\n\n private _unregisterItem(id: string): void {\n const wasCurrent = this._resolvedCurrentId === id;\n this._items = this._items.filter((item) => item.id !== id);\n\n if (wasCurrent) {\n // reset to \"auto\" so newly rendered first items can become active\n this._currentId = undefined;\n this._syncAllElements();\n\n return;\n }\n\n this._syncAllElements();\n }\n\n private _registerGroup(newGroup: HdsCompositeGroup): void {\n this._groups = sortByDOMPosition([\n ...this._groups.filter((group) => group.id !== newGroup.id),\n newGroup,\n ]);\n\n this._reassociateGroups();\n }\n\n private _unregisterGroup(id: string): void {\n this._groups = this._groups.filter((group) => group.id !== id);\n this._reassociateGroups();\n\n const currentExists = this._items.some(\n (item) => item.id === this._resolvedCurrentId\n );\n\n if (!currentExists && this._firstEnabledItem) {\n // reset to \"auto\" so group reordering/mount order can settle first\n this._currentId = undefined;\n this._syncAllElements();\n }\n }\n\n private _reassociateGroups(): void {\n for (const item of this._items) {\n item.groupId = findGroupId(item.element, this._groups);\n }\n }\n\n private _moveTo(id: string): void {\n if (this._currentId === id) {\n return;\n }\n\n const previousItem = this._currentItem;\n\n this._currentId = id;\n\n const nextItem = this._currentItem;\n\n if (previousItem !== undefined) {\n this._syncItemElement(previousItem);\n }\n\n if (nextItem !== undefined) {\n this._syncItemElement(nextItem);\n }\n\n this._syncCompositeElement();\n }\n\n private _syncAllElements(): void {\n for (const item of this._items) {\n this._syncItemElement(item);\n }\n\n this._syncCompositeElement();\n }\n\n private _syncItemElement(item: HdsCompositeItem): void {\n const element = item.element;\n const isCurrent = item.id === this._resolvedCurrentId;\n\n if (item.disabled === true) {\n element.setAttribute('aria-disabled', 'true');\n element.setAttribute('disabled', '');\n element.setAttribute('tabindex', '-1');\n } else {\n element.removeAttribute('aria-disabled');\n element.removeAttribute('disabled');\n element.setAttribute('tabindex', isCurrent === true ? '0' : '-1');\n }\n\n if (isCurrent === true) {\n element.setAttribute('data-active-item', '');\n } else {\n element.removeAttribute('data-active-item');\n }\n\n element.setAttribute('tabindex', isCurrent === true ? '0' : '-1');\n }\n\n private _syncCompositeElement(): void {\n const element = this._compositeElement;\n\n if (element === null || this._preserveTabIndex === true) {\n return;\n }\n\n const activeId = this._resolvedCurrentId;\n\n if (activeId === null || activeId === undefined) {\n element.setAttribute('tabindex', '0');\n } else {\n element.removeAttribute('tabindex');\n }\n }\n\n compositeModifier = modifier<HdsCompositeCompositeModifierSignature>(\n (element: HTMLElement) => {\n this._compositeElement = element;\n this._preserveTabIndex = element.hasAttribute('tabindex');\n\n this._syncCompositeElement();\n\n const onKeyDown = (event: KeyboardEvent): void => {\n const managedKeys = [\n 'ArrowUp',\n 'ArrowDown',\n 'ArrowLeft',\n 'ArrowRight',\n 'Home',\n 'End',\n 'PageUp',\n 'PageDown',\n ];\n\n if (managedKeys.includes(event.key)) {\n event.preventDefault();\n }\n\n const target = handleKey(event, this._navigationSnapshot, this._config);\n\n if (target === undefined) {\n return;\n }\n\n this._moveTo(target.id);\n\n target.element.focus();\n };\n\n element.addEventListener('keydown', onKeyDown);\n\n return () => {\n element.removeEventListener('keydown', onKeyDown);\n\n if (this._compositeElement === element) {\n this._compositeElement = null;\n }\n };\n }\n );\n\n itemModifier = modifier<HdsCompositeItemModifierSignature>(\n (element: HTMLElement, _positional: unknown[], named) => {\n const disabled = named.disabled ?? false;\n const id = getElementId(element, 'composite-item');\n\n element.id = id;\n\n this._registerItem({ id, element, disabled });\n\n const onFocus = (): void => {\n const item = this._items.find((registered) => registered.id === id);\n\n if (item === undefined || item.disabled === true) {\n return;\n }\n\n this._moveTo(id);\n };\n\n element.addEventListener('focus', onFocus);\n\n return () => {\n element.removeEventListener('focus', onFocus);\n\n this._unregisterItem(id);\n };\n }\n );\n\n groupModifier = modifier<HdsCompositeGroupModifierSignature>(\n (element: HTMLElement) => {\n const id = getElementId(element, 'composite-group');\n\n element.id = id;\n\n this._registerGroup({ id, element });\n\n return () => {\n this._unregisterGroup(id);\n };\n }\n );\n\n <template>\n {{yield\n (hash\n composite=this.compositeModifier\n item=this.itemModifier\n group=this.groupModifier\n )\n }}\n </template>\n}\n"],"names":["getElementId","element","prefix","id","guidFor","sortByDOMPosition","items","indexedItems","map","item","index","slice","sort","leftEntry","rightEntry","left","leftIndex","right","rightIndex","isConnected","position","compareDocumentPosition","Node","DOCUMENT_POSITION_FOLLOWING","DOCUMENT_POSITION_PRECEDING","entry","findGroupId","groups","group","contains","undefined","Composite","Component","_items","_groups","_currentId","_compositeElement","_preserveTabIndex","constructor","owner","args","defaultCurrentId","_resolvedCurrentId","requestedItem","find","disabled","_firstEnabledItem","_currentItem","activeId","findFirstEnabled","_currentIndex","findIndex","_config","orientation","loop","wrap","_navigationSnapshot","currentItem","currentIndex","_registerItem","newItem","groupId","filter","_syncAllElements","_unregisterItem","wasCurrent","_registerGroup","newGroup","_reassociateGroups","_unregisterGroup","currentExists","some","_moveTo","previousItem","nextItem","_syncItemElement","_syncCompositeElement","isCurrent","setAttribute","removeAttribute","compositeModifier","modifier","hasAttribute","onKeyDown","event","managedKeys","includes","key","preventDefault","target","handleKey","focus","addEventListener","removeEventListener","itemModifier","_positional","named","onFocus","registered","groupModifier","setComponentTemplate","precompileTemplate","strictMode","scope","hash"],"mappings":"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"}
@@ -1,3 +1,8 @@
1
+ /**
2
+ * Copyright IBM Corp. 2021, 2026
3
+ * SPDX-License-Identifier: MPL-2.0
4
+ */
5
+
1
6
  function matchesAxis(value, axis) {
2
7
  // `true` matches all axes, a string value matches only that axis
3
8
  return value === true || value === axis;
@@ -1 +1 @@
1
- {"version":3,"file":"navigation.js","sources":["../../../../src/components/hds/composite/navigation.ts"],"sourcesContent":["import type {\n HdsCompositeItem,\n HdsCompositeNavigationConfig,\n HdsCompositeNavigationSnapshot,\n HdsCompositeOrientations,\n} from './types.ts';\n\nfunction matchesAxis(\n value: boolean | HdsCompositeOrientations,\n axis: HdsCompositeOrientations\n): boolean {\n // `true` matches all axes, a string value matches only that axis\n return value === true || value === axis;\n}\n\nfunction findEnabledItem(\n items: HdsCompositeItem[],\n startIndex: number,\n direction: 1 | -1,\n loop: boolean\n): HdsCompositeItem | undefined {\n const length = items.length;\n\n if (length === 0) {\n return undefined;\n }\n\n let index = startIndex + direction;\n\n if (loop === true) {\n for (let step = 0; step < length; step++) {\n const item = items[((index % length) + length) % length]!;\n\n if (item.disabled === false) {\n return item;\n }\n\n index += direction;\n }\n } else {\n while (index >= 0 && index < length) {\n const item = items[index]!;\n\n if (item.disabled === false) {\n return item;\n }\n\n index += direction;\n }\n }\n\n return undefined;\n}\n\nexport function findFirstEnabled(\n items: HdsCompositeItem[]\n): HdsCompositeItem | undefined {\n return items.find((item) => item.disabled === false);\n}\n\nfunction findLastEnabled(\n items: HdsCompositeItem[]\n): HdsCompositeItem | undefined {\n for (let index = items.length - 1; index >= 0; index--) {\n if (items[index]!.disabled === false) {\n return items[index];\n }\n }\n\n return undefined;\n}\n\nfunction getItemsInGroup(\n items: HdsCompositeItem[],\n groupId: string\n): HdsCompositeItem[] {\n return items.filter((item) => item.groupId === groupId);\n}\n\nfunction resolveColumnTarget(\n targetItems: HdsCompositeItem[],\n columnIndex: number\n): HdsCompositeItem | undefined {\n if (columnIndex < 0 || columnIndex >= targetItems.length) {\n return findLastEnabled(targetItems);\n }\n\n const target = targetItems[columnIndex]!;\n\n if (target.disabled === false) {\n return target;\n }\n\n return (\n findEnabledItem(targetItems, columnIndex, 1, false) ??\n findEnabledItem(targetItems, columnIndex, -1, false)\n );\n}\n\nexport function handleKey(\n event: KeyboardEvent,\n snapshot: HdsCompositeNavigationSnapshot,\n config: HdsCompositeNavigationConfig\n): HdsCompositeItem | undefined {\n const { key, ctrlKey } = event;\n const hasGroups = snapshot.groups.length > 0;\n\n if (hasGroups === true && config.orientation === undefined) {\n return handle2DKey(key, ctrlKey, snapshot, config);\n }\n\n return handle1DKey(key, snapshot, config);\n}\n\nfunction handle1DKey(\n key: string,\n snapshot: HdsCompositeNavigationSnapshot,\n config: HdsCompositeNavigationConfig\n): HdsCompositeItem | undefined {\n const { orientation } = config;\n\n switch (key) {\n case 'ArrowRight':\n if (orientation === 'vertical') {\n return undefined;\n }\n\n return navigateLinear(snapshot, config, 'horizontal', 1);\n\n case 'ArrowLeft':\n if (orientation === 'vertical') {\n return undefined;\n }\n\n return navigateLinear(snapshot, config, 'horizontal', -1);\n\n case 'ArrowDown':\n if (orientation === 'horizontal') {\n return undefined;\n }\n\n return navigateLinear(snapshot, config, 'vertical', 1);\n\n case 'ArrowUp':\n if (orientation === 'horizontal') {\n return undefined;\n }\n\n return navigateLinear(snapshot, config, 'vertical', -1);\n\n case 'Home':\n return findFirstEnabled(snapshot.items);\n\n case 'End':\n return findLastEnabled(snapshot.items);\n\n default:\n return undefined;\n }\n}\n\nfunction handle2DKey(\n key: string,\n ctrlKey: boolean,\n snapshot: HdsCompositeNavigationSnapshot,\n config: HdsCompositeNavigationConfig\n): HdsCompositeItem | undefined {\n switch (key) {\n case 'ArrowRight':\n return navigateInRow(snapshot, config, 1);\n\n case 'ArrowLeft':\n return navigateInRow(snapshot, config, -1);\n\n case 'ArrowDown':\n return navigateColumn(snapshot, config, 1);\n\n case 'ArrowUp':\n return navigateColumn(snapshot, config, -1);\n\n case 'Home':\n if (ctrlKey === true) {\n return findFirstEnabled(snapshot.items);\n }\n\n return navigateRowEnd(snapshot, -1);\n\n case 'End':\n if (ctrlKey === true) {\n return findLastEnabled(snapshot.items);\n }\n\n return navigateRowEnd(snapshot, 1);\n\n case 'PageDown':\n return navigateColumnEnd(snapshot, 1);\n\n case 'PageUp':\n return navigateColumnEnd(snapshot, -1);\n\n default:\n return undefined;\n }\n}\n\nfunction navigateLinear(\n snapshot: HdsCompositeNavigationSnapshot,\n config: HdsCompositeNavigationConfig,\n axis: HdsCompositeOrientations,\n direction: 1 | -1\n): HdsCompositeItem | undefined {\n const { items, currentIndex } = snapshot;\n\n if (currentIndex === -1) {\n return direction === 1 ? findFirstEnabled(items) : findLastEnabled(items);\n }\n\n return findEnabledItem(\n items,\n currentIndex,\n direction,\n matchesAxis(config.loop, axis)\n );\n}\n\nfunction navigateInRow(\n snapshot: HdsCompositeNavigationSnapshot,\n config: HdsCompositeNavigationConfig,\n direction: 1 | -1\n): HdsCompositeItem | undefined {\n const { currentItem, items, groups } = snapshot;\n\n if (currentItem === undefined || currentItem.groupId === undefined) {\n return undefined;\n }\n\n const rowItems = getItemsInGroup(items, currentItem.groupId);\n const rowIndex = rowItems.findIndex((item) => item.id === currentItem.id);\n const shouldLoop = matchesAxis(config.loop, 'horizontal');\n const found = findEnabledItem(rowItems, rowIndex, direction, shouldLoop);\n\n if (found !== undefined) {\n return found;\n }\n\n if (matchesAxis(config.wrap, 'horizontal') === false) {\n return undefined;\n }\n\n const groupIndex = groups.findIndex(\n (group) => group.id === currentItem.groupId\n );\n const adjacentGroupIndex = groupIndex + direction;\n\n if (adjacentGroupIndex < 0 || adjacentGroupIndex >= groups.length) {\n return undefined;\n }\n\n const adjacentItems = getItemsInGroup(items, groups[adjacentGroupIndex]!.id);\n\n return direction === 1\n ? findFirstEnabled(adjacentItems)\n : findLastEnabled(adjacentItems);\n}\n\nfunction navigateColumn(\n snapshot: HdsCompositeNavigationSnapshot,\n config: HdsCompositeNavigationConfig,\n direction: 1 | -1\n): HdsCompositeItem | undefined {\n const { currentItem, items, groups } = snapshot;\n\n if (currentItem === undefined || currentItem.groupId === undefined) {\n return undefined;\n }\n\n const columnIndex = getItemsInGroup(items, currentItem.groupId).findIndex(\n (item) => item.id === currentItem.id\n );\n\n const currentGroupIndex = groups.findIndex(\n (group) => group.id === currentItem.groupId\n );\n\n let targetGroupIndex = currentGroupIndex + direction;\n\n if (matchesAxis(config.loop, 'vertical') === true) {\n const length = groups.length;\n targetGroupIndex = ((targetGroupIndex % length) + length) % length;\n\n for (let step = 0; step < length - 1; step++) {\n const targetItems = getItemsInGroup(items, groups[targetGroupIndex]!.id);\n const target = resolveColumnTarget(targetItems, columnIndex);\n\n if (target !== undefined) {\n return target;\n }\n\n targetGroupIndex =\n (((targetGroupIndex + direction) % length) + length) % length;\n }\n\n return undefined;\n } else if (targetGroupIndex < 0 || targetGroupIndex >= groups.length) {\n if (matchesAxis(config.wrap, 'vertical') === false) {\n return undefined;\n }\n\n let wrapGroupIndex = direction === 1 ? 0 : groups.length - 1;\n const nextColumnIndex = columnIndex + direction;\n\n if (nextColumnIndex < 0) {\n return undefined;\n }\n\n while (wrapGroupIndex >= 0 && wrapGroupIndex < groups.length) {\n const wrapItems = getItemsInGroup(items, groups[wrapGroupIndex]!.id);\n\n if (nextColumnIndex < wrapItems.length) {\n const target = resolveColumnTarget(wrapItems, nextColumnIndex);\n\n if (target !== undefined) {\n return target;\n }\n }\n\n wrapGroupIndex += direction;\n }\n\n return undefined;\n }\n\n while (targetGroupIndex >= 0 && targetGroupIndex < groups.length) {\n const targetItems = getItemsInGroup(items, groups[targetGroupIndex]!.id);\n const target = resolveColumnTarget(targetItems, columnIndex);\n\n if (target !== undefined) {\n return target;\n }\n\n targetGroupIndex += direction;\n }\n\n return undefined;\n}\n\nfunction navigateColumnEnd(\n snapshot: HdsCompositeNavigationSnapshot,\n direction: 1 | -1\n): HdsCompositeItem | undefined {\n const { currentItem, items, groups } = snapshot;\n\n if (currentItem === undefined || currentItem.groupId === undefined) {\n return undefined;\n }\n\n const columnIndex = getItemsInGroup(items, currentItem.groupId).findIndex(\n (item) => item.id === currentItem.id\n );\n\n let targetGroupIndex = direction === 1 ? groups.length - 1 : 0;\n\n while (targetGroupIndex >= 0 && targetGroupIndex < groups.length) {\n const targetItems = getItemsInGroup(items, groups[targetGroupIndex]!.id);\n const target = resolveColumnTarget(targetItems, columnIndex);\n\n if (target !== undefined) {\n return target;\n }\n\n targetGroupIndex -= direction;\n }\n\n return undefined;\n}\n\nfunction navigateRowEnd(\n snapshot: HdsCompositeNavigationSnapshot,\n direction: 1 | -1\n): HdsCompositeItem | undefined {\n const { currentItem, items } = snapshot;\n\n if (currentItem === undefined || currentItem.groupId === undefined) {\n return undefined;\n }\n\n const rowItems = getItemsInGroup(items, currentItem.groupId);\n\n return direction === 1\n ? findLastEnabled(rowItems)\n : findFirstEnabled(rowItems);\n}\n"],"names":["matchesAxis","value","axis","findEnabledItem","items","startIndex","direction","loop","length","undefined","index","step","item","disabled","findFirstEnabled","find","findLastEnabled","getItemsInGroup","groupId","filter","resolveColumnTarget","targetItems","columnIndex","target","handleKey","event","snapshot","config","key","ctrlKey","hasGroups","groups","orientation","handle2DKey","handle1DKey","navigateLinear","navigateInRow","navigateColumn","navigateRowEnd","navigateColumnEnd","currentIndex","currentItem","rowItems","rowIndex","findIndex","id","shouldLoop","found","wrap","groupIndex","group","adjacentGroupIndex","adjacentItems","currentGroupIndex","targetGroupIndex","wrapGroupIndex","nextColumnIndex","wrapItems"],"mappings":"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"}
1
+ {"version":3,"file":"navigation.js","sources":["../../../../src/components/hds/composite/navigation.ts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2021, 2026\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport type {\n HdsCompositeItem,\n HdsCompositeNavigationConfig,\n HdsCompositeNavigationSnapshot,\n HdsCompositeOrientations,\n} from './types.ts';\n\nfunction matchesAxis(\n value: boolean | HdsCompositeOrientations,\n axis: HdsCompositeOrientations\n): boolean {\n // `true` matches all axes, a string value matches only that axis\n return value === true || value === axis;\n}\n\nfunction findEnabledItem(\n items: HdsCompositeItem[],\n startIndex: number,\n direction: 1 | -1,\n loop: boolean\n): HdsCompositeItem | undefined {\n const length = items.length;\n\n if (length === 0) {\n return undefined;\n }\n\n let index = startIndex + direction;\n\n if (loop === true) {\n for (let step = 0; step < length; step++) {\n const item = items[((index % length) + length) % length]!;\n\n if (item.disabled === false) {\n return item;\n }\n\n index += direction;\n }\n } else {\n while (index >= 0 && index < length) {\n const item = items[index]!;\n\n if (item.disabled === false) {\n return item;\n }\n\n index += direction;\n }\n }\n\n return undefined;\n}\n\nexport function findFirstEnabled(\n items: HdsCompositeItem[]\n): HdsCompositeItem | undefined {\n return items.find((item) => item.disabled === false);\n}\n\nfunction findLastEnabled(\n items: HdsCompositeItem[]\n): HdsCompositeItem | undefined {\n for (let index = items.length - 1; index >= 0; index--) {\n if (items[index]!.disabled === false) {\n return items[index];\n }\n }\n\n return undefined;\n}\n\nfunction getItemsInGroup(\n items: HdsCompositeItem[],\n groupId: string\n): HdsCompositeItem[] {\n return items.filter((item) => item.groupId === groupId);\n}\n\nfunction resolveColumnTarget(\n targetItems: HdsCompositeItem[],\n columnIndex: number\n): HdsCompositeItem | undefined {\n if (columnIndex < 0 || columnIndex >= targetItems.length) {\n return findLastEnabled(targetItems);\n }\n\n const target = targetItems[columnIndex]!;\n\n if (target.disabled === false) {\n return target;\n }\n\n return (\n findEnabledItem(targetItems, columnIndex, 1, false) ??\n findEnabledItem(targetItems, columnIndex, -1, false)\n );\n}\n\nexport function handleKey(\n event: KeyboardEvent,\n snapshot: HdsCompositeNavigationSnapshot,\n config: HdsCompositeNavigationConfig\n): HdsCompositeItem | undefined {\n const { key, ctrlKey } = event;\n const hasGroups = snapshot.groups.length > 0;\n\n if (hasGroups === true && config.orientation === undefined) {\n return handle2DKey(key, ctrlKey, snapshot, config);\n }\n\n return handle1DKey(key, snapshot, config);\n}\n\nfunction handle1DKey(\n key: string,\n snapshot: HdsCompositeNavigationSnapshot,\n config: HdsCompositeNavigationConfig\n): HdsCompositeItem | undefined {\n const { orientation } = config;\n\n switch (key) {\n case 'ArrowRight':\n if (orientation === 'vertical') {\n return undefined;\n }\n\n return navigateLinear(snapshot, config, 'horizontal', 1);\n\n case 'ArrowLeft':\n if (orientation === 'vertical') {\n return undefined;\n }\n\n return navigateLinear(snapshot, config, 'horizontal', -1);\n\n case 'ArrowDown':\n if (orientation === 'horizontal') {\n return undefined;\n }\n\n return navigateLinear(snapshot, config, 'vertical', 1);\n\n case 'ArrowUp':\n if (orientation === 'horizontal') {\n return undefined;\n }\n\n return navigateLinear(snapshot, config, 'vertical', -1);\n\n case 'Home':\n return findFirstEnabled(snapshot.items);\n\n case 'End':\n return findLastEnabled(snapshot.items);\n\n default:\n return undefined;\n }\n}\n\nfunction handle2DKey(\n key: string,\n ctrlKey: boolean,\n snapshot: HdsCompositeNavigationSnapshot,\n config: HdsCompositeNavigationConfig\n): HdsCompositeItem | undefined {\n switch (key) {\n case 'ArrowRight':\n return navigateInRow(snapshot, config, 1);\n\n case 'ArrowLeft':\n return navigateInRow(snapshot, config, -1);\n\n case 'ArrowDown':\n return navigateColumn(snapshot, config, 1);\n\n case 'ArrowUp':\n return navigateColumn(snapshot, config, -1);\n\n case 'Home':\n if (ctrlKey === true) {\n return findFirstEnabled(snapshot.items);\n }\n\n return navigateRowEnd(snapshot, -1);\n\n case 'End':\n if (ctrlKey === true) {\n return findLastEnabled(snapshot.items);\n }\n\n return navigateRowEnd(snapshot, 1);\n\n case 'PageDown':\n return navigateColumnEnd(snapshot, 1);\n\n case 'PageUp':\n return navigateColumnEnd(snapshot, -1);\n\n default:\n return undefined;\n }\n}\n\nfunction navigateLinear(\n snapshot: HdsCompositeNavigationSnapshot,\n config: HdsCompositeNavigationConfig,\n axis: HdsCompositeOrientations,\n direction: 1 | -1\n): HdsCompositeItem | undefined {\n const { items, currentIndex } = snapshot;\n\n if (currentIndex === -1) {\n return direction === 1 ? findFirstEnabled(items) : findLastEnabled(items);\n }\n\n return findEnabledItem(\n items,\n currentIndex,\n direction,\n matchesAxis(config.loop, axis)\n );\n}\n\nfunction navigateInRow(\n snapshot: HdsCompositeNavigationSnapshot,\n config: HdsCompositeNavigationConfig,\n direction: 1 | -1\n): HdsCompositeItem | undefined {\n const { currentItem, items, groups } = snapshot;\n\n if (currentItem === undefined || currentItem.groupId === undefined) {\n return undefined;\n }\n\n const rowItems = getItemsInGroup(items, currentItem.groupId);\n const rowIndex = rowItems.findIndex((item) => item.id === currentItem.id);\n const shouldLoop = matchesAxis(config.loop, 'horizontal');\n const found = findEnabledItem(rowItems, rowIndex, direction, shouldLoop);\n\n if (found !== undefined) {\n return found;\n }\n\n if (matchesAxis(config.wrap, 'horizontal') === false) {\n return undefined;\n }\n\n const groupIndex = groups.findIndex(\n (group) => group.id === currentItem.groupId\n );\n const adjacentGroupIndex = groupIndex + direction;\n\n if (adjacentGroupIndex < 0 || adjacentGroupIndex >= groups.length) {\n return undefined;\n }\n\n const adjacentItems = getItemsInGroup(items, groups[adjacentGroupIndex]!.id);\n\n return direction === 1\n ? findFirstEnabled(adjacentItems)\n : findLastEnabled(adjacentItems);\n}\n\nfunction navigateColumn(\n snapshot: HdsCompositeNavigationSnapshot,\n config: HdsCompositeNavigationConfig,\n direction: 1 | -1\n): HdsCompositeItem | undefined {\n const { currentItem, items, groups } = snapshot;\n\n if (currentItem === undefined || currentItem.groupId === undefined) {\n return undefined;\n }\n\n const columnIndex = getItemsInGroup(items, currentItem.groupId).findIndex(\n (item) => item.id === currentItem.id\n );\n\n const currentGroupIndex = groups.findIndex(\n (group) => group.id === currentItem.groupId\n );\n\n let targetGroupIndex = currentGroupIndex + direction;\n\n if (matchesAxis(config.loop, 'vertical') === true) {\n const length = groups.length;\n targetGroupIndex = ((targetGroupIndex % length) + length) % length;\n\n for (let step = 0; step < length - 1; step++) {\n const targetItems = getItemsInGroup(items, groups[targetGroupIndex]!.id);\n const target = resolveColumnTarget(targetItems, columnIndex);\n\n if (target !== undefined) {\n return target;\n }\n\n targetGroupIndex =\n (((targetGroupIndex + direction) % length) + length) % length;\n }\n\n return undefined;\n } else if (targetGroupIndex < 0 || targetGroupIndex >= groups.length) {\n if (matchesAxis(config.wrap, 'vertical') === false) {\n return undefined;\n }\n\n let wrapGroupIndex = direction === 1 ? 0 : groups.length - 1;\n const nextColumnIndex = columnIndex + direction;\n\n if (nextColumnIndex < 0) {\n return undefined;\n }\n\n while (wrapGroupIndex >= 0 && wrapGroupIndex < groups.length) {\n const wrapItems = getItemsInGroup(items, groups[wrapGroupIndex]!.id);\n\n if (nextColumnIndex < wrapItems.length) {\n const target = resolveColumnTarget(wrapItems, nextColumnIndex);\n\n if (target !== undefined) {\n return target;\n }\n }\n\n wrapGroupIndex += direction;\n }\n\n return undefined;\n }\n\n while (targetGroupIndex >= 0 && targetGroupIndex < groups.length) {\n const targetItems = getItemsInGroup(items, groups[targetGroupIndex]!.id);\n const target = resolveColumnTarget(targetItems, columnIndex);\n\n if (target !== undefined) {\n return target;\n }\n\n targetGroupIndex += direction;\n }\n\n return undefined;\n}\n\nfunction navigateColumnEnd(\n snapshot: HdsCompositeNavigationSnapshot,\n direction: 1 | -1\n): HdsCompositeItem | undefined {\n const { currentItem, items, groups } = snapshot;\n\n if (currentItem === undefined || currentItem.groupId === undefined) {\n return undefined;\n }\n\n const columnIndex = getItemsInGroup(items, currentItem.groupId).findIndex(\n (item) => item.id === currentItem.id\n );\n\n let targetGroupIndex = direction === 1 ? groups.length - 1 : 0;\n\n while (targetGroupIndex >= 0 && targetGroupIndex < groups.length) {\n const targetItems = getItemsInGroup(items, groups[targetGroupIndex]!.id);\n const target = resolveColumnTarget(targetItems, columnIndex);\n\n if (target !== undefined) {\n return target;\n }\n\n targetGroupIndex -= direction;\n }\n\n return undefined;\n}\n\nfunction navigateRowEnd(\n snapshot: HdsCompositeNavigationSnapshot,\n direction: 1 | -1\n): HdsCompositeItem | undefined {\n const { currentItem, items } = snapshot;\n\n if (currentItem === undefined || currentItem.groupId === undefined) {\n return undefined;\n }\n\n const rowItems = getItemsInGroup(items, currentItem.groupId);\n\n return direction === 1\n ? findLastEnabled(rowItems)\n : findFirstEnabled(rowItems);\n}\n"],"names":["matchesAxis","value","axis","findEnabledItem","items","startIndex","direction","loop","length","undefined","index","step","item","disabled","findFirstEnabled","find","findLastEnabled","getItemsInGroup","groupId","filter","resolveColumnTarget","targetItems","columnIndex","target","handleKey","event","snapshot","config","key","ctrlKey","hasGroups","groups","orientation","handle2DKey","handle1DKey","navigateLinear","navigateInRow","navigateColumn","navigateRowEnd","navigateColumnEnd","currentIndex","currentItem","rowItems","rowIndex","findIndex","id","shouldLoop","found","wrap","groupIndex","group","adjacentGroupIndex","adjacentItems","currentGroupIndex","targetGroupIndex","wrapGroupIndex","nextColumnIndex","wrapItems"],"mappings":"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"}
@@ -10,7 +10,7 @@ import { setComponentTemplate } from '@ember/component';
10
10
  import { g, i } from 'decorator-transforms/runtime';
11
11
 
12
12
  /**
13
- * Copyright IBM Corp. 2021, 2025
13
+ * Copyright IBM Corp. 2021, 2026
14
14
  * SPDX-License-Identifier: MPL-2.0
15
15
  */
16
16
  const DEFAULT_SIZE = HdsCopyButtonSizeValues.Medium;
@@ -59,9 +59,13 @@ class HdsCopyButton extends Component {
59
59
  }
60
60
  get ariaMessageText() {
61
61
  if (this._status === 'success') {
62
- return this.args.ariaMessageText ?? this.hdsIntl.t('hds.components.copy-button.aria-message-text', {
62
+ return this.args.ariaMessageText ?? this.hdsIntl.t('hds.components.copy-button.aria-message-text.success', {
63
63
  default: 'Copied to clipboard'
64
64
  });
65
+ } else if (this._status === 'error') {
66
+ return this.hdsIntl.t('hds.components.copy-button.aria-message-text.error', {
67
+ default: 'Failed to copy to clipboard'
68
+ });
65
69
  } else {
66
70
  return '';
67
71
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../../src/components/hds/copy/button/index.gts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2021, 2025\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { assert } from '@ember/debug';\nimport { tracked } from '@glimmer/tracking';\nimport { service } from '@ember/service';\n\nimport { HdsCopyButtonSizeValues } from './types.ts';\nimport HdsButton from '../../button/index.gts';\nimport hdsClipboard from '../../../../modifiers/hds-clipboard.ts';\n\nimport type { HdsCopyButtonSizes } from './types.ts';\nimport type { HdsButtonSignature } from '../../button/index.gts';\nimport type { HdsClipboardModifierSignature } from '../../../../modifiers/hds-clipboard.ts';\nimport type { HdsIconSignature } from '../../icon/index.gts';\nimport type HdsIntlService from '../../../../services/hds-intl.ts';\n\nexport const DEFAULT_SIZE = HdsCopyButtonSizeValues.Medium;\nexport const SIZES: HdsCopyButtonSizes[] = Object.values(\n HdsCopyButtonSizeValues\n);\nexport const DEFAULT_ICON = 'clipboard-copy';\nexport const SUCCESS_ICON = 'clipboard-checked';\nexport const ERROR_ICON = 'clipboard-x';\nexport const DEFAULT_STATUS = 'idle';\n\nexport interface HdsCopyButtonSignature {\n Args: HdsButtonSignature['Args'] & {\n size?: HdsCopyButtonSizes;\n textToCopy?: HdsClipboardModifierSignature['Args']['Named']['text'];\n targetToCopy?: HdsClipboardModifierSignature['Args']['Named']['target'];\n onSuccess?: HdsClipboardModifierSignature['Args']['Named']['onSuccess'];\n onError?: HdsClipboardModifierSignature['Args']['Named']['onError'];\n ariaMessageText?: string;\n };\n Element: HdsButtonSignature['Element'];\n}\n\nexport default class HdsCopyButton extends Component<HdsCopyButtonSignature> {\n @service declare readonly hdsIntl: HdsIntlService;\n\n @tracked private _status = DEFAULT_STATUS;\n @tracked private _timer: ReturnType<typeof setTimeout> | undefined;\n\n get icon(): HdsIconSignature['Args']['name'] {\n let icon: HdsIconSignature['Args']['name'] = DEFAULT_ICON;\n if (this._status === 'success') {\n icon = SUCCESS_ICON;\n } else if (this._status === 'error') {\n icon = ERROR_ICON;\n }\n return icon;\n }\n\n get size(): HdsCopyButtonSizes {\n const { size = DEFAULT_SIZE } = this.args;\n\n assert(\n `@size for \"Hds::Copy::Button\" must be one of the following: ${SIZES.join(\n ', '\n )}; received: ${size}`,\n SIZES.includes(size)\n );\n\n return size;\n }\n\n get classNames(): string {\n const classes = ['hds-copy-button'];\n\n // add a class based on the @size argument\n classes.push(`hds-button--size-${this.size}`);\n\n classes.push(`hds-copy-button--status-${this._status}`);\n\n return classes.join(' ');\n }\n\n get ariaMessageText(): string {\n if (this._status === 'success') {\n return (\n this.args.ariaMessageText ??\n this.hdsIntl.t('hds.components.copy-button.aria-message-text', {\n default: 'Copied to clipboard',\n })\n );\n } else {\n return '';\n }\n }\n\n onSuccess = (\n args: HdsClipboardModifierSignature['Args']['Named']['onSuccess']\n ): void => {\n this._status = 'success';\n this.resetStatusDelayed();\n\n const { onSuccess } = this.args;\n\n if (typeof onSuccess === 'function') {\n onSuccess(args);\n }\n };\n\n onError = (\n args: HdsClipboardModifierSignature['Args']['Named']['onError']\n ): void => {\n this._status = 'error';\n this.resetStatusDelayed();\n\n const { onError } = this.args;\n\n if (typeof onError === 'function') {\n onError(args);\n }\n };\n\n resetStatusDelayed = (): void => {\n clearTimeout(this._timer);\n // make it fade back to the default state\n this._timer = setTimeout((): void => {\n this._status = DEFAULT_STATUS;\n }, 1500);\n };\n\n <template>\n <HdsButton\n class={{this.classNames}}\n @size={{this.size}}\n @isFullWidth={{@isFullWidth}}\n @text={{@text}}\n @icon={{this.icon}}\n @isIconOnly={{@isIconOnly}}\n @color=\"secondary\"\n @iconPosition=\"trailing\"\n {{hdsClipboard\n text=@textToCopy\n target=@targetToCopy\n onSuccess=this.onSuccess\n onError=this.onError\n }}\n ...attributes\n />\n <span class=\"sr-only\" aria-live=\"polite\">{{this.ariaMessageText}}</span>\n </template>\n}\n"],"names":["DEFAULT_SIZE","HdsCopyButtonSizeValues","Medium","SIZES","Object","values","DEFAULT_ICON","SUCCESS_ICON","ERROR_ICON","DEFAULT_STATUS","HdsCopyButton","Component","g","prototype","service","i","tracked","icon","_status","size","args","assert","join","includes","classNames","classes","push","ariaMessageText","hdsIntl","t","default","onSuccess","resetStatusDelayed","onError","clearTimeout","_timer","setTimeout","setComponentTemplate","precompileTemplate","strictMode","scope","HdsButton","hdsClipboard"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../../src/components/hds/copy/button/index.gts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2021, 2026\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { assert } from '@ember/debug';\nimport { tracked } from '@glimmer/tracking';\nimport { service } from '@ember/service';\n\nimport { HdsCopyButtonSizeValues } from './types.ts';\nimport HdsButton from '../../button/index.gts';\nimport hdsClipboard from '../../../../modifiers/hds-clipboard.ts';\n\nimport type { HdsCopyButtonSizes } from './types.ts';\nimport type { HdsButtonSignature } from '../../button/index.gts';\nimport type { HdsClipboardModifierSignature } from '../../../../modifiers/hds-clipboard.ts';\nimport type { HdsIconSignature } from '../../icon/index.gts';\nimport type HdsIntlService from '../../../../services/hds-intl.ts';\n\nexport const DEFAULT_SIZE = HdsCopyButtonSizeValues.Medium;\nexport const SIZES: HdsCopyButtonSizes[] = Object.values(\n HdsCopyButtonSizeValues\n);\nexport const DEFAULT_ICON = 'clipboard-copy';\nexport const SUCCESS_ICON = 'clipboard-checked';\nexport const ERROR_ICON = 'clipboard-x';\nexport const DEFAULT_STATUS = 'idle';\n\nexport interface HdsCopyButtonSignature {\n Args: HdsButtonSignature['Args'] & {\n size?: HdsCopyButtonSizes;\n textToCopy?: HdsClipboardModifierSignature['Args']['Named']['text'];\n targetToCopy?: HdsClipboardModifierSignature['Args']['Named']['target'];\n onSuccess?: HdsClipboardModifierSignature['Args']['Named']['onSuccess'];\n onError?: HdsClipboardModifierSignature['Args']['Named']['onError'];\n ariaMessageText?: string;\n };\n Element: HdsButtonSignature['Element'];\n}\n\nexport default class HdsCopyButton extends Component<HdsCopyButtonSignature> {\n @service declare readonly hdsIntl: HdsIntlService;\n\n @tracked private _status = DEFAULT_STATUS;\n @tracked private _timer: ReturnType<typeof setTimeout> | undefined;\n\n get icon(): HdsIconSignature['Args']['name'] {\n let icon: HdsIconSignature['Args']['name'] = DEFAULT_ICON;\n if (this._status === 'success') {\n icon = SUCCESS_ICON;\n } else if (this._status === 'error') {\n icon = ERROR_ICON;\n }\n return icon;\n }\n\n get size(): HdsCopyButtonSizes {\n const { size = DEFAULT_SIZE } = this.args;\n\n assert(\n `@size for \"Hds::Copy::Button\" must be one of the following: ${SIZES.join(\n ', '\n )}; received: ${size}`,\n SIZES.includes(size)\n );\n\n return size;\n }\n\n get classNames(): string {\n const classes = ['hds-copy-button'];\n\n // add a class based on the @size argument\n classes.push(`hds-button--size-${this.size}`);\n\n classes.push(`hds-copy-button--status-${this._status}`);\n\n return classes.join(' ');\n }\n\n get ariaMessageText(): string {\n if (this._status === 'success') {\n return (\n this.args.ariaMessageText ??\n this.hdsIntl.t('hds.components.copy-button.aria-message-text.success', {\n default: 'Copied to clipboard',\n })\n );\n } else if (this._status === 'error') {\n return this.hdsIntl.t(\n 'hds.components.copy-button.aria-message-text.error',\n {\n default: 'Failed to copy to clipboard',\n }\n );\n } else {\n return '';\n }\n }\n\n onSuccess = (\n args: HdsClipboardModifierSignature['Args']['Named']['onSuccess']\n ): void => {\n this._status = 'success';\n this.resetStatusDelayed();\n\n const { onSuccess } = this.args;\n\n if (typeof onSuccess === 'function') {\n onSuccess(args);\n }\n };\n\n onError = (\n args: HdsClipboardModifierSignature['Args']['Named']['onError']\n ): void => {\n this._status = 'error';\n this.resetStatusDelayed();\n\n const { onError } = this.args;\n\n if (typeof onError === 'function') {\n onError(args);\n }\n };\n\n resetStatusDelayed = (): void => {\n clearTimeout(this._timer);\n // make it fade back to the default state\n this._timer = setTimeout((): void => {\n this._status = DEFAULT_STATUS;\n }, 1500);\n };\n\n <template>\n <HdsButton\n class={{this.classNames}}\n @size={{this.size}}\n @isFullWidth={{@isFullWidth}}\n @text={{@text}}\n @icon={{this.icon}}\n @isIconOnly={{@isIconOnly}}\n @color=\"secondary\"\n @iconPosition=\"trailing\"\n {{hdsClipboard\n text=@textToCopy\n target=@targetToCopy\n onSuccess=this.onSuccess\n onError=this.onError\n }}\n ...attributes\n />\n <span class=\"sr-only\" aria-live=\"polite\">{{this.ariaMessageText}}</span>\n </template>\n}\n"],"names":["DEFAULT_SIZE","HdsCopyButtonSizeValues","Medium","SIZES","Object","values","DEFAULT_ICON","SUCCESS_ICON","ERROR_ICON","DEFAULT_STATUS","HdsCopyButton","Component","g","prototype","service","i","tracked","icon","_status","size","args","assert","join","includes","classNames","classes","push","ariaMessageText","hdsIntl","t","default","onSuccess","resetStatusDelayed","onError","clearTimeout","_timer","setTimeout","setComponentTemplate","precompileTemplate","strictMode","scope","HdsButton","hdsClipboard"],"mappings":"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"}
@@ -2,6 +2,7 @@ import Component from '@glimmer/component';
2
2
  import { assert } from '@ember/debug';
3
3
  import { tracked } from '@glimmer/tracking';
4
4
  import { concat } from '@ember/helper';
5
+ import { service } from '@ember/service';
5
6
  import { HdsCopySnippetColorValues } from './types.js';
6
7
  import HdsTextCode from '../../text/code.js';
7
8
  import HdsIcon from '../../icon/index.js';
@@ -12,7 +13,7 @@ import { setComponentTemplate } from '@ember/component';
12
13
  import { g, i } from 'decorator-transforms/runtime';
13
14
 
14
15
  /**
15
- * Copyright IBM Corp. 2021, 2025
16
+ * Copyright IBM Corp. 2021, 2026
16
17
  * SPDX-License-Identifier: MPL-2.0
17
18
  */
18
19
  const DEFAULT_COLOR = HdsCopySnippetColorValues.Primary;
@@ -22,6 +23,10 @@ const SUCCESS_ICON = 'clipboard-checked';
22
23
  const ERROR_ICON = 'clipboard-x';
23
24
  const DEFAULT_STATUS = 'idle';
24
25
  class HdsCopySnippet extends Component {
26
+ static {
27
+ g(this.prototype, "hdsIntl", [service]);
28
+ }
29
+ #hdsIntl = (i(this, "hdsIntl"), void 0);
25
30
  static {
26
31
  g(this.prototype, "_status", [tracked], function () {
27
32
  return DEFAULT_STATUS;
@@ -80,6 +85,19 @@ class HdsCopySnippet extends Component {
80
85
  }
81
86
  return classes.join(' ');
82
87
  }
88
+ get ariaMessageText() {
89
+ if (this._status === 'success') {
90
+ return this.args.ariaMessageText ?? this.hdsIntl.t('hds.components.copy-snippet.aria-message-text.success', {
91
+ default: 'Copied to clipboard'
92
+ });
93
+ } else if (this._status === 'error') {
94
+ return this.hdsIntl.t('hds.components.copy-snippet.aria-message-text.error', {
95
+ default: 'Failed to copy to clipboard'
96
+ });
97
+ } else {
98
+ return '';
99
+ }
100
+ }
83
101
  onSuccess = args => {
84
102
  this._status = 'success';
85
103
  this.resetStatusDelayed();
@@ -108,7 +126,7 @@ class HdsCopySnippet extends Component {
108
126
  }, 1500);
109
127
  };
110
128
  static {
111
- setComponentTemplate(precompileTemplate("<button type=\"button\" class={{this.classNames}} {{hdsClipboard text=@textToCopy onSuccess=this.onSuccess onError=this.onError}} aria-label={{hdsT \"hds.components.copy-snippet.button.aria-label\" textToCopy=@textToCopy default=(concat \"copy \" @textToCopy)}} ...attributes>\n <HdsTextCode class=\"hds-copy-snippet__text\" @tag=\"span\" @size=\"100\">\n {{this.textToShow}}\n </HdsTextCode>\n <HdsIcon @name={{this.icon}} class=\"hds-copy-snippet__icon\" />\n</button>", {
129
+ setComponentTemplate(precompileTemplate("<button type=\"button\" class={{this.classNames}} {{hdsClipboard text=@textToCopy onSuccess=this.onSuccess onError=this.onError}} aria-label={{hdsT \"hds.components.copy-snippet.button.aria-label\" textToCopy=@textToCopy default=(concat \"copy \" @textToCopy)}} ...attributes>\n <HdsTextCode class=\"hds-copy-snippet__text\" @tag=\"span\" @size=\"100\">\n {{this.textToShow}}\n </HdsTextCode>\n <HdsIcon @name={{this.icon}} class=\"hds-copy-snippet__icon\" />\n</button>\n<span class=\"sr-only\" aria-live=\"polite\">{{this.ariaMessageText}}</span>", {
112
130
  strictMode: true,
113
131
  scope: () => ({
114
132
  hdsT: HdsTHelper,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../../src/components/hds/copy/snippet/index.gts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2021, 2025\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { assert } from '@ember/debug';\nimport { tracked } from '@glimmer/tracking';\nimport { concat } from '@ember/helper';\n\nimport { HdsCopySnippetColorValues } from './types.ts';\nimport HdsTextCode from '../../text/code.gts';\nimport HdsIcon from '../../icon/index.gts';\nimport hdsClipboard from '../../../../modifiers/hds-clipboard.ts';\nimport hdsT from '../../../../helpers/hds-t.ts';\n\nimport type { HdsCopySnippetColors } from './types.ts';\nimport type { HdsClipboardModifierSignature } from '../../../../modifiers/hds-clipboard.ts';\nimport type { HdsIconSignature } from '../../icon/index.gts';\n\nexport const DEFAULT_COLOR = HdsCopySnippetColorValues.Primary;\nexport const COLORS: HdsCopySnippetColors[] = Object.values(\n HdsCopySnippetColorValues\n);\n\nexport const DEFAULT_ICON = 'clipboard-copy';\nexport const SUCCESS_ICON = 'clipboard-checked';\nexport const ERROR_ICON = 'clipboard-x';\nexport const DEFAULT_STATUS = 'idle';\n\nexport interface HdsCopySnippetSignature {\n Args: {\n color?: HdsCopySnippetColors;\n isFullWidth?: boolean;\n textToCopy: HdsClipboardModifierSignature['Args']['Named']['text'];\n isTruncated?: boolean;\n onSuccess?: HdsClipboardModifierSignature['Args']['Named']['onSuccess'];\n onError?: HdsClipboardModifierSignature['Args']['Named']['onError'];\n };\n Element: HTMLButtonElement;\n}\n\nexport default class HdsCopySnippet extends Component<HdsCopySnippetSignature> {\n @tracked private _status = DEFAULT_STATUS;\n @tracked private _timer: ReturnType<typeof setTimeout> | undefined;\n\n get textToShow(): string {\n const { textToCopy = '' } = this.args;\n\n if (typeof textToCopy === 'string') {\n return textToCopy;\n } else {\n return textToCopy.toString();\n }\n }\n\n get icon(): HdsIconSignature['Args']['name'] {\n let icon: HdsIconSignature['Args']['name'] = DEFAULT_ICON;\n if (this._status === 'success') {\n icon = SUCCESS_ICON;\n } else if (this._status === 'error') {\n icon = ERROR_ICON;\n }\n return icon;\n }\n\n get color(): HdsCopySnippetColors {\n const { color = DEFAULT_COLOR } = this.args;\n\n assert(\n `@color for \"Hds::Copy::Snippet\" must be one of the following: ${COLORS.join(\n ', '\n )}; received: ${color}`,\n COLORS.includes(color)\n );\n\n return color;\n }\n\n get isFullWidth(): boolean {\n return this.args.isFullWidth ?? false;\n }\n\n get isTruncated(): boolean {\n return this.args.isTruncated ?? false;\n }\n\n get classNames(): string {\n const classes = ['hds-copy-snippet'];\n\n // add a class based on the @color argument\n classes.push(`hds-copy-snippet--color-${this.color}`);\n\n // add a class based on the tracked status (idle/success/error)\n classes.push(`hds-copy-snippet--status-${this._status}`);\n\n // add a class based on the @isTruncated argument\n if (this.isTruncated) {\n classes.push('hds-copy-snippet--is-truncated');\n }\n\n // add a class based on the @isFullWidth argument\n if (this.isFullWidth) {\n classes.push('hds-copy-snippet--width-full');\n }\n\n return classes.join(' ');\n }\n\n onSuccess = (\n args: HdsClipboardModifierSignature['Args']['Named']['onSuccess']\n ): void => {\n this._status = 'success';\n this.resetStatusDelayed();\n\n const { onSuccess } = this.args;\n\n if (typeof onSuccess === 'function') {\n onSuccess(args);\n }\n };\n\n onError = (\n args: HdsClipboardModifierSignature['Args']['Named']['onError']\n ): void => {\n this._status = 'error';\n this.resetStatusDelayed();\n\n const { onError } = this.args;\n\n if (typeof onError === 'function') {\n onError(args);\n }\n };\n\n resetStatusDelayed = (): void => {\n clearTimeout(this._timer);\n // make it fade back to the default state\n this._timer = setTimeout((): void => {\n this._status = DEFAULT_STATUS;\n }, 1500);\n };\n\n <template>\n <button\n type=\"button\"\n class={{this.classNames}}\n {{hdsClipboard\n text=@textToCopy\n onSuccess=this.onSuccess\n onError=this.onError\n }}\n aria-label={{hdsT\n \"hds.components.copy-snippet.button.aria-label\"\n textToCopy=@textToCopy\n default=(concat \"copy \" @textToCopy)\n }}\n ...attributes\n >\n <HdsTextCode class=\"hds-copy-snippet__text\" @tag=\"span\" @size=\"100\">\n {{this.textToShow}}\n </HdsTextCode>\n <HdsIcon @name={{this.icon}} class=\"hds-copy-snippet__icon\" />\n </button>\n </template>\n}\n"],"names":["DEFAULT_COLOR","HdsCopySnippetColorValues","Primary","COLORS","Object","values","DEFAULT_ICON","SUCCESS_ICON","ERROR_ICON","DEFAULT_STATUS","HdsCopySnippet","Component","g","prototype","tracked","i","textToShow","textToCopy","args","toString","icon","_status","color","assert","join","includes","isFullWidth","isTruncated","classNames","classes","push","onSuccess","resetStatusDelayed","onError","clearTimeout","_timer","setTimeout","setComponentTemplate","precompileTemplate","strictMode","scope","hdsT","concat","hdsClipboard","HdsTextCode","HdsIcon"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../../src/components/hds/copy/snippet/index.gts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2021, 2026\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { assert } from '@ember/debug';\nimport { tracked } from '@glimmer/tracking';\nimport { concat } from '@ember/helper';\nimport { service } from '@ember/service';\n\nimport { HdsCopySnippetColorValues } from './types.ts';\nimport HdsTextCode from '../../text/code.gts';\nimport HdsIcon from '../../icon/index.gts';\nimport hdsClipboard from '../../../../modifiers/hds-clipboard.ts';\nimport hdsT from '../../../../helpers/hds-t.ts';\n\nimport type { HdsCopySnippetColors } from './types.ts';\nimport type { HdsClipboardModifierSignature } from '../../../../modifiers/hds-clipboard.ts';\nimport type { HdsIconSignature } from '../../icon/index.gts';\nimport type HdsIntlService from '../../../../services/hds-intl';\n\nexport const DEFAULT_COLOR = HdsCopySnippetColorValues.Primary;\nexport const COLORS: HdsCopySnippetColors[] = Object.values(\n HdsCopySnippetColorValues\n);\n\nexport const DEFAULT_ICON = 'clipboard-copy';\nexport const SUCCESS_ICON = 'clipboard-checked';\nexport const ERROR_ICON = 'clipboard-x';\nexport const DEFAULT_STATUS = 'idle';\n\nexport interface HdsCopySnippetSignature {\n Args: {\n color?: HdsCopySnippetColors;\n isFullWidth?: boolean;\n textToCopy: HdsClipboardModifierSignature['Args']['Named']['text'];\n isTruncated?: boolean;\n onSuccess?: HdsClipboardModifierSignature['Args']['Named']['onSuccess'];\n onError?: HdsClipboardModifierSignature['Args']['Named']['onError'];\n ariaMessageText?: string;\n };\n Element: HTMLButtonElement;\n}\n\nexport default class HdsCopySnippet extends Component<HdsCopySnippetSignature> {\n @service declare readonly hdsIntl: HdsIntlService;\n\n @tracked private _status = DEFAULT_STATUS;\n @tracked private _timer: ReturnType<typeof setTimeout> | undefined;\n\n get textToShow(): string {\n const { textToCopy = '' } = this.args;\n\n if (typeof textToCopy === 'string') {\n return textToCopy;\n } else {\n return textToCopy.toString();\n }\n }\n\n get icon(): HdsIconSignature['Args']['name'] {\n let icon: HdsIconSignature['Args']['name'] = DEFAULT_ICON;\n if (this._status === 'success') {\n icon = SUCCESS_ICON;\n } else if (this._status === 'error') {\n icon = ERROR_ICON;\n }\n return icon;\n }\n\n get color(): HdsCopySnippetColors {\n const { color = DEFAULT_COLOR } = this.args;\n\n assert(\n `@color for \"Hds::Copy::Snippet\" must be one of the following: ${COLORS.join(\n ', '\n )}; received: ${color}`,\n COLORS.includes(color)\n );\n\n return color;\n }\n\n get isFullWidth(): boolean {\n return this.args.isFullWidth ?? false;\n }\n\n get isTruncated(): boolean {\n return this.args.isTruncated ?? false;\n }\n\n get classNames(): string {\n const classes = ['hds-copy-snippet'];\n\n // add a class based on the @color argument\n classes.push(`hds-copy-snippet--color-${this.color}`);\n\n // add a class based on the tracked status (idle/success/error)\n classes.push(`hds-copy-snippet--status-${this._status}`);\n\n // add a class based on the @isTruncated argument\n if (this.isTruncated) {\n classes.push('hds-copy-snippet--is-truncated');\n }\n\n // add a class based on the @isFullWidth argument\n if (this.isFullWidth) {\n classes.push('hds-copy-snippet--width-full');\n }\n\n return classes.join(' ');\n }\n\n get ariaMessageText(): string {\n if (this._status === 'success') {\n return (\n this.args.ariaMessageText ??\n this.hdsIntl.t(\n 'hds.components.copy-snippet.aria-message-text.success',\n {\n default: 'Copied to clipboard',\n }\n )\n );\n } else if (this._status === 'error') {\n return this.hdsIntl.t(\n 'hds.components.copy-snippet.aria-message-text.error',\n {\n default: 'Failed to copy to clipboard',\n }\n );\n } else {\n return '';\n }\n }\n\n onSuccess = (\n args: HdsClipboardModifierSignature['Args']['Named']['onSuccess']\n ): void => {\n this._status = 'success';\n this.resetStatusDelayed();\n\n const { onSuccess } = this.args;\n\n if (typeof onSuccess === 'function') {\n onSuccess(args);\n }\n };\n\n onError = (\n args: HdsClipboardModifierSignature['Args']['Named']['onError']\n ): void => {\n this._status = 'error';\n this.resetStatusDelayed();\n\n const { onError } = this.args;\n\n if (typeof onError === 'function') {\n onError(args);\n }\n };\n\n resetStatusDelayed = (): void => {\n clearTimeout(this._timer);\n // make it fade back to the default state\n this._timer = setTimeout((): void => {\n this._status = DEFAULT_STATUS;\n }, 1500);\n };\n\n <template>\n <button\n type=\"button\"\n class={{this.classNames}}\n {{hdsClipboard\n text=@textToCopy\n onSuccess=this.onSuccess\n onError=this.onError\n }}\n aria-label={{hdsT\n \"hds.components.copy-snippet.button.aria-label\"\n textToCopy=@textToCopy\n default=(concat \"copy \" @textToCopy)\n }}\n ...attributes\n >\n <HdsTextCode class=\"hds-copy-snippet__text\" @tag=\"span\" @size=\"100\">\n {{this.textToShow}}\n </HdsTextCode>\n <HdsIcon @name={{this.icon}} class=\"hds-copy-snippet__icon\" />\n </button>\n <span class=\"sr-only\" aria-live=\"polite\">{{this.ariaMessageText}}</span>\n </template>\n}\n"],"names":["DEFAULT_COLOR","HdsCopySnippetColorValues","Primary","COLORS","Object","values","DEFAULT_ICON","SUCCESS_ICON","ERROR_ICON","DEFAULT_STATUS","HdsCopySnippet","Component","g","prototype","service","i","tracked","textToShow","textToCopy","args","toString","icon","_status","color","assert","join","includes","isFullWidth","isTruncated","classNames","classes","push","ariaMessageText","hdsIntl","t","default","onSuccess","resetStatusDelayed","onError","clearTimeout","_timer","setTimeout","setComponentTemplate","precompileTemplate","strictMode","scope","hdsT","concat","hdsClipboard","HdsTextCode","HdsIcon"],"mappings":"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"}
@@ -3,7 +3,7 @@ import { setComponentTemplate } from '@ember/component';
3
3
  import templateOnly from '@ember/component/template-only';
4
4
 
5
5
  /**
6
- * Copyright IBM Corp. 2021, 2025
6
+ * Copyright IBM Corp. 2021, 2026
7
7
  * SPDX-License-Identifier: MPL-2.0
8
8
  */
9
9
  const HdsDialogPrimitiveBody = setComponentTemplate(precompileTemplate("<div class=\"hds-dialog-primitive__body {{@contextualClass}}\" tabindex=\"0\" ...attributes>\n {{yield}}\n</div>", {
@@ -1 +1 @@
1
- {"version":3,"file":"body.js","sources":["../../../../src/components/hds/dialog-primitive/body.gts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2021, 2025\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport type { TemplateOnlyComponent } from '@ember/component/template-only';\n\nexport interface HdsDialogPrimitiveBodySignature {\n Args: {\n contextualClass?: string;\n };\n Blocks: {\n default: [];\n };\n Element: HTMLDivElement;\n}\n\nconst HdsDialogPrimitiveBody: TemplateOnlyComponent<HdsDialogPrimitiveBodySignature> =\n <template>\n <div\n class=\"hds-dialog-primitive__body {{@contextualClass}}\"\n tabindex=\"0\"\n ...attributes\n >\n {{yield}}\n </div>\n </template>;\n\nexport default HdsDialogPrimitiveBody;\n"],"names":["HdsDialogPrimitiveBody","setComponentTemplate","precompileTemplate","strictMode","templateOnly"],"mappings":";;;;AAAA;;;AAGC;AAcD,MAAMA,sBAA8C,GAAAC,oBAAA,CAClDC,kBAAA,CAAA,mHAAA,EAQA;EAAAC,UAAA,EAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"}
1
+ {"version":3,"file":"body.js","sources":["../../../../src/components/hds/dialog-primitive/body.gts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2021, 2026\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport type { TemplateOnlyComponent } from '@ember/component/template-only';\n\nexport interface HdsDialogPrimitiveBodySignature {\n Args: {\n contextualClass?: string;\n };\n Blocks: {\n default: [];\n };\n Element: HTMLDivElement;\n}\n\nconst HdsDialogPrimitiveBody: TemplateOnlyComponent<HdsDialogPrimitiveBodySignature> =\n <template>\n <div\n class=\"hds-dialog-primitive__body {{@contextualClass}}\"\n tabindex=\"0\"\n ...attributes\n >\n {{yield}}\n </div>\n </template>;\n\nexport default HdsDialogPrimitiveBody;\n"],"names":["HdsDialogPrimitiveBody","setComponentTemplate","precompileTemplate","strictMode","templateOnly"],"mappings":";;;;AAAA;;;AAGC;AAcD,MAAMA,sBAA8C,GAAAC,oBAAA,CAClDC,kBAAA,CAAA,mHAAA,EAQA;EAAAC,UAAA,EAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"}
@@ -3,7 +3,7 @@ import { setComponentTemplate } from '@ember/component';
3
3
  import templateOnly from '@ember/component/template-only';
4
4
 
5
5
  /**
6
- * Copyright IBM Corp. 2021, 2025
6
+ * Copyright IBM Corp. 2021, 2026
7
7
  * SPDX-License-Identifier: MPL-2.0
8
8
  */
9
9
  const HdsDialogPrimitiveDescription = setComponentTemplate(precompileTemplate("<div class=\"hds-dialog-primitive__description hds-typography-body-200 hds-foreground-primary\n {{@contextualClass}}\" ...attributes>\n {{yield}}\n</div>", {
@@ -1 +1 @@
1
- {"version":3,"file":"description.js","sources":["../../../../src/components/hds/dialog-primitive/description.gts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2021, 2025\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport type { TemplateOnlyComponent } from '@ember/component/template-only';\n\nexport interface HdsDialogPrimitiveDescriptionSignature {\n Args: {\n contextualClass?: string;\n };\n Blocks: {\n default: [];\n };\n Element: HTMLDivElement;\n}\n\nconst HdsDialogPrimitiveDescription: TemplateOnlyComponent<HdsDialogPrimitiveDescriptionSignature> =\n <template>\n <div\n class=\"hds-dialog-primitive__description hds-typography-body-200 hds-foreground-primary\n {{@contextualClass}}\"\n ...attributes\n >\n {{yield}}\n </div>\n </template>;\n\nexport default HdsDialogPrimitiveDescription;\n"],"names":["HdsDialogPrimitiveDescription","setComponentTemplate","precompileTemplate","strictMode","templateOnly"],"mappings":";;;;AAAA;;;AAGC;AAcD,MAAMA,6BAAqD,GAAAC,oBAAA,CACzDC,kBAAA,CAAA,+JAAA,EAQA;EAAAC,UAAA,EAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"}
1
+ {"version":3,"file":"description.js","sources":["../../../../src/components/hds/dialog-primitive/description.gts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2021, 2026\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport type { TemplateOnlyComponent } from '@ember/component/template-only';\n\nexport interface HdsDialogPrimitiveDescriptionSignature {\n Args: {\n contextualClass?: string;\n };\n Blocks: {\n default: [];\n };\n Element: HTMLDivElement;\n}\n\nconst HdsDialogPrimitiveDescription: TemplateOnlyComponent<HdsDialogPrimitiveDescriptionSignature> =\n <template>\n <div\n class=\"hds-dialog-primitive__description hds-typography-body-200 hds-foreground-primary\n {{@contextualClass}}\"\n ...attributes\n >\n {{yield}}\n </div>\n </template>;\n\nexport default HdsDialogPrimitiveDescription;\n"],"names":["HdsDialogPrimitiveDescription","setComponentTemplate","precompileTemplate","strictMode","templateOnly"],"mappings":";;;;AAAA;;;AAGC;AAcD,MAAMA,6BAAqD,GAAAC,oBAAA,CACzDC,kBAAA,CAAA,+JAAA,EAQA;EAAAC,UAAA,EAAA;AAAU,CAAA,CAAA,EAAAC,YAAA,EAAA;;;;"}
@@ -4,7 +4,7 @@ import { precompileTemplate } from '@ember/template-compilation';
4
4
  import { setComponentTemplate } from '@ember/component';
5
5
 
6
6
  /**
7
- * Copyright IBM Corp. 2021, 2025
7
+ * Copyright IBM Corp. 2021, 2026
8
8
  * SPDX-License-Identifier: MPL-2.0
9
9
  */
10
10
  const NOOP = () => {};
@@ -1 +1 @@
1
- {"version":3,"file":"footer.js","sources":["../../../../src/components/hds/dialog-primitive/footer.gts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2021, 2025\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { hash } from '@ember/helper';\n\nexport interface HdsDialogPrimitiveFooterSignature {\n Args: {\n contextualClass?: string;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onDismiss?: (event: MouseEvent, ...args: any[]) => void;\n };\n Blocks: {\n default: [\n {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n close: (event: MouseEvent, ...args: any[]) => void;\n },\n ];\n };\n Element: HTMLDivElement;\n}\n\nconst NOOP = (): void => {};\n\nexport default class HdsDialogPrimitiveFooter extends Component<HdsDialogPrimitiveFooterSignature> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n get onDismiss(): (event: MouseEvent, ...args: any[]) => void {\n const { onDismiss } = this.args;\n\n // notice: this is to make sure the function is always defined when consumers add `{{on 'click' F.close}}` to a button in the DialogFooter.\n // in reality it's always used inside the main components as a yielded component, so the onDismiss handler is always defined\n if (typeof onDismiss === 'function') {\n return onDismiss;\n } else {\n return NOOP;\n }\n }\n\n <template>\n <div\n class=\"hds-dialog-primitive__footer {{@contextualClass}}\"\n ...attributes\n >\n {{yield (hash close=this.onDismiss)}}\n </div>\n </template>\n}\n"],"names":["NOOP","HdsDialogPrimitiveFooter","Component","onDismiss","args","setComponentTemplate","precompileTemplate","strictMode","scope","hash"],"mappings":";;;;;AAAA;;;AAGC;AAsBD,MAAMA,IAAA,GAAOA,MAAQ,CAAK,CAAA;AAEX,MAAMC,iCAAiCC,SAAA,CAAU;AAC9D;EACA,IAAIC,SAAAA,GAAyD;IAC3D,MAAM;AAAEA,MAAAA;KAAW,GAAG,IAAI,CAACC,IAAI;AAE/B;AACA;AACA,IAAA,IAAI,OAAOD,cAAc,UAAA,EAAY;AACnC,MAAA,OAAOA,SAAA;AACT,IAAA,CAAA,MAAO;AACL,MAAA,OAAOH,IAAA;AACT,IAAA;AACF,EAAA;AAEA,EAAA;IAAAK,oBAAA,CAAAC,kBAAA,CAAA,kIAAA,EAOA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;AAAAC,QAAAA;AAAA,OAAA;KAAU,CAAA,EAAV,IAAW,CAAA;AAAD;AACZ;;;;"}
1
+ {"version":3,"file":"footer.js","sources":["../../../../src/components/hds/dialog-primitive/footer.gts"],"sourcesContent":["/**\n * Copyright IBM Corp. 2021, 2026\n * SPDX-License-Identifier: MPL-2.0\n */\n\nimport Component from '@glimmer/component';\nimport { hash } from '@ember/helper';\n\nexport interface HdsDialogPrimitiveFooterSignature {\n Args: {\n contextualClass?: string;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onDismiss?: (event: MouseEvent, ...args: any[]) => void;\n };\n Blocks: {\n default: [\n {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n close: (event: MouseEvent, ...args: any[]) => void;\n },\n ];\n };\n Element: HTMLDivElement;\n}\n\nconst NOOP = (): void => {};\n\nexport default class HdsDialogPrimitiveFooter extends Component<HdsDialogPrimitiveFooterSignature> {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n get onDismiss(): (event: MouseEvent, ...args: any[]) => void {\n const { onDismiss } = this.args;\n\n // notice: this is to make sure the function is always defined when consumers add `{{on 'click' F.close}}` to a button in the DialogFooter.\n // in reality it's always used inside the main components as a yielded component, so the onDismiss handler is always defined\n if (typeof onDismiss === 'function') {\n return onDismiss;\n } else {\n return NOOP;\n }\n }\n\n <template>\n <div\n class=\"hds-dialog-primitive__footer {{@contextualClass}}\"\n ...attributes\n >\n {{yield (hash close=this.onDismiss)}}\n </div>\n </template>\n}\n"],"names":["NOOP","HdsDialogPrimitiveFooter","Component","onDismiss","args","setComponentTemplate","precompileTemplate","strictMode","scope","hash"],"mappings":";;;;;AAAA;;;AAGC;AAsBD,MAAMA,IAAA,GAAOA,MAAQ,CAAK,CAAA;AAEX,MAAMC,iCAAiCC,SAAA,CAAU;AAC9D;EACA,IAAIC,SAAAA,GAAyD;IAC3D,MAAM;AAAEA,MAAAA;KAAW,GAAG,IAAI,CAACC,IAAI;AAE/B;AACA;AACA,IAAA,IAAI,OAAOD,cAAc,UAAA,EAAY;AACnC,MAAA,OAAOA,SAAA;AACT,IAAA,CAAA,MAAO;AACL,MAAA,OAAOH,IAAA;AACT,IAAA;AACF,EAAA;AAEA,EAAA;IAAAK,oBAAA,CAAAC,kBAAA,CAAA,kIAAA,EAOA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;AAAAC,QAAAA;AAAA,OAAA;KAAU,CAAA,EAAV,IAAW,CAAA;AAAD;AACZ;;;;"}
@@ -11,7 +11,7 @@ import { precompileTemplate } from '@ember/template-compilation';
11
11
  import { setComponentTemplate } from '@ember/component';
12
12
 
13
13
  /**
14
- * Copyright IBM Corp. 2021, 2025
14
+ * Copyright IBM Corp. 2021, 2026
15
15
  * SPDX-License-Identifier: MPL-2.0
16
16
  */
17
17
  const NOOP = () => {};