@helixui/library 0.1.3 → 0.2.0

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 (182) hide show
  1. package/custom-elements.json +657 -462
  2. package/dist/components/hx-accordion/hx-accordion-item.d.ts.map +1 -1
  3. package/dist/components/hx-accordion/hx-accordion.d.ts +2 -0
  4. package/dist/components/hx-accordion/hx-accordion.d.ts.map +1 -1
  5. package/dist/components/hx-accordion/index.js +1 -1
  6. package/dist/components/hx-action-bar/hx-action-bar.d.ts +1 -0
  7. package/dist/components/hx-action-bar/hx-action-bar.d.ts.map +1 -1
  8. package/dist/components/hx-action-bar/index.js +1 -1
  9. package/dist/components/hx-alert/hx-alert.d.ts +1 -1
  10. package/dist/components/hx-alert/hx-alert.d.ts.map +1 -1
  11. package/dist/components/hx-alert/index.d.ts +1 -0
  12. package/dist/components/hx-alert/index.d.ts.map +1 -1
  13. package/dist/components/hx-avatar/hx-avatar.d.ts +1 -1
  14. package/dist/components/hx-avatar/hx-avatar.d.ts.map +1 -1
  15. package/dist/components/hx-avatar/hx-avatar.styles.d.ts.map +1 -1
  16. package/dist/components/hx-avatar/index.js +1 -1
  17. package/dist/components/hx-button/hx-button.d.ts +10 -4
  18. package/dist/components/hx-button/hx-button.d.ts.map +1 -1
  19. package/dist/components/hx-button/hx-button.styles.d.ts.map +1 -1
  20. package/dist/components/hx-button/index.js +1 -1
  21. package/dist/components/hx-button-group/hx-button-group.d.ts +6 -3
  22. package/dist/components/hx-button-group/hx-button-group.d.ts.map +1 -1
  23. package/dist/components/hx-button-group/hx-button-group.styles.d.ts.map +1 -1
  24. package/dist/components/hx-button-group/index.js +1 -1
  25. package/dist/components/hx-card/hx-card.d.ts +9 -0
  26. package/dist/components/hx-card/hx-card.d.ts.map +1 -1
  27. package/dist/components/hx-card/index.js +1 -1
  28. package/dist/components/hx-checkbox/hx-checkbox.d.ts +3 -0
  29. package/dist/components/hx-checkbox/hx-checkbox.d.ts.map +1 -1
  30. package/dist/components/hx-checkbox/hx-checkbox.styles.d.ts.map +1 -1
  31. package/dist/components/hx-checkbox/index.js +1 -1
  32. package/dist/components/hx-checkbox-group/hx-checkbox-group.d.ts +1 -0
  33. package/dist/components/hx-checkbox-group/hx-checkbox-group.d.ts.map +1 -1
  34. package/dist/components/hx-checkbox-group/index.js +1 -1
  35. package/dist/components/hx-code-snippet/hx-code-snippet.d.ts.map +1 -1
  36. package/dist/components/hx-code-snippet/index.js +1 -1
  37. package/dist/components/hx-color-picker/hx-color-picker.d.ts.map +1 -1
  38. package/dist/components/hx-color-picker/index.js +1 -1
  39. package/dist/components/hx-combobox/index.d.ts +1 -2
  40. package/dist/components/hx-combobox/index.d.ts.map +1 -1
  41. package/dist/components/hx-container/hx-container.d.ts +2 -0
  42. package/dist/components/hx-container/hx-container.d.ts.map +1 -1
  43. package/dist/components/hx-container/hx-container.styles.d.ts.map +1 -1
  44. package/dist/components/hx-container/index.js +1 -1
  45. package/dist/components/hx-dialog/index.js +1 -1
  46. package/dist/components/hx-divider/index.js +1 -1
  47. package/dist/components/hx-drawer/hx-drawer.d.ts +3 -2
  48. package/dist/components/hx-drawer/hx-drawer.d.ts.map +1 -1
  49. package/dist/components/hx-dropdown/index.d.ts +1 -1
  50. package/dist/components/hx-dropdown/index.d.ts.map +1 -1
  51. package/dist/components/hx-field/index.js +1 -1
  52. package/dist/components/hx-field-label/hx-field-label.d.ts +17 -7
  53. package/dist/components/hx-field-label/hx-field-label.d.ts.map +1 -1
  54. package/dist/components/hx-file-upload/hx-file-upload.d.ts +1 -0
  55. package/dist/components/hx-file-upload/hx-file-upload.d.ts.map +1 -1
  56. package/dist/components/hx-link/hx-link.d.ts +5 -1
  57. package/dist/components/hx-link/hx-link.d.ts.map +1 -1
  58. package/dist/components/hx-link/hx-link.styles.d.ts.map +1 -1
  59. package/dist/components/hx-link/index.js +1 -1
  60. package/dist/components/hx-menu/hx-menu-divider.d.ts.map +1 -1
  61. package/dist/components/hx-menu/hx-menu-divider.styles.d.ts +2 -0
  62. package/dist/components/hx-menu/hx-menu-divider.styles.d.ts.map +1 -0
  63. package/dist/components/hx-menu/hx-menu-item.d.ts +7 -0
  64. package/dist/components/hx-menu/hx-menu-item.d.ts.map +1 -1
  65. package/dist/components/hx-menu/hx-menu-item.styles.d.ts.map +1 -1
  66. package/dist/components/hx-menu/hx-menu.d.ts +11 -0
  67. package/dist/components/hx-menu/hx-menu.d.ts.map +1 -1
  68. package/dist/components/hx-menu/index.js +1 -1
  69. package/dist/components/hx-nav/hx-nav.d.ts +2 -0
  70. package/dist/components/hx-nav/hx-nav.d.ts.map +1 -1
  71. package/dist/components/hx-nav/hx-nav.styles.d.ts.map +1 -1
  72. package/dist/components/hx-nav/index.js +1 -1
  73. package/dist/components/hx-number-input/hx-number-input.styles.d.ts.map +1 -1
  74. package/dist/components/hx-number-input/index.js +1 -1
  75. package/dist/components/hx-progress-ring/hx-progress-ring.d.ts +3 -3
  76. package/dist/components/hx-progress-ring/hx-progress-ring.d.ts.map +1 -1
  77. package/dist/components/hx-progress-ring/index.js +1 -1
  78. package/dist/components/hx-radio-group/hx-radio-group.d.ts +1 -1
  79. package/dist/components/hx-radio-group/hx-radio-group.d.ts.map +1 -1
  80. package/dist/components/hx-radio-group/index.js +1 -1
  81. package/dist/components/hx-side-nav/hx-side-nav.d.ts.map +1 -1
  82. package/dist/components/hx-side-nav/index.js +1 -1
  83. package/dist/components/hx-slider/hx-slider.d.ts +2 -0
  84. package/dist/components/hx-slider/hx-slider.d.ts.map +1 -1
  85. package/dist/components/hx-slider/hx-slider.styles.d.ts.map +1 -1
  86. package/dist/components/hx-slider/index.js +1 -1
  87. package/dist/components/hx-split-panel/hx-split-panel.d.ts +1 -1
  88. package/dist/components/hx-split-panel/hx-split-panel.d.ts.map +1 -1
  89. package/dist/components/hx-split-panel/index.js +1 -1
  90. package/dist/components/hx-status-indicator/hx-status-indicator.d.ts +2 -0
  91. package/dist/components/hx-status-indicator/hx-status-indicator.d.ts.map +1 -1
  92. package/dist/components/hx-status-indicator/index.d.ts +1 -2
  93. package/dist/components/hx-status-indicator/index.d.ts.map +1 -1
  94. package/dist/components/hx-status-indicator/index.js +1 -1
  95. package/dist/components/hx-switch/hx-switch.d.ts.map +1 -1
  96. package/dist/components/hx-switch/index.d.ts +1 -0
  97. package/dist/components/hx-switch/index.d.ts.map +1 -1
  98. package/dist/components/hx-textarea/hx-textarea.d.ts +7 -1
  99. package/dist/components/hx-textarea/hx-textarea.d.ts.map +1 -1
  100. package/dist/components/hx-textarea/hx-textarea.styles.d.ts.map +1 -1
  101. package/dist/components/hx-textarea/index.js +1 -1
  102. package/dist/index.d.ts +11 -3
  103. package/dist/index.d.ts.map +1 -1
  104. package/dist/index.js +25 -25
  105. package/dist/shared/{hx-accordion-C84oGPj7.js → hx-accordion-D95XSAft.js} +33 -38
  106. package/dist/shared/hx-accordion-D95XSAft.js.map +1 -0
  107. package/dist/shared/{hx-action-bar-DxpGLABm.js → hx-action-bar-D43v5rA2.js} +11 -11
  108. package/dist/shared/hx-action-bar-D43v5rA2.js.map +1 -0
  109. package/dist/shared/hx-alert-BQpT4gL3.js.map +1 -1
  110. package/dist/shared/{hx-avatar-ekyZvOCm.js → hx-avatar-yHjmNdtf.js} +80 -58
  111. package/dist/shared/hx-avatar-yHjmNdtf.js.map +1 -0
  112. package/dist/shared/{hx-button-DpFW7PO3.js → hx-button-SAbf4_jC.js} +37 -30
  113. package/dist/shared/hx-button-SAbf4_jC.js.map +1 -0
  114. package/dist/shared/{hx-button-group-DxCwaWnu.js → hx-button-group-DET_Pkxt.js} +15 -26
  115. package/dist/shared/hx-button-group-DET_Pkxt.js.map +1 -0
  116. package/dist/shared/{hx-card-VdiB2Pc4.js → hx-card-DAkEfpJd.js} +12 -8
  117. package/dist/shared/hx-card-DAkEfpJd.js.map +1 -0
  118. package/dist/shared/{hx-checkbox-Dq2xXIvl.js → hx-checkbox-BMayOpAM.js} +13 -1
  119. package/dist/shared/hx-checkbox-BMayOpAM.js.map +1 -0
  120. package/dist/shared/{hx-checkbox-group-BLePVahw.js → hx-checkbox-group-CIIijwmc.js} +24 -24
  121. package/dist/shared/hx-checkbox-group-CIIijwmc.js.map +1 -0
  122. package/dist/shared/{hx-code-snippet-DjY96OY8.js → hx-code-snippet-DdEqy-1B.js} +3 -2
  123. package/dist/shared/{hx-code-snippet-DjY96OY8.js.map → hx-code-snippet-DdEqy-1B.js.map} +1 -1
  124. package/dist/shared/{hx-color-picker-O4b_6QXT.js → hx-color-picker-K2x_dyeG.js} +64 -66
  125. package/dist/shared/hx-color-picker-K2x_dyeG.js.map +1 -0
  126. package/dist/shared/{hx-container-COinHjxn.js → hx-container-BXZBaOGG.js} +13 -12
  127. package/dist/shared/hx-container-BXZBaOGG.js.map +1 -0
  128. package/dist/shared/{hx-dialog-1VegS0l1.js → hx-dialog-e4CSD8xX.js} +23 -23
  129. package/dist/shared/hx-dialog-e4CSD8xX.js.map +1 -0
  130. package/dist/shared/{hx-divider-UdSFzALX.js → hx-divider-XgWIz4Mr.js} +2 -2
  131. package/dist/shared/{hx-divider-UdSFzALX.js.map → hx-divider-XgWIz4Mr.js.map} +1 -1
  132. package/dist/shared/hx-drawer-CenIAGuR.js.map +1 -1
  133. package/dist/shared/{hx-field-BMyp6hBx.js → hx-field-Dz-7M_SC.js} +2 -2
  134. package/dist/shared/hx-field-Dz-7M_SC.js.map +1 -0
  135. package/dist/shared/hx-field-label-Bg-EWvqF.js.map +1 -1
  136. package/dist/shared/hx-file-upload-DnYiIhyN.js.map +1 -1
  137. package/dist/shared/{hx-link-D73HP4Lq.js → hx-link-DfNy_UU8.js} +4 -5
  138. package/dist/shared/hx-link-DfNy_UU8.js.map +1 -0
  139. package/dist/shared/{hx-menu-divider-Bds6Gn6b.js → hx-menu-divider-Buc5XA9E.js} +79 -52
  140. package/dist/shared/hx-menu-divider-Buc5XA9E.js.map +1 -0
  141. package/dist/shared/{hx-nav-TK0mPfU6.js → hx-nav-CWwByFdq.js} +78 -63
  142. package/dist/shared/hx-nav-CWwByFdq.js.map +1 -0
  143. package/dist/shared/{hx-nav-item-XvXQzMwc.js → hx-nav-item-DItaMWl0.js} +1 -2
  144. package/dist/shared/hx-nav-item-DItaMWl0.js.map +1 -0
  145. package/dist/shared/{hx-number-input-BJ5XSvjL.js → hx-number-input-CS6_w1lT.js} +7 -1
  146. package/dist/shared/hx-number-input-CS6_w1lT.js.map +1 -0
  147. package/dist/shared/{hx-progress-ring-QGg5fdis.js → hx-progress-ring-wOSv2y_I.js} +32 -35
  148. package/dist/shared/hx-progress-ring-wOSv2y_I.js.map +1 -0
  149. package/dist/shared/{hx-radio-CWzYFy-I.js → hx-radio-reSaVmIB.js} +41 -40
  150. package/dist/shared/hx-radio-reSaVmIB.js.map +1 -0
  151. package/dist/shared/{hx-slider-BMofa55D.js → hx-slider-CzHOl3Ur.js} +11 -2
  152. package/dist/shared/hx-slider-CzHOl3Ur.js.map +1 -0
  153. package/dist/shared/{hx-split-panel-D9Jg5qKO.js → hx-split-panel-Cxkeauwe.js} +22 -22
  154. package/dist/shared/hx-split-panel-Cxkeauwe.js.map +1 -0
  155. package/dist/shared/{hx-status-indicator-Mv44COA-.js → hx-status-indicator-oYWOkWlD.js} +31 -24
  156. package/dist/shared/{hx-status-indicator-Mv44COA-.js.map → hx-status-indicator-oYWOkWlD.js.map} +1 -1
  157. package/dist/shared/hx-switch-BPvIcDpM.js.map +1 -1
  158. package/dist/shared/{hx-textarea-Bsq5aJf8.js → hx-textarea-BLcReynr.js} +42 -26
  159. package/dist/shared/hx-textarea-BLcReynr.js.map +1 -0
  160. package/package.json +1 -1
  161. package/dist/shared/hx-accordion-C84oGPj7.js.map +0 -1
  162. package/dist/shared/hx-action-bar-DxpGLABm.js.map +0 -1
  163. package/dist/shared/hx-avatar-ekyZvOCm.js.map +0 -1
  164. package/dist/shared/hx-button-DpFW7PO3.js.map +0 -1
  165. package/dist/shared/hx-button-group-DxCwaWnu.js.map +0 -1
  166. package/dist/shared/hx-card-VdiB2Pc4.js.map +0 -1
  167. package/dist/shared/hx-checkbox-Dq2xXIvl.js.map +0 -1
  168. package/dist/shared/hx-checkbox-group-BLePVahw.js.map +0 -1
  169. package/dist/shared/hx-color-picker-O4b_6QXT.js.map +0 -1
  170. package/dist/shared/hx-container-COinHjxn.js.map +0 -1
  171. package/dist/shared/hx-dialog-1VegS0l1.js.map +0 -1
  172. package/dist/shared/hx-field-BMyp6hBx.js.map +0 -1
  173. package/dist/shared/hx-link-D73HP4Lq.js.map +0 -1
  174. package/dist/shared/hx-menu-divider-Bds6Gn6b.js.map +0 -1
  175. package/dist/shared/hx-nav-TK0mPfU6.js.map +0 -1
  176. package/dist/shared/hx-nav-item-XvXQzMwc.js.map +0 -1
  177. package/dist/shared/hx-number-input-BJ5XSvjL.js.map +0 -1
  178. package/dist/shared/hx-progress-ring-QGg5fdis.js.map +0 -1
  179. package/dist/shared/hx-radio-CWzYFy-I.js.map +0 -1
  180. package/dist/shared/hx-slider-BMofa55D.js.map +0 -1
  181. package/dist/shared/hx-split-panel-D9Jg5qKO.js.map +0 -1
  182. package/dist/shared/hx-textarea-Bsq5aJf8.js.map +0 -1
@@ -169,24 +169,18 @@
169
169
  ],
170
170
  "events": [
171
171
  {
172
- "name": "eventName",
173
- "type": {
174
- "text": "CustomEvent"
175
- }
176
- },
177
- {
172
+ "name": "hx-expand",
178
173
  "type": {
179
174
  "text": "CustomEvent<{expanded: boolean, itemId: string}>"
180
175
  },
181
- "description": "Dispatched when the item is expanded.",
182
- "name": "hx-expand"
176
+ "description": "Dispatched when the item is expanded."
183
177
  },
184
178
  {
179
+ "name": "hx-collapse",
185
180
  "type": {
186
181
  "text": "CustomEvent<{expanded: boolean, itemId: string}>"
187
182
  },
188
- "description": "Dispatched when the item is collapsed.",
189
- "name": "hx-collapse"
183
+ "description": "Dispatched when the item is collapsed."
190
184
  }
191
185
  ],
192
186
  "attributes": [
@@ -218,6 +212,14 @@
218
212
  "tagName": "hx-accordion-item",
219
213
  "customElement": true,
220
214
  "summary": "Collapsible panel that can be expanded or collapsed."
215
+ },
216
+ {
217
+ "kind": "variable",
218
+ "name": "detail",
219
+ "type": {
220
+ "text": "object"
221
+ },
222
+ "default": "{ expanded, itemId: this.id || '' }"
221
223
  }
222
224
  ],
223
225
  "exports": [
@@ -254,6 +256,12 @@
254
256
  "default": "var(--hx-border-radius-md)"
255
257
  }
256
258
  ],
259
+ "cssParts": [
260
+ {
261
+ "description": "The outer container wrapping all accordion items.",
262
+ "name": "accordion"
263
+ }
264
+ ],
257
265
  "slots": [
258
266
  {
259
267
  "description": "Default slot for hx-accordion-item elements.",
@@ -283,22 +291,9 @@
283
291
  }
284
292
  },
285
293
  {
286
- "kind": "method",
294
+ "kind": "field",
287
295
  "name": "_handleChildExpand",
288
- "privacy": "private",
289
- "return": {
290
- "type": {
291
- "text": "void"
292
- }
293
- },
294
- "parameters": [
295
- {
296
- "name": "e",
297
- "type": {
298
- "text": "CustomEvent<{ expanded: boolean; itemId: string }>"
299
- }
300
- }
301
- ]
296
+ "privacy": "private"
302
297
  },
303
298
  {
304
299
  "kind": "field",
@@ -399,723 +394,735 @@
399
394
  },
400
395
  {
401
396
  "kind": "javascript-module",
402
- "path": "src/components/hx-action-bar/hx-action-bar.ts",
397
+ "path": "src/components/hx-alert/hx-alert.ts",
403
398
  "declarations": [
404
399
  {
405
400
  "kind": "class",
406
- "description": "A horizontal toolbar container for grouping related action buttons and controls.\nImplements the ARIA toolbar pattern with roving tabindex keyboard navigation.",
407
- "name": "HelixActionBar",
401
+ "description": "A feedback component for communicating status messages, warnings, and errors.\nCritical for healthcare patient safety alerts.",
402
+ "name": "HelixAlert",
408
403
  "cssProperties": [
409
404
  {
410
- "description": "Bar background color (default variant).",
411
- "name": "--hx-action-bar-bg",
412
- "default": "transparent"
405
+ "description": "Alert background color.",
406
+ "name": "--hx-alert-bg",
407
+ "default": "var(--hx-color-info-50)"
413
408
  },
414
409
  {
415
- "description": "Bar border (default variant).",
416
- "name": "--hx-action-bar-border",
417
- "default": "none"
410
+ "description": "Alert text color.",
411
+ "name": "--hx-alert-color",
412
+ "default": "var(--hx-color-info-800)"
418
413
  },
419
414
  {
420
- "description": "Inner padding.",
421
- "name": "--hx-action-bar-padding",
422
- "default": "var(--hx-space-2,0.5rem) var(--hx-space-3,0.75rem)"
415
+ "description": "Alert border color.",
416
+ "name": "--hx-alert-border-color",
417
+ "default": "var(--hx-color-info-200)"
423
418
  },
424
419
  {
425
- "description": "Gap between slotted items.",
426
- "name": "--hx-action-bar-gap",
427
- "default": "var(--hx-space-2,0.5rem)"
420
+ "description": "Alert border radius.",
421
+ "name": "--hx-alert-border-radius",
422
+ "default": "var(--hx-border-radius-md)"
428
423
  },
429
424
  {
430
- "description": "Z-index when sticky or bottom position.",
431
- "name": "--hx-action-bar-z-index",
432
- "default": "10"
425
+ "description": "Alert border width.",
426
+ "name": "--hx-alert-border-width",
427
+ "default": "var(--hx-border-width-thin)"
428
+ },
429
+ {
430
+ "description": "Alert padding.",
431
+ "name": "--hx-alert-padding",
432
+ "default": "var(--hx-space-4)"
433
+ },
434
+ {
435
+ "description": "Gap between alert elements.",
436
+ "name": "--hx-alert-gap",
437
+ "default": "var(--hx-space-3)"
438
+ },
439
+ {
440
+ "description": "Alert icon color.",
441
+ "name": "--hx-alert-icon-color",
442
+ "default": "var(--hx-color-info-500)"
443
+ },
444
+ {
445
+ "description": "Alert font family.",
446
+ "name": "--hx-alert-font-family",
447
+ "default": "var(--hx-font-family-sans)"
448
+ },
449
+ {
450
+ "description": "Minimum touch target size for the close button.",
451
+ "name": "--hx-touch-target-size",
452
+ "default": "44px"
453
+ },
454
+ {
455
+ "description": "Width of the left border accent stripe.",
456
+ "name": "--hx-alert-accent-width",
457
+ "default": "4px"
433
458
  }
434
459
  ],
435
460
  "cssParts": [
436
461
  {
437
- "description": "The root toolbar container element.",
438
- "name": "base"
462
+ "description": "The outer alert container.",
463
+ "name": "alert"
439
464
  },
440
465
  {
441
- "description": "The start (left) slot wrapper.",
442
- "name": "start"
466
+ "description": "The title/headline container.",
467
+ "name": "title"
443
468
  },
444
469
  {
445
- "description": "The center (default) slot wrapper.",
446
- "name": "center"
470
+ "description": "The icon container.",
471
+ "name": "icon"
447
472
  },
448
473
  {
449
- "description": "The end (right) slot wrapper.",
450
- "name": "end"
474
+ "description": "The message content area.",
475
+ "name": "message"
476
+ },
477
+ {
478
+ "description": "The dismiss button (only rendered when dismissible).",
479
+ "name": "close-button"
480
+ },
481
+ {
482
+ "description": "The actions container.",
483
+ "name": "actions"
451
484
  }
452
485
  ],
453
486
  "slots": [
454
487
  {
455
- "description": "Left-aligned actions.",
456
- "name": "start"
488
+ "description": "Default slot for alert message content.",
489
+ "name": ""
457
490
  },
458
491
  {
459
- "description": "Center content (default slot).",
460
- "name": ""
492
+ "description": "Optional title/headline for the alert.",
493
+ "name": "title"
461
494
  },
462
495
  {
463
- "description": "Right-aligned actions.",
464
- "name": "end"
496
+ "description": "Custom icon to override the default variant icon.",
497
+ "name": "icon"
465
498
  },
466
499
  {
467
- "description": "Actions revealed when the bar is constrained for space.",
468
- "name": "overflow"
500
+ "description": "Action buttons rendered within the alert.",
501
+ "name": "actions"
469
502
  }
470
503
  ],
471
504
  "members": [
472
505
  {
473
506
  "kind": "field",
474
- "name": "size",
507
+ "name": "variant",
475
508
  "type": {
476
- "text": "'sm' | 'md' | 'lg'"
509
+ "text": "AlertVariant"
477
510
  },
478
- "default": "'md'",
479
- "description": "Size of the action bar propagated as a data attribute to slotted children.",
480
- "attribute": "size",
511
+ "default": "'info'",
512
+ "description": "Visual variant of the alert that determines colors and ARIA semantics.",
513
+ "attribute": "variant",
481
514
  "reflects": true
482
515
  },
483
516
  {
484
517
  "kind": "field",
485
- "name": "variant",
518
+ "name": "dismissible",
486
519
  "type": {
487
- "text": "'default' | 'outlined' | 'filled'"
520
+ "text": "boolean"
488
521
  },
489
- "default": "'default'",
490
- "description": "Visual variant controlling the bar background.",
491
- "attribute": "variant",
522
+ "default": "false",
523
+ "description": "Whether the alert can be dismissed by the user.",
524
+ "attribute": "dismissible",
492
525
  "reflects": true
493
526
  },
494
527
  {
495
528
  "kind": "field",
496
- "name": "position",
529
+ "name": "open",
497
530
  "type": {
498
- "text": "'top' | 'bottom' | 'sticky'"
531
+ "text": "boolean"
499
532
  },
500
- "default": "'top'",
501
- "description": "Position and sticky behavior of the action bar.\n- `top` normal flow (default)\n- `sticky` — sticks to the top of the scroll container; add `scroll-padding-top` to the\n scroll container equal to the bar height to prevent anchor targets from scrolling behind it\n- `bottom` — sticks to the bottom of the scroll container with iOS safe-area-inset support",
502
- "attribute": "position",
533
+ "default": "true",
534
+ "description": "Whether the alert is visible. Set to false to hide the alert.",
535
+ "attribute": "open",
503
536
  "reflects": true
504
537
  },
505
538
  {
506
539
  "kind": "field",
507
- "name": "sticky",
540
+ "name": "showIcon",
508
541
  "type": {
509
542
  "text": "boolean"
510
543
  },
511
- "default": "false",
512
- "deprecated": "Use `position=\"sticky\"` instead.\nWhen true, the bar sticks to the top of its scroll container.",
513
- "attribute": "sticky",
544
+ "default": "true",
545
+ "description": "Whether to show the default variant icon. Set to false to hide the icon container entirely.\nNote: Boolean attribute semantics apply — the attribute must be absent (not set to \"false\")\nto hide the icon. `<hx-alert show-icon=\"false\">` still shows the icon because the attribute\nis present; use `<hx-alert>` (attribute absent) or `el.showIcon = false` to hide it.",
546
+ "attribute": "show-icon",
514
547
  "reflects": true
515
548
  },
516
549
  {
517
550
  "kind": "field",
518
- "name": "ariaLabel",
551
+ "name": "accent",
519
552
  "type": {
520
- "text": "string"
553
+ "text": "boolean"
521
554
  },
522
- "default": "'Actions'",
523
- "description": "Accessible label for the toolbar.\nRequired when multiple toolbars appear on the same page.",
524
- "attribute": "aria-label"
555
+ "default": "false",
556
+ "description": "When true, applies a left border accent stripe instead of a full border.\nCommon healthcare/enterprise dashboard pattern for visual distinction of alert types.",
557
+ "attribute": "accent",
558
+ "reflects": true
525
559
  },
526
560
  {
527
561
  "kind": "field",
528
- "name": "_focusableCache",
562
+ "name": "returnFocusTo",
529
563
  "type": {
530
- "text": "HTMLElement[] | null"
564
+ "text": "string | null"
531
565
  },
532
- "privacy": "private",
533
566
  "default": "null",
534
- "description": "Cached list of focusable items invalidated on slot change."
567
+ "description": "CSS selector for the element to return focus to after the alert is dismissed.\nWhen set, the component will find and focus the matching element after dismissal.\nIf not set, focus management is the caller's responsibility via the hx-after-close event.",
568
+ "attribute": "return-focus-to"
535
569
  },
536
570
  {
537
571
  "kind": "field",
538
- "name": "_hasOverflow",
572
+ "name": "_hasActions",
539
573
  "type": {
540
574
  "text": "boolean"
541
575
  },
542
576
  "privacy": "private",
543
- "default": "false",
544
- "description": "Whether the overflow slot has assigned content."
577
+ "default": "false"
545
578
  },
546
579
  {
547
580
  "kind": "field",
548
- "name": "_handleKeydown",
581
+ "name": "_hasTitle",
582
+ "type": {
583
+ "text": "boolean"
584
+ },
549
585
  "privacy": "private",
550
- "description": "Arrow function field — stable reference for add/removeEventListener."
586
+ "default": "false"
551
587
  },
552
588
  {
553
- "kind": "method",
554
- "name": "_isFocusable",
555
- "privacy": "private",
556
- "return": {
557
- "type": {
558
- "text": "boolean"
559
- }
589
+ "kind": "field",
590
+ "name": "_actionsSlotChangeHandler",
591
+ "type": {
592
+ "text": "(() => void) | null"
560
593
  },
561
- "parameters": [
562
- {
563
- "name": "el",
564
- "type": {
565
- "text": "HTMLElement"
566
- }
567
- }
568
- ]
594
+ "privacy": "private",
595
+ "default": "null"
569
596
  },
570
597
  {
571
- "kind": "method",
572
- "name": "_getFocusableItems",
598
+ "kind": "field",
599
+ "name": "_titleSlotChangeHandler",
600
+ "type": {
601
+ "text": "(() => void) | null"
602
+ },
573
603
  "privacy": "private",
574
- "return": {
575
- "type": {
576
- "text": "HTMLElement[]"
577
- }
578
- }
604
+ "default": "null"
579
605
  },
580
606
  {
581
- "kind": "method",
582
- "name": "_initRovingTabindex",
607
+ "kind": "field",
608
+ "name": "_isAssertive",
609
+ "type": {
610
+ "text": "boolean"
611
+ },
583
612
  "privacy": "private",
584
- "return": {
585
- "type": {
586
- "text": "void"
587
- }
588
- }
613
+ "description": "Returns true when the variant requires assertive announcement.",
614
+ "readonly": true
589
615
  },
590
616
  {
591
- "kind": "method",
592
- "name": "_moveFocus",
593
- "privacy": "private",
594
- "return": {
595
- "type": {
596
- "text": "void"
597
- }
617
+ "kind": "field",
618
+ "name": "_role",
619
+ "type": {
620
+ "text": "string"
598
621
  },
599
- "parameters": [
600
- {
601
- "name": "direction",
602
- "type": {
603
- "text": "'next' | 'prev'"
604
- }
605
- }
606
- ]
622
+ "privacy": "private",
623
+ "description": "Returns the appropriate ARIA role based on variant.\nrole=\"alert\" implies aria-live=\"assertive\"; role=\"status\" implies aria-live=\"polite\".\nWe do NOT set aria-live explicitly to avoid double-announcements in JAWS.",
624
+ "readonly": true
607
625
  },
608
626
  {
609
627
  "kind": "method",
610
- "name": "_handleSlotChange",
628
+ "name": "_renderInfoIcon",
629
+ "privacy": "private"
630
+ },
631
+ {
632
+ "kind": "method",
633
+ "name": "_renderSuccessIcon",
634
+ "privacy": "private"
635
+ },
636
+ {
637
+ "kind": "method",
638
+ "name": "_renderWarningIcon",
639
+ "privacy": "private"
640
+ },
641
+ {
642
+ "kind": "method",
643
+ "name": "_renderErrorIcon",
644
+ "privacy": "private"
645
+ },
646
+ {
647
+ "kind": "method",
648
+ "name": "_renderDefaultIcon",
649
+ "privacy": "private"
650
+ },
651
+ {
652
+ "kind": "method",
653
+ "name": "_renderCloseIcon",
654
+ "privacy": "private"
655
+ },
656
+ {
657
+ "kind": "method",
658
+ "name": "_handleDismiss",
611
659
  "privacy": "private",
612
660
  "return": {
613
661
  "type": {
614
662
  "text": "void"
615
663
  }
616
- },
617
- "parameters": [
618
- {
619
- "name": "e",
620
- "type": {
621
- "text": "Event"
622
- }
623
- }
624
- ]
664
+ }
625
665
  }
626
666
  ],
627
- "attributes": [
667
+ "events": [
628
668
  {
629
- "name": "size",
669
+ "name": "hx-close",
630
670
  "type": {
631
- "text": "'sm' | 'md' | 'lg'"
671
+ "text": "CustomEvent<{reason: string}>"
632
672
  },
633
- "default": "'md'",
634
- "description": "Size of the action bar — propagated as a data attribute to slotted children.",
635
- "fieldName": "size",
636
- "attribute": "size"
673
+ "description": "Dispatched when the user dismisses the alert."
637
674
  },
675
+ {
676
+ "name": "hx-after-close",
677
+ "type": {
678
+ "text": "CustomEvent"
679
+ },
680
+ "description": "Dispatched after the alert is dismissed."
681
+ }
682
+ ],
683
+ "attributes": [
638
684
  {
639
685
  "name": "variant",
640
686
  "type": {
641
- "text": "'default' | 'outlined' | 'filled'"
687
+ "text": "AlertVariant"
642
688
  },
643
- "default": "'default'",
644
- "description": "Visual variant controlling the bar background.",
689
+ "default": "'info'",
690
+ "description": "Visual variant of the alert that determines colors and ARIA semantics.",
645
691
  "fieldName": "variant",
646
692
  "attribute": "variant"
647
693
  },
648
694
  {
649
- "name": "position",
695
+ "name": "dismissible",
650
696
  "type": {
651
- "text": "'top' | 'bottom' | 'sticky'"
697
+ "text": "boolean"
652
698
  },
653
- "default": "'top'",
654
- "description": "Position and sticky behavior of the action bar.\n- `top` normal flow (default)\n- `sticky` — sticks to the top of the scroll container; add `scroll-padding-top` to the\n scroll container equal to the bar height to prevent anchor targets from scrolling behind it\n- `bottom` — sticks to the bottom of the scroll container with iOS safe-area-inset support",
655
- "fieldName": "position",
656
- "attribute": "position"
699
+ "default": "false",
700
+ "description": "Whether the alert can be dismissed by the user.",
701
+ "fieldName": "dismissible",
702
+ "attribute": "dismissible"
657
703
  },
658
704
  {
659
- "name": "sticky",
705
+ "name": "open",
706
+ "type": {
707
+ "text": "boolean"
708
+ },
709
+ "default": "true",
710
+ "description": "Whether the alert is visible. Set to false to hide the alert.",
711
+ "fieldName": "open",
712
+ "attribute": "open"
713
+ },
714
+ {
715
+ "name": "show-icon",
716
+ "type": {
717
+ "text": "boolean"
718
+ },
719
+ "default": "true",
720
+ "description": "Whether to show the default variant icon. Set to false to hide the icon container entirely.\nNote: Boolean attribute semantics apply — the attribute must be absent (not set to \"false\")\nto hide the icon. `<hx-alert show-icon=\"false\">` still shows the icon because the attribute\nis present; use `<hx-alert>` (attribute absent) or `el.showIcon = false` to hide it.",
721
+ "fieldName": "showIcon",
722
+ "attribute": "show-icon"
723
+ },
724
+ {
725
+ "name": "accent",
660
726
  "type": {
661
727
  "text": "boolean"
662
728
  },
663
729
  "default": "false",
664
- "deprecated": "Use `position=\"sticky\"` instead.\nWhen true, the bar sticks to the top of its scroll container.",
665
- "fieldName": "sticky",
666
- "attribute": "sticky"
730
+ "description": "When true, applies a left border accent stripe instead of a full border.\nCommon healthcare/enterprise dashboard pattern for visual distinction of alert types.",
731
+ "fieldName": "accent",
732
+ "attribute": "accent"
667
733
  },
668
734
  {
669
- "name": "aria-label",
735
+ "name": "return-focus-to",
670
736
  "type": {
671
- "text": "string"
737
+ "text": "string | null"
672
738
  },
673
- "default": "'Actions'",
674
- "description": "Accessible label for the toolbar.\nRequired when multiple toolbars appear on the same page.",
675
- "fieldName": "ariaLabel",
676
- "attribute": "aria-label"
739
+ "default": "null",
740
+ "description": "CSS selector for the element to return focus to after the alert is dismissed.\nWhen set, the component will find and focus the matching element after dismissal.\nIf not set, focus management is the caller's responsibility via the hx-after-close event.",
741
+ "fieldName": "returnFocusTo",
742
+ "attribute": "return-focus-to"
677
743
  }
678
744
  ],
679
745
  "superclass": {
680
746
  "name": "LitElement",
681
747
  "package": "lit"
682
748
  },
683
- "tagName": "hx-action-bar",
749
+ "tagName": "hx-alert",
684
750
  "customElement": true,
685
- "summary": "Horizontal action bar for grouping related controls."
751
+ "summary": "Feedback alert for status messages with variant-based styling and ARIA live regions."
686
752
  }
687
753
  ],
688
754
  "exports": [
689
755
  {
690
756
  "kind": "js",
691
- "name": "HelixActionBar",
757
+ "name": "HelixAlert",
692
758
  "declaration": {
693
- "name": "HelixActionBar",
694
- "module": "src/components/hx-action-bar/hx-action-bar.ts"
759
+ "name": "HelixAlert",
760
+ "module": "src/components/hx-alert/hx-alert.ts"
695
761
  }
696
762
  },
697
763
  {
698
764
  "kind": "custom-element-definition",
699
- "name": "hx-action-bar",
765
+ "name": "hx-alert",
700
766
  "declaration": {
701
- "name": "HelixActionBar",
702
- "module": "src/components/hx-action-bar/hx-action-bar.ts"
767
+ "name": "HelixAlert",
768
+ "module": "src/components/hx-alert/hx-alert.ts"
769
+ }
770
+ },
771
+ {
772
+ "kind": "js",
773
+ "name": "HxAlert",
774
+ "declaration": {
775
+ "name": "HelixAlert",
776
+ "module": "src/components/hx-alert/hx-alert.ts"
703
777
  }
704
778
  }
705
779
  ]
706
780
  },
707
781
  {
708
782
  "kind": "javascript-module",
709
- "path": "src/components/hx-action-bar/index.ts",
783
+ "path": "src/components/hx-alert/index.ts",
710
784
  "declarations": [],
711
785
  "exports": [
712
786
  {
713
787
  "kind": "js",
714
- "name": "HelixActionBar",
788
+ "name": "HelixAlert",
715
789
  "declaration": {
716
- "name": "HelixActionBar",
717
- "module": "./hx-action-bar.js"
790
+ "name": "HelixAlert",
791
+ "module": "./hx-alert.js"
792
+ }
793
+ },
794
+ {
795
+ "kind": "js",
796
+ "name": "AlertVariant",
797
+ "declaration": {
798
+ "name": "AlertVariant",
799
+ "module": "./hx-alert.js"
718
800
  }
719
801
  }
720
802
  ]
721
803
  },
722
804
  {
723
805
  "kind": "javascript-module",
724
- "path": "src/components/hx-alert/hx-alert.ts",
806
+ "path": "src/components/hx-action-bar/hx-action-bar.ts",
725
807
  "declarations": [
726
808
  {
727
809
  "kind": "class",
728
- "description": "A feedback component for communicating status messages, warnings, and errors.\nCritical for healthcare patient safety alerts.",
729
- "name": "HelixAlert",
810
+ "description": "A horizontal toolbar container for grouping related action buttons and controls.\nImplements the ARIA toolbar pattern with roving tabindex keyboard navigation.",
811
+ "name": "HelixActionBar",
730
812
  "cssProperties": [
731
813
  {
732
- "description": "Alert background color.",
733
- "name": "--hx-alert-bg",
734
- "default": "var(--hx-color-info-50)"
735
- },
736
- {
737
- "description": "Alert text color.",
738
- "name": "--hx-alert-color",
739
- "default": "var(--hx-color-info-800)"
740
- },
741
- {
742
- "description": "Alert border color.",
743
- "name": "--hx-alert-border-color",
744
- "default": "var(--hx-color-info-200)"
745
- },
746
- {
747
- "description": "Alert border radius.",
748
- "name": "--hx-alert-border-radius",
749
- "default": "var(--hx-border-radius-md)"
750
- },
751
- {
752
- "description": "Alert border width.",
753
- "name": "--hx-alert-border-width",
754
- "default": "var(--hx-border-width-thin)"
755
- },
756
- {
757
- "description": "Alert padding.",
758
- "name": "--hx-alert-padding",
759
- "default": "var(--hx-space-4)"
760
- },
761
- {
762
- "description": "Gap between alert elements.",
763
- "name": "--hx-alert-gap",
764
- "default": "var(--hx-space-3)"
814
+ "description": "Bar background color (default variant).",
815
+ "name": "--hx-action-bar-bg",
816
+ "default": "transparent"
765
817
  },
766
818
  {
767
- "description": "Alert icon color.",
768
- "name": "--hx-alert-icon-color",
769
- "default": "var(--hx-color-info-500)"
819
+ "description": "Bar border (default variant).",
820
+ "name": "--hx-action-bar-border",
821
+ "default": "none"
770
822
  },
771
823
  {
772
- "description": "Alert font family.",
773
- "name": "--hx-alert-font-family",
774
- "default": "var(--hx-font-family-sans)"
824
+ "description": "Inner padding.",
825
+ "name": "--hx-action-bar-padding",
826
+ "default": "var(--hx-space-2,0.5rem) var(--hx-space-3,0.75rem)"
775
827
  },
776
828
  {
777
- "description": "Minimum touch target size for the close button.",
778
- "name": "--hx-touch-target-size",
779
- "default": "44px"
829
+ "description": "Gap between slotted items.",
830
+ "name": "--hx-action-bar-gap",
831
+ "default": "var(--hx-space-2,0.5rem)"
780
832
  },
781
833
  {
782
- "description": "Width of the left border accent stripe.",
783
- "name": "--hx-alert-accent-width",
784
- "default": "4px"
834
+ "description": "Z-index when sticky or bottom position.",
835
+ "name": "--hx-action-bar-z-index",
836
+ "default": "10"
785
837
  }
786
838
  ],
787
839
  "cssParts": [
788
840
  {
789
- "description": "The outer alert container.",
790
- "name": "alert"
791
- },
792
- {
793
- "description": "The title/headline container.",
794
- "name": "title"
841
+ "description": "The root toolbar container element.",
842
+ "name": "base"
795
843
  },
796
844
  {
797
- "description": "The icon container.",
798
- "name": "icon"
845
+ "description": "The start (left) slot wrapper.",
846
+ "name": "start"
799
847
  },
800
848
  {
801
- "description": "The message content area.",
802
- "name": "message"
849
+ "description": "The center (default) slot wrapper.",
850
+ "name": "center"
803
851
  },
804
852
  {
805
- "description": "The dismiss button (only rendered when dismissible).",
806
- "name": "close-button"
853
+ "description": "The end (right) slot wrapper.",
854
+ "name": "end"
807
855
  },
808
856
  {
809
- "description": "The actions container.",
810
- "name": "actions"
857
+ "description": "The overflow slot wrapper (hidden when no overflow content).",
858
+ "name": "overflow"
811
859
  }
812
860
  ],
813
861
  "slots": [
814
862
  {
815
- "description": "Default slot for alert message content.",
816
- "name": ""
863
+ "description": "Left-aligned actions.",
864
+ "name": "start"
817
865
  },
818
866
  {
819
- "description": "Optional title/headline for the alert.",
820
- "name": "title"
867
+ "description": "Center content (default slot).",
868
+ "name": ""
821
869
  },
822
870
  {
823
- "description": "Custom icon to override the default variant icon.",
824
- "name": "icon"
871
+ "description": "Right-aligned actions.",
872
+ "name": "end"
825
873
  },
826
874
  {
827
- "description": "Action buttons rendered within the alert.",
828
- "name": "actions"
875
+ "description": "Actions revealed when the bar is constrained for space.",
876
+ "name": "overflow"
829
877
  }
830
878
  ],
831
879
  "members": [
832
880
  {
833
881
  "kind": "field",
834
- "name": "variant",
835
- "type": {
836
- "text": "AlertVariant"
837
- },
838
- "default": "'info'",
839
- "description": "Visual variant of the alert that determines colors and ARIA semantics.",
840
- "attribute": "variant",
841
- "reflects": true
842
- },
843
- {
844
- "kind": "field",
845
- "name": "dismissible",
882
+ "name": "size",
846
883
  "type": {
847
- "text": "boolean"
884
+ "text": "'sm' | 'md' | 'lg'"
848
885
  },
849
- "default": "false",
850
- "description": "Whether the alert can be dismissed by the user.",
851
- "attribute": "dismissible",
886
+ "default": "'md'",
887
+ "description": "Size of the action bar propagated as a data attribute to slotted children.",
888
+ "attribute": "size",
852
889
  "reflects": true
853
890
  },
854
891
  {
855
892
  "kind": "field",
856
- "name": "open",
893
+ "name": "variant",
857
894
  "type": {
858
- "text": "boolean"
895
+ "text": "'default' | 'outlined' | 'filled'"
859
896
  },
860
- "default": "true",
861
- "description": "Whether the alert is visible. Set to false to hide the alert.",
862
- "attribute": "open",
897
+ "default": "'default'",
898
+ "description": "Visual variant controlling the bar background.",
899
+ "attribute": "variant",
863
900
  "reflects": true
864
901
  },
865
902
  {
866
903
  "kind": "field",
867
- "name": "showIcon",
904
+ "name": "position",
868
905
  "type": {
869
- "text": "boolean"
906
+ "text": "'top' | 'bottom' | 'sticky'"
870
907
  },
871
- "default": "true",
872
- "description": "Whether to show the default variant icon. Set to false to hide the icon container entirely.\nNote: Boolean attribute semantics apply the attribute must be absent (not set to \"false\")\nto hide the icon. `<hx-alert show-icon=\"false\">` still shows the icon because the attribute\nis present; use `<hx-alert>` (attribute absent) or `el.showIcon = false` to hide it.",
873
- "attribute": "show-icon",
908
+ "default": "'top'",
909
+ "description": "Position and sticky behavior of the action bar.\n- `top` normal flow (default)\n- `sticky` sticks to the top of the scroll container; add `scroll-padding-top` to the\n scroll container equal to the bar height to prevent anchor targets from scrolling behind it\n- `bottom` sticks to the bottom of the scroll container with iOS safe-area-inset support",
910
+ "attribute": "position",
874
911
  "reflects": true
875
912
  },
876
913
  {
877
914
  "kind": "field",
878
- "name": "accent",
915
+ "name": "sticky",
879
916
  "type": {
880
917
  "text": "boolean"
881
918
  },
882
919
  "default": "false",
883
- "description": "When true, applies a left border accent stripe instead of a full border.\nCommon healthcare/enterprise dashboard pattern for visual distinction of alert types.",
884
- "attribute": "accent",
920
+ "deprecated": "Use `position=\"sticky\"` instead.\nWhen true, the bar sticks to the top of its scroll container.",
921
+ "attribute": "sticky",
885
922
  "reflects": true
886
923
  },
887
924
  {
888
925
  "kind": "field",
889
- "name": "returnFocusTo",
926
+ "name": "ariaLabel",
890
927
  "type": {
891
- "text": "string | null"
928
+ "text": "string"
892
929
  },
893
- "default": "null",
894
- "description": "CSS selector for the element to return focus to after the alert is dismissed.\nWhen set, the component will find and focus the matching element after dismissal.\nIf not set, focus management is the caller's responsibility via the hx-after-close event.",
895
- "attribute": "return-focus-to"
930
+ "default": "'Actions'",
931
+ "description": "Accessible label for the toolbar.\nRequired when multiple toolbars appear on the same page.",
932
+ "attribute": "aria-label"
896
933
  },
897
934
  {
898
935
  "kind": "field",
899
- "name": "_hasActions",
936
+ "name": "_focusableCache",
900
937
  "type": {
901
- "text": "boolean"
938
+ "text": "HTMLElement[] | null"
902
939
  },
903
940
  "privacy": "private",
904
- "default": "false"
941
+ "default": "null",
942
+ "description": "Cached list of focusable items — invalidated on slot change."
905
943
  },
906
944
  {
907
945
  "kind": "field",
908
- "name": "_hasTitle",
946
+ "name": "_hasOverflow",
909
947
  "type": {
910
948
  "text": "boolean"
911
949
  },
912
950
  "privacy": "private",
913
- "default": "false"
914
- },
915
- {
916
- "kind": "field",
917
- "name": "_actionsSlotChangeHandler",
918
- "type": {
919
- "text": "(() => void) | null"
920
- },
921
- "privacy": "private",
922
- "default": "null"
951
+ "default": "false",
952
+ "description": "Whether the overflow slot has assigned content."
923
953
  },
924
954
  {
925
955
  "kind": "field",
926
- "name": "_titleSlotChangeHandler",
927
- "type": {
928
- "text": "(() => void) | null"
929
- },
956
+ "name": "_handleKeydown",
930
957
  "privacy": "private",
931
- "default": "null"
958
+ "description": "Arrow function field — stable reference for add/removeEventListener."
932
959
  },
933
960
  {
934
- "kind": "field",
935
- "name": "_isAssertive",
936
- "type": {
937
- "text": "boolean"
938
- },
961
+ "kind": "method",
962
+ "name": "_isFocusable",
939
963
  "privacy": "private",
940
- "description": "Returns true when the variant requires assertive announcement.",
941
- "readonly": true
942
- },
943
- {
944
- "kind": "field",
945
- "name": "_role",
946
- "type": {
947
- "text": "string"
964
+ "return": {
965
+ "type": {
966
+ "text": "boolean"
967
+ }
948
968
  },
949
- "privacy": "private",
950
- "description": "Returns the appropriate ARIA role based on variant.\nrole=\"alert\" implies aria-live=\"assertive\"; role=\"status\" implies aria-live=\"polite\".\nWe do NOT set aria-live explicitly to avoid double-announcements in JAWS.",
951
- "readonly": true
952
- },
953
- {
954
- "kind": "method",
955
- "name": "_renderInfoIcon",
956
- "privacy": "private"
957
- },
958
- {
959
- "kind": "method",
960
- "name": "_renderSuccessIcon",
961
- "privacy": "private"
962
- },
963
- {
964
- "kind": "method",
965
- "name": "_renderWarningIcon",
966
- "privacy": "private"
969
+ "parameters": [
970
+ {
971
+ "name": "el",
972
+ "type": {
973
+ "text": "HTMLElement"
974
+ }
975
+ }
976
+ ]
967
977
  },
968
978
  {
969
979
  "kind": "method",
970
- "name": "_renderErrorIcon",
971
- "privacy": "private"
980
+ "name": "_getFocusableItems",
981
+ "privacy": "private",
982
+ "return": {
983
+ "type": {
984
+ "text": "HTMLElement[]"
985
+ }
986
+ }
972
987
  },
973
988
  {
974
989
  "kind": "method",
975
- "name": "_renderDefaultIcon",
976
- "privacy": "private"
990
+ "name": "_initRovingTabindex",
991
+ "privacy": "private",
992
+ "return": {
993
+ "type": {
994
+ "text": "void"
995
+ }
996
+ }
977
997
  },
978
998
  {
979
999
  "kind": "method",
980
- "name": "_renderCloseIcon",
981
- "privacy": "private"
1000
+ "name": "_moveFocus",
1001
+ "privacy": "private",
1002
+ "return": {
1003
+ "type": {
1004
+ "text": "void"
1005
+ }
1006
+ },
1007
+ "parameters": [
1008
+ {
1009
+ "name": "direction",
1010
+ "type": {
1011
+ "text": "'next' | 'prev'"
1012
+ }
1013
+ }
1014
+ ]
982
1015
  },
983
1016
  {
984
1017
  "kind": "method",
985
- "name": "_handleDismiss",
1018
+ "name": "_handleSlotChange",
986
1019
  "privacy": "private",
987
1020
  "return": {
988
1021
  "type": {
989
1022
  "text": "void"
990
1023
  }
991
- }
1024
+ },
1025
+ "parameters": [
1026
+ {
1027
+ "name": "e",
1028
+ "type": {
1029
+ "text": "Event"
1030
+ }
1031
+ }
1032
+ ]
992
1033
  }
993
1034
  ],
994
- "events": [
1035
+ "attributes": [
995
1036
  {
996
- "name": "hx-close",
1037
+ "name": "size",
997
1038
  "type": {
998
- "text": "CustomEvent<{reason: string}>"
1039
+ "text": "'sm' | 'md' | 'lg'"
999
1040
  },
1000
- "description": "Dispatched when the user dismisses the alert."
1041
+ "default": "'md'",
1042
+ "description": "Size of the action bar — propagated as a data attribute to slotted children.",
1043
+ "fieldName": "size",
1044
+ "attribute": "size"
1001
1045
  },
1002
- {
1003
- "name": "hx-after-close",
1004
- "type": {
1005
- "text": "CustomEvent"
1006
- },
1007
- "description": "Dispatched after the alert is dismissed."
1008
- }
1009
- ],
1010
- "attributes": [
1011
1046
  {
1012
1047
  "name": "variant",
1013
1048
  "type": {
1014
- "text": "AlertVariant"
1049
+ "text": "'default' | 'outlined' | 'filled'"
1015
1050
  },
1016
- "default": "'info'",
1017
- "description": "Visual variant of the alert that determines colors and ARIA semantics.",
1051
+ "default": "'default'",
1052
+ "description": "Visual variant controlling the bar background.",
1018
1053
  "fieldName": "variant",
1019
1054
  "attribute": "variant"
1020
1055
  },
1021
1056
  {
1022
- "name": "dismissible",
1023
- "type": {
1024
- "text": "boolean"
1025
- },
1026
- "default": "false",
1027
- "description": "Whether the alert can be dismissed by the user.",
1028
- "fieldName": "dismissible",
1029
- "attribute": "dismissible"
1030
- },
1031
- {
1032
- "name": "open",
1033
- "type": {
1034
- "text": "boolean"
1035
- },
1036
- "default": "true",
1037
- "description": "Whether the alert is visible. Set to false to hide the alert.",
1038
- "fieldName": "open",
1039
- "attribute": "open"
1040
- },
1041
- {
1042
- "name": "show-icon",
1043
- "type": {
1044
- "text": "boolean"
1045
- },
1046
- "default": "true",
1047
- "description": "Whether to show the default variant icon. Set to false to hide the icon container entirely.\nNote: Boolean attribute semantics apply — the attribute must be absent (not set to \"false\")\nto hide the icon. `<hx-alert show-icon=\"false\">` still shows the icon because the attribute\nis present; use `<hx-alert>` (attribute absent) or `el.showIcon = false` to hide it.",
1048
- "fieldName": "showIcon",
1049
- "attribute": "show-icon"
1057
+ "name": "position",
1058
+ "type": {
1059
+ "text": "'top' | 'bottom' | 'sticky'"
1060
+ },
1061
+ "default": "'top'",
1062
+ "description": "Position and sticky behavior of the action bar.\n- `top` normal flow (default)\n- `sticky` — sticks to the top of the scroll container; add `scroll-padding-top` to the\n scroll container equal to the bar height to prevent anchor targets from scrolling behind it\n- `bottom` — sticks to the bottom of the scroll container with iOS safe-area-inset support",
1063
+ "fieldName": "position",
1064
+ "attribute": "position"
1050
1065
  },
1051
1066
  {
1052
- "name": "accent",
1067
+ "name": "sticky",
1053
1068
  "type": {
1054
1069
  "text": "boolean"
1055
1070
  },
1056
1071
  "default": "false",
1057
- "description": "When true, applies a left border accent stripe instead of a full border.\nCommon healthcare/enterprise dashboard pattern for visual distinction of alert types.",
1058
- "fieldName": "accent",
1059
- "attribute": "accent"
1072
+ "deprecated": "Use `position=\"sticky\"` instead.\nWhen true, the bar sticks to the top of its scroll container.",
1073
+ "fieldName": "sticky",
1074
+ "attribute": "sticky"
1060
1075
  },
1061
1076
  {
1062
- "name": "return-focus-to",
1077
+ "name": "aria-label",
1063
1078
  "type": {
1064
- "text": "string | null"
1079
+ "text": "string"
1065
1080
  },
1066
- "default": "null",
1067
- "description": "CSS selector for the element to return focus to after the alert is dismissed.\nWhen set, the component will find and focus the matching element after dismissal.\nIf not set, focus management is the caller's responsibility via the hx-after-close event.",
1068
- "fieldName": "returnFocusTo",
1069
- "attribute": "return-focus-to"
1081
+ "default": "'Actions'",
1082
+ "description": "Accessible label for the toolbar.\nRequired when multiple toolbars appear on the same page.",
1083
+ "fieldName": "ariaLabel",
1084
+ "attribute": "aria-label"
1070
1085
  }
1071
1086
  ],
1072
1087
  "superclass": {
1073
1088
  "name": "LitElement",
1074
1089
  "package": "lit"
1075
1090
  },
1076
- "tagName": "hx-alert",
1091
+ "tagName": "hx-action-bar",
1077
1092
  "customElement": true,
1078
- "summary": "Feedback alert for status messages with variant-based styling and ARIA live regions."
1093
+ "summary": "Horizontal action bar for grouping related controls."
1079
1094
  }
1080
1095
  ],
1081
1096
  "exports": [
1082
1097
  {
1083
1098
  "kind": "js",
1084
- "name": "HelixAlert",
1099
+ "name": "HelixActionBar",
1085
1100
  "declaration": {
1086
- "name": "HelixAlert",
1087
- "module": "src/components/hx-alert/hx-alert.ts"
1101
+ "name": "HelixActionBar",
1102
+ "module": "src/components/hx-action-bar/hx-action-bar.ts"
1088
1103
  }
1089
1104
  },
1090
1105
  {
1091
1106
  "kind": "custom-element-definition",
1092
- "name": "hx-alert",
1093
- "declaration": {
1094
- "name": "HelixAlert",
1095
- "module": "src/components/hx-alert/hx-alert.ts"
1096
- }
1097
- },
1098
- {
1099
- "kind": "js",
1100
- "name": "HxAlert",
1107
+ "name": "hx-action-bar",
1101
1108
  "declaration": {
1102
- "name": "HelixAlert",
1103
- "module": "src/components/hx-alert/hx-alert.ts"
1109
+ "name": "HelixActionBar",
1110
+ "module": "src/components/hx-action-bar/hx-action-bar.ts"
1104
1111
  }
1105
1112
  }
1106
1113
  ]
1107
1114
  },
1108
1115
  {
1109
1116
  "kind": "javascript-module",
1110
- "path": "src/components/hx-alert/index.ts",
1117
+ "path": "src/components/hx-action-bar/index.ts",
1111
1118
  "declarations": [],
1112
1119
  "exports": [
1113
1120
  {
1114
1121
  "kind": "js",
1115
- "name": "HelixAlert",
1122
+ "name": "HelixActionBar",
1116
1123
  "declaration": {
1117
- "name": "HelixAlert",
1118
- "module": "./hx-alert.js"
1124
+ "name": "HelixActionBar",
1125
+ "module": "./hx-action-bar.js"
1119
1126
  }
1120
1127
  }
1121
1128
  ]
@@ -2634,6 +2641,17 @@
2634
2641
  "description": "Form field value submitted via ElementInternals.setFormValue on submit.",
2635
2642
  "attribute": "value"
2636
2643
  },
2644
+ {
2645
+ "kind": "field",
2646
+ "name": "ariaLabel",
2647
+ "type": {
2648
+ "text": "string | null"
2649
+ },
2650
+ "default": "null",
2651
+ "description": "Accessible label forwarded to the inner button/anchor. Required for icon-only usage.",
2652
+ "attribute": "aria-label",
2653
+ "reflects": true
2654
+ },
2637
2655
  {
2638
2656
  "kind": "field",
2639
2657
  "name": "form",
@@ -2664,12 +2682,22 @@
2664
2682
  {
2665
2683
  "kind": "method",
2666
2684
  "name": "_renderSpinner",
2667
- "privacy": "private"
2685
+ "privacy": "private",
2686
+ "return": {
2687
+ "type": {
2688
+ "text": "TemplateResult"
2689
+ }
2690
+ }
2668
2691
  },
2669
2692
  {
2670
2693
  "kind": "method",
2671
2694
  "name": "_renderInner",
2672
- "privacy": "private"
2695
+ "privacy": "private",
2696
+ "return": {
2697
+ "type": {
2698
+ "text": "TemplateResult"
2699
+ }
2700
+ }
2673
2701
  }
2674
2702
  ],
2675
2703
  "events": [
@@ -2771,6 +2799,16 @@
2771
2799
  "description": "Form field value submitted via ElementInternals.setFormValue on submit.",
2772
2800
  "fieldName": "value",
2773
2801
  "attribute": "value"
2802
+ },
2803
+ {
2804
+ "name": "aria-label",
2805
+ "type": {
2806
+ "text": "string | null"
2807
+ },
2808
+ "default": "null",
2809
+ "description": "Accessible label forwarded to the inner button/anchor. Required for icon-only usage.",
2810
+ "fieldName": "ariaLabel",
2811
+ "attribute": "aria-label"
2774
2812
  }
2775
2813
  ],
2776
2814
  "superclass": {
@@ -2822,7 +2860,7 @@
2822
2860
  "declarations": [
2823
2861
  {
2824
2862
  "kind": "class",
2825
- "description": "A container component that groups related hx-button elements into a cohesive\nhorizontal or vertical action set. Eliminates double borders between adjacent\nbuttons and squares off inner border-radius for a unified visual appearance.",
2863
+ "description": "A container component that groups related hx-button elements into a cohesive\nhorizontal or vertical action set. Eliminates double borders between adjacent\nbuttons and squares off inner border-radius for a unified visual appearance.\n\n**Accessibility:** Always provide an accessible label via `aria-label` or\n`aria-labelledby` so screen readers can announce the group purpose.",
2826
2864
  "name": "HelixButtonGroup",
2827
2865
  "cssProperties": [
2828
2866
  {
@@ -2881,19 +2919,9 @@
2881
2919
  "text": "string"
2882
2920
  },
2883
2921
  "default": "''",
2884
- "description": "Accessible label for the button group. Sets aria-label via ElementInternals.\nRequired for WCAG 2.1 AA compliance when the group purpose is not clear from context.\nAlternatively, consumers may apply aria-label directly as an HTML attribute.",
2922
+ "description": "Accessible label for the button group. Sets aria-label via ElementInternals.\n**Strongly recommended** for WCAG 2.1 AA compliance without it, screen\nreaders announce an unnamed \"group\". For Drupal/Twig compatibility, prefer\napplying `aria-label` directly as an HTML attribute instead.",
2885
2923
  "attribute": "label"
2886
2924
  },
2887
- {
2888
- "kind": "method",
2889
- "name": "_handleSlotChange",
2890
- "privacy": "private",
2891
- "return": {
2892
- "type": {
2893
- "text": "void"
2894
- }
2895
- }
2896
- },
2897
2925
  {
2898
2926
  "kind": "field",
2899
2927
  "name": "role",
@@ -2930,7 +2958,7 @@
2930
2958
  "text": "string"
2931
2959
  },
2932
2960
  "default": "''",
2933
- "description": "Accessible label for the button group. Sets aria-label via ElementInternals.\nRequired for WCAG 2.1 AA compliance when the group purpose is not clear from context.\nAlternatively, consumers may apply aria-label directly as an HTML attribute.",
2961
+ "description": "Accessible label for the button group. Sets aria-label via ElementInternals.\n**Strongly recommended** for WCAG 2.1 AA compliance without it, screen\nreaders announce an unnamed \"group\". For Drupal/Twig compatibility, prefer\napplying `aria-label` directly as an HTML attribute instead.",
2934
2962
  "fieldName": "label",
2935
2963
  "attribute": "label"
2936
2964
  }
@@ -3072,6 +3100,16 @@
3072
3100
  }
3073
3101
  ],
3074
3102
  "members": [
3103
+ {
3104
+ "kind": "field",
3105
+ "name": "shadowRootOptions",
3106
+ "type": {
3107
+ "text": "object"
3108
+ },
3109
+ "static": true,
3110
+ "default": "{ ...LitElement.shadowRootOptions, delegatesFocus: true, }",
3111
+ "description": "Enable delegatesFocus so :focus on the host works when the inner card div has focus."
3112
+ },
3075
3113
  {
3076
3114
  "kind": "field",
3077
3115
  "name": "variant",
@@ -4263,6 +4301,11 @@
4263
4301
  "name": "--hx-checkbox-help-text-color",
4264
4302
  "default": "var(--hx-color-neutral-500, #6c757d)"
4265
4303
  },
4304
+ {
4305
+ "description": "Border color on hover.",
4306
+ "name": "--hx-checkbox-hover-border-color",
4307
+ "default": "var(--hx-checkbox-border-color)"
4308
+ },
4266
4309
  {
4267
4310
  "description": "Error state color.",
4268
4311
  "name": "--hx-checkbox-error-color",
@@ -4558,6 +4601,24 @@
4558
4601
  ],
4559
4602
  "description": "Called when the form restores state (e.g., back/forward navigation)."
4560
4603
  },
4604
+ {
4605
+ "kind": "method",
4606
+ "name": "formDisabledCallback",
4607
+ "return": {
4608
+ "type": {
4609
+ "text": "void"
4610
+ }
4611
+ },
4612
+ "parameters": [
4613
+ {
4614
+ "name": "disabled",
4615
+ "type": {
4616
+ "text": "boolean"
4617
+ }
4618
+ }
4619
+ ],
4620
+ "description": "Called when a parent fieldset is disabled/enabled."
4621
+ },
4561
4622
  {
4562
4623
  "kind": "method",
4563
4624
  "name": "_handleChange",
@@ -4810,6 +4871,11 @@
4810
4871
  "description": "Error message color.",
4811
4872
  "name": "--hx-checkbox-group-error-color",
4812
4873
  "default": "var(--hx-color-error-500, #dc3545)"
4874
+ },
4875
+ {
4876
+ "description": "Help text color.",
4877
+ "name": "--hx-checkbox-group-help-text-color",
4878
+ "default": "var(--hx-color-neutral-500)"
4813
4879
  }
4814
4880
  ],
4815
4881
  "cssParts": [
@@ -6314,24 +6380,18 @@
6314
6380
  ],
6315
6381
  "events": [
6316
6382
  {
6317
- "name": "eventName",
6318
- "type": {
6319
- "text": "CustomEvent"
6320
- }
6321
- },
6322
- {
6383
+ "name": "hx-input",
6323
6384
  "type": {
6324
6385
  "text": "CustomEvent<{value: string}>"
6325
6386
  },
6326
- "description": "Dispatched while dragging sliders or grid.",
6327
- "name": "hx-input"
6387
+ "description": "Dispatched while dragging sliders or grid."
6328
6388
  },
6329
6389
  {
6390
+ "name": "hx-change",
6330
6391
  "type": {
6331
6392
  "text": "CustomEvent<{value: string}>"
6332
6393
  },
6333
- "description": "Dispatched when a color is committed.",
6334
- "name": "hx-change"
6394
+ "description": "Dispatched when a color is committed."
6335
6395
  }
6336
6396
  ],
6337
6397
  "attributes": [
@@ -6413,6 +6473,14 @@
6413
6473
  "tagName": "hx-color-picker",
6414
6474
  "customElement": true,
6415
6475
  "summary": "Color selection control with swatches, gradient picker, and formatted input."
6476
+ },
6477
+ {
6478
+ "kind": "variable",
6479
+ "name": "detail",
6480
+ "type": {
6481
+ "text": "object"
6482
+ },
6483
+ "default": "{ value: formatted }"
6416
6484
  }
6417
6485
  ],
6418
6486
  "exports": [
@@ -10420,7 +10488,7 @@
10420
10488
  "kind": "field",
10421
10489
  "name": "size",
10422
10490
  "type": {
10423
- "text": "DrawerSize | string"
10491
+ "text": "DrawerSize"
10424
10492
  },
10425
10493
  "default": "'md'",
10426
10494
  "description": "The size of the drawer panel. Use 'sm', 'md', 'lg', 'full', or any valid CSS length.",
@@ -10764,7 +10832,7 @@
10764
10832
  {
10765
10833
  "name": "size",
10766
10834
  "type": {
10767
- "text": "DrawerSize | string"
10835
+ "text": "DrawerSize"
10768
10836
  },
10769
10837
  "default": "'md'",
10770
10838
  "description": "The size of the drawer panel. Use 'sm', 'md', 'lg', 'full', or any valid CSS length.",
@@ -11290,6 +11358,14 @@
11290
11358
  "name": "HelixDropdown",
11291
11359
  "module": "./hx-dropdown.js"
11292
11360
  }
11361
+ },
11362
+ {
11363
+ "kind": "js",
11364
+ "name": "DropdownPlacement",
11365
+ "declaration": {
11366
+ "name": "DropdownPlacement",
11367
+ "module": "./hx-dropdown.js"
11368
+ }
11293
11369
  }
11294
11370
  ]
11295
11371
  },
@@ -11769,7 +11845,7 @@
11769
11845
  "declarations": [
11770
11846
  {
11771
11847
  "kind": "class",
11772
- "description": "Standardized label for form fields. Used as a consistent sub-component\nfor hx-field and other form field components.\n\nWhen the `for` attribute is set, renders a native `<label for=\"...\">` element.\n**Note:** Due to the shadow DOM boundary, this label association only works\nwhen the associated input is in the **same shadow root**. For inputs in\nlight DOM (the typical consumer deployment), use `aria-labelledby` pointing\nto the host element's `id` instead of the `for` attribute.\n\nWhen `for` is unset, renders a `<span>` that can be referenced via\n`aria-labelledby` for labeling controls in a shadow DOM boundary.",
11848
+ "description": "Standardized label for form fields. Used as a consistent sub-component\nfor hx-field and other form field components.\n\n## Label Association\n\n**For inputs in light DOM (the typical consumer deployment):** Use\n`aria-labelledby` pointing to the host element's `id`. The `for` attribute\nrenders a native `<label for=\"...\">` inside shadow DOM, but the HTML spec\nscopes `for`/`id` lookup to the same tree a shadow-DOM label cannot\nassociate with a light-DOM input. Example:\n\n```html\n<hx-field-label id=\"label-email\">Email</hx-field-label>\n<input id=\"email\" aria-labelledby=\"label-email\" />\n```\n\n**For inputs in the same shadow root:** The `for` attribute works as\nexpected for direct label association.\n\nWhen `for` is unset, renders a `<span>` that can be referenced via\n`aria-labelledby` for labeling controls across the shadow DOM boundary.",
11773
11849
  "name": "HelixFieldLabel",
11774
11850
  "cssProperties": [
11775
11851
  {
@@ -11780,7 +11856,7 @@
11780
11856
  {
11781
11857
  "description": "Required indicator color.",
11782
11858
  "name": "--hx-field-label-required-color",
11783
- "default": "var(--hx-color-danger, var(--hx-color-error-500, #ef4444))"
11859
+ "default": "var(--hx-color-danger, var(--hx-color-error-text, #b91c1c))"
11784
11860
  },
11785
11861
  {
11786
11862
  "description": "Label font size.",
@@ -11995,6 +12071,10 @@
11995
12071
  {
11996
12072
  "description": "The visible label element.",
11997
12073
  "name": "label"
12074
+ },
12075
+ {
12076
+ "description": "The error message container below the dropzone.",
12077
+ "name": "error"
11998
12078
  }
11999
12079
  ],
12000
12080
  "slots": [
@@ -14738,13 +14818,33 @@
14738
14818
  {
14739
14819
  "description": "Danger variant color.",
14740
14820
  "name": "--hx-link-color-danger",
14741
- "default": "var(--hx-color-error-500)"
14821
+ "default": "var(--hx-color-error-text)"
14822
+ },
14823
+ {
14824
+ "description": "Danger variant hover color.",
14825
+ "name": "--hx-link-color-danger-hover",
14826
+ "default": "var(--hx-color-error-700)"
14827
+ },
14828
+ {
14829
+ "description": "Link font family.",
14830
+ "name": "--hx-link-font-family",
14831
+ "default": "var(--hx-font-family-sans)"
14742
14832
  },
14743
14833
  {
14744
14834
  "description": "Link text decoration.",
14745
14835
  "name": "--hx-link-text-decoration",
14746
14836
  "default": "underline"
14747
14837
  },
14838
+ {
14839
+ "description": "Hover text decoration.",
14840
+ "name": "--hx-link-text-decoration-hover",
14841
+ "default": "underline"
14842
+ },
14843
+ {
14844
+ "description": "Text underline offset.",
14845
+ "name": "--hx-link-underline-offset",
14846
+ "default": "2px"
14847
+ },
14748
14848
  {
14749
14849
  "description": "Focus ring color.",
14750
14850
  "name": "--hx-link-focus-ring-color",
@@ -15916,6 +16016,17 @@
15916
16016
  }
15917
16017
  ],
15918
16018
  "members": [
16019
+ {
16020
+ "kind": "field",
16021
+ "name": "label",
16022
+ "type": {
16023
+ "text": "string"
16024
+ },
16025
+ "default": "''",
16026
+ "description": "Accessible label for the menu. Rendered as `aria-label` on the inner\n`role=\"menu\"` element when set.",
16027
+ "attribute": "label",
16028
+ "reflects": true
16029
+ },
15919
16030
  {
15920
16031
  "kind": "field",
15921
16032
  "name": "_focusedIndex",
@@ -15952,6 +16063,17 @@
15952
16063
  }
15953
16064
  }
15954
16065
  },
16066
+ {
16067
+ "kind": "method",
16068
+ "name": "_syncRovingTabIndex",
16069
+ "privacy": "private",
16070
+ "return": {
16071
+ "type": {
16072
+ "text": "void"
16073
+ }
16074
+ },
16075
+ "description": "Synchronize roving tabindex across all enabled items.\nOnly the active item (or first item if none active) gets tabindex=0."
16076
+ },
15955
16077
  {
15956
16078
  "kind": "method",
15957
16079
  "name": "focusFirst",
@@ -16095,6 +16217,18 @@
16095
16217
  "description": "Dispatched when an item is selected."
16096
16218
  }
16097
16219
  ],
16220
+ "attributes": [
16221
+ {
16222
+ "name": "label",
16223
+ "type": {
16224
+ "text": "string"
16225
+ },
16226
+ "default": "''",
16227
+ "description": "Accessible label for the menu. Rendered as `aria-label` on the inner\n`role=\"menu\"` element when set.",
16228
+ "fieldName": "label",
16229
+ "attribute": "label"
16230
+ }
16231
+ ],
16098
16232
  "superclass": {
16099
16233
  "name": "LitElement",
16100
16234
  "package": "lit"
@@ -16476,6 +16610,11 @@
16476
16610
  "name": "--hx-nav-color",
16477
16611
  "default": "var(--hx-color-neutral-100)"
16478
16612
  },
16613
+ {
16614
+ "description": "Navigation font family.",
16615
+ "name": "--hx-nav-font-family",
16616
+ "default": "var(--hx-font-family-sans)"
16617
+ },
16479
16618
  {
16480
16619
  "description": "Link text color.",
16481
16620
  "name": "--hx-nav-link-color",
@@ -16506,6 +16645,11 @@
16506
16645
  "name": "--hx-nav-submenu-bg",
16507
16646
  "default": "var(--hx-color-neutral-800)"
16508
16647
  },
16648
+ {
16649
+ "description": "Submenu minimum width.",
16650
+ "name": "--hx-nav-submenu-min-width",
16651
+ "default": "12rem"
16652
+ },
16509
16653
  {
16510
16654
  "description": "Navigation font size.",
16511
16655
  "name": "--hx-nav-font-size",
@@ -16681,6 +16825,12 @@
16681
16825
  "type": {
16682
16826
  "text": "NavItem"
16683
16827
  }
16828
+ },
16829
+ {
16830
+ "name": "e",
16831
+ "type": {
16832
+ "text": "Event"
16833
+ }
16684
16834
  }
16685
16835
  ]
16686
16836
  },
@@ -16782,6 +16932,12 @@
16782
16932
  "type": {
16783
16933
  "text": "number"
16784
16934
  }
16935
+ },
16936
+ {
16937
+ "name": "parentLabel",
16938
+ "type": {
16939
+ "text": "string"
16940
+ }
16785
16941
  }
16786
16942
  ]
16787
16943
  },
@@ -20080,14 +20236,13 @@
20080
20236
  "readonly": true
20081
20237
  },
20082
20238
  {
20083
- "kind": "method",
20084
- "name": "_syncState",
20239
+ "kind": "field",
20240
+ "name": "_labelWarned",
20241
+ "type": {
20242
+ "text": "boolean"
20243
+ },
20085
20244
  "privacy": "private",
20086
- "return": {
20087
- "type": {
20088
- "text": "void"
20089
- }
20090
- }
20245
+ "default": "false"
20091
20246
  }
20092
20247
  ],
20093
20248
  "attributes": [
@@ -20522,9 +20677,10 @@
20522
20677
  "kind": "field",
20523
20678
  "name": "_groupEl",
20524
20679
  "type": {
20525
- "text": "HTMLElement"
20680
+ "text": "HTMLElement | null"
20526
20681
  },
20527
- "privacy": "private"
20682
+ "privacy": "private",
20683
+ "readonly": true
20528
20684
  },
20529
20685
  {
20530
20686
  "kind": "field",
@@ -23151,6 +23307,11 @@
23151
23307
  "name": "--hx-slider-thumb-border-color",
23152
23308
  "default": "var(--hx-color-primary-500)"
23153
23309
  },
23310
+ {
23311
+ "description": "Thumb border width.",
23312
+ "name": "--hx-slider-thumb-border-width",
23313
+ "default": "2px"
23314
+ },
23154
23315
  {
23155
23316
  "description": "Thumb box shadow.",
23156
23317
  "name": "--hx-slider-thumb-shadow",
@@ -26293,7 +26454,7 @@
26293
26454
  "kind": "field",
26294
26455
  "name": "_trackEl",
26295
26456
  "type": {
26296
- "text": "HTMLButtonElement"
26457
+ "text": "HTMLButtonElement | null"
26297
26458
  },
26298
26459
  "privacy": "private",
26299
26460
  "description": "Reference to the native button element acting as the switch track."
@@ -26586,6 +26747,22 @@
26586
26747
  "name": "HelixSwitch",
26587
26748
  "module": "./hx-switch.js"
26588
26749
  }
26750
+ },
26751
+ {
26752
+ "kind": "js",
26753
+ "name": "HxSwitch",
26754
+ "declaration": {
26755
+ "name": "HxSwitch",
26756
+ "module": "./hx-switch.js"
26757
+ }
26758
+ },
26759
+ {
26760
+ "kind": "js",
26761
+ "name": "WcSwitch",
26762
+ "declaration": {
26763
+ "name": "WcSwitch",
26764
+ "module": "./hx-switch.js"
26765
+ }
26589
26766
  }
26590
26767
  ]
26591
26768
  },
@@ -28541,9 +28718,18 @@
28541
28718
  "text": "number"
28542
28719
  },
28543
28720
  "default": "4",
28544
- "description": "The number of visible text rows.",
28721
+ "description": "The number of visible text rows. Must be a positive integer (minimum 1).\nInvalid values are clamped to the nearest valid value.",
28545
28722
  "attribute": "rows"
28546
28723
  },
28724
+ {
28725
+ "kind": "field",
28726
+ "name": "minlength",
28727
+ "type": {
28728
+ "text": "number | undefined"
28729
+ },
28730
+ "description": "Minimum number of characters required.",
28731
+ "attribute": "minlength"
28732
+ },
28547
28733
  {
28548
28734
  "kind": "field",
28549
28735
  "name": "maxlength",
@@ -28792,10 +28978,19 @@
28792
28978
  "text": "number"
28793
28979
  },
28794
28980
  "default": "4",
28795
- "description": "The number of visible text rows.",
28981
+ "description": "The number of visible text rows. Must be a positive integer (minimum 1).\nInvalid values are clamped to the nearest valid value.",
28796
28982
  "fieldName": "rows",
28797
28983
  "attribute": "rows"
28798
28984
  },
28985
+ {
28986
+ "name": "minlength",
28987
+ "type": {
28988
+ "text": "number | undefined"
28989
+ },
28990
+ "description": "Minimum number of characters required.",
28991
+ "fieldName": "minlength",
28992
+ "attribute": "minlength"
28993
+ },
28799
28994
  {
28800
28995
  "name": "maxlength",
28801
28996
  "type": {