@helixui/library 1.1.2-next.4 → 1.1.2-next.5

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.
Files changed (40) hide show
  1. package/custom-elements.json +449 -513
  2. package/dist/components/hx-patient-banner/hx-patient-banner.d.ts +8 -0
  3. package/dist/components/hx-patient-banner/hx-patient-banner.d.ts.map +1 -1
  4. package/dist/components/hx-patient-banner/hx-patient-banner.styles.d.ts.map +1 -1
  5. package/dist/components/hx-patient-banner/index.js +1 -1
  6. package/dist/components/hx-phi-field/hx-phi-field.d.ts +27 -2
  7. package/dist/components/hx-phi-field/hx-phi-field.d.ts.map +1 -1
  8. package/dist/components/hx-phi-field/hx-phi-field.styles.d.ts.map +1 -1
  9. package/dist/components/hx-phi-field/index.js +1 -1
  10. package/dist/components/hx-select/hx-select.d.ts +1 -0
  11. package/dist/components/hx-select/hx-select.d.ts.map +1 -1
  12. package/dist/components/hx-select/hx-select.styles.d.ts.map +1 -1
  13. package/dist/components/hx-select/index.js +1 -1
  14. package/dist/components/hx-status-indicator/hx-status-indicator.d.ts +17 -1
  15. package/dist/components/hx-status-indicator/hx-status-indicator.d.ts.map +1 -1
  16. package/dist/components/hx-status-indicator/hx-status-indicator.styles.d.ts.map +1 -1
  17. package/dist/components/hx-status-indicator/index.js +1 -1
  18. package/dist/css/helix-all.css +144 -48
  19. package/dist/css/helix-feedback.css +33 -4
  20. package/dist/css/helix-forms.css +68 -41
  21. package/dist/css/hx-patient-banner.css +31 -3
  22. package/dist/css/hx-phi-field.css +12 -0
  23. package/dist/css/hx-select.css +68 -41
  24. package/dist/css/hx-status-indicator.css +33 -4
  25. package/dist/css/index.css +1 -1
  26. package/dist/css/manifest.json +11 -5
  27. package/dist/index.js +4 -4
  28. package/dist/shared/{hx-patient-banner-BoJHddAL.js → hx-patient-banner-wk4qWmsH.js} +88 -47
  29. package/dist/shared/hx-patient-banner-wk4qWmsH.js.map +1 -0
  30. package/dist/shared/{hx-phi-field-EDWna59z.js → hx-phi-field-DX9z3nu0.js} +67 -33
  31. package/dist/shared/hx-phi-field-DX9z3nu0.js.map +1 -0
  32. package/dist/shared/{hx-select-4-nHL0vd.js → hx-select-BWzxWZs_.js} +82 -55
  33. package/dist/shared/hx-select-BWzxWZs_.js.map +1 -0
  34. package/dist/shared/{hx-status-indicator-4ClvA5mU.js → hx-status-indicator-Dl3Y34mc.js} +76 -35
  35. package/dist/shared/hx-status-indicator-Dl3Y34mc.js.map +1 -0
  36. package/package.json +2 -2
  37. package/dist/shared/hx-patient-banner-BoJHddAL.js.map +0 -1
  38. package/dist/shared/hx-phi-field-EDWna59z.js.map +0 -1
  39. package/dist/shared/hx-select-4-nHL0vd.js.map +0 -1
  40. package/dist/shared/hx-status-indicator-4ClvA5mU.js.map +0 -1
@@ -23,6 +23,7 @@ import { LitElement, PropertyValues } from 'lit';
23
23
  * @csspart field - An individual field container (applied to all field wrappers).
24
24
  * @csspart field-label - The field label element.
25
25
  * @csspart field-value - The field value slot wrapper.
26
+ * @csspart violation-message - The visually-hidden identifier rule violation status message.
26
27
  *
27
28
  * @fires {CustomEvent<PatientIdentifierRuleViolationDetail>} hx-identifier-rule-violation - Fired when fewer than 2 identifier slots are populated and enforce-identifier-rule is true.
28
29
  *
@@ -36,6 +37,7 @@ import { LitElement, PropertyValues } from 'lit';
36
37
  * @cssprop [--hx-patient-banner-value-color=var(--hx-color-neutral-900,#111827)] - Field value color.
37
38
  * @cssprop [--hx-patient-banner-value-font-size=var(--hx-font-size-sm,0.875rem)] - Field value font size.
38
39
  * @cssprop [--hx-patient-banner-photo-size=var(--hx-space-10,2.5rem)] - Photo area size.
40
+ * @cssprop [--hx-patient-banner-photo-bg=var(--hx-color-neutral-200,#e5e7eb)] - Photo area background color when empty.
39
41
  */
40
42
  export declare class HelixPatientBanner extends LitElement {
41
43
  static styles: import('lit').CSSResult[];
@@ -81,9 +83,15 @@ export declare class HelixPatientBanner extends LitElement {
81
83
  * @attr enforce-identifier-rule
82
84
  */
83
85
  enforceIdentifierRule: boolean;
86
+ /** @internal */
84
87
  private _identifierCount;
88
+ /** @internal */
89
+ private _isViolating;
90
+ /** @internal */
85
91
  private _nameSlot;
92
+ /** @internal */
86
93
  private _mrnSlot;
94
+ /** @internal */
87
95
  private _dobSlot;
88
96
  connectedCallback(): void;
89
97
  protected updated(changedProperties: PropertyValues<this>): void;
@@ -1 +1 @@
1
- {"version":3,"file":"hx-patient-banner.d.ts","sourceRoot":"","sources":["../../../src/components/hx-patient-banner/hx-patient-banner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAQ,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAK5D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,qBACa,kBAAmB,SAAQ,UAAU;IAChD,OAAgB,MAAM,4BAA2C;IAIjE;;;OAGG;IAEH,SAAS,EAAE,MAAM,CAAM;IAEvB;;;OAGG;IAEH,YAAY,EAAE,MAAM,CAA4B;IAEhD;;;OAGG;IAEH,SAAS,EAAE,MAAM,CAAkB;IAEnC;;;OAGG;IAEH,QAAQ,EAAE,MAAM,CAAS;IAEzB;;;OAGG;IAEH,QAAQ,EAAE,MAAM,CAAmB;IAEnC;;;OAGG;IAEH,cAAc,EAAE,MAAM,CAAe;IAErC;;;OAGG;IAEH,eAAe,EAAE,MAAM,CAAiB;IAExC;;;;;OAKG;IASH,qBAAqB,EAAE,OAAO,CAAQ;IAI7B,OAAO,CAAC,gBAAgB,CAAa;IAIlB,OAAO,CAAC,SAAS,CAAmB;IACrC,OAAO,CAAC,QAAQ,CAAmB;IACnC,OAAO,CAAC,QAAQ,CAAmB;IAIrD,iBAAiB,IAAI,IAAI;cAMf,OAAO,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAczE,OAAO,CAAC,0BAA0B;IAalC,OAAO,CAAC,oBAAoB;IAwB5B,OAAO,CAAC,iBAAiB;IAMhB,MAAM;CA8ChB;AAED,MAAM,WAAW,oCAAoC;IACnD,oBAAoB,EAAE,MAAM,CAAC;IAC7B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,mBAAmB,EAAE,kBAAkB,CAAC;KACzC;CACF"}
1
+ {"version":3,"file":"hx-patient-banner.d.ts","sourceRoot":"","sources":["../../../src/components/hx-patient-banner/hx-patient-banner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAiB,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAKrE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,qBACa,kBAAmB,SAAQ,UAAU;IAChD,OAAgB,MAAM,4BAA2C;IAIjE;;;OAGG;IAEH,SAAS,EAAE,MAAM,CAAM;IAEvB;;;OAGG;IAEH,YAAY,EAAE,MAAM,CAA4B;IAEhD;;;OAGG;IAEH,SAAS,EAAE,MAAM,CAAkB;IAEnC;;;OAGG;IAEH,QAAQ,EAAE,MAAM,CAAS;IAEzB;;;OAGG;IAEH,QAAQ,EAAE,MAAM,CAAmB;IAEnC;;;OAGG;IAEH,cAAc,EAAE,MAAM,CAAe;IAErC;;;OAGG;IAEH,eAAe,EAAE,MAAM,CAAiB;IAExC;;;;;OAKG;IASH,qBAAqB,EAAE,OAAO,CAAQ;IAItC,gBAAgB;IACP,OAAO,CAAC,gBAAgB,CAAa;IAE9C,gBAAgB;IACP,OAAO,CAAC,YAAY,CAAkB;IAI/C,gBAAgB;IACY,OAAO,CAAC,SAAS,CAAmB;IAEhE,gBAAgB;IACW,OAAO,CAAC,QAAQ,CAAmB;IAE9D,gBAAgB;IACW,OAAO,CAAC,QAAQ,CAAmB;IAIrD,iBAAiB,IAAI,IAAI;cAMf,OAAO,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAczE,OAAO,CAAC,0BAA0B;IAalC,OAAO,CAAC,oBAAoB;IA0B5B,OAAO,CAAC,iBAAiB;IAMhB,MAAM;CA6DhB;AAED,MAAM,WAAW,oCAAoC;IACnD,oBAAoB,EAAE,MAAM,CAAC;IAC7B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,mBAAmB,EAAE,kBAAkB,CAAC;KACzC;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"hx-patient-banner.styles.d.ts","sourceRoot":"","sources":["../../../src/components/hx-patient-banner/hx-patient-banner.styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,wBAAwB,yBA+GpC,CAAC"}
1
+ {"version":3,"file":"hx-patient-banner.styles.d.ts","sourceRoot":"","sources":["../../../src/components/hx-patient-banner/hx-patient-banner.styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,wBAAwB,yBA2IpC,CAAC"}
@@ -1,4 +1,4 @@
1
- import { H as n } from "../../shared/hx-patient-banner-BoJHddAL.js";
1
+ import { H as n } from "../../shared/hx-patient-banner-wk4qWmsH.js";
2
2
  export {
3
3
  n as HelixPatientBanner
4
4
  };
@@ -12,13 +12,14 @@ import { LitElement, TemplateResult } from 'lit';
12
12
  * @csspart value - The value display span (masked or revealed).
13
13
  * @csspart toggle - The reveal/hide toggle button.
14
14
  *
15
- * @fires {CustomEvent<PhiAccessEventDetail>} hx-phi-access - Fired on reveal, hide, and clipboard auto-clear.
15
+ * @fires {CustomEvent<PhiAccessEventDetail>} hx-phi-access - Fired on reveal, hide, and clipboard-clear actions.
16
16
  *
17
17
  * @cssprop [--hx-phi-field-font-family=var(--hx-font-family-mono,monospace)] - Font family for the masked value.
18
18
  * @cssprop [--hx-phi-field-value-color=var(--hx-color-neutral-900,#111827)] - Value text color.
19
19
  * @cssprop [--hx-phi-field-masked-color=var(--hx-color-neutral-500,#6b7280)] - Masked value text color.
20
20
  * @cssprop [--hx-phi-field-toggle-color=var(--hx-color-primary-500,#2563eb)] - Toggle button color.
21
21
  * @cssprop [--hx-phi-field-focus-ring-color=var(--hx-focus-ring-color,var(--hx-color-primary-500,#2563eb))] - Focus ring color.
22
+ * @cssprop [--hx-phi-field-disabled-opacity=var(--hx-opacity-50,0.5)] - Opacity applied when the field is disabled.
22
23
  */
23
24
  export declare class HelixPhiField extends LitElement {
24
25
  static styles: import('lit').CSSResult[];
@@ -43,24 +44,48 @@ export declare class HelixPhiField extends LitElement {
43
44
  * @attr clipboard-timeout
44
45
  */
45
46
  clipboardTimeout: number;
47
+ /**
48
+ * Accessible label describing the PHI field. Used as a prefix in screen reader
49
+ * announcements (e.g., "Social Security Number is masked").
50
+ * @attr label
51
+ */
52
+ label: string;
53
+ /**
54
+ * When set, disables all interaction with the field and prevents reveal.
55
+ * @attr disabled
56
+ * @reflect
57
+ */
58
+ disabled: boolean;
59
+ /** @internal */
46
60
  private _masked;
61
+ /** @internal */
47
62
  private _clipboardTimer;
48
63
  connectedCallback(): void;
49
64
  disconnectedCallback(): void;
65
+ /** @internal */
50
66
  private _cancelClipboardTimer;
67
+ /** @internal */
51
68
  private _scheduleClipboardClear;
69
+ /** @internal */
52
70
  private _clearClipboard;
71
+ /** @internal */
53
72
  private _getMaskedValue;
73
+ /** @internal */
54
74
  private _handleToggle;
75
+ /** @internal */
55
76
  private _handleCopy;
77
+ /** @internal */
56
78
  private _handlePaste;
79
+ /** @internal */
57
80
  private _renderEyeIcon;
81
+ /** @internal */
58
82
  private _renderEyeOffIcon;
59
83
  render(): TemplateResult<1>;
60
84
  }
61
85
  export interface PhiAccessEventDetail {
62
86
  fieldId: string;
63
- action: 'reveal' | 'hide';
87
+ /** The action that triggered the audit event. */
88
+ action: 'reveal' | 'hide' | 'clipboard-clear';
64
89
  timestamp: string;
65
90
  fieldType: 'ssn' | 'mrn' | 'dob' | 'insurance';
66
91
  }
@@ -1 +1 @@
1
- {"version":3,"file":"hx-phi-field.d.ts","sourceRoot":"","sources":["../../../src/components/hx-phi-field/hx-phi-field.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAQ,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAK5D;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBACa,aAAc,SAAQ,UAAU;IAC3C,OAAgB,MAAM,4BAAsC;IAI5D;;;OAGG;IAEH,IAAI,EAAE,MAAM,CAAM;IAElB;;;OAGG;IAEH,SAAS,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,WAAW,CAAS;IAEvD;;;OAGG;IAEH,OAAO,EAAE,MAAM,CAAM;IAErB;;;;OAIG;IAEH,gBAAgB,EAAE,MAAM,CAAS;IAIxB,OAAO,CAAC,OAAO,CAAQ;IAEhC,OAAO,CAAC,eAAe,CAA8C;IAI5D,iBAAiB,IAAI,IAAI;IAMzB,oBAAoB,IAAI,IAAI;IAOrC,OAAO,CAAC,qBAAqB;IAO7B,OAAO,CAAC,uBAAuB;IAO/B,OAAO,CAAC,eAAe;IAsBvB,OAAO,CAAC,eAAe;IAuDvB,OAAO,CAAC,aAAa;IA0BrB,OAAO,CAAC,WAAW;IAMnB,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,cAAc;IAkBtB,OAAO,CAAC,iBAAiB;IAqBhB,MAAM;CA8BhB;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,QAAQ,GAAG,MAAM,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,WAAW,CAAC;CAChD;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,cAAc,EAAE,aAAa,CAAC;KAC/B;CACF"}
1
+ {"version":3,"file":"hx-phi-field.d.ts","sourceRoot":"","sources":["../../../src/components/hx-phi-field/hx-phi-field.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAQ,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAK5D;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBACa,aAAc,SAAQ,UAAU;IAC3C,OAAgB,MAAM,4BAAsC;IAI5D;;;OAGG;IAEH,IAAI,EAAE,MAAM,CAAM;IAElB;;;OAGG;IAEH,SAAS,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,WAAW,CAAS;IAEvD;;;OAGG;IAEH,OAAO,EAAE,MAAM,CAAM;IAErB;;;;OAIG;IAEH,gBAAgB,EAAE,MAAM,CAAS;IAEjC;;;;OAIG;IAEH,KAAK,EAAE,MAAM,CAAM;IAEnB;;;;OAIG;IAEH,QAAQ,EAAE,OAAO,CAAS;IAI1B,gBAAgB;IACP,OAAO,CAAC,OAAO,CAAQ;IAEhC,gBAAgB;IAChB,OAAO,CAAC,eAAe,CAA8C;IAI5D,iBAAiB,IAAI,IAAI;IAMzB,oBAAoB,IAAI,IAAI;IAOrC,gBAAgB;IAChB,OAAO,CAAC,qBAAqB;IAO7B,gBAAgB;IAChB,OAAO,CAAC,uBAAuB;IAO/B,gBAAgB;IAChB,OAAO,CAAC,eAAe;IAsBvB,gBAAgB;IAChB,OAAO,CAAC,eAAe;IAuDvB,gBAAgB;IAChB,OAAO,CAAC,aAAa;IA4BrB,gBAAgB;IAChB,OAAO,CAAC,WAAW;IAMnB,gBAAgB;IAChB,OAAO,CAAC,YAAY;IAQpB,gBAAgB;IAChB,OAAO,CAAC,cAAc;IAkBtB,gBAAgB;IAChB,OAAO,CAAC,iBAAiB;IAqBhB,MAAM;CAsChB;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,iDAAiD;IACjD,MAAM,EAAE,QAAQ,GAAG,MAAM,GAAG,iBAAiB,CAAC;IAC9C,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,WAAW,CAAC;CAChD;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,cAAc,EAAE,aAAa,CAAC;KAC/B;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"hx-phi-field.styles.d.ts","sourceRoot":"","sources":["../../../src/components/hx-phi-field/hx-phi-field.styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,mBAAmB,yBAqF/B,CAAC"}
1
+ {"version":3,"file":"hx-phi-field.styles.d.ts","sourceRoot":"","sources":["../../../src/components/hx-phi-field/hx-phi-field.styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,mBAAmB,yBAiG/B,CAAC"}
@@ -1,4 +1,4 @@
1
- import { H as l } from "../../shared/hx-phi-field-EDWna59z.js";
1
+ import { H as l } from "../../shared/hx-phi-field-DX9z3nu0.js";
2
2
  export {
3
3
  l as HelixPhiField
4
4
  };
@@ -47,6 +47,7 @@ import { HelixElement } from '../../base/index.js';
47
47
  * @cssprop [--hx-select-error-color=var(--hx-color-error-500)] - Error state color.
48
48
  * @cssprop [--hx-select-label-color=var(--hx-color-neutral-700)] - Label text color.
49
49
  * @cssprop [--hx-select-chevron-color=var(--hx-color-neutral-500)] - Chevron indicator color.
50
+ * @cssprop [--hx-select-chevron-size=0.5rem] - Chevron indicator size (width/height base unit).
50
51
  * @cssprop [--hx-select-listbox-bg=var(--hx-color-neutral-0)] - Listbox panel background color.
51
52
  * @cssprop [--hx-select-option-hover-bg=var(--hx-color-primary-50)] - Option hover background color.
52
53
  * @cssprop [--hx-select-option-selected-bg=var(--hx-color-primary-100)] - Selected option background color.
@@ -1 +1 @@
1
- {"version":3,"file":"hx-select.d.ts","sourceRoot":"","sources":["../../../src/components/hx-select/hx-select.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hx-select.d.ts","sourceRoot":"","sources":["../../../src/components/hx-select/hx-select.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"hx-select.styles.d.ts","sourceRoot":"","sources":["../../../src/components/hx-select/hx-select.styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,iBAAiB,yBA4Q7B,CAAC"}
1
+ {"version":3,"file":"hx-select.styles.d.ts","sourceRoot":"","sources":["../../../src/components/hx-select/hx-select.styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,iBAAiB,yBAuS7B,CAAC"}
@@ -1,4 +1,4 @@
1
- import { H as o } from "../../shared/hx-select-4-nHL0vd.js";
1
+ import { H as o } from "../../shared/hx-select-BWzxWZs_.js";
2
2
  export {
3
3
  o as HelixSelect
4
4
  };
@@ -3,7 +3,11 @@ export type StatusIndicatorStatus = 'online' | 'offline' | 'away' | 'busy' | 'un
3
3
  export type StatusIndicatorSize = 'sm' | 'md' | 'lg';
4
4
  /**
5
5
  * A colored dot/badge indicating system or entity health status.
6
- * Purely visual no slots. Supports an animated pulse ring.
6
+ * Supports an animated pulse ring and an optional visible text label.
7
+ *
8
+ * Status is conveyed through color AND an `aria-label` on the host element.
9
+ * When `show-label` is set, a visible text label is rendered inside the component,
10
+ * ensuring status is not communicated by color alone (WCAG 1.4.1 — Use of Color).
7
11
  *
8
12
  * Uses `role="img"` with an auto-generated `aria-label` (e.g. "Status: Online").
9
13
  * When used decoratively alongside visible text that conveys the same status information
@@ -23,6 +27,7 @@ export type StatusIndicatorSize = 'sm' | 'md' | 'lg';
23
27
  *
24
28
  * @csspart base - The dot element.
25
29
  * @csspart pulse-ring - The animated pulse ring element.
30
+ * @csspart label - The visible status label text element (visible when show-label is set).
26
31
  *
27
32
  * @cssprop [--hx-status-indicator-color-online] - Override color for the "online" status dot.
28
33
  * @cssprop [--hx-status-indicator-color-offline] - Override color for the "offline" status dot.
@@ -35,6 +40,8 @@ export type StatusIndicatorSize = 'sm' | 'md' | 'lg';
35
40
  * @cssprop [--hx-status-indicator-pulse-duration] - Override pulse animation duration.
36
41
  * @cssprop [--hx-status-indicator-pulse-scale] - Override pulse animation max scale.
37
42
  * @cssprop [--hx-status-indicator-pulse-color] - Override pulse ring color independently from dot color.
43
+ * @cssprop [--hx-status-indicator-label-color] - Override label text color.
44
+ * @cssprop [--hx-status-indicator-label-font-size] - Override label font size.
38
45
  */
39
46
  export declare class HelixStatusIndicator extends LitElement {
40
47
  static styles: import('lit').CSSResult[];
@@ -63,8 +70,17 @@ export declare class HelixStatusIndicator extends LitElement {
63
70
  * @attr label
64
71
  */
65
72
  label: string;
73
+ /**
74
+ * When true, renders a visible text label next to the dot conveying the status.
75
+ * Use this to satisfy WCAG 1.4.1 (Use of Color) when the indicator is not
76
+ * accompanied by other visible text that conveys the same status information.
77
+ * @attr show-label
78
+ */
79
+ showLabel: boolean;
66
80
  /** @internal */
67
81
  private _getLabel;
82
+ /** @internal */
83
+ private _getStatusText;
68
84
  connectedCallback(): void;
69
85
  updated(changedProperties: PropertyValues<this>): void;
70
86
  render(): import('lit').TemplateResult<1>;
@@ -1 +1 @@
1
- {"version":3,"file":"hx-status-indicator.d.ts","sourceRoot":"","sources":["../../../src/components/hx-status-indicator/hx-status-indicator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAQ,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAM5D,MAAM,MAAM,qBAAqB,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;AACvF,MAAM,MAAM,mBAAmB,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAUrD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,qBACa,oBAAqB,SAAQ,UAAU;IAClD,OAAgB,MAAM,4BAA6C;IAEnE;;;OAGG;IAEH,MAAM,EAAE,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAa;IAEvE;;;OAGG;IAEH,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAQ;IAEhC;;;;;;;OAOG;IAEH,KAAK,UAAS;IAEd;;;;OAIG;IAEH,KAAK,SAAM;IAEX,gBAAgB;IAChB,OAAO,CAAC,SAAS;IAQR,iBAAiB,IAAI,IAAI;IAkBzB,OAAO,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAQtD,MAAM;CAQhB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,qBAAqB,EAAE,oBAAoB,CAAC;KAC7C;CACF"}
1
+ {"version":3,"file":"hx-status-indicator.d.ts","sourceRoot":"","sources":["../../../src/components/hx-status-indicator/hx-status-indicator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAiB,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAMrE,MAAM,MAAM,qBAAqB,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;AACvF,MAAM,MAAM,mBAAmB,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAUrD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,qBACa,oBAAqB,SAAQ,UAAU;IAClD,OAAgB,MAAM,4BAA6C;IAEnE;;;OAGG;IAEH,MAAM,EAAE,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAa;IAEvE;;;OAGG;IAEH,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAQ;IAEhC;;;;;;;OAOG;IAEH,KAAK,UAAS;IAEd;;;;OAIG;IAEH,KAAK,SAAM;IAEX;;;;;OAKG;IAEH,SAAS,UAAS;IAElB,gBAAgB;IAChB,OAAO,CAAC,SAAS;IAMjB,gBAAgB;IAChB,OAAO,CAAC,cAAc;IAMb,iBAAiB,IAAI,IAAI;IAkBzB,OAAO,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAQtD,MAAM;CAehB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,qBAAqB,EAAE,oBAAoB,CAAC;KAC7C;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"hx-status-indicator.styles.d.ts","sourceRoot":"","sources":["../../../src/components/hx-status-indicator/hx-status-indicator.styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,0BAA0B,yBAiGtC,CAAC"}
1
+ {"version":3,"file":"hx-status-indicator.styles.d.ts","sourceRoot":"","sources":["../../../src/components/hx-status-indicator/hx-status-indicator.styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,0BAA0B,yBA8HtC,CAAC"}
@@ -1,4 +1,4 @@
1
- import { H as o } from "../../shared/hx-status-indicator-4ClvA5mU.js";
1
+ import { H as o } from "../../shared/hx-status-indicator-Dl3Y34mc.js";
2
2
  export {
3
3
  o as HelixStatusIndicator
4
4
  };
@@ -5283,6 +5283,7 @@ export const helixGridItemStyles = css`
5283
5283
  --_value-color: var(--hx-patient-banner-value-color, var(--hx-color-neutral-900, #111827));
5284
5284
  --_value-font-size: var(--hx-patient-banner-value-font-size, var(--hx-font-size-sm, 0.875rem));
5285
5285
  --_photo-size: var(--hx-patient-banner-photo-size, var(--hx-space-10, 2.5rem));
5286
+ --_photo-bg: var(--hx-patient-banner-photo-bg, var(--hx-color-neutral-200, #e5e7eb));
5286
5287
  }
5287
5288
 
5288
5289
  * {
@@ -5300,6 +5301,7 @@ export const helixGridItemStyles = css`
5300
5301
  border-bottom: var(--hx-border-width-thin, 1px) solid var(--_border-color);
5301
5302
  font-family: var(--_font-family);
5302
5303
  width: 100%;
5304
+ position: relative;
5303
5305
  }
5304
5306
 
5305
5307
  /* ─── Photo Area ─── */
@@ -5308,12 +5310,15 @@ export const helixGridItemStyles = css`
5308
5310
  flex-shrink: 0;
5309
5311
  width: var(--_photo-size);
5310
5312
  height: var(--_photo-size);
5313
+ /* Minimum 44x44px touch target for interactive photo content. */
5314
+ min-width: 44px;
5315
+ min-height: 44px;
5311
5316
  border-radius: var(--hx-border-radius-full, 9999px);
5312
5317
  overflow: hidden;
5313
5318
  display: flex;
5314
5319
  align-items: center;
5315
5320
  justify-content: center;
5316
- background-color: var(--hx-color-neutral-200, #e5e7eb);
5321
+ background-color: var(--_photo-bg);
5317
5322
  }
5318
5323
 
5319
5324
  /* ─── Fields Grid ─── */
@@ -5359,9 +5364,8 @@ export const helixGridItemStyles = css`
5359
5364
  :host([aria-invalid='true']) .banner {
5360
5365
  border-bottom-color: var(--hx-color-error-400, #f87171);
5361
5366
  background-color: var(--hx-color-error-50, #fef2f2);
5362
- /* Darken label color to maintain 4.5:1 contrast on error-50 background */
5367
+ /* Darken label color to maintain 4.5:1 contrast on error-50 background. */
5363
5368
  --_label-color: var(--hx-patient-banner-label-color, var(--hx-color-neutral-700, #374151));
5364
- position: relative;
5365
5369
  }
5366
5370
 
5367
5371
  :host([aria-invalid='true']) .banner::before {
@@ -5375,6 +5379,30 @@ export const helixGridItemStyles = css`
5375
5379
  background-color: var(--hx-color-error-500, #ef4444);
5376
5380
  border-radius: 0;
5377
5381
  }
5382
+
5383
+ /* ─── Visually-hidden violation live region ─── */
5384
+ /* Announces identifier rule violations to screen readers without visible text. */
5385
+
5386
+ .violation-message {
5387
+ position: absolute;
5388
+ width: 1px;
5389
+ height: 1px;
5390
+ padding: 0;
5391
+ margin: -1px;
5392
+ overflow: hidden;
5393
+ clip: rect(0, 0, 0, 0);
5394
+ white-space: nowrap;
5395
+ border-width: 0;
5396
+ }
5397
+
5398
+ /* ─── Motion reduction ─── */
5399
+
5400
+ @media (prefers-reduced-motion: reduce) {
5401
+ * {
5402
+ transition: none !important;
5403
+ animation: none !important;
5404
+ }
5405
+ }
5378
5406
  /* ── hx-phi-field ── */
5379
5407
  :host {
5380
5408
  display: inline-flex;
@@ -5453,6 +5481,18 @@ export const helixGridItemStyles = css`
5453
5481
  pointer-events: none;
5454
5482
  }
5455
5483
 
5484
+ /* ─── Disabled State ─── */
5485
+
5486
+ :host([disabled]) {
5487
+ opacity: var(--hx-phi-field-disabled-opacity, var(--hx-opacity-50, 0.5));
5488
+ pointer-events: none;
5489
+ cursor: not-allowed;
5490
+ }
5491
+
5492
+ .phi-field--disabled .phi-field__toggle {
5493
+ cursor: not-allowed;
5494
+ }
5495
+
5456
5496
  /* ─── Reduced Motion ─── */
5457
5497
 
5458
5498
  @media (prefers-reduced-motion: reduce) {
@@ -6001,8 +6041,45 @@ export const helixGridItemStyles = css`
6001
6041
  }
6002
6042
  }
6003
6043
  /* ── hx-select ── */
6004
- :host {
6044
+ /* ─── 3-tier token cascade: component → semantic → hardcoded fallback ─── */
6045
+ :host {
6005
6046
  display: block;
6047
+
6048
+ /* Background & foreground */
6049
+ --_bg: var(--hx-select-bg, var(--hx-color-neutral-0, #ffffff));
6050
+ --_color: var(--hx-select-color, var(--hx-color-neutral-800, #212529));
6051
+ --_placeholder-color: var(--hx-select-placeholder-color, var(--hx-color-neutral-400, #adb5bd));
6052
+
6053
+ /* Label */
6054
+ --_label-color: var(--hx-select-label-color, var(--hx-color-neutral-700, #343a40));
6055
+
6056
+ /* Border */
6057
+ --_border-color: var(--hx-select-border-color, var(--hx-color-neutral-300, #ced4da));
6058
+ --_border-radius: var(--hx-select-border-radius, var(--hx-border-radius-md, 0.375rem));
6059
+
6060
+ /* Focus ring */
6061
+ --_focus-ring-color: var(
6062
+ --hx-select-focus-ring-color,
6063
+ var(--hx-focus-ring-color, var(--hx-color-primary-400, #60a5fa))
6064
+ );
6065
+
6066
+ /* Error */
6067
+ --_error-color: var(--hx-select-error-color, var(--hx-color-error-500, #dc3545));
6068
+
6069
+ /* Chevron */
6070
+ --_chevron-color: var(--hx-select-chevron-color, var(--hx-color-neutral-500, #6c757d));
6071
+ --_chevron-size: var(--hx-select-chevron-size, 0.5rem);
6072
+
6073
+ /* Listbox */
6074
+ --_listbox-bg: var(--hx-select-listbox-bg, var(--hx-color-neutral-0, #ffffff));
6075
+ --_option-hover-bg: var(--hx-select-option-hover-bg, var(--hx-color-primary-50, #eff6ff));
6076
+ --_option-selected-bg: var(
6077
+ --hx-select-option-selected-bg,
6078
+ var(--hx-color-primary-100, #dbeafe)
6079
+ );
6080
+
6081
+ /* Typography */
6082
+ --_font-family: var(--hx-select-font-family, var(--hx-font-family-sans, sans-serif));
6006
6083
  }
6007
6084
 
6008
6085
  :host([disabled]) {
@@ -6018,7 +6095,7 @@ export const helixGridItemStyles = css`
6018
6095
  display: flex;
6019
6096
  flex-direction: column;
6020
6097
  gap: var(--hx-space-1, 0.25rem);
6021
- font-family: var(--hx-select-font-family, var(--hx-font-family-sans, sans-serif));
6098
+ font-family: var(--_font-family);
6022
6099
  position: relative;
6023
6100
  }
6024
6101
 
@@ -6028,7 +6105,7 @@ export const helixGridItemStyles = css`
6028
6105
  gap: var(--hx-space-1, 0.25rem);
6029
6106
  font-size: var(--hx-font-size-sm, 0.875rem);
6030
6107
  font-weight: var(--hx-font-weight-medium, 500);
6031
- color: var(--hx-select-label-color, var(--hx-color-neutral-700, #343a40));
6108
+ color: var(--_label-color);
6032
6109
  line-height: var(--hx-line-height-normal, 1.5);
6033
6110
  }
6034
6111
 
@@ -6049,11 +6126,10 @@ export const helixGridItemStyles = css`
6049
6126
  gap: var(--hx-space-2, 0.5rem);
6050
6127
  width: 100%;
6051
6128
  min-height: var(--hx-input-height-md, var(--hx-size-10, 2.5rem));
6052
- border: var(--hx-border-width-thin, 1px) solid
6053
- var(--hx-select-border-color, var(--hx-color-neutral-300, #ced4da));
6054
- border-radius: var(--hx-select-border-radius, var(--hx-border-radius-md, 0.375rem));
6055
- background-color: var(--hx-select-bg, var(--hx-color-neutral-0, #ffffff));
6056
- color: var(--hx-select-color, var(--hx-color-neutral-800, #212529));
6129
+ border: var(--hx-border-width-thin, 1px) solid var(--_border-color);
6130
+ border-radius: var(--_border-radius);
6131
+ background-color: var(--_bg);
6132
+ color: var(--_color);
6057
6133
  font-family: inherit;
6058
6134
  font-size: var(--hx-font-size-md, 1rem);
6059
6135
  line-height: var(--hx-line-height-normal, 1.5);
@@ -6068,18 +6144,11 @@ export const helixGridItemStyles = css`
6068
6144
 
6069
6145
  .field__trigger:focus,
6070
6146
  .field__trigger:focus-visible {
6071
- border-color: var(
6072
- --hx-select-focus-ring-color,
6073
- var(--hx-focus-ring-color, var(--hx-color-primary-400, #60a5fa))
6074
- );
6147
+ border-color: var(--_focus-ring-color);
6075
6148
  box-shadow: 0 0 0 var(--hx-focus-ring-width, 2px)
6076
6149
  color-mix(
6077
6150
  in srgb,
6078
- var(
6079
- --hx-select-focus-ring-color,
6080
- var(--hx-focus-ring-color, var(--hx-color-primary-400, #60a5fa))
6081
- )
6082
- calc(var(--hx-focus-ring-opacity, 0.25) * 100%),
6151
+ var(--_focus-ring-color) calc(var(--hx-focus-ring-opacity, 0.25) * 100%),
6083
6152
  transparent
6084
6153
  );
6085
6154
  }
@@ -6109,15 +6178,15 @@ export const helixGridItemStyles = css`
6109
6178
  }
6110
6179
 
6111
6180
  .field__trigger--placeholder .field__trigger-value {
6112
- color: var(--hx-select-placeholder-color, var(--hx-color-neutral-400, #adb5bd));
6181
+ color: var(--_placeholder-color);
6113
6182
  }
6114
6183
 
6115
6184
  .field__chevron {
6116
6185
  flex-shrink: 0;
6117
- width: 12px;
6118
- height: 8px;
6186
+ width: calc(var(--_chevron-size) * 1.5);
6187
+ height: var(--_chevron-size);
6119
6188
  position: relative;
6120
- color: var(--hx-select-chevron-color, var(--hx-color-neutral-500, #6c757d));
6189
+ color: var(--_chevron-color);
6121
6190
  pointer-events: none;
6122
6191
  transition: transform var(--hx-transition-fast, 150ms ease);
6123
6192
  }
@@ -6126,11 +6195,11 @@ export const helixGridItemStyles = css`
6126
6195
  content: '';
6127
6196
  position: absolute;
6128
6197
  top: 0;
6129
- left: 2px;
6130
- width: 7px;
6131
- height: 7px;
6132
- border-inline-end: 1.5px solid currentColor;
6133
- border-bottom: 1.5px solid currentColor;
6198
+ left: var(--hx-space-px, 2px);
6199
+ width: var(--_chevron-size);
6200
+ height: var(--_chevron-size);
6201
+ border-inline-end: var(--hx-border-width-thin, 1.5px) solid currentColor;
6202
+ border-bottom: var(--hx-border-width-thin, 1.5px) solid currentColor;
6134
6203
  transform: rotate(45deg);
6135
6204
  }
6136
6205
 
@@ -6139,17 +6208,16 @@ export const helixGridItemStyles = css`
6139
6208
  }
6140
6209
 
6141
6210
  .field--error .field__trigger {
6142
- border-color: var(--hx-select-error-color, var(--hx-color-error-500, #dc3545));
6211
+ border-color: var(--_error-color);
6143
6212
  }
6144
6213
 
6145
6214
  .field--error .field__trigger:focus,
6146
6215
  .field--error .field__trigger:focus-visible {
6147
- border-color: var(--hx-select-error-color, var(--hx-color-error-500, #dc3545));
6216
+ border-color: var(--_error-color);
6148
6217
  box-shadow: 0 0 0 var(--hx-focus-ring-width, 2px)
6149
6218
  color-mix(
6150
6219
  in srgb,
6151
- var(--hx-select-error-color, var(--hx-color-error-500, #dc3545))
6152
- calc(var(--hx-focus-ring-opacity, 0.25) * 100%),
6220
+ var(--_error-color) calc(var(--hx-focus-ring-opacity, 0.25) * 100%),
6153
6221
  transparent
6154
6222
  );
6155
6223
  }
@@ -6160,10 +6228,9 @@ export const helixGridItemStyles = css`
6160
6228
  left: 0;
6161
6229
  right: 0;
6162
6230
  z-index: var(--hx-z-index-dropdown, 1000);
6163
- background-color: var(--hx-select-listbox-bg, var(--hx-color-neutral-0, #ffffff));
6164
- border: var(--hx-border-width-thin, 1px) solid
6165
- var(--hx-select-border-color, var(--hx-color-neutral-300, #ced4da));
6166
- border-radius: var(--hx-select-border-radius, var(--hx-border-radius-md, 0.375rem));
6231
+ background-color: var(--_listbox-bg);
6232
+ border: var(--hx-border-width-thin, 1px) solid var(--_border-color);
6233
+ border-radius: var(--_border-radius);
6167
6234
  box-shadow: var(
6168
6235
  --hx-select-listbox-shadow,
6169
6236
  0 4px 16px var(--hx-overlay-neutral-12, rgba(13, 17, 23, 0.12))
@@ -6190,7 +6257,7 @@ export const helixGridItemStyles = css`
6190
6257
  gap: var(--hx-space-2, 0.5rem);
6191
6258
  padding: var(--hx-space-2, 0.5rem) var(--hx-space-3, 0.75rem);
6192
6259
  font-size: var(--hx-font-size-md, 1rem);
6193
- color: var(--hx-select-color, var(--hx-color-neutral-800, #212529));
6260
+ color: var(--_color);
6194
6261
  cursor: pointer;
6195
6262
  user-select: none;
6196
6263
  -webkit-user-select: none;
@@ -6198,23 +6265,23 @@ export const helixGridItemStyles = css`
6198
6265
  }
6199
6266
 
6200
6267
  .field__option:hover {
6201
- background-color: var(--hx-select-option-hover-bg, var(--hx-color-primary-50, #eff6ff));
6268
+ background-color: var(--_option-hover-bg);
6202
6269
  }
6203
6270
 
6204
6271
  .field__option--selected {
6205
- background-color: var(--hx-select-option-selected-bg, var(--hx-color-primary-100, #dbeafe));
6272
+ background-color: var(--_option-selected-bg);
6206
6273
  font-weight: var(--hx-font-weight-medium, 500);
6207
6274
  }
6208
6275
 
6209
6276
  .field__option--focused {
6210
- background-color: var(--hx-select-option-hover-bg, var(--hx-color-primary-50, #eff6ff));
6277
+ background-color: var(--_option-hover-bg);
6211
6278
  outline: var(--hx-focus-ring-width, 2px) solid
6212
- var(--hx-select-focus-ring-color, var(--hx-focus-ring-color, var(--hx-color-primary-500)));
6279
+ var(--_focus-ring-color, var(--hx-color-primary-500));
6213
6280
  outline-offset: var(--hx-select-option-focus-ring-offset, -2px);
6214
6281
  }
6215
6282
 
6216
6283
  .field__option--focused.field__option--selected {
6217
- background-color: var(--hx-select-option-selected-bg, var(--hx-color-primary-100, #dbeafe));
6284
+ background-color: var(--_option-selected-bg);
6218
6285
  }
6219
6286
 
6220
6287
  .field__option--disabled {
@@ -6233,7 +6300,7 @@ export const helixGridItemStyles = css`
6233
6300
  .field__no-options {
6234
6301
  padding: var(--hx-space-3, 0.75rem);
6235
6302
  text-align: center;
6236
- color: var(--hx-color-neutral-400, #adb5bd);
6303
+ color: var(--_placeholder-color);
6237
6304
  font-size: var(--hx-font-size-sm, 0.875rem);
6238
6305
  }
6239
6306
 
@@ -7594,9 +7661,12 @@ export const helixGridItemStyles = css`
7594
7661
  display: inline-flex;
7595
7662
  align-items: center;
7596
7663
  justify-content: center;
7664
+ gap: var(--hx-space-2, 0.5rem);
7597
7665
  position: relative;
7598
7666
  flex-shrink: 0;
7599
7667
  --_dot-color: var(--hx-status-indicator-color-default, var(--hx-color-neutral-300, #ced4da));
7668
+ /* Default size (md) — always defined so .indicator never collapses to 0x0 */
7669
+ --_indicator-size: var(--hx-status-indicator-size-md, var(--hx-space-3, 0.75rem));
7600
7670
  }
7601
7671
 
7602
7672
  .indicator {
@@ -7651,18 +7721,44 @@ export const helixGridItemStyles = css`
7651
7721
  }
7652
7722
  }
7653
7723
 
7724
+ /* ─── Visible label (part="label") ─── */
7725
+
7726
+ .indicator__label {
7727
+ font-size: var(
7728
+ --hx-status-indicator-label-font-size,
7729
+ var(--hx-font-size-sm, var(--hx-text-sm, 0.875rem))
7730
+ );
7731
+ color: var(--hx-status-indicator-label-color, var(--hx-color-neutral-700, #374151));
7732
+ line-height: 1;
7733
+ white-space: nowrap;
7734
+ }
7735
+
7736
+ /* ─── aria-live announcement region (visually hidden) ─── */
7737
+
7738
+ .indicator__live-region {
7739
+ position: absolute;
7740
+ width: 1px;
7741
+ height: 1px;
7742
+ padding: 0;
7743
+ margin: -1px;
7744
+ overflow: hidden;
7745
+ clip: rect(0, 0, 0, 0);
7746
+ white-space: nowrap;
7747
+ border: 0;
7748
+ }
7749
+
7654
7750
  /* ─── Size Variants ─── */
7655
7751
 
7656
- :host([size='sm']) {
7752
+ :host([hx-size='sm']) {
7657
7753
  --_indicator-size: var(--hx-status-indicator-size-sm, var(--hx-space-2, 0.5rem));
7658
7754
  }
7659
7755
 
7660
- :host([size='md']) {
7756
+ :host([hx-size='md']) {
7661
7757
  --_indicator-size: var(--hx-status-indicator-size-md, var(--hx-space-3, 0.75rem));
7662
7758
  }
7663
7759
 
7664
- :host([size='lg']) {
7665
- --_indicator-size: var(--hx-status-indicator-size-lg, var(--hx-size-4));
7760
+ :host([hx-size='lg']) {
7761
+ --_indicator-size: var(--hx-status-indicator-size-lg, var(--hx-space-4, 1rem));
7666
7762
  }
7667
7763
 
7668
7764
  /* ─── Status Colors ─── */