@helixui/library 1.1.2-next.1 → 1.1.2-next.10
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 +252 -168
- package/dist/components/hx-action-bar/hx-action-bar.d.ts.map +1 -1
- package/dist/components/hx-action-bar/index.js +1 -1
- package/dist/components/hx-avatar/hx-avatar.styles.d.ts.map +1 -1
- package/dist/components/hx-avatar/index.js +1 -1
- package/dist/components/hx-badge/hx-badge.styles.d.ts.map +1 -1
- package/dist/components/hx-badge/index.js +1 -1
- package/dist/components/hx-breadcrumb/hx-breadcrumb-item.d.ts +1 -0
- package/dist/components/hx-breadcrumb/hx-breadcrumb-item.d.ts.map +1 -1
- package/dist/components/hx-breadcrumb/hx-breadcrumb.d.ts +35 -9
- package/dist/components/hx-breadcrumb/hx-breadcrumb.d.ts.map +1 -1
- package/dist/components/hx-breadcrumb/index.js +1 -1
- package/dist/components/hx-button/hx-button.d.ts +12 -6
- 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-clinical-status/hx-clinical-status.d.ts +14 -6
- package/dist/components/hx-clinical-status/hx-clinical-status.d.ts.map +1 -1
- package/dist/components/hx-clinical-status/hx-clinical-status.styles.d.ts.map +1 -1
- package/dist/components/hx-clinical-status/index.d.ts +1 -1
- package/dist/components/hx-clinical-status/index.d.ts.map +1 -1
- package/dist/components/hx-clinical-status/index.js +1 -1
- package/dist/components/hx-combobox/hx-combobox.d.ts +5 -0
- package/dist/components/hx-combobox/hx-combobox.d.ts.map +1 -1
- package/dist/components/hx-drawer/hx-drawer.d.ts +1 -0
- package/dist/components/hx-drawer/hx-drawer.d.ts.map +1 -1
- package/dist/components/hx-menu/hx-menu-item.d.ts +5 -0
- package/dist/components/hx-menu/hx-menu-item.d.ts.map +1 -1
- package/dist/components/hx-menu/hx-menu.d.ts +1 -0
- package/dist/components/hx-menu/hx-menu.d.ts.map +1 -1
- package/dist/components/hx-menu/hx-menu.styles.d.ts.map +1 -1
- package/dist/components/hx-menu/index.js +1 -1
- package/dist/components/hx-nav/hx-nav.d.ts +10 -0
- package/dist/components/hx-nav/hx-nav.d.ts.map +1 -1
- package/dist/components/hx-nav/index.js +1 -1
- package/dist/components/hx-pagination/hx-pagination.d.ts.map +1 -1
- package/dist/components/hx-pagination/index.js +1 -1
- package/dist/components/hx-patient-banner/hx-patient-banner.d.ts +8 -0
- package/dist/components/hx-patient-banner/hx-patient-banner.d.ts.map +1 -1
- package/dist/components/hx-patient-banner/hx-patient-banner.styles.d.ts.map +1 -1
- package/dist/components/hx-patient-banner/index.js +1 -1
- package/dist/components/hx-phi-field/hx-phi-field.d.ts +27 -2
- package/dist/components/hx-phi-field/hx-phi-field.d.ts.map +1 -1
- package/dist/components/hx-phi-field/hx-phi-field.styles.d.ts.map +1 -1
- package/dist/components/hx-phi-field/index.js +1 -1
- package/dist/components/hx-select/hx-select.d.ts +1 -0
- package/dist/components/hx-select/hx-select.d.ts.map +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 +5 -0
- 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.map +1 -1
- package/dist/components/hx-side-nav/hx-side-nav.styles.d.ts.map +1 -1
- package/dist/components/hx-side-nav/index.js +1 -1
- package/dist/components/hx-slider/hx-slider.d.ts +1 -0
- package/dist/components/hx-slider/hx-slider.d.ts.map +1 -1
- package/dist/components/hx-status-indicator/hx-status-indicator.d.ts +17 -1
- package/dist/components/hx-status-indicator/hx-status-indicator.d.ts.map +1 -1
- package/dist/components/hx-status-indicator/hx-status-indicator.styles.d.ts.map +1 -1
- package/dist/components/hx-status-indicator/index.js +1 -1
- package/dist/components/hx-steps/hx-step.d.ts +7 -0
- package/dist/components/hx-steps/hx-step.d.ts.map +1 -1
- package/dist/components/hx-steps/hx-steps.d.ts.map +1 -1
- package/dist/components/hx-steps/index.js +1 -1
- package/dist/components/hx-tabs/hx-tab.styles.d.ts.map +1 -1
- package/dist/components/hx-tabs/hx-tabs.d.ts +10 -0
- package/dist/components/hx-tabs/hx-tabs.d.ts.map +1 -1
- package/dist/components/hx-tabs/index.js +1 -1
- package/dist/components/hx-time-picker/hx-time-picker.d.ts +3 -0
- package/dist/components/hx-time-picker/hx-time-picker.d.ts.map +1 -1
- package/dist/components/hx-tree-view/hx-tree-item.d.ts +5 -0
- package/dist/components/hx-tree-view/hx-tree-item.d.ts.map +1 -1
- package/dist/components/hx-tree-view/hx-tree-view.d.ts +6 -0
- package/dist/components/hx-tree-view/hx-tree-view.d.ts.map +1 -1
- package/dist/components/hx-tree-view/index.js +1 -1
- package/dist/css/helix-all.css +222 -60
- package/dist/css/helix-core.css +58 -3
- package/dist/css/helix-feedback.css +33 -4
- package/dist/css/helix-forms.css +68 -41
- package/dist/css/helix-navigation.css +16 -7
- package/dist/css/hx-avatar.css +18 -1
- package/dist/css/hx-badge.css +6 -2
- package/dist/css/hx-button.css +34 -0
- package/dist/css/hx-clinical-status.css +4 -2
- package/dist/css/hx-menu.css +2 -0
- package/dist/css/hx-patient-banner.css +31 -3
- package/dist/css/hx-phi-field.css +12 -0
- package/dist/css/hx-select.css +68 -41
- package/dist/css/hx-side-nav.css +14 -7
- package/dist/css/hx-status-indicator.css +33 -4
- package/dist/css/index.css +1 -1
- package/dist/css/manifest.json +13 -5
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +17 -17
- package/dist/shared/{hx-action-bar-D4bulGQP.js → hx-action-bar-vGFnNwNY.js} +33 -34
- package/dist/shared/{hx-action-bar-D4bulGQP.js.map → hx-action-bar-vGFnNwNY.js.map} +1 -1
- package/dist/shared/{hx-avatar-7p1cj3lG.js → hx-avatar-CZfA9KEl.js} +27 -10
- package/dist/shared/hx-avatar-CZfA9KEl.js.map +1 -0
- package/dist/shared/{hx-badge-DCxvskdw.js → hx-badge-Xg7zoh4Q.js} +31 -27
- package/dist/shared/hx-badge-Xg7zoh4Q.js.map +1 -0
- package/dist/shared/{hx-breadcrumb-item-B2rjepqy.js → hx-breadcrumb-item-CObc-WJl.js} +8 -6
- package/dist/shared/hx-breadcrumb-item-CObc-WJl.js.map +1 -0
- package/dist/shared/{hx-button-6S3DwuIj.js → hx-button-CC1YH9RZ.js} +52 -12
- package/dist/shared/hx-button-CC1YH9RZ.js.map +1 -0
- package/dist/shared/{hx-clinical-status-De8yrA5I.js → hx-clinical-status-D6eaplvs.js} +5 -3
- package/dist/shared/hx-clinical-status-D6eaplvs.js.map +1 -0
- package/dist/shared/hx-combobox-CNAJXIxo.js.map +1 -1
- package/dist/shared/hx-drawer-e0qeGxAD.js.map +1 -1
- package/dist/shared/{hx-menu-divider-DR4G_rqw.js → hx-menu-divider-puPmRAdN.js} +40 -20
- package/dist/shared/hx-menu-divider-puPmRAdN.js.map +1 -0
- package/dist/shared/{hx-nav-D377Ngz4.js → hx-nav-CiyqaW2I.js} +112 -99
- package/dist/shared/hx-nav-CiyqaW2I.js.map +1 -0
- package/dist/shared/{hx-nav-item-ByU2N921.js → hx-nav-item-tM_6bolB.js} +161 -107
- package/dist/shared/hx-nav-item-tM_6bolB.js.map +1 -0
- package/dist/shared/{hx-pagination-DYhYPqDn.js → hx-pagination-Cb9UEWXz.js} +74 -66
- package/dist/shared/{hx-pagination-DYhYPqDn.js.map → hx-pagination-Cb9UEWXz.js.map} +1 -1
- package/dist/shared/{hx-patient-banner-BoJHddAL.js → hx-patient-banner-wk4qWmsH.js} +88 -47
- package/dist/shared/hx-patient-banner-wk4qWmsH.js.map +1 -0
- package/dist/shared/{hx-phi-field-EDWna59z.js → hx-phi-field-DX9z3nu0.js} +67 -33
- package/dist/shared/hx-phi-field-DX9z3nu0.js.map +1 -0
- package/dist/shared/{hx-select-4-nHL0vd.js → hx-select-BWzxWZs_.js} +82 -55
- package/dist/shared/hx-select-BWzxWZs_.js.map +1 -0
- package/dist/shared/hx-slider-7Q-e0_pc.js.map +1 -1
- package/dist/shared/{hx-status-indicator-4ClvA5mU.js → hx-status-indicator-Dl3Y34mc.js} +76 -35
- package/dist/shared/hx-status-indicator-Dl3Y34mc.js.map +1 -0
- package/dist/shared/{hx-step-DlANlr2A.js → hx-step-CmNwfcJx.js} +30 -26
- package/dist/shared/hx-step-CmNwfcJx.js.map +1 -0
- package/dist/shared/{hx-tab-panel-GGjk6Qg4.js → hx-tab-panel-Dnt8aA74.js} +89 -61
- package/dist/shared/hx-tab-panel-Dnt8aA74.js.map +1 -0
- package/dist/shared/hx-time-picker-BpCRsh_z.js.map +1 -1
- package/dist/shared/{hx-tree-item-DTDIBRrI.js → hx-tree-item-C1PhX-HE.js} +50 -19
- package/dist/shared/hx-tree-item-C1PhX-HE.js.map +1 -0
- package/package.json +3 -3
- package/dist/shared/hx-avatar-7p1cj3lG.js.map +0 -1
- package/dist/shared/hx-badge-DCxvskdw.js.map +0 -1
- package/dist/shared/hx-breadcrumb-item-B2rjepqy.js.map +0 -1
- package/dist/shared/hx-button-6S3DwuIj.js.map +0 -1
- package/dist/shared/hx-clinical-status-De8yrA5I.js.map +0 -1
- package/dist/shared/hx-menu-divider-DR4G_rqw.js.map +0 -1
- package/dist/shared/hx-nav-D377Ngz4.js.map +0 -1
- package/dist/shared/hx-nav-item-ByU2N921.js.map +0 -1
- package/dist/shared/hx-patient-banner-BoJHddAL.js.map +0 -1
- package/dist/shared/hx-phi-field-EDWna59z.js.map +0 -1
- package/dist/shared/hx-select-4-nHL0vd.js.map +0 -1
- package/dist/shared/hx-status-indicator-4ClvA5mU.js.map +0 -1
- package/dist/shared/hx-step-DlANlr2A.js.map +0 -1
- package/dist/shared/hx-tab-panel-GGjk6Qg4.js.map +0 -1
- package/dist/shared/hx-tree-item-DTDIBRrI.js.map +0 -1
|
@@ -915,9 +915,12 @@
|
|
|
915
915
|
display: inline-flex;
|
|
916
916
|
align-items: center;
|
|
917
917
|
justify-content: center;
|
|
918
|
+
gap: var(--hx-space-2, 0.5rem);
|
|
918
919
|
position: relative;
|
|
919
920
|
flex-shrink: 0;
|
|
920
921
|
--_dot-color: var(--hx-status-indicator-color-default, var(--hx-color-neutral-300, #ced4da));
|
|
922
|
+
/* Default size (md) — always defined so .indicator never collapses to 0x0 */
|
|
923
|
+
--_indicator-size: var(--hx-status-indicator-size-md, var(--hx-space-3, 0.75rem));
|
|
921
924
|
}
|
|
922
925
|
|
|
923
926
|
.indicator {
|
|
@@ -972,18 +975,44 @@
|
|
|
972
975
|
}
|
|
973
976
|
}
|
|
974
977
|
|
|
978
|
+
/* ─── Visible label (part="label") ─── */
|
|
979
|
+
|
|
980
|
+
.indicator__label {
|
|
981
|
+
font-size: var(
|
|
982
|
+
--hx-status-indicator-label-font-size,
|
|
983
|
+
var(--hx-font-size-sm, var(--hx-text-sm, 0.875rem))
|
|
984
|
+
);
|
|
985
|
+
color: var(--hx-status-indicator-label-color, var(--hx-color-neutral-700, #374151));
|
|
986
|
+
line-height: 1;
|
|
987
|
+
white-space: nowrap;
|
|
988
|
+
}
|
|
989
|
+
|
|
990
|
+
/* ─── aria-live announcement region (visually hidden) ─── */
|
|
991
|
+
|
|
992
|
+
.indicator__live-region {
|
|
993
|
+
position: absolute;
|
|
994
|
+
width: 1px;
|
|
995
|
+
height: 1px;
|
|
996
|
+
padding: 0;
|
|
997
|
+
margin: -1px;
|
|
998
|
+
overflow: hidden;
|
|
999
|
+
clip: rect(0, 0, 0, 0);
|
|
1000
|
+
white-space: nowrap;
|
|
1001
|
+
border: 0;
|
|
1002
|
+
}
|
|
1003
|
+
|
|
975
1004
|
/* ─── Size Variants ─── */
|
|
976
1005
|
|
|
977
|
-
:host([size='sm']) {
|
|
1006
|
+
:host([hx-size='sm']) {
|
|
978
1007
|
--_indicator-size: var(--hx-status-indicator-size-sm, var(--hx-space-2, 0.5rem));
|
|
979
1008
|
}
|
|
980
1009
|
|
|
981
|
-
:host([size='md']) {
|
|
1010
|
+
:host([hx-size='md']) {
|
|
982
1011
|
--_indicator-size: var(--hx-status-indicator-size-md, var(--hx-space-3, 0.75rem));
|
|
983
1012
|
}
|
|
984
1013
|
|
|
985
|
-
:host([size='lg']) {
|
|
986
|
-
--_indicator-size: var(--hx-status-indicator-size-lg, var(--hx-
|
|
1014
|
+
:host([hx-size='lg']) {
|
|
1015
|
+
--_indicator-size: var(--hx-status-indicator-size-lg, var(--hx-space-4, 1rem));
|
|
987
1016
|
}
|
|
988
1017
|
|
|
989
1018
|
/* ─── Status Colors ─── */
|
package/dist/css/helix-forms.css
CHANGED
|
@@ -1170,8 +1170,45 @@
|
|
|
1170
1170
|
}
|
|
1171
1171
|
}
|
|
1172
1172
|
/* ── hx-select ── */
|
|
1173
|
-
:
|
|
1173
|
+
/* ─── 3-tier token cascade: component → semantic → hardcoded fallback ─── */
|
|
1174
|
+
:host {
|
|
1174
1175
|
display: block;
|
|
1176
|
+
|
|
1177
|
+
/* Background & foreground */
|
|
1178
|
+
--_bg: var(--hx-select-bg, var(--hx-color-neutral-0, #ffffff));
|
|
1179
|
+
--_color: var(--hx-select-color, var(--hx-color-neutral-800, #212529));
|
|
1180
|
+
--_placeholder-color: var(--hx-select-placeholder-color, var(--hx-color-neutral-400, #adb5bd));
|
|
1181
|
+
|
|
1182
|
+
/* Label */
|
|
1183
|
+
--_label-color: var(--hx-select-label-color, var(--hx-color-neutral-700, #343a40));
|
|
1184
|
+
|
|
1185
|
+
/* Border */
|
|
1186
|
+
--_border-color: var(--hx-select-border-color, var(--hx-color-neutral-300, #ced4da));
|
|
1187
|
+
--_border-radius: var(--hx-select-border-radius, var(--hx-border-radius-md, 0.375rem));
|
|
1188
|
+
|
|
1189
|
+
/* Focus ring */
|
|
1190
|
+
--_focus-ring-color: var(
|
|
1191
|
+
--hx-select-focus-ring-color,
|
|
1192
|
+
var(--hx-focus-ring-color, var(--hx-color-primary-400, #60a5fa))
|
|
1193
|
+
);
|
|
1194
|
+
|
|
1195
|
+
/* Error */
|
|
1196
|
+
--_error-color: var(--hx-select-error-color, var(--hx-color-error-500, #dc3545));
|
|
1197
|
+
|
|
1198
|
+
/* Chevron */
|
|
1199
|
+
--_chevron-color: var(--hx-select-chevron-color, var(--hx-color-neutral-500, #6c757d));
|
|
1200
|
+
--_chevron-size: var(--hx-select-chevron-size, 0.5rem);
|
|
1201
|
+
|
|
1202
|
+
/* Listbox */
|
|
1203
|
+
--_listbox-bg: var(--hx-select-listbox-bg, var(--hx-color-neutral-0, #ffffff));
|
|
1204
|
+
--_option-hover-bg: var(--hx-select-option-hover-bg, var(--hx-color-primary-50, #eff6ff));
|
|
1205
|
+
--_option-selected-bg: var(
|
|
1206
|
+
--hx-select-option-selected-bg,
|
|
1207
|
+
var(--hx-color-primary-100, #dbeafe)
|
|
1208
|
+
);
|
|
1209
|
+
|
|
1210
|
+
/* Typography */
|
|
1211
|
+
--_font-family: var(--hx-select-font-family, var(--hx-font-family-sans, sans-serif));
|
|
1175
1212
|
}
|
|
1176
1213
|
|
|
1177
1214
|
:host([disabled]) {
|
|
@@ -1187,7 +1224,7 @@
|
|
|
1187
1224
|
display: flex;
|
|
1188
1225
|
flex-direction: column;
|
|
1189
1226
|
gap: var(--hx-space-1, 0.25rem);
|
|
1190
|
-
font-family: var(--
|
|
1227
|
+
font-family: var(--_font-family);
|
|
1191
1228
|
position: relative;
|
|
1192
1229
|
}
|
|
1193
1230
|
|
|
@@ -1197,7 +1234,7 @@
|
|
|
1197
1234
|
gap: var(--hx-space-1, 0.25rem);
|
|
1198
1235
|
font-size: var(--hx-font-size-sm, 0.875rem);
|
|
1199
1236
|
font-weight: var(--hx-font-weight-medium, 500);
|
|
1200
|
-
color: var(--
|
|
1237
|
+
color: var(--_label-color);
|
|
1201
1238
|
line-height: var(--hx-line-height-normal, 1.5);
|
|
1202
1239
|
}
|
|
1203
1240
|
|
|
@@ -1218,11 +1255,10 @@
|
|
|
1218
1255
|
gap: var(--hx-space-2, 0.5rem);
|
|
1219
1256
|
width: 100%;
|
|
1220
1257
|
min-height: var(--hx-input-height-md, var(--hx-size-10, 2.5rem));
|
|
1221
|
-
border: var(--hx-border-width-thin, 1px) solid
|
|
1222
|
-
|
|
1223
|
-
|
|
1224
|
-
|
|
1225
|
-
color: var(--hx-select-color, var(--hx-color-neutral-800, #212529));
|
|
1258
|
+
border: var(--hx-border-width-thin, 1px) solid var(--_border-color);
|
|
1259
|
+
border-radius: var(--_border-radius);
|
|
1260
|
+
background-color: var(--_bg);
|
|
1261
|
+
color: var(--_color);
|
|
1226
1262
|
font-family: inherit;
|
|
1227
1263
|
font-size: var(--hx-font-size-md, 1rem);
|
|
1228
1264
|
line-height: var(--hx-line-height-normal, 1.5);
|
|
@@ -1237,18 +1273,11 @@
|
|
|
1237
1273
|
|
|
1238
1274
|
.field__trigger:focus,
|
|
1239
1275
|
.field__trigger:focus-visible {
|
|
1240
|
-
border-color: var(
|
|
1241
|
-
--hx-select-focus-ring-color,
|
|
1242
|
-
var(--hx-focus-ring-color, var(--hx-color-primary-400, #60a5fa))
|
|
1243
|
-
);
|
|
1276
|
+
border-color: var(--_focus-ring-color);
|
|
1244
1277
|
box-shadow: 0 0 0 var(--hx-focus-ring-width, 2px)
|
|
1245
1278
|
color-mix(
|
|
1246
1279
|
in srgb,
|
|
1247
|
-
var(
|
|
1248
|
-
--hx-select-focus-ring-color,
|
|
1249
|
-
var(--hx-focus-ring-color, var(--hx-color-primary-400, #60a5fa))
|
|
1250
|
-
)
|
|
1251
|
-
calc(var(--hx-focus-ring-opacity, 0.25) * 100%),
|
|
1280
|
+
var(--_focus-ring-color) calc(var(--hx-focus-ring-opacity, 0.25) * 100%),
|
|
1252
1281
|
transparent
|
|
1253
1282
|
);
|
|
1254
1283
|
}
|
|
@@ -1278,15 +1307,15 @@
|
|
|
1278
1307
|
}
|
|
1279
1308
|
|
|
1280
1309
|
.field__trigger--placeholder .field__trigger-value {
|
|
1281
|
-
color: var(--
|
|
1310
|
+
color: var(--_placeholder-color);
|
|
1282
1311
|
}
|
|
1283
1312
|
|
|
1284
1313
|
.field__chevron {
|
|
1285
1314
|
flex-shrink: 0;
|
|
1286
|
-
width:
|
|
1287
|
-
height:
|
|
1315
|
+
width: calc(var(--_chevron-size) * 1.5);
|
|
1316
|
+
height: var(--_chevron-size);
|
|
1288
1317
|
position: relative;
|
|
1289
|
-
color: var(--
|
|
1318
|
+
color: var(--_chevron-color);
|
|
1290
1319
|
pointer-events: none;
|
|
1291
1320
|
transition: transform var(--hx-transition-fast, 150ms ease);
|
|
1292
1321
|
}
|
|
@@ -1295,11 +1324,11 @@
|
|
|
1295
1324
|
content: '';
|
|
1296
1325
|
position: absolute;
|
|
1297
1326
|
top: 0;
|
|
1298
|
-
left: 2px;
|
|
1299
|
-
width:
|
|
1300
|
-
height:
|
|
1301
|
-
border-inline-end: 1.5px solid currentColor;
|
|
1302
|
-
border-bottom: 1.5px solid currentColor;
|
|
1327
|
+
left: var(--hx-space-px, 2px);
|
|
1328
|
+
width: var(--_chevron-size);
|
|
1329
|
+
height: var(--_chevron-size);
|
|
1330
|
+
border-inline-end: var(--hx-border-width-thin, 1.5px) solid currentColor;
|
|
1331
|
+
border-bottom: var(--hx-border-width-thin, 1.5px) solid currentColor;
|
|
1303
1332
|
transform: rotate(45deg);
|
|
1304
1333
|
}
|
|
1305
1334
|
|
|
@@ -1308,17 +1337,16 @@
|
|
|
1308
1337
|
}
|
|
1309
1338
|
|
|
1310
1339
|
.field--error .field__trigger {
|
|
1311
|
-
border-color: var(--
|
|
1340
|
+
border-color: var(--_error-color);
|
|
1312
1341
|
}
|
|
1313
1342
|
|
|
1314
1343
|
.field--error .field__trigger:focus,
|
|
1315
1344
|
.field--error .field__trigger:focus-visible {
|
|
1316
|
-
border-color: var(--
|
|
1345
|
+
border-color: var(--_error-color);
|
|
1317
1346
|
box-shadow: 0 0 0 var(--hx-focus-ring-width, 2px)
|
|
1318
1347
|
color-mix(
|
|
1319
1348
|
in srgb,
|
|
1320
|
-
var(--
|
|
1321
|
-
calc(var(--hx-focus-ring-opacity, 0.25) * 100%),
|
|
1349
|
+
var(--_error-color) calc(var(--hx-focus-ring-opacity, 0.25) * 100%),
|
|
1322
1350
|
transparent
|
|
1323
1351
|
);
|
|
1324
1352
|
}
|
|
@@ -1329,10 +1357,9 @@
|
|
|
1329
1357
|
left: 0;
|
|
1330
1358
|
right: 0;
|
|
1331
1359
|
z-index: var(--hx-z-index-dropdown, 1000);
|
|
1332
|
-
background-color: var(--
|
|
1333
|
-
border: var(--hx-border-width-thin, 1px) solid
|
|
1334
|
-
|
|
1335
|
-
border-radius: var(--hx-select-border-radius, var(--hx-border-radius-md, 0.375rem));
|
|
1360
|
+
background-color: var(--_listbox-bg);
|
|
1361
|
+
border: var(--hx-border-width-thin, 1px) solid var(--_border-color);
|
|
1362
|
+
border-radius: var(--_border-radius);
|
|
1336
1363
|
box-shadow: var(
|
|
1337
1364
|
--hx-select-listbox-shadow,
|
|
1338
1365
|
0 4px 16px var(--hx-overlay-neutral-12, rgba(13, 17, 23, 0.12))
|
|
@@ -1359,7 +1386,7 @@
|
|
|
1359
1386
|
gap: var(--hx-space-2, 0.5rem);
|
|
1360
1387
|
padding: var(--hx-space-2, 0.5rem) var(--hx-space-3, 0.75rem);
|
|
1361
1388
|
font-size: var(--hx-font-size-md, 1rem);
|
|
1362
|
-
color: var(--
|
|
1389
|
+
color: var(--_color);
|
|
1363
1390
|
cursor: pointer;
|
|
1364
1391
|
user-select: none;
|
|
1365
1392
|
-webkit-user-select: none;
|
|
@@ -1367,23 +1394,23 @@
|
|
|
1367
1394
|
}
|
|
1368
1395
|
|
|
1369
1396
|
.field__option:hover {
|
|
1370
|
-
background-color: var(--
|
|
1397
|
+
background-color: var(--_option-hover-bg);
|
|
1371
1398
|
}
|
|
1372
1399
|
|
|
1373
1400
|
.field__option--selected {
|
|
1374
|
-
background-color: var(--
|
|
1401
|
+
background-color: var(--_option-selected-bg);
|
|
1375
1402
|
font-weight: var(--hx-font-weight-medium, 500);
|
|
1376
1403
|
}
|
|
1377
1404
|
|
|
1378
1405
|
.field__option--focused {
|
|
1379
|
-
background-color: var(--
|
|
1406
|
+
background-color: var(--_option-hover-bg);
|
|
1380
1407
|
outline: var(--hx-focus-ring-width, 2px) solid
|
|
1381
|
-
var(--
|
|
1408
|
+
var(--_focus-ring-color, var(--hx-color-primary-500));
|
|
1382
1409
|
outline-offset: var(--hx-select-option-focus-ring-offset, -2px);
|
|
1383
1410
|
}
|
|
1384
1411
|
|
|
1385
1412
|
.field__option--focused.field__option--selected {
|
|
1386
|
-
background-color: var(--
|
|
1413
|
+
background-color: var(--_option-selected-bg);
|
|
1387
1414
|
}
|
|
1388
1415
|
|
|
1389
1416
|
.field__option--disabled {
|
|
@@ -1402,7 +1429,7 @@
|
|
|
1402
1429
|
.field__no-options {
|
|
1403
1430
|
padding: var(--hx-space-3, 0.75rem);
|
|
1404
1431
|
text-align: center;
|
|
1405
|
-
color: var(--
|
|
1432
|
+
color: var(--_placeholder-color);
|
|
1406
1433
|
font-size: var(--hx-font-size-sm, 0.875rem);
|
|
1407
1434
|
}
|
|
1408
1435
|
|
|
@@ -55,6 +55,8 @@
|
|
|
55
55
|
0 2px 4px -2px rgb(0 0 0 / 0.1)
|
|
56
56
|
);
|
|
57
57
|
min-width: var(--hx-menu-min-width, 10rem);
|
|
58
|
+
max-height: var(--hx-menu-max-height, 20rem);
|
|
59
|
+
overflow-y: auto;
|
|
58
60
|
outline: none;
|
|
59
61
|
}
|
|
60
62
|
/* ── hx-nav ── */
|
|
@@ -629,6 +631,13 @@
|
|
|
629
631
|
:host {
|
|
630
632
|
display: block;
|
|
631
633
|
height: 100%;
|
|
634
|
+
/* Mirror the nav background and text on the host so slotted light-DOM
|
|
635
|
+
content (header, footer slots) inherits the correct dark surface color.
|
|
636
|
+
Without this, axe-core cannot resolve the background for slotted nodes
|
|
637
|
+
and evaluates their text against the page white background, producing
|
|
638
|
+
false-positive color-contrast violations (WCAG 2.1 AA). */
|
|
639
|
+
background-color: var(--hx-side-nav-bg, var(--hx-color-neutral-900, #0f172a));
|
|
640
|
+
color: var(--hx-side-nav-color, var(--hx-color-neutral-100, #f1f5f9));
|
|
632
641
|
}
|
|
633
642
|
|
|
634
643
|
* {
|
|
@@ -642,12 +651,12 @@
|
|
|
642
651
|
flex-direction: column;
|
|
643
652
|
height: 100%;
|
|
644
653
|
width: var(--hx-side-nav-width, 16rem);
|
|
645
|
-
background-color: var(--hx-side-nav-bg, var(--hx-color-neutral-900, #
|
|
646
|
-
color: var(--hx-side-nav-color, var(--hx-color-neutral-100, #
|
|
654
|
+
background-color: var(--hx-side-nav-bg, var(--hx-color-neutral-900, #0f172a));
|
|
655
|
+
color: var(--hx-side-nav-color, var(--hx-color-neutral-100, #f1f5f9));
|
|
647
656
|
transition: width var(--hx-transition-normal, 300ms) ease;
|
|
648
657
|
overflow: hidden;
|
|
649
658
|
border-inline-end: var(--hx-border-width-thin, 1px) solid
|
|
650
|
-
var(--hx-side-nav-border-color, var(--hx-color-neutral-700, #
|
|
659
|
+
var(--hx-side-nav-border-color, var(--hx-color-neutral-700, #334155));
|
|
651
660
|
}
|
|
652
661
|
|
|
653
662
|
/* ─── Collapsed State ─── */
|
|
@@ -665,7 +674,7 @@
|
|
|
665
674
|
flex-shrink: 0;
|
|
666
675
|
min-height: var(--hx-space-14, 3.5rem);
|
|
667
676
|
border-bottom: var(--hx-border-width-thin, 1px) solid
|
|
668
|
-
var(--hx-side-nav-border-color, var(--hx-color-neutral-700, #
|
|
677
|
+
var(--hx-side-nav-border-color, var(--hx-color-neutral-700, #334155));
|
|
669
678
|
overflow: hidden;
|
|
670
679
|
}
|
|
671
680
|
|
|
@@ -692,7 +701,7 @@
|
|
|
692
701
|
flex-shrink: 0;
|
|
693
702
|
min-height: var(--hx-space-14, 3.5rem);
|
|
694
703
|
border-top: var(--hx-border-width-thin, 1px) solid
|
|
695
|
-
var(--hx-side-nav-border-color, var(--hx-color-neutral-700, #
|
|
704
|
+
var(--hx-side-nav-border-color, var(--hx-color-neutral-700, #334155));
|
|
696
705
|
overflow: hidden;
|
|
697
706
|
}
|
|
698
707
|
|
|
@@ -715,7 +724,7 @@
|
|
|
715
724
|
border: none;
|
|
716
725
|
border-radius: var(--hx-border-radius-sm, 0.25rem);
|
|
717
726
|
background: transparent;
|
|
718
|
-
color: var(--hx-side-nav-toggle-color, var(--hx-color-neutral-400, #
|
|
727
|
+
color: var(--hx-side-nav-toggle-color, var(--hx-color-neutral-400, #94a3b8));
|
|
719
728
|
cursor: pointer;
|
|
720
729
|
transition:
|
|
721
730
|
background-color var(--hx-transition-fast, 150ms) ease,
|
|
@@ -727,7 +736,7 @@
|
|
|
727
736
|
--hx-overlay-white-10,
|
|
728
737
|
rgba(255, 255, 255, 0.1)
|
|
729
738
|
); /* fallback for browsers without color-mix() */
|
|
730
|
-
color: var(--hx-color-neutral-100, #
|
|
739
|
+
color: var(--hx-color-neutral-100, #f1f5f9);
|
|
731
740
|
}
|
|
732
741
|
|
|
733
742
|
@supports (color: color-mix(in srgb, red 50%, blue)) {
|
package/dist/css/hx-avatar.css
CHANGED
|
@@ -108,10 +108,27 @@
|
|
|
108
108
|
}
|
|
109
109
|
|
|
110
110
|
/* P1-B: Windows High Contrast Mode — avatar background is stripped by the system,
|
|
111
|
-
leaving no visual boundary.
|
|
111
|
+
leaving no visual boundary. Restore a visible border, explicit foreground, and
|
|
112
|
+
background so the avatar container, initials, and fallback icon all remain
|
|
113
|
+
perceivable at any contrast level.
|
|
112
114
|
WCAG 1.4.11 Non-text Contrast (Level AA). */
|
|
113
115
|
@media (forced-colors: active) {
|
|
114
116
|
.avatar {
|
|
117
|
+
forced-color-adjust: none;
|
|
115
118
|
border: 2px solid ButtonText;
|
|
119
|
+
background-color: Canvas;
|
|
120
|
+
color: CanvasText;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
.avatar__initials {
|
|
124
|
+
color: CanvasText;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
.avatar__fallback-icon {
|
|
128
|
+
color: CanvasText;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
.avatar__image {
|
|
132
|
+
forced-color-adjust: auto;
|
|
116
133
|
}
|
|
117
134
|
}
|
package/dist/css/hx-badge.css
CHANGED
|
@@ -119,17 +119,21 @@
|
|
|
119
119
|
display: none;
|
|
120
120
|
}
|
|
121
121
|
|
|
122
|
+
.badge--dot slot[name='prefix'] {
|
|
123
|
+
display: none;
|
|
124
|
+
}
|
|
125
|
+
|
|
122
126
|
/* ─── Pulse Animation ─── */
|
|
123
127
|
|
|
124
128
|
@keyframes hx-badge-pulse {
|
|
125
129
|
0%,
|
|
126
130
|
100% {
|
|
127
131
|
opacity: 1;
|
|
128
|
-
box-shadow: 0 0 0
|
|
132
|
+
box-shadow: 0 0 0 2px var(--hx-badge-pulse-color, currentColor);
|
|
129
133
|
}
|
|
130
134
|
50% {
|
|
131
135
|
opacity: var(--hx-opacity-75, 0.75);
|
|
132
|
-
box-shadow: 0 0 0
|
|
136
|
+
box-shadow: 0 0 0 6px transparent;
|
|
133
137
|
}
|
|
134
138
|
}
|
|
135
139
|
|
package/dist/css/hx-button.css
CHANGED
|
@@ -260,3 +260,37 @@
|
|
|
260
260
|
.button__label {
|
|
261
261
|
flex: 1 1 auto;
|
|
262
262
|
}
|
|
263
|
+
|
|
264
|
+
/* ─── High Contrast Mode (forced-colors) ─── */
|
|
265
|
+
|
|
266
|
+
@media (forced-colors: active) {
|
|
267
|
+
.button {
|
|
268
|
+
/* Ensure button outline is visible in Windows High Contrast mode.
|
|
269
|
+
ButtonText/ButtonFace are system colors recognized by the browser. */
|
|
270
|
+
forced-color-adjust: none;
|
|
271
|
+
background-color: ButtonFace;
|
|
272
|
+
color: ButtonText;
|
|
273
|
+
border: 2px solid ButtonText;
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
.button:focus-visible {
|
|
277
|
+
outline: 3px solid Highlight;
|
|
278
|
+
outline-offset: 2px;
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
.button[disabled] {
|
|
282
|
+
background-color: ButtonFace;
|
|
283
|
+
color: GrayText;
|
|
284
|
+
border-color: GrayText;
|
|
285
|
+
opacity: 1;
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
:host([disabled]) {
|
|
289
|
+
opacity: 1;
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
.button--loading .button__spinner {
|
|
293
|
+
/* Ensure spinner is visible in HCM */
|
|
294
|
+
forced-color-adjust: auto;
|
|
295
|
+
}
|
|
296
|
+
}
|
|
@@ -184,7 +184,8 @@
|
|
|
184
184
|
}
|
|
185
185
|
|
|
186
186
|
.clinical-status__dismiss-button:focus-visible {
|
|
187
|
-
outline: var(--hx-focus-ring-width, 2px) solid
|
|
187
|
+
outline: var(--hx-focus-ring-width, 2px) solid
|
|
188
|
+
var(--hx-focus-ring-color, var(--hx-color-focus, #2563eb));
|
|
188
189
|
outline-offset: var(--hx-focus-ring-offset, 2px);
|
|
189
190
|
opacity: 1;
|
|
190
191
|
}
|
|
@@ -229,7 +230,8 @@
|
|
|
229
230
|
}
|
|
230
231
|
|
|
231
232
|
.clinical-status__acknowledge-button:focus-visible {
|
|
232
|
-
outline: var(--hx-focus-ring-width, 2px) solid
|
|
233
|
+
outline: var(--hx-focus-ring-width, 2px) solid
|
|
234
|
+
var(--hx-focus-ring-color, var(--hx-color-focus, #2563eb));
|
|
233
235
|
outline-offset: var(--hx-focus-ring-offset, 2px);
|
|
234
236
|
}
|
|
235
237
|
|
package/dist/css/hx-menu.css
CHANGED
|
@@ -17,6 +17,7 @@
|
|
|
17
17
|
--_value-color: var(--hx-patient-banner-value-color, var(--hx-color-neutral-900, #111827));
|
|
18
18
|
--_value-font-size: var(--hx-patient-banner-value-font-size, var(--hx-font-size-sm, 0.875rem));
|
|
19
19
|
--_photo-size: var(--hx-patient-banner-photo-size, var(--hx-space-10, 2.5rem));
|
|
20
|
+
--_photo-bg: var(--hx-patient-banner-photo-bg, var(--hx-color-neutral-200, #e5e7eb));
|
|
20
21
|
}
|
|
21
22
|
|
|
22
23
|
* {
|
|
@@ -34,6 +35,7 @@
|
|
|
34
35
|
border-bottom: var(--hx-border-width-thin, 1px) solid var(--_border-color);
|
|
35
36
|
font-family: var(--_font-family);
|
|
36
37
|
width: 100%;
|
|
38
|
+
position: relative;
|
|
37
39
|
}
|
|
38
40
|
|
|
39
41
|
/* ─── Photo Area ─── */
|
|
@@ -42,12 +44,15 @@
|
|
|
42
44
|
flex-shrink: 0;
|
|
43
45
|
width: var(--_photo-size);
|
|
44
46
|
height: var(--_photo-size);
|
|
47
|
+
/* Minimum 44x44px touch target for interactive photo content. */
|
|
48
|
+
min-width: 44px;
|
|
49
|
+
min-height: 44px;
|
|
45
50
|
border-radius: var(--hx-border-radius-full, 9999px);
|
|
46
51
|
overflow: hidden;
|
|
47
52
|
display: flex;
|
|
48
53
|
align-items: center;
|
|
49
54
|
justify-content: center;
|
|
50
|
-
background-color: var(--
|
|
55
|
+
background-color: var(--_photo-bg);
|
|
51
56
|
}
|
|
52
57
|
|
|
53
58
|
/* ─── Fields Grid ─── */
|
|
@@ -93,9 +98,8 @@
|
|
|
93
98
|
:host([aria-invalid='true']) .banner {
|
|
94
99
|
border-bottom-color: var(--hx-color-error-400, #f87171);
|
|
95
100
|
background-color: var(--hx-color-error-50, #fef2f2);
|
|
96
|
-
/* Darken label color to maintain 4.5:1 contrast on error-50 background */
|
|
101
|
+
/* Darken label color to maintain 4.5:1 contrast on error-50 background. */
|
|
97
102
|
--_label-color: var(--hx-patient-banner-label-color, var(--hx-color-neutral-700, #374151));
|
|
98
|
-
position: relative;
|
|
99
103
|
}
|
|
100
104
|
|
|
101
105
|
:host([aria-invalid='true']) .banner::before {
|
|
@@ -109,3 +113,27 @@
|
|
|
109
113
|
background-color: var(--hx-color-error-500, #ef4444);
|
|
110
114
|
border-radius: 0;
|
|
111
115
|
}
|
|
116
|
+
|
|
117
|
+
/* ─── Visually-hidden violation live region ─── */
|
|
118
|
+
/* Announces identifier rule violations to screen readers without visible text. */
|
|
119
|
+
|
|
120
|
+
.violation-message {
|
|
121
|
+
position: absolute;
|
|
122
|
+
width: 1px;
|
|
123
|
+
height: 1px;
|
|
124
|
+
padding: 0;
|
|
125
|
+
margin: -1px;
|
|
126
|
+
overflow: hidden;
|
|
127
|
+
clip: rect(0, 0, 0, 0);
|
|
128
|
+
white-space: nowrap;
|
|
129
|
+
border-width: 0;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
/* ─── Motion reduction ─── */
|
|
133
|
+
|
|
134
|
+
@media (prefers-reduced-motion: reduce) {
|
|
135
|
+
* {
|
|
136
|
+
transition: none !important;
|
|
137
|
+
animation: none !important;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
@@ -76,6 +76,18 @@
|
|
|
76
76
|
pointer-events: none;
|
|
77
77
|
}
|
|
78
78
|
|
|
79
|
+
/* ─── Disabled State ─── */
|
|
80
|
+
|
|
81
|
+
:host([disabled]) {
|
|
82
|
+
opacity: var(--hx-phi-field-disabled-opacity, var(--hx-opacity-50, 0.5));
|
|
83
|
+
pointer-events: none;
|
|
84
|
+
cursor: not-allowed;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
.phi-field--disabled .phi-field__toggle {
|
|
88
|
+
cursor: not-allowed;
|
|
89
|
+
}
|
|
90
|
+
|
|
79
91
|
/* ─── Reduced Motion ─── */
|
|
80
92
|
|
|
81
93
|
@media (prefers-reduced-motion: reduce) {
|