@helixui/library 3.6.0 → 3.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/custom-elements.json +2633 -805
- 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 -0
- package/dist/components/hx-alert/hx-alert.d.ts.map +1 -1
- package/dist/components/hx-badge/index.js +1 -1
- package/dist/components/hx-banner/hx-banner.d.ts +19 -0
- package/dist/components/hx-banner/hx-banner.d.ts.map +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-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 +19 -0
- package/dist/components/hx-clinical-status/hx-clinical-status.d.ts.map +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-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-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 +18 -0
- package/dist/components/hx-file-upload/hx-file-upload.d.ts.map +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-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-menu/hx-menu.d.ts +18 -0
- package/dist/components/hx-menu/hx-menu.d.ts.map +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/index.js +1 -1
- package/dist/components/hx-overflow-menu/hx-overflow-menu.d.ts +18 -0
- package/dist/components/hx-overflow-menu/hx-overflow-menu.d.ts.map +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-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-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-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 +19 -0
- package/dist/components/hx-slider/hx-slider.d.ts.map +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-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-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 -0
- package/dist/components/hx-toast/hx-toast.d.ts.map +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/css/helix-all.css +298 -64
- package/dist/css/helix-core.css +24 -15
- package/dist/css/helix-forms.css +133 -32
- package/dist/css/helix-navigation.css +49 -5
- package/dist/css/helix-overlay.css +53 -0
- package/dist/css/helix-tokens.css +15 -13
- package/dist/css/helix-utility.css +39 -12
- package/dist/css/hx-action-bar.css +12 -0
- package/dist/css/hx-badge.css +5 -5
- package/dist/css/hx-button.css +15 -5
- package/dist/css/hx-checkbox-group.css +11 -0
- package/dist/css/hx-checkbox.css +20 -4
- package/dist/css/hx-color-picker.css +14 -1
- package/dist/css/hx-copy-button.css +5 -2
- package/dist/css/hx-date-picker.css +11 -3
- package/dist/css/hx-dropdown.css +13 -0
- package/dist/css/hx-icon-button.css +4 -5
- package/dist/css/hx-nav.css +24 -2
- package/dist/css/hx-number-input.css +8 -8
- package/dist/css/hx-pagination.css +6 -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-side-nav.css +7 -0
- package/dist/css/hx-split-button.css +22 -10
- package/dist/css/hx-switch.css +19 -1
- package/dist/css/hx-text-input.css +4 -1
- package/dist/css/hx-time-picker.css +7 -2
- package/dist/css/hx-toggle-button.css +29 -12
- package/dist/css/hx-tooltip.css +13 -0
- package/dist/css/hx-top-nav.css +12 -0
- package/dist/css/index.css +1 -1
- package/dist/css/manifest.json +57 -20
- package/dist/index.js +28 -28
- 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.map +1 -1
- package/dist/shared/{hx-badge-JlFtAdxS.js → hx-badge-DFL35nzi.js} +16 -16
- package/dist/shared/hx-badge-DFL35nzi.js.map +1 -0
- package/dist/shared/hx-banner-fpRnciIO.js.map +1 -1
- 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-checkbox-CYd0YV_u.js → hx-checkbox-DcgyGS9V.js} +27 -11
- package/dist/shared/hx-checkbox-DcgyGS9V.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.map +1 -1
- 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.map +1 -1
- 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-0PtEav0K.js} +71 -63
- package/dist/shared/hx-date-picker-0PtEav0K.js.map +1 -0
- package/dist/shared/hx-dialog-B4weoj_1.js.map +1 -1
- package/dist/shared/hx-drawer-CM_upadk.js.map +1 -1
- package/dist/shared/{hx-dropdown-D626S2ZG.js → hx-dropdown-xHwTJecv.js} +44 -31
- package/dist/shared/hx-dropdown-xHwTJecv.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.map +1 -1
- package/dist/shared/hx-form-CkChEATa.js.map +1 -1
- package/dist/shared/hx-help-text-Xb2Yr8x2.js.map +1 -1
- 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-menu-divider-A6Guuzi_.js.map +1 -1
- package/dist/shared/{hx-nav-ldFM3Fle.js → hx-nav-ChMTfn7o.js} +66 -44
- package/dist/shared/hx-nav-ChMTfn7o.js.map +1 -0
- package/dist/shared/{hx-nav-item-CODtUlew.js → hx-nav-item-ClN17f1y.js} +62 -55
- package/dist/shared/hx-nav-item-ClN17f1y.js.map +1 -0
- package/dist/shared/{hx-number-input-yUzFOSC1.js → hx-number-input-MggsT7F0.js} +13 -13
- package/dist/shared/hx-number-input-MggsT7F0.js.map +1 -0
- package/dist/shared/hx-overflow-menu-DFjJAziP.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-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-BY4zpwdh.js} +81 -63
- package/dist/shared/hx-radio-BY4zpwdh.js.map +1 -0
- package/dist/shared/hx-rating-C3QP53k9.js.map +1 -1
- package/dist/shared/hx-select-DahFehiZ.js.map +1 -1
- package/dist/shared/hx-slider-Blmv_rwS.js.map +1 -1
- package/dist/shared/{hx-split-button-Ddle8iVx.js → hx-split-button-CdNz1XAu.js} +62 -50
- package/dist/shared/hx-split-button-CdNz1XAu.js.map +1 -0
- package/dist/shared/{hx-step-R2rjp1fT.js → hx-step-CUzliIK_.js} +3 -3
- package/dist/shared/hx-step-CUzliIK_.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-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-DfJkBwcX.js} +41 -36
- package/dist/shared/hx-time-picker-DfJkBwcX.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-CsTxOtVI.js} +26 -14
- package/dist/shared/hx-top-nav-CsTxOtVI.js.map +1 -0
- package/dist/shared/toast-factory-Dht3pVsw.js.map +1 -1
- package/figma-inventory.json +1258 -386
- package/package.json +2 -2
- package/dist/shared/hx-action-bar-CitgcpGv.js.map +0 -1
- package/dist/shared/hx-badge-JlFtAdxS.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-checkbox-CYd0YV_u.js.map +0 -1
- package/dist/shared/hx-checkbox-group-D5piJLY8.js.map +0 -1
- package/dist/shared/hx-color-picker-DBwJzT5f.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-dropdown-D626S2ZG.js.map +0 -1
- package/dist/shared/hx-icon-button-a6OpeQz5.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-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-split-button-Ddle8iVx.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-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/css/helix-core.css
CHANGED
|
@@ -145,8 +145,8 @@
|
|
|
145
145
|
justify-content: center;
|
|
146
146
|
gap: var(--hx-space-1, 0.25rem);
|
|
147
147
|
border-radius: var(--hx-badge-border-radius, var(--hx-border-radius-md, 0.375rem));
|
|
148
|
-
background-color: var(--hx-badge-bg, var(--hx-color-primary-
|
|
149
|
-
color: var(--hx-badge-color, var(--hx-color-text-on-primary, #
|
|
148
|
+
background-color: var(--hx-badge-bg, var(--hx-color-action-primary-bg, #0f7078));
|
|
149
|
+
color: var(--hx-badge-color, var(--hx-color-text-on-primary, #ffffff));
|
|
150
150
|
font-family: var(--hx-badge-font-family, var(--hx-font-family-sans, sans-serif));
|
|
151
151
|
font-weight: var(--hx-badge-font-weight, var(--hx-font-weight-semibold, 600));
|
|
152
152
|
line-height: var(--hx-line-height-tight, 1.25);
|
|
@@ -178,11 +178,11 @@
|
|
|
178
178
|
/* ─── Style Variants ─── */
|
|
179
179
|
|
|
180
180
|
.badge--primary {
|
|
181
|
-
--hx-badge-bg: var(--hx-badge-primary-bg, var(--hx-color-primary-
|
|
182
|
-
--hx-badge-color: var(--hx-badge-primary-color, var(--hx-color-text-on-primary, #
|
|
181
|
+
--hx-badge-bg: var(--hx-badge-primary-bg, var(--hx-color-action-primary-bg, #0f7078));
|
|
182
|
+
--hx-badge-color: var(--hx-badge-primary-color, var(--hx-color-text-on-primary, #ffffff));
|
|
183
183
|
--hx-badge-pulse-color-internal: var(
|
|
184
184
|
--hx-badge-pulse-color,
|
|
185
|
-
var(--hx-badge-primary-bg, var(--hx-color-primary-
|
|
185
|
+
var(--hx-badge-primary-bg, var(--hx-color-action-primary-bg, #0f7078))
|
|
186
186
|
);
|
|
187
187
|
}
|
|
188
188
|
|
|
@@ -449,7 +449,10 @@
|
|
|
449
449
|
.button--md {
|
|
450
450
|
padding: var(--hx-space-2, 0.5rem) var(--hx-space-4, 1rem);
|
|
451
451
|
font-size: var(--hx-font-size-md, 1rem);
|
|
452
|
-
|
|
452
|
+
/* WCAG 2.5.5 AAA Target Size (Enhanced): 44×44 minimum.
|
|
453
|
+
Bound to --hx-touch-target-min so the default md variant clears the
|
|
454
|
+
AAA-strict floor without requiring consumers to opt into sm or lg. */
|
|
455
|
+
min-height: var(--hx-touch-target-min, 2.75rem);
|
|
453
456
|
}
|
|
454
457
|
|
|
455
458
|
.button--lg {
|
|
@@ -667,9 +670,16 @@
|
|
|
667
670
|
(primary-400, light teal). The base :host([inverted]) .button rule binds
|
|
668
671
|
color to text.inverse, which flips by mode (neutral-0 in light, neutral-900
|
|
669
672
|
in dark). On a permanent light-teal fill, white text drops to 2.4:1 in
|
|
670
|
-
light mode (AA fail). Pin color to
|
|
671
|
-
|
|
672
|
-
|
|
673
|
+
light mode (AA fail). Pin color to neutral-900 directly (the primitive,
|
|
674
|
+
not text.primary which flips to neutral-100 in dark mode and would regress
|
|
675
|
+
the pair to ~2.10:1) so the foreground is dark in both modes —
|
|
676
|
+
neutral-900 on primary-400 = 7.27:1 AAA in Apex; AAA across all 6 brands.
|
|
677
|
+
Decoupled from text.on-primary in 3.3.x because text.on-primary now
|
|
678
|
+
resolves to neutral-0 (white) for the AAA-large coordinated pair on
|
|
679
|
+
primary-600; using it here would regress this pair to ~2.45:1 (Apex)
|
|
680
|
+
since primary-400 is light teal. neutral-900 is the correct anchor — it
|
|
681
|
+
is the primitive that both light/dark text.primary used to resolve to,
|
|
682
|
+
never flipped by mode/brand.
|
|
673
683
|
Pressed === hover visually in inverted mode is acceptable UX (the
|
|
674
684
|
transient absence of pointer over the button signals release).
|
|
675
685
|
The fallback chain wraps --hx-button-active-bg (highest precedence) and
|
|
@@ -684,7 +694,7 @@
|
|
|
684
694
|
);
|
|
685
695
|
color: var(
|
|
686
696
|
--hx-button-inverted-primary-interactive-color,
|
|
687
|
-
var(--hx-color-
|
|
697
|
+
var(--hx-color-neutral-900, #0d1825)
|
|
688
698
|
);
|
|
689
699
|
}
|
|
690
700
|
|
|
@@ -1394,16 +1404,15 @@
|
|
|
1394
1404
|
/* ─── Style Variants ─── */
|
|
1395
1405
|
|
|
1396
1406
|
.button--primary {
|
|
1397
|
-
--hx-icon-button-bg: var(--hx-color-primary-
|
|
1407
|
+
--hx-icon-button-bg: var(--hx-color-action-primary-bg, #0f7078);
|
|
1398
1408
|
--hx-icon-button-color: var(--hx-color-text-on-primary, #ffffff);
|
|
1399
1409
|
--hx-icon-button-border-color: transparent;
|
|
1400
1410
|
}
|
|
1401
1411
|
|
|
1402
|
-
/*
|
|
1403
|
-
|
|
1404
|
-
icons. Pin fg at neutral-0 (5.82:1 on primary-600). Mirrors hx-button. */
|
|
1412
|
+
/* Hover deepens to action.primary.bg-hover (primary-700) + neutral-0 = 7.03:1 AA.
|
|
1413
|
+
Mirrors hx-button. */
|
|
1405
1414
|
.button--primary:hover {
|
|
1406
|
-
--hx-icon-button-bg: var(--hx-color-primary-
|
|
1415
|
+
--hx-icon-button-bg: var(--hx-color-action-primary-bg-hover, #0f6363);
|
|
1407
1416
|
--hx-icon-button-color: var(--hx-color-neutral-0, #ffffff);
|
|
1408
1417
|
}
|
|
1409
1418
|
|
package/dist/css/helix-forms.css
CHANGED
|
@@ -72,6 +72,16 @@
|
|
|
72
72
|
|
|
73
73
|
/* ─── Focus Ring ─── */
|
|
74
74
|
|
|
75
|
+
/*
|
|
76
|
+
* Suppress the browser default ~1px host outline. Without this, the formal
|
|
77
|
+
* AAA audit harness (which measures computed outline-width on the focused
|
|
78
|
+
* host) records a sub-2px outline and reports WCAG 2.4.13 Partially Supports.
|
|
79
|
+
* The visual focus indicator is rendered on the inner .checkbox__box below.
|
|
80
|
+
*/
|
|
81
|
+
:host {
|
|
82
|
+
outline: none;
|
|
83
|
+
}
|
|
84
|
+
|
|
75
85
|
/*
|
|
76
86
|
* Host-focus path: on the modern (IDL element-references) render branch the
|
|
77
87
|
* host is the tabbable surface (tabindex=0) and the inner input is demoted
|
|
@@ -98,15 +108,21 @@
|
|
|
98
108
|
/* ─── Checked State ─── */
|
|
99
109
|
|
|
100
110
|
.checkbox--checked .checkbox__box {
|
|
101
|
-
background-color: var(--hx-checkbox-checked-bg, var(--hx-color-primary-
|
|
102
|
-
border-color: var(
|
|
111
|
+
background-color: var(--hx-checkbox-checked-bg, var(--hx-color-action-primary-bg, #0f7078));
|
|
112
|
+
border-color: var(
|
|
113
|
+
--hx-checkbox-checked-border-color,
|
|
114
|
+
var(--hx-color-action-primary-bg, #0f7078)
|
|
115
|
+
);
|
|
103
116
|
}
|
|
104
117
|
|
|
105
118
|
/* ─── Indeterminate State ─── */
|
|
106
119
|
|
|
107
120
|
.checkbox--indeterminate .checkbox__box {
|
|
108
|
-
background-color: var(--hx-checkbox-checked-bg, var(--hx-color-primary-
|
|
109
|
-
border-color: var(
|
|
121
|
+
background-color: var(--hx-checkbox-checked-bg, var(--hx-color-action-primary-bg, #0f7078));
|
|
122
|
+
border-color: var(
|
|
123
|
+
--hx-checkbox-checked-border-color,
|
|
124
|
+
var(--hx-color-action-primary-bg, #0f7078)
|
|
125
|
+
);
|
|
110
126
|
}
|
|
111
127
|
|
|
112
128
|
/* ─── Error State ─── */
|
|
@@ -310,6 +326,17 @@
|
|
|
310
326
|
cursor: not-allowed;
|
|
311
327
|
}
|
|
312
328
|
|
|
329
|
+
/*
|
|
330
|
+
* AAA 2.4.13 Focus Appearance — host-level focus ring (group is focusable
|
|
331
|
+
* via roving tabindex in Tier-2). Token-driven: --hx-focus-ring-width
|
|
332
|
+
* resolves to ≥2px.
|
|
333
|
+
*/
|
|
334
|
+
:host(:focus-visible) {
|
|
335
|
+
outline: var(--hx-focus-ring-width, 2px) solid
|
|
336
|
+
var(--hx-checkbox-group-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
|
|
337
|
+
outline-offset: var(--hx-focus-ring-offset, 2px);
|
|
338
|
+
}
|
|
339
|
+
|
|
313
340
|
* {
|
|
314
341
|
box-sizing: border-box;
|
|
315
342
|
}
|
|
@@ -455,6 +482,10 @@
|
|
|
455
482
|
background: var(--hx-color-neutral-0, #ffffff);
|
|
456
483
|
cursor: pointer;
|
|
457
484
|
transition: border-color var(--hx-transition-fast, 150ms ease);
|
|
485
|
+
/* WCAG 2.5.5 AAA Target Size (Enhanced): 44×44 minimum.
|
|
486
|
+
Bound to --hx-touch-target-min so the trigger clears the AAA-strict
|
|
487
|
+
floor at default sizing. */
|
|
488
|
+
min-height: var(--hx-touch-target-min, 2.75rem);
|
|
458
489
|
}
|
|
459
490
|
.trigger:hover:not([disabled]) {
|
|
460
491
|
border-color: var(
|
|
@@ -615,13 +646,20 @@
|
|
|
615
646
|
}
|
|
616
647
|
.format-btn {
|
|
617
648
|
flex-shrink: 0;
|
|
649
|
+
/* WCAG 2.5.5 (Enhanced) AAA — interactive panel controls must clear
|
|
650
|
+
44×44. Without min-width/min-height the format toggle collapses to
|
|
651
|
+
its label box (~44×24 in default rendering, sub-44 on the y-axis). */
|
|
652
|
+
min-width: var(--hx-touch-target-min, 2.75rem);
|
|
653
|
+
min-height: var(--hx-touch-target-min, 2.75rem);
|
|
618
654
|
padding: var(--hx-space-1, 0.25rem) var(--hx-space-2, 0.5rem);
|
|
619
655
|
background: var(--hx-color-neutral-100, #ebeee9);
|
|
620
656
|
border: var(--hx-border-width-thin, 1px) solid var(--hx-color-neutral-300, #b6bfb9);
|
|
621
657
|
border-radius: var(--hx-border-radius-sm, 0.25rem);
|
|
622
658
|
cursor: pointer;
|
|
623
659
|
font-size: var(--hx-font-size-xs, 0.75rem);
|
|
624
|
-
|
|
660
|
+
/* AAA 1.4.6: 12px label vs neutral-100 must be ≥7:1; neutral-700 = 9.34:1
|
|
661
|
+
(neutral-600 was 6.63:1, a tight AAA miss). */
|
|
662
|
+
color: var(--hx-color-neutral-700, #313e4b);
|
|
625
663
|
text-transform: uppercase;
|
|
626
664
|
font-weight: var(--hx-font-weight-semibold, 600);
|
|
627
665
|
letter-spacing: 0.05em;
|
|
@@ -629,6 +667,8 @@
|
|
|
629
667
|
.color-input {
|
|
630
668
|
flex: 1;
|
|
631
669
|
min-width: 0;
|
|
670
|
+
/* WCAG 2.5.5 (Enhanced) AAA — text input must clear 44×44. */
|
|
671
|
+
min-height: var(--hx-touch-target-min, 2.75rem);
|
|
632
672
|
padding: var(--hx-space-1, 0.25rem) var(--hx-space-2, 0.5rem);
|
|
633
673
|
border: var(--hx-border-width-thin, 1px) solid var(--hx-color-neutral-300, #b6bfb9);
|
|
634
674
|
border-radius: var(--hx-border-radius-sm, 0.25rem);
|
|
@@ -1211,7 +1251,8 @@
|
|
|
1211
1251
|
font-size: var(--hx-font-size-md, 1rem);
|
|
1212
1252
|
color: var(--hx-date-picker-color, var(--hx-color-text-strong, #202b39));
|
|
1213
1253
|
line-height: var(--hx-line-height-normal, 1.5);
|
|
1214
|
-
|
|
1254
|
+
/* WCAG 2.5.5 (Enhanced) AAA — primary input surface must meet 44×44. */
|
|
1255
|
+
min-height: var(--hx-touch-target-min, 2.75rem);
|
|
1215
1256
|
width: 100%;
|
|
1216
1257
|
cursor: default;
|
|
1217
1258
|
}
|
|
@@ -1232,6 +1273,10 @@
|
|
|
1232
1273
|
display: flex;
|
|
1233
1274
|
align-items: center;
|
|
1234
1275
|
justify-content: center;
|
|
1276
|
+
/* WCAG 2.5.5 (Enhanced) AAA — calendar trigger must clear 44×44.
|
|
1277
|
+
Without min-width the icon button collapses to ~41 px wide. */
|
|
1278
|
+
min-width: var(--hx-touch-target-min, 2.75rem);
|
|
1279
|
+
min-height: var(--hx-touch-target-min, 2.75rem);
|
|
1235
1280
|
padding: 0 var(--hx-space-3, 0.75rem);
|
|
1236
1281
|
border: none;
|
|
1237
1282
|
border-left: var(--hx-border-width-thin, 1px) solid
|
|
@@ -1405,13 +1450,16 @@
|
|
|
1405
1450
|
}
|
|
1406
1451
|
|
|
1407
1452
|
.calendar__day--selected {
|
|
1408
|
-
background-color: var(--hx-date-picker-selected-bg, var(--hx-color-primary-
|
|
1453
|
+
background-color: var(--hx-date-picker-selected-bg, var(--hx-color-action-primary-bg, #0f7078));
|
|
1409
1454
|
color: var(--hx-date-picker-selected-color, var(--hx-color-text-on-primary, #ffffff));
|
|
1410
1455
|
font-weight: var(--hx-font-weight-semibold, 600);
|
|
1411
1456
|
}
|
|
1412
1457
|
|
|
1413
1458
|
.calendar__day--selected:hover {
|
|
1414
|
-
background-color: var(
|
|
1459
|
+
background-color: var(
|
|
1460
|
+
--hx-date-picker-selected-hover-bg,
|
|
1461
|
+
var(--hx-color-action-primary-bg-hover, #0f6363)
|
|
1462
|
+
);
|
|
1415
1463
|
}
|
|
1416
1464
|
|
|
1417
1465
|
.calendar__day--today:not(.calendar__day--selected) {
|
|
@@ -2146,13 +2194,13 @@
|
|
|
2146
2194
|
.field__input-wrapper:focus-within {
|
|
2147
2195
|
border-color: var(--hx-number-input-focus-ring-color, var(--hx-focus-ring-color));
|
|
2148
2196
|
/* Fallback for Safari < 16.2 (no color-mix support) */
|
|
2149
|
-
box-shadow: 0 0 0 var(--hx-focus-ring-width)
|
|
2197
|
+
box-shadow: 0 0 0 var(--hx-focus-ring-width, 2px)
|
|
2150
2198
|
var(--hx-number-input-focus-ring-color, var(--hx-focus-ring-color));
|
|
2151
|
-
box-shadow: 0 0 0 var(--hx-focus-ring-width)
|
|
2199
|
+
box-shadow: 0 0 0 var(--hx-focus-ring-width, 2px)
|
|
2152
2200
|
color-mix(
|
|
2153
2201
|
in srgb,
|
|
2154
2202
|
var(--hx-number-input-focus-ring-color, var(--hx-focus-ring-color))
|
|
2155
|
-
calc(var(--hx-focus-ring-opacity) * 100%),
|
|
2203
|
+
calc(var(--hx-focus-ring-opacity, 0.25) * 100%),
|
|
2156
2204
|
transparent
|
|
2157
2205
|
);
|
|
2158
2206
|
}
|
|
@@ -2166,13 +2214,13 @@
|
|
|
2166
2214
|
.field--error .field__input-wrapper:focus-within {
|
|
2167
2215
|
border-color: var(--hx-number-input-error-color, var(--hx-color-error-500, #e5493e));
|
|
2168
2216
|
/* Fallback for Safari < 16.2 (no color-mix support) */
|
|
2169
|
-
box-shadow: 0 0 0 var(--hx-focus-ring-width)
|
|
2217
|
+
box-shadow: 0 0 0 var(--hx-focus-ring-width, 2px)
|
|
2170
2218
|
var(--hx-number-input-error-color, var(--hx-color-error-500, #e5493e));
|
|
2171
|
-
box-shadow: 0 0 0 var(--hx-focus-ring-width)
|
|
2219
|
+
box-shadow: 0 0 0 var(--hx-focus-ring-width, 2px)
|
|
2172
2220
|
color-mix(
|
|
2173
2221
|
in srgb,
|
|
2174
2222
|
var(--hx-number-input-error-color, var(--hx-color-error-500, #e5493e))
|
|
2175
|
-
calc(var(--hx-focus-ring-opacity) * 100%),
|
|
2223
|
+
calc(var(--hx-focus-ring-opacity, 0.25) * 100%),
|
|
2176
2224
|
transparent
|
|
2177
2225
|
);
|
|
2178
2226
|
}
|
|
@@ -2199,10 +2247,10 @@
|
|
|
2199
2247
|
color: var(--hx-number-input-color, var(--hx-color-text-strong));
|
|
2200
2248
|
line-height: var(--hx-line-height-normal);
|
|
2201
2249
|
width: 100%;
|
|
2202
|
-
/* Size: md (default) */
|
|
2250
|
+
/* Size: md (default) — WCAG 2.5.5 (Enhanced) AAA touch target. */
|
|
2203
2251
|
padding: var(--hx-space-2) var(--hx-space-3);
|
|
2204
2252
|
font-size: var(--hx-font-size-md);
|
|
2205
|
-
min-height: var(--hx-
|
|
2253
|
+
min-height: var(--hx-touch-target-min, 2.75rem);
|
|
2206
2254
|
}
|
|
2207
2255
|
|
|
2208
2256
|
.field__input::placeholder {
|
|
@@ -2420,6 +2468,16 @@
|
|
|
2420
2468
|
pointer-events: none;
|
|
2421
2469
|
}
|
|
2422
2470
|
|
|
2471
|
+
/*
|
|
2472
|
+
* AAA 2.4.13 Focus Appearance — host-level focus ring for the group host
|
|
2473
|
+
* when it carries focus via roving tabindex. Token-driven: ≥2px width.
|
|
2474
|
+
*/
|
|
2475
|
+
:host(:focus-visible) {
|
|
2476
|
+
outline: var(--hx-focus-ring-width, 2px) solid
|
|
2477
|
+
var(--hx-radio-group-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
|
|
2478
|
+
outline-offset: var(--hx-focus-ring-offset, 2px);
|
|
2479
|
+
}
|
|
2480
|
+
|
|
2423
2481
|
* {
|
|
2424
2482
|
box-sizing: border-box;
|
|
2425
2483
|
}
|
|
@@ -3343,6 +3401,13 @@
|
|
|
3343
3401
|
/* ── hx-switch ── */
|
|
3344
3402
|
:host {
|
|
3345
3403
|
display: block;
|
|
3404
|
+
/*
|
|
3405
|
+
* Suppress the browser default ~1px host outline. Without this the formal
|
|
3406
|
+
* AAA audit harness (which measures computed outline-width on the focused
|
|
3407
|
+
* host) records a sub-2px outline and reports WCAG 2.4.13 Partially Supports.
|
|
3408
|
+
* The visual focus indicator is rendered on the inner .switch__track below.
|
|
3409
|
+
*/
|
|
3410
|
+
outline: none;
|
|
3346
3411
|
}
|
|
3347
3412
|
|
|
3348
3413
|
:host([disabled]) {
|
|
@@ -3414,7 +3479,18 @@
|
|
|
3414
3479
|
}
|
|
3415
3480
|
|
|
3416
3481
|
.switch--checked .switch__track {
|
|
3417
|
-
|
|
3482
|
+
/* WCAG 1.4.6 AAA-strict 7:1: consume action.primary.bg (primary-700 since
|
|
3483
|
+
3.4.0) so the checked track inherits the elevated AAA-strict action
|
|
3484
|
+
surface contract used by every other primary interactive surface
|
|
3485
|
+
(hx-button, hx-checkbox checked-bg, hx-radio checked-bg, etc.). The
|
|
3486
|
+
prior primary-500 fallback (#429797 in Apex) clears AA (5.20:1) but
|
|
3487
|
+
only resolves to ~6.11:1 in the formal harness's contrast probe —
|
|
3488
|
+
below the 7:1 AAA-strict floor. action.primary.bg = primary-700
|
|
3489
|
+
(#0F6363 in Apex) clears 7.03:1 across all 6 brands. */
|
|
3490
|
+
background-color: var(
|
|
3491
|
+
--hx-switch-track-checked-bg,
|
|
3492
|
+
var(--hx-color-action-primary-bg, var(--hx-color-primary-700, #0f7078))
|
|
3493
|
+
);
|
|
3418
3494
|
}
|
|
3419
3495
|
|
|
3420
3496
|
.switch:not(.switch--checked) .switch__track:hover {
|
|
@@ -3816,7 +3892,10 @@
|
|
|
3816
3892
|
font-size: var(--_text-input-font-size);
|
|
3817
3893
|
color: var(--_text-input-color);
|
|
3818
3894
|
line-height: var(--hx-line-height-normal, 1.5);
|
|
3819
|
-
|
|
3895
|
+
/* WCAG 2.5.5 (Enhanced) AAA — primary input surface must meet 44×44.
|
|
3896
|
+
--hx-touch-target-min resolves to 2.75rem (44px); --hx-size-10 alone
|
|
3897
|
+
resolves to 2.5rem (40px) and fails AAA on the inner input. */
|
|
3898
|
+
min-height: var(--hx-touch-target-min, 2.75rem);
|
|
3820
3899
|
width: 100%;
|
|
3821
3900
|
}
|
|
3822
3901
|
|
|
@@ -4290,7 +4369,8 @@
|
|
|
4290
4369
|
font-size: var(--hx-font-size-md, 1rem);
|
|
4291
4370
|
color: var(--hx-time-picker-color, var(--hx-color-text-strong, #202b39));
|
|
4292
4371
|
line-height: var(--hx-line-height-normal, 1.5);
|
|
4293
|
-
|
|
4372
|
+
/* WCAG 2.5.5 (Enhanced) AAA — primary input surface must meet 44×44. */
|
|
4373
|
+
min-height: var(--hx-touch-target-min, 2.75rem);
|
|
4294
4374
|
width: 100%;
|
|
4295
4375
|
cursor: text;
|
|
4296
4376
|
}
|
|
@@ -4310,7 +4390,11 @@
|
|
|
4310
4390
|
color: var(--hx-time-picker-chevron-color, var(--hx-color-text-muted, #4a5362));
|
|
4311
4391
|
cursor: pointer;
|
|
4312
4392
|
height: 100%;
|
|
4313
|
-
|
|
4393
|
+
/* WCAG 2.5.5 (Enhanced) AAA — toggle button must meet 44×44 in
|
|
4394
|
+
BOTH dimensions; without min-width the icon button collapses to
|
|
4395
|
+
~41 px wide and fails the matrix audit. */
|
|
4396
|
+
min-width: var(--hx-touch-target-min, 2.75rem);
|
|
4397
|
+
min-height: var(--hx-touch-target-min, 2.75rem);
|
|
4314
4398
|
flex-shrink: 0;
|
|
4315
4399
|
border-inline-start: var(--hx-border-width-thin, 1px) solid
|
|
4316
4400
|
var(--hx-time-picker-border-color, var(--hx-color-border-strong, #66787b));
|
|
@@ -4458,6 +4542,13 @@
|
|
|
4458
4542
|
/* ── hx-toggle-button ── */
|
|
4459
4543
|
:host {
|
|
4460
4544
|
display: inline-block;
|
|
4545
|
+
/*
|
|
4546
|
+
* Suppress the browser default ~1px host outline. Without this the formal
|
|
4547
|
+
* AAA audit harness (which measures computed outline-width on the focused
|
|
4548
|
+
* host) records a sub-2px outline and reports WCAG 2.4.13 Partially Supports.
|
|
4549
|
+
* The visual focus indicator is rendered on the inner .button below.
|
|
4550
|
+
*/
|
|
4551
|
+
outline: none;
|
|
4461
4552
|
}
|
|
4462
4553
|
|
|
4463
4554
|
:host([disabled]) {
|
|
@@ -4474,7 +4565,7 @@
|
|
|
4474
4565
|
gap: var(--hx-space-2, 0.5rem);
|
|
4475
4566
|
border: var(--hx-border-width-thin, 1px) solid var(--hx-toggle-button-border-color, transparent);
|
|
4476
4567
|
border-radius: var(--hx-toggle-button-border-radius, var(--hx-border-radius-md, 0.375rem));
|
|
4477
|
-
background-color: var(--hx-toggle-button-bg, var(--hx-color-primary-
|
|
4568
|
+
background-color: var(--hx-toggle-button-bg, var(--hx-color-action-primary-bg, #0f7078));
|
|
4478
4569
|
color: var(--hx-toggle-button-color, var(--hx-color-text-on-primary, #ffffff));
|
|
4479
4570
|
font-family: var(--hx-toggle-button-font-family, var(--hx-font-family-sans, sans-serif));
|
|
4480
4571
|
font-weight: var(--hx-toggle-button-font-weight, var(--hx-font-weight-semibold, 600));
|
|
@@ -4535,7 +4626,10 @@
|
|
|
4535
4626
|
.button--md {
|
|
4536
4627
|
padding: var(--hx-space-2, 0.5rem) var(--hx-space-4, 1rem);
|
|
4537
4628
|
font-size: var(--hx-font-size-md, 1rem);
|
|
4538
|
-
|
|
4629
|
+
/* WCAG 2.5.5 AAA Target Size (Enhanced): 44×44 minimum.
|
|
4630
|
+
Bound to --hx-touch-target-min so the default md variant clears the
|
|
4631
|
+
AAA-strict floor without requiring consumers to opt into sm or lg. */
|
|
4632
|
+
min-height: var(--hx-touch-target-min, 2.75rem);
|
|
4539
4633
|
}
|
|
4540
4634
|
|
|
4541
4635
|
.button--lg {
|
|
@@ -4547,7 +4641,7 @@
|
|
|
4547
4641
|
/* ─── Style Variants ─── */
|
|
4548
4642
|
|
|
4549
4643
|
.button--primary {
|
|
4550
|
-
--hx-toggle-button-bg: var(--hx-color-primary-
|
|
4644
|
+
--hx-toggle-button-bg: var(--hx-color-action-primary-bg, #0f7078);
|
|
4551
4645
|
--hx-toggle-button-color: var(--hx-color-text-on-primary, #ffffff);
|
|
4552
4646
|
--hx-toggle-button-border-color: transparent;
|
|
4553
4647
|
}
|
|
@@ -4625,12 +4719,15 @@
|
|
|
4625
4719
|
* so the state change is immediately legible.
|
|
4626
4720
|
*/
|
|
4627
4721
|
.button--secondary.button--pressed {
|
|
4628
|
-
--hx-toggle-button-bg: var(
|
|
4722
|
+
--hx-toggle-button-bg: var(
|
|
4723
|
+
--hx-toggle-button-pressed-bg,
|
|
4724
|
+
var(--hx-color-action-primary-bg, #0f7078)
|
|
4725
|
+
);
|
|
4629
4726
|
--hx-toggle-button-color: var(
|
|
4630
4727
|
--hx-toggle-button-pressed-color,
|
|
4631
4728
|
var(--hx-color-text-on-primary, #ffffff)
|
|
4632
4729
|
);
|
|
4633
|
-
--hx-toggle-button-border-color: var(--hx-color-primary-
|
|
4730
|
+
--hx-toggle-button-border-color: var(--hx-color-action-primary-bg, #0f7078);
|
|
4634
4731
|
}
|
|
4635
4732
|
|
|
4636
4733
|
/* Tertiary pressed: use primary-100 bg + primary-700 text + border for WCAG 3:1 non-text contrast. */
|
|
@@ -4641,7 +4738,8 @@
|
|
|
4641
4738
|
var(--hx-color-primary-700, #0f6363)
|
|
4642
4739
|
);
|
|
4643
4740
|
--hx-toggle-button-border-color: var(--hx-color-primary-600, #0f7078);
|
|
4644
|
-
box-shadow: inset 0 0 0
|
|
4741
|
+
box-shadow: inset 0 0 0 var(--hx-toggle-button-pressed-ring-width, 1px)
|
|
4742
|
+
var(--hx-color-primary-600, #0f7078);
|
|
4645
4743
|
}
|
|
4646
4744
|
|
|
4647
4745
|
/* Ghost pressed: subtle neutral fill, matching hover behavior as a baseline. */
|
|
@@ -4665,7 +4763,8 @@
|
|
|
4665
4763
|
var(--hx-color-text-primary, #0d1825)
|
|
4666
4764
|
);
|
|
4667
4765
|
--hx-toggle-button-border-color: var(--hx-color-text-muted, #4a5362);
|
|
4668
|
-
box-shadow: inset 0 0 0
|
|
4766
|
+
box-shadow: inset 0 0 0 var(--hx-toggle-button-pressed-ring-width, 1px)
|
|
4767
|
+
var(--hx-color-neutral-500, #66787b);
|
|
4669
4768
|
}
|
|
4670
4769
|
|
|
4671
4770
|
/* ─── Disabled ─── */
|
|
@@ -4700,15 +4799,17 @@
|
|
|
4700
4799
|
@media (forced-colors: active) {
|
|
4701
4800
|
.button {
|
|
4702
4801
|
forced-color-adjust: none;
|
|
4703
|
-
background-color: ButtonFace;
|
|
4704
|
-
color: ButtonText;
|
|
4705
|
-
border: 2px solid
|
|
4802
|
+
background-color: var(--hx-toggle-button-fc-bg, ButtonFace);
|
|
4803
|
+
color: var(--hx-toggle-button-fc-color, ButtonText);
|
|
4804
|
+
border: var(--hx-toggle-button-fc-border-width, 2px) solid
|
|
4805
|
+
var(--hx-toggle-button-fc-border-color, ButtonText);
|
|
4706
4806
|
}
|
|
4707
4807
|
|
|
4708
4808
|
:host(:focus-visible) .button,
|
|
4709
4809
|
.button:focus-visible {
|
|
4710
|
-
outline: 3px solid
|
|
4711
|
-
|
|
4810
|
+
outline: var(--hx-toggle-button-fc-focus-ring-width, 3px) solid
|
|
4811
|
+
var(--hx-toggle-button-fc-focus-ring-color, Highlight);
|
|
4812
|
+
outline-offset: var(--hx-toggle-button-fc-focus-ring-offset, 2px);
|
|
4712
4813
|
}
|
|
4713
4814
|
|
|
4714
4815
|
.button--pressed {
|
|
@@ -166,6 +166,16 @@
|
|
|
166
166
|
align-items: center;
|
|
167
167
|
gap: var(--hx-space-1, 0.25rem);
|
|
168
168
|
padding: var(--hx-nav-item-padding, var(--hx-space-2, 0.5rem) var(--hx-space-3, 0.75rem));
|
|
169
|
+
/*
|
|
170
|
+
* WCAG 2.5.5 (Enhanced) AAA — nav links rendered with default padding
|
|
171
|
+
* land at ~37 px tall (8 px + 1.5 line-height + 8 px). The link
|
|
172
|
+
* content is first-party (rendered via consumer-supplied props on
|
|
173
|
+
* <hx-nav-item>), so the slotted-content carve-out does not apply —
|
|
174
|
+
* this is a real component obligation. Bind --hx-nav-link-min-height
|
|
175
|
+
* to --hx-touch-target-min (2.75rem / 44 px) to grow the interactive
|
|
176
|
+
* area without enlarging the visible label.
|
|
177
|
+
*/
|
|
178
|
+
min-height: var(--hx-nav-link-min-height, var(--hx-touch-target-min, 2.75rem));
|
|
169
179
|
color: var(--hx-nav-link-color, var(--hx-color-neutral-100, #ebeee9));
|
|
170
180
|
text-decoration: none;
|
|
171
181
|
border-radius: var(--hx-nav-border-radius, var(--hx-border-radius-sm, 0.25rem));
|
|
@@ -194,8 +204,20 @@
|
|
|
194
204
|
}
|
|
195
205
|
|
|
196
206
|
.nav__link--active {
|
|
197
|
-
background-color: var(--hx-nav-link-active-bg, var(--hx-color-primary-
|
|
198
|
-
|
|
207
|
+
background-color: var(--hx-nav-link-active-bg, var(--hx-color-action-primary-bg, #0f6363));
|
|
208
|
+
/* Use --hx-color-text-on-primary so the active-link text inherits the
|
|
209
|
+
* action-surface AAA-strict pairing (white on primary-700 in default
|
|
210
|
+
* themes; black on lighter primary-700 in the high-contrast theme).
|
|
211
|
+
* Pre-3.4.0 this consumed --hx-color-primary-600 directly which
|
|
212
|
+
* resolved to Apex #0F7078 + white = 5.82:1 — AAA-large only, AAA
|
|
213
|
+
* normal fail under WCAG 1.4.6 for body-text-sized link labels. The
|
|
214
|
+
* Phase 4 Tier 3 chain shift moved action.primary.bg to primary-700
|
|
215
|
+
* (Apex 7.03:1 with white) and consuming the action semantic here
|
|
216
|
+
* picks up the AAA-strict pairing across the full 6-brand matrix.
|
|
217
|
+
* Hardcoding white previously failed AAA-large in high-contrast
|
|
218
|
+
* (ratio 2.54 vs. 4.5 floor); the on-primary token resolves correctly
|
|
219
|
+
* in HC mode. */
|
|
220
|
+
color: var(--hx-nav-link-active-color, var(--hx-color-text-on-primary, #ffffff));
|
|
199
221
|
}
|
|
200
222
|
|
|
201
223
|
/* ─── Chevron Icon ─── */
|
|
@@ -575,7 +597,10 @@
|
|
|
575
597
|
|
|
576
598
|
.button:hover:not(:disabled) {
|
|
577
599
|
background: var(--hx-pagination-hover-bg, var(--hx-color-surface-sunken, #ebeee9));
|
|
578
|
-
border-color: var(
|
|
600
|
+
border-color: var(
|
|
601
|
+
--hx-pagination-hover-border-color,
|
|
602
|
+
var(--hx-color-action-primary-bg, #0f7078)
|
|
603
|
+
);
|
|
579
604
|
}
|
|
580
605
|
|
|
581
606
|
.button:focus-visible {
|
|
@@ -585,10 +610,10 @@
|
|
|
585
610
|
}
|
|
586
611
|
|
|
587
612
|
.button[aria-current='page'] {
|
|
588
|
-
background: var(--hx-pagination-active-bg, var(--hx-color-primary-
|
|
613
|
+
background: var(--hx-pagination-active-bg, var(--hx-color-action-primary-bg, #0f7078));
|
|
589
614
|
border-color: var(
|
|
590
615
|
--hx-pagination-active-border-color,
|
|
591
|
-
var(--hx-pagination-active-bg, var(--hx-color-primary-
|
|
616
|
+
var(--hx-pagination-active-bg, var(--hx-color-action-primary-bg, #0f7078))
|
|
592
617
|
);
|
|
593
618
|
color: var(--hx-pagination-active-color, var(--hx-color-text-on-primary, #ffffff));
|
|
594
619
|
font-weight: var(--hx-font-weight-semibold, 600);
|
|
@@ -809,8 +834,15 @@
|
|
|
809
834
|
display: flex;
|
|
810
835
|
align-items: center;
|
|
811
836
|
justify-content: center;
|
|
837
|
+
/* Visual icon area stays 2rem (32px) — preserves the side-nav header
|
|
838
|
+
silhouette while the wrapping touch target grows to 44×44 to meet
|
|
839
|
+
WCAG 2.5.5 (Enhanced) AAA. min-width/min-height own the hit area;
|
|
840
|
+
width/height drive the visual painted area, but the button's
|
|
841
|
+
intrinsic size always matches the hit-area floor. */
|
|
812
842
|
width: var(--hx-space-8, 2rem);
|
|
813
843
|
height: var(--hx-space-8, 2rem);
|
|
844
|
+
min-width: var(--hx-touch-target-min, 2.75rem);
|
|
845
|
+
min-height: var(--hx-touch-target-min, 2.75rem);
|
|
814
846
|
margin-inline-start: auto;
|
|
815
847
|
flex-shrink: 0;
|
|
816
848
|
padding: 0;
|
|
@@ -1146,6 +1178,18 @@
|
|
|
1146
1178
|
outline-offset: var(--hx-focus-ring-offset, 2px);
|
|
1147
1179
|
}
|
|
1148
1180
|
|
|
1181
|
+
/*
|
|
1182
|
+
* AAA 2.4.13 Focus Appearance — enforce a ≥2px ring on slotted nav
|
|
1183
|
+
* controls (links, buttons, hx-link, hx-button). Slotted bare anchors
|
|
1184
|
+
* otherwise fall back to the 1px browser default.
|
|
1185
|
+
*/
|
|
1186
|
+
::slotted(a:focus-visible),
|
|
1187
|
+
::slotted(button:focus-visible) {
|
|
1188
|
+
outline: var(--hx-focus-ring-width, 2px) solid
|
|
1189
|
+
var(--hx-top-nav-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
|
|
1190
|
+
outline-offset: var(--hx-focus-ring-offset, 2px);
|
|
1191
|
+
}
|
|
1192
|
+
|
|
1149
1193
|
.mobile-toggle__icon {
|
|
1150
1194
|
width: var(--hx-space-6, 1.5rem);
|
|
1151
1195
|
height: var(--hx-space-6, 1.5rem);
|
|
@@ -530,6 +530,19 @@
|
|
|
530
530
|
display: inline-block;
|
|
531
531
|
}
|
|
532
532
|
|
|
533
|
+
/*
|
|
534
|
+
* AAA 2.4.13 Focus Appearance — enforce a ≥2px focus ring on the slotted
|
|
535
|
+
* trigger (typically <hx-button>, <button>, or <hx-icon-button>). The host
|
|
536
|
+
* is a popover-container; the interactive surface is the slotted trigger.
|
|
537
|
+
*/
|
|
538
|
+
::slotted([slot='trigger']:focus-visible),
|
|
539
|
+
::slotted(button:focus-visible),
|
|
540
|
+
::slotted(a:focus-visible) {
|
|
541
|
+
outline: var(--hx-focus-ring-width, 2px) solid
|
|
542
|
+
var(--hx-dropdown-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
|
|
543
|
+
outline-offset: var(--hx-focus-ring-offset, 2px);
|
|
544
|
+
}
|
|
545
|
+
|
|
533
546
|
[part='panel'] {
|
|
534
547
|
position: fixed;
|
|
535
548
|
z-index: var(--hx-dropdown-panel-z-index, 1000);
|
|
@@ -581,6 +594,19 @@
|
|
|
581
594
|
display: inline-block;
|
|
582
595
|
}
|
|
583
596
|
|
|
597
|
+
/*
|
|
598
|
+
* AAA 2.4.13 Focus Appearance — enforce a ≥2px focus ring on the slotted
|
|
599
|
+
* trigger so consumers who slot bare HTML controls inherit the same ring
|
|
600
|
+
* width as <hx-button>. Token-driven: --hx-focus-ring-width (default 2px).
|
|
601
|
+
*/
|
|
602
|
+
::slotted([slot='trigger']:focus-visible),
|
|
603
|
+
::slotted(button:focus-visible),
|
|
604
|
+
::slotted(a:focus-visible) {
|
|
605
|
+
outline: var(--hx-focus-ring-width, 2px) solid
|
|
606
|
+
var(--hx-popover-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
|
|
607
|
+
outline-offset: var(--hx-focus-ring-offset, 2px);
|
|
608
|
+
}
|
|
609
|
+
|
|
584
610
|
[part='body'] {
|
|
585
611
|
position: fixed;
|
|
586
612
|
z-index: var(--hx-popover-z-index, 9999);
|
|
@@ -649,6 +675,20 @@
|
|
|
649
675
|
display: inline-block;
|
|
650
676
|
}
|
|
651
677
|
|
|
678
|
+
/*
|
|
679
|
+
* AAA 2.4.13 Focus Appearance — enforce a ≥2px focus ring on slotted
|
|
680
|
+
* trigger / anchor controls. hx-popup is a positioning primitive: it
|
|
681
|
+
* paints no surface itself, but slotted natives (<button>, <a>) must
|
|
682
|
+
* still meet the AAA ring threshold. Token-driven.
|
|
683
|
+
*/
|
|
684
|
+
::slotted([slot='anchor']:focus-visible),
|
|
685
|
+
::slotted(button:focus-visible),
|
|
686
|
+
::slotted(a:focus-visible) {
|
|
687
|
+
outline: var(--hx-focus-ring-width, 2px) solid
|
|
688
|
+
var(--hx-popup-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
|
|
689
|
+
outline-offset: var(--hx-focus-ring-offset, 2px);
|
|
690
|
+
}
|
|
691
|
+
|
|
652
692
|
[part='popup'] {
|
|
653
693
|
position: fixed;
|
|
654
694
|
z-index: var(--hx-popup-z-index, 9000);
|
|
@@ -696,6 +736,19 @@
|
|
|
696
736
|
display: inline-block;
|
|
697
737
|
}
|
|
698
738
|
|
|
739
|
+
/*
|
|
740
|
+
* AAA 2.4.13 Focus Appearance — enforce a ≥2px focus ring on the slotted
|
|
741
|
+
* trigger. APG forbids the tooltip body from holding focus, so the
|
|
742
|
+
* trigger is the only AAA-relevant focus surface. Token-driven.
|
|
743
|
+
*/
|
|
744
|
+
::slotted([slot='trigger']:focus-visible),
|
|
745
|
+
::slotted(button:focus-visible),
|
|
746
|
+
::slotted(a:focus-visible) {
|
|
747
|
+
outline: var(--hx-focus-ring-width, 2px) solid
|
|
748
|
+
var(--hx-tooltip-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
|
|
749
|
+
outline-offset: var(--hx-focus-ring-offset, 2px);
|
|
750
|
+
}
|
|
751
|
+
|
|
699
752
|
[part='tooltip'] {
|
|
700
753
|
position: fixed;
|
|
701
754
|
z-index: var(--hx-tooltip-z-index, var(--hx-z-index-tooltip, 1600));
|