@helixui/library 3.3.1-next.118 → 3.4.0-next.121
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.
- package/custom-elements.json +422 -322
- package/dist/components/hx-alert/hx-alert.d.ts +11 -0
- package/dist/components/hx-alert/hx-alert.d.ts.map +1 -1
- package/dist/components/hx-alert/hx-alert.styles.d.ts.map +1 -1
- package/dist/components/hx-alert/index.js +1 -1
- package/dist/components/hx-badge/hx-badge.styles.d.ts.map +1 -1
- package/dist/components/hx-badge/index.js +1 -1
- package/dist/components/hx-banner/hx-banner.d.ts +9 -1
- package/dist/components/hx-banner/hx-banner.d.ts.map +1 -1
- package/dist/components/hx-banner/index.js +1 -1
- package/dist/components/hx-button/hx-button.d.ts +11 -1
- package/dist/components/hx-button/hx-button.d.ts.map +1 -1
- package/dist/components/hx-button/index.js +1 -1
- package/dist/components/hx-button-group/hx-button-group.d.ts +13 -0
- package/dist/components/hx-button-group/hx-button-group.d.ts.map +1 -1
- package/dist/components/hx-button-group/index.js +1 -1
- package/dist/components/hx-checkbox/hx-checkbox.d.ts.map +1 -1
- package/dist/components/hx-checkbox/index.js +1 -1
- package/dist/components/hx-checkbox-group/index.js +1 -1
- package/dist/components/hx-color-picker/index.js +1 -1
- package/dist/components/hx-combobox/index.js +1 -1
- package/dist/components/hx-data-table/hx-data-table.d.ts.map +1 -1
- package/dist/components/hx-data-table/index.js +1 -1
- package/dist/components/hx-date-picker/index.js +1 -1
- package/dist/components/hx-dialog/index.js +1 -1
- package/dist/components/hx-drawer/hx-drawer.d.ts +201 -0
- package/dist/components/hx-drawer/hx-drawer.d.ts.map +1 -1
- package/dist/components/hx-drawer/hx-drawer.styles.d.ts.map +1 -1
- package/dist/components/hx-drawer/index.js +1 -1
- package/dist/components/hx-dropdown/hx-dropdown.d.ts +96 -8
- package/dist/components/hx-dropdown/hx-dropdown.d.ts.map +1 -1
- package/dist/components/hx-dropdown/index.js +1 -1
- package/dist/components/hx-icon-button/hx-icon-button.d.ts +16 -3
- package/dist/components/hx-icon-button/hx-icon-button.d.ts.map +1 -1
- package/dist/components/hx-icon-button/hx-icon-button.styles.d.ts.map +1 -1
- package/dist/components/hx-icon-button/index.js +1 -1
- package/dist/components/hx-link/hx-link.d.ts +10 -1
- package/dist/components/hx-link/hx-link.d.ts.map +1 -1
- package/dist/components/hx-link/index.js +1 -1
- package/dist/components/hx-list/hx-list-item.d.ts +27 -1
- package/dist/components/hx-list/hx-list-item.d.ts.map +1 -1
- package/dist/components/hx-list/hx-list.d.ts +28 -0
- package/dist/components/hx-list/hx-list.d.ts.map +1 -1
- package/dist/components/hx-list/index.js +1 -1
- package/dist/components/hx-menu/hx-menu-divider.d.ts +10 -0
- package/dist/components/hx-menu/hx-menu-divider.d.ts.map +1 -1
- package/dist/components/hx-menu/hx-menu-item.d.ts +99 -2
- package/dist/components/hx-menu/hx-menu-item.d.ts.map +1 -1
- package/dist/components/hx-menu/hx-menu-item.styles.d.ts.map +1 -1
- package/dist/components/hx-menu/hx-menu.d.ts +117 -2
- package/dist/components/hx-menu/hx-menu.d.ts.map +1 -1
- package/dist/components/hx-menu/index.js +1 -1
- package/dist/components/hx-meter/hx-meter.d.ts +39 -0
- package/dist/components/hx-meter/hx-meter.d.ts.map +1 -1
- package/dist/components/hx-meter/hx-meter.styles.d.ts.map +1 -1
- package/dist/components/hx-meter/index.js +1 -1
- package/dist/components/hx-overflow-menu/hx-overflow-menu.d.ts +132 -1
- package/dist/components/hx-overflow-menu/hx-overflow-menu.d.ts.map +1 -1
- package/dist/components/hx-overflow-menu/index.js +1 -1
- package/dist/components/hx-phi-field/hx-phi-field.d.ts +0 -1
- package/dist/components/hx-phi-field/hx-phi-field.d.ts.map +1 -1
- package/dist/components/hx-popover/index.js +1 -1
- package/dist/components/hx-progress-bar/hx-progress-bar.d.ts +33 -0
- package/dist/components/hx-progress-bar/hx-progress-bar.d.ts.map +1 -1
- package/dist/components/hx-progress-bar/index.js +1 -1
- package/dist/components/hx-radio-group/index.js +1 -1
- package/dist/components/hx-select/hx-select.d.ts +1 -0
- package/dist/components/hx-select/hx-select.d.ts.map +1 -1
- package/dist/components/hx-select/index.js +1 -1
- package/dist/components/hx-spinner/hx-spinner.d.ts +14 -0
- package/dist/components/hx-spinner/hx-spinner.d.ts.map +1 -1
- package/dist/components/hx-spinner/index.js +1 -1
- package/dist/components/hx-split-button/hx-split-button.d.ts +94 -7
- package/dist/components/hx-split-button/hx-split-button.d.ts.map +1 -1
- package/dist/components/hx-split-button/index.js +1 -1
- package/dist/components/hx-stat/hx-stat.d.ts +28 -0
- package/dist/components/hx-stat/hx-stat.d.ts.map +1 -1
- package/dist/components/hx-stat/index.js +1 -1
- package/dist/components/hx-switch/index.js +1 -1
- package/dist/components/hx-table/hx-td.d.ts +30 -3
- package/dist/components/hx-table/hx-td.d.ts.map +1 -1
- package/dist/components/hx-table/hx-th.d.ts +39 -3
- package/dist/components/hx-table/hx-th.d.ts.map +1 -1
- package/dist/components/hx-table/hx-tr.d.ts +26 -0
- package/dist/components/hx-table/hx-tr.d.ts.map +1 -1
- package/dist/components/hx-table/index.js +1 -1
- package/dist/components/hx-tabs/hx-tab-panel.d.ts +34 -0
- package/dist/components/hx-tabs/hx-tab-panel.d.ts.map +1 -1
- package/dist/components/hx-tabs/hx-tab.d.ts +45 -2
- package/dist/components/hx-tabs/hx-tab.d.ts.map +1 -1
- package/dist/components/hx-tabs/hx-tab.styles.d.ts.map +1 -1
- package/dist/components/hx-tabs/hx-tabs.d.ts +32 -2
- package/dist/components/hx-tabs/hx-tabs.d.ts.map +1 -1
- package/dist/components/hx-tabs/index.js +1 -1
- package/dist/components/hx-tag/hx-tag.styles.d.ts.map +1 -1
- package/dist/components/hx-tag/index.js +1 -1
- package/dist/components/hx-theme/hx-theme.d.ts +10 -5
- package/dist/components/hx-theme/hx-theme.d.ts.map +1 -1
- package/dist/components/hx-time-picker/hx-time-picker.d.ts +210 -2
- package/dist/components/hx-time-picker/hx-time-picker.d.ts.map +1 -1
- package/dist/components/hx-time-picker/hx-time-picker.styles.d.ts.map +1 -1
- package/dist/components/hx-time-picker/index.js +1 -1
- package/dist/components/hx-toast/hx-toast-stack.d.ts +14 -0
- package/dist/components/hx-toast/hx-toast-stack.d.ts.map +1 -1
- package/dist/components/hx-toast/hx-toast.d.ts +22 -3
- package/dist/components/hx-toast/hx-toast.d.ts.map +1 -1
- package/dist/components/hx-toast/index.js +1 -1
- package/dist/components/hx-toast/toast-factory.d.ts.map +1 -1
- package/dist/components/hx-toggle-button/index.js +1 -1
- package/dist/components/hx-tree-view/hx-tree-item.d.ts +117 -12
- package/dist/components/hx-tree-view/hx-tree-item.d.ts.map +1 -1
- package/dist/components/hx-tree-view/hx-tree-view.d.ts +87 -7
- package/dist/components/hx-tree-view/hx-tree-view.d.ts.map +1 -1
- package/dist/components/hx-tree-view/index.js +1 -1
- package/dist/css/helix-all.css +123 -0
- package/dist/css/helix-core.css +81 -0
- package/dist/css/helix-feedback.css +14 -0
- package/dist/css/helix-forms.css +11 -0
- package/dist/css/helix-overlay.css +17 -0
- package/dist/css/hx-alert.css +9 -0
- package/dist/css/hx-badge.css +28 -0
- package/dist/css/hx-drawer.css +17 -0
- package/dist/css/hx-icon-button.css +30 -0
- package/dist/css/hx-meter.css +5 -0
- package/dist/css/hx-tag.css +23 -0
- package/dist/css/hx-time-picker.css +11 -0
- package/dist/css/index.css +1 -1
- package/dist/css/manifest.json +3 -1
- package/dist/index.js +35 -35
- package/dist/shared/aria-idref-CxvyzfQS.js +126 -0
- package/dist/shared/aria-idref-CxvyzfQS.js.map +1 -0
- package/dist/shared/{hx-alert-CLn7CstP.js → hx-alert-Bto8-TIi.js} +55 -37
- package/dist/shared/hx-alert-Bto8-TIi.js.map +1 -0
- package/dist/shared/{hx-badge-CQXgOXJM.js → hx-badge-JlFtAdxS.js} +37 -9
- package/dist/shared/hx-badge-JlFtAdxS.js.map +1 -0
- package/dist/shared/{hx-banner-D3DzpfcP.js → hx-banner-fpRnciIO.js} +13 -5
- package/dist/shared/hx-banner-fpRnciIO.js.map +1 -0
- package/dist/shared/{hx-button-DPY6SPVT.js → hx-button-BOwAEcF1.js} +108 -85
- package/dist/shared/{hx-button-DPY6SPVT.js.map → hx-button-BOwAEcF1.js.map} +1 -1
- package/dist/shared/{hx-button-group-BI-QBqmO.js → hx-button-group-DcHP5MBv.js} +15 -16
- package/dist/shared/{hx-button-group-BI-QBqmO.js.map → hx-button-group-DcHP5MBv.js.map} +1 -1
- package/dist/shared/{hx-checkbox-BdgoUeWi.js → hx-checkbox-C48KYKFq.js} +87 -87
- package/dist/shared/hx-checkbox-C48KYKFq.js.map +1 -0
- package/dist/shared/{hx-checkbox-group-LWezHrvS.js → hx-checkbox-group-BJIAX3zU.js} +2 -2
- package/dist/shared/{hx-checkbox-group-LWezHrvS.js.map → hx-checkbox-group-BJIAX3zU.js.map} +1 -1
- package/dist/shared/{hx-color-picker-DVhZl88b.js → hx-color-picker-Dk4cBwYQ.js} +2 -2
- package/dist/shared/{hx-color-picker-DVhZl88b.js.map → hx-color-picker-Dk4cBwYQ.js.map} +1 -1
- package/dist/shared/{hx-combobox-DvlezcDV.js → hx-combobox-BTLO9qiK.js} +2 -2
- package/dist/shared/{hx-combobox-DvlezcDV.js.map → hx-combobox-BTLO9qiK.js.map} +1 -1
- package/dist/shared/{hx-data-table-CLqVqdxr.js → hx-data-table-Ct3gQ6ya.js} +3 -2
- package/dist/shared/{hx-data-table-CLqVqdxr.js.map → hx-data-table-Ct3gQ6ya.js.map} +1 -1
- package/dist/shared/{hx-date-picker-N-0aG5XL.js → hx-date-picker-CiR7FVnR.js} +2 -2
- package/dist/shared/{hx-date-picker-N-0aG5XL.js.map → hx-date-picker-CiR7FVnR.js.map} +1 -1
- package/dist/shared/{hx-dialog-DzB7VytW.js → hx-dialog-AOZpHSuF.js} +2 -2
- package/dist/shared/{hx-dialog-DzB7VytW.js.map → hx-dialog-AOZpHSuF.js.map} +1 -1
- package/dist/shared/{hx-drawer-Y1Ui2IWJ.js → hx-drawer-DH6CdAN1.js} +300 -98
- package/dist/shared/hx-drawer-DH6CdAN1.js.map +1 -0
- package/dist/shared/hx-dropdown-DiLd40Lm.js +401 -0
- package/dist/shared/hx-dropdown-DiLd40Lm.js.map +1 -0
- package/dist/shared/{hx-icon-button-CGNdQSFM.js → hx-icon-button-a6OpeQz5.js} +149 -68
- package/dist/shared/hx-icon-button-a6OpeQz5.js.map +1 -0
- package/dist/shared/{hx-link-C-O6vq0Q.js → hx-link-CMnZRUtQ.js} +55 -43
- package/dist/shared/hx-link-CMnZRUtQ.js.map +1 -0
- package/dist/shared/{hx-list-MyEhh8c7.js → hx-list-De66EtAP.js} +163 -107
- package/dist/shared/hx-list-De66EtAP.js.map +1 -0
- package/dist/shared/hx-menu-divider-BjiRIWKq.js +797 -0
- package/dist/shared/hx-menu-divider-BjiRIWKq.js.map +1 -0
- package/dist/shared/{hx-meter-BPscsw5t.js → hx-meter-BJdh6nrF.js} +105 -64
- package/dist/shared/hx-meter-BJdh6nrF.js.map +1 -0
- package/dist/shared/hx-overflow-menu-BQ4fiMYu.js +492 -0
- package/dist/shared/hx-overflow-menu-BQ4fiMYu.js.map +1 -0
- package/dist/shared/hx-phi-field-C19oxlrr.js.map +1 -1
- package/dist/shared/{hx-popover-CHxWY_cd.js → hx-popover-B9W8-tC0.js} +2 -2
- package/dist/shared/{hx-popover-CHxWY_cd.js.map → hx-popover-B9W8-tC0.js.map} +1 -1
- package/dist/shared/hx-progress-bar-C8nDMdYa.js +290 -0
- package/dist/shared/hx-progress-bar-C8nDMdYa.js.map +1 -0
- package/dist/shared/{hx-radio-CeGzARNk.js → hx-radio-Z1lV1zTO.js} +2 -2
- package/dist/shared/{hx-radio-CeGzARNk.js.map → hx-radio-Z1lV1zTO.js.map} +1 -1
- package/dist/shared/{hx-select-DrcS-YRJ.js → hx-select-D18CnJ0e.js} +2 -2
- package/dist/shared/hx-select-D18CnJ0e.js.map +1 -0
- package/dist/shared/{hx-spinner-DL5AYr16.js → hx-spinner-BB0h2hKZ.js} +62 -34
- package/dist/shared/hx-spinner-BB0h2hKZ.js.map +1 -0
- package/dist/shared/{hx-split-button-Djnc5Aeg.js → hx-split-button-BoABoEm5.js} +153 -82
- package/dist/shared/hx-split-button-BoABoEm5.js.map +1 -0
- package/dist/shared/{hx-stat-WOcNV1Ry.js → hx-stat-Dtf9lz-O.js} +77 -47
- package/dist/shared/hx-stat-Dtf9lz-O.js.map +1 -0
- package/dist/shared/{hx-switch-BX_8uNUs.js → hx-switch-B6kr-EwE.js} +2 -2
- package/dist/shared/{hx-switch-BX_8uNUs.js.map → hx-switch-B6kr-EwE.js.map} +1 -1
- package/dist/shared/{hx-tab-panel-DspCrKqo.js → hx-tab-panel-BQtBXKLD.js} +255 -131
- package/dist/shared/hx-tab-panel-BQtBXKLD.js.map +1 -0
- package/dist/shared/{hx-tag-CNSmdyaK.js → hx-tag-C5aCUpVi.js} +63 -40
- package/dist/shared/hx-tag-C5aCUpVi.js.map +1 -0
- package/dist/shared/{hx-td-DnnEMIuA.js → hx-td-BGkFOJEK.js} +267 -123
- package/dist/shared/hx-td-BGkFOJEK.js.map +1 -0
- package/dist/shared/hx-theme-BsefFWTO.js.map +1 -1
- package/dist/shared/hx-time-picker-iwCD7rzW.js +1038 -0
- package/dist/shared/hx-time-picker-iwCD7rzW.js.map +1 -0
- package/dist/shared/{hx-toggle-button-Dcz9IlUm.js → hx-toggle-button-BQ81EDkl.js} +2 -2
- package/dist/shared/{hx-toggle-button-Dcz9IlUm.js.map → hx-toggle-button-BQ81EDkl.js.map} +1 -1
- package/dist/shared/hx-tree-item-CHrUhuZL.js +925 -0
- package/dist/shared/hx-tree-item-CHrUhuZL.js.map +1 -0
- package/dist/shared/menu-roving-DmMnzJhn.js +14 -0
- package/dist/shared/menu-roving-DmMnzJhn.js.map +1 -0
- package/dist/shared/menu-tree-BNM0SYYq.js +42 -0
- package/dist/shared/menu-tree-BNM0SYYq.js.map +1 -0
- package/dist/shared/{toast-factory-YSznocIV.js → toast-factory-CL2BzdSB.js} +128 -77
- package/dist/shared/toast-factory-CL2BzdSB.js.map +1 -0
- package/dist/utils/aria-idref.d.ts.map +1 -1
- package/dist/utils/menu-label.d.ts +18 -0
- package/dist/utils/menu-label.d.ts.map +1 -0
- package/dist/utils/menu-roving.d.ts +28 -0
- package/dist/utils/menu-roving.d.ts.map +1 -0
- package/dist/utils/menu-tree.d.ts +41 -0
- package/dist/utils/menu-tree.d.ts.map +1 -0
- package/dist/utils/tree-walk.d.ts +53 -0
- package/dist/utils/tree-walk.d.ts.map +1 -0
- package/figma-inventory.json +69 -20
- package/package.json +2 -2
- package/dist/shared/aria-idref-Q0yiSR3p.js +0 -104
- package/dist/shared/aria-idref-Q0yiSR3p.js.map +0 -1
- package/dist/shared/hx-alert-CLn7CstP.js.map +0 -1
- package/dist/shared/hx-badge-CQXgOXJM.js.map +0 -1
- package/dist/shared/hx-banner-D3DzpfcP.js.map +0 -1
- package/dist/shared/hx-checkbox-BdgoUeWi.js.map +0 -1
- package/dist/shared/hx-drawer-Y1Ui2IWJ.js.map +0 -1
- package/dist/shared/hx-dropdown-DJWlF94E.js +0 -316
- package/dist/shared/hx-dropdown-DJWlF94E.js.map +0 -1
- package/dist/shared/hx-icon-button-CGNdQSFM.js.map +0 -1
- package/dist/shared/hx-link-C-O6vq0Q.js.map +0 -1
- package/dist/shared/hx-list-MyEhh8c7.js.map +0 -1
- package/dist/shared/hx-menu-divider-C2omnPtj.js +0 -558
- package/dist/shared/hx-menu-divider-C2omnPtj.js.map +0 -1
- package/dist/shared/hx-meter-BPscsw5t.js.map +0 -1
- package/dist/shared/hx-overflow-menu-DCLsdIBy.js +0 -374
- package/dist/shared/hx-overflow-menu-DCLsdIBy.js.map +0 -1
- package/dist/shared/hx-progress-bar-Bn3JEPUf.js +0 -258
- package/dist/shared/hx-progress-bar-Bn3JEPUf.js.map +0 -1
- package/dist/shared/hx-select-DrcS-YRJ.js.map +0 -1
- package/dist/shared/hx-spinner-DL5AYr16.js.map +0 -1
- package/dist/shared/hx-split-button-Djnc5Aeg.js.map +0 -1
- package/dist/shared/hx-stat-WOcNV1Ry.js.map +0 -1
- package/dist/shared/hx-tab-panel-DspCrKqo.js.map +0 -1
- package/dist/shared/hx-tag-CNSmdyaK.js.map +0 -1
- package/dist/shared/hx-td-DnnEMIuA.js.map +0 -1
- package/dist/shared/hx-time-picker-BoEIZwzv.js +0 -688
- package/dist/shared/hx-time-picker-BoEIZwzv.js.map +0 -1
- package/dist/shared/hx-tree-item-C2CiWuDE.js +0 -703
- package/dist/shared/hx-tree-item-C2CiWuDE.js.map +0 -1
- package/dist/shared/toast-factory-YSznocIV.js.map +0 -1
package/custom-elements.json
CHANGED
|
@@ -2,269 +2,6 @@
|
|
|
2
2
|
"schemaVersion": "1.0.0",
|
|
3
3
|
"readme": "",
|
|
4
4
|
"modules": [
|
|
5
|
-
{
|
|
6
|
-
"kind": "javascript-module",
|
|
7
|
-
"path": "src/components/hx-action-bar/hx-action-bar.ts",
|
|
8
|
-
"declarations": [
|
|
9
|
-
{
|
|
10
|
-
"kind": "class",
|
|
11
|
-
"description": "A horizontal toolbar container for grouping related action buttons and controls.\nImplements the ARIA toolbar pattern with roving tabindex keyboard navigation.",
|
|
12
|
-
"name": "HelixActionBar",
|
|
13
|
-
"cssProperties": [
|
|
14
|
-
{
|
|
15
|
-
"description": "Bar background color (default variant).",
|
|
16
|
-
"name": "--hx-action-bar-bg",
|
|
17
|
-
"default": "transparent"
|
|
18
|
-
},
|
|
19
|
-
{
|
|
20
|
-
"description": "Bar border (default variant).",
|
|
21
|
-
"name": "--hx-action-bar-border",
|
|
22
|
-
"default": "none"
|
|
23
|
-
},
|
|
24
|
-
{
|
|
25
|
-
"description": "Inner padding.",
|
|
26
|
-
"name": "--hx-action-bar-padding",
|
|
27
|
-
"default": "var(--hx-space-2,0.5rem) var(--hx-space-3,0.75rem)"
|
|
28
|
-
},
|
|
29
|
-
{
|
|
30
|
-
"description": "Gap between slotted items.",
|
|
31
|
-
"name": "--hx-action-bar-gap",
|
|
32
|
-
"default": "var(--hx-space-2,0.5rem)"
|
|
33
|
-
},
|
|
34
|
-
{
|
|
35
|
-
"description": "Z-index when sticky or bottom position.",
|
|
36
|
-
"name": "--hx-action-bar-z-index",
|
|
37
|
-
"default": "10"
|
|
38
|
-
},
|
|
39
|
-
{
|
|
40
|
-
"description": "Padding.",
|
|
41
|
-
"name": "--hx-action-bar-padding-block-start",
|
|
42
|
-
"default": "0px"
|
|
43
|
-
},
|
|
44
|
-
{
|
|
45
|
-
"description": "Padding.",
|
|
46
|
-
"name": "--hx-action-bar-padding-block-end",
|
|
47
|
-
"default": "0px"
|
|
48
|
-
},
|
|
49
|
-
{
|
|
50
|
-
"description": "CSS custom property.",
|
|
51
|
-
"name": "--hx-border-radius-md"
|
|
52
|
-
},
|
|
53
|
-
{
|
|
54
|
-
"description": "Width.",
|
|
55
|
-
"name": "--hx-border-width-thin"
|
|
56
|
-
},
|
|
57
|
-
{
|
|
58
|
-
"description": "Color.",
|
|
59
|
-
"name": "--hx-color-neutral-0"
|
|
60
|
-
},
|
|
61
|
-
{
|
|
62
|
-
"description": "Color.",
|
|
63
|
-
"name": "--hx-color-neutral-200"
|
|
64
|
-
},
|
|
65
|
-
{
|
|
66
|
-
"description": "Color.",
|
|
67
|
-
"name": "--hx-color-neutral-50"
|
|
68
|
-
},
|
|
69
|
-
{
|
|
70
|
-
"description": "Size token.",
|
|
71
|
-
"name": "--hx-size-8"
|
|
72
|
-
},
|
|
73
|
-
{
|
|
74
|
-
"description": "Size token.",
|
|
75
|
-
"name": "--hx-size-10"
|
|
76
|
-
},
|
|
77
|
-
{
|
|
78
|
-
"description": "Size token.",
|
|
79
|
-
"name": "--hx-size-12"
|
|
80
|
-
},
|
|
81
|
-
{
|
|
82
|
-
"description": "Spacing token.",
|
|
83
|
-
"name": "--hx-space-1"
|
|
84
|
-
},
|
|
85
|
-
{
|
|
86
|
-
"description": "Spacing token.",
|
|
87
|
-
"name": "--hx-space-2"
|
|
88
|
-
},
|
|
89
|
-
{
|
|
90
|
-
"description": "Spacing token.",
|
|
91
|
-
"name": "--hx-space-3"
|
|
92
|
-
},
|
|
93
|
-
{
|
|
94
|
-
"description": "Spacing token.",
|
|
95
|
-
"name": "--hx-space-4"
|
|
96
|
-
}
|
|
97
|
-
],
|
|
98
|
-
"cssParts": [
|
|
99
|
-
{
|
|
100
|
-
"description": "The root toolbar container element.",
|
|
101
|
-
"name": "base"
|
|
102
|
-
},
|
|
103
|
-
{
|
|
104
|
-
"description": "The start (left) slot wrapper.",
|
|
105
|
-
"name": "start"
|
|
106
|
-
},
|
|
107
|
-
{
|
|
108
|
-
"description": "The center (default) slot wrapper.",
|
|
109
|
-
"name": "center"
|
|
110
|
-
},
|
|
111
|
-
{
|
|
112
|
-
"description": "The end (right) slot wrapper.",
|
|
113
|
-
"name": "end"
|
|
114
|
-
},
|
|
115
|
-
{
|
|
116
|
-
"description": "The overflow slot wrapper (hidden when no overflow content).",
|
|
117
|
-
"name": "overflow"
|
|
118
|
-
}
|
|
119
|
-
],
|
|
120
|
-
"slots": [
|
|
121
|
-
{
|
|
122
|
-
"description": "Left-aligned actions.",
|
|
123
|
-
"name": "start"
|
|
124
|
-
},
|
|
125
|
-
{
|
|
126
|
-
"description": "Center content (default slot).",
|
|
127
|
-
"name": ""
|
|
128
|
-
},
|
|
129
|
-
{
|
|
130
|
-
"description": "Right-aligned actions.",
|
|
131
|
-
"name": "end"
|
|
132
|
-
},
|
|
133
|
-
{
|
|
134
|
-
"description": "Actions revealed when the bar is constrained for space.",
|
|
135
|
-
"name": "overflow"
|
|
136
|
-
}
|
|
137
|
-
],
|
|
138
|
-
"members": [
|
|
139
|
-
{
|
|
140
|
-
"kind": "field",
|
|
141
|
-
"name": "size",
|
|
142
|
-
"type": {
|
|
143
|
-
"text": "'sm' | 'md' | 'lg'"
|
|
144
|
-
},
|
|
145
|
-
"default": "'md'",
|
|
146
|
-
"description": "Size of the action bar — propagated as a data attribute to slotted children.",
|
|
147
|
-
"attribute": "hx-size",
|
|
148
|
-
"reflects": true
|
|
149
|
-
},
|
|
150
|
-
{
|
|
151
|
-
"kind": "field",
|
|
152
|
-
"name": "variant",
|
|
153
|
-
"type": {
|
|
154
|
-
"text": "'default' | 'outlined' | 'filled'"
|
|
155
|
-
},
|
|
156
|
-
"default": "'default'",
|
|
157
|
-
"description": "Visual variant controlling the bar background.",
|
|
158
|
-
"attribute": "variant",
|
|
159
|
-
"reflects": true
|
|
160
|
-
},
|
|
161
|
-
{
|
|
162
|
-
"kind": "field",
|
|
163
|
-
"name": "position",
|
|
164
|
-
"type": {
|
|
165
|
-
"text": "'top' | 'bottom' | 'sticky'"
|
|
166
|
-
},
|
|
167
|
-
"default": "'top'",
|
|
168
|
-
"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",
|
|
169
|
-
"attribute": "position",
|
|
170
|
-
"reflects": true
|
|
171
|
-
},
|
|
172
|
-
{
|
|
173
|
-
"kind": "field",
|
|
174
|
-
"name": "accessibleLabel",
|
|
175
|
-
"type": {
|
|
176
|
-
"text": "string"
|
|
177
|
-
},
|
|
178
|
-
"default": "''",
|
|
179
|
-
"description": "Accessible label for the toolbar.\nRequired when multiple toolbars appear on the same page.\n\nAccepts both `accessible-label` and the standard `aria-label` HTML attribute.\nThe `accessible-label` attribute takes precedence when both are set.\n\nPreviously this was exposed as the `ariaLabel` JS property, which shadowed\nthe native `HTMLElement.ariaLabel`. That shadowing is removed; use\n`accessibleLabel` or the HTML attributes instead.",
|
|
180
|
-
"attribute": "accessible-label"
|
|
181
|
-
}
|
|
182
|
-
],
|
|
183
|
-
"attributes": [
|
|
184
|
-
{
|
|
185
|
-
"name": "hx-size",
|
|
186
|
-
"type": {
|
|
187
|
-
"text": "'sm' | 'md' | 'lg'"
|
|
188
|
-
},
|
|
189
|
-
"default": "'md'",
|
|
190
|
-
"description": "Size of the action bar — propagated as a data attribute to slotted children.",
|
|
191
|
-
"fieldName": "size",
|
|
192
|
-
"attribute": "hx-size"
|
|
193
|
-
},
|
|
194
|
-
{
|
|
195
|
-
"name": "variant",
|
|
196
|
-
"type": {
|
|
197
|
-
"text": "'default' | 'outlined' | 'filled'"
|
|
198
|
-
},
|
|
199
|
-
"default": "'default'",
|
|
200
|
-
"description": "Visual variant controlling the bar background.",
|
|
201
|
-
"fieldName": "variant",
|
|
202
|
-
"attribute": "variant"
|
|
203
|
-
},
|
|
204
|
-
{
|
|
205
|
-
"name": "position",
|
|
206
|
-
"type": {
|
|
207
|
-
"text": "'top' | 'bottom' | 'sticky'"
|
|
208
|
-
},
|
|
209
|
-
"default": "'top'",
|
|
210
|
-
"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",
|
|
211
|
-
"fieldName": "position",
|
|
212
|
-
"attribute": "position"
|
|
213
|
-
},
|
|
214
|
-
{
|
|
215
|
-
"name": "accessible-label",
|
|
216
|
-
"type": {
|
|
217
|
-
"text": "string"
|
|
218
|
-
},
|
|
219
|
-
"default": "''",
|
|
220
|
-
"description": "Accessible label for the toolbar.\nRequired when multiple toolbars appear on the same page.\n\nAccepts both `accessible-label` and the standard `aria-label` HTML attribute.\nThe `accessible-label` attribute takes precedence when both are set.\n\nPreviously this was exposed as the `ariaLabel` JS property, which shadowed\nthe native `HTMLElement.ariaLabel`. That shadowing is removed; use\n`accessibleLabel` or the HTML attributes instead.",
|
|
221
|
-
"fieldName": "accessibleLabel",
|
|
222
|
-
"attribute": "accessible-label"
|
|
223
|
-
}
|
|
224
|
-
],
|
|
225
|
-
"superclass": {
|
|
226
|
-
"name": "HelixElement",
|
|
227
|
-
"module": "/src/base/index.js"
|
|
228
|
-
},
|
|
229
|
-
"tagName": "hx-action-bar",
|
|
230
|
-
"customElement": true,
|
|
231
|
-
"summary": "Horizontal action bar for grouping related controls."
|
|
232
|
-
}
|
|
233
|
-
],
|
|
234
|
-
"exports": [
|
|
235
|
-
{
|
|
236
|
-
"kind": "js",
|
|
237
|
-
"name": "HelixActionBar",
|
|
238
|
-
"declaration": {
|
|
239
|
-
"name": "HelixActionBar",
|
|
240
|
-
"module": "src/components/hx-action-bar/hx-action-bar.ts"
|
|
241
|
-
}
|
|
242
|
-
},
|
|
243
|
-
{
|
|
244
|
-
"kind": "custom-element-definition",
|
|
245
|
-
"name": "hx-action-bar",
|
|
246
|
-
"declaration": {
|
|
247
|
-
"name": "HelixActionBar",
|
|
248
|
-
"module": "src/components/hx-action-bar/hx-action-bar.ts"
|
|
249
|
-
}
|
|
250
|
-
}
|
|
251
|
-
]
|
|
252
|
-
},
|
|
253
|
-
{
|
|
254
|
-
"kind": "javascript-module",
|
|
255
|
-
"path": "src/components/hx-action-bar/index.ts",
|
|
256
|
-
"declarations": [],
|
|
257
|
-
"exports": [
|
|
258
|
-
{
|
|
259
|
-
"kind": "js",
|
|
260
|
-
"name": "HelixActionBar",
|
|
261
|
-
"declaration": {
|
|
262
|
-
"name": "HelixActionBar",
|
|
263
|
-
"module": "./hx-action-bar.js"
|
|
264
|
-
}
|
|
265
|
-
}
|
|
266
|
-
]
|
|
267
|
-
},
|
|
268
5
|
{
|
|
269
6
|
"kind": "javascript-module",
|
|
270
7
|
"path": "src/components/hx-accordion/hx-accordion-item.ts",
|
|
@@ -585,6 +322,269 @@
|
|
|
585
322
|
}
|
|
586
323
|
]
|
|
587
324
|
},
|
|
325
|
+
{
|
|
326
|
+
"kind": "javascript-module",
|
|
327
|
+
"path": "src/components/hx-action-bar/hx-action-bar.ts",
|
|
328
|
+
"declarations": [
|
|
329
|
+
{
|
|
330
|
+
"kind": "class",
|
|
331
|
+
"description": "A horizontal toolbar container for grouping related action buttons and controls.\nImplements the ARIA toolbar pattern with roving tabindex keyboard navigation.",
|
|
332
|
+
"name": "HelixActionBar",
|
|
333
|
+
"cssProperties": [
|
|
334
|
+
{
|
|
335
|
+
"description": "Bar background color (default variant).",
|
|
336
|
+
"name": "--hx-action-bar-bg",
|
|
337
|
+
"default": "transparent"
|
|
338
|
+
},
|
|
339
|
+
{
|
|
340
|
+
"description": "Bar border (default variant).",
|
|
341
|
+
"name": "--hx-action-bar-border",
|
|
342
|
+
"default": "none"
|
|
343
|
+
},
|
|
344
|
+
{
|
|
345
|
+
"description": "Inner padding.",
|
|
346
|
+
"name": "--hx-action-bar-padding",
|
|
347
|
+
"default": "var(--hx-space-2,0.5rem) var(--hx-space-3,0.75rem)"
|
|
348
|
+
},
|
|
349
|
+
{
|
|
350
|
+
"description": "Gap between slotted items.",
|
|
351
|
+
"name": "--hx-action-bar-gap",
|
|
352
|
+
"default": "var(--hx-space-2,0.5rem)"
|
|
353
|
+
},
|
|
354
|
+
{
|
|
355
|
+
"description": "Z-index when sticky or bottom position.",
|
|
356
|
+
"name": "--hx-action-bar-z-index",
|
|
357
|
+
"default": "10"
|
|
358
|
+
},
|
|
359
|
+
{
|
|
360
|
+
"description": "Padding.",
|
|
361
|
+
"name": "--hx-action-bar-padding-block-start",
|
|
362
|
+
"default": "0px"
|
|
363
|
+
},
|
|
364
|
+
{
|
|
365
|
+
"description": "Padding.",
|
|
366
|
+
"name": "--hx-action-bar-padding-block-end",
|
|
367
|
+
"default": "0px"
|
|
368
|
+
},
|
|
369
|
+
{
|
|
370
|
+
"description": "CSS custom property.",
|
|
371
|
+
"name": "--hx-border-radius-md"
|
|
372
|
+
},
|
|
373
|
+
{
|
|
374
|
+
"description": "Width.",
|
|
375
|
+
"name": "--hx-border-width-thin"
|
|
376
|
+
},
|
|
377
|
+
{
|
|
378
|
+
"description": "Color.",
|
|
379
|
+
"name": "--hx-color-neutral-0"
|
|
380
|
+
},
|
|
381
|
+
{
|
|
382
|
+
"description": "Color.",
|
|
383
|
+
"name": "--hx-color-neutral-200"
|
|
384
|
+
},
|
|
385
|
+
{
|
|
386
|
+
"description": "Color.",
|
|
387
|
+
"name": "--hx-color-neutral-50"
|
|
388
|
+
},
|
|
389
|
+
{
|
|
390
|
+
"description": "Size token.",
|
|
391
|
+
"name": "--hx-size-8"
|
|
392
|
+
},
|
|
393
|
+
{
|
|
394
|
+
"description": "Size token.",
|
|
395
|
+
"name": "--hx-size-10"
|
|
396
|
+
},
|
|
397
|
+
{
|
|
398
|
+
"description": "Size token.",
|
|
399
|
+
"name": "--hx-size-12"
|
|
400
|
+
},
|
|
401
|
+
{
|
|
402
|
+
"description": "Spacing token.",
|
|
403
|
+
"name": "--hx-space-1"
|
|
404
|
+
},
|
|
405
|
+
{
|
|
406
|
+
"description": "Spacing token.",
|
|
407
|
+
"name": "--hx-space-2"
|
|
408
|
+
},
|
|
409
|
+
{
|
|
410
|
+
"description": "Spacing token.",
|
|
411
|
+
"name": "--hx-space-3"
|
|
412
|
+
},
|
|
413
|
+
{
|
|
414
|
+
"description": "Spacing token.",
|
|
415
|
+
"name": "--hx-space-4"
|
|
416
|
+
}
|
|
417
|
+
],
|
|
418
|
+
"cssParts": [
|
|
419
|
+
{
|
|
420
|
+
"description": "The root toolbar container element.",
|
|
421
|
+
"name": "base"
|
|
422
|
+
},
|
|
423
|
+
{
|
|
424
|
+
"description": "The start (left) slot wrapper.",
|
|
425
|
+
"name": "start"
|
|
426
|
+
},
|
|
427
|
+
{
|
|
428
|
+
"description": "The center (default) slot wrapper.",
|
|
429
|
+
"name": "center"
|
|
430
|
+
},
|
|
431
|
+
{
|
|
432
|
+
"description": "The end (right) slot wrapper.",
|
|
433
|
+
"name": "end"
|
|
434
|
+
},
|
|
435
|
+
{
|
|
436
|
+
"description": "The overflow slot wrapper (hidden when no overflow content).",
|
|
437
|
+
"name": "overflow"
|
|
438
|
+
}
|
|
439
|
+
],
|
|
440
|
+
"slots": [
|
|
441
|
+
{
|
|
442
|
+
"description": "Left-aligned actions.",
|
|
443
|
+
"name": "start"
|
|
444
|
+
},
|
|
445
|
+
{
|
|
446
|
+
"description": "Center content (default slot).",
|
|
447
|
+
"name": ""
|
|
448
|
+
},
|
|
449
|
+
{
|
|
450
|
+
"description": "Right-aligned actions.",
|
|
451
|
+
"name": "end"
|
|
452
|
+
},
|
|
453
|
+
{
|
|
454
|
+
"description": "Actions revealed when the bar is constrained for space.",
|
|
455
|
+
"name": "overflow"
|
|
456
|
+
}
|
|
457
|
+
],
|
|
458
|
+
"members": [
|
|
459
|
+
{
|
|
460
|
+
"kind": "field",
|
|
461
|
+
"name": "size",
|
|
462
|
+
"type": {
|
|
463
|
+
"text": "'sm' | 'md' | 'lg'"
|
|
464
|
+
},
|
|
465
|
+
"default": "'md'",
|
|
466
|
+
"description": "Size of the action bar — propagated as a data attribute to slotted children.",
|
|
467
|
+
"attribute": "hx-size",
|
|
468
|
+
"reflects": true
|
|
469
|
+
},
|
|
470
|
+
{
|
|
471
|
+
"kind": "field",
|
|
472
|
+
"name": "variant",
|
|
473
|
+
"type": {
|
|
474
|
+
"text": "'default' | 'outlined' | 'filled'"
|
|
475
|
+
},
|
|
476
|
+
"default": "'default'",
|
|
477
|
+
"description": "Visual variant controlling the bar background.",
|
|
478
|
+
"attribute": "variant",
|
|
479
|
+
"reflects": true
|
|
480
|
+
},
|
|
481
|
+
{
|
|
482
|
+
"kind": "field",
|
|
483
|
+
"name": "position",
|
|
484
|
+
"type": {
|
|
485
|
+
"text": "'top' | 'bottom' | 'sticky'"
|
|
486
|
+
},
|
|
487
|
+
"default": "'top'",
|
|
488
|
+
"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",
|
|
489
|
+
"attribute": "position",
|
|
490
|
+
"reflects": true
|
|
491
|
+
},
|
|
492
|
+
{
|
|
493
|
+
"kind": "field",
|
|
494
|
+
"name": "accessibleLabel",
|
|
495
|
+
"type": {
|
|
496
|
+
"text": "string"
|
|
497
|
+
},
|
|
498
|
+
"default": "''",
|
|
499
|
+
"description": "Accessible label for the toolbar.\nRequired when multiple toolbars appear on the same page.\n\nAccepts both `accessible-label` and the standard `aria-label` HTML attribute.\nThe `accessible-label` attribute takes precedence when both are set.\n\nPreviously this was exposed as the `ariaLabel` JS property, which shadowed\nthe native `HTMLElement.ariaLabel`. That shadowing is removed; use\n`accessibleLabel` or the HTML attributes instead.",
|
|
500
|
+
"attribute": "accessible-label"
|
|
501
|
+
}
|
|
502
|
+
],
|
|
503
|
+
"attributes": [
|
|
504
|
+
{
|
|
505
|
+
"name": "hx-size",
|
|
506
|
+
"type": {
|
|
507
|
+
"text": "'sm' | 'md' | 'lg'"
|
|
508
|
+
},
|
|
509
|
+
"default": "'md'",
|
|
510
|
+
"description": "Size of the action bar — propagated as a data attribute to slotted children.",
|
|
511
|
+
"fieldName": "size",
|
|
512
|
+
"attribute": "hx-size"
|
|
513
|
+
},
|
|
514
|
+
{
|
|
515
|
+
"name": "variant",
|
|
516
|
+
"type": {
|
|
517
|
+
"text": "'default' | 'outlined' | 'filled'"
|
|
518
|
+
},
|
|
519
|
+
"default": "'default'",
|
|
520
|
+
"description": "Visual variant controlling the bar background.",
|
|
521
|
+
"fieldName": "variant",
|
|
522
|
+
"attribute": "variant"
|
|
523
|
+
},
|
|
524
|
+
{
|
|
525
|
+
"name": "position",
|
|
526
|
+
"type": {
|
|
527
|
+
"text": "'top' | 'bottom' | 'sticky'"
|
|
528
|
+
},
|
|
529
|
+
"default": "'top'",
|
|
530
|
+
"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",
|
|
531
|
+
"fieldName": "position",
|
|
532
|
+
"attribute": "position"
|
|
533
|
+
},
|
|
534
|
+
{
|
|
535
|
+
"name": "accessible-label",
|
|
536
|
+
"type": {
|
|
537
|
+
"text": "string"
|
|
538
|
+
},
|
|
539
|
+
"default": "''",
|
|
540
|
+
"description": "Accessible label for the toolbar.\nRequired when multiple toolbars appear on the same page.\n\nAccepts both `accessible-label` and the standard `aria-label` HTML attribute.\nThe `accessible-label` attribute takes precedence when both are set.\n\nPreviously this was exposed as the `ariaLabel` JS property, which shadowed\nthe native `HTMLElement.ariaLabel`. That shadowing is removed; use\n`accessibleLabel` or the HTML attributes instead.",
|
|
541
|
+
"fieldName": "accessibleLabel",
|
|
542
|
+
"attribute": "accessible-label"
|
|
543
|
+
}
|
|
544
|
+
],
|
|
545
|
+
"superclass": {
|
|
546
|
+
"name": "HelixElement",
|
|
547
|
+
"module": "/src/base/index.js"
|
|
548
|
+
},
|
|
549
|
+
"tagName": "hx-action-bar",
|
|
550
|
+
"customElement": true,
|
|
551
|
+
"summary": "Horizontal action bar for grouping related controls."
|
|
552
|
+
}
|
|
553
|
+
],
|
|
554
|
+
"exports": [
|
|
555
|
+
{
|
|
556
|
+
"kind": "js",
|
|
557
|
+
"name": "HelixActionBar",
|
|
558
|
+
"declaration": {
|
|
559
|
+
"name": "HelixActionBar",
|
|
560
|
+
"module": "src/components/hx-action-bar/hx-action-bar.ts"
|
|
561
|
+
}
|
|
562
|
+
},
|
|
563
|
+
{
|
|
564
|
+
"kind": "custom-element-definition",
|
|
565
|
+
"name": "hx-action-bar",
|
|
566
|
+
"declaration": {
|
|
567
|
+
"name": "HelixActionBar",
|
|
568
|
+
"module": "src/components/hx-action-bar/hx-action-bar.ts"
|
|
569
|
+
}
|
|
570
|
+
}
|
|
571
|
+
]
|
|
572
|
+
},
|
|
573
|
+
{
|
|
574
|
+
"kind": "javascript-module",
|
|
575
|
+
"path": "src/components/hx-action-bar/index.ts",
|
|
576
|
+
"declarations": [],
|
|
577
|
+
"exports": [
|
|
578
|
+
{
|
|
579
|
+
"kind": "js",
|
|
580
|
+
"name": "HelixActionBar",
|
|
581
|
+
"declaration": {
|
|
582
|
+
"name": "HelixActionBar",
|
|
583
|
+
"module": "./hx-action-bar.js"
|
|
584
|
+
}
|
|
585
|
+
}
|
|
586
|
+
]
|
|
587
|
+
},
|
|
588
588
|
{
|
|
589
589
|
"kind": "javascript-module",
|
|
590
590
|
"path": "src/components/hx-alert/hx-alert.ts",
|
|
@@ -11177,7 +11177,7 @@
|
|
|
11177
11177
|
"declarations": [
|
|
11178
11178
|
{
|
|
11179
11179
|
"kind": "class",
|
|
11180
|
-
"description": "A slide-in drawer panel that can appear from any edge of the viewport.\nSupports focus trapping, overlay backdrop, keyboard navigation, and full\nARIA labelling for enterprise healthcare accessibility requirements.\n\n## Architecture Note: Native `<dialog>` Migration\n\nThis component currently uses `role=\"dialog\"` + `aria-modal=\"true\"` on a\n`<div>` rather than the native `<dialog>` element. This is intentional for\nthe current release because:\n\n1. **SSR compatibility**: Native `<dialog>` requires `showModal()` to activate\n its modal behavior (focus trapping, backdrop, top-layer). This JavaScript\n call is not available during server-side rendering, which is a primary\n consumption pattern for Drupal/Twig templates.\n\n2. **Contained mode**: The `contained` property constrains the drawer to a\n positioned parent. Native `<dialog>` in modal mode renders in the top layer\n and cannot be constrained to a parent element.\n\n3. **Animation control**: The current CSS transition approach provides precise\n control over slide-in/slide-out animations. Native `<dialog>` `::backdrop`\n animations have inconsistent cross-browser support.\n\nMigration to native `<dialog>` is tracked as a future enhancement. When browser\nsupport for `CloseWatcher`, `::backdrop` transitions, and declarative dialog\nopening stabilizes, this component will be migrated to native semantics.",
|
|
11180
|
+
"description": "A slide-in drawer panel that can appear from any edge of the viewport.\nSupports focus trapping, overlay backdrop, keyboard navigation, and full\nARIA labelling for enterprise healthcare accessibility requirements.\n\n## Architecture Note: Host-Canonical ARIA (group-4 round-1, Path A)\n\nThe host carries the announced dialog semantics via `ElementInternals`:\n\n - `internals.role = 'dialog'` (the host IS the dialog surface)\n - `internals.ariaModal = 'true'` (modality declared on host)\n - `internals.ariaLabelledByElements` / `internals.ariaDescribedByElements`\n project consumer light-DOM IDREFs across the shadow boundary.\n - `internals.ariaLabel` carries the resolved fallback name when no\n IDREF chain or slotted title exists.\n\nThe inner `<div part=\"overlay\">` no longer carries `role`, `aria-modal`,\n`aria-labelledby`, or `aria-label` — those would create a nested-dialog\nannouncement above the host's canonical surface. Belt-and-suspenders\nfallback: when the runtime does NOT expose IDL element references on\n`ElementInternals` (older Firefox / Safari builds), the resolved label\ntext is text-flattened and written to the inner overlay's `aria-label`\nso AT walking down from the host still finds an announceable name.\n\nNaming precedence (W3C AccName 1.2 §4.3.1):\n\n 1. Consumer `aria-labelledby` on the host — IDREFs resolved across the\n shadow boundary via `resolveIdrefTokens` (same scope walk used by\n every host-canonical hx-* control: own root → ancestor shadow hosts\n → owner document → slot owners).\n 2. Consumer `aria-label` on the host.\n 3. `<slot name=\"label\">` text content (multi-node aggregation per\n AccName 1.2 §4.3.10 — decorative `aria-hidden` / `[hidden]` subtrees\n contribute zero to the name).\n 4. `label` property — explicit author fallback string.\n 5. Hard-coded literal `\"Drawer\"` (last-resort accessible name).\n\nDescription channel: a synthesized `<span id=\"${id}-consumer-desc\">` is\nrendered inside the shadow root and updated to mirror consumer-resolved\ndescription text. The host's `internals.ariaDescribedByElements` carries\nthe live element references on the modern path; the in-shadow span is the\nfallback target for AT that does not walk IDL refs. `aria-description` is\nintentionally NEVER written — the W3C AccName algorithm ignores it\nwhenever `aria-describedby` is also present.\n\nSlot mutation observers track:\n 1. The label slot's text content (in-place i18n re-renders).\n 2. Consumer-resolved external IDREF targets (so a consumer mutating\n `<label id=\"x\">Patient</label>` in place re-flows the name).\n 3. Host attribute mutations (delegated to `installAriaIdrefMirror`,\n which also catches late-inserted IDREF targets and id renames in\n every relevant root).\n\nFocus trap, ESC dismiss, focus-restore, and the inert-outside-content\nsibling-walk are unchanged from the pre-host-canonical implementation —\nthey operate against the shadow-internal panel which is still the focus\ntarget for keyboard users.\n\n## Architecture Note: Native `<dialog>` Migration\n\nThis component currently uses `role=\"dialog\"` + `aria-modal=\"true\"` on a\n`<div>` rather than the native `<dialog>` element. This is intentional for\nthe current release because:\n\n1. **SSR compatibility**: Native `<dialog>` requires `showModal()` to activate\n its modal behavior (focus trapping, backdrop, top-layer). This JavaScript\n call is not available during server-side rendering, which is a primary\n consumption pattern for Drupal/Twig templates.\n\n2. **Contained mode**: The `contained` property constrains the drawer to a\n positioned parent. Native `<dialog>` in modal mode renders in the top layer\n and cannot be constrained to a parent element.\n\n3. **Animation control**: The current CSS transition approach provides precise\n control over slide-in/slide-out animations. Native `<dialog>` `::backdrop`\n animations have inconsistent cross-browser support.\n\nMigration to native `<dialog>` is tracked as a future enhancement. When browser\nsupport for `CloseWatcher`, `::backdrop` transitions, and declarative dialog\nopening stabilizes, this component will be migrated to native semantics.",
|
|
11181
11181
|
"name": "HelixDrawer",
|
|
11182
11182
|
"cssProperties": [
|
|
11183
11183
|
{
|
|
@@ -11682,7 +11682,7 @@
|
|
|
11682
11682
|
"declarations": [
|
|
11683
11683
|
{
|
|
11684
11684
|
"kind": "class",
|
|
11685
|
-
"description": "A dropdown component — a button that opens a floating panel on click.\n\n## Architecture Note: Host-Attribute Label Mirror (group-4 round-1)\n\nThe announced surface is the inner `[part=\"panel\"]` element, which carries\n`role=\"menu\"`. The host wraps a slotted trigger and the floating panel and\ndoes NOT claim a role itself (apart from the round-35-style host\n`aria-expanded` fallback used only when the trigger slot is empty).\n\nBecause the panel lives in shadow DOM and `ElementInternals` IDL refs on\nthe host project semantics OUTWARD (host → AT) rather than INWARD\n(host → shadow descendant), we use the **host-attribute mirror** pattern:\nresolve consumer `aria-labelledby` IDREFs against the host's composed-tree\nroots, text-flatten via `flattenAccName`, and write the result to the\npanel's `aria-label`. Host `aria-label` outranks the `label` property in\nthe same precedence used by every host-canonical hx-* control.\n\nNaming precedence (W3C AccName 1.2 §4.3.1):\n 1. Host `aria-labelledby` (resolved IDREFs, text-flattened)\n 2. Host `aria-label`\n 3. `label` property\n 4. Hard-coded literal `\"Menu\"` (last-resort accessible name)\n\n**Group
|
|
11685
|
+
"description": "A dropdown component — a button that opens a floating panel on click.\n\n## Architecture Note: Host-Attribute Label Mirror (group-4 round-1)\n\nThe announced surface is the inner `[part=\"panel\"]` element, which carries\n`role=\"menu\"`. The host wraps a slotted trigger and the floating panel and\ndoes NOT claim a role itself (apart from the round-35-style host\n`aria-expanded` fallback used only when the trigger slot is empty).\n\nBecause the panel lives in shadow DOM and `ElementInternals` IDL refs on\nthe host project semantics OUTWARD (host → AT) rather than INWARD\n(host → shadow descendant), we use the **host-attribute mirror** pattern:\nresolve consumer `aria-labelledby` IDREFs against the host's composed-tree\nroots, text-flatten via `flattenAccName`, and write the result to the\npanel's `aria-label`. Host `aria-label` outranks the `label` property in\nthe same precedence used by every host-canonical hx-* control.\n\nNaming precedence (W3C AccName 1.2 §4.3.1):\n 1. Host `aria-labelledby` (resolved IDREFs, text-flattened)\n 2. Host `aria-label`\n 3. `label` property\n 4. Hard-coded literal `\"Menu\"` (last-resort accessible name)\n\n**Group 4b → Group 5b boundary:** Group 4b added the host-attribute\nlabel mirror **only** — additive on top of the existing dropdown\nbehaviour. Group 5b (this commit) adds the composite-navigation\nportion that 4b explicitly deferred:\n - **Roving tabindex** inside the panel (`_applyRovingTabIndex` +\n `_rovingIndex`). Only the focused item carries `tabindex=0`.\n - **First-character typeahead** with 500ms timeout (`_handleTypeahead`)\n matching `hx-menu`, `hx-overflow-menu`, `hx-split-button`.\n - Submenu auto-handling is delegated to slotted `hx-menu` /\n `hx-menu-item` (whose `hx-item-submenu-open` / `hx-item-submenu-close`\n events are auto-handled by the parent `hx-menu` after Group 5b).\n\nThe panel's inner-div `role=\"menu\"` is intentionally NOT migrated to\nthe host: the host wraps a slotted consumer trigger AND the panel,\nso it cannot canonically carry the menu role. Slotted `hx-menu-item`\nchildren carry `role=\"menuitem\"` on their HOST after Group 5b's menu\nmigration, which fixes the cross-shadow walk concern from the\nconsumer's perspective.\n\n`aria-controls` is intentionally omitted on the trigger: the panel lives\nin shadow DOM and IDREF values cannot be resolved across shadow\nboundaries by assistive technology (axe-core flags this as a critical\nviolation if attempted). See `_setupTriggerAria` for the inline note.",
|
|
11686
11686
|
"name": "HelixDropdown",
|
|
11687
11687
|
"cssProperties": [
|
|
11688
11688
|
{
|
|
@@ -14613,6 +14613,10 @@
|
|
|
14613
14613
|
{
|
|
14614
14614
|
"description": "The icon container span wrapping the default slot.",
|
|
14615
14615
|
"name": "icon"
|
|
14616
|
+
},
|
|
14617
|
+
{
|
|
14618
|
+
"description": "The loading spinner SVG element shown when `loading` is true.",
|
|
14619
|
+
"name": "spinner"
|
|
14616
14620
|
}
|
|
14617
14621
|
],
|
|
14618
14622
|
"slots": [
|
|
@@ -14675,6 +14679,17 @@
|
|
|
14675
14679
|
"attribute": "disabled",
|
|
14676
14680
|
"reflects": true
|
|
14677
14681
|
},
|
|
14682
|
+
{
|
|
14683
|
+
"kind": "field",
|
|
14684
|
+
"name": "loading",
|
|
14685
|
+
"type": {
|
|
14686
|
+
"text": "boolean"
|
|
14687
|
+
},
|
|
14688
|
+
"default": "false",
|
|
14689
|
+
"description": "Whether the button is in a loading state. Shows the spinner, prevents\nactivation, and sets `aria-busy=\"true\"` on the inner element. Does NOT\nset the native `disabled` attribute (loading is transient; disabled is\npersistent, and AT announces them differently).",
|
|
14690
|
+
"attribute": "loading",
|
|
14691
|
+
"reflects": true
|
|
14692
|
+
},
|
|
14678
14693
|
{
|
|
14679
14694
|
"kind": "field",
|
|
14680
14695
|
"name": "href",
|
|
@@ -14784,6 +14799,16 @@
|
|
|
14784
14799
|
"fieldName": "disabled",
|
|
14785
14800
|
"attribute": "disabled"
|
|
14786
14801
|
},
|
|
14802
|
+
{
|
|
14803
|
+
"name": "loading",
|
|
14804
|
+
"type": {
|
|
14805
|
+
"text": "boolean"
|
|
14806
|
+
},
|
|
14807
|
+
"default": "false",
|
|
14808
|
+
"description": "Whether the button is in a loading state. Shows the spinner, prevents\nactivation, and sets `aria-busy=\"true\"` on the inner element. Does NOT\nset the native `disabled` attribute (loading is transient; disabled is\npersistent, and AT announces them differently).",
|
|
14809
|
+
"fieldName": "loading",
|
|
14810
|
+
"attribute": "loading"
|
|
14811
|
+
},
|
|
14787
14812
|
{
|
|
14788
14813
|
"name": "href",
|
|
14789
14814
|
"type": {
|
|
@@ -14815,6 +14840,12 @@
|
|
|
14815
14840
|
"attribute": "value"
|
|
14816
14841
|
}
|
|
14817
14842
|
],
|
|
14843
|
+
"mixins": [
|
|
14844
|
+
{
|
|
14845
|
+
"name": "mixinDelegatesAria",
|
|
14846
|
+
"module": "/src/mixins/index.js"
|
|
14847
|
+
}
|
|
14848
|
+
],
|
|
14818
14849
|
"superclass": {
|
|
14819
14850
|
"name": "HelixElement",
|
|
14820
14851
|
"module": "/src/base/index.js"
|
|
@@ -15455,6 +15486,16 @@
|
|
|
15455
15486
|
"default": "undefined",
|
|
15456
15487
|
"description": "Relationship between the current document and the linked URL.\nAutomatically set to \"noopener noreferrer\" when target=\"_blank\".",
|
|
15457
15488
|
"attribute": "rel"
|
|
15489
|
+
},
|
|
15490
|
+
{
|
|
15491
|
+
"kind": "field",
|
|
15492
|
+
"name": "externalLabel",
|
|
15493
|
+
"type": {
|
|
15494
|
+
"text": "string"
|
|
15495
|
+
},
|
|
15496
|
+
"default": "'(opens in new tab)'",
|
|
15497
|
+
"description": "Localised announcement text appended (visually hidden) to the link's\naccessible name when `target=\"_blank\"`. Defaults to English. Override\nfor i18n contexts so AT users hear the new-tab notice in their locale.",
|
|
15498
|
+
"attribute": "external-label"
|
|
15458
15499
|
}
|
|
15459
15500
|
],
|
|
15460
15501
|
"events": [
|
|
@@ -15526,6 +15567,22 @@
|
|
|
15526
15567
|
"description": "Relationship between the current document and the linked URL.\nAutomatically set to \"noopener noreferrer\" when target=\"_blank\".",
|
|
15527
15568
|
"fieldName": "rel",
|
|
15528
15569
|
"attribute": "rel"
|
|
15570
|
+
},
|
|
15571
|
+
{
|
|
15572
|
+
"name": "external-label",
|
|
15573
|
+
"type": {
|
|
15574
|
+
"text": "string"
|
|
15575
|
+
},
|
|
15576
|
+
"default": "'(opens in new tab)'",
|
|
15577
|
+
"description": "Localised announcement text appended (visually hidden) to the link's\naccessible name when `target=\"_blank\"`. Defaults to English. Override\nfor i18n contexts so AT users hear the new-tab notice in their locale.",
|
|
15578
|
+
"fieldName": "externalLabel",
|
|
15579
|
+
"attribute": "external-label"
|
|
15580
|
+
}
|
|
15581
|
+
],
|
|
15582
|
+
"mixins": [
|
|
15583
|
+
{
|
|
15584
|
+
"name": "mixinDelegatesAria",
|
|
15585
|
+
"module": "/src/mixins/index.js"
|
|
15529
15586
|
}
|
|
15530
15587
|
],
|
|
15531
15588
|
"superclass": {
|
|
@@ -15585,7 +15642,7 @@
|
|
|
15585
15642
|
"declarations": [
|
|
15586
15643
|
{
|
|
15587
15644
|
"kind": "class",
|
|
15588
|
-
"description": "A rich list item for use inside `hx-list
|
|
15645
|
+
"description": "A rich list item for use inside `hx-list`.\n\nGroup 7 host-canonical: `role=\"option\"` (interactive listbox mode) is\nmirrored onto the **host** via `_internals.role` AND the legacy\nsetAttribute('role',...) path. The dual-surface pattern preserves the\nexisting imperative host-attribute behaviour (so consumers querying\n`host.getAttribute('role')` still work) while adding cross-shadow IDREF\nwiring through `internals.ariaLabelledByElements` for engines that\nsupport it.",
|
|
15589
15646
|
"name": "HelixListItem",
|
|
15590
15647
|
"cssProperties": [
|
|
15591
15648
|
{
|
|
@@ -15830,7 +15887,7 @@
|
|
|
15830
15887
|
"declarations": [
|
|
15831
15888
|
{
|
|
15832
15889
|
"kind": "class",
|
|
15833
|
-
"description": "A styled list container supporting plain, bulleted, numbered, description, and interactive variants.",
|
|
15890
|
+
"description": "A styled list container supporting plain, bulleted, numbered, description, and interactive variants.\n\nGroup 7 host-canonical: `role=\"list\"` (or `role=\"listbox\"` in interactive\nmode) lives on the **host** via `_internals.role`, harmonizing with\n`hx-structured-list` (the gold-standard exemplar for Group 7). The `<dl>`\ndescription variant keeps native semantics — no host role assigned, since\n`<dl>` IS the semantic surface and AT walks it directly.",
|
|
15834
15891
|
"name": "HelixList",
|
|
15835
15892
|
"cssProperties": [
|
|
15836
15893
|
{
|
|
@@ -16000,7 +16057,7 @@
|
|
|
16000
16057
|
"declarations": [
|
|
16001
16058
|
{
|
|
16002
16059
|
"kind": "class",
|
|
16003
|
-
"description": "A visual separator for grouping items within an `hx-menu`.",
|
|
16060
|
+
"description": "A visual separator for grouping items within an `hx-menu`.\n\nGroup 5b host-canonical: `role=\"separator\"` lives on the **host** via\n`_internals.role` so the parent `<hx-menu>` (`role=\"menu\"`) sees the\nseparator as a direct child. `aria-orientation` is mirrored onto the host\nvia `internals.ariaOrientation`. The inner div is presentational on the\nmodern path and stripped of its role; the legacy fallback keeps the\ninner role for engines without ElementInternals IDL accessors.",
|
|
16004
16061
|
"name": "HelixMenuDivider",
|
|
16005
16062
|
"cssProperties": [
|
|
16006
16063
|
{
|
|
@@ -16050,7 +16107,7 @@
|
|
|
16050
16107
|
"declarations": [
|
|
16051
16108
|
{
|
|
16052
16109
|
"kind": "class",
|
|
16053
|
-
"description": "A single interactive item for use inside `hx-menu`. Supports normal, checkbox,\nand radio types, loading state, prefix/suffix slots, and submenu nesting.\
|
|
16110
|
+
"description": "A single interactive item for use inside `hx-menu`. Supports normal, checkbox,\nand radio types, loading state, prefix/suffix slots, and submenu nesting.\n\nGroup 5b host-canonical: `role=\"menuitem\"` (or `menuitemcheckbox` /\n`menuitemradio` based on `type`) lives on the **host** via\n`_internals.role`. The roving tabindex is written to the host, so the host\nis the focusable surface and lands directly under the parent `<hx-menu>`\n(which carries `role=\"menu\"`) in the AT walked tree. The inner element is\npresentational on the modern path — no role, no aria-* attributes — and\ncarries only click/keyboard event handlers. Keyboard activation\n(Enter/Space) is owned by the host's `keydown` handler.\n\nCross-shadow naming: consumer-supplied `aria-label` / `aria-labelledby` on\nthe host project to `internals.ariaLabel` / `internals.ariaLabelledByElements`\nvia the shared IDREF mirror. The slotted text content is used as the default\naccessible name when no override is set (AT walks slotted children\nautomatically through the host's role).",
|
|
16054
16111
|
"name": "HelixMenuItem",
|
|
16055
16112
|
"cssProperties": [
|
|
16056
16113
|
{
|
|
@@ -16198,7 +16255,7 @@
|
|
|
16198
16255
|
}
|
|
16199
16256
|
}
|
|
16200
16257
|
],
|
|
16201
|
-
"description": "Focus the inner
|
|
16258
|
+
"description": "Focus the menu item. On the modern host-canonical path, focus lands on\nthe host (which carries the roving tabindex and announced role). On the\nlegacy fallback path, focus delegates to the inner element which still\ncarries the role."
|
|
16202
16259
|
}
|
|
16203
16260
|
],
|
|
16204
16261
|
"events": [
|
|
@@ -16210,18 +16267,18 @@
|
|
|
16210
16267
|
"description": "Dispatched when the item is activated via click, Enter, or Space."
|
|
16211
16268
|
},
|
|
16212
16269
|
{
|
|
16213
|
-
"name": "hx-item-submenu-open",
|
|
16214
16270
|
"type": {
|
|
16215
16271
|
"text": "CustomEvent<{item: HelixMenuItem}>"
|
|
16216
16272
|
},
|
|
16217
|
-
"description": "Dispatched when ArrowRight is pressed on an item with a submenu."
|
|
16273
|
+
"description": "Dispatched when ArrowRight is pressed on an item with a submenu.",
|
|
16274
|
+
"name": "hx-item-submenu-open"
|
|
16218
16275
|
},
|
|
16219
16276
|
{
|
|
16220
|
-
"name": "hx-item-submenu-close",
|
|
16221
16277
|
"type": {
|
|
16222
16278
|
"text": "CustomEvent<{item: HelixMenuItem}>"
|
|
16223
16279
|
},
|
|
16224
|
-
"description": "Dispatched when ArrowLeft is pressed on an item, signaling the parent to close the submenu and return focus."
|
|
16280
|
+
"description": "Dispatched when ArrowLeft is pressed on an item, signaling the parent to close the submenu and return focus.",
|
|
16281
|
+
"name": "hx-item-submenu-close"
|
|
16225
16282
|
}
|
|
16226
16283
|
],
|
|
16227
16284
|
"attributes": [
|
|
@@ -16310,7 +16367,7 @@
|
|
|
16310
16367
|
"declarations": [
|
|
16311
16368
|
{
|
|
16312
16369
|
"kind": "class",
|
|
16313
|
-
"description": "A menu container that manages keyboard navigation over a list of menu items.\nUse with `hx-menu-item` and `hx-menu-divider`.",
|
|
16370
|
+
"description": "A menu container that manages keyboard navigation over a list of menu items.\nUse with `hx-menu-item` and `hx-menu-divider`.\n\nGroup 5b host-canonical: `role=\"menu\"` lives on the **host** via\n`_internals.role`. The host carries the announced surface so AT walks\n`<hx-menu>` (role=menu) → slotted `<hx-menu-item>` (role=menuitem on host)\ndirectly without two layers of indirection. Consumer-supplied\n`aria-label` / `aria-labelledby` on the host are resolved via the shared\nIDREF mirror; cross-shadow naming uses `ariaLabelledByElements` (modern)\nwith a flattened-string fallback (legacy).\n\nSubmenu coordination: when an `hx-menu-item` emits `hx-item-submenu-open`\nor `hx-item-submenu-close`, the parent menu auto-handles the toggle by\ncalling `setSubmenuOpen()` on the item — UNLESS the consumer has called\n`event.preventDefault()` on the bubbled event, signaling that they own the\nsubmenu lifecycle. This matches APG-mandated behaviour while leaving an\nopt-out for advanced consumers.",
|
|
16314
16371
|
"name": "HelixMenu",
|
|
16315
16372
|
"cssProperties": [
|
|
16316
16373
|
{
|
|
@@ -16387,7 +16444,7 @@
|
|
|
16387
16444
|
"text": "string"
|
|
16388
16445
|
},
|
|
16389
16446
|
"default": "''",
|
|
16390
|
-
"description": "Accessible label for the menu.
|
|
16447
|
+
"description": "Accessible label for the menu. Used as a fallback when no consumer-supplied\n`aria-label` / `aria-labelledby` is present on the host. On the modern\nhost-canonical path this projects onto `internals.ariaLabel`; on the\nlegacy fallback path it appears as `aria-label` on the inner div.",
|
|
16391
16448
|
"attribute": "label",
|
|
16392
16449
|
"reflects": true
|
|
16393
16450
|
},
|
|
@@ -16435,7 +16492,7 @@
|
|
|
16435
16492
|
"text": "string"
|
|
16436
16493
|
},
|
|
16437
16494
|
"default": "''",
|
|
16438
|
-
"description": "Accessible label for the menu.
|
|
16495
|
+
"description": "Accessible label for the menu. Used as a fallback when no consumer-supplied\n`aria-label` / `aria-labelledby` is present on the host. On the modern\nhost-canonical path this projects onto `internals.ariaLabel`; on the\nlegacy fallback path it appears as `aria-label` on the inner div.",
|
|
16439
16496
|
"fieldName": "label",
|
|
16440
16497
|
"attribute": "label"
|
|
16441
16498
|
}
|
|
@@ -16505,7 +16562,7 @@
|
|
|
16505
16562
|
"declarations": [
|
|
16506
16563
|
{
|
|
16507
16564
|
"kind": "class",
|
|
16508
|
-
"description": "A scalar measurement within a known range — e.g., disk usage, health score,\nor any numeric value with defined min/max bounds. Supports low/high/optimum\nthreshold markers for semantic color feedback.",
|
|
16565
|
+
"description": "A scalar measurement within a known range — e.g., disk usage, health score,\nor any numeric value with defined min/max bounds. Supports low/high/optimum\nthreshold markers for semantic color feedback.\n\nGroup 7 host-canonical: `role=\"meter\"` is mirrored onto the **host** via\n`_internals.role` AND kept on the inner `[role=\"meter\"]` element. The dual\nsurface is the hx-progress-ring pattern (Group 7 gold-standard exemplar):\nthe host carries the cross-shadow IDREF wiring (`ariaLabelledByElements`\nresolves through the shared mirror) while the inner element keeps its\nexisting role/state surface so legacy AT and consumer queries continue to\nwork. AccName 1.2 §4.3.1 precedence is implemented uniformly: consumer\nhost `aria-labelledby` (flattened) > consumer host `aria-label` >\n`label` property / slotted label > derived value-text fallback.",
|
|
16509
16566
|
"name": "HelixMeter",
|
|
16510
16567
|
"cssProperties": [
|
|
16511
16568
|
{
|
|
@@ -17909,7 +17966,7 @@
|
|
|
17909
17966
|
"declarations": [
|
|
17910
17967
|
{
|
|
17911
17968
|
"kind": "class",
|
|
17912
|
-
"description": "An overflow menu (kebab/meatball menu) that reveals hidden actions via a\nfloating panel. Composed from a trigger button and a slotted menu panel.",
|
|
17969
|
+
"description": "An overflow menu (kebab/meatball menu) that reveals hidden actions via a\nfloating panel. Composed from a trigger button and a slotted menu panel.\n\n## Architecture Note: Host-Attribute Trigger Label Mirror (group-5b)\n\nThe composite has TWO ARIA-bearing surfaces inside its shadow DOM: the\ntrigger button (`role` defaulted from `<button>`, with `aria-haspopup`,\n`aria-expanded`, `aria-controls`) and the panel (`role=\"menu\"` on the\ninner div). The host wraps both — it cannot carry either canonical role\nitself, so role placement remains on the inner elements.\n\nWhat Group 5b adds:\n- **Roving tabindex** on slotted menu items (only the focused item has\n tabindex=0; arrow keys move focus and rewrite tabindex). Closing-Tab\n path is preserved (Tab moves focus past the menu and closes it).\n- **First-character typeahead** with 500ms timeout matching `hx-menu`.\n- **Host-attribute label mirror**: consumer-supplied `aria-label` /\n `aria-labelledby` on the host flow to the trigger button's\n `aria-label` (the trigger is the announced surface of the disclosure\n pattern; consumer override wins over the `label` property). The panel\n continues to use `labelMenu` for its own slot label.",
|
|
17913
17970
|
"name": "HelixOverflowMenu",
|
|
17914
17971
|
"cssProperties": [
|
|
17915
17972
|
{
|
|
@@ -18128,7 +18185,7 @@
|
|
|
18128
18185
|
"text": "string"
|
|
18129
18186
|
},
|
|
18130
18187
|
"default": "'More actions'",
|
|
18131
|
-
"description": "Accessible label for the trigger button.",
|
|
18188
|
+
"description": "Accessible label for the trigger button. Used as a fallback when no\nconsumer-supplied `aria-label` / `aria-labelledby` is present on the\nhost. Consumer host attributes win in the AccName 1.2 §4.3.1 cascade.",
|
|
18132
18189
|
"attribute": "label",
|
|
18133
18190
|
"reflects": true
|
|
18134
18191
|
},
|
|
@@ -18214,7 +18271,7 @@
|
|
|
18214
18271
|
"text": "string"
|
|
18215
18272
|
},
|
|
18216
18273
|
"default": "'More actions'",
|
|
18217
|
-
"description": "Accessible label for the trigger button.",
|
|
18274
|
+
"description": "Accessible label for the trigger button. Used as a fallback when no\nconsumer-supplied `aria-label` / `aria-labelledby` is present on the\nhost. Consumer host attributes win in the AccName 1.2 §4.3.1 cascade.",
|
|
18218
18275
|
"fieldName": "label",
|
|
18219
18276
|
"attribute": "label"
|
|
18220
18277
|
},
|
|
@@ -19334,11 +19391,6 @@
|
|
|
19334
19391
|
"name": "--hx-phi-field-disabled-opacity",
|
|
19335
19392
|
"default": "var(--hx-opacity-50,0.5)"
|
|
19336
19393
|
},
|
|
19337
|
-
{
|
|
19338
|
-
"description": "Color for auto-hide countdown warning (future use).",
|
|
19339
|
-
"name": "--hx-phi-field-auto-hide-warning-color",
|
|
19340
|
-
"default": "var(--hx-color-warning-500,#C2711C)"
|
|
19341
|
-
},
|
|
19342
19394
|
{
|
|
19343
19395
|
"description": "Spacing token.",
|
|
19344
19396
|
"name": "--hx-space-2"
|
|
@@ -20383,7 +20435,7 @@
|
|
|
20383
20435
|
"declarations": [
|
|
20384
20436
|
{
|
|
20385
20437
|
"kind": "class",
|
|
20386
|
-
"description": "A linear progress indicator for determinate and indeterminate states.",
|
|
20438
|
+
"description": "A linear progress indicator for determinate and indeterminate states.\n\nGroup 7 host-canonical: `role=\"progressbar\"` is mirrored onto the **host**\nvia `_internals.role` (cross-shadow IDREF wiring) AND kept on the inner\n`[role=\"progressbar\"]` track for legacy AT and consumer queries. This is\nthe hx-progress-ring dual-surface pattern (Group 7 gold-standard).\nConsumer-supplied `aria-labelledby` / `aria-describedby` on the host\nresolves through the shared IDREF mirror so cross-shadow naming reaches\nthe announced surface even when the labels live in another shadow tree.\n\nThe internal `aria-live=\"polite\"` announcer for the \"Complete\" milestone\nis preserved (`role=\"progressbar\"` does NOT imply a live region — an\nexplicit live announcer is required for value-update announcements).",
|
|
20387
20439
|
"name": "HelixProgressBar",
|
|
20388
20440
|
"cssProperties": [
|
|
20389
20441
|
{
|
|
@@ -22695,6 +22747,13 @@
|
|
|
22695
22747
|
"text": "CustomEvent<{value: string}>"
|
|
22696
22748
|
},
|
|
22697
22749
|
"description": "Dispatched when the selected option changes."
|
|
22750
|
+
},
|
|
22751
|
+
{
|
|
22752
|
+
"type": {
|
|
22753
|
+
"text": "Event"
|
|
22754
|
+
},
|
|
22755
|
+
"description": "Platform constraint-validation event fired when checkValidity() / reportValidity() determine the value is invalid (form-associated component contract via ElementInternals.setValidity).",
|
|
22756
|
+
"name": "invalid"
|
|
22698
22757
|
}
|
|
22699
22758
|
],
|
|
22700
22759
|
"attributes": [
|
|
@@ -24433,7 +24492,7 @@
|
|
|
24433
24492
|
"declarations": [
|
|
24434
24493
|
{
|
|
24435
24494
|
"kind": "class",
|
|
24436
|
-
"description": "A split button combining a primary action button with an attached dropdown\nmenu for secondary actions. Implements the ARIA menu button pattern for\nfull keyboard and screen reader support.",
|
|
24495
|
+
"description": "A split button combining a primary action button with an attached dropdown\nmenu for secondary actions. Implements the ARIA menu button pattern for\nfull keyboard and screen reader support.\n\n## Architecture Note: Composite host with two interactive children (Group 5b)\n\nThe host wraps a primary `<button>`, a dropdown trigger `<button>`, and a\npanel `<div role=\"menu\">` — three ARIA-bearing surfaces that cannot all\ncollapse onto the host. Group 5b keeps role placement on the inner\nelements (consistent with `hx-overflow-menu`). The host carries no role.\n\nWhat Group 5b adds:\n- **Host-attribute label mirror** via `installAriaIdrefMirror`: consumer\n `aria-label` / `aria-labelledby` on the host flow to the inner primary\n button's `aria-label`. Replaces the legacy `accessible-label` shim,\n which was a workaround for ARIAMixin shadowing on the host. The shim\n is preserved with a one-time devWarn for one minor version of back-\n compat; new code should use the standard `aria-label` attribute.\n- **Roving tabindex** on slotted `hx-menu-item` children inside the\n panel. Only the focused item carries `tabindex=0`; arrow key\n navigation rewrites the tabindex map via `_applyRovingTabIndex()`.\n `setRovingTabIndex` is the same setter used by `hx-menu` for cross-\n family pattern alignment.\n- **First-character typeahead** with 500ms timeout matching `hx-menu`.",
|
|
24437
24496
|
"name": "HelixSplitButton",
|
|
24438
24497
|
"cssProperties": [
|
|
24439
24498
|
{
|
|
@@ -24732,7 +24791,7 @@
|
|
|
24732
24791
|
"text": "string"
|
|
24733
24792
|
},
|
|
24734
24793
|
"default": "''",
|
|
24735
|
-
"
|
|
24794
|
+
"deprecated": "Use the standard host `aria-label` attribute instead. Group\n5b replaces the `accessible-label` shim with a host-attribute mirror\ndriven by `installAriaIdrefMirror` — consumer host `aria-label` /\n`aria-labelledby` flow to the inner primary button's `aria-label`,\nwhich is the same composed-tree result as the legacy shim without\nthe ARIAMixin shadowing concern.\n\nThe attribute remains observed for one minor version so existing\nconsumers do not regress; setting it logs a devWarn pointing them to\nthe standard `aria-label` path.",
|
|
24736
24795
|
"attribute": "accessible-label"
|
|
24737
24796
|
},
|
|
24738
24797
|
{
|
|
@@ -24819,7 +24878,7 @@
|
|
|
24819
24878
|
"text": "string"
|
|
24820
24879
|
},
|
|
24821
24880
|
"default": "''",
|
|
24822
|
-
"
|
|
24881
|
+
"deprecated": "Use the standard host `aria-label` attribute instead. Group\n5b replaces the `accessible-label` shim with a host-attribute mirror\ndriven by `installAriaIdrefMirror` — consumer host `aria-label` /\n`aria-labelledby` flow to the inner primary button's `aria-label`,\nwhich is the same composed-tree result as the legacy shim without\nthe ARIAMixin shadowing concern.\n\nThe attribute remains observed for one minor version so existing\nconsumers do not regress; setting it logs a devWarn pointing them to\nthe standard `aria-label` path.",
|
|
24823
24882
|
"fieldName": "accessibleLabel",
|
|
24824
24883
|
"attribute": "accessible-label"
|
|
24825
24884
|
},
|
|
@@ -25507,7 +25566,7 @@
|
|
|
25507
25566
|
"declarations": [
|
|
25508
25567
|
{
|
|
25509
25568
|
"kind": "class",
|
|
25510
|
-
"description": "A static stat display component for presenting key metrics in a healthcare dashboard.",
|
|
25569
|
+
"description": "A static stat display component for presenting key metrics in a healthcare dashboard.\n\nGroup 7 host-canonical: `role=\"group\"` lives on the **host** via\n`_internals.role`. The host carries the resolved accessible name so AT\nwalks `<hx-stat>` (role=group, label=\"value: label\") directly. The\ninternal `aria-live=\"polite\"` announcer remains in the shadow tree —\n`role=\"group\"` does NOT imply a live region, so the announcer is required\nfor value/label/trend update announcements.",
|
|
25511
25570
|
"name": "HelixStat",
|
|
25512
25571
|
"cssProperties": [
|
|
25513
25572
|
{
|
|
@@ -27972,7 +28031,7 @@
|
|
|
27972
28031
|
"declarations": [
|
|
27973
28032
|
{
|
|
27974
28033
|
"kind": "class",
|
|
27975
|
-
"description": "Semantic table data cell. Must be a child of `hx-tr`.",
|
|
28034
|
+
"description": "Semantic table data cell. Must be a child of `hx-tr`.\n\nGroup 7 host-canonical: `role=\"cell\"` lives on the **host** via\n`_internals.role`. The host carries the cell's accessible name (resolved\nfrom the `label` property — fixing audit B-A1, where mobile screen reader\nusers lost column context because `data-label` was visual-only).",
|
|
27976
28035
|
"name": "HelixTableCell",
|
|
27977
28036
|
"cssProperties": [
|
|
27978
28037
|
{
|
|
@@ -28032,7 +28091,7 @@
|
|
|
28032
28091
|
"text": "string"
|
|
28033
28092
|
},
|
|
28034
28093
|
"default": "''",
|
|
28035
|
-
"description": "Column header label for this cell. Forwarded as `data-label` on the native
|
|
28094
|
+
"description": "Column header label for this cell. Forwarded as `data-label` on the native\n`<td>` for the mobile card layout (`td::before { content: attr(data-label) }`)\nAND projected to `aria-label` so screen readers identify the column when\nthe header row is hidden via the mobile breakpoint. Group 7 audit B-A1\nfix: prior to migration, the JSDoc claimed aria-label projection but the\nimplementation only set `data-label` — `::before { content: attr(...) }`\nis not reliably announced by VoiceOver / NVDA across versions.",
|
|
28036
28095
|
"attribute": "label"
|
|
28037
28096
|
}
|
|
28038
28097
|
],
|
|
@@ -28073,7 +28132,7 @@
|
|
|
28073
28132
|
"text": "string"
|
|
28074
28133
|
},
|
|
28075
28134
|
"default": "''",
|
|
28076
|
-
"description": "Column header label for this cell. Forwarded as `data-label` on the native
|
|
28135
|
+
"description": "Column header label for this cell. Forwarded as `data-label` on the native\n`<td>` for the mobile card layout (`td::before { content: attr(data-label) }`)\nAND projected to `aria-label` so screen readers identify the column when\nthe header row is hidden via the mobile breakpoint. Group 7 audit B-A1\nfix: prior to migration, the JSDoc claimed aria-label projection but the\nimplementation only set `data-label` — `::before { content: attr(...) }`\nis not reliably announced by VoiceOver / NVDA across versions.",
|
|
28077
28136
|
"fieldName": "label",
|
|
28078
28137
|
"attribute": "label"
|
|
28079
28138
|
}
|
|
@@ -28161,7 +28220,7 @@
|
|
|
28161
28220
|
"declarations": [
|
|
28162
28221
|
{
|
|
28163
28222
|
"kind": "class",
|
|
28164
|
-
"description": "Semantic table header cell. Must be a child of `hx-tr`.\nSupports sortable columns with accessible sort state.",
|
|
28223
|
+
"description": "Semantic table header cell. Must be a child of `hx-tr`.\nSupports sortable columns with accessible sort state.\n\nGroup 7 host-canonical: `role=\"columnheader\"` lives on the **host** via\n`_internals.role`. The host carries `aria-sort` reflecting the current\nsort direction (when `sortable` is true). The sort `<button>` aria-label\nincorporates the slotted column text so AT users hear \"Sort by Patient\nname, currently sorted ascending\" rather than just \"Sort ascending\".",
|
|
28165
28224
|
"name": "HelixTableHeader",
|
|
28166
28225
|
"cssParts": [
|
|
28167
28226
|
{
|
|
@@ -28377,7 +28436,7 @@
|
|
|
28377
28436
|
"declarations": [
|
|
28378
28437
|
{
|
|
28379
28438
|
"kind": "class",
|
|
28380
|
-
"description": "Semantic table row. Must be a child of `hx-thead`, `hx-tbody`, or `hx-tfoot`.\nContains `hx-th` or `hx-td` cells.",
|
|
28439
|
+
"description": "Semantic table row. Must be a child of `hx-thead`, `hx-tbody`, or `hx-tfoot`.\nContains `hx-th` or `hx-td` cells.\n\nGroup 7 host-canonical: `role=\"row\"` lives on the **host** via\n`_internals.role`. The host carries `aria-selected` / `aria-disabled`\nmirroring `selected` / `disabled` reflected attributes. Consumer-supplied\n`aria-label` / `aria-labelledby` on the host project to the host's\nannounced surface so AT walks `<hx-tr>` (role=row) directly. Fallback\npath keeps the inner `<tr role=\"row\">` as the announced surface for\nengines without IDL element references.",
|
|
28381
28440
|
"name": "HelixTableRow",
|
|
28382
28441
|
"cssParts": [
|
|
28383
28442
|
{
|
|
@@ -28542,7 +28601,7 @@
|
|
|
28542
28601
|
"declarations": [
|
|
28543
28602
|
{
|
|
28544
28603
|
"kind": "class",
|
|
28545
|
-
"description": "A content panel associated with an `<hx-tab>`, managed by a parent `<hx-tabs
|
|
28604
|
+
"description": "A content panel associated with an `<hx-tab>`, managed by a parent `<hx-tabs>`.\nGroup 5a host-canonical: `role=\"tabpanel\"` lives on the host via\n`_internals.role`. The host carries the canonical AT surface — consumer\n`aria-labelledby` / `aria-describedby` on the host resolve through the\nshared IDREF mirror. The parent `hx-tabs` writes `internals.ariaLabelledByElements`\nreferencing the corresponding `<hx-tab>` host so cross-shadow naming works\nvia IDL element references (the modern path) without serializing tab text.",
|
|
28546
28605
|
"name": "HelixTabPanel",
|
|
28547
28606
|
"cssProperties": [
|
|
28548
28607
|
{
|
|
@@ -28632,7 +28691,7 @@
|
|
|
28632
28691
|
"declarations": [
|
|
28633
28692
|
{
|
|
28634
28693
|
"kind": "class",
|
|
28635
|
-
"description": "An individual tab button, designed to be used inside an `<hx-tabs>` container.\nMust be placed in the `tab` named slot of `<hx-tabs
|
|
28694
|
+
"description": "An individual tab button, designed to be used inside an `<hx-tabs>` container.\nMust be placed in the `tab` named slot of `<hx-tabs>`.\n\nGroup 5a host-canonical: `role=\"tab\"` lives on the **host** via\n`_internals.role`. The host is the focusable surface (carries the roving\ntabindex); the inner `<button>` retains click activation semantics\n(Enter/Space and pointer events) but is no longer the AT-announced surface\n— its role and ARIA state are stripped on the modern path so the host's\ncanonical surface wins. `internals.ariaSelected`, `ariaDisabled`, and\n`ariaControlsElements` mirror reactive state. The host `aria-label` /\n`aria-labelledby` resolved via the shared IDREF mirror name the tab\ncross-shadow.",
|
|
28636
28695
|
"name": "HelixTab",
|
|
28637
28696
|
"cssProperties": [
|
|
28638
28697
|
{
|
|
@@ -28825,7 +28884,7 @@
|
|
|
28825
28884
|
"declarations": [
|
|
28826
28885
|
{
|
|
28827
28886
|
"kind": "class",
|
|
28828
|
-
"description": "A tabbed content organizer that manages a set of `<hx-tab>` and `<hx-tab-panel>` children.\nSupports horizontal and vertical orientations, automatic and manual activation modes,\nand full keyboard navigation per the ARIA Authoring Practices Guide.",
|
|
28887
|
+
"description": "A tabbed content organizer that manages a set of `<hx-tab>` and `<hx-tab-panel>` children.\nSupports horizontal and vertical orientations, automatic and manual activation modes,\nand full keyboard navigation per the ARIA Authoring Practices Guide.\n\nGroup 5a host-canonical: `role=\"tablist\"` lives on the host via\n`_internals.role`. `aria-orientation`, `aria-label`, and consumer\n`aria-labelledby` resolve through the host. Per-tab `role=\"tab\"` and\nper-panel `role=\"tabpanel\"` likewise live on their respective hosts.\n\nActivation defaults to **manual** per healthcare patterns — keyboard arrow\nkeys move focus only; Enter/Space activates. APG explicitly allows both\nautomatic and manual activation; manual is safer when panels are heavy or\nannounce changes via live regions.",
|
|
28829
28888
|
"name": "HelixTabs",
|
|
28830
28889
|
"cssProperties": [
|
|
28831
28890
|
{
|
|
@@ -28974,8 +29033,8 @@
|
|
|
28974
29033
|
"type": {
|
|
28975
29034
|
"text": "'manual' | 'automatic'"
|
|
28976
29035
|
},
|
|
28977
|
-
"default": "'
|
|
28978
|
-
"description": "Controls how keyboard navigation activates tabs.\nIn `automatic` mode, focus also activates the tab.\nIn `manual` mode, focus moves independently; Space or Enter activates.",
|
|
29036
|
+
"default": "'manual'",
|
|
29037
|
+
"description": "Controls how keyboard navigation activates tabs.\nIn `automatic` mode, focus also activates the tab.\nIn `manual` mode, focus moves independently; Space or Enter activates.\n\nGroup 5a default: `manual` — safer for healthcare patterns where panel\ncontent may be heavy or announce updates via live regions. APG explicitly\nallows both modes; manual avoids disorienting auto-activation when users\nscan tabs with arrow keys.",
|
|
28979
29038
|
"attribute": "activation",
|
|
28980
29039
|
"reflects": true
|
|
28981
29040
|
},
|
|
@@ -28986,7 +29045,7 @@
|
|
|
28986
29045
|
"text": "string"
|
|
28987
29046
|
},
|
|
28988
29047
|
"default": "''",
|
|
28989
|
-
"description": "Accessible label for the tablist.
|
|
29048
|
+
"description": "Accessible label for the tablist. Drives the host `internals.ariaLabel`.\nProvide a brief description of what the tabs represent (e.g., \"Patient\nrecord sections\"). Consumer `aria-label` / `aria-labelledby` on the host\noverride this property when present.",
|
|
28990
29049
|
"attribute": "label",
|
|
28991
29050
|
"reflects": true
|
|
28992
29051
|
},
|
|
@@ -29027,8 +29086,8 @@
|
|
|
29027
29086
|
"type": {
|
|
29028
29087
|
"text": "'manual' | 'automatic'"
|
|
29029
29088
|
},
|
|
29030
|
-
"default": "'
|
|
29031
|
-
"description": "Controls how keyboard navigation activates tabs.\nIn `automatic` mode, focus also activates the tab.\nIn `manual` mode, focus moves independently; Space or Enter activates.",
|
|
29089
|
+
"default": "'manual'",
|
|
29090
|
+
"description": "Controls how keyboard navigation activates tabs.\nIn `automatic` mode, focus also activates the tab.\nIn `manual` mode, focus moves independently; Space or Enter activates.\n\nGroup 5a default: `manual` — safer for healthcare patterns where panel\ncontent may be heavy or announce updates via live regions. APG explicitly\nallows both modes; manual avoids disorienting auto-activation when users\nscan tabs with arrow keys.",
|
|
29032
29091
|
"fieldName": "activation",
|
|
29033
29092
|
"attribute": "activation"
|
|
29034
29093
|
},
|
|
@@ -29038,7 +29097,7 @@
|
|
|
29038
29097
|
"text": "string"
|
|
29039
29098
|
},
|
|
29040
29099
|
"default": "''",
|
|
29041
|
-
"description": "Accessible label for the tablist.
|
|
29100
|
+
"description": "Accessible label for the tablist. Drives the host `internals.ariaLabel`.\nProvide a brief description of what the tabs represent (e.g., \"Patient\nrecord sections\"). Consumer `aria-label` / `aria-labelledby` on the host\noverride this property when present.",
|
|
29042
29101
|
"fieldName": "label",
|
|
29043
29102
|
"attribute": "label"
|
|
29044
29103
|
}
|
|
@@ -31135,25 +31194,37 @@
|
|
|
31135
31194
|
"name": "HelixTheme",
|
|
31136
31195
|
"cssProperties": [
|
|
31137
31196
|
{
|
|
31138
|
-
"description": "
|
|
31139
|
-
"name": "--hx
|
|
31197
|
+
"description": "Primary text color (theme-injected).",
|
|
31198
|
+
"name": "--hx-color-text-primary"
|
|
31140
31199
|
},
|
|
31141
31200
|
{
|
|
31142
|
-
"description": "
|
|
31143
|
-
"name": "--hx-color-
|
|
31201
|
+
"description": "Base surface background (theme-injected).",
|
|
31202
|
+
"name": "--hx-color-surface-base"
|
|
31144
31203
|
},
|
|
31145
31204
|
{
|
|
31146
|
-
"description": "
|
|
31205
|
+
"description": "Default border color (theme-injected).",
|
|
31206
|
+
"name": "--hx-color-border-default"
|
|
31207
|
+
},
|
|
31208
|
+
{
|
|
31209
|
+
"description": "Spacing token (theme-injected).",
|
|
31147
31210
|
"name": "--hx-space-4"
|
|
31148
31211
|
},
|
|
31149
31212
|
{
|
|
31150
|
-
"description": "Animation duration.",
|
|
31213
|
+
"description": "Animation duration (theme-injected).",
|
|
31151
31214
|
"name": "--hx-duration-fast"
|
|
31215
|
+
},
|
|
31216
|
+
{
|
|
31217
|
+
"description": "Medium border-radius (theme-injected).",
|
|
31218
|
+
"name": "--hx-radius-md"
|
|
31219
|
+
},
|
|
31220
|
+
{
|
|
31221
|
+
"description": "Body font family (theme-injected).",
|
|
31222
|
+
"name": "--hx-font-family-body"
|
|
31152
31223
|
}
|
|
31153
31224
|
],
|
|
31154
31225
|
"cssParts": [
|
|
31155
31226
|
{
|
|
31156
|
-
"description": "The inner slot wrapper element. `display: contents` — no layout effect.",
|
|
31227
|
+
"description": "The inner slot wrapper element. `display: contents` — no layout effect. Theme-injected CSS custom properties (semantic surface — full token catalog lives in `@helixui/tokens`; the wildcard `--hx-*` was previously documented here but the CEM cssProperties[] surface requires explicit names).",
|
|
31157
31228
|
"name": "base"
|
|
31158
31229
|
}
|
|
31159
31230
|
],
|
|
@@ -31737,6 +31808,16 @@
|
|
|
31737
31808
|
"attribute": "format",
|
|
31738
31809
|
"reflects": true
|
|
31739
31810
|
},
|
|
31811
|
+
{
|
|
31812
|
+
"kind": "field",
|
|
31813
|
+
"name": "accessibleLabel",
|
|
31814
|
+
"type": {
|
|
31815
|
+
"text": "string | null"
|
|
31816
|
+
},
|
|
31817
|
+
"default": "null",
|
|
31818
|
+
"description": "Accessible name for screen readers, if different from the visible label.\nUses `accessible-label` attribute instead of `aria-label` to avoid\nARIAMixin shadowing on the host element. Highest-precedence naming source.",
|
|
31819
|
+
"attribute": "accessible-label"
|
|
31820
|
+
},
|
|
31740
31821
|
{
|
|
31741
31822
|
"kind": "field",
|
|
31742
31823
|
"name": "_id",
|
|
@@ -31872,6 +31953,16 @@
|
|
|
31872
31953
|
"description": "Display format for the time input. '12h' shows AM/PM; '24h' is bare HH:MM.",
|
|
31873
31954
|
"fieldName": "format",
|
|
31874
31955
|
"attribute": "format"
|
|
31956
|
+
},
|
|
31957
|
+
{
|
|
31958
|
+
"name": "accessible-label",
|
|
31959
|
+
"type": {
|
|
31960
|
+
"text": "string | null"
|
|
31961
|
+
},
|
|
31962
|
+
"default": "null",
|
|
31963
|
+
"description": "Accessible name for screen readers, if different from the visible label.\nUses `accessible-label` attribute instead of `aria-label` to avoid\nARIAMixin shadowing on the host element. Highest-precedence naming source.",
|
|
31964
|
+
"fieldName": "accessibleLabel",
|
|
31965
|
+
"attribute": "accessible-label"
|
|
31875
31966
|
}
|
|
31876
31967
|
],
|
|
31877
31968
|
"mixins": [
|
|
@@ -31941,7 +32032,7 @@
|
|
|
31941
32032
|
"name": "HelixToastStack",
|
|
31942
32033
|
"cssProperties": [
|
|
31943
32034
|
{
|
|
31944
|
-
"description": "Z-index for the fixed stack.",
|
|
32035
|
+
"description": "Z-index for the fixed stack. ─── ARIA scope (group-6 §3.2 / §5.9) ───────────────────────────────────── `hx-toast-stack` deliberately has NO `role`, `aria-live`, `aria-atomic`, or `aria-relevant` on its host or inner container. Each child `hx-toast` is its own live region (role=alert/status via ElementInternals). Wrapping those toasts in a second live region (e.g. `role=\"log\"` on the stack) would create nested live regions, which causes older NVDA/JAWS to announce every toast TWICE — once for the toast's own role, once for the surrounding log region. The stack is purely a positional/z-index container; it is invisible to the AT tree. Do NOT add a container role unless this entire architecture is rewritten so individual toasts no longer carry their own roles.",
|
|
31945
32036
|
"name": "--hx-z-index-toast",
|
|
31946
32037
|
"default": "9000"
|
|
31947
32038
|
}
|
|
@@ -33559,7 +33650,7 @@
|
|
|
33559
33650
|
"declarations": [
|
|
33560
33651
|
{
|
|
33561
33652
|
"kind": "class",
|
|
33562
|
-
"description": "A tree item used within an hx-tree-view component.\nSupports expand/collapse, selection, keyboard navigation, and icon/children slots.",
|
|
33653
|
+
"description": "A tree item used within an hx-tree-view component.\nSupports expand/collapse, selection, keyboard navigation, and icon/children slots.\n\nGroup 5c host-canonical: `role=\"treeitem\"` lives on the **host** via\n`_internals.role`. The roving tabindex is written to the host on the\nmodern path so the host is the focusable surface and lands directly\nunder the parent `<hx-tree-view>` (which carries `role=\"tree\"`) in the\nAT-walked tree. The inner `.item-row` is presentational on the modern\npath — no role, no aria-* attributes — and carries only click/keyboard\nevent handlers. Keyboard activation (Enter/Space) and expand/collapse\n(ArrowLeft/Right at the leaf level) are owned by the host's `keydown`\nhandler; ArrowUp/Down/Home/End and typeahead bubble to the parent\n`<hx-tree-view>` for navigation.\n\nThe nested `[role=\"group\"]` element that wraps the `slot=\"children\"`\nstays in the inner shadow DOM regardless of path — that group is a\nseparate sub-surface for the children, not a duplicate of the\ntreeitem role.\n\nOn the legacy fallback path the inner `.item-row` carries\n`role=\"treeitem\"` + aria-* state, the host role is suppressed, and the\nroving tabindex is written to the inner element so there is only ONE\nfocusable surface per item (mirrors hx-menu-item round-8).",
|
|
33563
33654
|
"name": "HelixTreeItem",
|
|
33564
33655
|
"cssProperties": [
|
|
33565
33656
|
{
|
|
@@ -33604,7 +33695,7 @@
|
|
|
33604
33695
|
"name": "item"
|
|
33605
33696
|
},
|
|
33606
33697
|
{
|
|
33607
|
-
"description": "The interactive item row (
|
|
33698
|
+
"description": "The interactive item row (presentational on the modern path; carries role=\"treeitem\" + aria-* on the legacy fallback).",
|
|
33608
33699
|
"name": "row"
|
|
33609
33700
|
},
|
|
33610
33701
|
{
|
|
@@ -33616,7 +33707,7 @@
|
|
|
33616
33707
|
"name": "label"
|
|
33617
33708
|
},
|
|
33618
33709
|
{
|
|
33619
|
-
"description": "The children container.",
|
|
33710
|
+
"description": "The children container (always carries role=\"group\").",
|
|
33620
33711
|
"name": "children"
|
|
33621
33712
|
}
|
|
33622
33713
|
],
|
|
@@ -33707,7 +33798,7 @@
|
|
|
33707
33798
|
}
|
|
33708
33799
|
}
|
|
33709
33800
|
],
|
|
33710
|
-
"description": "Sets the roving tabindex state for this item.\nWhen `active` is true, the
|
|
33801
|
+
"description": "Sets the roving tabindex state for this item.\nWhen `active` is true, the host (modern) or inner row (fallback) gets\n`tabindex=\"0\"` making it the Tab-reachable surface in the tree. All\nother items should be set to false. Called by the parent hx-tree-view\nto manage the roving tabindex pattern."
|
|
33711
33802
|
},
|
|
33712
33803
|
{
|
|
33713
33804
|
"kind": "method",
|
|
@@ -33717,7 +33808,16 @@
|
|
|
33717
33808
|
"text": "void"
|
|
33718
33809
|
}
|
|
33719
33810
|
},
|
|
33720
|
-
"
|
|
33811
|
+
"parameters": [
|
|
33812
|
+
{
|
|
33813
|
+
"name": "options",
|
|
33814
|
+
"optional": true,
|
|
33815
|
+
"type": {
|
|
33816
|
+
"text": "FocusOptions"
|
|
33817
|
+
}
|
|
33818
|
+
}
|
|
33819
|
+
],
|
|
33820
|
+
"description": "Focus this item. On the modern host-canonical path, focus lands on the\nhost (which carries the roving tabindex and announced role). On the\nlegacy fallback path, focus delegates to the inner `.item-row` which\nstill carries the role."
|
|
33721
33821
|
}
|
|
33722
33822
|
],
|
|
33723
33823
|
"events": [
|
|
@@ -33795,7 +33895,7 @@
|
|
|
33795
33895
|
"declarations": [
|
|
33796
33896
|
{
|
|
33797
33897
|
"kind": "class",
|
|
33798
|
-
"description": "A hierarchical tree component for navigating nested data structures.\nUsed in healthcare applications for org charts, ICD-10 code hierarchies, and department navigation.\n\
|
|
33898
|
+
"description": "A hierarchical tree component for navigating nested data structures.\nUsed in healthcare applications for org charts, ICD-10 code hierarchies, and department navigation.\n\nGroup 5c host-canonical: `role=\"tree\"` lives on the **host** via\n`_internals.role` on the modern path. The host carries the announced\nsurface so AT walks `<hx-tree-view>` (role=tree) → slotted\n`<hx-tree-item>` (role=treeitem on host) directly without two layers of\nindirection. Consumer-supplied `aria-label` / `aria-labelledby` on the\nhost are resolved via the shared IDREF mirror; cross-shadow naming uses\n`ariaLabelledByElements` (modern) with a flattened-string fallback\n(legacy). On the legacy fallback path the inner `[role=\"tree\"]` carries\nthe role + accessible name and the host role is suppressed so AT only\nsees one tree per logical surface (mirrors `hx-menu` round-8).\n\nFull keyboard navigation: Arrow keys for movement, Enter/Space for\nselection, Home/End for first/last item, ArrowRight/Left for\nexpand/collapse + parent/child traversal, typeahead.\n\n## Scale Limits\n\nThis component renders all tree items simultaneously in the DOM. It is suitable for\ntrees with up to ~500 visible items. For large taxonomies (e.g., ICD-10 with 70,000+\ncodes), use async/lazy loading: only render top-level nodes initially and populate\nchild nodes on `hx-select` or expand events. The component exposes the `expanded`\nproperty on `hx-tree-item` for programmatic control of subtrees, enabling consumer-level\nvirtualization strategies without requiring changes to this component.",
|
|
33799
33899
|
"name": "HelixTreeView",
|
|
33800
33900
|
"cssProperties": [
|
|
33801
33901
|
{
|
|
@@ -33830,7 +33930,7 @@
|
|
|
33830
33930
|
],
|
|
33831
33931
|
"cssParts": [
|
|
33832
33932
|
{
|
|
33833
|
-
"description": "The tree container element with role=\"tree\".",
|
|
33933
|
+
"description": "The tree container element with role=\"tree\" (legacy fallback path) or the inner shadow surface (modern path; role lives on the host).",
|
|
33834
33934
|
"name": "tree"
|
|
33835
33935
|
}
|
|
33836
33936
|
],
|
|
@@ -33848,7 +33948,7 @@
|
|
|
33848
33948
|
"text": "string"
|
|
33849
33949
|
},
|
|
33850
33950
|
"default": "''",
|
|
33851
|
-
"description": "Accessible label for the tree.
|
|
33951
|
+
"description": "Accessible label for the tree. Used as a fallback when no\nconsumer-supplied `aria-label` / `aria-labelledby` is present on the\nhost. On the modern host-canonical path this projects onto\n`internals.ariaLabel`; on the legacy fallback path it appears as\n`aria-label` on the inner `[role=\"tree\"]` element.",
|
|
33852
33952
|
"attribute": "label",
|
|
33853
33953
|
"reflects": true
|
|
33854
33954
|
},
|
|
@@ -33880,7 +33980,7 @@
|
|
|
33880
33980
|
"text": "string"
|
|
33881
33981
|
},
|
|
33882
33982
|
"default": "''",
|
|
33883
|
-
"description": "Accessible label for the tree.
|
|
33983
|
+
"description": "Accessible label for the tree. Used as a fallback when no\nconsumer-supplied `aria-label` / `aria-labelledby` is present on the\nhost. On the modern host-canonical path this projects onto\n`internals.ariaLabel`; on the legacy fallback path it appears as\n`aria-label` on the inner `[role=\"tree\"]` element.",
|
|
33884
33984
|
"fieldName": "label",
|
|
33885
33985
|
"attribute": "label"
|
|
33886
33986
|
},
|