@helixui/library 3.2.0 → 3.3.0-next.111
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 +175 -326
- 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-alert/hx-alert.styles.d.ts.map +1 -1
- package/dist/components/hx-alert/index.js +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.styles.d.ts.map +1 -1
- package/dist/components/hx-breadcrumb/index.js +1 -1
- package/dist/components/hx-button/hx-button.d.ts +46 -49
- 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-card/hx-card.styles.d.ts.map +1 -1
- package/dist/components/hx-card/index.js +1 -1
- package/dist/components/hx-carousel/index.js +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-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-code-snippet/hx-code-snippet.styles.d.ts.map +1 -1
- package/dist/components/hx-code-snippet/index.js +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.styles.d.ts.map +1 -1
- package/dist/components/hx-combobox/index.js +1 -1
- package/dist/components/hx-data-table/hx-data-table.styles.d.ts.map +1 -1
- package/dist/components/hx-data-table/index.js +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.styles.d.ts.map +1 -1
- package/dist/components/hx-dialog/index.js +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-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-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.styles.d.ts.map +1 -1
- package/dist/components/hx-link/index.js +1 -1
- package/dist/components/hx-list/hx-list-item.styles.d.ts.map +1 -1
- package/dist/components/hx-list/index.js +1 -1
- package/dist/components/hx-menu/hx-menu-item.styles.d.ts.map +1 -1
- package/dist/components/hx-menu/index.js +1 -1
- package/dist/components/hx-meter/hx-meter.styles.d.ts.map +1 -1
- package/dist/components/hx-meter/index.js +1 -1
- package/dist/components/hx-nav/hx-nav.styles.d.ts.map +1 -1
- package/dist/components/hx-nav/index.js +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.styles.d.ts.map +1 -1
- package/dist/components/hx-phi-field/index.js +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-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.styles.d.ts.map +1 -1
- package/dist/components/hx-rating/index.js +1 -1
- package/dist/components/hx-select/hx-select.styles.d.ts.map +1 -1
- package/dist/components/hx-select/index.js +1 -1
- package/dist/components/hx-side-nav/hx-nav-item.d.ts +7 -5
- 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 +10 -23
- 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.styles.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 +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-split-panel/hx-split-panel.styles.d.ts.map +1 -1
- package/dist/components/hx-split-panel/index.js +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.styles.d.ts.map +1 -1
- package/dist/components/hx-switch/index.js +1 -1
- package/dist/components/hx-table/hx-table.styles.d.ts.map +1 -1
- package/dist/components/hx-table/index.js +1 -1
- package/dist/components/hx-tabs/hx-tab-panel.styles.d.ts.map +1 -1
- package/dist/components/hx-tabs/hx-tab.styles.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 -35
- 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.styles.d.ts.map +1 -1
- package/dist/components/hx-textarea/index.js +1 -1
- package/dist/components/hx-theme/hx-theme.d.ts +14 -2
- package/dist/components/hx-theme/hx-theme.d.ts.map +1 -1
- package/dist/components/hx-theme/index.js +1 -1
- package/dist/components/hx-time-picker/index.js +1 -1
- package/dist/components/hx-toast/hx-toast.d.ts +12 -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.styles.d.ts.map +1 -1
- package/dist/components/hx-toggle-button/index.js +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.styles.d.ts.map +1 -1
- package/dist/components/hx-tree-view/hx-tree-view.styles.d.ts.map +1 -1
- package/dist/components/hx-tree-view/index.js +1 -1
- package/dist/css/helix-all.css +351 -308
- package/dist/css/helix-core.css +180 -56
- package/dist/css/helix-data.css +23 -16
- package/dist/css/helix-feedback.css +30 -29
- package/dist/css/helix-forms.css +53 -120
- package/dist/css/helix-layout.css +2 -8
- package/dist/css/helix-media.css +3 -3
- package/dist/css/helix-navigation.css +49 -45
- package/dist/css/helix-overlay.css +3 -12
- package/dist/css/helix-tokens.css +60 -5
- package/dist/css/helix-utility.css +5 -11
- package/dist/css/hx-alert.css +1 -4
- package/dist/css/hx-banner.css +2 -8
- package/dist/css/hx-button.css +176 -43
- package/dist/css/hx-card.css +1 -4
- package/dist/css/hx-carousel.css +3 -3
- package/dist/css/hx-checkbox.css +2 -5
- package/dist/css/hx-clinical-status.css +2 -4
- package/dist/css/hx-code-snippet.css +20 -6
- package/dist/css/hx-color-picker.css +3 -13
- package/dist/css/hx-combobox.css +7 -13
- package/dist/css/hx-data-table.css +2 -8
- package/dist/css/hx-date-picker.css +7 -23
- package/dist/css/hx-dialog.css +1 -4
- package/dist/css/hx-drawer.css +1 -4
- package/dist/css/hx-file-upload.css +4 -13
- package/dist/css/hx-icon-button.css +2 -5
- package/dist/css/hx-link.css +1 -4
- package/dist/css/hx-meter.css +1 -2
- package/dist/css/hx-nav.css +2 -8
- package/dist/css/hx-overflow-menu.css +2 -8
- package/dist/css/hx-pagination.css +2 -8
- package/dist/css/hx-phi-field.css +1 -4
- package/dist/css/hx-popover.css +1 -4
- package/dist/css/hx-rating.css +3 -4
- package/dist/css/hx-select.css +3 -7
- package/dist/css/hx-side-nav.css +41 -15
- package/dist/css/hx-slider.css +4 -7
- package/dist/css/hx-split-button.css +5 -11
- package/dist/css/hx-split-panel.css +2 -8
- package/dist/css/hx-switch.css +3 -6
- package/dist/css/hx-table.css +1 -2
- package/dist/css/hx-text-input.css +8 -14
- package/dist/css/hx-textarea.css +2 -5
- package/dist/css/hx-time-picker.css +3 -3
- package/dist/css/hx-toast.css +26 -15
- package/dist/css/hx-toggle-button.css +4 -7
- package/dist/css/hx-top-nav.css +1 -4
- package/dist/css/hx-tree-view.css +1 -2
- package/dist/css/index.css +1 -1
- package/dist/css/manifest.json +63 -46
- package/dist/index.js +46 -46
- package/dist/shared/{hx-accordion-cnKg4_la.js → hx-accordion-ZVzgDzTG.js} +4 -5
- package/dist/shared/hx-accordion-ZVzgDzTG.js.map +1 -0
- package/dist/shared/{hx-alert-BZH8iHQf.js → hx-alert-CLn7CstP.js} +2 -5
- package/dist/shared/hx-alert-CLn7CstP.js.map +1 -0
- package/dist/shared/{hx-banner-DT7Zn9Bo.js → hx-banner-D3DzpfcP.js} +7 -13
- package/dist/shared/hx-banner-D3DzpfcP.js.map +1 -0
- package/dist/shared/{hx-breadcrumb-item-COeYcB2x.js → hx-breadcrumb-item-3tKppF9h.js} +2 -5
- package/dist/shared/{hx-breadcrumb-item-COeYcB2x.js.map → hx-breadcrumb-item-3tKppF9h.js.map} +1 -1
- package/dist/shared/{hx-button-modUSOpY.js → hx-button-DPY6SPVT.js} +201 -69
- package/dist/shared/hx-button-DPY6SPVT.js.map +1 -0
- package/dist/shared/{hx-card-CU1QnjNb.js → hx-card-qNAM2QNV.js} +6 -9
- package/dist/shared/hx-card-qNAM2QNV.js.map +1 -0
- package/dist/shared/{hx-carousel-item-BaE4hpLl.js → hx-carousel-item-z1Lc24op.js} +4 -4
- package/dist/shared/hx-carousel-item-z1Lc24op.js.map +1 -0
- package/dist/shared/{hx-checkbox-C46TyXhM.js → hx-checkbox-D7xma9YH.js} +7 -10
- package/dist/shared/hx-checkbox-D7xma9YH.js.map +1 -0
- package/dist/shared/{hx-clinical-status-BmSjfSEN.js → hx-clinical-status-D3XQIOqX.js} +3 -5
- package/dist/shared/hx-clinical-status-D3XQIOqX.js.map +1 -0
- package/dist/shared/{hx-code-snippet-CJ0FbQYG.js → hx-code-snippet-fVV3Z2DZ.js} +55 -41
- package/dist/shared/hx-code-snippet-fVV3Z2DZ.js.map +1 -0
- package/dist/shared/{hx-color-picker-DiDLZyvK.js → hx-color-picker-uRc865FJ.js} +23 -33
- package/dist/shared/hx-color-picker-uRc865FJ.js.map +1 -0
- package/dist/shared/{hx-combobox-DaA5dBC4.js → hx-combobox-DDzqNKEW.js} +11 -17
- package/dist/shared/hx-combobox-DDzqNKEW.js.map +1 -0
- package/dist/shared/{hx-data-table-Cq3t86Ic.js → hx-data-table-CLqVqdxr.js} +3 -9
- package/dist/shared/hx-data-table-CLqVqdxr.js.map +1 -0
- package/dist/shared/{hx-date-picker-DMqRQNSB.js → hx-date-picker-2iRG1p74.js} +14 -30
- package/dist/shared/hx-date-picker-2iRG1p74.js.map +1 -0
- package/dist/shared/{hx-dialog-eIS8tcDm.js → hx-dialog-DRN_1-Y-.js} +2 -5
- package/dist/shared/hx-dialog-DRN_1-Y-.js.map +1 -0
- package/dist/shared/{hx-drawer-DDhDz7RI.js → hx-drawer-Y1Ui2IWJ.js} +2 -5
- package/dist/shared/hx-drawer-Y1Ui2IWJ.js.map +1 -0
- package/dist/shared/{hx-file-upload-zTDbjsRw.js → hx-file-upload-D3rKROK5.js} +17 -26
- package/dist/shared/hx-file-upload-D3rKROK5.js.map +1 -0
- package/dist/shared/{hx-icon-button-BmV97nqz.js → hx-icon-button-CGNdQSFM.js} +3 -6
- package/dist/shared/hx-icon-button-CGNdQSFM.js.map +1 -0
- package/dist/shared/{hx-link-DmiV-mPw.js → hx-link-C-O6vq0Q.js} +5 -8
- package/dist/shared/hx-link-C-O6vq0Q.js.map +1 -0
- package/dist/shared/{hx-list-CkphGi9T.js → hx-list-MyEhh8c7.js} +3 -5
- package/dist/shared/hx-list-MyEhh8c7.js.map +1 -0
- package/dist/shared/{hx-menu-divider-j__TZjH2.js → hx-menu-divider-C2omnPtj.js} +2 -5
- package/dist/shared/hx-menu-divider-C2omnPtj.js.map +1 -0
- package/dist/shared/{hx-meter-Cm7k_Ro8.js → hx-meter-BPscsw5t.js} +2 -3
- package/dist/shared/hx-meter-BPscsw5t.js.map +1 -0
- package/dist/shared/{hx-nav-item-D8xHLVOs.js → hx-nav-item-xqRPOCWX.js} +172 -110
- package/dist/shared/hx-nav-item-xqRPOCWX.js.map +1 -0
- package/dist/shared/{hx-nav-LoyEKZQC.js → hx-nav-ldFM3Fle.js} +37 -43
- package/dist/shared/hx-nav-ldFM3Fle.js.map +1 -0
- package/dist/shared/{hx-overflow-menu-BmKyAp5D.js → hx-overflow-menu-DCLsdIBy.js} +3 -9
- package/dist/shared/hx-overflow-menu-DCLsdIBy.js.map +1 -0
- package/dist/shared/{hx-pagination-Dqw5dorC.js → hx-pagination-C7y8GVyU.js} +54 -60
- package/dist/shared/hx-pagination-C7y8GVyU.js.map +1 -0
- package/dist/shared/{hx-phi-field-Bf9TdtC1.js → hx-phi-field-C19oxlrr.js} +2 -5
- package/dist/shared/hx-phi-field-C19oxlrr.js.map +1 -0
- package/dist/shared/{hx-popover-B93rTAfr.js → hx-popover-B-FP3-wW.js} +8 -11
- package/dist/shared/hx-popover-B-FP3-wW.js.map +1 -0
- package/dist/shared/{hx-radio-N8xgDd_5.js → hx-radio-CJvNU2yP.js} +4 -7
- package/dist/shared/{hx-radio-N8xgDd_5.js.map → hx-radio-CJvNU2yP.js.map} +1 -1
- package/dist/shared/{hx-rating-i2FL1WUN.js → hx-rating-C3QP53k9.js} +4 -5
- package/dist/shared/hx-rating-C3QP53k9.js.map +1 -0
- package/dist/shared/{hx-select-vgaBo1Ai.js → hx-select-C8fEHQhC.js} +4 -8
- package/dist/shared/hx-select-C8fEHQhC.js.map +1 -0
- package/dist/shared/{hx-slider-ydBamYhd.js → hx-slider-Blmv_rwS.js} +26 -29
- package/dist/shared/hx-slider-Blmv_rwS.js.map +1 -0
- package/dist/shared/{hx-split-button-BeMsmS6N.js → hx-split-button-Djnc5Aeg.js} +6 -12
- package/dist/shared/hx-split-button-Djnc5Aeg.js.map +1 -0
- package/dist/shared/{hx-split-panel-BVG1VWNT.js → hx-split-panel-B-u0Z3mm.js} +3 -9
- package/dist/shared/hx-split-panel-B-u0Z3mm.js.map +1 -0
- package/dist/shared/{hx-step-DL3PbOzm.js → hx-step-R2rjp1fT.js} +2 -5
- package/dist/shared/hx-step-R2rjp1fT.js.map +1 -0
- package/dist/shared/{hx-switch-Dougzsgp.js → hx-switch-BrZFaRue.js} +8 -11
- package/dist/shared/hx-switch-BrZFaRue.js.map +1 -0
- package/dist/shared/{hx-tab-panel-CbkO9VKu.js → hx-tab-panel-DspCrKqo.js} +3 -9
- package/dist/shared/{hx-tab-panel-CbkO9VKu.js.map → hx-tab-panel-DspCrKqo.js.map} +1 -1
- package/dist/shared/{hx-td-1zwTFLRw.js → hx-td-DnnEMIuA.js} +2 -3
- package/dist/shared/hx-td-DnnEMIuA.js.map +1 -0
- package/dist/shared/{hx-text-input-B-caO5fI.js → hx-text-input-D6FlOZM-.js} +24 -31
- package/dist/shared/hx-text-input-D6FlOZM-.js.map +1 -0
- package/dist/shared/{hx-textarea-D9O4U8cb.js → hx-textarea-CNG590KY.js} +3 -6
- package/dist/shared/hx-textarea-CNG590KY.js.map +1 -0
- package/dist/shared/{hx-theme-BiyQ7UUK.js → hx-theme-BsefFWTO.js} +83 -113
- package/dist/shared/hx-theme-BsefFWTO.js.map +1 -0
- package/dist/shared/{hx-time-picker-m0z4nFB-.js → hx-time-picker-BoEIZwzv.js} +4 -4
- package/dist/shared/{hx-time-picker-m0z4nFB-.js.map → hx-time-picker-BoEIZwzv.js.map} +1 -1
- package/dist/shared/{hx-toggle-button-Dd8clXB4.js → hx-toggle-button-iLiYrMbD.js} +24 -27
- package/dist/shared/hx-toggle-button-iLiYrMbD.js.map +1 -0
- package/dist/shared/{hx-top-nav-CchPYaiV.js → hx-top-nav-DP6OFS8C.js} +11 -14
- package/dist/shared/hx-top-nav-DP6OFS8C.js.map +1 -0
- package/dist/shared/{hx-tree-item-DtMC3DTa.js → hx-tree-item-C2CiWuDE.js} +4 -11
- package/dist/shared/hx-tree-item-C2CiWuDE.js.map +1 -0
- package/dist/shared/{toast-factory-DvDRAh0l.js → toast-factory-YSznocIV.js} +66 -56
- package/dist/shared/toast-factory-YSznocIV.js.map +1 -0
- package/figma-inventory.json +283 -420
- package/package.json +2 -2
- package/dist/shared/hx-accordion-cnKg4_la.js.map +0 -1
- package/dist/shared/hx-alert-BZH8iHQf.js.map +0 -1
- package/dist/shared/hx-banner-DT7Zn9Bo.js.map +0 -1
- package/dist/shared/hx-button-modUSOpY.js.map +0 -1
- package/dist/shared/hx-card-CU1QnjNb.js.map +0 -1
- package/dist/shared/hx-carousel-item-BaE4hpLl.js.map +0 -1
- package/dist/shared/hx-checkbox-C46TyXhM.js.map +0 -1
- package/dist/shared/hx-clinical-status-BmSjfSEN.js.map +0 -1
- package/dist/shared/hx-code-snippet-CJ0FbQYG.js.map +0 -1
- package/dist/shared/hx-color-picker-DiDLZyvK.js.map +0 -1
- package/dist/shared/hx-combobox-DaA5dBC4.js.map +0 -1
- package/dist/shared/hx-data-table-Cq3t86Ic.js.map +0 -1
- package/dist/shared/hx-date-picker-DMqRQNSB.js.map +0 -1
- package/dist/shared/hx-dialog-eIS8tcDm.js.map +0 -1
- package/dist/shared/hx-drawer-DDhDz7RI.js.map +0 -1
- package/dist/shared/hx-file-upload-zTDbjsRw.js.map +0 -1
- package/dist/shared/hx-icon-button-BmV97nqz.js.map +0 -1
- package/dist/shared/hx-link-DmiV-mPw.js.map +0 -1
- package/dist/shared/hx-list-CkphGi9T.js.map +0 -1
- package/dist/shared/hx-menu-divider-j__TZjH2.js.map +0 -1
- package/dist/shared/hx-meter-Cm7k_Ro8.js.map +0 -1
- package/dist/shared/hx-nav-LoyEKZQC.js.map +0 -1
- package/dist/shared/hx-nav-item-D8xHLVOs.js.map +0 -1
- package/dist/shared/hx-overflow-menu-BmKyAp5D.js.map +0 -1
- package/dist/shared/hx-pagination-Dqw5dorC.js.map +0 -1
- package/dist/shared/hx-phi-field-Bf9TdtC1.js.map +0 -1
- package/dist/shared/hx-popover-B93rTAfr.js.map +0 -1
- package/dist/shared/hx-rating-i2FL1WUN.js.map +0 -1
- package/dist/shared/hx-select-vgaBo1Ai.js.map +0 -1
- package/dist/shared/hx-slider-ydBamYhd.js.map +0 -1
- package/dist/shared/hx-split-button-BeMsmS6N.js.map +0 -1
- package/dist/shared/hx-split-panel-BVG1VWNT.js.map +0 -1
- package/dist/shared/hx-step-DL3PbOzm.js.map +0 -1
- package/dist/shared/hx-switch-Dougzsgp.js.map +0 -1
- package/dist/shared/hx-td-1zwTFLRw.js.map +0 -1
- package/dist/shared/hx-text-input-B-caO5fI.js.map +0 -1
- package/dist/shared/hx-textarea-D9O4U8cb.js.map +0 -1
- package/dist/shared/hx-theme-BiyQ7UUK.js.map +0 -1
- package/dist/shared/hx-toggle-button-Dd8clXB4.js.map +0 -1
- package/dist/shared/hx-top-nav-CchPYaiV.js.map +0 -1
- package/dist/shared/hx-tree-item-DtMC3DTa.js.map +0 -1
- package/dist/shared/toast-factory-DvDRAh0l.js.map +0 -1
package/dist/css/helix-core.css
CHANGED
|
@@ -395,10 +395,7 @@
|
|
|
395
395
|
|
|
396
396
|
.button:focus-visible {
|
|
397
397
|
outline: var(--hx-focus-ring-width, 2px) solid
|
|
398
|
-
var(
|
|
399
|
-
--hx-button-focus-ring-color,
|
|
400
|
-
var(--hx-focus-ring-color, var(--hx-color-primary-500, #429797))
|
|
401
|
-
);
|
|
398
|
+
var(--hx-button-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
|
|
402
399
|
outline-offset: var(--hx-focus-ring-offset, 2px);
|
|
403
400
|
}
|
|
404
401
|
|
|
@@ -436,21 +433,24 @@
|
|
|
436
433
|
/* ─── Style Variants ─── */
|
|
437
434
|
|
|
438
435
|
.button--primary {
|
|
439
|
-
--hx-button-bg: var(--hx-color-primary-
|
|
440
|
-
|
|
436
|
+
--hx-button-bg: var(--hx-color-action-primary-bg, #429797);
|
|
437
|
+
/* Inline #0d1825 matches text.on-primary's resolved primitive (neutral-900);
|
|
438
|
+
cold-start without the semantic still paints AA-tuned dark-on-primary
|
|
439
|
+
rather than white-on-primary (3.43:1 fail). */
|
|
440
|
+
--hx-button-color: var(--hx-color-text-on-primary, #0d1825);
|
|
441
441
|
--hx-button-border-color: transparent;
|
|
442
442
|
}
|
|
443
443
|
|
|
444
444
|
.button--secondary {
|
|
445
445
|
--hx-button-bg: transparent;
|
|
446
|
-
/* primary-500 (#429797) text on white surface = 3.
|
|
447
|
-
primary-600 (#0F7078) on white =
|
|
448
|
-
--hx-button-color: var(--hx-color-
|
|
449
|
-
--hx-button-border-color: var(--hx-color-
|
|
446
|
+
/* primary-500 (#429797) text on white surface = 3.44:1 — fails AA.
|
|
447
|
+
primary-600 (#0F7078) on white = 5.82:1 — AA pass. */
|
|
448
|
+
--hx-button-color: var(--hx-color-action-secondary-fg, #0f7078);
|
|
449
|
+
--hx-button-border-color: var(--hx-color-action-secondary-border, #0f7078);
|
|
450
450
|
}
|
|
451
451
|
|
|
452
452
|
.button--secondary:hover {
|
|
453
|
-
--hx-button-bg: var(--hx-button-hover-bg, var(--hx-color-
|
|
453
|
+
--hx-button-bg: var(--hx-button-hover-bg, var(--hx-color-action-secondary-bg-hover, #ebf8f8));
|
|
454
454
|
}
|
|
455
455
|
|
|
456
456
|
.button--tertiary {
|
|
@@ -464,36 +464,52 @@
|
|
|
464
464
|
}
|
|
465
465
|
|
|
466
466
|
.button--danger {
|
|
467
|
-
--hx-button-bg: var(--hx-color-
|
|
468
|
-
|
|
467
|
+
--hx-button-bg: var(--hx-color-action-danger-bg, #e5493e);
|
|
468
|
+
/* Inline #0d1825 matches text.on-error's resolved primitive (neutral-900);
|
|
469
|
+
cold-start without the semantic still paints AA-tuned dark-on-error
|
|
470
|
+
rather than white-on-error (3.92:1 fail). */
|
|
471
|
+
--hx-button-color: var(--hx-color-text-on-error, #0d1825);
|
|
469
472
|
--hx-button-border-color: transparent;
|
|
470
473
|
}
|
|
471
474
|
|
|
472
475
|
/* on-error tokens are tuned for error-500 (neutral-900 on #E5493E ≈ 4.59:1).
|
|
473
|
-
error-600 (#C92A2A) drops that to
|
|
474
|
-
|
|
475
|
-
(commit 300e21ab0)
|
|
476
|
+
error-600 (#C92A2A) drops that to 3.28:1 — AA fail. text.on-error-strong
|
|
477
|
+
resolves to neutral-0 across modes (no dark flip) so the darker hover fill
|
|
478
|
+
stays legible. Mirrors hx-toast precedent (commit 300e21ab0); routed
|
|
479
|
+
through the semantic tier in 3.2.1 token-cascade remediation. */
|
|
476
480
|
.button--danger:hover {
|
|
477
|
-
--hx-button-bg: var(--hx-button-hover-bg, var(--hx-color-
|
|
478
|
-
--hx-button-color: var(--hx-color-
|
|
481
|
+
--hx-button-bg: var(--hx-button-hover-bg, var(--hx-color-action-danger-bg-hover, #c92a2a));
|
|
482
|
+
--hx-button-color: var(--hx-color-text-on-error-strong, #ffffff);
|
|
483
|
+
}
|
|
484
|
+
|
|
485
|
+
/* Pressed state binds explicitly to action.danger.bg-active (error-700,
|
|
486
|
+
#A21312) + text.on-error-strong (neutral-0) = 7.96:1 AA. Base
|
|
487
|
+
.button:active filter:brightness(0.8) would compound on top of bg-hover
|
|
488
|
+
(#C92A2A) and produce ~3.3:1 sub-AA on the bound colors. Override the
|
|
489
|
+
filter to none. HC override on action.danger.bg-active flips to HC
|
|
490
|
+
error-500 so the on-error-strong (HC = #000) pair is AA in HC too. */
|
|
491
|
+
.button--danger:active {
|
|
492
|
+
--hx-button-bg: var(--hx-button-active-bg, var(--hx-color-action-danger-bg-active, #a21312));
|
|
493
|
+
--hx-button-color: var(--hx-color-text-on-error-strong, #ffffff);
|
|
494
|
+
filter: none;
|
|
479
495
|
}
|
|
480
496
|
|
|
481
497
|
.button--ghost {
|
|
482
498
|
--hx-button-bg: transparent;
|
|
483
|
-
/* primary-500 (#429797) text on white surface = 3.
|
|
484
|
-
primary-600 (#0F7078) on white =
|
|
485
|
-
--hx-button-color: var(--hx-color-
|
|
499
|
+
/* primary-500 (#429797) text on white surface = 3.44:1 — fails AA.
|
|
500
|
+
primary-600 (#0F7078) on white = 5.82:1 — AA pass. */
|
|
501
|
+
--hx-button-color: var(--hx-color-action-ghost-fg, #0f7078);
|
|
486
502
|
--hx-button-border-color: transparent;
|
|
487
503
|
}
|
|
488
504
|
|
|
489
505
|
.button--ghost:hover {
|
|
490
|
-
--hx-button-bg: var(--hx-button-hover-bg, var(--hx-color-
|
|
506
|
+
--hx-button-bg: var(--hx-button-hover-bg, var(--hx-color-action-ghost-bg-hover, #ebf8f8));
|
|
491
507
|
}
|
|
492
508
|
|
|
493
509
|
.button--outline {
|
|
494
510
|
--hx-button-bg: transparent;
|
|
495
511
|
--hx-button-color: var(--hx-color-text-primary, #0d1825);
|
|
496
|
-
--hx-button-border-color: var(--hx-color-border-strong, #
|
|
512
|
+
--hx-button-border-color: var(--hx-color-border-strong, #66787b);
|
|
497
513
|
}
|
|
498
514
|
|
|
499
515
|
.button--outline:hover {
|
|
@@ -501,12 +517,24 @@
|
|
|
501
517
|
}
|
|
502
518
|
|
|
503
519
|
/* on-primary token resolves to neutral-900 (#0D1825) — tuned for primary-500.
|
|
504
|
-
primary-600 (#0F7078) drops the pair to 3.07:1 — AA fail.
|
|
505
|
-
neutral-0 for the darker hover fill.
|
|
506
|
-
(commit 300e21ab0)
|
|
520
|
+
primary-600 (#0F7078) drops the pair to 3.07:1 — AA fail. text.on-primary-strong
|
|
521
|
+
resolves to neutral-0 across modes (no dark flip) for the darker hover fill.
|
|
522
|
+
Mirrors hx-toast precedent (commit 300e21ab0); routed through the semantic
|
|
523
|
+
tier in 3.2.1 token-cascade remediation. */
|
|
507
524
|
.button--primary:hover {
|
|
508
|
-
--hx-button-bg: var(--hx-button-hover-bg, var(--hx-color-primary-
|
|
509
|
-
--hx-button-color: var(--hx-color-
|
|
525
|
+
--hx-button-bg: var(--hx-button-hover-bg, var(--hx-color-action-primary-bg-hover, #0f7078));
|
|
526
|
+
--hx-button-color: var(--hx-color-text-on-primary-strong, #ffffff);
|
|
527
|
+
}
|
|
528
|
+
|
|
529
|
+
/* Pressed state binds explicitly to action.primary.bg-active (primary-700,
|
|
530
|
+
#0F6363) + text.on-primary-strong (neutral-0) = 7.03:1 AA. The base
|
|
531
|
+
.button:active filter:brightness(0.8) would compound on top of bg-hover
|
|
532
|
+
(#0F7078) and produce ~3.7:1 sub-AA on the bound colors. Override the
|
|
533
|
+
filter to none so the action.*.bg-active token is what actually paints. */
|
|
534
|
+
.button--primary:active {
|
|
535
|
+
--hx-button-bg: var(--hx-button-active-bg, var(--hx-color-action-primary-bg-active, #0f6363));
|
|
536
|
+
--hx-button-color: var(--hx-color-text-on-primary-strong, #ffffff);
|
|
537
|
+
filter: none;
|
|
510
538
|
}
|
|
511
539
|
|
|
512
540
|
/* ─── Disabled ─── */
|
|
@@ -550,9 +578,20 @@
|
|
|
550
578
|
|
|
551
579
|
/* ─── Inverted Mode ─── */
|
|
552
580
|
|
|
581
|
+
/* Inline-fallback contract for the on-dark-* tokens in this section:
|
|
582
|
+
the literal rgba(255, 255, 255, 0.X) arms are a LIGHT-MODE-only last
|
|
583
|
+
resort (cold-start, CSS-not-loaded). At runtime, hx-theme injects
|
|
584
|
+
the dark.* override (overlay-black-* for the strong border and the
|
|
585
|
+
surface.on-dark-overlay-* fills) so dark-mode inverted buttons stay
|
|
586
|
+
visible on the now-light surface.inverse (#EBEEE9). The inline white
|
|
587
|
+
overlays would render invisible (≈1.1:1) on a light surface, but
|
|
588
|
+
they never paint when the theme is mounted. If a future change
|
|
589
|
+
moves these into a context where hx-theme is not guaranteed,
|
|
590
|
+
replace with mode-aware tokens. */
|
|
591
|
+
|
|
553
592
|
/* Override text color and filter-based hover/active for all variants */
|
|
554
593
|
:host([inverted]) .button {
|
|
555
|
-
color: var(--hx-button-inverted-color, var(--hx-color-
|
|
594
|
+
color: var(--hx-button-inverted-color, var(--hx-color-text-inverse, #ffffff));
|
|
556
595
|
filter: none;
|
|
557
596
|
}
|
|
558
597
|
|
|
@@ -565,37 +604,115 @@
|
|
|
565
604
|
}
|
|
566
605
|
|
|
567
606
|
:host([inverted]) .button:focus-visible {
|
|
607
|
+
/* WCAG 1.4.11: focus indicator needs ≥3:1 against adjacent colors.
|
|
608
|
+
border-on-dark-strong (overlay-white-70) ≈ 5:1 on neutral-900 — passes.
|
|
609
|
+
The lower-alpha siblings used to live in border.* but were sub-3:1
|
|
610
|
+
against any plausible surface and could not honour a border contract;
|
|
611
|
+
they're now surface.on-dark-overlay-{default,subtle} (translucent
|
|
612
|
+
fills, not borders) and used elsewhere in this file. See
|
|
613
|
+
tokens.json color.surface.on-dark-overlay-* for canonical ratios. */
|
|
568
614
|
outline-color: var(
|
|
569
615
|
--hx-button-inverted-focus-ring-color,
|
|
570
|
-
var(--hx-
|
|
616
|
+
var(--hx-color-border-on-dark-strong, rgba(255, 255, 255, 0.7))
|
|
571
617
|
);
|
|
572
618
|
}
|
|
573
619
|
|
|
574
|
-
/* Primary inverted —
|
|
575
|
-
|
|
576
|
-
|
|
620
|
+
/* Primary inverted — resting bg routes through action.primary.bg-inverted-rest
|
|
621
|
+
so dark mode can flip the fill to primary-600. surface.inverse becomes light
|
|
622
|
+
(#EBEEE9) in dark mode; primary-500 on #EBEEE9 = 2.94:1 (sub-3:1 UI floor
|
|
623
|
+
fail for the inverted-button boundary). primary-600 on #EBEEE9 = 4.97:1
|
|
624
|
+
(AA pass). Light mode tracks action.primary.bg-inverted-rest's base value
|
|
625
|
+
(primary-500, 5.20:1 on dark surface.inverse).
|
|
626
|
+
|
|
627
|
+
Override path note (codex round-11): this binds --hx-button-bg directly,
|
|
628
|
+
matching the cascade convention every other .button--{variant} rule uses
|
|
629
|
+
(light primary at line 89, danger at 120, secondary, tertiary, ghost). The
|
|
630
|
+
consumer override path for inverted-primary rest is
|
|
631
|
+
--hx-color-action-primary-bg-inverted-rest, NOT --hx-button-bg — the same
|
|
632
|
+
pattern as light primary (consumers override --hx-color-action-primary-bg).
|
|
633
|
+
Pinned by dark-mode-resolution.test.ts:185-197 across both modes. */
|
|
634
|
+
:host([inverted]) .button--primary {
|
|
635
|
+
--hx-button-bg: var(--hx-color-action-primary-bg-inverted-rest, #429797);
|
|
636
|
+
}
|
|
637
|
+
|
|
638
|
+
/* Primary inverted — hover/pressed lift to action.primary.bg-inverted-hover
|
|
639
|
+
(primary-400, light teal). The base :host([inverted]) .button rule binds
|
|
640
|
+
color to text.inverse, which flips by mode (neutral-0 in light, neutral-900
|
|
641
|
+
in dark). On a permanent light-teal fill, white text drops to 2.4:1 in
|
|
642
|
+
light mode (AA fail). Pin color to text.on-primary (neutral-900, no
|
|
643
|
+
dark-mode flip) for both hover and active so the foreground is dark in
|
|
644
|
+
both modes — neutral-900 on primary-400 = 7.27:1 (AA pass).
|
|
645
|
+
Pressed === hover visually in inverted mode is acceptable UX (the
|
|
646
|
+
transient absence of pointer over the button signals release).
|
|
647
|
+
The fallback chain wraps --hx-button-active-bg (highest precedence) and
|
|
648
|
+
--hx-button-hover-bg so consumer overrides on either prop apply under
|
|
649
|
+
:host([inverted]) — the two share a paint here, so either knob is
|
|
650
|
+
honored, with active-bg winning when both are set. */
|
|
651
|
+
:host([inverted]) .button--primary:hover,
|
|
652
|
+
:host([inverted]) .button--primary:active {
|
|
653
|
+
--hx-button-bg: var(
|
|
654
|
+
--hx-button-active-bg,
|
|
655
|
+
var(--hx-button-hover-bg, var(--hx-color-action-primary-bg-inverted-hover, #6ab1b1))
|
|
656
|
+
);
|
|
657
|
+
color: var(
|
|
658
|
+
--hx-button-inverted-primary-interactive-color,
|
|
659
|
+
var(--hx-color-text-on-primary, #0d1825)
|
|
660
|
+
);
|
|
661
|
+
}
|
|
662
|
+
|
|
663
|
+
/* Danger inverted — sister to primary. Hover/pressed lift to
|
|
664
|
+
action.danger.bg-inverted-hover (error-400, #FC7264). Same foreground
|
|
665
|
+
contract: text.inverse fails in light mode (white on light red ≈ 2.6:1);
|
|
666
|
+
pin to text.on-error (neutral-900, no dark-mode flip) for 6.58:1 in both
|
|
667
|
+
modes. Same active-bg → hover-bg → semantic fallback chain as primary. */
|
|
668
|
+
:host([inverted]) .button--danger:hover,
|
|
669
|
+
:host([inverted]) .button--danger:active {
|
|
670
|
+
--hx-button-bg: var(
|
|
671
|
+
--hx-button-active-bg,
|
|
672
|
+
var(--hx-button-hover-bg, var(--hx-color-action-danger-bg-inverted-hover, #fc7264))
|
|
673
|
+
);
|
|
674
|
+
color: var(
|
|
675
|
+
--hx-button-inverted-danger-interactive-color,
|
|
676
|
+
var(--hx-color-text-on-error, #0d1825)
|
|
677
|
+
);
|
|
577
678
|
}
|
|
578
679
|
|
|
579
|
-
/* Secondary inverted — white border and
|
|
680
|
+
/* Secondary inverted — white border and translucent hover fill */
|
|
580
681
|
:host([inverted]) .button--secondary {
|
|
581
|
-
--hx-button-border-color: var(--hx-
|
|
682
|
+
--hx-button-border-color: var(--hx-color-border-on-dark-strong, rgba(255, 255, 255, 0.7));
|
|
582
683
|
}
|
|
583
684
|
|
|
685
|
+
/* Inverted overlay fills read both names so consumer overrides reach paint
|
|
686
|
+
regardless of which token they target: the deprecated --hx-color-border-on-dark-*
|
|
687
|
+
names (3.2.0/3.2.1 public API, scheduled for removal in 4.0.0) and the canonical
|
|
688
|
+
--hx-color-surface-on-dark-overlay-* names (round-8 rename). Deprecated name
|
|
689
|
+
wins when set; otherwise resolves through the canonical alias chain. */
|
|
584
690
|
:host([inverted]) .button--secondary:hover {
|
|
585
|
-
--hx-button-bg: var(
|
|
691
|
+
--hx-button-bg: var(
|
|
692
|
+
--hx-color-border-on-dark-default,
|
|
693
|
+
var(--hx-color-surface-on-dark-overlay-default, rgba(255, 255, 255, 0.3))
|
|
694
|
+
);
|
|
586
695
|
}
|
|
587
696
|
|
|
588
|
-
/* Tertiary inverted
|
|
697
|
+
/* Tertiary inverted — resting at the subtle overlay (10%) lifts to the default
|
|
698
|
+
overlay (30%) on hover so the runtime hover delta is visually distinct, not
|
|
699
|
+
collapsed onto a single token. */
|
|
589
700
|
:host([inverted]) .button--tertiary {
|
|
590
|
-
--hx-button-bg: var(
|
|
701
|
+
--hx-button-bg: var(
|
|
702
|
+
--hx-color-border-on-dark-subtle,
|
|
703
|
+
var(--hx-color-surface-on-dark-overlay-subtle, rgba(255, 255, 255, 0.1))
|
|
704
|
+
);
|
|
591
705
|
--hx-button-border-color: transparent;
|
|
592
706
|
}
|
|
593
707
|
|
|
594
708
|
:host([inverted]) .button--tertiary:hover {
|
|
595
|
-
--hx-button-bg: var(
|
|
709
|
+
--hx-button-bg: var(
|
|
710
|
+
--hx-color-border-on-dark-default,
|
|
711
|
+
var(--hx-color-surface-on-dark-overlay-default, rgba(255, 255, 255, 0.3))
|
|
712
|
+
);
|
|
596
713
|
}
|
|
597
714
|
|
|
598
|
-
/* Ghost inverted — transparent base,
|
|
715
|
+
/* Ghost inverted — transparent base, translucent hover bg */
|
|
599
716
|
:host([inverted]) .button--ghost {
|
|
600
717
|
--hx-button-bg: transparent;
|
|
601
718
|
--hx-button-border-color: transparent;
|
|
@@ -604,17 +721,23 @@
|
|
|
604
721
|
:host([inverted]) .button--ghost:hover {
|
|
605
722
|
--hx-button-bg: var(
|
|
606
723
|
--hx-button-inverted-ghost-hover-bg,
|
|
607
|
-
var(
|
|
724
|
+
var(
|
|
725
|
+
--hx-color-border-on-dark-default,
|
|
726
|
+
var(--hx-color-surface-on-dark-overlay-default, rgba(255, 255, 255, 0.3))
|
|
727
|
+
)
|
|
608
728
|
);
|
|
609
729
|
}
|
|
610
730
|
|
|
611
731
|
/* Outline inverted — white border */
|
|
612
732
|
:host([inverted]) .button--outline {
|
|
613
|
-
--hx-button-border-color: var(--hx-
|
|
733
|
+
--hx-button-border-color: var(--hx-color-border-on-dark-strong, rgba(255, 255, 255, 0.7));
|
|
614
734
|
}
|
|
615
735
|
|
|
616
736
|
:host([inverted]) .button--outline:hover {
|
|
617
|
-
--hx-button-bg: var(
|
|
737
|
+
--hx-button-bg: var(
|
|
738
|
+
--hx-color-border-on-dark-default,
|
|
739
|
+
var(--hx-color-surface-on-dark-overlay-default, rgba(255, 255, 255, 0.3))
|
|
740
|
+
);
|
|
618
741
|
}
|
|
619
742
|
|
|
620
743
|
/* ─── Prefix / Suffix / Label ─── */
|
|
@@ -642,6 +765,16 @@
|
|
|
642
765
|
border: 2px solid ButtonText;
|
|
643
766
|
}
|
|
644
767
|
|
|
768
|
+
.button:hover {
|
|
769
|
+
/* Hover affordance must survive in HC. Highlight/HighlightText is the
|
|
770
|
+
OS-level "selected" pair, mirroring the forcedColorsInteractive mixin's
|
|
771
|
+
hover contract — kept inline since this component owns its bespoke HC
|
|
772
|
+
block (XOR rule). */
|
|
773
|
+
background-color: Highlight;
|
|
774
|
+
color: HighlightText;
|
|
775
|
+
border-color: Highlight;
|
|
776
|
+
}
|
|
777
|
+
|
|
645
778
|
.button:focus-visible {
|
|
646
779
|
outline: 3px solid Highlight;
|
|
647
780
|
outline-offset: 2px;
|
|
@@ -870,10 +1003,7 @@
|
|
|
870
1003
|
|
|
871
1004
|
.card--interactive:focus-visible {
|
|
872
1005
|
outline: var(--hx-focus-ring-width, 2px) solid
|
|
873
|
-
var(
|
|
874
|
-
--hx-card-focus-ring-color,
|
|
875
|
-
var(--hx-focus-ring-color, var(--hx-color-primary-500, #429797))
|
|
876
|
-
);
|
|
1006
|
+
var(--hx-card-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
|
|
877
1007
|
outline-offset: var(--hx-focus-ring-offset, 2px);
|
|
878
1008
|
}
|
|
879
1009
|
|
|
@@ -1179,10 +1309,7 @@
|
|
|
1179
1309
|
|
|
1180
1310
|
.button:focus-visible {
|
|
1181
1311
|
outline: var(--hx-focus-ring-width, 2px) solid
|
|
1182
|
-
var(
|
|
1183
|
-
--hx-icon-button-focus-ring-color,
|
|
1184
|
-
var(--hx-focus-ring-color, var(--hx-color-primary-500, #429797))
|
|
1185
|
-
);
|
|
1312
|
+
var(--hx-icon-button-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
|
|
1186
1313
|
outline-offset: var(--hx-focus-ring-offset, 2px);
|
|
1187
1314
|
}
|
|
1188
1315
|
|
|
@@ -1252,7 +1379,7 @@
|
|
|
1252
1379
|
.button--tertiary {
|
|
1253
1380
|
--hx-icon-button-bg: transparent;
|
|
1254
1381
|
--hx-icon-button-color: var(--hx-color-text-strong, #202b39);
|
|
1255
|
-
--hx-icon-button-border-color: var(--hx-color-border-strong, #
|
|
1382
|
+
--hx-icon-button-border-color: var(--hx-color-border-strong, #66787b);
|
|
1256
1383
|
}
|
|
1257
1384
|
|
|
1258
1385
|
.button--tertiary:hover {
|
|
@@ -1425,10 +1552,7 @@
|
|
|
1425
1552
|
|
|
1426
1553
|
.link:focus-visible {
|
|
1427
1554
|
outline: var(--hx-focus-ring-width, 2px) solid
|
|
1428
|
-
var(
|
|
1429
|
-
--hx-link-focus-ring-color,
|
|
1430
|
-
var(--hx-focus-ring-color, var(--hx-color-primary-400, #6ab1b1))
|
|
1431
|
-
);
|
|
1555
|
+
var(--hx-link-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
|
|
1432
1556
|
outline-offset: var(--hx-focus-ring-offset, 2px);
|
|
1433
1557
|
border-radius: var(--hx-border-radius-sm, 0.25rem);
|
|
1434
1558
|
}
|
package/dist/css/helix-data.css
CHANGED
|
@@ -80,7 +80,8 @@
|
|
|
80
80
|
min-width: var(--hx-touch-target-min, 2.75rem);
|
|
81
81
|
min-height: var(--hx-touch-target-min, 2.75rem);
|
|
82
82
|
padding: var(--hx-space-1, 0.25rem) var(--hx-space-2, 0.5rem);
|
|
83
|
-
border: var(--hx-border-width-thin, 1px) solid
|
|
83
|
+
border: var(--hx-border-width-thin, 1px) solid
|
|
84
|
+
var(--hx-color-border-on-dark-strong, rgba(255, 255, 255, 0.7));
|
|
84
85
|
border-radius: var(--hx-border-radius-sm, 0.25rem);
|
|
85
86
|
/* Copy button sits on the always-dark block snippet surface; uses inverse family for contrast on the terminal background. */
|
|
86
87
|
background-color: var(--hx-color-surface-inverse, #0d1825);
|
|
@@ -105,8 +106,14 @@
|
|
|
105
106
|
}
|
|
106
107
|
|
|
107
108
|
.code-snippet__copy-button:focus-visible {
|
|
108
|
-
|
|
109
|
-
|
|
109
|
+
/* Always-dark terminal surface — uses primary-400 (#6AB1B1, 7.27:1 on #0d1825)
|
|
110
|
+
instead of the light-mode --hx-focus-ring-color (primary-600, 3.07:1 — razor
|
|
111
|
+
above the 3:1 UI floor with no headroom). Deliberate primitive-tier consumption:
|
|
112
|
+
there is no semantic focus-ring-on-dark alias today — the dark.color.focus-ring
|
|
113
|
+
override at tokens.json only fires under theme=dark, but this surface is dark in
|
|
114
|
+
every theme. Tracked for promotion to a semantic alias in a future token-cascade
|
|
115
|
+
follow-up. */
|
|
116
|
+
outline: var(--hx-focus-ring-width, 2px) solid var(--hx-color-primary-400, #6ab1b1);
|
|
110
117
|
outline-offset: var(--hx-focus-ring-offset, 2px);
|
|
111
118
|
}
|
|
112
119
|
|
|
@@ -125,7 +132,8 @@
|
|
|
125
132
|
min-height: var(--hx-touch-target-min, 2.75rem);
|
|
126
133
|
padding: var(--hx-space-2, 0.5rem) var(--hx-space-4, 1rem);
|
|
127
134
|
border: none;
|
|
128
|
-
border-top: var(--hx-border-width-thin, 1px) solid
|
|
135
|
+
border-top: var(--hx-border-width-thin, 1px) solid
|
|
136
|
+
var(--hx-color-border-on-dark-strong, rgba(255, 255, 255, 0.7));
|
|
129
137
|
/* Expand button is attached to the always-dark block snippet — inverse family maintains the terminal aesthetic. */
|
|
130
138
|
background-color: var(--hx-color-surface-inverse, #0d1825);
|
|
131
139
|
color: var(--hx-color-text-inverse, #ffffff);
|
|
@@ -146,8 +154,14 @@
|
|
|
146
154
|
}
|
|
147
155
|
|
|
148
156
|
.code-snippet__expand-button:focus-visible {
|
|
149
|
-
|
|
150
|
-
|
|
157
|
+
/* Always-dark terminal surface — uses primary-400 (#6AB1B1, 7.27:1 on #0d1825)
|
|
158
|
+
instead of the light-mode --hx-focus-ring-color (primary-600, 3.07:1 — razor
|
|
159
|
+
above the 3:1 UI floor with no headroom). Deliberate primitive-tier consumption:
|
|
160
|
+
there is no semantic focus-ring-on-dark alias today — the dark.color.focus-ring
|
|
161
|
+
override at tokens.json only fires under theme=dark, but this surface is dark in
|
|
162
|
+
every theme. Tracked for promotion to a semantic alias in a future token-cascade
|
|
163
|
+
follow-up. */
|
|
164
|
+
outline: var(--hx-focus-ring-width, 2px) solid var(--hx-color-primary-400, #6ab1b1);
|
|
151
165
|
outline-offset: var(--hx-focus-ring-offset, 2px);
|
|
152
166
|
}
|
|
153
167
|
|
|
@@ -301,10 +315,7 @@
|
|
|
301
315
|
|
|
302
316
|
.sort-btn:focus-visible {
|
|
303
317
|
outline: var(--hx-focus-ring-width, 2px) solid
|
|
304
|
-
var(
|
|
305
|
-
--hx-data-table-focus-ring-color,
|
|
306
|
-
var(--hx-focus-ring-color, var(--hx-color-primary-500, #429797))
|
|
307
|
-
);
|
|
318
|
+
var(--hx-data-table-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
|
|
308
319
|
outline-offset: var(--hx-focus-ring-offset, 2px);
|
|
309
320
|
border-radius: var(--hx-border-radius-sm, 2px);
|
|
310
321
|
}
|
|
@@ -406,10 +417,7 @@
|
|
|
406
417
|
[part~='td']:focus-visible,
|
|
407
418
|
[part~='th']:focus-visible {
|
|
408
419
|
outline: var(--hx-focus-ring-width, 2px) solid
|
|
409
|
-
var(
|
|
410
|
-
--hx-data-table-focus-ring-color,
|
|
411
|
-
var(--hx-focus-ring-color, var(--hx-color-primary-500, #429797))
|
|
412
|
-
);
|
|
420
|
+
var(--hx-data-table-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
|
|
413
421
|
outline-offset: var(--hx-focus-ring-offset, -2px);
|
|
414
422
|
border-radius: var(--hx-border-radius-sm, 2px);
|
|
415
423
|
}
|
|
@@ -679,8 +687,7 @@ export const helixStructuredListRowStyles = css`
|
|
|
679
687
|
/* ─── Focus ─── */
|
|
680
688
|
|
|
681
689
|
::slotted(:focus-visible) {
|
|
682
|
-
outline: var(--hx-focus-ring-width, 2px) solid
|
|
683
|
-
var(--hx-focus-ring-color, var(--hx-color-primary-500, #429797));
|
|
690
|
+
outline: var(--hx-focus-ring-width, 2px) solid var(--hx-focus-ring-color, #0f7078);
|
|
684
691
|
outline-offset: var(--hx-focus-ring-offset, -2px);
|
|
685
692
|
}
|
|
686
693
|
|
|
@@ -160,10 +160,7 @@
|
|
|
160
160
|
|
|
161
161
|
.alert__close-button:focus-visible {
|
|
162
162
|
outline: var(--hx-focus-ring-width, 2px) solid
|
|
163
|
-
var(
|
|
164
|
-
--hx-alert-close-btn-focus-ring-color,
|
|
165
|
-
var(--hx-focus-ring-color, var(--hx-color-primary-400, #6ab1b1))
|
|
166
|
-
);
|
|
163
|
+
var(--hx-alert-close-btn-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
|
|
167
164
|
outline-offset: var(--hx-focus-ring-offset, 2px);
|
|
168
165
|
opacity: 1;
|
|
169
166
|
}
|
|
@@ -336,10 +333,7 @@
|
|
|
336
333
|
|
|
337
334
|
.banner__action:focus-visible {
|
|
338
335
|
outline: var(--hx-focus-ring-width, 2px) solid
|
|
339
|
-
var(
|
|
340
|
-
--hx-banner-action-focus-ring-color,
|
|
341
|
-
var(--hx-focus-ring-color, var(--hx-color-primary-400, #6ab1b1))
|
|
342
|
-
);
|
|
336
|
+
var(--hx-banner-action-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
|
|
343
337
|
outline-offset: var(--hx-focus-ring-offset, 2px);
|
|
344
338
|
border-radius: var(--hx-border-radius-sm, 0.25rem);
|
|
345
339
|
}
|
|
@@ -380,10 +374,7 @@
|
|
|
380
374
|
|
|
381
375
|
.banner__close-button:focus-visible {
|
|
382
376
|
outline: var(--hx-focus-ring-width, 2px) solid
|
|
383
|
-
var(
|
|
384
|
-
--hx-banner-close-btn-focus-ring-color,
|
|
385
|
-
var(--hx-focus-ring-color, var(--hx-color-primary-400, #6ab1b1))
|
|
386
|
-
);
|
|
377
|
+
var(--hx-banner-close-btn-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
|
|
387
378
|
outline-offset: var(--hx-focus-ring-offset, 2px);
|
|
388
379
|
opacity: 1;
|
|
389
380
|
}
|
|
@@ -481,8 +472,7 @@
|
|
|
481
472
|
}
|
|
482
473
|
|
|
483
474
|
.meter:focus-visible {
|
|
484
|
-
outline: var(--hx-focus-ring-width, 2px) solid
|
|
485
|
-
var(--hx-focus-ring-color, var(--hx-color-primary-500, #429797));
|
|
475
|
+
outline: var(--hx-focus-ring-width, 2px) solid var(--hx-focus-ring-color, #0f7078);
|
|
486
476
|
outline-offset: var(--hx-focus-ring-offset, 2px);
|
|
487
477
|
}
|
|
488
478
|
|
|
@@ -1233,33 +1223,38 @@
|
|
|
1233
1223
|
* error-600) because the lighter -500 fills can't pass AA against white
|
|
1234
1224
|
* text in the precision-cool palette. The neutral-900 on-{role} tokens
|
|
1235
1225
|
* are tuned for the lighter -500 surfaces and would fail here (e.g.
|
|
1236
|
-
* neutral-900 on primary-600 = 3.07:1), so
|
|
1237
|
-
*
|
|
1238
|
-
* -
|
|
1239
|
-
* -
|
|
1240
|
-
* (success-600 #0E8A4A on white = 4.
|
|
1241
|
-
* -
|
|
1242
|
-
* -
|
|
1226
|
+
* neutral-900 on primary-600 = 3.07:1), so the on-{role}-strong tokens
|
|
1227
|
+
* (neutral-0, no dark-mode flip) keep fg legible on the darker fills.
|
|
1228
|
+
* - text.on-primary-strong on info.bg-strong (primary-600, #0F7078) = 5.82:1
|
|
1229
|
+
* - text.on-success-strong on success.bg-strong (success-700, #146831) = 6.88:1
|
|
1230
|
+
* (success-600 #0E8A4A on white = 4.42:1 — drifts under AA at 14px)
|
|
1231
|
+
* - text.on-error-strong on danger.bg-strong (error-600, #C92A2A) = 5.46:1
|
|
1232
|
+
* - text.on-warning on warning.bg-strong (warning-500, #C2711C) = 4.83:1
|
|
1243
1233
|
* (warning stays on the lighter -500 surface so on-warning works)
|
|
1234
|
+
*
|
|
1235
|
+
* 3.2.1 token-cascade: bg variants now route through surface.{role}-strong
|
|
1236
|
+
* semantics; fg variants route through text.on-{role}-strong (or on-warning
|
|
1237
|
+
* for the warning variant). Component-tier tokens are NOT bypassed — the
|
|
1238
|
+
* --hx-toast-bg / --hx-toast-color slots remain the single override point.
|
|
1244
1239
|
*/
|
|
1245
1240
|
.toast--success {
|
|
1246
|
-
--hx-toast-bg: var(--hx-color-success-
|
|
1247
|
-
--hx-toast-color: var(--hx-color-
|
|
1241
|
+
--hx-toast-bg: var(--hx-color-surface-success-strong, #146831);
|
|
1242
|
+
--hx-toast-color: var(--hx-color-text-on-success-strong, #ffffff);
|
|
1248
1243
|
}
|
|
1249
1244
|
|
|
1250
1245
|
.toast--warning {
|
|
1251
|
-
--hx-toast-bg: var(--hx-color-warning-
|
|
1246
|
+
--hx-toast-bg: var(--hx-color-surface-warning-strong, #c2711c);
|
|
1252
1247
|
--hx-toast-color: var(--hx-color-text-on-warning, #0d1825);
|
|
1253
1248
|
}
|
|
1254
1249
|
|
|
1255
1250
|
.toast--danger {
|
|
1256
|
-
--hx-toast-bg: var(--hx-color-
|
|
1257
|
-
--hx-toast-color: var(--hx-color-
|
|
1251
|
+
--hx-toast-bg: var(--hx-color-surface-danger-strong, #c92a2a);
|
|
1252
|
+
--hx-toast-color: var(--hx-color-text-on-error-strong, #ffffff);
|
|
1258
1253
|
}
|
|
1259
1254
|
|
|
1260
1255
|
.toast--info {
|
|
1261
|
-
--hx-toast-bg: var(--hx-color-
|
|
1262
|
-
--hx-toast-color: var(--hx-color-
|
|
1256
|
+
--hx-toast-bg: var(--hx-color-surface-info-strong, #0f7078);
|
|
1257
|
+
--hx-toast-color: var(--hx-color-text-on-primary-strong, #ffffff);
|
|
1263
1258
|
}
|
|
1264
1259
|
|
|
1265
1260
|
/* ─── Severity Label (WCAG 1.4.1) ─── */
|
|
@@ -1352,10 +1347,16 @@
|
|
|
1352
1347
|
}
|
|
1353
1348
|
|
|
1354
1349
|
/* ─── Forced Colors (Windows High Contrast) ─── */
|
|
1355
|
-
/*
|
|
1350
|
+
/* Sole owner: bespoke per-class HC overrides on .toast and .toast__close.
|
|
1351
|
+
The shared forcedColorsSurface mixin was dropped in 3.2.1 (XOR rule);
|
|
1352
|
+
this block now carries the surface contract the mixin used to provide
|
|
1353
|
+
(background:Canvas + color:CanvasText + border:1px solid CanvasText)
|
|
1354
|
+
plus the per-class affordances the mixin never touched. */
|
|
1356
1355
|
|
|
1357
1356
|
@media (forced-colors: active) {
|
|
1358
1357
|
.toast {
|
|
1358
|
+
background: Canvas;
|
|
1359
|
+
color: CanvasText;
|
|
1359
1360
|
border: 1px solid CanvasText;
|
|
1360
1361
|
}
|
|
1361
1362
|
|