@helixui/library 3.1.0-next.72 → 3.2.0-next.100
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 +165 -328
- 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/index.js +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 +44 -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/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/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/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/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/index.js +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 +9 -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/index.js +1 -1
- package/dist/components/hx-split-button/hx-split-button.d.ts +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/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/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/index.js +1 -1
- package/dist/components/hx-textarea/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/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/index.js +1 -1
- package/dist/css/helix-all.css +289 -237
- package/dist/css/helix-core.css +147 -53
- package/dist/css/helix-data.css +9 -14
- package/dist/css/helix-feedback.css +30 -20
- package/dist/css/helix-forms.css +53 -73
- package/dist/css/helix-layout.css +2 -8
- package/dist/css/helix-media.css +3 -3
- package/dist/css/helix-navigation.css +34 -41
- package/dist/css/helix-overlay.css +3 -12
- package/dist/css/helix-tokens.css +60 -5
- package/dist/css/helix-utility.css +5 -5
- package/dist/css/hx-alert.css +1 -1
- package/dist/css/hx-banner.css +2 -2
- package/dist/css/hx-button.css +143 -43
- package/dist/css/hx-card.css +1 -4
- package/dist/css/hx-carousel.css +3 -3
- package/dist/css/hx-checkbox.css +2 -2
- package/dist/css/hx-clinical-status.css +2 -4
- package/dist/css/hx-code-snippet.css +6 -4
- package/dist/css/hx-color-picker.css +3 -13
- package/dist/css/hx-combobox.css +7 -7
- package/dist/css/hx-data-table.css +2 -8
- package/dist/css/hx-date-picker.css +7 -7
- 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 -1
- 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 -3
- package/dist/css/hx-select.css +3 -4
- package/dist/css/hx-side-nav.css +26 -12
- package/dist/css/hx-slider.css +4 -4
- package/dist/css/hx-split-button.css +5 -5
- package/dist/css/hx-split-panel.css +2 -8
- package/dist/css/hx-switch.css +3 -3
- package/dist/css/hx-table.css +1 -2
- package/dist/css/hx-text-input.css +8 -8
- package/dist/css/hx-textarea.css +2 -2
- 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 -4
- package/dist/css/hx-top-nav.css +1 -4
- package/dist/css/hx-tree-view.css +1 -1
- package/dist/css/index.css +1 -1
- package/dist/css/manifest.json +60 -46
- package/dist/index.js +44 -44
- 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-C597yHpD.js} +2 -2
- package/dist/shared/{hx-alert-BZH8iHQf.js.map → hx-alert-C597yHpD.js.map} +1 -1
- package/dist/shared/{hx-banner-DT7Zn9Bo.js → hx-banner-Cxd7eFUP.js} +3 -3
- package/dist/shared/{hx-banner-DT7Zn9Bo.js.map → hx-banner-Cxd7eFUP.js.map} +1 -1
- 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-9OUjJnk7.js} +167 -68
- package/dist/shared/hx-button-9OUjJnk7.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-DBD-gMoz.js} +3 -3
- package/dist/shared/{hx-checkbox-C46TyXhM.js.map → hx-checkbox-DBD-gMoz.js.map} +1 -1
- 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-B26RM1_C.js} +10 -8
- package/dist/shared/{hx-code-snippet-CJ0FbQYG.js.map → hx-code-snippet-B26RM1_C.js.map} +1 -1
- 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-ClhNRAS5.js} +8 -8
- package/dist/shared/hx-combobox-ClhNRAS5.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-BJm7Yrda.js} +8 -8
- package/dist/shared/{hx-date-picker-DMqRQNSB.js.map → hx-date-picker-BJm7Yrda.js.map} +1 -1
- 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-9Ig2DW6L.js} +5 -5
- package/dist/shared/{hx-link-DmiV-mPw.js.map → hx-link-9Ig2DW6L.js.map} +1 -1
- 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-CqbO5-T5.js} +140 -90
- package/dist/shared/hx-nav-item-CqbO5-T5.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-dFjUAost.js} +4 -4
- package/dist/shared/{hx-radio-N8xgDd_5.js.map → hx-radio-dFjUAost.js.map} +1 -1
- package/dist/shared/{hx-rating-i2FL1WUN.js → hx-rating-CGtsejNf.js} +4 -4
- package/dist/shared/{hx-rating-i2FL1WUN.js.map → hx-rating-CGtsejNf.js.map} +1 -1
- package/dist/shared/{hx-select-vgaBo1Ai.js → hx-select-Bf4usFts.js} +4 -5
- package/dist/shared/hx-select-Bf4usFts.js.map +1 -0
- package/dist/shared/{hx-slider-ydBamYhd.js → hx-slider-m0aEClH1.js} +5 -5
- package/dist/shared/{hx-slider-ydBamYhd.js.map → hx-slider-m0aEClH1.js.map} +1 -1
- package/dist/shared/{hx-split-button-BeMsmS6N.js → hx-split-button-BxDFfx4D.js} +6 -6
- package/dist/shared/{hx-split-button-BeMsmS6N.js.map → hx-split-button-BxDFfx4D.js.map} +1 -1
- 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-DvAW4YY-.js} +4 -4
- package/dist/shared/{hx-switch-Dougzsgp.js.map → hx-switch-DvAW4YY-.js.map} +1 -1
- package/dist/shared/{hx-tab-panel-CbkO9VKu.js → hx-tab-panel-SWOEHuJc.js} +3 -3
- package/dist/shared/{hx-tab-panel-CbkO9VKu.js.map → hx-tab-panel-SWOEHuJc.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-Bn7Gn8CI.js} +24 -25
- package/dist/shared/hx-text-input-Bn7Gn8CI.js.map +1 -0
- package/dist/shared/{hx-textarea-D9O4U8cb.js → hx-textarea-Jx1xnhgv.js} +7 -7
- package/dist/shared/{hx-textarea-D9O4U8cb.js.map → hx-textarea-Jx1xnhgv.js.map} +1 -1
- 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-DPAIh_Xo.js} +24 -24
- package/dist/shared/{hx-toggle-button-Dd8clXB4.js.map → hx-toggle-button-DPAIh_Xo.js.map} +1 -1
- 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-Dt0Ozqyr.js} +4 -10
- package/dist/shared/hx-tree-item-Dt0Ozqyr.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 +292 -444
- package/package.json +2 -2
- package/dist/shared/hx-accordion-cnKg4_la.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-clinical-status-BmSjfSEN.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-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-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-select-vgaBo1Ai.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-td-1zwTFLRw.js.map +0 -1
- package/dist/shared/hx-text-input-B-caO5fI.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
|
@@ -154,10 +154,7 @@
|
|
|
154
154
|
|
|
155
155
|
.dialog__close-btn:focus-visible {
|
|
156
156
|
outline: var(--hx-focus-ring-width, 2px) solid
|
|
157
|
-
var(
|
|
158
|
-
--hx-dialog-close-btn-focus-ring-color,
|
|
159
|
-
var(--hx-focus-ring-color, var(--hx-color-primary-500, #429797))
|
|
160
|
-
);
|
|
157
|
+
var(--hx-dialog-close-btn-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
|
|
161
158
|
outline-offset: var(--hx-focus-ring-offset, 2px);
|
|
162
159
|
}
|
|
163
160
|
|
|
@@ -429,10 +426,7 @@
|
|
|
429
426
|
|
|
430
427
|
.drawer-close-button:focus-visible {
|
|
431
428
|
outline: var(--hx-focus-ring-width, 2px) solid
|
|
432
|
-
var(
|
|
433
|
-
--hx-drawer-close-btn-focus-ring-color,
|
|
434
|
-
var(--hx-focus-ring-color, var(--hx-color-primary-500, #429797))
|
|
435
|
-
);
|
|
429
|
+
var(--hx-drawer-close-btn-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
|
|
436
430
|
outline-offset: var(--hx-focus-ring-offset, 2px);
|
|
437
431
|
}
|
|
438
432
|
|
|
@@ -601,10 +595,7 @@
|
|
|
601
595
|
|
|
602
596
|
[part='body']:focus-visible {
|
|
603
597
|
outline: var(--hx-focus-ring-width, 2px) solid
|
|
604
|
-
var(
|
|
605
|
-
--hx-popover-focus-ring-color,
|
|
606
|
-
var(--hx-focus-ring-color, var(--hx-color-primary-500, #429797))
|
|
607
|
-
);
|
|
598
|
+
var(--hx-popover-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
|
|
608
599
|
outline-offset: var(--hx-focus-ring-offset, 2px);
|
|
609
600
|
}
|
|
610
601
|
|
|
@@ -101,6 +101,9 @@
|
|
|
101
101
|
--hx-color-text-on-success: var(--hx-color-neutral-900);
|
|
102
102
|
--hx-color-text-on-warning: var(--hx-color-neutral-900);
|
|
103
103
|
--hx-color-text-on-info: var(--hx-color-neutral-900);
|
|
104
|
+
--hx-color-text-on-primary-strong: var(--hx-color-neutral-0);
|
|
105
|
+
--hx-color-text-on-success-strong: var(--hx-color-neutral-0);
|
|
106
|
+
--hx-color-text-on-error-strong: var(--hx-color-neutral-0);
|
|
104
107
|
--hx-color-text-link: var(--hx-color-primary-600);
|
|
105
108
|
--hx-color-text-link-hover: var(--hx-color-primary-700);
|
|
106
109
|
--hx-color-text-link-visited: var(--hx-color-secondary-600);
|
|
@@ -112,13 +115,34 @@
|
|
|
112
115
|
--hx-color-surface-sunken: var(--hx-color-neutral-100);
|
|
113
116
|
--hx-color-surface-inverse: var(--hx-color-neutral-900);
|
|
114
117
|
--hx-color-surface-overlay: rgba(0, 0, 0, 0.75);
|
|
118
|
+
--hx-color-surface-success-strong: var(--hx-color-success-700);
|
|
119
|
+
--hx-color-surface-warning-strong: var(--hx-color-warning-500);
|
|
120
|
+
--hx-color-surface-danger-strong: var(--hx-color-error-600);
|
|
121
|
+
--hx-color-surface-info-strong: var(--hx-color-primary-600);
|
|
115
122
|
--hx-color-border-default: var(--hx-color-neutral-200);
|
|
116
123
|
--hx-color-border-subtle: var(--hx-color-neutral-100);
|
|
117
|
-
--hx-color-border-strong: var(--hx-color-neutral-
|
|
124
|
+
--hx-color-border-strong: var(--hx-color-neutral-500);
|
|
118
125
|
--hx-color-border-focus: var(--hx-color-primary-500);
|
|
119
|
-
--hx-color-
|
|
126
|
+
--hx-color-border-on-dark-strong: var(--hx-overlay-white-70);
|
|
127
|
+
--hx-color-border-on-dark-default: var(--hx-overlay-white-30);
|
|
128
|
+
--hx-color-border-on-dark-subtle: var(--hx-overlay-white-10);
|
|
129
|
+
--hx-color-focus-ring: var(--hx-color-primary-600);
|
|
120
130
|
--hx-color-selection-bg: var(--hx-color-primary-200);
|
|
121
131
|
--hx-color-selection-color: var(--hx-color-neutral-900);
|
|
132
|
+
--hx-color-action-primary-bg: var(--hx-color-primary-500);
|
|
133
|
+
--hx-color-action-primary-bg-inverted-rest: var(--hx-color-primary-500);
|
|
134
|
+
--hx-color-action-primary-bg-hover: var(--hx-color-primary-600);
|
|
135
|
+
--hx-color-action-primary-bg-active: var(--hx-color-primary-700);
|
|
136
|
+
--hx-color-action-primary-bg-inverted-hover: var(--hx-color-primary-400);
|
|
137
|
+
--hx-color-action-secondary-fg: var(--hx-color-primary-600);
|
|
138
|
+
--hx-color-action-secondary-border: var(--hx-color-primary-600);
|
|
139
|
+
--hx-color-action-secondary-bg-hover: var(--hx-color-primary-50);
|
|
140
|
+
--hx-color-action-ghost-fg: var(--hx-color-primary-600);
|
|
141
|
+
--hx-color-action-ghost-bg-hover: var(--hx-color-primary-50);
|
|
142
|
+
--hx-color-action-danger-bg: var(--hx-color-error-500);
|
|
143
|
+
--hx-color-action-danger-bg-hover: var(--hx-color-error-600);
|
|
144
|
+
--hx-color-action-danger-bg-active: var(--hx-color-error-700);
|
|
145
|
+
--hx-color-action-danger-bg-inverted-hover: var(--hx-color-error-400);
|
|
122
146
|
--hx-body-bg: var(--hx-color-surface-default);
|
|
123
147
|
--hx-body-color: var(--hx-color-text-primary);
|
|
124
148
|
--hx-body-font-family: var(--hx-font-family-sans);
|
|
@@ -218,7 +242,7 @@
|
|
|
218
242
|
--hx-transition-slow: 350ms ease;
|
|
219
243
|
--hx-touch-target-min: 2.75rem;
|
|
220
244
|
--hx-touch-target-size: 44px;
|
|
221
|
-
--hx-focus-ring-color: var(--hx-color-primary-
|
|
245
|
+
--hx-focus-ring-color: var(--hx-color-primary-600);
|
|
222
246
|
--hx-focus-ring-width: 2px;
|
|
223
247
|
--hx-focus-ring-offset: 2px;
|
|
224
248
|
--hx-focus-ring-style: solid;
|
|
@@ -346,13 +370,23 @@
|
|
|
346
370
|
--hx-color-surface-overlay: rgba(0, 0, 0, 0.85);
|
|
347
371
|
--hx-color-border-default: var(--hx-color-neutral-700);
|
|
348
372
|
--hx-color-border-subtle: var(--hx-color-neutral-800);
|
|
349
|
-
--hx-color-border-strong: var(--hx-color-neutral-
|
|
373
|
+
--hx-color-border-strong: var(--hx-color-neutral-400);
|
|
350
374
|
--hx-color-border-focus: var(--hx-color-primary-400);
|
|
375
|
+
--hx-color-border-on-dark-strong: var(--hx-overlay-black-50);
|
|
376
|
+
--hx-color-border-on-dark-default: var(--hx-overlay-black-30);
|
|
377
|
+
--hx-color-border-on-dark-subtle: var(--hx-overlay-black-10);
|
|
351
378
|
--hx-color-focus-ring: var(--hx-color-primary-400);
|
|
352
379
|
--hx-color-selection-bg: var(--hx-color-primary-800);
|
|
353
380
|
--hx-color-selection-color: var(--hx-color-neutral-100);
|
|
381
|
+
--hx-color-action-primary-bg-inverted-rest: var(--hx-color-primary-600);
|
|
382
|
+
--hx-color-action-secondary-fg: var(--hx-color-primary-400);
|
|
383
|
+
--hx-color-action-secondary-border: var(--hx-color-primary-400);
|
|
384
|
+
--hx-color-action-secondary-bg-hover: var(--hx-color-primary-900);
|
|
385
|
+
--hx-color-action-ghost-fg: var(--hx-color-primary-400);
|
|
386
|
+
--hx-color-action-ghost-bg-hover: var(--hx-color-primary-900);
|
|
354
387
|
--hx-body-bg: var(--hx-color-surface-default);
|
|
355
388
|
--hx-body-color: var(--hx-color-text-primary);
|
|
389
|
+
--hx-focus-ring-color: var(--hx-color-primary-400);
|
|
356
390
|
--hx-shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.3);
|
|
357
391
|
--hx-shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.4), 0 2px 4px -2px rgb(0 0 0 / 0.3);
|
|
358
392
|
--hx-shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.4), 0 4px 6px -4px rgb(0 0 0 / 0.3);
|
|
@@ -382,13 +416,23 @@
|
|
|
382
416
|
--hx-color-surface-overlay: rgba(0, 0, 0, 0.85);
|
|
383
417
|
--hx-color-border-default: var(--hx-color-neutral-700);
|
|
384
418
|
--hx-color-border-subtle: var(--hx-color-neutral-800);
|
|
385
|
-
--hx-color-border-strong: var(--hx-color-neutral-
|
|
419
|
+
--hx-color-border-strong: var(--hx-color-neutral-400);
|
|
386
420
|
--hx-color-border-focus: var(--hx-color-primary-400);
|
|
421
|
+
--hx-color-border-on-dark-strong: var(--hx-overlay-black-50);
|
|
422
|
+
--hx-color-border-on-dark-default: var(--hx-overlay-black-30);
|
|
423
|
+
--hx-color-border-on-dark-subtle: var(--hx-overlay-black-10);
|
|
387
424
|
--hx-color-focus-ring: var(--hx-color-primary-400);
|
|
388
425
|
--hx-color-selection-bg: var(--hx-color-primary-800);
|
|
389
426
|
--hx-color-selection-color: var(--hx-color-neutral-100);
|
|
427
|
+
--hx-color-action-primary-bg-inverted-rest: var(--hx-color-primary-600);
|
|
428
|
+
--hx-color-action-secondary-fg: var(--hx-color-primary-400);
|
|
429
|
+
--hx-color-action-secondary-border: var(--hx-color-primary-400);
|
|
430
|
+
--hx-color-action-secondary-bg-hover: var(--hx-color-primary-900);
|
|
431
|
+
--hx-color-action-ghost-fg: var(--hx-color-primary-400);
|
|
432
|
+
--hx-color-action-ghost-bg-hover: var(--hx-color-primary-900);
|
|
390
433
|
--hx-body-bg: var(--hx-color-surface-default);
|
|
391
434
|
--hx-body-color: var(--hx-color-text-primary);
|
|
435
|
+
--hx-focus-ring-color: var(--hx-color-primary-400);
|
|
392
436
|
--hx-shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.3);
|
|
393
437
|
--hx-shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.4), 0 2px 4px -2px rgb(0 0 0 / 0.3);
|
|
394
438
|
--hx-shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.4), 0 4px 6px -4px rgb(0 0 0 / 0.3);
|
|
@@ -426,6 +470,9 @@
|
|
|
426
470
|
--hx-color-text-on-success: #000000;
|
|
427
471
|
--hx-color-text-on-warning: #000000;
|
|
428
472
|
--hx-color-text-on-info: #000000;
|
|
473
|
+
--hx-color-text-on-primary-strong: #000000;
|
|
474
|
+
--hx-color-text-on-error-strong: #000000;
|
|
475
|
+
--hx-color-text-on-success-strong: #000000;
|
|
429
476
|
--hx-color-text-link: #FFFF00;
|
|
430
477
|
--hx-color-text-link-hover: #FFFF99;
|
|
431
478
|
--hx-color-text-link-visited: #FF80FF;
|
|
@@ -435,13 +482,21 @@
|
|
|
435
482
|
--hx-color-surface-sunken: #000000;
|
|
436
483
|
--hx-color-surface-inverse: #FFFFFF;
|
|
437
484
|
--hx-color-surface-overlay: rgba(0, 0, 0, 0.95);
|
|
485
|
+
--hx-color-surface-success-strong: var(--hx-color-success-500);
|
|
486
|
+
--hx-color-surface-warning-strong: var(--hx-color-warning-500);
|
|
487
|
+
--hx-color-surface-danger-strong: var(--hx-color-error-500);
|
|
488
|
+
--hx-color-surface-info-strong: var(--hx-color-primary-500);
|
|
438
489
|
--hx-color-border-default: #FFFFFF;
|
|
439
490
|
--hx-color-border-subtle: #C0C0C0;
|
|
440
491
|
--hx-color-border-strong: #FFFFFF;
|
|
441
492
|
--hx-color-border-focus: #FFFF00;
|
|
493
|
+
--hx-color-border-on-dark-strong: #FFFFFF;
|
|
494
|
+
--hx-color-border-on-dark-default: #FFFFFF;
|
|
495
|
+
--hx-color-border-on-dark-subtle: #C0C0C0;
|
|
442
496
|
--hx-color-focus-ring: #FFFF00;
|
|
443
497
|
--hx-color-selection-bg: #1AEBFF;
|
|
444
498
|
--hx-color-selection-color: #000000;
|
|
499
|
+
--hx-color-action-danger-bg-active: var(--hx-color-error-500);
|
|
445
500
|
--hx-body-bg: #000000;
|
|
446
501
|
--hx-body-color: #FFFFFF;
|
|
447
502
|
--hx-focus-ring-color: #FFFF00;
|
|
@@ -417,7 +417,7 @@
|
|
|
417
417
|
outline: var(--hx-focus-ring-width, 2px) solid
|
|
418
418
|
var(
|
|
419
419
|
--hx-split-button-focus-ring-color,
|
|
420
|
-
var(--hx-focus-ring-color, var(--hx-color-primary-
|
|
420
|
+
var(--hx-focus-ring-color, var(--hx-color-primary-600, #0f7078))
|
|
421
421
|
);
|
|
422
422
|
outline-offset: var(--hx-focus-ring-offset, 2px);
|
|
423
423
|
z-index: 1;
|
|
@@ -445,7 +445,7 @@
|
|
|
445
445
|
flex-shrink: 0;
|
|
446
446
|
border: var(--hx-border-width-thin, 1px) solid var(--hx-split-button-border-color, transparent);
|
|
447
447
|
border-inline-start: var(--hx-border-width-thin, 1px) solid
|
|
448
|
-
var(--hx-split-button-divider-color, var(--hx-color-primary-
|
|
448
|
+
var(--hx-split-button-divider-color, var(--hx-color-primary-900, #0b3232));
|
|
449
449
|
border-radius: 0 var(--hx-split-button-border-radius, var(--hx-border-radius-md, 0.375rem))
|
|
450
450
|
var(--hx-split-button-border-radius, var(--hx-border-radius-md, 0.375rem)) 0;
|
|
451
451
|
background-color: var(--hx-split-button-bg, var(--hx-color-primary-500, #429797));
|
|
@@ -462,7 +462,7 @@
|
|
|
462
462
|
outline: var(--hx-focus-ring-width, 2px) solid
|
|
463
463
|
var(
|
|
464
464
|
--hx-split-button-focus-ring-color,
|
|
465
|
-
var(--hx-focus-ring-color, var(--hx-color-primary-
|
|
465
|
+
var(--hx-focus-ring-color, var(--hx-color-primary-600, #0f7078))
|
|
466
466
|
);
|
|
467
467
|
outline-offset: var(--hx-focus-ring-offset, 2px);
|
|
468
468
|
z-index: 1;
|
|
@@ -539,7 +539,7 @@
|
|
|
539
539
|
--hx-split-button-bg: var(--hx-color-primary-500, #429797);
|
|
540
540
|
--hx-split-button-color: var(--hx-color-text-on-primary, #ffffff);
|
|
541
541
|
--hx-split-button-border-color: transparent;
|
|
542
|
-
--hx-split-button-divider-color: var(--hx-color-primary-
|
|
542
|
+
--hx-split-button-divider-color: var(--hx-color-primary-900, #0b3232);
|
|
543
543
|
}
|
|
544
544
|
|
|
545
545
|
/* primary:hover — replace the universal brightness(0.9) filter (which would
|
|
@@ -626,7 +626,7 @@
|
|
|
626
626
|
.split-button--outline .split-button__trigger {
|
|
627
627
|
--hx-split-button-bg: transparent;
|
|
628
628
|
--hx-split-button-color: var(--hx-color-text-primary, #0d1825);
|
|
629
|
-
--hx-split-button-border-color: var(--hx-color-border-strong, #
|
|
629
|
+
--hx-split-button-border-color: var(--hx-color-border-strong, #66787b);
|
|
630
630
|
--hx-split-button-divider-color: var(--hx-color-border-default, #d6dbd5);
|
|
631
631
|
}
|
|
632
632
|
|
package/dist/css/hx-alert.css
CHANGED
|
@@ -160,7 +160,7 @@
|
|
|
160
160
|
outline: var(--hx-focus-ring-width, 2px) solid
|
|
161
161
|
var(
|
|
162
162
|
--hx-alert-close-btn-focus-ring-color,
|
|
163
|
-
var(--hx-focus-ring-color, var(--hx-color-primary-
|
|
163
|
+
var(--hx-focus-ring-color, var(--hx-color-primary-600, #0f7078))
|
|
164
164
|
);
|
|
165
165
|
outline-offset: var(--hx-focus-ring-offset, 2px);
|
|
166
166
|
opacity: 1;
|
package/dist/css/hx-banner.css
CHANGED
|
@@ -98,7 +98,7 @@
|
|
|
98
98
|
outline: var(--hx-focus-ring-width, 2px) solid
|
|
99
99
|
var(
|
|
100
100
|
--hx-banner-action-focus-ring-color,
|
|
101
|
-
var(--hx-focus-ring-color, var(--hx-color-primary-
|
|
101
|
+
var(--hx-focus-ring-color, var(--hx-color-primary-600, #0f7078))
|
|
102
102
|
);
|
|
103
103
|
outline-offset: var(--hx-focus-ring-offset, 2px);
|
|
104
104
|
border-radius: var(--hx-border-radius-sm, 0.25rem);
|
|
@@ -142,7 +142,7 @@
|
|
|
142
142
|
outline: var(--hx-focus-ring-width, 2px) solid
|
|
143
143
|
var(
|
|
144
144
|
--hx-banner-close-btn-focus-ring-color,
|
|
145
|
-
var(--hx-focus-ring-color, var(--hx-color-primary-
|
|
145
|
+
var(--hx-focus-ring-color, var(--hx-color-primary-600, #0f7078))
|
|
146
146
|
);
|
|
147
147
|
outline-offset: var(--hx-focus-ring-offset, 2px);
|
|
148
148
|
opacity: 1;
|
package/dist/css/hx-button.css
CHANGED
|
@@ -46,10 +46,7 @@
|
|
|
46
46
|
|
|
47
47
|
.button:focus-visible {
|
|
48
48
|
outline: var(--hx-focus-ring-width, 2px) solid
|
|
49
|
-
var(
|
|
50
|
-
--hx-button-focus-ring-color,
|
|
51
|
-
var(--hx-focus-ring-color, var(--hx-color-primary-500, #429797))
|
|
52
|
-
);
|
|
49
|
+
var(--hx-button-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
|
|
53
50
|
outline-offset: var(--hx-focus-ring-offset, 2px);
|
|
54
51
|
}
|
|
55
52
|
|
|
@@ -87,21 +84,24 @@
|
|
|
87
84
|
/* ─── Style Variants ─── */
|
|
88
85
|
|
|
89
86
|
.button--primary {
|
|
90
|
-
--hx-button-bg: var(--hx-color-primary-
|
|
91
|
-
|
|
87
|
+
--hx-button-bg: var(--hx-color-action-primary-bg, #429797);
|
|
88
|
+
/* Inline #0d1825 matches text.on-primary's resolved primitive (neutral-900);
|
|
89
|
+
cold-start without the semantic still paints AA-tuned dark-on-primary
|
|
90
|
+
rather than white-on-primary (3.43:1 fail). */
|
|
91
|
+
--hx-button-color: var(--hx-color-text-on-primary, #0d1825);
|
|
92
92
|
--hx-button-border-color: transparent;
|
|
93
93
|
}
|
|
94
94
|
|
|
95
95
|
.button--secondary {
|
|
96
96
|
--hx-button-bg: transparent;
|
|
97
|
-
/* primary-500 (#429797) text on white surface = 3.
|
|
98
|
-
primary-600 (#0F7078) on white =
|
|
99
|
-
--hx-button-color: var(--hx-color-
|
|
100
|
-
--hx-button-border-color: var(--hx-color-
|
|
97
|
+
/* primary-500 (#429797) text on white surface = 3.44:1 — fails AA.
|
|
98
|
+
primary-600 (#0F7078) on white = 5.82:1 — AA pass. */
|
|
99
|
+
--hx-button-color: var(--hx-color-action-secondary-fg, #0f7078);
|
|
100
|
+
--hx-button-border-color: var(--hx-color-action-secondary-border, #0f7078);
|
|
101
101
|
}
|
|
102
102
|
|
|
103
103
|
.button--secondary:hover {
|
|
104
|
-
--hx-button-bg: var(--hx-button-hover-bg, var(--hx-color-
|
|
104
|
+
--hx-button-bg: var(--hx-button-hover-bg, var(--hx-color-action-secondary-bg-hover, #ebf8f8));
|
|
105
105
|
}
|
|
106
106
|
|
|
107
107
|
.button--tertiary {
|
|
@@ -115,36 +115,52 @@
|
|
|
115
115
|
}
|
|
116
116
|
|
|
117
117
|
.button--danger {
|
|
118
|
-
--hx-button-bg: var(--hx-color-
|
|
119
|
-
|
|
118
|
+
--hx-button-bg: var(--hx-color-action-danger-bg, #e5493e);
|
|
119
|
+
/* Inline #0d1825 matches text.on-error's resolved primitive (neutral-900);
|
|
120
|
+
cold-start without the semantic still paints AA-tuned dark-on-error
|
|
121
|
+
rather than white-on-error (3.92:1 fail). */
|
|
122
|
+
--hx-button-color: var(--hx-color-text-on-error, #0d1825);
|
|
120
123
|
--hx-button-border-color: transparent;
|
|
121
124
|
}
|
|
122
125
|
|
|
123
126
|
/* on-error tokens are tuned for error-500 (neutral-900 on #E5493E ≈ 4.59:1).
|
|
124
|
-
error-600 (#C92A2A) drops that to
|
|
125
|
-
|
|
126
|
-
(commit 300e21ab0)
|
|
127
|
+
error-600 (#C92A2A) drops that to 3.28:1 — AA fail. text.on-error-strong
|
|
128
|
+
resolves to neutral-0 across modes (no dark flip) so the darker hover fill
|
|
129
|
+
stays legible. Mirrors hx-toast precedent (commit 300e21ab0); routed
|
|
130
|
+
through the semantic tier in 3.2.1 token-cascade remediation. */
|
|
127
131
|
.button--danger:hover {
|
|
128
|
-
--hx-button-bg: var(--hx-button-hover-bg, var(--hx-color-
|
|
129
|
-
--hx-button-color: var(--hx-color-
|
|
132
|
+
--hx-button-bg: var(--hx-button-hover-bg, var(--hx-color-action-danger-bg-hover, #c92a2a));
|
|
133
|
+
--hx-button-color: var(--hx-color-text-on-error-strong, #ffffff);
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
/* Pressed state binds explicitly to action.danger.bg-active (error-700,
|
|
137
|
+
#A21312) + text.on-error-strong (neutral-0) = 7.96:1 AA. Base
|
|
138
|
+
.button:active filter:brightness(0.8) would compound on top of bg-hover
|
|
139
|
+
(#C92A2A) and produce ~3.3:1 sub-AA on the bound colors. Override the
|
|
140
|
+
filter to none. HC override on action.danger.bg-active flips to HC
|
|
141
|
+
error-500 so the on-error-strong (HC = #000) pair is AA in HC too. */
|
|
142
|
+
.button--danger:active {
|
|
143
|
+
--hx-button-bg: var(--hx-button-active-bg, var(--hx-color-action-danger-bg-active, #a21312));
|
|
144
|
+
--hx-button-color: var(--hx-color-text-on-error-strong, #ffffff);
|
|
145
|
+
filter: none;
|
|
130
146
|
}
|
|
131
147
|
|
|
132
148
|
.button--ghost {
|
|
133
149
|
--hx-button-bg: transparent;
|
|
134
|
-
/* primary-500 (#429797) text on white surface = 3.
|
|
135
|
-
primary-600 (#0F7078) on white =
|
|
136
|
-
--hx-button-color: var(--hx-color-
|
|
150
|
+
/* primary-500 (#429797) text on white surface = 3.44:1 — fails AA.
|
|
151
|
+
primary-600 (#0F7078) on white = 5.82:1 — AA pass. */
|
|
152
|
+
--hx-button-color: var(--hx-color-action-ghost-fg, #0f7078);
|
|
137
153
|
--hx-button-border-color: transparent;
|
|
138
154
|
}
|
|
139
155
|
|
|
140
156
|
.button--ghost:hover {
|
|
141
|
-
--hx-button-bg: var(--hx-button-hover-bg, var(--hx-color-
|
|
157
|
+
--hx-button-bg: var(--hx-button-hover-bg, var(--hx-color-action-ghost-bg-hover, #ebf8f8));
|
|
142
158
|
}
|
|
143
159
|
|
|
144
160
|
.button--outline {
|
|
145
161
|
--hx-button-bg: transparent;
|
|
146
162
|
--hx-button-color: var(--hx-color-text-primary, #0d1825);
|
|
147
|
-
--hx-button-border-color: var(--hx-color-border-strong, #
|
|
163
|
+
--hx-button-border-color: var(--hx-color-border-strong, #66787b);
|
|
148
164
|
}
|
|
149
165
|
|
|
150
166
|
.button--outline:hover {
|
|
@@ -152,12 +168,24 @@
|
|
|
152
168
|
}
|
|
153
169
|
|
|
154
170
|
/* on-primary token resolves to neutral-900 (#0D1825) — tuned for primary-500.
|
|
155
|
-
primary-600 (#0F7078) drops the pair to 3.07:1 — AA fail.
|
|
156
|
-
neutral-0 for the darker hover fill.
|
|
157
|
-
(commit 300e21ab0)
|
|
171
|
+
primary-600 (#0F7078) drops the pair to 3.07:1 — AA fail. text.on-primary-strong
|
|
172
|
+
resolves to neutral-0 across modes (no dark flip) for the darker hover fill.
|
|
173
|
+
Mirrors hx-toast precedent (commit 300e21ab0); routed through the semantic
|
|
174
|
+
tier in 3.2.1 token-cascade remediation. */
|
|
158
175
|
.button--primary:hover {
|
|
159
|
-
--hx-button-bg: var(--hx-button-hover-bg, var(--hx-color-primary-
|
|
160
|
-
--hx-button-color: var(--hx-color-
|
|
176
|
+
--hx-button-bg: var(--hx-button-hover-bg, var(--hx-color-action-primary-bg-hover, #0f7078));
|
|
177
|
+
--hx-button-color: var(--hx-color-text-on-primary-strong, #ffffff);
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
/* Pressed state binds explicitly to action.primary.bg-active (primary-700,
|
|
181
|
+
#0F6363) + text.on-primary-strong (neutral-0) = 7.03:1 AA. The base
|
|
182
|
+
.button:active filter:brightness(0.8) would compound on top of bg-hover
|
|
183
|
+
(#0F7078) and produce ~3.7:1 sub-AA on the bound colors. Override the
|
|
184
|
+
filter to none so the action.*.bg-active token is what actually paints. */
|
|
185
|
+
.button--primary:active {
|
|
186
|
+
--hx-button-bg: var(--hx-button-active-bg, var(--hx-color-action-primary-bg-active, #0f6363));
|
|
187
|
+
--hx-button-color: var(--hx-color-text-on-primary-strong, #ffffff);
|
|
188
|
+
filter: none;
|
|
161
189
|
}
|
|
162
190
|
|
|
163
191
|
/* ─── Disabled ─── */
|
|
@@ -201,9 +229,19 @@
|
|
|
201
229
|
|
|
202
230
|
/* ─── Inverted Mode ─── */
|
|
203
231
|
|
|
232
|
+
/* Inline-fallback contract for --hx-color-border-on-dark-* in this section:
|
|
233
|
+
the literal rgba(255, 255, 255, 0.X) arms are a LIGHT-MODE-only last
|
|
234
|
+
resort (cold-start, CSS-not-loaded). At runtime, hx-theme injects
|
|
235
|
+
dark.color.border.on-dark-* as overlay-black-* so dark-mode inverted
|
|
236
|
+
buttons stay visible on the now-light surface.inverse (#EBEEE9). The
|
|
237
|
+
inline white overlays would render invisible (≈1.1:1) on a light surface,
|
|
238
|
+
but they never paint when the theme is mounted. If a future change moves
|
|
239
|
+
these into a context where hx-theme is not guaranteed, replace with
|
|
240
|
+
mode-aware tokens. */
|
|
241
|
+
|
|
204
242
|
/* Override text color and filter-based hover/active for all variants */
|
|
205
243
|
:host([inverted]) .button {
|
|
206
|
-
color: var(--hx-button-inverted-color, var(--hx-color-
|
|
244
|
+
color: var(--hx-button-inverted-color, var(--hx-color-text-inverse, #ffffff));
|
|
207
245
|
filter: none;
|
|
208
246
|
}
|
|
209
247
|
|
|
@@ -216,37 +254,89 @@
|
|
|
216
254
|
}
|
|
217
255
|
|
|
218
256
|
:host([inverted]) .button:focus-visible {
|
|
257
|
+
/* WCAG 1.4.11: focus indicator needs ≥3:1 against adjacent colors.
|
|
258
|
+
border-on-dark-default (overlay-white-30) ≈ 2.7:1 on neutral-900 — fails.
|
|
259
|
+
border-on-dark-strong (overlay-white-70) ≈ 5:1 — passes. */
|
|
219
260
|
outline-color: var(
|
|
220
261
|
--hx-button-inverted-focus-ring-color,
|
|
221
|
-
var(--hx-
|
|
262
|
+
var(--hx-color-border-on-dark-strong, rgba(255, 255, 255, 0.7))
|
|
222
263
|
);
|
|
223
264
|
}
|
|
224
265
|
|
|
225
|
-
/* Primary inverted —
|
|
226
|
-
|
|
227
|
-
|
|
266
|
+
/* Primary inverted — resting bg routes through action.primary.bg-inverted-rest
|
|
267
|
+
so dark mode can flip the fill to primary-600. surface.inverse becomes light
|
|
268
|
+
(#EBEEE9) in dark mode; primary-500 on #EBEEE9 = 2.94:1 (sub-3:1 UI floor
|
|
269
|
+
fail for the inverted-button boundary). primary-600 on #EBEEE9 = 4.97:1
|
|
270
|
+
(AA pass). Light mode tracks action.primary.bg (primary-500, 5.20:1 on
|
|
271
|
+
dark surface.inverse). */
|
|
272
|
+
:host([inverted]) .button--primary {
|
|
273
|
+
--hx-button-bg: var(--hx-color-action-primary-bg-inverted-rest, #429797);
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
/* Primary inverted — hover/pressed lift to action.primary.bg-inverted-hover
|
|
277
|
+
(primary-400, light teal). The base :host([inverted]) .button rule binds
|
|
278
|
+
color to text.inverse, which flips by mode (neutral-0 in light, neutral-900
|
|
279
|
+
in dark). On a permanent light-teal fill, white text drops to 2.4:1 in
|
|
280
|
+
light mode (AA fail). Pin color to text.on-primary (neutral-900, no
|
|
281
|
+
dark-mode flip) for both hover and active so the foreground is dark in
|
|
282
|
+
both modes — neutral-900 on primary-400 = 7.27:1 (AA pass).
|
|
283
|
+
Pressed === hover visually in inverted mode is acceptable UX (the
|
|
284
|
+
transient absence of pointer over the button signals release).
|
|
285
|
+
The fallback chain wraps --hx-button-active-bg (highest precedence) and
|
|
286
|
+
--hx-button-hover-bg so consumer overrides on either prop apply under
|
|
287
|
+
:host([inverted]) — the two share a paint here, so either knob is
|
|
288
|
+
honored, with active-bg winning when both are set. */
|
|
289
|
+
:host([inverted]) .button--primary:hover,
|
|
290
|
+
:host([inverted]) .button--primary:active {
|
|
291
|
+
--hx-button-bg: var(
|
|
292
|
+
--hx-button-active-bg,
|
|
293
|
+
var(--hx-button-hover-bg, var(--hx-color-action-primary-bg-inverted-hover, #6ab1b1))
|
|
294
|
+
);
|
|
295
|
+
color: var(
|
|
296
|
+
--hx-button-inverted-primary-interactive-color,
|
|
297
|
+
var(--hx-color-text-on-primary, #0d1825)
|
|
298
|
+
);
|
|
228
299
|
}
|
|
229
300
|
|
|
230
|
-
/*
|
|
301
|
+
/* Danger inverted — sister to primary. Hover/pressed lift to
|
|
302
|
+
action.danger.bg-inverted-hover (error-400, #FC7264). Same foreground
|
|
303
|
+
contract: text.inverse fails in light mode (white on light red ≈ 2.6:1);
|
|
304
|
+
pin to text.on-error (neutral-900, no dark-mode flip) for 6.58:1 in both
|
|
305
|
+
modes. Same active-bg → hover-bg → semantic fallback chain as primary. */
|
|
306
|
+
:host([inverted]) .button--danger:hover,
|
|
307
|
+
:host([inverted]) .button--danger:active {
|
|
308
|
+
--hx-button-bg: var(
|
|
309
|
+
--hx-button-active-bg,
|
|
310
|
+
var(--hx-button-hover-bg, var(--hx-color-action-danger-bg-inverted-hover, #fc7264))
|
|
311
|
+
);
|
|
312
|
+
color: var(
|
|
313
|
+
--hx-button-inverted-danger-interactive-color,
|
|
314
|
+
var(--hx-color-text-on-error, #0d1825)
|
|
315
|
+
);
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
/* Secondary inverted — white border and translucent hover fill */
|
|
231
319
|
:host([inverted]) .button--secondary {
|
|
232
|
-
--hx-button-border-color: var(--hx-
|
|
320
|
+
--hx-button-border-color: var(--hx-color-border-on-dark-strong, rgba(255, 255, 255, 0.7));
|
|
233
321
|
}
|
|
234
322
|
|
|
235
323
|
:host([inverted]) .button--secondary:hover {
|
|
236
|
-
--hx-button-bg: var(--hx-
|
|
324
|
+
--hx-button-bg: var(--hx-color-border-on-dark-default, rgba(255, 255, 255, 0.3));
|
|
237
325
|
}
|
|
238
326
|
|
|
239
|
-
/* Tertiary inverted
|
|
327
|
+
/* Tertiary inverted — resting at subtle (10%) lifts to default (30%) on hover
|
|
328
|
+
so the runtime hover delta is visually distinct, not collapsed onto a
|
|
329
|
+
single token. */
|
|
240
330
|
:host([inverted]) .button--tertiary {
|
|
241
|
-
--hx-button-bg: var(--hx-
|
|
331
|
+
--hx-button-bg: var(--hx-color-border-on-dark-subtle, rgba(255, 255, 255, 0.1));
|
|
242
332
|
--hx-button-border-color: transparent;
|
|
243
333
|
}
|
|
244
334
|
|
|
245
335
|
:host([inverted]) .button--tertiary:hover {
|
|
246
|
-
--hx-button-bg: var(--hx-
|
|
336
|
+
--hx-button-bg: var(--hx-color-border-on-dark-default, rgba(255, 255, 255, 0.3));
|
|
247
337
|
}
|
|
248
338
|
|
|
249
|
-
/* Ghost inverted — transparent base,
|
|
339
|
+
/* Ghost inverted — transparent base, translucent hover bg */
|
|
250
340
|
:host([inverted]) .button--ghost {
|
|
251
341
|
--hx-button-bg: transparent;
|
|
252
342
|
--hx-button-border-color: transparent;
|
|
@@ -255,17 +345,17 @@
|
|
|
255
345
|
:host([inverted]) .button--ghost:hover {
|
|
256
346
|
--hx-button-bg: var(
|
|
257
347
|
--hx-button-inverted-ghost-hover-bg,
|
|
258
|
-
var(--hx-
|
|
348
|
+
var(--hx-color-border-on-dark-default, rgba(255, 255, 255, 0.3))
|
|
259
349
|
);
|
|
260
350
|
}
|
|
261
351
|
|
|
262
352
|
/* Outline inverted — white border */
|
|
263
353
|
:host([inverted]) .button--outline {
|
|
264
|
-
--hx-button-border-color: var(--hx-
|
|
354
|
+
--hx-button-border-color: var(--hx-color-border-on-dark-strong, rgba(255, 255, 255, 0.7));
|
|
265
355
|
}
|
|
266
356
|
|
|
267
357
|
:host([inverted]) .button--outline:hover {
|
|
268
|
-
--hx-button-bg: var(--hx-
|
|
358
|
+
--hx-button-bg: var(--hx-color-border-on-dark-default, rgba(255, 255, 255, 0.3));
|
|
269
359
|
}
|
|
270
360
|
|
|
271
361
|
/* ─── Prefix / Suffix / Label ─── */
|
|
@@ -293,6 +383,16 @@
|
|
|
293
383
|
border: 2px solid ButtonText;
|
|
294
384
|
}
|
|
295
385
|
|
|
386
|
+
.button:hover {
|
|
387
|
+
/* Hover affordance must survive in HC. Highlight/HighlightText is the
|
|
388
|
+
OS-level "selected" pair, mirroring the forcedColorsInteractive mixin's
|
|
389
|
+
hover contract — kept inline since this component owns its bespoke HC
|
|
390
|
+
block (XOR rule). */
|
|
391
|
+
background-color: Highlight;
|
|
392
|
+
color: HighlightText;
|
|
393
|
+
border-color: Highlight;
|
|
394
|
+
}
|
|
395
|
+
|
|
296
396
|
.button:focus-visible {
|
|
297
397
|
outline: 3px solid Highlight;
|
|
298
398
|
outline-offset: 2px;
|
package/dist/css/hx-card.css
CHANGED
|
@@ -84,10 +84,7 @@
|
|
|
84
84
|
|
|
85
85
|
.card--interactive:focus-visible {
|
|
86
86
|
outline: var(--hx-focus-ring-width, 2px) solid
|
|
87
|
-
var(
|
|
88
|
-
--hx-card-focus-ring-color,
|
|
89
|
-
var(--hx-focus-ring-color, var(--hx-color-primary-500, #429797))
|
|
90
|
-
);
|
|
87
|
+
var(--hx-card-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
|
|
91
88
|
outline-offset: var(--hx-focus-ring-offset, 2px);
|
|
92
89
|
}
|
|
93
90
|
|
package/dist/css/hx-carousel.css
CHANGED
|
@@ -62,7 +62,7 @@
|
|
|
62
62
|
|
|
63
63
|
.nav-btn:focus-visible {
|
|
64
64
|
outline: var(--hx-focus-ring-width, 2px) solid
|
|
65
|
-
var(--hx-carousel-focus-ring-color, var(--hx-focus-ring-color,
|
|
65
|
+
var(--hx-carousel-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
|
|
66
66
|
outline-offset: var(--hx-focus-ring-offset, 2px);
|
|
67
67
|
}
|
|
68
68
|
|
|
@@ -104,7 +104,7 @@
|
|
|
104
104
|
|
|
105
105
|
.play-pause-btn:focus-visible {
|
|
106
106
|
outline: var(--hx-focus-ring-width, 2px) solid
|
|
107
|
-
var(--hx-carousel-focus-ring-color, var(--hx-focus-ring-color,
|
|
107
|
+
var(--hx-carousel-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
|
|
108
108
|
outline-offset: var(--hx-focus-ring-offset, 2px);
|
|
109
109
|
}
|
|
110
110
|
|
|
@@ -176,7 +176,7 @@
|
|
|
176
176
|
|
|
177
177
|
.pagination-item:focus-visible {
|
|
178
178
|
outline: var(--hx-focus-ring-width, 2px) solid
|
|
179
|
-
var(--hx-carousel-focus-ring-color, var(--hx-focus-ring-color,
|
|
179
|
+
var(--hx-carousel-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
|
|
180
180
|
outline-offset: var(--hx-focus-ring-offset, 2px);
|
|
181
181
|
border-radius: var(--hx-border-radius-full, 9999px);
|
|
182
182
|
}
|
package/dist/css/hx-checkbox.css
CHANGED
|
@@ -58,7 +58,7 @@
|
|
|
58
58
|
width: var(--hx-checkbox-size, var(--hx-size-5, 1.25rem));
|
|
59
59
|
height: var(--hx-checkbox-size, var(--hx-size-5, 1.25rem));
|
|
60
60
|
border: var(--hx-border-width-medium, 2px) solid
|
|
61
|
-
var(--hx-checkbox-border-color, var(--hx-color-border-strong, #
|
|
61
|
+
var(--hx-checkbox-border-color, var(--hx-color-border-strong, #66787b));
|
|
62
62
|
border-radius: var(--hx-checkbox-border-radius, var(--hx-border-radius-sm, 0.25rem));
|
|
63
63
|
background-color: var(--hx-checkbox-bg, var(--hx-color-surface-default, #ffffff));
|
|
64
64
|
transition:
|
|
@@ -74,7 +74,7 @@
|
|
|
74
74
|
outline: var(--hx-checkbox-focus-ring-width, var(--hx-focus-ring-width, 2px)) solid
|
|
75
75
|
var(
|
|
76
76
|
--hx-checkbox-focus-ring-color,
|
|
77
|
-
var(--hx-focus-ring-color, var(--hx-color-primary-
|
|
77
|
+
var(--hx-focus-ring-color, var(--hx-color-primary-600, #0f7078))
|
|
78
78
|
);
|
|
79
79
|
outline-offset: var(--hx-checkbox-focus-ring-offset, var(--hx-focus-ring-offset, 2px));
|
|
80
80
|
}
|
|
@@ -184,8 +184,7 @@
|
|
|
184
184
|
}
|
|
185
185
|
|
|
186
186
|
.clinical-status__dismiss-button:focus-visible {
|
|
187
|
-
outline: var(--hx-focus-ring-width, 2px) solid
|
|
188
|
-
var(--hx-focus-ring-color, var(--hx-color-focus, #429797));
|
|
187
|
+
outline: var(--hx-focus-ring-width, 2px) solid var(--hx-focus-ring-color, #0f7078);
|
|
189
188
|
outline-offset: var(--hx-focus-ring-offset, 2px);
|
|
190
189
|
opacity: 1;
|
|
191
190
|
}
|
|
@@ -230,8 +229,7 @@
|
|
|
230
229
|
}
|
|
231
230
|
|
|
232
231
|
.clinical-status__acknowledge-button:focus-visible {
|
|
233
|
-
outline: var(--hx-focus-ring-width, 2px) solid
|
|
234
|
-
var(--hx-focus-ring-color, var(--hx-color-focus, #429797));
|
|
232
|
+
outline: var(--hx-focus-ring-width, 2px) solid var(--hx-focus-ring-color, #0f7078);
|
|
235
233
|
outline-offset: var(--hx-focus-ring-offset, 2px);
|
|
236
234
|
}
|
|
237
235
|
|
|
@@ -78,7 +78,8 @@
|
|
|
78
78
|
min-width: var(--hx-touch-target-min, 2.75rem);
|
|
79
79
|
min-height: var(--hx-touch-target-min, 2.75rem);
|
|
80
80
|
padding: var(--hx-space-1, 0.25rem) var(--hx-space-2, 0.5rem);
|
|
81
|
-
border: var(--hx-border-width-thin, 1px) solid
|
|
81
|
+
border: var(--hx-border-width-thin, 1px) solid
|
|
82
|
+
var(--hx-color-border-on-dark-strong, rgba(255, 255, 255, 0.7));
|
|
82
83
|
border-radius: var(--hx-border-radius-sm, 0.25rem);
|
|
83
84
|
/* Copy button sits on the always-dark block snippet surface; uses inverse family for contrast on the terminal background. */
|
|
84
85
|
background-color: var(--hx-color-surface-inverse, #0d1825);
|
|
@@ -104,7 +105,7 @@
|
|
|
104
105
|
|
|
105
106
|
.code-snippet__copy-button:focus-visible {
|
|
106
107
|
outline: var(--hx-focus-ring-width, 2px) solid
|
|
107
|
-
var(--hx-focus-ring-color, var(--hx-color-primary-
|
|
108
|
+
var(--hx-focus-ring-color, var(--hx-color-primary-600, #0f7078));
|
|
108
109
|
outline-offset: var(--hx-focus-ring-offset, 2px);
|
|
109
110
|
}
|
|
110
111
|
|
|
@@ -123,7 +124,8 @@
|
|
|
123
124
|
min-height: var(--hx-touch-target-min, 2.75rem);
|
|
124
125
|
padding: var(--hx-space-2, 0.5rem) var(--hx-space-4, 1rem);
|
|
125
126
|
border: none;
|
|
126
|
-
border-top: var(--hx-border-width-thin, 1px) solid
|
|
127
|
+
border-top: var(--hx-border-width-thin, 1px) solid
|
|
128
|
+
var(--hx-color-border-on-dark-strong, rgba(255, 255, 255, 0.7));
|
|
127
129
|
/* Expand button is attached to the always-dark block snippet — inverse family maintains the terminal aesthetic. */
|
|
128
130
|
background-color: var(--hx-color-surface-inverse, #0d1825);
|
|
129
131
|
color: var(--hx-color-text-inverse, #ffffff);
|
|
@@ -145,7 +147,7 @@
|
|
|
145
147
|
|
|
146
148
|
.code-snippet__expand-button:focus-visible {
|
|
147
149
|
outline: var(--hx-focus-ring-width, 2px) solid
|
|
148
|
-
var(--hx-focus-ring-color, var(--hx-color-primary-
|
|
150
|
+
var(--hx-focus-ring-color, var(--hx-color-primary-600, #0f7078));
|
|
149
151
|
outline-offset: var(--hx-focus-ring-offset, 2px);
|
|
150
152
|
}
|
|
151
153
|
|