@helixui/library 1.1.2-next.1 → 1.1.2-next.11
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 +476 -392
- 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
package/dist/css/helix-all.css
CHANGED
|
@@ -450,11 +450,28 @@
|
|
|
450
450
|
}
|
|
451
451
|
|
|
452
452
|
/* P1-B: Windows High Contrast Mode — avatar background is stripped by the system,
|
|
453
|
-
leaving no visual boundary.
|
|
453
|
+
leaving no visual boundary. Restore a visible border, explicit foreground, and
|
|
454
|
+
background so the avatar container, initials, and fallback icon all remain
|
|
455
|
+
perceivable at any contrast level.
|
|
454
456
|
WCAG 1.4.11 Non-text Contrast (Level AA). */
|
|
455
457
|
@media (forced-colors: active) {
|
|
456
458
|
.avatar {
|
|
459
|
+
forced-color-adjust: none;
|
|
457
460
|
border: 2px solid ButtonText;
|
|
461
|
+
background-color: Canvas;
|
|
462
|
+
color: CanvasText;
|
|
463
|
+
}
|
|
464
|
+
|
|
465
|
+
.avatar__initials {
|
|
466
|
+
color: CanvasText;
|
|
467
|
+
}
|
|
468
|
+
|
|
469
|
+
.avatar__fallback-icon {
|
|
470
|
+
color: CanvasText;
|
|
471
|
+
}
|
|
472
|
+
|
|
473
|
+
.avatar__image {
|
|
474
|
+
forced-color-adjust: auto;
|
|
458
475
|
}
|
|
459
476
|
}
|
|
460
477
|
/* ── hx-badge ── */
|
|
@@ -578,17 +595,21 @@
|
|
|
578
595
|
display: none;
|
|
579
596
|
}
|
|
580
597
|
|
|
598
|
+
.badge--dot slot[name='prefix'] {
|
|
599
|
+
display: none;
|
|
600
|
+
}
|
|
601
|
+
|
|
581
602
|
/* ─── Pulse Animation ─── */
|
|
582
603
|
|
|
583
604
|
@keyframes hx-badge-pulse {
|
|
584
605
|
0%,
|
|
585
606
|
100% {
|
|
586
607
|
opacity: 1;
|
|
587
|
-
box-shadow: 0 0 0
|
|
608
|
+
box-shadow: 0 0 0 2px var(--hx-badge-pulse-color, currentColor);
|
|
588
609
|
}
|
|
589
610
|
50% {
|
|
590
611
|
opacity: var(--hx-opacity-75, 0.75);
|
|
591
|
-
box-shadow: 0 0 0
|
|
612
|
+
box-shadow: 0 0 0 6px transparent;
|
|
592
613
|
}
|
|
593
614
|
}
|
|
594
615
|
|
|
@@ -1132,6 +1153,40 @@
|
|
|
1132
1153
|
.button__label {
|
|
1133
1154
|
flex: 1 1 auto;
|
|
1134
1155
|
}
|
|
1156
|
+
|
|
1157
|
+
/* ─── High Contrast Mode (forced-colors) ─── */
|
|
1158
|
+
|
|
1159
|
+
@media (forced-colors: active) {
|
|
1160
|
+
.button {
|
|
1161
|
+
/* Ensure button outline is visible in Windows High Contrast mode.
|
|
1162
|
+
ButtonText/ButtonFace are system colors recognized by the browser. */
|
|
1163
|
+
forced-color-adjust: none;
|
|
1164
|
+
background-color: ButtonFace;
|
|
1165
|
+
color: ButtonText;
|
|
1166
|
+
border: 2px solid ButtonText;
|
|
1167
|
+
}
|
|
1168
|
+
|
|
1169
|
+
.button:focus-visible {
|
|
1170
|
+
outline: 3px solid Highlight;
|
|
1171
|
+
outline-offset: 2px;
|
|
1172
|
+
}
|
|
1173
|
+
|
|
1174
|
+
.button[disabled] {
|
|
1175
|
+
background-color: ButtonFace;
|
|
1176
|
+
color: GrayText;
|
|
1177
|
+
border-color: GrayText;
|
|
1178
|
+
opacity: 1;
|
|
1179
|
+
}
|
|
1180
|
+
|
|
1181
|
+
:host([disabled]) {
|
|
1182
|
+
opacity: 1;
|
|
1183
|
+
}
|
|
1184
|
+
|
|
1185
|
+
.button--loading .button__spinner {
|
|
1186
|
+
/* Ensure spinner is visible in HCM */
|
|
1187
|
+
forced-color-adjust: auto;
|
|
1188
|
+
}
|
|
1189
|
+
}
|
|
1135
1190
|
/* ── hx-button-group ── */
|
|
1136
1191
|
:host {
|
|
1137
1192
|
display: inline-flex;
|
|
@@ -2077,7 +2132,8 @@
|
|
|
2077
2132
|
}
|
|
2078
2133
|
|
|
2079
2134
|
.clinical-status__dismiss-button:focus-visible {
|
|
2080
|
-
outline: var(--hx-focus-ring-width, 2px) solid
|
|
2135
|
+
outline: var(--hx-focus-ring-width, 2px) solid
|
|
2136
|
+
var(--hx-focus-ring-color, var(--hx-color-focus, #2563eb));
|
|
2081
2137
|
outline-offset: var(--hx-focus-ring-offset, 2px);
|
|
2082
2138
|
opacity: 1;
|
|
2083
2139
|
}
|
|
@@ -2122,7 +2178,8 @@
|
|
|
2122
2178
|
}
|
|
2123
2179
|
|
|
2124
2180
|
.clinical-status__acknowledge-button:focus-visible {
|
|
2125
|
-
outline: var(--hx-focus-ring-width, 2px) solid
|
|
2181
|
+
outline: var(--hx-focus-ring-width, 2px) solid
|
|
2182
|
+
var(--hx-focus-ring-color, var(--hx-color-focus, #2563eb));
|
|
2126
2183
|
outline-offset: var(--hx-focus-ring-offset, 2px);
|
|
2127
2184
|
}
|
|
2128
2185
|
|
|
@@ -4278,6 +4335,8 @@ export const helixGridItemStyles = css`
|
|
|
4278
4335
|
0 2px 4px -2px rgb(0 0 0 / 0.1)
|
|
4279
4336
|
);
|
|
4280
4337
|
min-width: var(--hx-menu-min-width, 10rem);
|
|
4338
|
+
max-height: var(--hx-menu-max-height, 20rem);
|
|
4339
|
+
overflow-y: auto;
|
|
4281
4340
|
outline: none;
|
|
4282
4341
|
}
|
|
4283
4342
|
/* ── hx-meter ── */
|
|
@@ -5226,6 +5285,7 @@ export const helixGridItemStyles = css`
|
|
|
5226
5285
|
--_value-color: var(--hx-patient-banner-value-color, var(--hx-color-neutral-900, #111827));
|
|
5227
5286
|
--_value-font-size: var(--hx-patient-banner-value-font-size, var(--hx-font-size-sm, 0.875rem));
|
|
5228
5287
|
--_photo-size: var(--hx-patient-banner-photo-size, var(--hx-space-10, 2.5rem));
|
|
5288
|
+
--_photo-bg: var(--hx-patient-banner-photo-bg, var(--hx-color-neutral-200, #e5e7eb));
|
|
5229
5289
|
}
|
|
5230
5290
|
|
|
5231
5291
|
* {
|
|
@@ -5243,6 +5303,7 @@ export const helixGridItemStyles = css`
|
|
|
5243
5303
|
border-bottom: var(--hx-border-width-thin, 1px) solid var(--_border-color);
|
|
5244
5304
|
font-family: var(--_font-family);
|
|
5245
5305
|
width: 100%;
|
|
5306
|
+
position: relative;
|
|
5246
5307
|
}
|
|
5247
5308
|
|
|
5248
5309
|
/* ─── Photo Area ─── */
|
|
@@ -5251,12 +5312,15 @@ export const helixGridItemStyles = css`
|
|
|
5251
5312
|
flex-shrink: 0;
|
|
5252
5313
|
width: var(--_photo-size);
|
|
5253
5314
|
height: var(--_photo-size);
|
|
5315
|
+
/* Minimum 44x44px touch target for interactive photo content. */
|
|
5316
|
+
min-width: 44px;
|
|
5317
|
+
min-height: 44px;
|
|
5254
5318
|
border-radius: var(--hx-border-radius-full, 9999px);
|
|
5255
5319
|
overflow: hidden;
|
|
5256
5320
|
display: flex;
|
|
5257
5321
|
align-items: center;
|
|
5258
5322
|
justify-content: center;
|
|
5259
|
-
background-color: var(--
|
|
5323
|
+
background-color: var(--_photo-bg);
|
|
5260
5324
|
}
|
|
5261
5325
|
|
|
5262
5326
|
/* ─── Fields Grid ─── */
|
|
@@ -5302,9 +5366,8 @@ export const helixGridItemStyles = css`
|
|
|
5302
5366
|
:host([aria-invalid='true']) .banner {
|
|
5303
5367
|
border-bottom-color: var(--hx-color-error-400, #f87171);
|
|
5304
5368
|
background-color: var(--hx-color-error-50, #fef2f2);
|
|
5305
|
-
/* Darken label color to maintain 4.5:1 contrast on error-50 background */
|
|
5369
|
+
/* Darken label color to maintain 4.5:1 contrast on error-50 background. */
|
|
5306
5370
|
--_label-color: var(--hx-patient-banner-label-color, var(--hx-color-neutral-700, #374151));
|
|
5307
|
-
position: relative;
|
|
5308
5371
|
}
|
|
5309
5372
|
|
|
5310
5373
|
:host([aria-invalid='true']) .banner::before {
|
|
@@ -5318,6 +5381,30 @@ export const helixGridItemStyles = css`
|
|
|
5318
5381
|
background-color: var(--hx-color-error-500, #ef4444);
|
|
5319
5382
|
border-radius: 0;
|
|
5320
5383
|
}
|
|
5384
|
+
|
|
5385
|
+
/* ─── Visually-hidden violation live region ─── */
|
|
5386
|
+
/* Announces identifier rule violations to screen readers without visible text. */
|
|
5387
|
+
|
|
5388
|
+
.violation-message {
|
|
5389
|
+
position: absolute;
|
|
5390
|
+
width: 1px;
|
|
5391
|
+
height: 1px;
|
|
5392
|
+
padding: 0;
|
|
5393
|
+
margin: -1px;
|
|
5394
|
+
overflow: hidden;
|
|
5395
|
+
clip: rect(0, 0, 0, 0);
|
|
5396
|
+
white-space: nowrap;
|
|
5397
|
+
border-width: 0;
|
|
5398
|
+
}
|
|
5399
|
+
|
|
5400
|
+
/* ─── Motion reduction ─── */
|
|
5401
|
+
|
|
5402
|
+
@media (prefers-reduced-motion: reduce) {
|
|
5403
|
+
* {
|
|
5404
|
+
transition: none !important;
|
|
5405
|
+
animation: none !important;
|
|
5406
|
+
}
|
|
5407
|
+
}
|
|
5321
5408
|
/* ── hx-phi-field ── */
|
|
5322
5409
|
:host {
|
|
5323
5410
|
display: inline-flex;
|
|
@@ -5396,6 +5483,18 @@ export const helixGridItemStyles = css`
|
|
|
5396
5483
|
pointer-events: none;
|
|
5397
5484
|
}
|
|
5398
5485
|
|
|
5486
|
+
/* ─── Disabled State ─── */
|
|
5487
|
+
|
|
5488
|
+
:host([disabled]) {
|
|
5489
|
+
opacity: var(--hx-phi-field-disabled-opacity, var(--hx-opacity-50, 0.5));
|
|
5490
|
+
pointer-events: none;
|
|
5491
|
+
cursor: not-allowed;
|
|
5492
|
+
}
|
|
5493
|
+
|
|
5494
|
+
.phi-field--disabled .phi-field__toggle {
|
|
5495
|
+
cursor: not-allowed;
|
|
5496
|
+
}
|
|
5497
|
+
|
|
5399
5498
|
/* ─── Reduced Motion ─── */
|
|
5400
5499
|
|
|
5401
5500
|
@media (prefers-reduced-motion: reduce) {
|
|
@@ -5944,8 +6043,45 @@ export const helixGridItemStyles = css`
|
|
|
5944
6043
|
}
|
|
5945
6044
|
}
|
|
5946
6045
|
/* ── hx-select ── */
|
|
5947
|
-
:
|
|
6046
|
+
/* ─── 3-tier token cascade: component → semantic → hardcoded fallback ─── */
|
|
6047
|
+
:host {
|
|
5948
6048
|
display: block;
|
|
6049
|
+
|
|
6050
|
+
/* Background & foreground */
|
|
6051
|
+
--_bg: var(--hx-select-bg, var(--hx-color-neutral-0, #ffffff));
|
|
6052
|
+
--_color: var(--hx-select-color, var(--hx-color-neutral-800, #212529));
|
|
6053
|
+
--_placeholder-color: var(--hx-select-placeholder-color, var(--hx-color-neutral-400, #adb5bd));
|
|
6054
|
+
|
|
6055
|
+
/* Label */
|
|
6056
|
+
--_label-color: var(--hx-select-label-color, var(--hx-color-neutral-700, #343a40));
|
|
6057
|
+
|
|
6058
|
+
/* Border */
|
|
6059
|
+
--_border-color: var(--hx-select-border-color, var(--hx-color-neutral-300, #ced4da));
|
|
6060
|
+
--_border-radius: var(--hx-select-border-radius, var(--hx-border-radius-md, 0.375rem));
|
|
6061
|
+
|
|
6062
|
+
/* Focus ring */
|
|
6063
|
+
--_focus-ring-color: var(
|
|
6064
|
+
--hx-select-focus-ring-color,
|
|
6065
|
+
var(--hx-focus-ring-color, var(--hx-color-primary-400, #60a5fa))
|
|
6066
|
+
);
|
|
6067
|
+
|
|
6068
|
+
/* Error */
|
|
6069
|
+
--_error-color: var(--hx-select-error-color, var(--hx-color-error-500, #dc3545));
|
|
6070
|
+
|
|
6071
|
+
/* Chevron */
|
|
6072
|
+
--_chevron-color: var(--hx-select-chevron-color, var(--hx-color-neutral-500, #6c757d));
|
|
6073
|
+
--_chevron-size: var(--hx-select-chevron-size, 0.5rem);
|
|
6074
|
+
|
|
6075
|
+
/* Listbox */
|
|
6076
|
+
--_listbox-bg: var(--hx-select-listbox-bg, var(--hx-color-neutral-0, #ffffff));
|
|
6077
|
+
--_option-hover-bg: var(--hx-select-option-hover-bg, var(--hx-color-primary-50, #eff6ff));
|
|
6078
|
+
--_option-selected-bg: var(
|
|
6079
|
+
--hx-select-option-selected-bg,
|
|
6080
|
+
var(--hx-color-primary-100, #dbeafe)
|
|
6081
|
+
);
|
|
6082
|
+
|
|
6083
|
+
/* Typography */
|
|
6084
|
+
--_font-family: var(--hx-select-font-family, var(--hx-font-family-sans, sans-serif));
|
|
5949
6085
|
}
|
|
5950
6086
|
|
|
5951
6087
|
:host([disabled]) {
|
|
@@ -5961,7 +6097,7 @@ export const helixGridItemStyles = css`
|
|
|
5961
6097
|
display: flex;
|
|
5962
6098
|
flex-direction: column;
|
|
5963
6099
|
gap: var(--hx-space-1, 0.25rem);
|
|
5964
|
-
font-family: var(--
|
|
6100
|
+
font-family: var(--_font-family);
|
|
5965
6101
|
position: relative;
|
|
5966
6102
|
}
|
|
5967
6103
|
|
|
@@ -5971,7 +6107,7 @@ export const helixGridItemStyles = css`
|
|
|
5971
6107
|
gap: var(--hx-space-1, 0.25rem);
|
|
5972
6108
|
font-size: var(--hx-font-size-sm, 0.875rem);
|
|
5973
6109
|
font-weight: var(--hx-font-weight-medium, 500);
|
|
5974
|
-
color: var(--
|
|
6110
|
+
color: var(--_label-color);
|
|
5975
6111
|
line-height: var(--hx-line-height-normal, 1.5);
|
|
5976
6112
|
}
|
|
5977
6113
|
|
|
@@ -5992,11 +6128,10 @@ export const helixGridItemStyles = css`
|
|
|
5992
6128
|
gap: var(--hx-space-2, 0.5rem);
|
|
5993
6129
|
width: 100%;
|
|
5994
6130
|
min-height: var(--hx-input-height-md, var(--hx-size-10, 2.5rem));
|
|
5995
|
-
border: var(--hx-border-width-thin, 1px) solid
|
|
5996
|
-
|
|
5997
|
-
|
|
5998
|
-
|
|
5999
|
-
color: var(--hx-select-color, var(--hx-color-neutral-800, #212529));
|
|
6131
|
+
border: var(--hx-border-width-thin, 1px) solid var(--_border-color);
|
|
6132
|
+
border-radius: var(--_border-radius);
|
|
6133
|
+
background-color: var(--_bg);
|
|
6134
|
+
color: var(--_color);
|
|
6000
6135
|
font-family: inherit;
|
|
6001
6136
|
font-size: var(--hx-font-size-md, 1rem);
|
|
6002
6137
|
line-height: var(--hx-line-height-normal, 1.5);
|
|
@@ -6011,18 +6146,11 @@ export const helixGridItemStyles = css`
|
|
|
6011
6146
|
|
|
6012
6147
|
.field__trigger:focus,
|
|
6013
6148
|
.field__trigger:focus-visible {
|
|
6014
|
-
border-color: var(
|
|
6015
|
-
--hx-select-focus-ring-color,
|
|
6016
|
-
var(--hx-focus-ring-color, var(--hx-color-primary-400, #60a5fa))
|
|
6017
|
-
);
|
|
6149
|
+
border-color: var(--_focus-ring-color);
|
|
6018
6150
|
box-shadow: 0 0 0 var(--hx-focus-ring-width, 2px)
|
|
6019
6151
|
color-mix(
|
|
6020
6152
|
in srgb,
|
|
6021
|
-
var(
|
|
6022
|
-
--hx-select-focus-ring-color,
|
|
6023
|
-
var(--hx-focus-ring-color, var(--hx-color-primary-400, #60a5fa))
|
|
6024
|
-
)
|
|
6025
|
-
calc(var(--hx-focus-ring-opacity, 0.25) * 100%),
|
|
6153
|
+
var(--_focus-ring-color) calc(var(--hx-focus-ring-opacity, 0.25) * 100%),
|
|
6026
6154
|
transparent
|
|
6027
6155
|
);
|
|
6028
6156
|
}
|
|
@@ -6052,15 +6180,15 @@ export const helixGridItemStyles = css`
|
|
|
6052
6180
|
}
|
|
6053
6181
|
|
|
6054
6182
|
.field__trigger--placeholder .field__trigger-value {
|
|
6055
|
-
color: var(--
|
|
6183
|
+
color: var(--_placeholder-color);
|
|
6056
6184
|
}
|
|
6057
6185
|
|
|
6058
6186
|
.field__chevron {
|
|
6059
6187
|
flex-shrink: 0;
|
|
6060
|
-
width:
|
|
6061
|
-
height:
|
|
6188
|
+
width: calc(var(--_chevron-size) * 1.5);
|
|
6189
|
+
height: var(--_chevron-size);
|
|
6062
6190
|
position: relative;
|
|
6063
|
-
color: var(--
|
|
6191
|
+
color: var(--_chevron-color);
|
|
6064
6192
|
pointer-events: none;
|
|
6065
6193
|
transition: transform var(--hx-transition-fast, 150ms ease);
|
|
6066
6194
|
}
|
|
@@ -6069,11 +6197,11 @@ export const helixGridItemStyles = css`
|
|
|
6069
6197
|
content: '';
|
|
6070
6198
|
position: absolute;
|
|
6071
6199
|
top: 0;
|
|
6072
|
-
left: 2px;
|
|
6073
|
-
width:
|
|
6074
|
-
height:
|
|
6075
|
-
border-inline-end: 1.5px solid currentColor;
|
|
6076
|
-
border-bottom: 1.5px solid currentColor;
|
|
6200
|
+
left: var(--hx-space-px, 2px);
|
|
6201
|
+
width: var(--_chevron-size);
|
|
6202
|
+
height: var(--_chevron-size);
|
|
6203
|
+
border-inline-end: var(--hx-border-width-thin, 1.5px) solid currentColor;
|
|
6204
|
+
border-bottom: var(--hx-border-width-thin, 1.5px) solid currentColor;
|
|
6077
6205
|
transform: rotate(45deg);
|
|
6078
6206
|
}
|
|
6079
6207
|
|
|
@@ -6082,17 +6210,16 @@ export const helixGridItemStyles = css`
|
|
|
6082
6210
|
}
|
|
6083
6211
|
|
|
6084
6212
|
.field--error .field__trigger {
|
|
6085
|
-
border-color: var(--
|
|
6213
|
+
border-color: var(--_error-color);
|
|
6086
6214
|
}
|
|
6087
6215
|
|
|
6088
6216
|
.field--error .field__trigger:focus,
|
|
6089
6217
|
.field--error .field__trigger:focus-visible {
|
|
6090
|
-
border-color: var(--
|
|
6218
|
+
border-color: var(--_error-color);
|
|
6091
6219
|
box-shadow: 0 0 0 var(--hx-focus-ring-width, 2px)
|
|
6092
6220
|
color-mix(
|
|
6093
6221
|
in srgb,
|
|
6094
|
-
var(--
|
|
6095
|
-
calc(var(--hx-focus-ring-opacity, 0.25) * 100%),
|
|
6222
|
+
var(--_error-color) calc(var(--hx-focus-ring-opacity, 0.25) * 100%),
|
|
6096
6223
|
transparent
|
|
6097
6224
|
);
|
|
6098
6225
|
}
|
|
@@ -6103,10 +6230,9 @@ export const helixGridItemStyles = css`
|
|
|
6103
6230
|
left: 0;
|
|
6104
6231
|
right: 0;
|
|
6105
6232
|
z-index: var(--hx-z-index-dropdown, 1000);
|
|
6106
|
-
background-color: var(--
|
|
6107
|
-
border: var(--hx-border-width-thin, 1px) solid
|
|
6108
|
-
|
|
6109
|
-
border-radius: var(--hx-select-border-radius, var(--hx-border-radius-md, 0.375rem));
|
|
6233
|
+
background-color: var(--_listbox-bg);
|
|
6234
|
+
border: var(--hx-border-width-thin, 1px) solid var(--_border-color);
|
|
6235
|
+
border-radius: var(--_border-radius);
|
|
6110
6236
|
box-shadow: var(
|
|
6111
6237
|
--hx-select-listbox-shadow,
|
|
6112
6238
|
0 4px 16px var(--hx-overlay-neutral-12, rgba(13, 17, 23, 0.12))
|
|
@@ -6133,7 +6259,7 @@ export const helixGridItemStyles = css`
|
|
|
6133
6259
|
gap: var(--hx-space-2, 0.5rem);
|
|
6134
6260
|
padding: var(--hx-space-2, 0.5rem) var(--hx-space-3, 0.75rem);
|
|
6135
6261
|
font-size: var(--hx-font-size-md, 1rem);
|
|
6136
|
-
color: var(--
|
|
6262
|
+
color: var(--_color);
|
|
6137
6263
|
cursor: pointer;
|
|
6138
6264
|
user-select: none;
|
|
6139
6265
|
-webkit-user-select: none;
|
|
@@ -6141,23 +6267,23 @@ export const helixGridItemStyles = css`
|
|
|
6141
6267
|
}
|
|
6142
6268
|
|
|
6143
6269
|
.field__option:hover {
|
|
6144
|
-
background-color: var(--
|
|
6270
|
+
background-color: var(--_option-hover-bg);
|
|
6145
6271
|
}
|
|
6146
6272
|
|
|
6147
6273
|
.field__option--selected {
|
|
6148
|
-
background-color: var(--
|
|
6274
|
+
background-color: var(--_option-selected-bg);
|
|
6149
6275
|
font-weight: var(--hx-font-weight-medium, 500);
|
|
6150
6276
|
}
|
|
6151
6277
|
|
|
6152
6278
|
.field__option--focused {
|
|
6153
|
-
background-color: var(--
|
|
6279
|
+
background-color: var(--_option-hover-bg);
|
|
6154
6280
|
outline: var(--hx-focus-ring-width, 2px) solid
|
|
6155
|
-
var(--
|
|
6281
|
+
var(--_focus-ring-color, var(--hx-color-primary-500));
|
|
6156
6282
|
outline-offset: var(--hx-select-option-focus-ring-offset, -2px);
|
|
6157
6283
|
}
|
|
6158
6284
|
|
|
6159
6285
|
.field__option--focused.field__option--selected {
|
|
6160
|
-
background-color: var(--
|
|
6286
|
+
background-color: var(--_option-selected-bg);
|
|
6161
6287
|
}
|
|
6162
6288
|
|
|
6163
6289
|
.field__option--disabled {
|
|
@@ -6176,7 +6302,7 @@ export const helixGridItemStyles = css`
|
|
|
6176
6302
|
.field__no-options {
|
|
6177
6303
|
padding: var(--hx-space-3, 0.75rem);
|
|
6178
6304
|
text-align: center;
|
|
6179
|
-
color: var(--
|
|
6305
|
+
color: var(--_placeholder-color);
|
|
6180
6306
|
font-size: var(--hx-font-size-sm, 0.875rem);
|
|
6181
6307
|
}
|
|
6182
6308
|
|
|
@@ -6215,6 +6341,13 @@ export const helixGridItemStyles = css`
|
|
|
6215
6341
|
:host {
|
|
6216
6342
|
display: block;
|
|
6217
6343
|
height: 100%;
|
|
6344
|
+
/* Mirror the nav background and text on the host so slotted light-DOM
|
|
6345
|
+
content (header, footer slots) inherits the correct dark surface color.
|
|
6346
|
+
Without this, axe-core cannot resolve the background for slotted nodes
|
|
6347
|
+
and evaluates their text against the page white background, producing
|
|
6348
|
+
false-positive color-contrast violations (WCAG 2.1 AA). */
|
|
6349
|
+
background-color: var(--hx-side-nav-bg, var(--hx-color-neutral-900, #0f172a));
|
|
6350
|
+
color: var(--hx-side-nav-color, var(--hx-color-neutral-100, #f1f5f9));
|
|
6218
6351
|
}
|
|
6219
6352
|
|
|
6220
6353
|
* {
|
|
@@ -6228,12 +6361,12 @@ export const helixGridItemStyles = css`
|
|
|
6228
6361
|
flex-direction: column;
|
|
6229
6362
|
height: 100%;
|
|
6230
6363
|
width: var(--hx-side-nav-width, 16rem);
|
|
6231
|
-
background-color: var(--hx-side-nav-bg, var(--hx-color-neutral-900, #
|
|
6232
|
-
color: var(--hx-side-nav-color, var(--hx-color-neutral-100, #
|
|
6364
|
+
background-color: var(--hx-side-nav-bg, var(--hx-color-neutral-900, #0f172a));
|
|
6365
|
+
color: var(--hx-side-nav-color, var(--hx-color-neutral-100, #f1f5f9));
|
|
6233
6366
|
transition: width var(--hx-transition-normal, 300ms) ease;
|
|
6234
6367
|
overflow: hidden;
|
|
6235
6368
|
border-inline-end: var(--hx-border-width-thin, 1px) solid
|
|
6236
|
-
var(--hx-side-nav-border-color, var(--hx-color-neutral-700, #
|
|
6369
|
+
var(--hx-side-nav-border-color, var(--hx-color-neutral-700, #334155));
|
|
6237
6370
|
}
|
|
6238
6371
|
|
|
6239
6372
|
/* ─── Collapsed State ─── */
|
|
@@ -6251,7 +6384,7 @@ export const helixGridItemStyles = css`
|
|
|
6251
6384
|
flex-shrink: 0;
|
|
6252
6385
|
min-height: var(--hx-space-14, 3.5rem);
|
|
6253
6386
|
border-bottom: var(--hx-border-width-thin, 1px) solid
|
|
6254
|
-
var(--hx-side-nav-border-color, var(--hx-color-neutral-700, #
|
|
6387
|
+
var(--hx-side-nav-border-color, var(--hx-color-neutral-700, #334155));
|
|
6255
6388
|
overflow: hidden;
|
|
6256
6389
|
}
|
|
6257
6390
|
|
|
@@ -6278,7 +6411,7 @@ export const helixGridItemStyles = css`
|
|
|
6278
6411
|
flex-shrink: 0;
|
|
6279
6412
|
min-height: var(--hx-space-14, 3.5rem);
|
|
6280
6413
|
border-top: var(--hx-border-width-thin, 1px) solid
|
|
6281
|
-
var(--hx-side-nav-border-color, var(--hx-color-neutral-700, #
|
|
6414
|
+
var(--hx-side-nav-border-color, var(--hx-color-neutral-700, #334155));
|
|
6282
6415
|
overflow: hidden;
|
|
6283
6416
|
}
|
|
6284
6417
|
|
|
@@ -6301,7 +6434,7 @@ export const helixGridItemStyles = css`
|
|
|
6301
6434
|
border: none;
|
|
6302
6435
|
border-radius: var(--hx-border-radius-sm, 0.25rem);
|
|
6303
6436
|
background: transparent;
|
|
6304
|
-
color: var(--hx-side-nav-toggle-color, var(--hx-color-neutral-400, #
|
|
6437
|
+
color: var(--hx-side-nav-toggle-color, var(--hx-color-neutral-400, #94a3b8));
|
|
6305
6438
|
cursor: pointer;
|
|
6306
6439
|
transition:
|
|
6307
6440
|
background-color var(--hx-transition-fast, 150ms) ease,
|
|
@@ -6313,7 +6446,7 @@ export const helixGridItemStyles = css`
|
|
|
6313
6446
|
--hx-overlay-white-10,
|
|
6314
6447
|
rgba(255, 255, 255, 0.1)
|
|
6315
6448
|
); /* fallback for browsers without color-mix() */
|
|
6316
|
-
color: var(--hx-color-neutral-100, #
|
|
6449
|
+
color: var(--hx-color-neutral-100, #f1f5f9);
|
|
6317
6450
|
}
|
|
6318
6451
|
|
|
6319
6452
|
@supports (color: color-mix(in srgb, red 50%, blue)) {
|
|
@@ -7530,9 +7663,12 @@ export const helixGridItemStyles = css`
|
|
|
7530
7663
|
display: inline-flex;
|
|
7531
7664
|
align-items: center;
|
|
7532
7665
|
justify-content: center;
|
|
7666
|
+
gap: var(--hx-space-2, 0.5rem);
|
|
7533
7667
|
position: relative;
|
|
7534
7668
|
flex-shrink: 0;
|
|
7535
7669
|
--_dot-color: var(--hx-status-indicator-color-default, var(--hx-color-neutral-300, #ced4da));
|
|
7670
|
+
/* Default size (md) — always defined so .indicator never collapses to 0x0 */
|
|
7671
|
+
--_indicator-size: var(--hx-status-indicator-size-md, var(--hx-space-3, 0.75rem));
|
|
7536
7672
|
}
|
|
7537
7673
|
|
|
7538
7674
|
.indicator {
|
|
@@ -7587,18 +7723,44 @@ export const helixGridItemStyles = css`
|
|
|
7587
7723
|
}
|
|
7588
7724
|
}
|
|
7589
7725
|
|
|
7726
|
+
/* ─── Visible label (part="label") ─── */
|
|
7727
|
+
|
|
7728
|
+
.indicator__label {
|
|
7729
|
+
font-size: var(
|
|
7730
|
+
--hx-status-indicator-label-font-size,
|
|
7731
|
+
var(--hx-font-size-sm, var(--hx-text-sm, 0.875rem))
|
|
7732
|
+
);
|
|
7733
|
+
color: var(--hx-status-indicator-label-color, var(--hx-color-neutral-700, #374151));
|
|
7734
|
+
line-height: 1;
|
|
7735
|
+
white-space: nowrap;
|
|
7736
|
+
}
|
|
7737
|
+
|
|
7738
|
+
/* ─── aria-live announcement region (visually hidden) ─── */
|
|
7739
|
+
|
|
7740
|
+
.indicator__live-region {
|
|
7741
|
+
position: absolute;
|
|
7742
|
+
width: 1px;
|
|
7743
|
+
height: 1px;
|
|
7744
|
+
padding: 0;
|
|
7745
|
+
margin: -1px;
|
|
7746
|
+
overflow: hidden;
|
|
7747
|
+
clip: rect(0, 0, 0, 0);
|
|
7748
|
+
white-space: nowrap;
|
|
7749
|
+
border: 0;
|
|
7750
|
+
}
|
|
7751
|
+
|
|
7590
7752
|
/* ─── Size Variants ─── */
|
|
7591
7753
|
|
|
7592
|
-
:host([size='sm']) {
|
|
7754
|
+
:host([hx-size='sm']) {
|
|
7593
7755
|
--_indicator-size: var(--hx-status-indicator-size-sm, var(--hx-space-2, 0.5rem));
|
|
7594
7756
|
}
|
|
7595
7757
|
|
|
7596
|
-
:host([size='md']) {
|
|
7758
|
+
:host([hx-size='md']) {
|
|
7597
7759
|
--_indicator-size: var(--hx-status-indicator-size-md, var(--hx-space-3, 0.75rem));
|
|
7598
7760
|
}
|
|
7599
7761
|
|
|
7600
|
-
:host([size='lg']) {
|
|
7601
|
-
--_indicator-size: var(--hx-status-indicator-size-lg, var(--hx-
|
|
7762
|
+
:host([hx-size='lg']) {
|
|
7763
|
+
--_indicator-size: var(--hx-status-indicator-size-lg, var(--hx-space-4, 1rem));
|
|
7602
7764
|
}
|
|
7603
7765
|
|
|
7604
7766
|
/* ─── Status Colors ─── */
|
package/dist/css/helix-core.css
CHANGED
|
@@ -110,11 +110,28 @@
|
|
|
110
110
|
}
|
|
111
111
|
|
|
112
112
|
/* P1-B: Windows High Contrast Mode — avatar background is stripped by the system,
|
|
113
|
-
leaving no visual boundary.
|
|
113
|
+
leaving no visual boundary. Restore a visible border, explicit foreground, and
|
|
114
|
+
background so the avatar container, initials, and fallback icon all remain
|
|
115
|
+
perceivable at any contrast level.
|
|
114
116
|
WCAG 1.4.11 Non-text Contrast (Level AA). */
|
|
115
117
|
@media (forced-colors: active) {
|
|
116
118
|
.avatar {
|
|
119
|
+
forced-color-adjust: none;
|
|
117
120
|
border: 2px solid ButtonText;
|
|
121
|
+
background-color: Canvas;
|
|
122
|
+
color: CanvasText;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
.avatar__initials {
|
|
126
|
+
color: CanvasText;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
.avatar__fallback-icon {
|
|
130
|
+
color: CanvasText;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
.avatar__image {
|
|
134
|
+
forced-color-adjust: auto;
|
|
118
135
|
}
|
|
119
136
|
}
|
|
120
137
|
/* ── hx-badge ── */
|
|
@@ -238,17 +255,21 @@
|
|
|
238
255
|
display: none;
|
|
239
256
|
}
|
|
240
257
|
|
|
258
|
+
.badge--dot slot[name='prefix'] {
|
|
259
|
+
display: none;
|
|
260
|
+
}
|
|
261
|
+
|
|
241
262
|
/* ─── Pulse Animation ─── */
|
|
242
263
|
|
|
243
264
|
@keyframes hx-badge-pulse {
|
|
244
265
|
0%,
|
|
245
266
|
100% {
|
|
246
267
|
opacity: 1;
|
|
247
|
-
box-shadow: 0 0 0
|
|
268
|
+
box-shadow: 0 0 0 2px var(--hx-badge-pulse-color, currentColor);
|
|
248
269
|
}
|
|
249
270
|
50% {
|
|
250
271
|
opacity: var(--hx-opacity-75, 0.75);
|
|
251
|
-
box-shadow: 0 0 0
|
|
272
|
+
box-shadow: 0 0 0 6px transparent;
|
|
252
273
|
}
|
|
253
274
|
}
|
|
254
275
|
|
|
@@ -553,6 +574,40 @@
|
|
|
553
574
|
.button__label {
|
|
554
575
|
flex: 1 1 auto;
|
|
555
576
|
}
|
|
577
|
+
|
|
578
|
+
/* ─── High Contrast Mode (forced-colors) ─── */
|
|
579
|
+
|
|
580
|
+
@media (forced-colors: active) {
|
|
581
|
+
.button {
|
|
582
|
+
/* Ensure button outline is visible in Windows High Contrast mode.
|
|
583
|
+
ButtonText/ButtonFace are system colors recognized by the browser. */
|
|
584
|
+
forced-color-adjust: none;
|
|
585
|
+
background-color: ButtonFace;
|
|
586
|
+
color: ButtonText;
|
|
587
|
+
border: 2px solid ButtonText;
|
|
588
|
+
}
|
|
589
|
+
|
|
590
|
+
.button:focus-visible {
|
|
591
|
+
outline: 3px solid Highlight;
|
|
592
|
+
outline-offset: 2px;
|
|
593
|
+
}
|
|
594
|
+
|
|
595
|
+
.button[disabled] {
|
|
596
|
+
background-color: ButtonFace;
|
|
597
|
+
color: GrayText;
|
|
598
|
+
border-color: GrayText;
|
|
599
|
+
opacity: 1;
|
|
600
|
+
}
|
|
601
|
+
|
|
602
|
+
:host([disabled]) {
|
|
603
|
+
opacity: 1;
|
|
604
|
+
}
|
|
605
|
+
|
|
606
|
+
.button--loading .button__spinner {
|
|
607
|
+
/* Ensure spinner is visible in HCM */
|
|
608
|
+
forced-color-adjust: auto;
|
|
609
|
+
}
|
|
610
|
+
}
|
|
556
611
|
/* ── hx-button-group ── */
|
|
557
612
|
:host {
|
|
558
613
|
display: inline-flex;
|