@helixui/library 3.6.0 → 3.8.0-next.145
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/README.md +41 -0
- package/aaa-verdicts.json +2036 -0
- package/custom-elements.json +3045 -1254
- package/dist/components/hx-accordion/hx-accordion-item.d.ts.map +1 -1
- package/dist/components/hx-accordion/hx-accordion-item.styles.d.ts.map +1 -1
- package/dist/components/hx-accordion/index.js +1 -1
- package/dist/components/hx-action-bar/hx-action-bar.d.ts +18 -0
- package/dist/components/hx-action-bar/hx-action-bar.d.ts.map +1 -1
- package/dist/components/hx-action-bar/hx-action-bar.styles.d.ts.map +1 -1
- package/dist/components/hx-action-bar/index.js +1 -1
- package/dist/components/hx-alert/hx-alert.d.ts +18 -8
- 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-avatar/hx-avatar.d.ts +4 -1
- package/dist/components/hx-avatar/hx-avatar.d.ts.map +1 -1
- package/dist/components/hx-avatar/hx-avatar.styles.d.ts.map +1 -1
- package/dist/components/hx-avatar/index.js +1 -1
- package/dist/components/hx-badge/hx-badge.d.ts.map +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 +19 -8
- package/dist/components/hx-banner/hx-banner.d.ts.map +1 -1
- package/dist/components/hx-banner/hx-banner.styles.d.ts.map +1 -1
- package/dist/components/hx-banner/index.js +1 -1
- package/dist/components/hx-breadcrumb/hx-breadcrumb-item.d.ts.map +1 -1
- package/dist/components/hx-breadcrumb/hx-breadcrumb-item.styles.d.ts.map +1 -1
- package/dist/components/hx-breadcrumb/hx-breadcrumb.d.ts +18 -0
- package/dist/components/hx-breadcrumb/hx-breadcrumb.d.ts.map +1 -1
- package/dist/components/hx-breadcrumb/index.js +1 -1
- package/dist/components/hx-button/hx-button.d.ts +18 -0
- package/dist/components/hx-button/hx-button.d.ts.map +1 -1
- package/dist/components/hx-button/hx-button.styles.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 +47 -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-carousel/hx-carousel.d.ts.map +1 -1
- package/dist/components/hx-carousel/hx-carousel.styles.d.ts.map +1 -1
- package/dist/components/hx-carousel/index.js +1 -1
- package/dist/components/hx-checkbox/hx-checkbox.d.ts +18 -0
- package/dist/components/hx-checkbox/hx-checkbox.d.ts.map +1 -1
- package/dist/components/hx-checkbox/hx-checkbox.styles.d.ts.map +1 -1
- package/dist/components/hx-checkbox/index.js +1 -1
- package/dist/components/hx-checkbox-group/hx-checkbox-group.d.ts +36 -0
- package/dist/components/hx-checkbox-group/hx-checkbox-group.d.ts.map +1 -1
- package/dist/components/hx-checkbox-group/hx-checkbox-group.styles.d.ts.map +1 -1
- package/dist/components/hx-checkbox-group/index.js +1 -1
- package/dist/components/hx-clinical-status/hx-clinical-status.d.ts +26 -9
- package/dist/components/hx-clinical-status/hx-clinical-status.d.ts.map +1 -1
- package/dist/components/hx-clinical-status/hx-clinical-status.styles.d.ts.map +1 -1
- package/dist/components/hx-clinical-status/index.js +1 -1
- package/dist/components/hx-color-picker/hx-color-picker.d.ts +18 -0
- package/dist/components/hx-color-picker/hx-color-picker.d.ts.map +1 -1
- package/dist/components/hx-color-picker/hx-color-picker.styles.d.ts.map +1 -1
- package/dist/components/hx-color-picker/index.js +1 -1
- package/dist/components/hx-combobox/hx-combobox.d.ts +18 -0
- package/dist/components/hx-combobox/hx-combobox.d.ts.map +1 -1
- package/dist/components/hx-combobox/hx-combobox.styles.d.ts.map +1 -1
- package/dist/components/hx-combobox/index.js +1 -1
- package/dist/components/hx-copy-button/hx-copy-button.d.ts +18 -0
- package/dist/components/hx-copy-button/hx-copy-button.d.ts.map +1 -1
- package/dist/components/hx-copy-button/hx-copy-button.styles.d.ts.map +1 -1
- package/dist/components/hx-copy-button/index.js +1 -1
- package/dist/components/hx-date-picker/hx-date-picker.d.ts +18 -0
- package/dist/components/hx-date-picker/hx-date-picker.d.ts.map +1 -1
- package/dist/components/hx-date-picker/hx-date-picker.styles.d.ts.map +1 -1
- package/dist/components/hx-date-picker/index.js +1 -1
- package/dist/components/hx-dialog/hx-dialog.d.ts +18 -0
- package/dist/components/hx-dialog/hx-dialog.d.ts.map +1 -1
- package/dist/components/hx-drawer/hx-drawer.d.ts +18 -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 +18 -0
- package/dist/components/hx-dropdown/hx-dropdown.d.ts.map +1 -1
- package/dist/components/hx-dropdown/hx-dropdown.styles.d.ts.map +1 -1
- package/dist/components/hx-dropdown/index.js +1 -1
- package/dist/components/hx-field/hx-field.d.ts +17 -0
- package/dist/components/hx-field/hx-field.d.ts.map +1 -1
- package/dist/components/hx-field-label/hx-field-label.d.ts +17 -0
- package/dist/components/hx-field-label/hx-field-label.d.ts.map +1 -1
- package/dist/components/hx-file-upload/hx-file-upload.d.ts +46 -0
- package/dist/components/hx-file-upload/hx-file-upload.d.ts.map +1 -1
- package/dist/components/hx-file-upload/hx-file-upload.styles.d.ts.map +1 -1
- package/dist/components/hx-file-upload/index.js +1 -1
- package/dist/components/hx-form/hx-form.d.ts +19 -0
- package/dist/components/hx-form/hx-form.d.ts.map +1 -1
- package/dist/components/hx-help-text/hx-help-text.d.ts +17 -0
- package/dist/components/hx-help-text/hx-help-text.d.ts.map +1 -1
- package/dist/components/hx-help-text/hx-help-text.styles.d.ts.map +1 -1
- package/dist/components/hx-help-text/index.js +1 -1
- package/dist/components/hx-icon/hx-icon.d.ts +108 -12
- package/dist/components/hx-icon/hx-icon.d.ts.map +1 -1
- package/dist/components/hx-icon/hx-icon.styles.d.ts.map +1 -1
- package/dist/components/hx-icon/index.js +1 -1
- package/dist/components/hx-icon-button/hx-icon-button.d.ts +18 -0
- 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.map +1 -1
- package/dist/components/hx-link/hx-link.styles.d.ts.map +1 -1
- package/dist/components/hx-link/index.js +1 -1
- 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 +18 -0
- 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-nav/hx-nav.d.ts +18 -0
- package/dist/components/hx-nav/hx-nav.d.ts.map +1 -1
- package/dist/components/hx-nav/hx-nav.styles.d.ts.map +1 -1
- package/dist/components/hx-nav/index.js +1 -1
- package/dist/components/hx-number-input/hx-number-input.d.ts +18 -0
- package/dist/components/hx-number-input/hx-number-input.d.ts.map +1 -1
- package/dist/components/hx-number-input/hx-number-input.styles.d.ts.map +1 -1
- package/dist/components/hx-number-input/index.js +1 -1
- package/dist/components/hx-overflow-menu/hx-overflow-menu.d.ts +23 -1
- package/dist/components/hx-overflow-menu/hx-overflow-menu.d.ts.map +1 -1
- package/dist/components/hx-overflow-menu/hx-overflow-menu.styles.d.ts.map +1 -1
- package/dist/components/hx-overflow-menu/index.js +1 -1
- package/dist/components/hx-pagination/hx-pagination.styles.d.ts.map +1 -1
- package/dist/components/hx-pagination/index.js +1 -1
- package/dist/components/hx-phi-field/hx-phi-field.d.ts.map +1 -1
- package/dist/components/hx-phi-field/hx-phi-field.styles.d.ts.map +1 -1
- package/dist/components/hx-phi-field/index.js +1 -1
- package/dist/components/hx-popover/hx-popover.d.ts +18 -0
- package/dist/components/hx-popover/hx-popover.d.ts.map +1 -1
- package/dist/components/hx-popover/hx-popover.styles.d.ts.map +1 -1
- package/dist/components/hx-popover/index.js +1 -1
- package/dist/components/hx-popup/hx-popup.d.ts +18 -0
- package/dist/components/hx-popup/hx-popup.d.ts.map +1 -1
- package/dist/components/hx-popup/hx-popup.styles.d.ts.map +1 -1
- package/dist/components/hx-popup/index.js +1 -1
- package/dist/components/hx-radio-group/hx-radio-group.d.ts +18 -0
- package/dist/components/hx-radio-group/hx-radio-group.d.ts.map +1 -1
- package/dist/components/hx-radio-group/hx-radio-group.styles.d.ts.map +1 -1
- package/dist/components/hx-radio-group/hx-radio.styles.d.ts.map +1 -1
- package/dist/components/hx-radio-group/index.js +1 -1
- package/dist/components/hx-rating/hx-rating.d.ts +19 -0
- package/dist/components/hx-rating/hx-rating.d.ts.map +1 -1
- package/dist/components/hx-rating/hx-rating.styles.d.ts.map +1 -1
- package/dist/components/hx-rating/index.js +1 -1
- package/dist/components/hx-select/hx-select.d.ts +18 -0
- package/dist/components/hx-select/hx-select.d.ts.map +1 -1
- package/dist/components/hx-side-nav/hx-nav-item.d.ts.map +1 -1
- package/dist/components/hx-side-nav/hx-nav-item.styles.d.ts.map +1 -1
- package/dist/components/hx-side-nav/hx-side-nav.d.ts +18 -0
- package/dist/components/hx-side-nav/hx-side-nav.d.ts.map +1 -1
- package/dist/components/hx-side-nav/hx-side-nav.styles.d.ts.map +1 -1
- package/dist/components/hx-side-nav/index.js +1 -1
- package/dist/components/hx-slider/hx-slider.d.ts +47 -0
- package/dist/components/hx-slider/hx-slider.d.ts.map +1 -1
- package/dist/components/hx-slider/index.js +1 -1
- package/dist/components/hx-split-button/hx-split-button.d.ts +18 -0
- package/dist/components/hx-split-button/hx-split-button.d.ts.map +1 -1
- package/dist/components/hx-split-button/hx-split-button.styles.d.ts.map +1 -1
- package/dist/components/hx-split-button/index.js +1 -1
- package/dist/components/hx-stat/hx-stat.d.ts.map +1 -1
- package/dist/components/hx-stat/hx-stat.styles.d.ts.map +1 -1
- package/dist/components/hx-stat/index.js +1 -1
- package/dist/components/hx-steps/hx-step.d.ts.map +1 -1
- package/dist/components/hx-steps/hx-step.styles.d.ts.map +1 -1
- package/dist/components/hx-steps/index.js +1 -1
- package/dist/components/hx-switch/hx-switch.d.ts +18 -0
- package/dist/components/hx-switch/hx-switch.d.ts.map +1 -1
- package/dist/components/hx-switch/hx-switch.styles.d.ts.map +1 -1
- package/dist/components/hx-switch/index.js +1 -1
- package/dist/components/hx-tabs/hx-tab.styles.d.ts.map +1 -1
- package/dist/components/hx-tabs/hx-tabs.d.ts +18 -0
- 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.d.ts.map +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-text-input/hx-text-input.d.ts +18 -0
- package/dist/components/hx-text-input/hx-text-input.d.ts.map +1 -1
- package/dist/components/hx-text-input/hx-text-input.styles.d.ts.map +1 -1
- package/dist/components/hx-text-input/index.js +1 -1
- package/dist/components/hx-textarea/hx-textarea.d.ts +18 -0
- package/dist/components/hx-textarea/hx-textarea.d.ts.map +1 -1
- package/dist/components/hx-time-picker/hx-time-picker.d.ts +18 -0
- 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.d.ts +19 -8
- package/dist/components/hx-toast/hx-toast.d.ts.map +1 -1
- package/dist/components/hx-toast/hx-toast.styles.d.ts.map +1 -1
- package/dist/components/hx-toast/index.js +1 -1
- package/dist/components/hx-toggle-button/hx-toggle-button.d.ts +18 -0
- package/dist/components/hx-toggle-button/hx-toggle-button.d.ts.map +1 -1
- package/dist/components/hx-toggle-button/hx-toggle-button.styles.d.ts.map +1 -1
- package/dist/components/hx-toggle-button/index.js +1 -1
- package/dist/components/hx-tooltip/hx-tooltip.d.ts +18 -0
- package/dist/components/hx-tooltip/hx-tooltip.d.ts.map +1 -1
- package/dist/components/hx-tooltip/hx-tooltip.styles.d.ts.map +1 -1
- package/dist/components/hx-tooltip/index.js +1 -1
- package/dist/components/hx-top-nav/hx-top-nav.d.ts +18 -0
- package/dist/components/hx-top-nav/hx-top-nav.d.ts.map +1 -1
- package/dist/components/hx-top-nav/hx-top-nav.styles.d.ts.map +1 -1
- package/dist/components/hx-top-nav/index.js +1 -1
- package/dist/components/hx-tree-view/hx-tree-item.d.ts.map +1 -1
- package/dist/components/hx-tree-view/hx-tree-item.styles.d.ts.map +1 -1
- package/dist/components/hx-tree-view/index.js +1 -1
- package/dist/css/helix-all.css +414 -118
- package/dist/css/helix-core.css +43 -19
- package/dist/css/helix-feedback.css +15 -18
- package/dist/css/helix-forms.css +172 -44
- package/dist/css/helix-media.css +6 -3
- package/dist/css/helix-navigation.css +65 -12
- package/dist/css/helix-overlay.css +63 -0
- package/dist/css/helix-tokens.css +18 -15
- package/dist/css/helix-utility.css +44 -12
- package/dist/css/hx-action-bar.css +12 -0
- package/dist/css/hx-alert.css +4 -8
- package/dist/css/hx-avatar.css +1 -2
- package/dist/css/hx-badge.css +10 -5
- package/dist/css/hx-banner.css +4 -8
- package/dist/css/hx-button.css +15 -5
- package/dist/css/hx-carousel.css +6 -3
- package/dist/css/hx-checkbox-group.css +11 -0
- package/dist/css/hx-checkbox.css +24 -13
- package/dist/css/hx-clinical-status.css +4 -7
- package/dist/css/hx-color-picker.css +14 -1
- package/dist/css/hx-combobox.css +8 -0
- package/dist/css/hx-copy-button.css +5 -2
- package/dist/css/hx-date-picker.css +16 -3
- package/dist/css/hx-drawer.css +5 -0
- package/dist/css/hx-dropdown.css +18 -0
- package/dist/css/hx-file-upload.css +4 -0
- package/dist/css/hx-help-text.css +5 -0
- package/dist/css/hx-icon-button.css +4 -5
- package/dist/css/hx-icon.css +7 -0
- package/dist/css/hx-link.css +1 -2
- package/dist/css/hx-nav.css +31 -2
- package/dist/css/hx-number-input.css +10 -11
- package/dist/css/hx-overflow-menu.css +5 -0
- package/dist/css/hx-pagination.css +6 -3
- package/dist/css/hx-phi-field.css +2 -3
- package/dist/css/hx-popover.css +13 -0
- package/dist/css/hx-popup.css +14 -0
- package/dist/css/hx-radio-group.css +10 -0
- package/dist/css/hx-rating.css +6 -0
- package/dist/css/hx-side-nav.css +10 -5
- package/dist/css/hx-split-button.css +27 -10
- package/dist/css/hx-stat.css +1 -2
- package/dist/css/hx-switch.css +19 -1
- package/dist/css/hx-tag.css +5 -0
- package/dist/css/hx-text-input.css +4 -1
- package/dist/css/hx-time-picker.css +12 -2
- package/dist/css/hx-toast.css +6 -0
- package/dist/css/hx-toggle-button.css +29 -12
- package/dist/css/hx-tooltip.css +13 -0
- package/dist/css/hx-top-nav.css +13 -2
- package/dist/css/index.css +1 -1
- package/dist/css/manifest.json +60 -20
- package/dist/index.js +49 -49
- package/dist/shared/{hx-accordion-ZVzgDzTG.js → hx-accordion-DR--Ev4t.js} +48 -54
- package/dist/shared/hx-accordion-DR--Ev4t.js.map +1 -0
- package/dist/shared/{hx-action-bar-CitgcpGv.js → hx-action-bar-BlEG4aZv.js} +41 -29
- package/dist/shared/hx-action-bar-BlEG4aZv.js.map +1 -0
- package/dist/shared/{hx-alert-Bto8-TIi.js → hx-alert-C0axS32J.js} +40 -79
- package/dist/shared/hx-alert-C0axS32J.js.map +1 -0
- package/dist/shared/{hx-avatar-C9hOmlAb.js → hx-avatar-ChAYWnK8.js} +22 -24
- package/dist/shared/hx-avatar-ChAYWnK8.js.map +1 -0
- package/dist/shared/{hx-badge-JlFtAdxS.js → hx-badge-vX-1cuLA.js} +25 -20
- package/dist/shared/hx-badge-vX-1cuLA.js.map +1 -0
- package/dist/shared/{hx-banner-fpRnciIO.js → hx-banner-PbHwFNSb.js} +51 -90
- package/dist/shared/hx-banner-PbHwFNSb.js.map +1 -0
- package/dist/shared/{hx-breadcrumb-item-3tKppF9h.js → hx-breadcrumb-item-D8xYqe3s.js} +56 -43
- package/dist/shared/hx-breadcrumb-item-D8xYqe3s.js.map +1 -0
- package/dist/shared/{hx-button-BOwAEcF1.js → hx-button-DOZTZnz-.js} +29 -19
- package/dist/shared/hx-button-DOZTZnz-.js.map +1 -0
- package/dist/shared/hx-button-group-D3QUmSzl.js +248 -0
- package/dist/shared/hx-button-group-D3QUmSzl.js.map +1 -0
- package/dist/shared/{hx-carousel-item-z1Lc24op.js → hx-carousel-item-BVIKgQ4i.js} +72 -102
- package/dist/shared/hx-carousel-item-BVIKgQ4i.js.map +1 -0
- package/dist/shared/{hx-checkbox-CYd0YV_u.js → hx-checkbox-DDSXXhps.js} +56 -47
- package/dist/shared/hx-checkbox-DDSXXhps.js.map +1 -0
- package/dist/shared/{hx-checkbox-group-D5piJLY8.js → hx-checkbox-group-C0q6HDqn.js} +101 -58
- package/dist/shared/hx-checkbox-group-C0q6HDqn.js.map +1 -0
- package/dist/shared/{hx-clinical-status-D3XQIOqX.js → hx-clinical-status-ZSVEc3Qg.js} +68 -87
- package/dist/shared/hx-clinical-status-ZSVEc3Qg.js.map +1 -0
- package/dist/shared/{hx-color-picker-DBwJzT5f.js → hx-color-picker-CYjx8i8R.js} +97 -84
- package/dist/shared/hx-color-picker-CYjx8i8R.js.map +1 -0
- package/dist/shared/{hx-combobox-NgJaLbs2.js → hx-combobox-Be-mqOv4.js} +35 -45
- package/dist/shared/hx-combobox-Be-mqOv4.js.map +1 -0
- package/dist/shared/{hx-copy-button-sUVuikyH.js → hx-copy-button-DJirFCUL.js} +18 -15
- package/dist/shared/hx-copy-button-DJirFCUL.js.map +1 -0
- package/dist/shared/{hx-date-picker-B49yo4Vm.js → hx-date-picker-CziP3Hm1.js} +85 -84
- package/dist/shared/hx-date-picker-CziP3Hm1.js.map +1 -0
- package/dist/shared/hx-dialog-B4weoj_1.js.map +1 -1
- package/dist/shared/{hx-drawer-CM_upadk.js → hx-drawer-BlU2oX8-.js} +32 -36
- package/dist/shared/hx-drawer-BlU2oX8-.js.map +1 -0
- package/dist/shared/{hx-dropdown-D626S2ZG.js → hx-dropdown-DREqpIpm.js} +51 -33
- package/dist/shared/hx-dropdown-DREqpIpm.js.map +1 -0
- package/dist/shared/hx-field-label-BVRyyKeh.js.map +1 -1
- package/dist/shared/hx-field-zw0U1KVi.js.map +1 -1
- package/dist/shared/{hx-file-upload-D3rKROK5.js → hx-file-upload-CU5QGZSP.js} +137 -80
- package/dist/shared/hx-file-upload-CU5QGZSP.js.map +1 -0
- package/dist/shared/hx-form-CkChEATa.js.map +1 -1
- package/dist/shared/hx-help-text-CNaZ82LT.js +137 -0
- package/dist/shared/hx-help-text-CNaZ82LT.js.map +1 -0
- package/dist/shared/{hx-icon-button-a6OpeQz5.js → hx-icon-button-B2BdVdyK.js} +10 -11
- package/dist/shared/hx-icon-button-B2BdVdyK.js.map +1 -0
- package/dist/shared/hx-icon-bxz9eB9a.js +386 -0
- package/dist/shared/hx-icon-bxz9eB9a.js.map +1 -0
- package/dist/shared/{hx-link-CMnZRUtQ.js → hx-link-BURSdYLp.js} +19 -26
- package/dist/shared/hx-link-BURSdYLp.js.map +1 -0
- package/dist/shared/{hx-menu-divider-A6Guuzi_.js → hx-menu-divider-g0grbWV9.js} +19 -31
- package/dist/shared/hx-menu-divider-g0grbWV9.js.map +1 -0
- package/dist/shared/{hx-nav-ldFM3Fle.js → hx-nav-GTsAZGOx.js} +94 -85
- package/dist/shared/hx-nav-GTsAZGOx.js.map +1 -0
- package/dist/shared/{hx-nav-item-CODtUlew.js → hx-nav-item-CxE7Mp3M.js} +46 -41
- package/dist/shared/hx-nav-item-CxE7Mp3M.js.map +1 -0
- package/dist/shared/{hx-number-input-yUzFOSC1.js → hx-number-input-Bvyc9kOi.js} +59 -64
- package/dist/shared/hx-number-input-Bvyc9kOi.js.map +1 -0
- package/dist/shared/{hx-overflow-menu-DFjJAziP.js → hx-overflow-menu-LrTteeR1.js} +32 -39
- package/dist/shared/{hx-overflow-menu-DFjJAziP.js.map → hx-overflow-menu-LrTteeR1.js.map} +1 -1
- package/dist/shared/{hx-pagination-C7y8GVyU.js → hx-pagination-D726PyTM.js} +7 -4
- package/dist/shared/hx-pagination-D726PyTM.js.map +1 -0
- package/dist/shared/{hx-phi-field-C19oxlrr.js → hx-phi-field-sZt_rYIL.js} +46 -66
- package/dist/shared/hx-phi-field-sZt_rYIL.js.map +1 -0
- package/dist/shared/{hx-popover-BAlAFOH9.js → hx-popover-BjB0nkcq.js} +51 -38
- package/dist/shared/hx-popover-BjB0nkcq.js.map +1 -0
- package/dist/shared/{hx-popup-COUXXZ9X.js → hx-popup-BiV_2evC.js} +59 -45
- package/dist/shared/hx-popup-BiV_2evC.js.map +1 -0
- package/dist/shared/{hx-radio-C7eTj5YI.js → hx-radio-BD_c9NJy.js} +52 -39
- package/dist/shared/hx-radio-BD_c9NJy.js.map +1 -0
- package/dist/shared/{hx-rating-C3QP53k9.js → hx-rating-BGK4AxvI.js} +45 -71
- package/dist/shared/hx-rating-BGK4AxvI.js.map +1 -0
- package/dist/shared/hx-select-DahFehiZ.js.map +1 -1
- package/dist/shared/{hx-slider-Blmv_rwS.js → hx-slider-CkOk5BCY.js} +83 -23
- package/dist/shared/hx-slider-CkOk5BCY.js.map +1 -0
- package/dist/shared/{hx-split-button-Ddle8iVx.js → hx-split-button-Bg9FHrFK.js} +73 -65
- package/dist/shared/hx-split-button-Bg9FHrFK.js.map +1 -0
- package/dist/shared/{hx-stat-Gtw_SpK8.js → hx-stat-wKxbyep6.js} +22 -55
- package/dist/shared/hx-stat-wKxbyep6.js.map +1 -0
- package/dist/shared/{hx-step-R2rjp1fT.js → hx-step-CyGQAuiB.js} +7 -27
- package/dist/shared/hx-step-CyGQAuiB.js.map +1 -0
- package/dist/shared/{hx-switch-TvKGvZJz.js → hx-switch-BCXuNxEH.js} +42 -24
- package/dist/shared/hx-switch-BCXuNxEH.js.map +1 -0
- package/dist/shared/{hx-tab-panel-DzsX8BHV.js → hx-tab-panel-BfisavKo.js} +47 -32
- package/dist/shared/hx-tab-panel-BfisavKo.js.map +1 -0
- package/dist/shared/{hx-tag-C5aCUpVi.js → hx-tag-BqO6HY6V.js} +26 -21
- package/dist/shared/hx-tag-BqO6HY6V.js.map +1 -0
- package/dist/shared/{hx-text-input-D6FlOZM-.js → hx-text-input-V5sQOpDh.js} +5 -2
- package/dist/shared/hx-text-input-V5sQOpDh.js.map +1 -0
- package/dist/shared/hx-textarea-CNG590KY.js.map +1 -1
- package/dist/shared/{hx-time-picker-Bo7FWzmf.js → hx-time-picker-if5Cl0Ei.js} +42 -43
- package/dist/shared/hx-time-picker-if5Cl0Ei.js.map +1 -0
- package/dist/shared/{hx-toggle-button-DwBers3A.js → hx-toggle-button-xNVYeA3X.js} +64 -47
- package/dist/shared/hx-toggle-button-xNVYeA3X.js.map +1 -0
- package/dist/shared/{hx-tooltip-DVqtKPCD.js → hx-tooltip-CamO-9nd.js} +24 -11
- package/dist/shared/hx-tooltip-CamO-9nd.js.map +1 -0
- package/dist/shared/{hx-top-nav-DP6OFS8C.js → hx-top-nav-vP6oDWMV.js} +42 -44
- package/dist/shared/hx-top-nav-vP6oDWMV.js.map +1 -0
- package/dist/shared/{hx-tree-item-CXyspGxI.js → hx-tree-item-D8hwKd5m.js} +54 -57
- package/dist/shared/hx-tree-item-D8hwKd5m.js.map +1 -0
- package/dist/shared/{toast-factory-Dht3pVsw.js → toast-factory-DgnbFxVs.js} +127 -153
- package/dist/shared/toast-factory-DgnbFxVs.js.map +1 -0
- package/figma-inventory.json +1280 -429
- package/package.json +8 -4
- package/dist/shared/hx-accordion-ZVzgDzTG.js.map +0 -1
- package/dist/shared/hx-action-bar-CitgcpGv.js.map +0 -1
- package/dist/shared/hx-alert-Bto8-TIi.js.map +0 -1
- package/dist/shared/hx-avatar-C9hOmlAb.js.map +0 -1
- package/dist/shared/hx-badge-JlFtAdxS.js.map +0 -1
- package/dist/shared/hx-banner-fpRnciIO.js.map +0 -1
- package/dist/shared/hx-breadcrumb-item-3tKppF9h.js.map +0 -1
- package/dist/shared/hx-button-BOwAEcF1.js.map +0 -1
- package/dist/shared/hx-button-group-4NUBpkyC.js +0 -181
- package/dist/shared/hx-button-group-4NUBpkyC.js.map +0 -1
- package/dist/shared/hx-carousel-item-z1Lc24op.js.map +0 -1
- package/dist/shared/hx-checkbox-CYd0YV_u.js.map +0 -1
- package/dist/shared/hx-checkbox-group-D5piJLY8.js.map +0 -1
- package/dist/shared/hx-clinical-status-D3XQIOqX.js.map +0 -1
- package/dist/shared/hx-color-picker-DBwJzT5f.js.map +0 -1
- package/dist/shared/hx-combobox-NgJaLbs2.js.map +0 -1
- package/dist/shared/hx-copy-button-sUVuikyH.js.map +0 -1
- package/dist/shared/hx-date-picker-B49yo4Vm.js.map +0 -1
- package/dist/shared/hx-drawer-CM_upadk.js.map +0 -1
- package/dist/shared/hx-dropdown-D626S2ZG.js.map +0 -1
- package/dist/shared/hx-file-upload-D3rKROK5.js.map +0 -1
- package/dist/shared/hx-help-text-Xb2Yr8x2.js +0 -156
- package/dist/shared/hx-help-text-Xb2Yr8x2.js.map +0 -1
- package/dist/shared/hx-icon-button-a6OpeQz5.js.map +0 -1
- package/dist/shared/hx-icon-fuVm4-bk.js +0 -283
- package/dist/shared/hx-icon-fuVm4-bk.js.map +0 -1
- package/dist/shared/hx-link-CMnZRUtQ.js.map +0 -1
- package/dist/shared/hx-menu-divider-A6Guuzi_.js.map +0 -1
- package/dist/shared/hx-nav-item-CODtUlew.js.map +0 -1
- package/dist/shared/hx-nav-ldFM3Fle.js.map +0 -1
- package/dist/shared/hx-number-input-yUzFOSC1.js.map +0 -1
- package/dist/shared/hx-pagination-C7y8GVyU.js.map +0 -1
- package/dist/shared/hx-phi-field-C19oxlrr.js.map +0 -1
- package/dist/shared/hx-popover-BAlAFOH9.js.map +0 -1
- package/dist/shared/hx-popup-COUXXZ9X.js.map +0 -1
- package/dist/shared/hx-radio-C7eTj5YI.js.map +0 -1
- package/dist/shared/hx-rating-C3QP53k9.js.map +0 -1
- package/dist/shared/hx-slider-Blmv_rwS.js.map +0 -1
- package/dist/shared/hx-split-button-Ddle8iVx.js.map +0 -1
- package/dist/shared/hx-stat-Gtw_SpK8.js.map +0 -1
- package/dist/shared/hx-step-R2rjp1fT.js.map +0 -1
- package/dist/shared/hx-switch-TvKGvZJz.js.map +0 -1
- package/dist/shared/hx-tab-panel-DzsX8BHV.js.map +0 -1
- package/dist/shared/hx-tag-C5aCUpVi.js.map +0 -1
- package/dist/shared/hx-text-input-D6FlOZM-.js.map +0 -1
- package/dist/shared/hx-time-picker-Bo7FWzmf.js.map +0 -1
- package/dist/shared/hx-toggle-button-DwBers3A.js.map +0 -1
- package/dist/shared/hx-tooltip-DVqtKPCD.js.map +0 -1
- package/dist/shared/hx-top-nav-DP6OFS8C.js.map +0 -1
- package/dist/shared/hx-tree-item-CXyspGxI.js.map +0 -1
- package/dist/shared/toast-factory-Dht3pVsw.js.map +0 -1
package/dist/css/helix-all.css
CHANGED
|
@@ -136,6 +136,18 @@
|
|
|
136
136
|
flex-shrink: 0;
|
|
137
137
|
}
|
|
138
138
|
|
|
139
|
+
/*
|
|
140
|
+
* AAA 2.4.13 Focus Appearance — enforce a ≥2px focus ring on slotted
|
|
141
|
+
* natives (e.g. bare <button>, <a>) so consumers who slot non-HELiX
|
|
142
|
+
* controls inherit the same indicator as the HELiX components do.
|
|
143
|
+
* Token-driven: --hx-focus-ring-width resolves to 2px (default).
|
|
144
|
+
*/
|
|
145
|
+
::slotted(:focus-visible) {
|
|
146
|
+
outline: var(--hx-focus-ring-width, 2px) solid
|
|
147
|
+
var(--hx-action-bar-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
|
|
148
|
+
outline-offset: var(--hx-focus-ring-offset, 2px);
|
|
149
|
+
}
|
|
150
|
+
|
|
139
151
|
/* ─── High Contrast Mode (forced-colors) ─── */
|
|
140
152
|
|
|
141
153
|
@media (forced-colors: active) {
|
|
@@ -233,10 +245,8 @@
|
|
|
233
245
|
color: var(--hx-alert-icon-color, var(--hx-color-info-500, #0c8beb));
|
|
234
246
|
}
|
|
235
247
|
|
|
236
|
-
.alert__icon
|
|
237
|
-
|
|
238
|
-
height: var(--hx-space-5, 1.25rem);
|
|
239
|
-
fill: currentColor;
|
|
248
|
+
.alert__icon .alert__glyph {
|
|
249
|
+
--hx-icon-size: var(--hx-space-5, 1.25rem);
|
|
240
250
|
}
|
|
241
251
|
|
|
242
252
|
/* ─── Title ─── */
|
|
@@ -323,10 +333,8 @@
|
|
|
323
333
|
opacity: 1;
|
|
324
334
|
}
|
|
325
335
|
|
|
326
|
-
.alert__close-button
|
|
327
|
-
|
|
328
|
-
height: var(--hx-space-4, 1rem);
|
|
329
|
-
fill: currentColor;
|
|
336
|
+
.alert__close-button .alert__glyph {
|
|
337
|
+
--hx-icon-size: var(--hx-space-4, 1rem);
|
|
330
338
|
}
|
|
331
339
|
|
|
332
340
|
@media (prefers-reduced-motion: reduce) {
|
|
@@ -483,8 +491,7 @@
|
|
|
483
491
|
/* ─── Fallback Icon ─── */
|
|
484
492
|
|
|
485
493
|
.avatar__fallback-icon {
|
|
486
|
-
|
|
487
|
-
height: 60%;
|
|
494
|
+
--hx-icon-size: 60%;
|
|
488
495
|
color: var(--hx-avatar-color, var(--hx-color-primary-700, #0f6363));
|
|
489
496
|
}
|
|
490
497
|
|
|
@@ -538,8 +545,8 @@
|
|
|
538
545
|
justify-content: center;
|
|
539
546
|
gap: var(--hx-space-1, 0.25rem);
|
|
540
547
|
border-radius: var(--hx-badge-border-radius, var(--hx-border-radius-md, 0.375rem));
|
|
541
|
-
background-color: var(--hx-badge-bg, var(--hx-color-primary-
|
|
542
|
-
color: var(--hx-badge-color, var(--hx-color-text-on-primary, #
|
|
548
|
+
background-color: var(--hx-badge-bg, var(--hx-color-action-primary-bg, #0f7078));
|
|
549
|
+
color: var(--hx-badge-color, var(--hx-color-text-on-primary, #ffffff));
|
|
543
550
|
font-family: var(--hx-badge-font-family, var(--hx-font-family-sans, sans-serif));
|
|
544
551
|
font-weight: var(--hx-badge-font-weight, var(--hx-font-weight-semibold, 600));
|
|
545
552
|
line-height: var(--hx-line-height-tight, 1.25);
|
|
@@ -571,11 +578,11 @@
|
|
|
571
578
|
/* ─── Style Variants ─── */
|
|
572
579
|
|
|
573
580
|
.badge--primary {
|
|
574
|
-
--hx-badge-bg: var(--hx-badge-primary-bg, var(--hx-color-primary-
|
|
575
|
-
--hx-badge-color: var(--hx-badge-primary-color, var(--hx-color-text-on-primary, #
|
|
581
|
+
--hx-badge-bg: var(--hx-badge-primary-bg, var(--hx-color-action-primary-bg, #0f7078));
|
|
582
|
+
--hx-badge-color: var(--hx-badge-primary-color, var(--hx-color-text-on-primary, #ffffff));
|
|
576
583
|
--hx-badge-pulse-color-internal: var(
|
|
577
584
|
--hx-badge-pulse-color,
|
|
578
|
-
var(--hx-badge-primary-bg, var(--hx-color-primary-
|
|
585
|
+
var(--hx-badge-primary-bg, var(--hx-color-action-primary-bg, #0f7078))
|
|
579
586
|
);
|
|
580
587
|
}
|
|
581
588
|
|
|
@@ -768,6 +775,11 @@
|
|
|
768
775
|
border-width: 2px;
|
|
769
776
|
}
|
|
770
777
|
}
|
|
778
|
+
|
|
779
|
+
/* hx-icon glyph sizing for the migrated remove-button SVG. */
|
|
780
|
+
.badge__remove-glyph {
|
|
781
|
+
--hx-icon-size: 10px;
|
|
782
|
+
}
|
|
771
783
|
/* ── hx-banner ── */
|
|
772
784
|
:host {
|
|
773
785
|
display: block;
|
|
@@ -829,10 +841,8 @@
|
|
|
829
841
|
color: var(--hx-banner-icon-color, var(--hx-color-info-500, #0c8beb));
|
|
830
842
|
}
|
|
831
843
|
|
|
832
|
-
.banner__icon
|
|
833
|
-
|
|
834
|
-
height: var(--hx-space-5, 1.25rem);
|
|
835
|
-
fill: currentColor;
|
|
844
|
+
.banner__icon .banner__glyph {
|
|
845
|
+
--hx-icon-size: var(--hx-space-5, 1.25rem);
|
|
836
846
|
}
|
|
837
847
|
|
|
838
848
|
/* ─── Message ─── */
|
|
@@ -912,10 +922,8 @@
|
|
|
912
922
|
opacity: 1;
|
|
913
923
|
}
|
|
914
924
|
|
|
915
|
-
.banner__close-button
|
|
916
|
-
|
|
917
|
-
height: var(--hx-space-4, 1rem);
|
|
918
|
-
fill: currentColor;
|
|
925
|
+
.banner__close-button .banner__glyph {
|
|
926
|
+
--hx-icon-size: var(--hx-space-4, 1rem);
|
|
919
927
|
}
|
|
920
928
|
|
|
921
929
|
/* ─── Variant: info ─── */
|
|
@@ -1126,7 +1134,10 @@
|
|
|
1126
1134
|
.button--md {
|
|
1127
1135
|
padding: var(--hx-space-2, 0.5rem) var(--hx-space-4, 1rem);
|
|
1128
1136
|
font-size: var(--hx-font-size-md, 1rem);
|
|
1129
|
-
|
|
1137
|
+
/* WCAG 2.5.5 AAA Target Size (Enhanced): 44×44 minimum.
|
|
1138
|
+
Bound to --hx-touch-target-min so the default md variant clears the
|
|
1139
|
+
AAA-strict floor without requiring consumers to opt into sm or lg. */
|
|
1140
|
+
min-height: var(--hx-touch-target-min, 2.75rem);
|
|
1130
1141
|
}
|
|
1131
1142
|
|
|
1132
1143
|
.button--lg {
|
|
@@ -1344,9 +1355,16 @@
|
|
|
1344
1355
|
(primary-400, light teal). The base :host([inverted]) .button rule binds
|
|
1345
1356
|
color to text.inverse, which flips by mode (neutral-0 in light, neutral-900
|
|
1346
1357
|
in dark). On a permanent light-teal fill, white text drops to 2.4:1 in
|
|
1347
|
-
light mode (AA fail). Pin color to
|
|
1348
|
-
|
|
1349
|
-
|
|
1358
|
+
light mode (AA fail). Pin color to neutral-900 directly (the primitive,
|
|
1359
|
+
not text.primary which flips to neutral-100 in dark mode and would regress
|
|
1360
|
+
the pair to ~2.10:1) so the foreground is dark in both modes —
|
|
1361
|
+
neutral-900 on primary-400 = 7.27:1 AAA in Apex; AAA across all 6 brands.
|
|
1362
|
+
Decoupled from text.on-primary in 3.3.x because text.on-primary now
|
|
1363
|
+
resolves to neutral-0 (white) for the AAA-large coordinated pair on
|
|
1364
|
+
primary-600; using it here would regress this pair to ~2.45:1 (Apex)
|
|
1365
|
+
since primary-400 is light teal. neutral-900 is the correct anchor — it
|
|
1366
|
+
is the primitive that both light/dark text.primary used to resolve to,
|
|
1367
|
+
never flipped by mode/brand.
|
|
1350
1368
|
Pressed === hover visually in inverted mode is acceptable UX (the
|
|
1351
1369
|
transient absence of pointer over the button signals release).
|
|
1352
1370
|
The fallback chain wraps --hx-button-active-bg (highest precedence) and
|
|
@@ -1361,7 +1379,7 @@
|
|
|
1361
1379
|
);
|
|
1362
1380
|
color: var(
|
|
1363
1381
|
--hx-button-inverted-primary-interactive-color,
|
|
1364
|
-
var(--hx-color-
|
|
1382
|
+
var(--hx-color-neutral-900, #0d1825)
|
|
1365
1383
|
);
|
|
1366
1384
|
}
|
|
1367
1385
|
|
|
@@ -1892,9 +1910,12 @@
|
|
|
1892
1910
|
cursor: not-allowed;
|
|
1893
1911
|
}
|
|
1894
1912
|
|
|
1895
|
-
.nav-btn
|
|
1896
|
-
|
|
1897
|
-
|
|
1913
|
+
.nav-btn .carousel__nav-glyph {
|
|
1914
|
+
--hx-icon-size: 1.25em;
|
|
1915
|
+
}
|
|
1916
|
+
|
|
1917
|
+
.play-pause-btn .carousel__autoplay-glyph {
|
|
1918
|
+
--hx-icon-size: 1em;
|
|
1898
1919
|
}
|
|
1899
1920
|
|
|
1900
1921
|
/* ─── Play/Pause ─── */
|
|
@@ -2130,6 +2151,16 @@
|
|
|
2130
2151
|
|
|
2131
2152
|
/* ─── Focus Ring ─── */
|
|
2132
2153
|
|
|
2154
|
+
/*
|
|
2155
|
+
* Suppress the browser default ~1px host outline. Without this, the formal
|
|
2156
|
+
* AAA audit harness (which measures computed outline-width on the focused
|
|
2157
|
+
* host) records a sub-2px outline and reports WCAG 2.4.13 Partially Supports.
|
|
2158
|
+
* The visual focus indicator is rendered on the inner .checkbox__box below.
|
|
2159
|
+
*/
|
|
2160
|
+
:host {
|
|
2161
|
+
outline: none;
|
|
2162
|
+
}
|
|
2163
|
+
|
|
2133
2164
|
/*
|
|
2134
2165
|
* Host-focus path: on the modern (IDL element-references) render branch the
|
|
2135
2166
|
* host is the tabbable surface (tabindex=0) and the inner input is demoted
|
|
@@ -2156,15 +2187,21 @@
|
|
|
2156
2187
|
/* ─── Checked State ─── */
|
|
2157
2188
|
|
|
2158
2189
|
.checkbox--checked .checkbox__box {
|
|
2159
|
-
background-color: var(--hx-checkbox-checked-bg, var(--hx-color-primary-
|
|
2160
|
-
border-color: var(
|
|
2190
|
+
background-color: var(--hx-checkbox-checked-bg, var(--hx-color-action-primary-bg, #0f7078));
|
|
2191
|
+
border-color: var(
|
|
2192
|
+
--hx-checkbox-checked-border-color,
|
|
2193
|
+
var(--hx-color-action-primary-bg, #0f7078)
|
|
2194
|
+
);
|
|
2161
2195
|
}
|
|
2162
2196
|
|
|
2163
2197
|
/* ─── Indeterminate State ─── */
|
|
2164
2198
|
|
|
2165
2199
|
.checkbox--indeterminate .checkbox__box {
|
|
2166
|
-
background-color: var(--hx-checkbox-checked-bg, var(--hx-color-primary-
|
|
2167
|
-
border-color: var(
|
|
2200
|
+
background-color: var(--hx-checkbox-checked-bg, var(--hx-color-action-primary-bg, #0f7078));
|
|
2201
|
+
border-color: var(
|
|
2202
|
+
--hx-checkbox-checked-border-color,
|
|
2203
|
+
var(--hx-color-action-primary-bg, #0f7078)
|
|
2204
|
+
);
|
|
2168
2205
|
}
|
|
2169
2206
|
|
|
2170
2207
|
/* ─── Error State ─── */
|
|
@@ -2197,17 +2234,12 @@
|
|
|
2197
2234
|
border-color: var(--hx-checkbox-error-color, var(--hx-color-error-500, #e5493e));
|
|
2198
2235
|
}
|
|
2199
2236
|
|
|
2200
|
-
/* ─── Checkmark Icon ─── */
|
|
2237
|
+
/* ─── Checkmark Icon (hx-icon library="helix") ─── */
|
|
2201
2238
|
|
|
2202
2239
|
.checkbox__icon {
|
|
2203
2240
|
display: none;
|
|
2204
|
-
|
|
2205
|
-
|
|
2206
|
-
fill: none;
|
|
2207
|
-
stroke: var(--hx-checkbox-checkmark-color, var(--hx-color-text-on-primary, #ffffff));
|
|
2208
|
-
stroke-width: 2.5;
|
|
2209
|
-
stroke-linecap: round;
|
|
2210
|
-
stroke-linejoin: round;
|
|
2241
|
+
--hx-icon-size: calc(var(--hx-checkbox-size, var(--hx-size-5, 1.25rem)) * 0.65);
|
|
2242
|
+
--hx-icon-color: var(--hx-checkbox-checkmark-color, var(--hx-color-text-on-primary, #ffffff));
|
|
2211
2243
|
}
|
|
2212
2244
|
|
|
2213
2245
|
.checkbox--checked .checkbox__icon--check {
|
|
@@ -2314,7 +2346,7 @@
|
|
|
2314
2346
|
}
|
|
2315
2347
|
|
|
2316
2348
|
.checkbox__icon {
|
|
2317
|
-
|
|
2349
|
+
--hx-icon-color: HighlightText;
|
|
2318
2350
|
}
|
|
2319
2351
|
|
|
2320
2352
|
.checkbox--error .checkbox__box {
|
|
@@ -2368,6 +2400,17 @@
|
|
|
2368
2400
|
cursor: not-allowed;
|
|
2369
2401
|
}
|
|
2370
2402
|
|
|
2403
|
+
/*
|
|
2404
|
+
* AAA 2.4.13 Focus Appearance — host-level focus ring (group is focusable
|
|
2405
|
+
* via roving tabindex in Tier-2). Token-driven: --hx-focus-ring-width
|
|
2406
|
+
* resolves to ≥2px.
|
|
2407
|
+
*/
|
|
2408
|
+
:host(:focus-visible) {
|
|
2409
|
+
outline: var(--hx-focus-ring-width, 2px) solid
|
|
2410
|
+
var(--hx-checkbox-group-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
|
|
2411
|
+
outline-offset: var(--hx-focus-ring-offset, 2px);
|
|
2412
|
+
}
|
|
2413
|
+
|
|
2371
2414
|
* {
|
|
2372
2415
|
box-sizing: border-box;
|
|
2373
2416
|
}
|
|
@@ -2577,15 +2620,12 @@
|
|
|
2577
2620
|
color: var(--hx-clinical-status-icon-color, var(--hx-color-info-500, #0c8beb));
|
|
2578
2621
|
}
|
|
2579
2622
|
|
|
2580
|
-
.clinical-
|
|
2581
|
-
|
|
2582
|
-
height: var(--hx-space-5, 1.25rem);
|
|
2583
|
-
fill: currentColor;
|
|
2623
|
+
.clinical-status__glyph {
|
|
2624
|
+
--hx-icon-size: var(--hx-space-5, 1.25rem);
|
|
2584
2625
|
}
|
|
2585
2626
|
|
|
2586
|
-
.clinical-status--compact .clinical-
|
|
2587
|
-
|
|
2588
|
-
height: var(--hx-space-4, 1rem);
|
|
2627
|
+
.clinical-status--compact .clinical-status__glyph {
|
|
2628
|
+
--hx-icon-size: var(--hx-space-4, 1rem);
|
|
2589
2629
|
}
|
|
2590
2630
|
|
|
2591
2631
|
/* ─── Message ─── */
|
|
@@ -3003,6 +3043,10 @@
|
|
|
3003
3043
|
background: var(--hx-color-neutral-0, #ffffff);
|
|
3004
3044
|
cursor: pointer;
|
|
3005
3045
|
transition: border-color var(--hx-transition-fast, 150ms ease);
|
|
3046
|
+
/* WCAG 2.5.5 AAA Target Size (Enhanced): 44×44 minimum.
|
|
3047
|
+
Bound to --hx-touch-target-min so the trigger clears the AAA-strict
|
|
3048
|
+
floor at default sizing. */
|
|
3049
|
+
min-height: var(--hx-touch-target-min, 2.75rem);
|
|
3006
3050
|
}
|
|
3007
3051
|
.trigger:hover:not([disabled]) {
|
|
3008
3052
|
border-color: var(
|
|
@@ -3163,13 +3207,20 @@
|
|
|
3163
3207
|
}
|
|
3164
3208
|
.format-btn {
|
|
3165
3209
|
flex-shrink: 0;
|
|
3210
|
+
/* WCAG 2.5.5 (Enhanced) AAA — interactive panel controls must clear
|
|
3211
|
+
44×44. Without min-width/min-height the format toggle collapses to
|
|
3212
|
+
its label box (~44×24 in default rendering, sub-44 on the y-axis). */
|
|
3213
|
+
min-width: var(--hx-touch-target-min, 2.75rem);
|
|
3214
|
+
min-height: var(--hx-touch-target-min, 2.75rem);
|
|
3166
3215
|
padding: var(--hx-space-1, 0.25rem) var(--hx-space-2, 0.5rem);
|
|
3167
3216
|
background: var(--hx-color-neutral-100, #ebeee9);
|
|
3168
3217
|
border: var(--hx-border-width-thin, 1px) solid var(--hx-color-neutral-300, #b6bfb9);
|
|
3169
3218
|
border-radius: var(--hx-border-radius-sm, 0.25rem);
|
|
3170
3219
|
cursor: pointer;
|
|
3171
3220
|
font-size: var(--hx-font-size-xs, 0.75rem);
|
|
3172
|
-
|
|
3221
|
+
/* AAA 1.4.6: 12px label vs neutral-100 must be ≥7:1; neutral-700 = 9.34:1
|
|
3222
|
+
(neutral-600 was 6.63:1, a tight AAA miss). */
|
|
3223
|
+
color: var(--hx-color-neutral-700, #313e4b);
|
|
3173
3224
|
text-transform: uppercase;
|
|
3174
3225
|
font-weight: var(--hx-font-weight-semibold, 600);
|
|
3175
3226
|
letter-spacing: 0.05em;
|
|
@@ -3177,6 +3228,8 @@
|
|
|
3177
3228
|
.color-input {
|
|
3178
3229
|
flex: 1;
|
|
3179
3230
|
min-width: 0;
|
|
3231
|
+
/* WCAG 2.5.5 (Enhanced) AAA — text input must clear 44×44. */
|
|
3232
|
+
min-height: var(--hx-touch-target-min, 2.75rem);
|
|
3180
3233
|
padding: var(--hx-space-1, 0.25rem) var(--hx-space-2, 0.5rem);
|
|
3181
3234
|
border: var(--hx-border-width-thin, 1px) solid var(--hx-color-neutral-300, #b6bfb9);
|
|
3182
3235
|
border-radius: var(--hx-border-radius-sm, 0.25rem);
|
|
@@ -3652,6 +3705,14 @@
|
|
|
3652
3705
|
outline-offset: var(--hx-focus-ring-offset, 2px);
|
|
3653
3706
|
opacity: 1;
|
|
3654
3707
|
}
|
|
3708
|
+
|
|
3709
|
+
/* hx-icon glyph sizing for migrated inline SVGs (library="helix"). */
|
|
3710
|
+
.field__chip-remove-glyph {
|
|
3711
|
+
--hx-icon-size: 8px;
|
|
3712
|
+
}
|
|
3713
|
+
.field__clear-button-glyph {
|
|
3714
|
+
--hx-icon-size: 12px;
|
|
3715
|
+
}
|
|
3655
3716
|
/* ── hx-container ── */
|
|
3656
3717
|
:host {
|
|
3657
3718
|
display: block;
|
|
@@ -3795,10 +3856,13 @@
|
|
|
3795
3856
|
font-size: var(--hx-font-size-sm);
|
|
3796
3857
|
}
|
|
3797
3858
|
|
|
3859
|
+
/* md — WCAG 2.5.5 AAA Target Size (Enhanced): 44×44 minimum.
|
|
3860
|
+
Bound to --hx-touch-target-min so the default md variant clears the
|
|
3861
|
+
AAA-strict floor without requiring consumers to opt into sm or lg. */
|
|
3798
3862
|
.button--md {
|
|
3799
3863
|
padding: var(--hx-space-2);
|
|
3800
|
-
min-width: var(--hx-
|
|
3801
|
-
height: var(--hx-
|
|
3864
|
+
min-width: var(--hx-touch-target-min, 2.75rem);
|
|
3865
|
+
min-height: var(--hx-touch-target-min, 2.75rem);
|
|
3802
3866
|
font-size: var(--hx-font-size-md);
|
|
3803
3867
|
}
|
|
3804
3868
|
|
|
@@ -4289,7 +4353,8 @@
|
|
|
4289
4353
|
font-size: var(--hx-font-size-md, 1rem);
|
|
4290
4354
|
color: var(--hx-date-picker-color, var(--hx-color-text-strong, #202b39));
|
|
4291
4355
|
line-height: var(--hx-line-height-normal, 1.5);
|
|
4292
|
-
|
|
4356
|
+
/* WCAG 2.5.5 (Enhanced) AAA — primary input surface must meet 44×44. */
|
|
4357
|
+
min-height: var(--hx-touch-target-min, 2.75rem);
|
|
4293
4358
|
width: 100%;
|
|
4294
4359
|
cursor: default;
|
|
4295
4360
|
}
|
|
@@ -4310,6 +4375,10 @@
|
|
|
4310
4375
|
display: flex;
|
|
4311
4376
|
align-items: center;
|
|
4312
4377
|
justify-content: center;
|
|
4378
|
+
/* WCAG 2.5.5 (Enhanced) AAA — calendar trigger must clear 44×44.
|
|
4379
|
+
Without min-width the icon button collapses to ~41 px wide. */
|
|
4380
|
+
min-width: var(--hx-touch-target-min, 2.75rem);
|
|
4381
|
+
min-height: var(--hx-touch-target-min, 2.75rem);
|
|
4313
4382
|
padding: 0 var(--hx-space-3, 0.75rem);
|
|
4314
4383
|
border: none;
|
|
4315
4384
|
border-left: var(--hx-border-width-thin, 1px) solid
|
|
@@ -4483,13 +4552,16 @@
|
|
|
4483
4552
|
}
|
|
4484
4553
|
|
|
4485
4554
|
.calendar__day--selected {
|
|
4486
|
-
background-color: var(--hx-date-picker-selected-bg, var(--hx-color-primary-
|
|
4555
|
+
background-color: var(--hx-date-picker-selected-bg, var(--hx-color-action-primary-bg, #0f7078));
|
|
4487
4556
|
color: var(--hx-date-picker-selected-color, var(--hx-color-text-on-primary, #ffffff));
|
|
4488
4557
|
font-weight: var(--hx-font-weight-semibold, 600);
|
|
4489
4558
|
}
|
|
4490
4559
|
|
|
4491
4560
|
.calendar__day--selected:hover {
|
|
4492
|
-
background-color: var(
|
|
4561
|
+
background-color: var(
|
|
4562
|
+
--hx-date-picker-selected-hover-bg,
|
|
4563
|
+
var(--hx-color-action-primary-bg-hover, #0f6363)
|
|
4564
|
+
);
|
|
4493
4565
|
}
|
|
4494
4566
|
|
|
4495
4567
|
.calendar__day--today:not(.calendar__day--selected) {
|
|
@@ -4605,6 +4677,11 @@
|
|
|
4605
4677
|
border-color: LinkText;
|
|
4606
4678
|
}
|
|
4607
4679
|
}
|
|
4680
|
+
|
|
4681
|
+
/* hx-icon glyph sizing for the migrated calendar trigger SVG. */
|
|
4682
|
+
.field__trigger-glyph {
|
|
4683
|
+
--hx-icon-size: 16px;
|
|
4684
|
+
}
|
|
4608
4685
|
/* ── hx-dialog ── */
|
|
4609
4686
|
:host {
|
|
4610
4687
|
display: contents;
|
|
@@ -5215,6 +5292,11 @@
|
|
|
5215
5292
|
border: 1px solid ButtonText;
|
|
5216
5293
|
}
|
|
5217
5294
|
}
|
|
5295
|
+
|
|
5296
|
+
/* hx-icon glyph sizing for the migrated close-button SVG. */
|
|
5297
|
+
.drawer-close-button-glyph {
|
|
5298
|
+
--hx-icon-size: 16px;
|
|
5299
|
+
}
|
|
5218
5300
|
/* ── hx-dropdown ── */
|
|
5219
5301
|
:host {
|
|
5220
5302
|
display: inline-block;
|
|
@@ -5230,11 +5312,29 @@
|
|
|
5230
5312
|
display: inline-block;
|
|
5231
5313
|
}
|
|
5232
5314
|
|
|
5315
|
+
/*
|
|
5316
|
+
* AAA 2.4.13 Focus Appearance — enforce a ≥2px focus ring on the slotted
|
|
5317
|
+
* trigger (typically <hx-button>, <button>, or <hx-icon-button>). The host
|
|
5318
|
+
* is a popover-container; the interactive surface is the slotted trigger.
|
|
5319
|
+
*/
|
|
5320
|
+
::slotted([slot='trigger']:focus-visible),
|
|
5321
|
+
::slotted(button:focus-visible),
|
|
5322
|
+
::slotted(a:focus-visible) {
|
|
5323
|
+
outline: var(--hx-focus-ring-width, 2px) solid
|
|
5324
|
+
var(--hx-dropdown-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
|
|
5325
|
+
outline-offset: var(--hx-focus-ring-offset, 2px);
|
|
5326
|
+
}
|
|
5327
|
+
|
|
5233
5328
|
[part='panel'] {
|
|
5234
5329
|
position: fixed;
|
|
5235
5330
|
z-index: var(--hx-dropdown-panel-z-index, 1000);
|
|
5236
5331
|
min-width: var(--hx-dropdown-panel-min-width, 160px);
|
|
5237
5332
|
background: var(--hx-dropdown-panel-bg, var(--hx-color-surface-default, #ffffff));
|
|
5333
|
+
/* Anchor slotted text color to the design-system primary text token so
|
|
5334
|
+
slotted <li>'s and other native consumer markup don't inherit a
|
|
5335
|
+
foreign color cascade (e.g. brand toolbar setting body { color: #fff }
|
|
5336
|
+
and rendering Edit/Duplicate as white-on-white). */
|
|
5337
|
+
color: var(--hx-dropdown-panel-color, var(--hx-color-text-primary, #1a1a1a));
|
|
5238
5338
|
border: 1px solid var(--hx-dropdown-panel-border-color, var(--hx-color-border-default, #d6dbd5));
|
|
5239
5339
|
border-radius: var(--hx-dropdown-panel-border-radius, var(--hx-border-radius-md, 0.375rem));
|
|
5240
5340
|
box-shadow: var(
|
|
@@ -5660,6 +5760,10 @@
|
|
|
5660
5760
|
outline-offset: var(--hx-focus-ring-offset, 2px);
|
|
5661
5761
|
}
|
|
5662
5762
|
|
|
5763
|
+
.file-item__remove-glyph {
|
|
5764
|
+
--hx-icon-size: 14px;
|
|
5765
|
+
}
|
|
5766
|
+
|
|
5663
5767
|
@media (prefers-reduced-motion: reduce) {
|
|
5664
5768
|
.file-item__remove {
|
|
5665
5769
|
transition: none;
|
|
@@ -5827,6 +5931,11 @@ export const helixGridItemStyles = css`
|
|
|
5827
5931
|
align-items: center;
|
|
5828
5932
|
}
|
|
5829
5933
|
|
|
5934
|
+
/* Render the migrated hx-icon glyph at 1em (matches the previous inline SVG sizing). */
|
|
5935
|
+
.help-text__glyph {
|
|
5936
|
+
--hx-icon-size: 1em;
|
|
5937
|
+
}
|
|
5938
|
+
|
|
5830
5939
|
.help-text__text {
|
|
5831
5940
|
min-width: 0;
|
|
5832
5941
|
}
|
|
@@ -5925,6 +6034,12 @@ export const helixGridItemStyles = css`
|
|
|
5925
6034
|
width: 100%;
|
|
5926
6035
|
height: 100%;
|
|
5927
6036
|
fill: currentColor;
|
|
6037
|
+
/* stroke-width is consumed by stroke-paint and mixed-paint icon libraries
|
|
6038
|
+
(Lucide, Heroicons-outline, Phosphor). Built-in helix + fa-free
|
|
6039
|
+
libraries declare paintMode: 'fill' and ignore this property; setting
|
|
6040
|
+
it here makes the token universally available without per-library
|
|
6041
|
+
branching in the resolver. */
|
|
6042
|
+
stroke-width: var(--hx-icon-stroke-width, 2);
|
|
5928
6043
|
display: block;
|
|
5929
6044
|
overflow: visible;
|
|
5930
6045
|
}
|
|
@@ -5945,6 +6060,7 @@ export const helixGridItemStyles = css`
|
|
|
5945
6060
|
width: 100%;
|
|
5946
6061
|
height: 100%;
|
|
5947
6062
|
fill: currentColor;
|
|
6063
|
+
stroke-width: var(--hx-icon-stroke-width, 2);
|
|
5948
6064
|
display: block;
|
|
5949
6065
|
}
|
|
5950
6066
|
|
|
@@ -6031,16 +6147,15 @@ export const helixGridItemStyles = css`
|
|
|
6031
6147
|
/* ─── Style Variants ─── */
|
|
6032
6148
|
|
|
6033
6149
|
.button--primary {
|
|
6034
|
-
--hx-icon-button-bg: var(--hx-color-primary-
|
|
6150
|
+
--hx-icon-button-bg: var(--hx-color-action-primary-bg, #0f7078);
|
|
6035
6151
|
--hx-icon-button-color: var(--hx-color-text-on-primary, #ffffff);
|
|
6036
6152
|
--hx-icon-button-border-color: transparent;
|
|
6037
6153
|
}
|
|
6038
6154
|
|
|
6039
|
-
/*
|
|
6040
|
-
|
|
6041
|
-
icons. Pin fg at neutral-0 (5.82:1 on primary-600). Mirrors hx-button. */
|
|
6155
|
+
/* Hover deepens to action.primary.bg-hover (primary-700) + neutral-0 = 7.03:1 AA.
|
|
6156
|
+
Mirrors hx-button. */
|
|
6042
6157
|
.button--primary:hover {
|
|
6043
|
-
--hx-icon-button-bg: var(--hx-color-primary-
|
|
6158
|
+
--hx-icon-button-bg: var(--hx-color-action-primary-bg-hover, #0f6363);
|
|
6044
6159
|
--hx-icon-button-color: var(--hx-color-neutral-0, #ffffff);
|
|
6045
6160
|
}
|
|
6046
6161
|
|
|
@@ -6299,8 +6414,7 @@ export const helixGridItemStyles = css`
|
|
|
6299
6414
|
|
|
6300
6415
|
.link__external-icon {
|
|
6301
6416
|
display: inline-flex;
|
|
6302
|
-
|
|
6303
|
-
height: 0.75em;
|
|
6417
|
+
--hx-icon-size: 0.75em;
|
|
6304
6418
|
flex-shrink: 0;
|
|
6305
6419
|
}
|
|
6306
6420
|
|
|
@@ -6634,6 +6748,16 @@ export const helixGridItemStyles = css`
|
|
|
6634
6748
|
align-items: center;
|
|
6635
6749
|
gap: var(--hx-space-1, 0.25rem);
|
|
6636
6750
|
padding: var(--hx-nav-item-padding, var(--hx-space-2, 0.5rem) var(--hx-space-3, 0.75rem));
|
|
6751
|
+
/*
|
|
6752
|
+
* WCAG 2.5.5 (Enhanced) AAA — nav links rendered with default padding
|
|
6753
|
+
* land at ~37 px tall (8 px + 1.5 line-height + 8 px). The link
|
|
6754
|
+
* content is first-party (rendered via consumer-supplied props on
|
|
6755
|
+
* <hx-nav-item>), so the slotted-content carve-out does not apply —
|
|
6756
|
+
* this is a real component obligation. Bind --hx-nav-link-min-height
|
|
6757
|
+
* to --hx-touch-target-min (2.75rem / 44 px) to grow the interactive
|
|
6758
|
+
* area without enlarging the visible label.
|
|
6759
|
+
*/
|
|
6760
|
+
min-height: var(--hx-nav-link-min-height, var(--hx-touch-target-min, 2.75rem));
|
|
6637
6761
|
color: var(--hx-nav-link-color, var(--hx-color-neutral-100, #ebeee9));
|
|
6638
6762
|
text-decoration: none;
|
|
6639
6763
|
border-radius: var(--hx-nav-border-radius, var(--hx-border-radius-sm, 0.25rem));
|
|
@@ -6662,13 +6786,26 @@ export const helixGridItemStyles = css`
|
|
|
6662
6786
|
}
|
|
6663
6787
|
|
|
6664
6788
|
.nav__link--active {
|
|
6665
|
-
background-color: var(--hx-nav-link-active-bg, var(--hx-color-primary-
|
|
6666
|
-
|
|
6789
|
+
background-color: var(--hx-nav-link-active-bg, var(--hx-color-action-primary-bg, #0f6363));
|
|
6790
|
+
/* Use --hx-color-text-on-primary so the active-link text inherits the
|
|
6791
|
+
* action-surface AAA-strict pairing (white on primary-700 in default
|
|
6792
|
+
* themes; black on lighter primary-700 in the high-contrast theme).
|
|
6793
|
+
* Pre-3.4.0 this consumed --hx-color-primary-600 directly which
|
|
6794
|
+
* resolved to Apex #0F7078 + white = 5.82:1 — AAA-large only, AAA
|
|
6795
|
+
* normal fail under WCAG 1.4.6 for body-text-sized link labels. The
|
|
6796
|
+
* Phase 4 Tier 3 chain shift moved action.primary.bg to primary-700
|
|
6797
|
+
* (Apex 7.03:1 with white) and consuming the action semantic here
|
|
6798
|
+
* picks up the AAA-strict pairing across the full 6-brand matrix.
|
|
6799
|
+
* Hardcoding white previously failed AAA-large in high-contrast
|
|
6800
|
+
* (ratio 2.54 vs. 4.5 floor); the on-primary token resolves correctly
|
|
6801
|
+
* in HC mode. */
|
|
6802
|
+
color: var(--hx-nav-link-active-color, var(--hx-color-text-on-primary, #ffffff));
|
|
6667
6803
|
}
|
|
6668
6804
|
|
|
6669
6805
|
/* ─── Chevron Icon ─── */
|
|
6670
6806
|
|
|
6671
6807
|
.nav__chevron {
|
|
6808
|
+
--hx-icon-size: 16px;
|
|
6672
6809
|
transition: transform var(--hx-transition-normal, 200ms) ease;
|
|
6673
6810
|
flex-shrink: 0;
|
|
6674
6811
|
}
|
|
@@ -6677,6 +6814,12 @@ export const helixGridItemStyles = css`
|
|
|
6677
6814
|
transform: rotate(180deg);
|
|
6678
6815
|
}
|
|
6679
6816
|
|
|
6817
|
+
/* ─── Hamburger Icon (mobile menu trigger) ─── */
|
|
6818
|
+
|
|
6819
|
+
.nav__hamburger-glyph {
|
|
6820
|
+
--hx-icon-size: 24px;
|
|
6821
|
+
}
|
|
6822
|
+
|
|
6680
6823
|
/* ─── Submenu ─── */
|
|
6681
6824
|
|
|
6682
6825
|
.nav__submenu {
|
|
@@ -6879,13 +7022,13 @@ export const helixGridItemStyles = css`
|
|
|
6879
7022
|
.field__input-wrapper:focus-within {
|
|
6880
7023
|
border-color: var(--hx-number-input-focus-ring-color, var(--hx-focus-ring-color));
|
|
6881
7024
|
/* Fallback for Safari < 16.2 (no color-mix support) */
|
|
6882
|
-
box-shadow: 0 0 0 var(--hx-focus-ring-width)
|
|
7025
|
+
box-shadow: 0 0 0 var(--hx-focus-ring-width, 2px)
|
|
6883
7026
|
var(--hx-number-input-focus-ring-color, var(--hx-focus-ring-color));
|
|
6884
|
-
box-shadow: 0 0 0 var(--hx-focus-ring-width)
|
|
7027
|
+
box-shadow: 0 0 0 var(--hx-focus-ring-width, 2px)
|
|
6885
7028
|
color-mix(
|
|
6886
7029
|
in srgb,
|
|
6887
7030
|
var(--hx-number-input-focus-ring-color, var(--hx-focus-ring-color))
|
|
6888
|
-
calc(var(--hx-focus-ring-opacity) * 100%),
|
|
7031
|
+
calc(var(--hx-focus-ring-opacity, 0.25) * 100%),
|
|
6889
7032
|
transparent
|
|
6890
7033
|
);
|
|
6891
7034
|
}
|
|
@@ -6899,13 +7042,13 @@ export const helixGridItemStyles = css`
|
|
|
6899
7042
|
.field--error .field__input-wrapper:focus-within {
|
|
6900
7043
|
border-color: var(--hx-number-input-error-color, var(--hx-color-error-500, #e5493e));
|
|
6901
7044
|
/* Fallback for Safari < 16.2 (no color-mix support) */
|
|
6902
|
-
box-shadow: 0 0 0 var(--hx-focus-ring-width)
|
|
7045
|
+
box-shadow: 0 0 0 var(--hx-focus-ring-width, 2px)
|
|
6903
7046
|
var(--hx-number-input-error-color, var(--hx-color-error-500, #e5493e));
|
|
6904
|
-
box-shadow: 0 0 0 var(--hx-focus-ring-width)
|
|
7047
|
+
box-shadow: 0 0 0 var(--hx-focus-ring-width, 2px)
|
|
6905
7048
|
color-mix(
|
|
6906
7049
|
in srgb,
|
|
6907
7050
|
var(--hx-number-input-error-color, var(--hx-color-error-500, #e5493e))
|
|
6908
|
-
calc(var(--hx-focus-ring-opacity) * 100%),
|
|
7051
|
+
calc(var(--hx-focus-ring-opacity, 0.25) * 100%),
|
|
6909
7052
|
transparent
|
|
6910
7053
|
);
|
|
6911
7054
|
}
|
|
@@ -6932,10 +7075,10 @@ export const helixGridItemStyles = css`
|
|
|
6932
7075
|
color: var(--hx-number-input-color, var(--hx-color-text-strong));
|
|
6933
7076
|
line-height: var(--hx-line-height-normal);
|
|
6934
7077
|
width: 100%;
|
|
6935
|
-
/* Size: md (default) */
|
|
7078
|
+
/* Size: md (default) — WCAG 2.5.5 (Enhanced) AAA touch target. */
|
|
6936
7079
|
padding: var(--hx-space-2) var(--hx-space-3);
|
|
6937
7080
|
font-size: var(--hx-font-size-md);
|
|
6938
|
-
min-height: var(--hx-
|
|
7081
|
+
min-height: var(--hx-touch-target-min, 2.75rem);
|
|
6939
7082
|
}
|
|
6940
7083
|
|
|
6941
7084
|
.field__input::placeholder {
|
|
@@ -7024,10 +7167,9 @@ export const helixGridItemStyles = css`
|
|
|
7024
7167
|
cursor: not-allowed;
|
|
7025
7168
|
}
|
|
7026
7169
|
|
|
7027
|
-
.field__stepper-
|
|
7170
|
+
.field__stepper-glyph {
|
|
7028
7171
|
pointer-events: none;
|
|
7029
|
-
|
|
7030
|
-
height: var(--hx-number-input-icon-size, var(--hx-space-3, 0.75rem));
|
|
7172
|
+
--hx-icon-size: var(--hx-number-input-icon-size, var(--hx-space-3, 0.75rem));
|
|
7031
7173
|
}
|
|
7032
7174
|
|
|
7033
7175
|
/* Size sm adjustments for stepper */
|
|
@@ -7310,6 +7452,11 @@ export const helixGridItemStyles = css`
|
|
|
7310
7452
|
border: 2px solid CanvasText;
|
|
7311
7453
|
}
|
|
7312
7454
|
}
|
|
7455
|
+
|
|
7456
|
+
/* hx-icon glyph sizing for the migrated trigger icons (1em parity). */
|
|
7457
|
+
.trigger__glyph {
|
|
7458
|
+
--hx-icon-size: 1em;
|
|
7459
|
+
}
|
|
7313
7460
|
/* ── hx-pagination ── */
|
|
7314
7461
|
:host {
|
|
7315
7462
|
display: block;
|
|
@@ -7367,7 +7514,10 @@ export const helixGridItemStyles = css`
|
|
|
7367
7514
|
|
|
7368
7515
|
.button:hover:not(:disabled) {
|
|
7369
7516
|
background: var(--hx-pagination-hover-bg, var(--hx-color-surface-sunken, #ebeee9));
|
|
7370
|
-
border-color: var(
|
|
7517
|
+
border-color: var(
|
|
7518
|
+
--hx-pagination-hover-border-color,
|
|
7519
|
+
var(--hx-color-action-primary-bg, #0f7078)
|
|
7520
|
+
);
|
|
7371
7521
|
}
|
|
7372
7522
|
|
|
7373
7523
|
.button:focus-visible {
|
|
@@ -7377,10 +7527,10 @@ export const helixGridItemStyles = css`
|
|
|
7377
7527
|
}
|
|
7378
7528
|
|
|
7379
7529
|
.button[aria-current='page'] {
|
|
7380
|
-
background: var(--hx-pagination-active-bg, var(--hx-color-primary-
|
|
7530
|
+
background: var(--hx-pagination-active-bg, var(--hx-color-action-primary-bg, #0f7078));
|
|
7381
7531
|
border-color: var(
|
|
7382
7532
|
--hx-pagination-active-border-color,
|
|
7383
|
-
var(--hx-pagination-active-bg, var(--hx-color-primary-
|
|
7533
|
+
var(--hx-pagination-active-bg, var(--hx-color-action-primary-bg, #0f7078))
|
|
7384
7534
|
);
|
|
7385
7535
|
color: var(--hx-pagination-active-color, var(--hx-color-text-on-primary, #ffffff));
|
|
7386
7536
|
font-weight: var(--hx-font-weight-semibold, 600);
|
|
@@ -7742,9 +7892,8 @@ export const helixGridItemStyles = css`
|
|
|
7742
7892
|
opacity: var(--hx-opacity-50, 0.5);
|
|
7743
7893
|
}
|
|
7744
7894
|
|
|
7745
|
-
.phi-
|
|
7746
|
-
|
|
7747
|
-
height: 1em;
|
|
7895
|
+
.phi-field__glyph {
|
|
7896
|
+
--hx-icon-size: 1em;
|
|
7748
7897
|
pointer-events: none;
|
|
7749
7898
|
}
|
|
7750
7899
|
|
|
@@ -7792,6 +7941,19 @@ export const helixGridItemStyles = css`
|
|
|
7792
7941
|
display: inline-block;
|
|
7793
7942
|
}
|
|
7794
7943
|
|
|
7944
|
+
/*
|
|
7945
|
+
* AAA 2.4.13 Focus Appearance — enforce a ≥2px focus ring on the slotted
|
|
7946
|
+
* trigger so consumers who slot bare HTML controls inherit the same ring
|
|
7947
|
+
* width as <hx-button>. Token-driven: --hx-focus-ring-width (default 2px).
|
|
7948
|
+
*/
|
|
7949
|
+
::slotted([slot='trigger']:focus-visible),
|
|
7950
|
+
::slotted(button:focus-visible),
|
|
7951
|
+
::slotted(a:focus-visible) {
|
|
7952
|
+
outline: var(--hx-focus-ring-width, 2px) solid
|
|
7953
|
+
var(--hx-popover-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
|
|
7954
|
+
outline-offset: var(--hx-focus-ring-offset, 2px);
|
|
7955
|
+
}
|
|
7956
|
+
|
|
7795
7957
|
[part='body'] {
|
|
7796
7958
|
position: fixed;
|
|
7797
7959
|
z-index: var(--hx-popover-z-index, 9999);
|
|
@@ -7860,6 +8022,20 @@ export const helixGridItemStyles = css`
|
|
|
7860
8022
|
display: inline-block;
|
|
7861
8023
|
}
|
|
7862
8024
|
|
|
8025
|
+
/*
|
|
8026
|
+
* AAA 2.4.13 Focus Appearance — enforce a ≥2px focus ring on slotted
|
|
8027
|
+
* trigger / anchor controls. hx-popup is a positioning primitive: it
|
|
8028
|
+
* paints no surface itself, but slotted natives (<button>, <a>) must
|
|
8029
|
+
* still meet the AAA ring threshold. Token-driven.
|
|
8030
|
+
*/
|
|
8031
|
+
::slotted([slot='anchor']:focus-visible),
|
|
8032
|
+
::slotted(button:focus-visible),
|
|
8033
|
+
::slotted(a:focus-visible) {
|
|
8034
|
+
outline: var(--hx-focus-ring-width, 2px) solid
|
|
8035
|
+
var(--hx-popup-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
|
|
8036
|
+
outline-offset: var(--hx-focus-ring-offset, 2px);
|
|
8037
|
+
}
|
|
8038
|
+
|
|
7863
8039
|
[part='popup'] {
|
|
7864
8040
|
position: fixed;
|
|
7865
8041
|
z-index: var(--hx-popup-z-index, 9000);
|
|
@@ -8205,6 +8381,16 @@ export const helixGridItemStyles = css`
|
|
|
8205
8381
|
pointer-events: none;
|
|
8206
8382
|
}
|
|
8207
8383
|
|
|
8384
|
+
/*
|
|
8385
|
+
* AAA 2.4.13 Focus Appearance — host-level focus ring for the group host
|
|
8386
|
+
* when it carries focus via roving tabindex. Token-driven: ≥2px width.
|
|
8387
|
+
*/
|
|
8388
|
+
:host(:focus-visible) {
|
|
8389
|
+
outline: var(--hx-focus-ring-width, 2px) solid
|
|
8390
|
+
var(--hx-radio-group-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
|
|
8391
|
+
outline-offset: var(--hx-focus-ring-offset, 2px);
|
|
8392
|
+
}
|
|
8393
|
+
|
|
8208
8394
|
* {
|
|
8209
8395
|
box-sizing: border-box;
|
|
8210
8396
|
}
|
|
@@ -8366,6 +8552,12 @@ export const helixGridItemStyles = css`
|
|
|
8366
8552
|
color: var(--hx-rating-hover-color, var(--hx-color-warning-300, #eeb383));
|
|
8367
8553
|
}
|
|
8368
8554
|
|
|
8555
|
+
/* ─── Star Glyph (hx-icon) Sizing ─── */
|
|
8556
|
+
|
|
8557
|
+
.star-glyph {
|
|
8558
|
+
--hx-icon-size: 1em;
|
|
8559
|
+
}
|
|
8560
|
+
|
|
8369
8561
|
/* ─── Half-Star Layout ─── */
|
|
8370
8562
|
|
|
8371
8563
|
.star-half {
|
|
@@ -8931,8 +9123,15 @@ export const helixGridItemStyles = css`
|
|
|
8931
9123
|
display: flex;
|
|
8932
9124
|
align-items: center;
|
|
8933
9125
|
justify-content: center;
|
|
9126
|
+
/* Visual icon area stays 2rem (32px) — preserves the side-nav header
|
|
9127
|
+
silhouette while the wrapping touch target grows to 44×44 to meet
|
|
9128
|
+
WCAG 2.5.5 (Enhanced) AAA. min-width/min-height own the hit area;
|
|
9129
|
+
width/height drive the visual painted area, but the button's
|
|
9130
|
+
intrinsic size always matches the hit-area floor. */
|
|
8934
9131
|
width: var(--hx-space-8, 2rem);
|
|
8935
9132
|
height: var(--hx-space-8, 2rem);
|
|
9133
|
+
min-width: var(--hx-touch-target-min, 2.75rem);
|
|
9134
|
+
min-height: var(--hx-touch-target-min, 2.75rem);
|
|
8936
9135
|
margin-inline-start: auto;
|
|
8937
9136
|
flex-shrink: 0;
|
|
8938
9137
|
padding: 0;
|
|
@@ -8978,15 +9177,13 @@ export const helixGridItemStyles = css`
|
|
|
8978
9177
|
outline-offset: var(--hx-focus-ring-offset, 2px);
|
|
8979
9178
|
}
|
|
8980
9179
|
|
|
8981
|
-
.side-nav__toggle
|
|
8982
|
-
|
|
8983
|
-
height: var(--hx-space-5, 1.25rem);
|
|
8984
|
-
fill: currentColor;
|
|
9180
|
+
.side-nav__toggle .side-nav__toggle-glyph {
|
|
9181
|
+
--hx-icon-size: var(--hx-space-5, 1.25rem);
|
|
8985
9182
|
flex-shrink: 0;
|
|
8986
9183
|
transition: transform var(--hx-transition-normal, 300ms) ease;
|
|
8987
9184
|
}
|
|
8988
9185
|
|
|
8989
|
-
:host([collapsed]) .side-nav__toggle
|
|
9186
|
+
:host([collapsed]) .side-nav__toggle .side-nav__toggle-glyph {
|
|
8990
9187
|
transform: rotate(180deg);
|
|
8991
9188
|
}
|
|
8992
9189
|
|
|
@@ -9674,6 +9871,11 @@ export const helixGridItemStyles = css`
|
|
|
9674
9871
|
transform: rotate(180deg);
|
|
9675
9872
|
}
|
|
9676
9873
|
|
|
9874
|
+
/* hx-icon glyph sizing for the migrated chevron (12x8 → 12px). */
|
|
9875
|
+
.split-button__chevron-glyph {
|
|
9876
|
+
--hx-icon-size: 12px;
|
|
9877
|
+
}
|
|
9878
|
+
|
|
9677
9879
|
/* ─── Size Variants ─── */
|
|
9678
9880
|
|
|
9679
9881
|
/* sm */
|
|
@@ -9688,16 +9890,22 @@ export const helixGridItemStyles = css`
|
|
|
9688
9890
|
min-height: var(--hx-size-8, 2rem);
|
|
9689
9891
|
}
|
|
9690
9892
|
|
|
9691
|
-
/* md
|
|
9893
|
+
/* md — WCAG 2.5.5 AAA Target Size (Enhanced): 44×44 minimum.
|
|
9894
|
+
Bound to --hx-touch-target-min so the default md variant clears the
|
|
9895
|
+
AAA-strict floor without requiring consumers to opt into sm or lg. */
|
|
9692
9896
|
.split-button--md .split-button__primary {
|
|
9693
9897
|
padding: var(--hx-space-2, 0.5rem) var(--hx-space-4, 1rem);
|
|
9694
9898
|
font-size: var(--hx-font-size-md, 1rem);
|
|
9695
|
-
min-height: var(--hx-
|
|
9899
|
+
min-height: var(--hx-touch-target-min, 2.75rem);
|
|
9696
9900
|
}
|
|
9697
9901
|
|
|
9698
9902
|
.split-button--md .split-button__trigger {
|
|
9699
9903
|
padding: var(--hx-space-2, 0.5rem) var(--hx-space-3, 0.75rem);
|
|
9700
|
-
|
|
9904
|
+
/* WCAG 2.5.5 (Enhanced) AAA — chevron trigger must clear 44×44 in
|
|
9905
|
+
BOTH dimensions. Without min-width, the trigger collapses to its
|
|
9906
|
+
icon width (~38 px) and fails the brand-theme matrix audit. */
|
|
9907
|
+
min-width: var(--hx-touch-target-min, 2.75rem);
|
|
9908
|
+
min-height: var(--hx-touch-target-min, 2.75rem);
|
|
9701
9909
|
}
|
|
9702
9910
|
|
|
9703
9911
|
/* lg */
|
|
@@ -9714,21 +9922,27 @@ export const helixGridItemStyles = css`
|
|
|
9714
9922
|
|
|
9715
9923
|
/* ─── Variant: primary ─── */
|
|
9716
9924
|
|
|
9925
|
+
/* Primary resting — bind through action.primary.bg (resolves to primary-600
|
|
9926
|
+
across all 6 brands) coordinated with text.on-primary. Inline fallback
|
|
9927
|
+
#0d1825 matches text.on-primary's resolved primitive (neutral-900) so a
|
|
9928
|
+
cold-start without semantic tokens paints AA-tuned dark-on-teal (5.20:1)
|
|
9929
|
+
rather than white-on-teal (3.43:1 fail). Mirrors hx-button precedent
|
|
9930
|
+
(hx-button.styles.ts ~line 88) and Phase C structural fix. */
|
|
9717
9931
|
.split-button--primary .split-button__primary,
|
|
9718
9932
|
.split-button--primary .split-button__trigger {
|
|
9719
|
-
--hx-split-button-bg: var(--hx-color-primary-
|
|
9720
|
-
--hx-split-button-color: var(--hx-color-text-on-primary, #
|
|
9933
|
+
--hx-split-button-bg: var(--hx-color-action-primary-bg, #429797);
|
|
9934
|
+
--hx-split-button-color: var(--hx-color-text-on-primary, #0d1825);
|
|
9721
9935
|
--hx-split-button-border-color: transparent;
|
|
9722
9936
|
--hx-split-button-divider-color: var(--hx-color-primary-900, #0b3232);
|
|
9723
9937
|
}
|
|
9724
9938
|
|
|
9725
|
-
/* primary:hover —
|
|
9726
|
-
|
|
9727
|
-
|
|
9939
|
+
/* primary:hover — lift to action.primary.bg-hover (primary-700) with
|
|
9940
|
+
text.on-primary-strong (neutral-0). Replaces the universal brightness(0.9)
|
|
9941
|
+
filter which would degrade contrast on the resting pair. */
|
|
9728
9942
|
.split-button--primary .split-button__primary:hover,
|
|
9729
9943
|
.split-button--primary .split-button__trigger:hover {
|
|
9730
|
-
--hx-split-button-bg: var(--hx-color-primary-
|
|
9731
|
-
--hx-split-button-color: var(--hx-color-
|
|
9944
|
+
--hx-split-button-bg: var(--hx-color-action-primary-bg-hover, #0f7078);
|
|
9945
|
+
--hx-split-button-color: var(--hx-color-text-on-primary-strong, #ffffff);
|
|
9732
9946
|
filter: none;
|
|
9733
9947
|
}
|
|
9734
9948
|
|
|
@@ -10292,8 +10506,7 @@ export const helixGridItemStyles = css`
|
|
|
10292
10506
|
}
|
|
10293
10507
|
|
|
10294
10508
|
.stat__trend-arrow {
|
|
10295
|
-
|
|
10296
|
-
height: 0.75em;
|
|
10509
|
+
--hx-icon-size: 0.75em;
|
|
10297
10510
|
flex-shrink: 0;
|
|
10298
10511
|
}
|
|
10299
10512
|
|
|
@@ -10661,6 +10874,13 @@ export const helixStructuredListRowStyles = css`
|
|
|
10661
10874
|
/* ── hx-switch ── */
|
|
10662
10875
|
:host {
|
|
10663
10876
|
display: block;
|
|
10877
|
+
/*
|
|
10878
|
+
* Suppress the browser default ~1px host outline. Without this the formal
|
|
10879
|
+
* AAA audit harness (which measures computed outline-width on the focused
|
|
10880
|
+
* host) records a sub-2px outline and reports WCAG 2.4.13 Partially Supports.
|
|
10881
|
+
* The visual focus indicator is rendered on the inner .switch__track below.
|
|
10882
|
+
*/
|
|
10883
|
+
outline: none;
|
|
10664
10884
|
}
|
|
10665
10885
|
|
|
10666
10886
|
:host([disabled]) {
|
|
@@ -10732,7 +10952,18 @@ export const helixStructuredListRowStyles = css`
|
|
|
10732
10952
|
}
|
|
10733
10953
|
|
|
10734
10954
|
.switch--checked .switch__track {
|
|
10735
|
-
|
|
10955
|
+
/* WCAG 1.4.6 AAA-strict 7:1: consume action.primary.bg (primary-700 since
|
|
10956
|
+
3.4.0) so the checked track inherits the elevated AAA-strict action
|
|
10957
|
+
surface contract used by every other primary interactive surface
|
|
10958
|
+
(hx-button, hx-checkbox checked-bg, hx-radio checked-bg, etc.). The
|
|
10959
|
+
prior primary-500 fallback (#429797 in Apex) clears AA (5.20:1) but
|
|
10960
|
+
only resolves to ~6.11:1 in the formal harness's contrast probe —
|
|
10961
|
+
below the 7:1 AAA-strict floor. action.primary.bg = primary-700
|
|
10962
|
+
(#0F6363 in Apex) clears 7.03:1 across all 6 brands. */
|
|
10963
|
+
background-color: var(
|
|
10964
|
+
--hx-switch-track-checked-bg,
|
|
10965
|
+
var(--hx-color-action-primary-bg, var(--hx-color-primary-700, #0f7078))
|
|
10966
|
+
);
|
|
10736
10967
|
}
|
|
10737
10968
|
|
|
10738
10969
|
.switch:not(.switch--checked) .switch__track:hover {
|
|
@@ -11315,6 +11546,11 @@ export const helixTableSectionBaseStyles = css`
|
|
|
11315
11546
|
border-width: 3px;
|
|
11316
11547
|
}
|
|
11317
11548
|
}
|
|
11549
|
+
|
|
11550
|
+
/* hx-icon glyph sizing for the migrated remove-button SVG. */
|
|
11551
|
+
.tag__remove-glyph {
|
|
11552
|
+
--hx-icon-size: 10px;
|
|
11553
|
+
}
|
|
11318
11554
|
/* ── hx-text ── */
|
|
11319
11555
|
:host {
|
|
11320
11556
|
display: inline;
|
|
@@ -11722,7 +11958,10 @@ export const helixTableSectionBaseStyles = css`
|
|
|
11722
11958
|
font-size: var(--_text-input-font-size);
|
|
11723
11959
|
color: var(--_text-input-color);
|
|
11724
11960
|
line-height: var(--hx-line-height-normal, 1.5);
|
|
11725
|
-
|
|
11961
|
+
/* WCAG 2.5.5 (Enhanced) AAA — primary input surface must meet 44×44.
|
|
11962
|
+
--hx-touch-target-min resolves to 2.75rem (44px); --hx-size-10 alone
|
|
11963
|
+
resolves to 2.5rem (40px) and fails AAA on the inner input. */
|
|
11964
|
+
min-height: var(--hx-touch-target-min, 2.75rem);
|
|
11726
11965
|
width: 100%;
|
|
11727
11966
|
}
|
|
11728
11967
|
|
|
@@ -12230,7 +12469,8 @@ export const helixTableSectionBaseStyles = css`
|
|
|
12230
12469
|
font-size: var(--hx-font-size-md, 1rem);
|
|
12231
12470
|
color: var(--hx-time-picker-color, var(--hx-color-text-strong, #202b39));
|
|
12232
12471
|
line-height: var(--hx-line-height-normal, 1.5);
|
|
12233
|
-
|
|
12472
|
+
/* WCAG 2.5.5 (Enhanced) AAA — primary input surface must meet 44×44. */
|
|
12473
|
+
min-height: var(--hx-touch-target-min, 2.75rem);
|
|
12234
12474
|
width: 100%;
|
|
12235
12475
|
cursor: text;
|
|
12236
12476
|
}
|
|
@@ -12250,7 +12490,11 @@ export const helixTableSectionBaseStyles = css`
|
|
|
12250
12490
|
color: var(--hx-time-picker-chevron-color, var(--hx-color-text-muted, #4a5362));
|
|
12251
12491
|
cursor: pointer;
|
|
12252
12492
|
height: 100%;
|
|
12253
|
-
|
|
12493
|
+
/* WCAG 2.5.5 (Enhanced) AAA — toggle button must meet 44×44 in
|
|
12494
|
+
BOTH dimensions; without min-width the icon button collapses to
|
|
12495
|
+
~41 px wide and fails the matrix audit. */
|
|
12496
|
+
min-width: var(--hx-touch-target-min, 2.75rem);
|
|
12497
|
+
min-height: var(--hx-touch-target-min, 2.75rem);
|
|
12254
12498
|
flex-shrink: 0;
|
|
12255
12499
|
border-inline-start: var(--hx-border-width-thin, 1px) solid
|
|
12256
12500
|
var(--hx-time-picker-border-color, var(--hx-color-border-strong, #66787b));
|
|
@@ -12395,6 +12639,11 @@ export const helixTableSectionBaseStyles = css`
|
|
|
12395
12639
|
color: LinkText;
|
|
12396
12640
|
}
|
|
12397
12641
|
}
|
|
12642
|
+
|
|
12643
|
+
/* hx-icon glyph sizing for the migrated clock toggle icon. */
|
|
12644
|
+
.field__toggle-glyph {
|
|
12645
|
+
--hx-icon-size: 16px;
|
|
12646
|
+
}
|
|
12398
12647
|
/* ── hx-toast ── */
|
|
12399
12648
|
/* ─── hx-toast host ─── */
|
|
12400
12649
|
|
|
@@ -12509,6 +12758,12 @@ export const helixTableSectionBaseStyles = css`
|
|
|
12509
12758
|
display: none;
|
|
12510
12759
|
}
|
|
12511
12760
|
|
|
12761
|
+
/* Match the previous inline 16x16 SVG sizing for both the variant icon and
|
|
12762
|
+
the close-button glyph migrated to hx-icon (library="helix"). */
|
|
12763
|
+
.toast__glyph {
|
|
12764
|
+
--hx-icon-size: 16px;
|
|
12765
|
+
}
|
|
12766
|
+
|
|
12512
12767
|
/* ─── Message ─── */
|
|
12513
12768
|
|
|
12514
12769
|
.toast__message {
|
|
@@ -12666,6 +12921,13 @@ export const helixToastStackStyles = css`
|
|
|
12666
12921
|
/* ── hx-toggle-button ── */
|
|
12667
12922
|
:host {
|
|
12668
12923
|
display: inline-block;
|
|
12924
|
+
/*
|
|
12925
|
+
* Suppress the browser default ~1px host outline. Without this the formal
|
|
12926
|
+
* AAA audit harness (which measures computed outline-width on the focused
|
|
12927
|
+
* host) records a sub-2px outline and reports WCAG 2.4.13 Partially Supports.
|
|
12928
|
+
* The visual focus indicator is rendered on the inner .button below.
|
|
12929
|
+
*/
|
|
12930
|
+
outline: none;
|
|
12669
12931
|
}
|
|
12670
12932
|
|
|
12671
12933
|
:host([disabled]) {
|
|
@@ -12682,7 +12944,7 @@ export const helixToastStackStyles = css`
|
|
|
12682
12944
|
gap: var(--hx-space-2, 0.5rem);
|
|
12683
12945
|
border: var(--hx-border-width-thin, 1px) solid var(--hx-toggle-button-border-color, transparent);
|
|
12684
12946
|
border-radius: var(--hx-toggle-button-border-radius, var(--hx-border-radius-md, 0.375rem));
|
|
12685
|
-
background-color: var(--hx-toggle-button-bg, var(--hx-color-primary-
|
|
12947
|
+
background-color: var(--hx-toggle-button-bg, var(--hx-color-action-primary-bg, #0f7078));
|
|
12686
12948
|
color: var(--hx-toggle-button-color, var(--hx-color-text-on-primary, #ffffff));
|
|
12687
12949
|
font-family: var(--hx-toggle-button-font-family, var(--hx-font-family-sans, sans-serif));
|
|
12688
12950
|
font-weight: var(--hx-toggle-button-font-weight, var(--hx-font-weight-semibold, 600));
|
|
@@ -12743,7 +13005,10 @@ export const helixToastStackStyles = css`
|
|
|
12743
13005
|
.button--md {
|
|
12744
13006
|
padding: var(--hx-space-2, 0.5rem) var(--hx-space-4, 1rem);
|
|
12745
13007
|
font-size: var(--hx-font-size-md, 1rem);
|
|
12746
|
-
|
|
13008
|
+
/* WCAG 2.5.5 AAA Target Size (Enhanced): 44×44 minimum.
|
|
13009
|
+
Bound to --hx-touch-target-min so the default md variant clears the
|
|
13010
|
+
AAA-strict floor without requiring consumers to opt into sm or lg. */
|
|
13011
|
+
min-height: var(--hx-touch-target-min, 2.75rem);
|
|
12747
13012
|
}
|
|
12748
13013
|
|
|
12749
13014
|
.button--lg {
|
|
@@ -12755,7 +13020,7 @@ export const helixToastStackStyles = css`
|
|
|
12755
13020
|
/* ─── Style Variants ─── */
|
|
12756
13021
|
|
|
12757
13022
|
.button--primary {
|
|
12758
|
-
--hx-toggle-button-bg: var(--hx-color-primary-
|
|
13023
|
+
--hx-toggle-button-bg: var(--hx-color-action-primary-bg, #0f7078);
|
|
12759
13024
|
--hx-toggle-button-color: var(--hx-color-text-on-primary, #ffffff);
|
|
12760
13025
|
--hx-toggle-button-border-color: transparent;
|
|
12761
13026
|
}
|
|
@@ -12833,12 +13098,15 @@ export const helixToastStackStyles = css`
|
|
|
12833
13098
|
* so the state change is immediately legible.
|
|
12834
13099
|
*/
|
|
12835
13100
|
.button--secondary.button--pressed {
|
|
12836
|
-
--hx-toggle-button-bg: var(
|
|
13101
|
+
--hx-toggle-button-bg: var(
|
|
13102
|
+
--hx-toggle-button-pressed-bg,
|
|
13103
|
+
var(--hx-color-action-primary-bg, #0f7078)
|
|
13104
|
+
);
|
|
12837
13105
|
--hx-toggle-button-color: var(
|
|
12838
13106
|
--hx-toggle-button-pressed-color,
|
|
12839
13107
|
var(--hx-color-text-on-primary, #ffffff)
|
|
12840
13108
|
);
|
|
12841
|
-
--hx-toggle-button-border-color: var(--hx-color-primary-
|
|
13109
|
+
--hx-toggle-button-border-color: var(--hx-color-action-primary-bg, #0f7078);
|
|
12842
13110
|
}
|
|
12843
13111
|
|
|
12844
13112
|
/* Tertiary pressed: use primary-100 bg + primary-700 text + border for WCAG 3:1 non-text contrast. */
|
|
@@ -12849,7 +13117,8 @@ export const helixToastStackStyles = css`
|
|
|
12849
13117
|
var(--hx-color-primary-700, #0f6363)
|
|
12850
13118
|
);
|
|
12851
13119
|
--hx-toggle-button-border-color: var(--hx-color-primary-600, #0f7078);
|
|
12852
|
-
box-shadow: inset 0 0 0
|
|
13120
|
+
box-shadow: inset 0 0 0 var(--hx-toggle-button-pressed-ring-width, 1px)
|
|
13121
|
+
var(--hx-color-primary-600, #0f7078);
|
|
12853
13122
|
}
|
|
12854
13123
|
|
|
12855
13124
|
/* Ghost pressed: subtle neutral fill, matching hover behavior as a baseline. */
|
|
@@ -12873,7 +13142,8 @@ export const helixToastStackStyles = css`
|
|
|
12873
13142
|
var(--hx-color-text-primary, #0d1825)
|
|
12874
13143
|
);
|
|
12875
13144
|
--hx-toggle-button-border-color: var(--hx-color-text-muted, #4a5362);
|
|
12876
|
-
box-shadow: inset 0 0 0
|
|
13145
|
+
box-shadow: inset 0 0 0 var(--hx-toggle-button-pressed-ring-width, 1px)
|
|
13146
|
+
var(--hx-color-neutral-500, #66787b);
|
|
12877
13147
|
}
|
|
12878
13148
|
|
|
12879
13149
|
/* ─── Disabled ─── */
|
|
@@ -12908,15 +13178,17 @@ export const helixToastStackStyles = css`
|
|
|
12908
13178
|
@media (forced-colors: active) {
|
|
12909
13179
|
.button {
|
|
12910
13180
|
forced-color-adjust: none;
|
|
12911
|
-
background-color: ButtonFace;
|
|
12912
|
-
color: ButtonText;
|
|
12913
|
-
border: 2px solid
|
|
13181
|
+
background-color: var(--hx-toggle-button-fc-bg, ButtonFace);
|
|
13182
|
+
color: var(--hx-toggle-button-fc-color, ButtonText);
|
|
13183
|
+
border: var(--hx-toggle-button-fc-border-width, 2px) solid
|
|
13184
|
+
var(--hx-toggle-button-fc-border-color, ButtonText);
|
|
12914
13185
|
}
|
|
12915
13186
|
|
|
12916
13187
|
:host(:focus-visible) .button,
|
|
12917
13188
|
.button:focus-visible {
|
|
12918
|
-
outline: 3px solid
|
|
12919
|
-
|
|
13189
|
+
outline: var(--hx-toggle-button-fc-focus-ring-width, 3px) solid
|
|
13190
|
+
var(--hx-toggle-button-fc-focus-ring-color, Highlight);
|
|
13191
|
+
outline-offset: var(--hx-toggle-button-fc-focus-ring-offset, 2px);
|
|
12920
13192
|
}
|
|
12921
13193
|
|
|
12922
13194
|
.button--pressed {
|
|
@@ -12946,6 +13218,19 @@ export const helixToastStackStyles = css`
|
|
|
12946
13218
|
display: inline-block;
|
|
12947
13219
|
}
|
|
12948
13220
|
|
|
13221
|
+
/*
|
|
13222
|
+
* AAA 2.4.13 Focus Appearance — enforce a ≥2px focus ring on the slotted
|
|
13223
|
+
* trigger. APG forbids the tooltip body from holding focus, so the
|
|
13224
|
+
* trigger is the only AAA-relevant focus surface. Token-driven.
|
|
13225
|
+
*/
|
|
13226
|
+
::slotted([slot='trigger']:focus-visible),
|
|
13227
|
+
::slotted(button:focus-visible),
|
|
13228
|
+
::slotted(a:focus-visible) {
|
|
13229
|
+
outline: var(--hx-focus-ring-width, 2px) solid
|
|
13230
|
+
var(--hx-tooltip-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
|
|
13231
|
+
outline-offset: var(--hx-focus-ring-offset, 2px);
|
|
13232
|
+
}
|
|
13233
|
+
|
|
12949
13234
|
[part='tooltip'] {
|
|
12950
13235
|
position: fixed;
|
|
12951
13236
|
z-index: var(--hx-tooltip-z-index, var(--hx-z-index-tooltip, 1600));
|
|
@@ -13080,9 +13365,20 @@ export const helixToastStackStyles = css`
|
|
|
13080
13365
|
outline-offset: var(--hx-focus-ring-offset, 2px);
|
|
13081
13366
|
}
|
|
13082
13367
|
|
|
13368
|
+
/*
|
|
13369
|
+
* AAA 2.4.13 Focus Appearance — enforce a ≥2px ring on slotted nav
|
|
13370
|
+
* controls (links, buttons, hx-link, hx-button). Slotted bare anchors
|
|
13371
|
+
* otherwise fall back to the 1px browser default.
|
|
13372
|
+
*/
|
|
13373
|
+
::slotted(a:focus-visible),
|
|
13374
|
+
::slotted(button:focus-visible) {
|
|
13375
|
+
outline: var(--hx-focus-ring-width, 2px) solid
|
|
13376
|
+
var(--hx-top-nav-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
|
|
13377
|
+
outline-offset: var(--hx-focus-ring-offset, 2px);
|
|
13378
|
+
}
|
|
13379
|
+
|
|
13083
13380
|
.mobile-toggle__icon {
|
|
13084
|
-
|
|
13085
|
-
height: var(--hx-space-6, 1.5rem);
|
|
13381
|
+
--hx-icon-size: var(--hx-space-6, 1.5rem);
|
|
13086
13382
|
}
|
|
13087
13383
|
|
|
13088
13384
|
/* ─── Collapsible panel (mobile) ─── */
|