@helixui/library 1.1.2-next.8 → 1.1.2-next.9

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 (50) hide show
  1. package/custom-elements.json +627 -580
  2. package/dist/components/hx-breadcrumb/hx-breadcrumb-item.d.ts +1 -0
  3. package/dist/components/hx-breadcrumb/hx-breadcrumb-item.d.ts.map +1 -1
  4. package/dist/components/hx-breadcrumb/hx-breadcrumb.d.ts +10 -8
  5. package/dist/components/hx-breadcrumb/hx-breadcrumb.d.ts.map +1 -1
  6. package/dist/components/hx-breadcrumb/index.js +1 -1
  7. package/dist/components/hx-menu/hx-menu-item.d.ts +5 -0
  8. package/dist/components/hx-menu/hx-menu-item.d.ts.map +1 -1
  9. package/dist/components/hx-menu/hx-menu.d.ts +1 -0
  10. package/dist/components/hx-menu/hx-menu.d.ts.map +1 -1
  11. package/dist/components/hx-menu/hx-menu.styles.d.ts.map +1 -1
  12. package/dist/components/hx-menu/index.js +1 -1
  13. package/dist/components/hx-nav/hx-nav.d.ts +10 -0
  14. package/dist/components/hx-nav/hx-nav.d.ts.map +1 -1
  15. package/dist/components/hx-nav/index.js +1 -1
  16. package/dist/components/hx-pagination/hx-pagination.d.ts.map +1 -1
  17. package/dist/components/hx-pagination/index.js +1 -1
  18. package/dist/components/hx-tabs/hx-tab.styles.d.ts.map +1 -1
  19. package/dist/components/hx-tabs/hx-tabs.d.ts +10 -0
  20. package/dist/components/hx-tabs/hx-tabs.d.ts.map +1 -1
  21. package/dist/components/hx-tabs/index.js +1 -1
  22. package/dist/components/hx-tree-view/hx-tree-item.d.ts +5 -0
  23. package/dist/components/hx-tree-view/hx-tree-item.d.ts.map +1 -1
  24. package/dist/components/hx-tree-view/hx-tree-view.d.ts +6 -0
  25. package/dist/components/hx-tree-view/hx-tree-view.d.ts.map +1 -1
  26. package/dist/components/hx-tree-view/index.js +1 -1
  27. package/dist/css/helix-all.css +2 -0
  28. package/dist/css/helix-navigation.css +2 -0
  29. package/dist/css/hx-menu.css +2 -0
  30. package/dist/css/index.css +1 -1
  31. package/dist/css/manifest.json +2 -1
  32. package/dist/index.js +6 -6
  33. package/dist/shared/{hx-breadcrumb-item-B2rjepqy.js → hx-breadcrumb-item-CObc-WJl.js} +8 -6
  34. package/dist/shared/hx-breadcrumb-item-CObc-WJl.js.map +1 -0
  35. package/dist/shared/{hx-menu-divider-DR4G_rqw.js → hx-menu-divider-puPmRAdN.js} +40 -20
  36. package/dist/shared/hx-menu-divider-puPmRAdN.js.map +1 -0
  37. package/dist/shared/{hx-nav-D377Ngz4.js → hx-nav-CiyqaW2I.js} +112 -99
  38. package/dist/shared/hx-nav-CiyqaW2I.js.map +1 -0
  39. package/dist/shared/{hx-pagination-DYhYPqDn.js → hx-pagination-Cb9UEWXz.js} +74 -66
  40. package/dist/shared/{hx-pagination-DYhYPqDn.js.map → hx-pagination-Cb9UEWXz.js.map} +1 -1
  41. package/dist/shared/{hx-tab-panel-GGjk6Qg4.js → hx-tab-panel-Dnt8aA74.js} +89 -61
  42. package/dist/shared/hx-tab-panel-Dnt8aA74.js.map +1 -0
  43. package/dist/shared/{hx-tree-item-DTDIBRrI.js → hx-tree-item-C1PhX-HE.js} +50 -19
  44. package/dist/shared/hx-tree-item-C1PhX-HE.js.map +1 -0
  45. package/package.json +2 -2
  46. package/dist/shared/hx-breadcrumb-item-B2rjepqy.js.map +0 -1
  47. package/dist/shared/hx-menu-divider-DR4G_rqw.js.map +0 -1
  48. package/dist/shared/hx-nav-D377Ngz4.js.map +0 -1
  49. package/dist/shared/hx-tab-panel-GGjk6Qg4.js.map +0 -1
  50. package/dist/shared/hx-tree-item-DTDIBRrI.js.map +0 -1
@@ -22,6 +22,7 @@ import { LitElement } from 'lit';
22
22
  * @cssprop [--hx-breadcrumb-separator-color=var(--hx-color-neutral-400)] - Separator color.
23
23
  * @cssprop [--hx-breadcrumb-separator-gap=var(--hx-space-1)] - Horizontal margin around separator.
24
24
  * @cssprop [--hx-breadcrumb-item-max-width] - Optional max-width for text truncation.
25
+ * @cssprop [--hx-breadcrumb-link-focus-ring-color=var(--hx-focus-ring-color, var(--hx-color-primary-500))] - Focus ring color for breadcrumb links.
25
26
  */
26
27
  export declare class HelixBreadcrumbItem extends LitElement {
27
28
  static styles: import('lit').CSSResult[];
@@ -1 +1 @@
1
- {"version":3,"file":"hx-breadcrumb-item.d.ts","sourceRoot":"","sources":["../../../src/components/hx-breadcrumb/hx-breadcrumb-item.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAiB,MAAM,KAAK,CAAC;AAKhD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,qBACa,mBAAoB,SAAQ,UAAU;IACjD,OAAgB,MAAM,4BAA4C;IAEzD,iBAAiB,IAAI,IAAI;IAkBlC;;;;;OAKG;IAEH,IAAI,EAAE,MAAM,GAAG,SAAS,CAAa;IAErC;;;;;;;OAOG;IAEH,UAAU,UAAS;IAEnB;;;;;;;;;;;;OAYG;IAEH,OAAO,UAAS;IAEP,MAAM;CAkBhB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,oBAAoB,EAAE,mBAAmB,CAAC;KAC3C;CACF"}
1
+ {"version":3,"file":"hx-breadcrumb-item.d.ts","sourceRoot":"","sources":["../../../src/components/hx-breadcrumb/hx-breadcrumb-item.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAiB,MAAM,KAAK,CAAC;AAKhD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,qBACa,mBAAoB,SAAQ,UAAU;IACjD,OAAgB,MAAM,4BAA4C;IAEzD,iBAAiB,IAAI,IAAI;IAkBlC;;;;;OAKG;IAEH,IAAI,EAAE,MAAM,GAAG,SAAS,CAAa;IAErC;;;;;;;OAOG;IAEH,UAAU,UAAS;IAEnB;;;;;;;;;;;;OAYG;IAEH,OAAO,UAAS;IAEP,MAAM;CAkBhB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,oBAAoB,EAAE,mBAAmB,CAAC;KAC3C;CACF"}
@@ -30,8 +30,8 @@ export declare class HelixBreadcrumb extends LitElement {
30
30
  * Per-instance counter used to generate stable, deterministic IDs for the
31
31
  * injected JSON-LD script tags. Deterministic IDs (vs Math.random()) allow
32
32
  * SSR frameworks to match server-rendered script tags during hydration.
33
+ * @internal
33
34
  */
34
- /** @internal */
35
35
  private static _instanceCounter;
36
36
  /**
37
37
  * The separator character displayed between breadcrumb items.
@@ -84,8 +84,8 @@ export declare class HelixBreadcrumb extends LitElement {
84
84
  * positional current-page detection on each slotchange without incorrectly
85
85
  * treating a previously component-set `current` attribute as a consumer-set
86
86
  * explicit override.
87
+ * @internal
87
88
  */
88
- /** @internal */
89
89
  private readonly _managedCurrentItems;
90
90
  /**
91
91
  * Stable per-instance ID used to tag the injected script element so that
@@ -96,11 +96,13 @@ export declare class HelixBreadcrumb extends LitElement {
96
96
  *
97
97
  * Uses a static counter (not Math.random()) so IDs are deterministic across
98
98
  * server and client renders, enabling SSR hydration matching.
99
+ * @internal
99
100
  */
100
- /** @internal */
101
101
  private readonly _jsonLdId;
102
- /** Returns only real breadcrumb items, excluding the managed ellipsis element. */
103
- /** @internal */
102
+ /**
103
+ * Returns only real breadcrumb items, excluding the managed ellipsis element.
104
+ * @internal
105
+ */
104
106
  private _getBreadcrumbItems;
105
107
  /**
106
108
  * Applies aria/state attributes to the item list.
@@ -111,8 +113,8 @@ export declare class HelixBreadcrumb extends LitElement {
111
113
  *
112
114
  * This separation allows Drupal to control current-page marking without
113
115
  * relying on item order.
116
+ * @internal
114
117
  */
115
- /** @internal */
116
118
  private _applyItemAttributes;
117
119
  /** @internal */
118
120
  private _handleSlotChange;
@@ -129,13 +131,13 @@ export declare class HelixBreadcrumb extends LitElement {
129
131
  /**
130
132
  * Expands a collapsed breadcrumb by resetting maxItems to 0.
131
133
  * Called by the ellipsis expand button (click or Enter/Space).
134
+ * @internal
132
135
  */
133
- /** @internal */
134
136
  private _expandBreadcrumb;
135
137
  /**
136
138
  * JSON-LD ListItem entry with typed fields to avoid Record<string, unknown>.
139
+ * @internal
137
140
  */
138
- /** @internal */
139
141
  private _buildListItem;
140
142
  /** @internal */
141
143
  private _updateJsonLd;
@@ -1 +1 @@
1
- {"version":3,"file":"hx-breadcrumb.d.ts","sourceRoot":"","sources":["../../../src/components/hx-breadcrumb/hx-breadcrumb.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAQ,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAa5D;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,qBACa,eAAgB,SAAQ,UAAU;IAC7C,OAAgB,MAAM,4BAAwC;IAE9D;;;;OAIG;IACH,gBAAgB;IAChB,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAK;IAEpC;;;OAGG;IAEH,SAAS,SAAO;IAEhB;;;OAGG;IAEH,KAAK,SAAgB;IAErB;;;;;OAKG;IAEH,QAAQ,SAAK;IAEb;;;OAGG;IACwC,aAAa,SAA+B;IAEvF;;;;;;;;;;;;;OAaG;IAEH,MAAM,UAAS;IAEf,gBAAgB;IAChB,OAAO,CAAC,aAAa,CAAwB;IAC7C,gBAAgB;IAChB,OAAO,CAAC,aAAa,CAAkC;IACvD,gBAAgB;IAChB,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAA8C;IAClF,gBAAgB;IAChB,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAgD;IAEtF;;;;;;OAMG;IACH,gBAAgB;IAChB,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAA0B;IAE/D;;;;;;;;;OASG;IACH,gBAAgB;IAChB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA4D;IAItF,kFAAkF;IAClF,gBAAgB;IAChB,OAAO,CAAC,mBAAmB;IAU3B;;;;;;;;;OASG;IACH,gBAAgB;IAChB,OAAO,CAAC,oBAAoB;IAuC5B,gBAAgB;IAChB,OAAO,CAAC,iBAAiB;IAkBzB,gBAAgB;IAChB,OAAO,CAAC,0BAA0B;IAWlC,gBAAgB;IAChB,OAAO,CAAC,cAAc;IAmCtB,gBAAgB;IAChB,OAAO,CAAC,eAAe;IAUvB,gBAAgB;IAChB,OAAO,CAAC,oBAAoB;IAM5B,gBAAgB;IAChB,OAAO,CAAC,sBAAsB;IAU9B;;;OAGG;IACH,gBAAgB;IAChB,OAAO,CAAC,iBAAiB;IAOzB;;OAEG;IACH,gBAAgB;IAChB,OAAO,CAAC,cAAc;IAYtB,gBAAgB;IAChB,OAAO,CAAC,aAAa;IA2BrB,gBAAgB;IAChB,OAAO,CAAC,aAAa;IAOZ,iBAAiB,IAAI,IAAI;IAMzB,oBAAoB,IAAI,IAAI;IAO5B,OAAO,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAwCtD,MAAM;CAchB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,eAAe,EAAE,eAAe,CAAC;KAClC;CACF"}
1
+ {"version":3,"file":"hx-breadcrumb.d.ts","sourceRoot":"","sources":["../../../src/components/hx-breadcrumb/hx-breadcrumb.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAQ,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAa5D;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,qBACa,eAAgB,SAAQ,UAAU;IAC7C,OAAgB,MAAM,4BAAwC;IAE9D;;;;;OAKG;IACH,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAK;IAEpC;;;OAGG;IAEH,SAAS,SAAO;IAEhB;;;OAGG;IAEH,KAAK,SAAgB;IAErB;;;;;OAKG;IAEH,QAAQ,SAAK;IAEb;;;OAGG;IACwC,aAAa,SAA+B;IAEvF;;;;;;;;;;;;;OAaG;IAEH,MAAM,UAAS;IAEf,gBAAgB;IAChB,OAAO,CAAC,aAAa,CAAwB;IAC7C,gBAAgB;IAChB,OAAO,CAAC,aAAa,CAAkC;IACvD,gBAAgB;IAChB,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAA8C;IAClF,gBAAgB;IAChB,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAgD;IAEtF;;;;;;;OAOG;IACH,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAA0B;IAE/D;;;;;;;;;;OAUG;IACH,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA4D;IAItF;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IAU3B;;;;;;;;;;OAUG;IACH,OAAO,CAAC,oBAAoB;IAuC5B,gBAAgB;IAChB,OAAO,CAAC,iBAAiB;IAkBzB,gBAAgB;IAChB,OAAO,CAAC,0BAA0B;IAWlC,gBAAgB;IAChB,OAAO,CAAC,cAAc;IAmCtB,gBAAgB;IAChB,OAAO,CAAC,eAAe;IAUvB,gBAAgB;IAChB,OAAO,CAAC,oBAAoB;IAM5B,gBAAgB;IAChB,OAAO,CAAC,sBAAsB;IAU9B;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;IAOzB;;;OAGG;IACH,OAAO,CAAC,cAAc;IAYtB,gBAAgB;IAChB,OAAO,CAAC,aAAa;IA2BrB,gBAAgB;IAChB,OAAO,CAAC,aAAa;IAOZ,iBAAiB,IAAI,IAAI;IAMzB,oBAAoB,IAAI,IAAI;IAO5B,OAAO,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAwCtD,MAAM;CAchB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,eAAe,EAAE,eAAe,CAAC;KAClC;CACF"}
@@ -1,4 +1,4 @@
1
- import { H as a, a as m } from "../../shared/hx-breadcrumb-item-B2rjepqy.js";
1
+ import { H as a, a as m } from "../../shared/hx-breadcrumb-item-CObc-WJl.js";
2
2
  export {
3
3
  a as HelixBreadcrumb,
4
4
  m as HelixBreadcrumbItem
@@ -15,6 +15,7 @@ import { LitElement } from 'lit';
15
15
  *
16
16
  * @fires {CustomEvent<{item: HelixMenuItem, value: string}>} hx-item-select - Dispatched when the item is activated via click, Enter, or Space.
17
17
  * @fires {CustomEvent<{item: HelixMenuItem}>} hx-item-submenu-open - Dispatched when ArrowRight is pressed on an item with a submenu.
18
+ * @fires {CustomEvent<{item: HelixMenuItem}>} hx-item-submenu-close - Dispatched when ArrowLeft is pressed on an item, signaling the parent to close the submenu and return focus.
18
19
  *
19
20
  * @csspart base - The root item element.
20
21
  * @csspart prefix - Prefix slot wrapper.
@@ -35,6 +36,8 @@ export declare class HelixMenuItem extends LitElement {
35
36
  private _rovingTabIndex;
36
37
  /** @internal Set the roving tabindex value. Called by parent hx-menu. */
37
38
  setRovingTabIndex(value: number): void;
39
+ /** Set whether the nested submenu is open. Called by the component managing submenu visibility. */
40
+ setSubmenuOpen(open: boolean): void;
38
41
  /**
39
42
  * The value associated with this item, emitted in the hx-select event.
40
43
  * @attr value
@@ -63,6 +66,8 @@ export declare class HelixMenuItem extends LitElement {
63
66
  loading: boolean;
64
67
  /** @internal */
65
68
  private _hasSubmenu;
69
+ /** @internal Tracks whether the nested submenu is currently open. */
70
+ private _submenuOpen;
66
71
  /** @internal */
67
72
  private _menuItemEl;
68
73
  /** Focus the inner interactive element. */
@@ -1 +1 @@
1
- {"version":3,"file":"hx-menu-item.d.ts","sourceRoot":"","sources":["../../../src/components/hx-menu/hx-menu-item.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAiB,MAAM,KAAK,CAAC;AAOhD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,qBACa,aAAc,SAAQ,UAAU;IAC3C,OAAgB,MAAM,4BAAsC;IAE5D;;;OAGG;IAEH,OAAO,CAAC,eAAe,CAAM;IAE7B,yEAAyE;IACzE,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAItC;;;OAGG;IAEH,KAAK,SAAM;IAEX;;;OAGG;IAEH,QAAQ,UAAS;IAEjB;;;OAGG;IAEH,OAAO,UAAS;IAEhB;;;;OAIG;IAEH,IAAI,EAAE,QAAQ,GAAG,UAAU,GAAG,OAAO,CAAY;IAEjD;;;OAGG;IAEH,OAAO,UAAS;IAEhB,gBAAgB;IAEhB,OAAO,CAAC,WAAW,CAAS;IAE5B,gBAAgB;IACK,OAAO,CAAC,WAAW,CAAsB;IAE9D,2CAA2C;IAClC,KAAK,CAAC,OAAO,CAAC,EAAE,YAAY,GAAG,IAAI;IAInC,iBAAiB,IAAI,IAAI;IAclC,gBAAgB;IAChB,OAAO,CAAC,wBAAwB;IAKhC,gBAAgB;IAChB,OAAO,CAAC,SAAS;IA2BjB,gBAAgB;IAChB,OAAO,CAAC,YAAY;IASpB,gBAAgB;IAChB,OAAO,CAAC,cAAc;IAmBtB,gBAAgB;IAChB,OAAO,CAAC,kBAAkB;IAmB1B,gBAAgB;IAChB,OAAO,CAAC,kBAAkB;IAmB1B,gBAAgB;IAChB,OAAO,CAAC,cAAc;IActB,gBAAgB;IAChB,OAAO,CAAC,QAAQ;IAWP,MAAM;CAqChB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,cAAc,EAAE,aAAa,CAAC;KAC/B;CACF"}
1
+ {"version":3,"file":"hx-menu-item.d.ts","sourceRoot":"","sources":["../../../src/components/hx-menu/hx-menu-item.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAiB,MAAM,KAAK,CAAC;AAOhD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBACa,aAAc,SAAQ,UAAU;IAC3C,OAAgB,MAAM,4BAAsC;IAE5D;;;OAGG;IAEH,OAAO,CAAC,eAAe,CAAM;IAE7B,yEAAyE;IACzE,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAItC,mGAAmG;IACnG,cAAc,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;IAInC;;;OAGG;IAEH,KAAK,SAAM;IAEX;;;OAGG;IAEH,QAAQ,UAAS;IAEjB;;;OAGG;IAEH,OAAO,UAAS;IAEhB;;;;OAIG;IAEH,IAAI,EAAE,QAAQ,GAAG,UAAU,GAAG,OAAO,CAAY;IAEjD;;;OAGG;IAEH,OAAO,UAAS;IAEhB,gBAAgB;IAEhB,OAAO,CAAC,WAAW,CAAS;IAE5B,qEAAqE;IAErE,OAAO,CAAC,YAAY,CAAS;IAE7B,gBAAgB;IACK,OAAO,CAAC,WAAW,CAAsB;IAE9D,2CAA2C;IAClC,KAAK,CAAC,OAAO,CAAC,EAAE,YAAY,GAAG,IAAI;IAInC,iBAAiB,IAAI,IAAI;IAclC,gBAAgB;IAChB,OAAO,CAAC,wBAAwB;IAKhC,gBAAgB;IAChB,OAAO,CAAC,SAAS;IA2BjB,gBAAgB;IAChB,OAAO,CAAC,YAAY;IASpB,gBAAgB;IAChB,OAAO,CAAC,cAAc;IA+BtB,gBAAgB;IAChB,OAAO,CAAC,kBAAkB;IAmB1B,gBAAgB;IAChB,OAAO,CAAC,kBAAkB;IAmB1B,gBAAgB;IAChB,OAAO,CAAC,cAAc;IActB,gBAAgB;IAChB,OAAO,CAAC,QAAQ;IAWP,MAAM;CAsChB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,cAAc,EAAE,aAAa,CAAC;KAC/B;CACF"}
@@ -19,6 +19,7 @@ import { LitElement } from 'lit';
19
19
  * @cssprop [--hx-menu-border-radius=var(--hx-border-radius-md)] - Menu border radius.
20
20
  * @cssprop [--hx-menu-shadow] - Menu box shadow.
21
21
  * @cssprop [--hx-menu-min-width=10rem] - Minimum menu width.
22
+ * @cssprop [--hx-menu-max-height=20rem] - Maximum menu height before vertical scroll is activated.
22
23
  */
23
24
  export declare class HelixMenu extends LitElement {
24
25
  static styles: import('lit').CSSResult[];
@@ -1 +1 @@
1
- {"version":3,"file":"hx-menu.d.ts","sourceRoot":"","sources":["../../../src/components/hx-menu/hx-menu.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAQ,MAAM,KAAK,CAAC;AAOvC;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBACa,SAAU,SAAQ,UAAU;IACvC,OAAgB,MAAM,4BAAkC;IAExD;;;;OAIG;IAEH,KAAK,SAAM;IAEX;;;OAGG;IACH,OAAO,CAAC,aAAa,CAAM;IAE3B;;;OAGG;IACH,OAAO,CAAC,gBAAgB,CAAM;IAE9B;;;OAGG;IACH,OAAO,CAAC,eAAe,CAA8C;IAErE,gBAAgB;IAChB,OAAO,CAAC,SAAS;IAMjB;;;OAGG;IACH,gBAAgB;IAChB,OAAO,CAAC,mBAAmB;IAQ3B,iCAAiC;IACjC,UAAU,IAAI,IAAI;IAUlB,gCAAgC;IAChC,SAAS,IAAI,IAAI;IAUjB,gBAAgB;IAChB,OAAO,CAAC,UAAU;IASlB,gBAAgB;IAChB,OAAO,CAAC,mBAAmB;IAQ3B,gBAAgB;IAChB,OAAO,CAAC,cAAc;IAkCtB,gBAAgB;IAChB,OAAO,CAAC,gBAAgB;IAqBxB,gBAAgB;IAChB,OAAO,CAAC,iBAAiB;IAiBzB,gBAAgB;IAChB,OAAO,CAAC,iBAAiB;IAehB,oBAAoB,IAAI,IAAI;IAQ5B,YAAY,IAAI,IAAI;IASpB,MAAM;CAchB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,SAAS,EAAE,SAAS,CAAC;KACtB;CACF"}
1
+ {"version":3,"file":"hx-menu.d.ts","sourceRoot":"","sources":["../../../src/components/hx-menu/hx-menu.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAQ,MAAM,KAAK,CAAC;AAOvC;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBACa,SAAU,SAAQ,UAAU;IACvC,OAAgB,MAAM,4BAAkC;IAExD;;;;OAIG;IAEH,KAAK,SAAM;IAEX;;;OAGG;IACH,OAAO,CAAC,aAAa,CAAM;IAE3B;;;OAGG;IACH,OAAO,CAAC,gBAAgB,CAAM;IAE9B;;;OAGG;IACH,OAAO,CAAC,eAAe,CAA8C;IAErE,gBAAgB;IAChB,OAAO,CAAC,SAAS;IAMjB;;;OAGG;IACH,gBAAgB;IAChB,OAAO,CAAC,mBAAmB;IAQ3B,iCAAiC;IACjC,UAAU,IAAI,IAAI;IAUlB,gCAAgC;IAChC,SAAS,IAAI,IAAI;IAUjB,gBAAgB;IAChB,OAAO,CAAC,UAAU;IASlB,gBAAgB;IAChB,OAAO,CAAC,mBAAmB;IAQ3B,gBAAgB;IAChB,OAAO,CAAC,cAAc;IAkCtB,gBAAgB;IAChB,OAAO,CAAC,gBAAgB;IAqBxB,gBAAgB;IAChB,OAAO,CAAC,iBAAiB;IAiBzB,gBAAgB;IAChB,OAAO,CAAC,iBAAiB;IAehB,oBAAoB,IAAI,IAAI;IAQ5B,YAAY,IAAI,IAAI;IASpB,MAAM;CAchB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,SAAS,EAAE,SAAS,CAAC;KACtB;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"hx-menu.styles.d.ts","sourceRoot":"","sources":["../../../src/components/hx-menu/hx-menu.styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,eAAe,yBAqB3B,CAAC"}
1
+ {"version":3,"file":"hx-menu.styles.d.ts","sourceRoot":"","sources":["../../../src/components/hx-menu/hx-menu.styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,eAAe,yBAuB3B,CAAC"}
@@ -1,4 +1,4 @@
1
- import { H as a, a as x, b as H } from "../../shared/hx-menu-divider-DR4G_rqw.js";
1
+ import { H as a, a as x, b as H } from "../../shared/hx-menu-divider-puPmRAdN.js";
2
2
  export {
3
3
  a as HelixMenu,
4
4
  x as HelixMenuDivider,
@@ -80,6 +80,11 @@ export declare class HelixNav extends LitElement {
80
80
  * @internal
81
81
  */
82
82
  private _boundOutsideClick;
83
+ /**
84
+ * Stable bound reference to the focusout handler, stored for addEventListener/removeEventListener symmetry.
85
+ * @internal
86
+ */
87
+ private _boundFocusout;
83
88
  /**
84
89
  * Sanitizes a URL to prevent XSS via javascript: or data: URIs.
85
90
  * Only allows http:, https:, relative paths, and fragment-only links.
@@ -98,6 +103,11 @@ export declare class HelixNav extends LitElement {
98
103
  private _handleSubKeydown;
99
104
  /** @internal */
100
105
  private _handleOutsideClick;
106
+ /**
107
+ * hx-nav-008: Close expanded submenu when focus moves outside the component.
108
+ * @internal
109
+ */
110
+ private _handleFocusout;
101
111
  connectedCallback(): void;
102
112
  disconnectedCallback(): void;
103
113
  /** @internal */
@@ -1 +1 @@
1
- {"version":3,"file":"hx-nav.d.ts","sourceRoot":"","sources":["../../../src/components/hx-nav/hx-nav.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAsB,MAAM,KAAK,CAAC;AAOrD,iEAAiE;AACjE,MAAM,WAAW,OAAO;IACtB,kCAAkC;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,qEAAqE;IACrE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,qDAAqD;IACrD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,6BAA6B;IAC7B,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;CACtB;AAED,6CAA6C;AAC7C,KAAK,cAAc,GAAG,YAAY,GAAG,UAAU,CAAC;AAEhD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,qBACa,QAAS,SAAQ,UAAU;IACtC,OAAgB,MAAM,4BAAiC;IAIvD;;;OAGG;IAeH,KAAK,EAAE,OAAO,EAAE,CAAM;IAEtB;;;OAGG;IAEH,WAAW,EAAE,cAAc,CAAgB;IAE3C;;;OAGG;IAEH,KAAK,SAAqB;IAE1B,6EAA6E;IAE7E,aAAa,SAA0B;IAEvC,2EAA2E;IAE3E,cAAc,SAA2B;IAIzC;;;OAGG;IACM,OAAO,CAAC,WAAW,CAAS;IACrC;;;OAGG;IACM,OAAO,CAAC,cAAc,CAAuB;IAItD;;;OAGG;IACH,OAAO,CAAC,kBAAkB,CAAgE;IAE1F;;;OAGG;IACH,gBAAgB;IAChB,OAAO,CAAC,aAAa;IAyBrB,gBAAgB;IAChB,OAAO,CAAC,aAAa;IAOrB,gBAAgB;IAChB,OAAO,CAAC,gBAAgB;IAiBxB,gBAAgB;IAChB,OAAO,CAAC,mBAAmB;IAa3B,gBAAgB;IAChB,OAAO,CAAC,cAAc;IA2DtB,gBAAgB;IAChB,OAAO,CAAC,iBAAiB;IAkCzB,gBAAgB;IAChB,OAAO,CAAC,mBAAmB;IASlB,iBAAiB,IAAI,IAAI;IAOzB,oBAAoB,IAAI,IAAI;IAOrC,gBAAgB;IAChB,OAAO,CAAC,oBAAoB;IAoB5B,gBAAgB;IAChB,OAAO,CAAC,kBAAkB;IAoB1B,gBAAgB;IAChB,OAAO,CAAC,cAAc;IAgCtB,gBAAgB;IAChB,OAAO,CAAC,WAAW;IA0CV,MAAM;CA6BhB;AAED,qDAAqD;AACrD,MAAM,MAAM,KAAK,GAAG,QAAQ,CAAC;AAE7B,6FAA6F;AAC7F,MAAM,MAAM,KAAK,GAAG,QAAQ,CAAC;AAE7B,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,QAAQ,EAAE,QAAQ,CAAC;KACpB;CACF"}
1
+ {"version":3,"file":"hx-nav.d.ts","sourceRoot":"","sources":["../../../src/components/hx-nav/hx-nav.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAsB,MAAM,KAAK,CAAC;AAOrD,iEAAiE;AACjE,MAAM,WAAW,OAAO;IACtB,kCAAkC;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,qEAAqE;IACrE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,qDAAqD;IACrD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,6BAA6B;IAC7B,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;CACtB;AAED,6CAA6C;AAC7C,KAAK,cAAc,GAAG,YAAY,GAAG,UAAU,CAAC;AAEhD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,qBACa,QAAS,SAAQ,UAAU;IACtC,OAAgB,MAAM,4BAAiC;IAIvD;;;OAGG;IAeH,KAAK,EAAE,OAAO,EAAE,CAAM;IAEtB;;;OAGG;IAEH,WAAW,EAAE,cAAc,CAAgB;IAE3C;;;OAGG;IAEH,KAAK,SAAqB;IAE1B,6EAA6E;IAE7E,aAAa,SAA0B;IAEvC,2EAA2E;IAE3E,cAAc,SAA2B;IAIzC;;;OAGG;IACM,OAAO,CAAC,WAAW,CAAS;IACrC;;;OAGG;IACM,OAAO,CAAC,cAAc,CAAuB;IAItD;;;OAGG;IACH,OAAO,CAAC,kBAAkB,CAAgE;IAE1F;;;OAGG;IACH,OAAO,CAAC,cAAc,CAA4D;IAElF;;;OAGG;IACH,gBAAgB;IAChB,OAAO,CAAC,aAAa;IAyBrB,gBAAgB;IAChB,OAAO,CAAC,aAAa;IAOrB,gBAAgB;IAChB,OAAO,CAAC,gBAAgB;IAiBxB,gBAAgB;IAChB,OAAO,CAAC,mBAAmB;IAa3B,gBAAgB;IAChB,OAAO,CAAC,cAAc;IAqEtB,gBAAgB;IAChB,OAAO,CAAC,iBAAiB;IAkCzB,gBAAgB;IAChB,OAAO,CAAC,mBAAmB;IAO3B;;;OAGG;IACH,OAAO,CAAC,eAAe;IASd,iBAAiB,IAAI,IAAI;IAQzB,oBAAoB,IAAI,IAAI;IAQrC,gBAAgB;IAChB,OAAO,CAAC,oBAAoB;IAoB5B,gBAAgB;IAChB,OAAO,CAAC,kBAAkB;IAoB1B,gBAAgB;IAChB,OAAO,CAAC,cAAc;IA2BtB,gBAAgB;IAChB,OAAO,CAAC,WAAW;IA4CV,MAAM;CA6BhB;AAED,qDAAqD;AACrD,MAAM,MAAM,KAAK,GAAG,QAAQ,CAAC;AAE7B,6FAA6F;AAC7F,MAAM,MAAM,KAAK,GAAG,QAAQ,CAAC;AAE7B,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,QAAQ,EAAE,QAAQ,CAAC;KACpB;CACF"}
@@ -1,4 +1,4 @@
1
- import { H as o } from "../../shared/hx-nav-D377Ngz4.js";
1
+ import { H as o } from "../../shared/hx-nav-CiyqaW2I.js";
2
2
  export {
3
3
  o as HelixNav
4
4
  };
@@ -1 +1 @@
1
- {"version":3,"file":"hx-pagination.d.ts","sourceRoot":"","sources":["../../../src/components/hx-pagination/hx-pagination.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAiB,MAAM,KAAK,CAAC;AAOhD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyDG;AACH,qBACa,eAAgB,SAAQ,UAAU;IAC7C,OAAgB,MAAM,4BAAwC;IAE9D;;;OAGG;IAEH,UAAU,SAAK;IAEf;;;OAGG;IAEH,WAAW,SAAK;IAEhB;;;OAGG;IAEH,YAAY,SAAK;IAEjB;;;OAGG;IAEH,aAAa,SAAK;IAElB;;;OAGG;IAEH,aAAa,UAAS;IAEtB;;;OAGG;IAEH,KAAK,SAAgB;IAErB;;;;OAIG;IAEH,QAAQ,SAAM;IAEd;;;OAGG;IAEH,YAAY,UAAS;IAErB;;;OAGG;IAEH,gBAAgB,SAAoB;IAEpC;;;OAGG;IAEH,cAAc,SAAgB;IAE9B;;;OAGG;IAEH,iBAAiB,SAAmB;IAEpC;;;OAGG;IAEH,aAAa,SAAe;IAE5B;;;OAGG;IAEH,aAAa,SAAe;IAE5B;;OAEG;IAEH,gBAAgB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAC5B;IAEhC;;OAEG;IAEH,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAA4B;IAErE,4EAA4E;IAC5E,gBAAgB;IACP,OAAO,CAAC,UAAU,CAAgC;IAE3D,4DAA4D;IAC5D,gBAAgB;IACP,OAAO,CAAC,YAAY,CAAM;IAEnC,6CAA6C;IAC7C,gBAAgB;IAChB,OAAO,CAAC,eAAe,CAAoE;IAI3F,gBAAgB;IAChB,OAAO,CAAC,eAAe;IA6CvB,gBAAgB;IAChB,OAAO,CAAC,MAAM;IAMd,gBAAgB;IAChB,OAAO,CAAC,SAAS;IAgBjB,gBAAgB;IAChB,OAAO,CAAC,qBAAqB;IAe7B,gBAAgB;IAChB,OAAO,KAAK,mBAAmB,GAE9B;IAED,gBAAgB;IAChB,OAAO,CAAC,cAAc;IAQtB,gBAAgB;IAChB,OAAO,CAAC,cAAc;IA8Bb,MAAM;CA0IhB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,eAAe,EAAE,eAAe,CAAC;KAClC;CACF;AAED,uGAAuG;AACvG,MAAM,MAAM,YAAY,GAAG,eAAe,CAAC"}
1
+ {"version":3,"file":"hx-pagination.d.ts","sourceRoot":"","sources":["../../../src/components/hx-pagination/hx-pagination.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAiB,MAAM,KAAK,CAAC;AAOhD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyDG;AACH,qBACa,eAAgB,SAAQ,UAAU;IAC7C,OAAgB,MAAM,4BAAwC;IAE9D;;;OAGG;IAEH,UAAU,SAAK;IAEf;;;OAGG;IAEH,WAAW,SAAK;IAEhB;;;OAGG;IAEH,YAAY,SAAK;IAEjB;;;OAGG;IAEH,aAAa,SAAK;IAElB;;;OAGG;IAEH,aAAa,UAAS;IAEtB;;;OAGG;IAEH,KAAK,SAAgB;IAErB;;;;OAIG;IAEH,QAAQ,SAAM;IAEd;;;OAGG;IAEH,YAAY,UAAS;IAErB;;;OAGG;IAEH,gBAAgB,SAAoB;IAEpC;;;OAGG;IAEH,cAAc,SAAgB;IAE9B;;;OAGG;IAEH,iBAAiB,SAAmB;IAEpC;;;OAGG;IAEH,aAAa,SAAe;IAE5B;;;OAGG;IAEH,aAAa,SAAe;IAE5B;;OAEG;IAEH,gBAAgB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAC5B;IAEhC;;OAEG;IAEH,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAA4B;IAErE,4EAA4E;IAC5E,gBAAgB;IACP,OAAO,CAAC,UAAU,CAAgC;IAE3D,4DAA4D;IAC5D,gBAAgB;IACP,OAAO,CAAC,YAAY,CAAM;IAEnC,6CAA6C;IAC7C,gBAAgB;IAChB,OAAO,CAAC,eAAe,CAAoE;IAI3F,gBAAgB;IAChB,OAAO,CAAC,eAAe;IA6CvB,gBAAgB;IAChB,OAAO,CAAC,MAAM;IAMd,gBAAgB;IAChB,OAAO,CAAC,SAAS;IAwBjB,gBAAgB;IAChB,OAAO,CAAC,qBAAqB;IAe7B,gBAAgB;IAChB,OAAO,KAAK,mBAAmB,GAE9B;IAED,gBAAgB;IAChB,OAAO,CAAC,cAAc;IAQtB,gBAAgB;IAChB,OAAO,CAAC,cAAc;IAsCb,MAAM;CA0IhB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,eAAe,EAAE,eAAe,CAAC;KAClC;CACF;AAED,uGAAuG;AACvG,MAAM,MAAM,YAAY,GAAG,eAAe,CAAC"}
@@ -1,4 +1,4 @@
1
- import { H as o } from "../../shared/hx-pagination-DYhYPqDn.js";
1
+ import { H as o } from "../../shared/hx-pagination-Cb9UEWXz.js";
2
2
  export {
3
3
  o as HelixPagination
4
4
  };
@@ -1 +1 @@
1
- {"version":3,"file":"hx-tab.styles.d.ts","sourceRoot":"","sources":["../../../src/components/hx-tabs/hx-tab.styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,cAAc,yBA+F1B,CAAC"}
1
+ {"version":3,"file":"hx-tab.styles.d.ts","sourceRoot":"","sources":["../../../src/components/hx-tabs/hx-tab.styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,cAAc,yBAmG1B,CAAC"}
@@ -65,9 +65,19 @@ export declare class HelixTabs extends LitElement {
65
65
  private _cachedPanels;
66
66
  /** @internal */
67
67
  private _observer;
68
+ /**
69
+ * Stores a requested tab index from the `selected-index` attribute before the component
70
+ * has finished its first update (e.g. server-rendered Drupal pages).
71
+ * @internal
72
+ */
73
+ private _pendingIndex;
74
+ static get observedAttributes(): string[];
75
+ attributeChangedCallback(name: string, old: string | null, value: string | null): void;
68
76
  /**
69
77
  * Gets or sets the zero-based index of the currently selected tab.
70
78
  * Setting this programmatically activates the tab at the given index.
79
+ * Can also be set via the `selected-index` HTML attribute for server-side
80
+ * pre-selection (e.g. Drupal Twig templates).
71
81
  */
72
82
  get selectedIndex(): number;
73
83
  set selectedIndex(index: number);
@@ -1 +1 @@
1
- {"version":3,"file":"hx-tabs.d.ts","sourceRoot":"","sources":["../../../src/components/hx-tabs/hx-tabs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAQ,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAW5D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,qBACa,SAAU,SAAQ,UAAU;IACvC,OAAgB,MAAM,4BAAkC;IAIxD,gBAAgB;IAChB,OAAO,CAAC,GAAG,CAAmC;IAI9C;;;OAGG;IAEH,WAAW,EAAE,YAAY,GAAG,UAAU,CAAgB;IAEtD;;;;;OAKG;IAEH,UAAU,EAAE,QAAQ,GAAG,WAAW,CAAe;IAEjD;;;;OAIG;IAEH,KAAK,SAAM;IAIX,gBAAgB;IACP,OAAO,CAAC,YAAY,CAAM;IAInC,gBAAgB;IAChB,OAAO,CAAC,WAAW,CAA2B;IAC9C,gBAAgB;IAChB,OAAO,CAAC,aAAa,CAAgC;IACrD,gBAAgB;IAChB,OAAO,CAAC,SAAS,CAAiC;IAIlD;;;OAGG;IACH,IAAI,aAAa,IAAI,MAAM,CAE1B;IAED,IAAI,aAAa,CAAC,KAAK,EAAE,MAAM,EAK9B;IAED,gBAAgB;IAChB,OAAO,CAAC,QAAQ;IAShB,gBAAgB;IAChB,OAAO,CAAC,UAAU;IASlB,gBAAgB;IAChB,OAAO,CAAC,eAAe;IAMd,iBAAiB,IAAI,IAAI;IAkBzB,oBAAoB,IAAI,IAAI;IAQ5B,YAAY,IAAI,IAAI;IAkBpB,OAAO,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAS/D,gBAAgB;IAChB,OAAO,CAAC,kBAAkB;IA6C1B,gBAAgB;IAChB,OAAO,CAAC,oBAAoB;IA6B5B,gBAAgB;IAChB,OAAO,CAAC,YAAY;IA2BpB,gBAAgB;IAChB,OAAO,CAAC,gBAAgB,CAStB;IAEF,gBAAgB;IAChB,OAAO,CAAC,uBAAuB;IA2B/B,gBAAgB;IAChB,OAAO,CAAC,iBAAiB,CAgBvB;IAEF,gBAAgB;IAChB,OAAO,CAAC,cAAc,CA6DpB;IAIO,MAAM;CAkBhB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,SAAS,EAAE,SAAS,CAAC;KACtB;CACF"}
1
+ {"version":3,"file":"hx-tabs.d.ts","sourceRoot":"","sources":["../../../src/components/hx-tabs/hx-tabs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAQ,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAW5D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,qBACa,SAAU,SAAQ,UAAU;IACvC,OAAgB,MAAM,4BAAkC;IAIxD,gBAAgB;IAChB,OAAO,CAAC,GAAG,CAAmC;IAI9C;;;OAGG;IAEH,WAAW,EAAE,YAAY,GAAG,UAAU,CAAgB;IAEtD;;;;;OAKG;IAEH,UAAU,EAAE,QAAQ,GAAG,WAAW,CAAe;IAEjD;;;;OAIG;IAEH,KAAK,SAAM;IAIX,gBAAgB;IACP,OAAO,CAAC,YAAY,CAAM;IAInC,gBAAgB;IAChB,OAAO,CAAC,WAAW,CAA2B;IAC9C,gBAAgB;IAChB,OAAO,CAAC,aAAa,CAAgC;IACrD,gBAAgB;IAChB,OAAO,CAAC,SAAS,CAAiC;IAClD;;;;OAIG;IACH,OAAO,CAAC,aAAa,CAAuB;IAI5C,WAAoB,kBAAkB,IAAI,MAAM,EAAE,CAEjD;IAEQ,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAqB/F;;;;;OAKG;IACH,IAAI,aAAa,IAAI,MAAM,CAE1B;IAED,IAAI,aAAa,CAAC,KAAK,EAAE,MAAM,EAK9B;IAED,gBAAgB;IAChB,OAAO,CAAC,QAAQ;IAShB,gBAAgB;IAChB,OAAO,CAAC,UAAU;IASlB,gBAAgB;IAChB,OAAO,CAAC,eAAe;IAMd,iBAAiB,IAAI,IAAI;IAkBzB,oBAAoB,IAAI,IAAI;IAQ5B,YAAY,IAAI,IAAI;IA6BpB,OAAO,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAS/D,gBAAgB;IAChB,OAAO,CAAC,kBAAkB;IA6C1B,gBAAgB;IAChB,OAAO,CAAC,oBAAoB;IA6B5B,gBAAgB;IAChB,OAAO,CAAC,YAAY;IA2BpB,gBAAgB;IAChB,OAAO,CAAC,gBAAgB,CAStB;IAEF,gBAAgB;IAChB,OAAO,CAAC,uBAAuB;IA2B/B,gBAAgB;IAChB,OAAO,CAAC,iBAAiB,CAgBvB;IAEF,gBAAgB;IAChB,OAAO,CAAC,cAAc,CAiEpB;IAIO,MAAM;CAkBhB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,SAAS,EAAE,SAAS,CAAC;KACtB;CACF"}
@@ -1,4 +1,4 @@
1
- import { H as b, a as l, b as s } from "../../shared/hx-tab-panel-GGjk6Qg4.js";
1
+ import { H as b, a as l, b as s } from "../../shared/hx-tab-panel-Dnt8aA74.js";
2
2
  export {
3
3
  b as HelixTab,
4
4
  l as HelixTabPanel,
@@ -92,6 +92,11 @@ export declare class HelixTreeItem extends LitElement {
92
92
  * @returns True if one or more elements are assigned to the children slot.
93
93
  */
94
94
  get hasChildItems(): boolean;
95
+ /**
96
+ * The text content of the item's label slot, used for typeahead keyboard navigation.
97
+ * Returns an empty string until the label slot has been assigned.
98
+ */
99
+ get labelText(): string;
95
100
  /**
96
101
  * Recompute all cached ARIA metadata in a single DOM pass.
97
102
  * Called on connect, slotchange, and whenever structural context may change.
@@ -1 +1 @@
1
- {"version":3,"file":"hx-tree-item.d.ts","sourceRoot":"","sources":["../../../src/components/hx-tree-view/hx-tree-item.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAiB,MAAM,KAAK,CAAC;AAMhD,uDAAuD;AACvD,MAAM,WAAW,sBAAsB;IACrC,oDAAoD;IACpD,IAAI,EAAE,aAAa,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBACa,aAAc,SAAQ,UAAU;IAC3C,OAAgB,MAAM,4BAAsC;IAI5D;;;OAGG;IAEH,QAAQ,UAAS;IAEjB;;;OAGG;IAEH,QAAQ,UAAS;IAEjB;;;OAGG;IAEH,QAAQ,UAAS;IAIjB;;;OAGG;IACM,OAAO,CAAC,YAAY,CAAS;IAEtC;;;OAGG;IACM,OAAO,CAAC,aAAa,CAAS;IAEvC;;;OAGG;IACM,OAAO,CAAC,UAAU,CAAM;IAEjC;;;;OAIG;IACM,OAAO,CAAC,MAAM,CAAK;IAC5B;;;OAGG;IACM,OAAO,CAAC,SAAS,CAAK;IAC/B;;;OAGG;IACM,OAAO,CAAC,QAAQ,CAAK;IAC9B;;;OAGG;IACM,OAAO,CAAC,WAAW,CAAS;IAErC,gBAAgB;IACI,OAAO,CAAC,UAAU,CAAsB;IAI5D;;;OAGG;IACH,IAAI,aAAa,IAAI,OAAO,CAE3B;IAED;;;;OAIG;IACH,OAAO,CAAC,mBAAmB;IAiC3B;;;;;OAKG;IACH,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,GAAG,IAAI;IASnF,iBAAiB,IAAI,IAAI;IAOlC;;;OAGG;IACH,OAAO,CAAC,yBAAyB;IAMjC;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IAW9B;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAM1B;;;OAGG;IACH,OAAO,CAAC,eAAe;IAWvB;;;OAGG;IACH,OAAO,CAAC,cAAc;IAgCtB;;;;;OAKG;IACH,eAAe,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI;IAItC,iDAAiD;IACxC,KAAK,IAAI,IAAI;IAMtB;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAmBhB,MAAM;CAyChB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,cAAc,EAAE,aAAa,CAAC;KAC/B;CACF;AAED,oGAAoG;AACpG,MAAM,MAAM,UAAU,GAAG,aAAa,CAAC;AAEvC,kGAAkG;AAClG,MAAM,MAAM,UAAU,GAAG,aAAa,CAAC"}
1
+ {"version":3,"file":"hx-tree-item.d.ts","sourceRoot":"","sources":["../../../src/components/hx-tree-view/hx-tree-item.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAiB,MAAM,KAAK,CAAC;AAMhD,uDAAuD;AACvD,MAAM,WAAW,sBAAsB;IACrC,oDAAoD;IACpD,IAAI,EAAE,aAAa,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBACa,aAAc,SAAQ,UAAU;IAC3C,OAAgB,MAAM,4BAAsC;IAI5D;;;OAGG;IAEH,QAAQ,UAAS;IAEjB;;;OAGG;IAEH,QAAQ,UAAS;IAEjB;;;OAGG;IAEH,QAAQ,UAAS;IAIjB;;;OAGG;IACM,OAAO,CAAC,YAAY,CAAS;IAEtC;;;OAGG;IACM,OAAO,CAAC,aAAa,CAAS;IAEvC;;;OAGG;IACM,OAAO,CAAC,UAAU,CAAM;IAEjC;;;;OAIG;IACM,OAAO,CAAC,MAAM,CAAK;IAC5B;;;OAGG;IACM,OAAO,CAAC,SAAS,CAAK;IAC/B;;;OAGG;IACM,OAAO,CAAC,QAAQ,CAAK;IAC9B;;;OAGG;IACM,OAAO,CAAC,WAAW,CAAS;IAErC,gBAAgB;IACI,OAAO,CAAC,UAAU,CAAsB;IAI5D;;;OAGG;IACH,IAAI,aAAa,IAAI,OAAO,CAE3B;IAED;;;OAGG;IACH,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED;;;;OAIG;IACH,OAAO,CAAC,mBAAmB;IAiC3B;;;;;OAKG;IACH,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,GAAG,IAAI;IASnF,iBAAiB,IAAI,IAAI;IAOlC;;;OAGG;IACH,OAAO,CAAC,yBAAyB;IAMjC;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IAW9B;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAM1B;;;OAGG;IACH,OAAO,CAAC,eAAe;IAWvB;;;OAGG;IACH,OAAO,CAAC,cAAc;IAgCtB;;;;;OAKG;IACH,eAAe,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI;IAItC,iDAAiD;IACxC,KAAK,IAAI,IAAI;IAMtB;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAmBhB,MAAM;CA0ChB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,cAAc,EAAE,aAAa,CAAC;KAC/B;CACF;AAED,oGAAoG;AACpG,MAAM,MAAM,UAAU,GAAG,aAAa,CAAC;AAEvC,kGAAkG;AAClG,MAAM,MAAM,UAAU,GAAG,aAAa,CAAC"}
@@ -94,6 +94,12 @@ export declare class HelixTreeView extends LitElement {
94
94
  private _handleTreeItemSelect;
95
95
  /** @internal */
96
96
  private _handleKeyDown;
97
+ /**
98
+ * Finds the next visible item (starting after `currentIndex`, wrapping around) whose
99
+ * label text begins with the given lowercase character. Returns -1 if no match.
100
+ * @internal
101
+ */
102
+ private _findTypeaheadMatch;
97
103
  /** @internal */
98
104
  private _handleFocusIn;
99
105
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"hx-tree-view.d.ts","sourceRoot":"","sources":["../../../src/components/hx-tree-view/hx-tree-view.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAiB,MAAM,KAAK,CAAC;AAIhD,OAAO,KAAK,EAAE,aAAa,EAA0B,MAAM,mBAAmB,CAAC;AAG/E,mCAAmC;AACnC,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,QAAQ,GAAG,UAAU,CAAC;AAE3D,6CAA6C;AAC7C,MAAM,WAAW,cAAc;IAC7B,qDAAqD;IACrD,IAAI,EAAE,aAAa,CAAC;IACpB,wCAAwC;IACxC,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,qBACa,aAAc,SAAQ,UAAU;IAC3C,OAAgB,MAAM,4BAAsC;IAI5D;;;;OAIG;IAEH,KAAK,SAAM;IAEX;;;;;;OAMG;IAEH,SAAS,EAAE,MAAM,GAAG,QAAQ,GAAG,UAAU,CAAU;IAInD,gBAAgB;IACP,OAAO,CAAC,aAAa,CAAK;IAEnC,uFAAuF;IACvF,gBAAgB;IACP,OAAO,CAAC,gBAAgB,CAAS;IAI1C;;;;OAIG;IACH,OAAO,CAAC,mBAAmB,CAAgC;IAE3D;;;OAGG;IACH,OAAO,CAAC,4BAA4B;IAMpC;;;OAGG;IACH,gBAAgB;IAChB,OAAO,CAAC,gBAAgB;IAOxB,gBAAgB;IAChB,OAAO,CAAC,oBAAoB;IAgB5B,gBAAgB;IAChB,OAAO,CAAC,iBAAiB;IAIzB;;;;OAIG;IACH,gBAAgB;IAChB,OAAO,CAAC,qBAAqB;IAM7B,gBAAgB;IAChB,OAAO,CAAC,UAAU;IAWlB,gBAAgB;IAChB,OAAO,CAAC,qBAAqB;IA0B7B,gBAAgB;IAChB,OAAO,CAAC,cAAc;IA0EtB,gBAAgB;IAChB,OAAO,CAAC,cAAc;IAYtB;;;;;OAKG;IACH,OAAO,CAAC,+BAA+B;IAavC;;;;;;OAMG;IACH,gBAAgB;IAChB,OAAO,CAAC,iBAAiB;IAehB,YAAY,IAAI,IAAI;IAWpB,MAAM;CA2BhB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,cAAc,EAAE,aAAa,CAAC;KAC/B;CACF;AAED,oGAAoG;AACpG,MAAM,MAAM,UAAU,GAAG,aAAa,CAAC;AAEvC,kGAAkG;AAClG,MAAM,MAAM,UAAU,GAAG,aAAa,CAAC"}
1
+ {"version":3,"file":"hx-tree-view.d.ts","sourceRoot":"","sources":["../../../src/components/hx-tree-view/hx-tree-view.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAiB,MAAM,KAAK,CAAC;AAIhD,OAAO,KAAK,EAAE,aAAa,EAA0B,MAAM,mBAAmB,CAAC;AAG/E,mCAAmC;AACnC,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,QAAQ,GAAG,UAAU,CAAC;AAE3D,6CAA6C;AAC7C,MAAM,WAAW,cAAc;IAC7B,qDAAqD;IACrD,IAAI,EAAE,aAAa,CAAC;IACpB,wCAAwC;IACxC,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,qBACa,aAAc,SAAQ,UAAU;IAC3C,OAAgB,MAAM,4BAAsC;IAI5D;;;;OAIG;IAEH,KAAK,SAAM;IAEX;;;;;;OAMG;IAEH,SAAS,EAAE,MAAM,GAAG,QAAQ,GAAG,UAAU,CAAU;IAInD,gBAAgB;IACP,OAAO,CAAC,aAAa,CAAK;IAEnC,uFAAuF;IACvF,gBAAgB;IACP,OAAO,CAAC,gBAAgB,CAAS;IAI1C;;;;OAIG;IACH,OAAO,CAAC,mBAAmB,CAAgC;IAE3D;;;OAGG;IACH,OAAO,CAAC,4BAA4B;IAMpC;;;OAGG;IACH,gBAAgB;IAChB,OAAO,CAAC,gBAAgB;IAOxB,gBAAgB;IAChB,OAAO,CAAC,oBAAoB;IAgB5B,gBAAgB;IAChB,OAAO,CAAC,iBAAiB;IAIzB;;;;OAIG;IACH,gBAAgB;IAChB,OAAO,CAAC,qBAAqB;IAM7B,gBAAgB;IAChB,OAAO,CAAC,UAAU;IAWlB,gBAAgB;IAChB,OAAO,CAAC,qBAAqB;IA0B7B,gBAAgB;IAChB,OAAO,CAAC,cAAc;IA0FtB;;;;OAIG;IACH,OAAO,CAAC,mBAAmB;IAa3B,gBAAgB;IAChB,OAAO,CAAC,cAAc;IAYtB;;;;;OAKG;IACH,OAAO,CAAC,+BAA+B;IAavC;;;;;;OAMG;IACH,gBAAgB;IAChB,OAAO,CAAC,iBAAiB;IAehB,YAAY,IAAI,IAAI;IAWpB,MAAM;CA2BhB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,cAAc,EAAE,aAAa,CAAC;KAC/B;CACF;AAED,oGAAoG;AACpG,MAAM,MAAM,UAAU,GAAG,aAAa,CAAC;AAEvC,kGAAkG;AAClG,MAAM,MAAM,UAAU,GAAG,aAAa,CAAC"}
@@ -1,4 +1,4 @@
1
- import { H as a, a as i } from "../../shared/hx-tree-item-DTDIBRrI.js";
1
+ import { H as a, a as i } from "../../shared/hx-tree-item-C1PhX-HE.js";
2
2
  export {
3
3
  a as HelixTreeItem,
4
4
  i as HelixTreeView
@@ -4335,6 +4335,8 @@ export const helixGridItemStyles = css`
4335
4335
  0 2px 4px -2px rgb(0 0 0 / 0.1)
4336
4336
  );
4337
4337
  min-width: var(--hx-menu-min-width, 10rem);
4338
+ max-height: var(--hx-menu-max-height, 20rem);
4339
+ overflow-y: auto;
4338
4340
  outline: none;
4339
4341
  }
4340
4342
  /* ── hx-meter ── */
@@ -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 ── */
@@ -17,5 +17,7 @@
17
17
  0 2px 4px -2px rgb(0 0 0 / 0.1)
18
18
  );
19
19
  min-width: var(--hx-menu-min-width, 10rem);
20
+ max-height: var(--hx-menu-max-height, 20rem);
21
+ overflow-y: auto;
20
22
  outline: none;
21
23
  }
@@ -1,4 +1,4 @@
1
- /* index.css — generated 2026-03-27T14:44:53.806Z */
1
+ /* index.css — generated 2026-03-28T01:29:42.072Z */
2
2
  /* Imports all per-component CSS files for Drupal asset pipeline */
3
3
 
4
4
  @import './hx-accordion.css';
@@ -1,5 +1,5 @@
1
1
  {
2
- "generated": "2026-03-27T14:44:53.805Z",
2
+ "generated": "2026-03-28T01:29:42.071Z",
3
3
  "components": [
4
4
  {
5
5
  "name": "hx-accordion",
@@ -1203,6 +1203,7 @@
1203
1203
  "--hx-menu-bg",
1204
1204
  "--hx-menu-border-color",
1205
1205
  "--hx-menu-border-radius",
1206
+ "--hx-menu-max-height",
1206
1207
  "--hx-menu-min-width",
1207
1208
  "--hx-space-1"
1208
1209
  ]
package/dist/index.js CHANGED
@@ -4,7 +4,7 @@ import { H as S } from "./shared/hx-alert-DRZYP0Oo.js";
4
4
  import { H as g } from "./shared/hx-avatar-CZfA9KEl.js";
5
5
  import { H as v } from "./shared/hx-badge-Xg7zoh4Q.js";
6
6
  import { H as y } from "./shared/hx-banner-2RS7Nux4.js";
7
- import { H as E, a as B } from "./shared/hx-breadcrumb-item-B2rjepqy.js";
7
+ import { H as E, a as B } from "./shared/hx-breadcrumb-item-CObc-WJl.js";
8
8
  import { H as w } from "./shared/hx-button-CC1YH9RZ.js";
9
9
  import { H as A } from "./shared/hx-button-group-ChTQsnQj.js";
10
10
  import { H as L } from "./shared/hx-card-dIKdcMhr.js";
@@ -36,12 +36,12 @@ import { H as Ae } from "./shared/hx-icon-button-Et9wq79n.js";
36
36
  import { H as Le } from "./shared/hx-image-DUsEi-oN.js";
37
37
  import { H as Ne } from "./shared/hx-link-Peg2LzOD.js";
38
38
  import { H as Ge, a as Ue } from "./shared/hx-list-DwInEX2H.js";
39
- import { H as Ve, a as Oe, b as We } from "./shared/hx-menu-divider-DR4G_rqw.js";
39
+ import { H as Ve, a as Oe, b as We } from "./shared/hx-menu-divider-puPmRAdN.js";
40
40
  import { H as Ye } from "./shared/hx-meter-CVs4A649.js";
41
- import { H as qe } from "./shared/hx-nav-D377Ngz4.js";
41
+ import { H as qe } from "./shared/hx-nav-CiyqaW2I.js";
42
42
  import { H as Je } from "./shared/hx-number-input-BPgrlMLN.js";
43
43
  import { H as Qe } from "./shared/hx-overflow-menu-Bz02LPPk.js";
44
- import { H as eo } from "./shared/hx-pagination-DYhYPqDn.js";
44
+ import { H as eo } from "./shared/hx-pagination-Cb9UEWXz.js";
45
45
  import { H as to } from "./shared/hx-patient-banner-wk4qWmsH.js";
46
46
  import { H as ao } from "./shared/hx-phi-field-DX9z3nu0.js";
47
47
  import { H as so } from "./shared/hx-popover-D6kYQkt3.js";
@@ -66,7 +66,7 @@ import { H as Yo, a as jo } from "./shared/hx-structured-list-Db9rwLI_.js";
66
66
  import { H as zo } from "./shared/hx-style-scope-BroUu83L.js";
67
67
  import { H as Ko } from "./shared/hx-switch-C0Lp5RGy.js";
68
68
  import { H as Zo, a as et, b as ot, c as tt, d as rt, e as at, f as it } from "./shared/hx-td-DZuILY3s.js";
69
- import { H as xt, a as Ht, b as lt } from "./shared/hx-tab-panel-GGjk6Qg4.js";
69
+ import { H as xt, a as Ht, b as lt } from "./shared/hx-tab-panel-Dnt8aA74.js";
70
70
  import { H as nt } from "./shared/hx-tag-K5fCjfqQ.js";
71
71
  import { H as ft } from "./shared/hx-text-DoEVOf47.js";
72
72
  import { F as dt, H as ht } from "./shared/hx-text-input-DTKWPVdy.js";
@@ -77,7 +77,7 @@ import { H as vt, a as _t, t as yt } from "./shared/toast-factory-f184Gi70.js";
77
77
  import { H as Et } from "./shared/hx-toggle-button-CPFqs3eQ.js";
78
78
  import { H as Pt } from "./shared/hx-tooltip-CrO4vzeX.js";
79
79
  import { H as kt } from "./shared/hx-top-nav-DYlnzDaU.js";
80
- import { H as Ft, a as Lt } from "./shared/hx-tree-item-DTDIBRrI.js";
80
+ import { H as Ft, a as Lt } from "./shared/hx-tree-item-C1PhX-HE.js";
81
81
  import { H as Nt } from "./shared/hx-visually-hidden-CCTQTjbR.js";
82
82
  import { H as Gt, c as Ut, r as $t } from "./shared/id-counter-JhvVCnjh.js";
83
83
  function n(t, e) {
@@ -48,8 +48,10 @@ let o = class extends u {
48
48
  super(...arguments), this.separator = "/", this.label = "Breadcrumb", this.maxItems = 0, this.labelEllipsis = "Show all breadcrumb items", this.jsonLd = !1, this._ellipsisItem = null, this._jsonLdScript = null, this._boundEllipsisClick = (t) => this._handleEllipsisClick(t), this._boundEllipsisKeydown = (t) => this._handleEllipsisKeydown(t), this._managedCurrentItems = /* @__PURE__ */ new WeakSet(), this._jsonLdId = `hx-breadcrumb-ld-${++o._instanceCounter}`;
49
49
  }
50
50
  // ─── Item Helpers ───
51
- /** Returns only real breadcrumb items, excluding the managed ellipsis element. */
52
- /** @internal */
51
+ /**
52
+ * Returns only real breadcrumb items, excluding the managed ellipsis element.
53
+ * @internal
54
+ */
53
55
  _getBreadcrumbItems(t) {
54
56
  return t.assignedElements({ flatten: !0 }).filter(
55
57
  (e) => e.tagName.toLowerCase() === "hx-breadcrumb-item" && !e.classList.contains("hx-bc-ellipsis")
@@ -64,8 +66,8 @@ let o = class extends u {
64
66
  *
65
67
  * This separation allows Drupal to control current-page marking without
66
68
  * relying on item order.
69
+ * @internal
67
70
  */
68
- /** @internal */
69
71
  _applyItemAttributes(t) {
70
72
  const e = t.some(
71
73
  (s) => s.hasAttribute("current") && !this._managedCurrentItems.has(s)
@@ -127,16 +129,16 @@ let o = class extends u {
127
129
  /**
128
130
  * Expands a collapsed breadcrumb by resetting maxItems to 0.
129
131
  * Called by the ellipsis expand button (click or Enter/Space).
132
+ * @internal
130
133
  */
131
- /** @internal */
132
134
  _expandBreadcrumb() {
133
135
  this.maxItems = 0;
134
136
  }
135
137
  // ─── JSON-LD ───
136
138
  /**
137
139
  * JSON-LD ListItem entry with typed fields to avoid Record<string, unknown>.
140
+ * @internal
138
141
  */
139
- /** @internal */
140
142
  _buildListItem(t, e) {
141
143
  var a;
142
144
  const s = t.getAttribute("href"), i = ((a = t.textContent) == null ? void 0 : a.trim()) ?? "", r = {
@@ -332,4 +334,4 @@ export {
332
334
  o as H,
333
335
  c as a
334
336
  };
335
- //# sourceMappingURL=hx-breadcrumb-item-B2rjepqy.js.map
337
+ //# sourceMappingURL=hx-breadcrumb-item-CObc-WJl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hx-breadcrumb-item-CObc-WJl.js","sources":["../../src/components/hx-breadcrumb/hx-breadcrumb.styles.ts","../../src/components/hx-breadcrumb/hx-breadcrumb.ts","../../src/components/hx-breadcrumb/hx-breadcrumb-item.styles.ts","../../src/components/hx-breadcrumb/hx-breadcrumb-item.ts"],"sourcesContent":["import { css } from 'lit';\n\nexport const helixBreadcrumbStyles = css`\n :host {\n display: block;\n font-family: var(\n --hx-breadcrumb-font-family,\n var(--hx-font-family-sans, system-ui, sans-serif)\n );\n font-size: var(--hx-breadcrumb-font-size, var(--hx-font-size-sm, 0.875rem));\n }\n\n [part='nav'] {\n /* nav landmark — no additional styling needed */\n }\n\n [part='list'] {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n list-style: none;\n margin: 0;\n padding: 0;\n gap: 0;\n }\n\n /* Hide middle items when collapsed via maxItems */\n ::slotted([data-bc-hidden]) {\n display: none;\n }\n\n /* Visually hide the separator slot — used only to read text content.\n * display:none is intentional: the slot contains no interactive or focusable\n * content. If a future change adds focusable elements to this slot, switch to\n * visibility:hidden + position:absolute to preserve focus reachability. */\n .separator-slot {\n display: none;\n }\n`;\n","import { LitElement, html, type PropertyValues } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { tokenStyles } from '@helixui/tokens/lit';\nimport { helixBreadcrumbStyles } from './hx-breadcrumb.styles.js';\n\n/** Typed schema.org ListItem entry for JSON-LD BreadcrumbList structured data. */\ninterface JsonLdListItem {\n '@type': string;\n position: number;\n name: string;\n item?: string;\n}\n\n/**\n * Hierarchical page path navigation showing current location in site structure.\n *\n * @summary Navigation breadcrumb showing the page hierarchy. Works with Drupal's breadcrumb system.\n *\n * @tag hx-breadcrumb\n *\n * @slot - Default slot for hx-breadcrumb-item children.\n * @slot separator - Optional separator element. Its text content overrides the `separator` property.\n *\n * @csspart nav - The nav landmark element.\n * @csspart list - The ordered list containing items.\n *\n * @cssprop [--hx-breadcrumb-separator-content='/'] - Separator character between items.\n * NOTE: If overriding this custom property directly in CSS (rather than via the `separator`\n * attribute), the value MUST be quoted: `--hx-breadcrumb-separator-content: \">\"`. An unquoted\n * value is invalid for the CSS `content` property and will silently render nothing.\n * @cssprop [--hx-breadcrumb-separator-color=var(--hx-color-neutral-400)] - Separator color.\n * @cssprop [--hx-breadcrumb-separator-gap=var(--hx-space-1)] - Horizontal gap around separators.\n * @cssprop [--hx-breadcrumb-font-size=var(--hx-font-size-sm)] - Font size.\n * @cssprop [--hx-breadcrumb-link-color=var(--hx-color-primary-600)] - Link color.\n * @cssprop [--hx-breadcrumb-link-hover-color=var(--hx-color-primary-700)] - Link hover color.\n * @cssprop [--hx-breadcrumb-text-color=var(--hx-color-neutral-700)] - Current page text color.\n * @cssprop [--hx-breadcrumb-item-max-width] - Max-width for item text truncation (e.g. `12rem`).\n */\n@customElement('hx-breadcrumb')\nexport class HelixBreadcrumb extends LitElement {\n static override styles = [tokenStyles, helixBreadcrumbStyles];\n\n /**\n * Per-instance counter used to generate stable, deterministic IDs for the\n * injected JSON-LD script tags. Deterministic IDs (vs Math.random()) allow\n * SSR frameworks to match server-rendered script tags during hydration.\n * @internal\n */\n private static _instanceCounter = 0;\n\n /**\n * The separator character displayed between breadcrumb items.\n * @attr separator\n */\n @property({ type: String })\n separator = '/';\n\n /**\n * The accessible label for the nav landmark.\n * @attr label\n */\n @property({ type: String })\n label = 'Breadcrumb';\n\n /**\n * Maximum number of items to show before collapsing middle items with an ellipsis.\n * Set to 0 (default) to show all items. The ellipsis is a keyboard-accessible\n * button; activating it expands the full breadcrumb by setting maxItems to 0.\n * @attr max-items\n */\n @property({ type: Number, attribute: 'max-items' })\n maxItems = 0;\n\n /**\n * Accessible label for the expand ellipsis button. Override for i18n.\n * @attr label-ellipsis\n */\n @property({ attribute: 'label-ellipsis' }) labelEllipsis = 'Show all breadcrumb items';\n\n /**\n * When true, injects a JSON-LD BreadcrumbList structured data script into the document head.\n *\n * NOTE: Drupal manages `<head>` content via its own render pipeline. Injecting a\n * `<script>` directly via `document.head.appendChild()` in a Drupal context:\n * 1. Bypasses Drupal's deduplication and `hook_html_head_alter()` hook.\n * 2. Is not cacheable by Drupal's page cache.\n * 3. Will be wiped on BigPipe partial page replacements.\n *\n * For Drupal integrations, leave `json-ld` false and use the structured data\n * Twig template instead (see `hx-breadcrumb.twig` in the component directory).\n *\n * @attr json-ld\n */\n @property({ type: Boolean, attribute: 'json-ld' })\n jsonLd = false;\n\n /** @internal */\n private _ellipsisItem: Element | null = null;\n /** @internal */\n private _jsonLdScript: HTMLScriptElement | null = null;\n /** @internal */\n private readonly _boundEllipsisClick = (e: Event) => this._handleEllipsisClick(e);\n /** @internal */\n private readonly _boundEllipsisKeydown = (e: Event) => this._handleEllipsisKeydown(e);\n\n /**\n * Tracks which items had their `current` attribute set by this component\n * (as opposed to set by a consumer/Drupal template). This lets us re-evaluate\n * positional current-page detection on each slotchange without incorrectly\n * treating a previously component-set `current` attribute as a consumer-set\n * explicit override.\n * @internal\n */\n private readonly _managedCurrentItems = new WeakSet<Element>();\n\n /**\n * Stable per-instance ID used to tag the injected script element so that\n * multiple hx-breadcrumb instances on the same page don't produce conflicting\n * or duplicate structured-data blocks. Each instance owns exactly one script\n * tag identified by this ID; any stale tag from a previous render cycle is\n * removed before a new one is inserted.\n *\n * Uses a static counter (not Math.random()) so IDs are deterministic across\n * server and client renders, enabling SSR hydration matching.\n * @internal\n */\n private readonly _jsonLdId = `hx-breadcrumb-ld-${++HelixBreadcrumb._instanceCounter}`;\n\n // ─── Item Helpers ───\n\n /**\n * Returns only real breadcrumb items, excluding the managed ellipsis element.\n * @internal\n */\n private _getBreadcrumbItems(slot: HTMLSlotElement): Element[] {\n return slot\n .assignedElements({ flatten: true })\n .filter(\n (el) =>\n el.tagName.toLowerCase() === 'hx-breadcrumb-item' &&\n !el.classList.contains('hx-bc-ellipsis'),\n );\n }\n\n /**\n * Applies aria/state attributes to the item list.\n *\n * Current-page detection: if any item has an explicit `current` attribute\n * (e.g. set by a Drupal Twig template), that item is treated as the current\n * page. Otherwise the last item is the current page (default behaviour).\n *\n * This separation allows Drupal to control current-page marking without\n * relying on item order.\n * @internal\n */\n private _applyItemAttributes(items: Element[]): void {\n // Detect consumer-set 'current' attributes. An item has an explicit consumer\n // current if it has the 'current' attribute AND the component did not set it\n // (tracked via _managedCurrentItems). This prevents component-managed state\n // from being misread as a consumer override on subsequent slotchange events.\n const hasExplicitCurrent = items.some(\n (el) => el.hasAttribute('current') && !this._managedCurrentItems.has(el),\n );\n\n items.forEach((item, i) => {\n const el = item as HTMLElement;\n const isLast = i === items.length - 1;\n\n // Separator hiding: always positional — last item has no trailing separator.\n if (isLast) {\n el.setAttribute('data-bc-last', '');\n } else {\n el.removeAttribute('data-bc-last');\n }\n\n // Current-page marker: explicit consumer attribute wins over positional last.\n // The item component renders aria-current=\"page\" on its inner element\n // based on this attribute (see hx-breadcrumb-item.ts).\n if (!hasExplicitCurrent) {\n if (isLast) {\n el.setAttribute('current', '');\n this._managedCurrentItems.add(el);\n } else {\n el.removeAttribute('current');\n this._managedCurrentItems.delete(el);\n }\n }\n // When hasExplicitCurrent is true, leave 'current' attributes as-is so\n // consumer or Drupal template markup is not overridden.\n });\n }\n\n // ─── Slot Handling ───\n\n /** @internal */\n private _handleSlotChange(e: Event): void {\n if (!(e.target instanceof HTMLSlotElement)) return;\n const items = this._getBreadcrumbItems(e.target);\n\n // Handle collapse behaviour\n if (this.maxItems > 0 && items.length > this.maxItems) {\n this._applyCollapse(items);\n } else {\n this._removeCollapse(items);\n }\n\n this._applyItemAttributes(items);\n\n if (this.jsonLd) {\n this._updateJsonLd(items);\n }\n }\n\n /** @internal */\n private _handleSeparatorSlotChange(e: Event): void {\n if (!(e.target instanceof HTMLSlotElement)) return;\n const assigned = e.target.assignedElements({ flatten: true });\n if (assigned.length > 0) {\n const text = (assigned[0] as HTMLElement).textContent?.trim() ?? '';\n this.style.setProperty('--hx-breadcrumb-separator-content', JSON.stringify(text));\n }\n }\n\n // ─── Collapse ───\n\n /** @internal */\n private _applyCollapse(items: Element[]): void {\n // Show only first and last; hide all middle items\n items.forEach((item, i) => {\n const el = item as HTMLElement;\n if (i === 0 || i === items.length - 1) {\n el.removeAttribute('data-bc-hidden');\n } else {\n el.setAttribute('data-bc-hidden', '');\n }\n });\n\n // Create the ellipsis element once (guard for SSR — document is unavailable server-side)\n if (!this._ellipsisItem && typeof document !== 'undefined') {\n const ellipsis = document.createElement('hx-breadcrumb-item');\n ellipsis.classList.add('hx-bc-ellipsis');\n\n // Keyboard-accessible expand button. Events handled via host-level delegation\n // in _handleEllipsisClick / _handleEllipsisKeydown.\n const btn = document.createElement('button');\n btn.type = 'button';\n btn.textContent = '…';\n btn.setAttribute('aria-label', this.labelEllipsis);\n ellipsis.appendChild(btn);\n\n this._ellipsisItem = ellipsis;\n }\n\n // Insert ellipsis after first item only if not already correctly placed\n const firstItem = items[0];\n if (!firstItem || !this._ellipsisItem) return;\n if (this._ellipsisItem.previousElementSibling !== firstItem) {\n firstItem.after(this._ellipsisItem);\n }\n }\n\n /** @internal */\n private _removeCollapse(items: Element[]): void {\n items.forEach((item) => {\n (item as HTMLElement).removeAttribute('data-bc-hidden');\n });\n\n if (this._ellipsisItem?.isConnected) {\n this._ellipsisItem.remove();\n }\n }\n\n /** @internal */\n private _handleEllipsisClick(e: Event): void {\n if ((e.target as Element)?.closest?.('.hx-bc-ellipsis')) {\n this._expandBreadcrumb();\n }\n }\n\n /** @internal */\n private _handleEllipsisKeydown(e: Event): void {\n if (!(e instanceof KeyboardEvent)) return;\n if (e.key === 'Enter' || e.key === ' ') {\n if ((e.target as Element)?.closest?.('.hx-bc-ellipsis')) {\n e.preventDefault();\n this._expandBreadcrumb();\n }\n }\n }\n\n /**\n * Expands a collapsed breadcrumb by resetting maxItems to 0.\n * Called by the ellipsis expand button (click or Enter/Space).\n * @internal\n */\n private _expandBreadcrumb(): void {\n this.maxItems = 0;\n // updated() will detect the maxItems change and call _removeCollapse.\n }\n\n // ─── JSON-LD ───\n\n /**\n * JSON-LD ListItem entry with typed fields to avoid Record<string, unknown>.\n * @internal\n */\n private _buildListItem(item: Element, position: number): JsonLdListItem {\n const href = (item as HTMLElement).getAttribute('href');\n const name = (item as HTMLElement).textContent?.trim() ?? '';\n const entry: JsonLdListItem = {\n '@type': 'ListItem',\n position,\n name,\n };\n if (href) entry.item = href;\n return entry;\n }\n\n /** @internal */\n private _updateJsonLd(items: Element[]): void {\n const schema = {\n '@context': 'https://schema.org',\n '@type': 'BreadcrumbList',\n itemListElement: items.map((item, i) => this._buildListItem(item, i + 1)),\n };\n\n // Guard for SSR — document is unavailable server-side\n if (typeof document === 'undefined') return;\n\n if (!this._jsonLdScript) {\n // Dedup guard: remove any stale script with this instance's ID before\n // creating a fresh one. This handles the edge case where the element was\n // reconnected to the DOM after being disconnected without the script\n // reference being re-established.\n document.getElementById(this._jsonLdId)?.remove();\n\n this._jsonLdScript = document.createElement('script');\n this._jsonLdScript.type = 'application/ld+json';\n this._jsonLdScript.id = this._jsonLdId;\n this._jsonLdScript.setAttribute('data-hx-breadcrumb', '');\n document.head.appendChild(this._jsonLdScript);\n }\n\n this._jsonLdScript.textContent = JSON.stringify(schema);\n }\n\n /** @internal */\n private _removeJsonLd(): void {\n this._jsonLdScript?.remove();\n this._jsonLdScript = null;\n }\n\n // ─── Lifecycle ───\n\n override connectedCallback(): void {\n super.connectedCallback();\n this.addEventListener('click', this._boundEllipsisClick);\n this.addEventListener('keydown', this._boundEllipsisKeydown);\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this.removeEventListener('click', this._boundEllipsisClick);\n this.removeEventListener('keydown', this._boundEllipsisKeydown);\n this._removeJsonLd();\n }\n\n override updated(changedProperties: PropertyValues<this>): void {\n super.updated(changedProperties);\n\n if (changedProperties.has('separator')) {\n // JSON.stringify wraps the string in quotes so the value is valid\n // for use in the CSS `content` property (e.g. '/' becomes '\"/\"').\n this.style.setProperty('--hx-breadcrumb-separator-content', JSON.stringify(this.separator));\n }\n\n if (changedProperties.has('maxItems')) {\n // Re-evaluate collapse state when maxItems changes programmatically\n // (e.g. when the expand button resets maxItems to 0).\n const slot = this.shadowRoot?.querySelector<HTMLSlotElement>('slot:not([name])');\n if (slot) {\n const items = this._getBreadcrumbItems(slot);\n if (this.maxItems > 0 && items.length > this.maxItems) {\n this._applyCollapse(items);\n } else {\n this._removeCollapse(items);\n }\n this._applyItemAttributes(items);\n }\n }\n\n if (changedProperties.has('jsonLd')) {\n if (this.jsonLd) {\n // json-ld toggled on after initial render — inject script immediately.\n const slot = this.shadowRoot?.querySelector<HTMLSlotElement>('slot:not([name])');\n if (slot) {\n this._updateJsonLd(this._getBreadcrumbItems(slot));\n }\n } else {\n // json-ld toggled off — remove existing script.\n this._removeJsonLd();\n }\n }\n }\n\n // ─── Render ───\n\n override render() {\n return html`\n <nav part=\"nav\" aria-label=${this.label}>\n <ol part=\"list\">\n <slot @slotchange=${this._handleSlotChange}></slot>\n </ol>\n </nav>\n <slot\n name=\"separator\"\n class=\"separator-slot\"\n @slotchange=${this._handleSeparatorSlotChange}\n ></slot>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'hx-breadcrumb': HelixBreadcrumb;\n }\n}\n","import { css } from 'lit';\n\nexport const helixBreadcrumbItemStyles = css`\n :host {\n display: inline-flex;\n align-items: center;\n }\n\n /*\n * display: contents removes [part='item'] from the box model entirely.\n * This is intentional — the wrapper exists only for slot selection purposes.\n * Consumers using ::part(item) CANNOT apply box-model properties (padding,\n * margin, background, border) to this part. Use ::part(link) or ::part(text)\n * for visual styling of breadcrumb item content.\n */\n [part='item'] {\n display: contents;\n }\n\n [part='link'] {\n color: var(--hx-breadcrumb-link-color, var(--hx-color-primary-600));\n text-decoration: none;\n cursor: pointer;\n font-family: inherit;\n font-size: inherit;\n max-width: var(--hx-breadcrumb-item-max-width);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n [part='link']:hover {\n color: var(--hx-breadcrumb-link-hover-color, var(--hx-color-primary-700));\n text-decoration: underline;\n }\n\n [part='link']:focus-visible {\n outline: var(--hx-focus-ring-width, 2px) solid\n var(\n --hx-breadcrumb-link-focus-ring-color,\n var(--hx-focus-ring-color, var(--hx-color-primary-500))\n );\n outline-offset: var(--hx-focus-ring-offset, 2px);\n border-radius: var(--hx-border-radius-sm, 0.125rem);\n }\n\n [part='text'] {\n color: var(--hx-breadcrumb-text-color, var(--hx-color-neutral-700));\n font-family: inherit;\n font-size: inherit;\n max-width: var(--hx-breadcrumb-item-max-width);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n .separator {\n margin-inline: var(--hx-breadcrumb-separator-gap, var(--hx-space-1, 0.25rem));\n color: var(--hx-breadcrumb-separator-color, var(--hx-color-neutral-400));\n user-select: none;\n }\n\n .separator::before {\n content: var(--hx-breadcrumb-separator-content, '/');\n }\n\n /* Normalize buttons slotted into breadcrumb items (e.g. the expand-ellipsis button). */\n ::slotted(button) {\n background: none;\n border: none;\n cursor: pointer;\n font: inherit;\n color: inherit;\n padding: 0;\n }\n`;\n","import { LitElement, html, nothing } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { tokenStyles } from '@helixui/tokens/lit';\nimport { helixBreadcrumbItemStyles } from './hx-breadcrumb-item.styles.js';\n\n/**\n * A single breadcrumb navigation item.\n *\n * @summary A navigation item within an hx-breadcrumb component. Renders as a link when `href` is\n * provided, or as static text for the current page item. The current page item is determined by\n * the `current` attribute (set explicitly or automatically by the parent `hx-breadcrumb`).\n *\n * @tag hx-breadcrumb-item\n *\n * @slot - The link or page text content. Accepts text, HTML, or icon elements.\n *\n * @csspart item - Wrapper around the link or text content.\n * @csspart link - The anchor element when href is provided (non-current items only).\n * @csspart text - The span element for the current page or items without href.\n * @csspart separator - The separator element rendered after non-last items.\n *\n * @cssprop [--hx-breadcrumb-link-color=var(--hx-color-primary-600)] - Link text color.\n * @cssprop [--hx-breadcrumb-link-hover-color=var(--hx-color-primary-700)] - Link hover text color.\n * @cssprop [--hx-breadcrumb-text-color=var(--hx-color-neutral-700)] - Current page text color.\n * @cssprop [--hx-breadcrumb-separator-content='/'] - Separator character displayed after non-last items.\n * @cssprop [--hx-breadcrumb-separator-color=var(--hx-color-neutral-400)] - Separator color.\n * @cssprop [--hx-breadcrumb-separator-gap=var(--hx-space-1)] - Horizontal margin around separator.\n * @cssprop [--hx-breadcrumb-item-max-width] - Optional max-width for text truncation.\n * @cssprop [--hx-breadcrumb-link-focus-ring-color=var(--hx-focus-ring-color, var(--hx-color-primary-500))] - Focus ring color for breadcrumb links.\n */\n@customElement('hx-breadcrumb-item')\nexport class HelixBreadcrumbItem extends LitElement {\n static override styles = [tokenStyles, helixBreadcrumbItemStyles];\n\n override connectedCallback(): void {\n super.connectedCallback();\n // Only apply role=\"listitem\" when this item is a direct child of an\n // hx-breadcrumb element. Setting the role unconditionally when used\n // standalone (outside a list context) creates an invalid ARIA hierarchy\n // because listitem requires a list ancestor.\n //\n // IMPORTANT: If programmatically creating an ellipsis element, set aria-hidden\n // BEFORE inserting into the DOM. connectedCallback fires on insertion and sets\n // role=\"listitem\"; setting aria-hidden after would momentarily expose an\n // un-hidden listitem to the accessibility tree.\n if (this.closest('hx-breadcrumb') !== null) {\n this.setAttribute('role', 'listitem');\n } else {\n this.removeAttribute('role');\n }\n }\n\n /**\n * The URL for this breadcrumb link. Omit for the current page item.\n * When `current` is true, this attribute is ignored and the item always\n * renders as static text per WAI-ARIA APG breadcrumb guidance.\n * @attr href\n */\n @property({ type: String, reflect: true })\n href: string | undefined = undefined;\n\n /**\n * Whether this is the last item in the breadcrumb trail. Set by the parent\n * hx-breadcrumb component via the `data-bc-last` boolean attribute. When\n * present the trailing separator is hidden.\n *\n * @attr data-bc-last\n * @internal\n */\n @property({ type: Boolean, attribute: 'data-bc-last', reflect: true })\n dataBcLast = false;\n\n /**\n * Marks this item as the current page. When set, the item always renders as\n * static text (never a navigable link) and `aria-current=\"page\"` is placed on\n * the inner text element per WAI-ARIA APG breadcrumb guidance, yielding the\n * canonical AT announcement (\"current page, Patient Records\").\n *\n * Can be set explicitly by consumers (e.g. Drupal Twig templates) to override\n * the default positional last-item detection in `hx-breadcrumb`. When any item\n * in the breadcrumb has an explicit `current` attribute, the parent will not\n * override it.\n *\n * @attr current\n */\n @property({ type: Boolean, reflect: true })\n current = false;\n\n override render() {\n // Per WAI-ARIA APG, the current page item MUST NOT be a navigable link.\n // aria-current=\"page\" is placed on the inner element (not the listitem host)\n // for canonical AT announcement (\"current page, Patient Records\" vs\n // \"current page, list item\").\n return html`\n <span part=\"item\">\n ${this.current\n ? html`<span part=\"text\" aria-current=\"page\"><slot></slot></span>`\n : this.href\n ? html`<a part=\"link\" href=${this.href}><slot></slot></a>`\n : html`<span part=\"text\"><slot></slot></span>`}\n </span>\n ${!this.dataBcLast\n ? html`<span class=\"separator\" part=\"separator\" aria-hidden=\"true\"></span>`\n : nothing}\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'hx-breadcrumb-item': HelixBreadcrumbItem;\n }\n}\n"],"names":["helixBreadcrumbStyles","css","HelixBreadcrumb","LitElement","e","slot","el","items","hasExplicitCurrent","item","isLast","assigned","text","_a","ellipsis","btn","firstItem","_b","position","href","name","entry","schema","i","changedProperties","html","tokenStyles","__decorateClass","property","customElement","helixBreadcrumbItemStyles","HelixBreadcrumbItem","nothing"],"mappings":";;;AAEO,MAAMA,IAAwBC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;ACqC9B,IAAMC,IAAN,cAA8BC,EAAW;AAAA,EAAzC,cAAA;AAAA,UAAA,GAAA,SAAA,GAgBL,KAAA,YAAY,KAOZ,KAAA,QAAQ,cASR,KAAA,WAAW,GAMgC,KAAA,gBAAgB,6BAiB3D,KAAA,SAAS,IAGT,KAAQ,gBAAgC,MAExC,KAAQ,gBAA0C,MAElD,KAAiB,sBAAsB,CAACC,MAAa,KAAK,qBAAqBA,CAAC,GAEhF,KAAiB,wBAAwB,CAACA,MAAa,KAAK,uBAAuBA,CAAC,GAUpF,KAAiB,2CAA2B,QAAA,GAa5C,KAAiB,YAAY,oBAAoB,EAAEF,EAAgB,gBAAgB;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQ3E,oBAAoBG,GAAkC;AAC5D,WAAOA,EACJ,iBAAiB,EAAE,SAAS,GAAA,CAAM,EAClC;AAAA,MACC,CAACC,MACCA,EAAG,QAAQ,YAAA,MAAkB,wBAC7B,CAACA,EAAG,UAAU,SAAS,gBAAgB;AAAA,IAAA;AAAA,EAE/C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaQ,qBAAqBC,GAAwB;AAKnD,UAAMC,IAAqBD,EAAM;AAAA,MAC/B,CAACD,MAAOA,EAAG,aAAa,SAAS,KAAK,CAAC,KAAK,qBAAqB,IAAIA,CAAE;AAAA,IAAA;AAGzE,IAAAC,EAAM,QAAQ,CAACE,GAAM,MAAM;AACzB,YAAMH,IAAKG,GACLC,IAAS,MAAMH,EAAM,SAAS;AAGpC,MAAIG,IACFJ,EAAG,aAAa,gBAAgB,EAAE,IAElCA,EAAG,gBAAgB,cAAc,GAM9BE,MACCE,KACFJ,EAAG,aAAa,WAAW,EAAE,GAC7B,KAAK,qBAAqB,IAAIA,CAAE,MAEhCA,EAAG,gBAAgB,SAAS,GAC5B,KAAK,qBAAqB,OAAOA,CAAE;AAAA,IAKzC,CAAC;AAAA,EACH;AAAA;AAAA;AAAA,EAKQ,kBAAkBF,GAAgB;AACxC,QAAI,EAAEA,EAAE,kBAAkB,iBAAkB;AAC5C,UAAMG,IAAQ,KAAK,oBAAoBH,EAAE,MAAM;AAG/C,IAAI,KAAK,WAAW,KAAKG,EAAM,SAAS,KAAK,WAC3C,KAAK,eAAeA,CAAK,IAEzB,KAAK,gBAAgBA,CAAK,GAG5B,KAAK,qBAAqBA,CAAK,GAE3B,KAAK,UACP,KAAK,cAAcA,CAAK;AAAA,EAE5B;AAAA;AAAA,EAGQ,2BAA2BH,GAAgB;;AACjD,QAAI,EAAEA,EAAE,kBAAkB,iBAAkB;AAC5C,UAAMO,IAAWP,EAAE,OAAO,iBAAiB,EAAE,SAAS,IAAM;AAC5D,QAAIO,EAAS,SAAS,GAAG;AACvB,YAAMC,MAAQC,IAAAF,EAAS,CAAC,EAAkB,gBAA5B,gBAAAE,EAAyC,WAAU;AACjE,WAAK,MAAM,YAAY,qCAAqC,KAAK,UAAUD,CAAI,CAAC;AAAA,IAClF;AAAA,EACF;AAAA;AAAA;AAAA,EAKQ,eAAeL,GAAwB;AAY7C,QAVAA,EAAM,QAAQ,CAACE,GAAM,MAAM;AACzB,YAAMH,IAAKG;AACX,MAAI,MAAM,KAAK,MAAMF,EAAM,SAAS,IAClCD,EAAG,gBAAgB,gBAAgB,IAEnCA,EAAG,aAAa,kBAAkB,EAAE;AAAA,IAExC,CAAC,GAGG,CAAC,KAAK,iBAAiB,OAAO,WAAa,KAAa;AAC1D,YAAMQ,IAAW,SAAS,cAAc,oBAAoB;AAC5D,MAAAA,EAAS,UAAU,IAAI,gBAAgB;AAIvC,YAAMC,IAAM,SAAS,cAAc,QAAQ;AAC3C,MAAAA,EAAI,OAAO,UACXA,EAAI,cAAc,KAClBA,EAAI,aAAa,cAAc,KAAK,aAAa,GACjDD,EAAS,YAAYC,CAAG,GAExB,KAAK,gBAAgBD;AAAA,IACvB;AAGA,UAAME,IAAYT,EAAM,CAAC;AACzB,IAAI,CAACS,KAAa,CAAC,KAAK,iBACpB,KAAK,cAAc,2BAA2BA,KAChDA,EAAU,MAAM,KAAK,aAAa;AAAA,EAEtC;AAAA;AAAA,EAGQ,gBAAgBT,GAAwB;;AAC9C,IAAAA,EAAM,QAAQ,CAACE,MAAS;AACrB,MAAAA,EAAqB,gBAAgB,gBAAgB;AAAA,IACxD,CAAC,IAEGI,IAAA,KAAK,kBAAL,QAAAA,EAAoB,eACtB,KAAK,cAAc,OAAA;AAAA,EAEvB;AAAA;AAAA,EAGQ,qBAAqBT,GAAgB;;AAC3C,KAAKa,KAAAJ,IAAAT,EAAE,WAAF,gBAAAS,EAAsB,YAAtB,QAAAI,EAAA,KAAAJ,GAAgC,sBACnC,KAAK,kBAAA;AAAA,EAET;AAAA;AAAA,EAGQ,uBAAuBT,GAAgB;;AAC7C,IAAMA,aAAa,kBACfA,EAAE,QAAQ,WAAWA,EAAE,QAAQ,SAC5Ba,KAAAJ,IAAAT,EAAE,WAAF,gBAAAS,EAAsB,YAAtB,QAAAI,EAAA,KAAAJ,GAAgC,uBACnCT,EAAE,eAAA,GACF,KAAK,kBAAA;AAAA,EAGX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOQ,oBAA0B;AAChC,SAAK,WAAW;AAAA,EAElB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQQ,eAAeK,GAAeS,GAAkC;;AACtE,UAAMC,IAAQV,EAAqB,aAAa,MAAM,GAChDW,MAAQP,IAAAJ,EAAqB,gBAArB,gBAAAI,EAAkC,WAAU,IACpDQ,IAAwB;AAAA,MAC5B,SAAS;AAAA,MACT,UAAAH;AAAA,MACA,MAAAE;AAAA,IAAA;AAEF,WAAID,QAAY,OAAOA,IAChBE;AAAA,EACT;AAAA;AAAA,EAGQ,cAAcd,GAAwB;;AAC5C,UAAMe,IAAS;AAAA,MACb,YAAY;AAAA,MACZ,SAAS;AAAA,MACT,iBAAiBf,EAAM,IAAI,CAACE,GAAMc,MAAM,KAAK,eAAed,GAAMc,IAAI,CAAC,CAAC;AAAA,IAAA;AAI1E,IAAI,OAAO,WAAa,QAEnB,KAAK,mBAKRV,IAAA,SAAS,eAAe,KAAK,SAAS,MAAtC,QAAAA,EAAyC,UAEzC,KAAK,gBAAgB,SAAS,cAAc,QAAQ,GACpD,KAAK,cAAc,OAAO,uBAC1B,KAAK,cAAc,KAAK,KAAK,WAC7B,KAAK,cAAc,aAAa,sBAAsB,EAAE,GACxD,SAAS,KAAK,YAAY,KAAK,aAAa,IAG9C,KAAK,cAAc,cAAc,KAAK,UAAUS,CAAM;AAAA,EACxD;AAAA;AAAA,EAGQ,gBAAsB;;AAC5B,KAAAT,IAAA,KAAK,kBAAL,QAAAA,EAAoB,UACpB,KAAK,gBAAgB;AAAA,EACvB;AAAA;AAAA,EAIS,oBAA0B;AACjC,UAAM,kBAAA,GACN,KAAK,iBAAiB,SAAS,KAAK,mBAAmB,GACvD,KAAK,iBAAiB,WAAW,KAAK,qBAAqB;AAAA,EAC7D;AAAA,EAES,uBAA6B;AACpC,UAAM,qBAAA,GACN,KAAK,oBAAoB,SAAS,KAAK,mBAAmB,GAC1D,KAAK,oBAAoB,WAAW,KAAK,qBAAqB,GAC9D,KAAK,cAAA;AAAA,EACP;AAAA,EAES,QAAQW,GAA+C;;AAS9D,QARA,MAAM,QAAQA,CAAiB,GAE3BA,EAAkB,IAAI,WAAW,KAGnC,KAAK,MAAM,YAAY,qCAAqC,KAAK,UAAU,KAAK,SAAS,CAAC,GAGxFA,EAAkB,IAAI,UAAU,GAAG;AAGrC,YAAMnB,KAAOQ,IAAA,KAAK,eAAL,gBAAAA,EAAiB,cAA+B;AAC7D,UAAIR,GAAM;AACR,cAAME,IAAQ,KAAK,oBAAoBF,CAAI;AAC3C,QAAI,KAAK,WAAW,KAAKE,EAAM,SAAS,KAAK,WAC3C,KAAK,eAAeA,CAAK,IAEzB,KAAK,gBAAgBA,CAAK,GAE5B,KAAK,qBAAqBA,CAAK;AAAA,MACjC;AAAA,IACF;AAEA,QAAIiB,EAAkB,IAAI,QAAQ;AAChC,UAAI,KAAK,QAAQ;AAEf,cAAMnB,KAAOY,IAAA,KAAK,eAAL,gBAAAA,EAAiB,cAA+B;AAC7D,QAAIZ,KACF,KAAK,cAAc,KAAK,oBAAoBA,CAAI,CAAC;AAAA,MAErD;AAEE,aAAK,cAAA;AAAA,EAGX;AAAA;AAAA,EAIS,SAAS;AAChB,WAAOoB;AAAA,mCACwB,KAAK,KAAK;AAAA;AAAA,8BAEf,KAAK,iBAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAM9B,KAAK,0BAA0B;AAAA;AAAA;AAAA,EAGnD;AACF;AA9XavB,EACK,SAAS,CAACwB,GAAa1B,CAAqB;AADjDE,EASI,mBAAmB;AAOlCyB,EAAA;AAAA,EADCC,EAAS,EAAE,MAAM,OAAA,CAAQ;AAAA,GAff1B,EAgBX,WAAA,aAAA,CAAA;AAOAyB,EAAA;AAAA,EADCC,EAAS,EAAE,MAAM,OAAA,CAAQ;AAAA,GAtBf1B,EAuBX,WAAA,SAAA,CAAA;AASAyB,EAAA;AAAA,EADCC,EAAS,EAAE,MAAM,QAAQ,WAAW,aAAa;AAAA,GA/BvC1B,EAgCX,WAAA,YAAA,CAAA;AAM2CyB,EAAA;AAAA,EAA1CC,EAAS,EAAE,WAAW,iBAAA,CAAkB;AAAA,GAtC9B1B,EAsCgC,WAAA,iBAAA,CAAA;AAiB3CyB,EAAA;AAAA,EADCC,EAAS,EAAE,MAAM,SAAS,WAAW,WAAW;AAAA,GAtDtC1B,EAuDX,WAAA,UAAA,CAAA;AAvDWA,IAANyB,EAAA;AAAA,EADNE,EAAc,eAAe;AAAA,GACjB3B,CAAA;ACrCN,MAAM4B,IAA4B7B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;AC6BlC,IAAM8B,IAAN,cAAkC5B,EAAW;AAAA,EAA7C,cAAA;AAAA,UAAA,GAAA,SAAA,GA4BL,KAAA,OAA2B,QAW3B,KAAA,aAAa,IAgBb,KAAA,UAAU;AAAA,EAAA;AAAA,EApDD,oBAA0B;AACjC,UAAM,kBAAA,GAUF,KAAK,QAAQ,eAAe,MAAM,OACpC,KAAK,aAAa,QAAQ,UAAU,IAEpC,KAAK,gBAAgB,MAAM;AAAA,EAE/B;AAAA,EAsCS,SAAS;AAKhB,WAAOsB;AAAA;AAAA,UAED,KAAK,UACHA,gEACA,KAAK,OACHA,wBAA2B,KAAK,IAAI,uBACpCA,yCAA4C;AAAA;AAAA,QAEjD,KAAK,aAEJO,IADAP,sEACO;AAAA;AAAA,EAEf;AACF;AA3EaM,EACK,SAAS,CAACL,GAAaI,CAAyB;AA2BhEH,EAAA;AAAA,EADCC,EAAS,EAAE,MAAM,QAAQ,SAAS,IAAM;AAAA,GA3B9BG,EA4BX,WAAA,QAAA,CAAA;AAWAJ,EAAA;AAAA,EADCC,EAAS,EAAE,MAAM,SAAS,WAAW,gBAAgB,SAAS,IAAM;AAAA,GAtC1DG,EAuCX,WAAA,cAAA,CAAA;AAgBAJ,EAAA;AAAA,EADCC,EAAS,EAAE,MAAM,SAAS,SAAS,IAAM;AAAA,GAtD/BG,EAuDX,WAAA,WAAA,CAAA;AAvDWA,IAANJ,EAAA;AAAA,EADNE,EAAc,oBAAoB;AAAA,GACtBE,CAAA;"}