@openvoxproject/voxblocks 0.9.0 → 0.11.0

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 (49) hide show
  1. package/README.md +17 -9
  2. package/dist/cdn/voxblocks.css +1 -1
  3. package/dist/cdn/voxblocks.js +1987 -1279
  4. package/dist/types/components/accordion/vox-accordion.d.ts +2 -0
  5. package/dist/types/components/alert/vox-alert.d.ts +2 -1
  6. package/dist/types/components/callout/vox-callout.d.ts +2 -1
  7. package/dist/types/components/disclosure/vox-disclosure.d.ts +2 -0
  8. package/dist/types/components/dropdown/vox-dropdown.d.ts +3 -0
  9. package/dist/types/components/header/vox-header.d.ts +11 -1
  10. package/dist/types/components/icon/icon-paths.d.ts +30 -0
  11. package/dist/types/components/icon/vox-icon.d.ts +22 -0
  12. package/dist/types/components/link-hub/vox-link-hub.d.ts +3 -0
  13. package/dist/types/components/pagination/vox-pagination.d.ts +6 -4
  14. package/dist/types/components/sidenav/vox-sidenav.d.ts +20 -0
  15. package/dist/types/components/toc/vox-toc.d.ts +43 -0
  16. package/dist/types/index.d.ts +4 -0
  17. package/dist/types/internal/field.d.ts +4 -0
  18. package/dist/voxblocks.css +1 -1
  19. package/dist/voxblocks.js +1705 -997
  20. package/package.json +9 -6
  21. package/src/components/accordion/vox-accordion.ts +6 -1
  22. package/src/components/alert/vox-alert.ts +46 -2
  23. package/src/components/avatar/vox-avatar.ts +9 -2
  24. package/src/components/callout/vox-callout.ts +53 -3
  25. package/src/components/card/vox-card.ts +6 -1
  26. package/src/components/checkbox/vox-checkbox.ts +4 -3
  27. package/src/components/dialog/vox-dialog.ts +2 -2
  28. package/src/components/disclosure/vox-disclosure.ts +6 -1
  29. package/src/components/dropdown/vox-dropdown.ts +32 -8
  30. package/src/components/empty-state/vox-empty-state.ts +1 -1
  31. package/src/components/file-input/vox-file-input.ts +4 -1
  32. package/src/components/header/vox-header.ts +142 -7
  33. package/src/components/icon/icon-paths.ts +287 -0
  34. package/src/components/icon/vox-icon.ts +78 -0
  35. package/src/components/input/vox-input.ts +2 -0
  36. package/src/components/link-hub/vox-link-hub.ts +21 -0
  37. package/src/components/pagination/vox-pagination.ts +9 -6
  38. package/src/components/radio/vox-radio-group.ts +17 -6
  39. package/src/components/select/vox-select.ts +3 -0
  40. package/src/components/sidenav/vox-sidenav.ts +164 -4
  41. package/src/components/step-indicator/vox-step-indicator.ts +16 -2
  42. package/src/components/tabs/vox-tabs.ts +26 -2
  43. package/src/components/textarea/vox-textarea.ts +2 -0
  44. package/src/components/toc/vox-toc.ts +140 -0
  45. package/src/index.ts +6 -0
  46. package/src/internal/field.ts +20 -2
  47. package/src/styles/utilities.css +158 -0
  48. package/src/tokens/palette.css +95 -0
  49. package/src/tokens/tokens.css +7 -7
package/dist/voxblocks.js CHANGED
@@ -1,40 +1,40 @@
1
- import { css as c, LitElement as v, html as l, nothing as p } from "lit";
2
- import { property as n, customElement as d, state as to, query as qe } from "lit/decorators.js";
3
- import { classMap as po } from "lit/directives/class-map.js";
4
- import { ifDefined as j } from "lit/directives/if-defined.js";
5
- import { live as ro } from "lit/directives/live.js";
6
- var ho = Object.defineProperty, xo = Object.getOwnPropertyDescriptor, O = (t, o, a, r) => {
7
- for (var e = r > 1 ? void 0 : r ? xo(o, a) : o, s = t.length - 1, i; s >= 0; s--)
8
- (i = t[s]) && (e = (r ? i(o, a, e) : i(e)) || e);
9
- return r && e && ho(o, a, e), e;
1
+ import { css as d, LitElement as h, html as c, svg as l, nothing as v } from "lit";
2
+ import { property as n, customElement as p, state as le, query as Ze } from "lit/decorators.js";
3
+ import { classMap as bt } from "lit/directives/class-map.js";
4
+ import { ifDefined as u } from "lit/directives/if-defined.js";
5
+ import { live as dt } from "lit/directives/live.js";
6
+ var mt = Object.defineProperty, yt = Object.getOwnPropertyDescriptor, V = (o, t, a, r) => {
7
+ for (var e = r > 1 ? void 0 : r ? yt(t, a) : t, s = o.length - 1, i; s >= 0; s--)
8
+ (i = o[s]) && (e = (r ? i(t, a, e) : i(e)) || e);
9
+ return r && e && mt(t, a, e), e;
10
10
  };
11
- let x = class extends v {
11
+ let g = class extends h {
12
12
  constructor() {
13
13
  super(...arguments), this.variant = "brand", this.size = "md", this.type = "button", this.disabled = !1;
14
14
  }
15
15
  render() {
16
- const t = po({
16
+ const o = bt({
17
17
  button: !0,
18
18
  [this.variant]: !0,
19
19
  [this.size]: !0
20
20
  });
21
- return this.href !== void 0 && !this.disabled ? l`
21
+ return this.href !== void 0 && !this.disabled ? c`
22
22
  <a
23
- class=${t}
23
+ class=${o}
24
24
  href=${this.href}
25
- target=${j(this.target)}
26
- rel=${j(this.target === "_blank" ? "noreferrer" : void 0)}
25
+ target=${u(this.target)}
26
+ rel=${u(this.target === "_blank" ? "noreferrer" : void 0)}
27
27
  >
28
28
  <slot></slot>
29
29
  </a>
30
- ` : l`
31
- <button class=${t} type=${this.type} ?disabled=${this.disabled}>
30
+ ` : c`
31
+ <button class=${o} type=${this.type} ?disabled=${this.disabled}>
32
32
  <slot></slot>
33
33
  </button>
34
34
  `;
35
35
  }
36
36
  };
37
- x.styles = c`
37
+ g.styles = d`
38
38
  :host {
39
39
  display: inline-block;
40
40
  }
@@ -142,38 +142,38 @@ x.styles = c`
142
142
  border-radius: 0 var(--vox-radius-md) var(--vox-radius-md) 0;
143
143
  }
144
144
  `;
145
- O([
145
+ V([
146
146
  n()
147
- ], x.prototype, "variant", 2);
148
- O([
147
+ ], g.prototype, "variant", 2);
148
+ V([
149
149
  n()
150
- ], x.prototype, "size", 2);
151
- O([
150
+ ], g.prototype, "size", 2);
151
+ V([
152
152
  n()
153
- ], x.prototype, "href", 2);
154
- O([
153
+ ], g.prototype, "href", 2);
154
+ V([
155
155
  n()
156
- ], x.prototype, "target", 2);
157
- O([
156
+ ], g.prototype, "target", 2);
157
+ V([
158
158
  n()
159
- ], x.prototype, "type", 2);
160
- O([
159
+ ], g.prototype, "type", 2);
160
+ V([
161
161
  n({ type: Boolean, reflect: !0 })
162
- ], x.prototype, "disabled", 2);
163
- x = O([
164
- d("vox-button")
165
- ], x);
166
- var uo = Object.defineProperty, fo = Object.getOwnPropertyDescriptor, Le = (t, o, a, r) => {
167
- for (var e = r > 1 ? void 0 : r ? fo(o, a) : o, s = t.length - 1, i; s >= 0; s--)
168
- (i = t[s]) && (e = (r ? i(o, a, e) : i(e)) || e);
169
- return r && e && uo(o, a, e), e;
162
+ ], g.prototype, "disabled", 2);
163
+ g = V([
164
+ p("vox-button")
165
+ ], g);
166
+ var wt = Object.defineProperty, $t = Object.getOwnPropertyDescriptor, Ue = (o, t, a, r) => {
167
+ for (var e = r > 1 ? void 0 : r ? $t(t, a) : t, s = o.length - 1, i; s >= 0; s--)
168
+ (i = o[s]) && (e = (r ? i(t, a, e) : i(e)) || e);
169
+ return r && e && wt(t, a, e), e;
170
170
  };
171
- let A = class extends v {
171
+ let R = class extends h {
172
172
  constructor() {
173
173
  super(...arguments), this.href = "#";
174
174
  }
175
175
  render() {
176
- return l`
176
+ return c`
177
177
  <a href=${this.href} target=${this.target ?? ""}>
178
178
  <slot></slot>
179
179
  <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
@@ -184,7 +184,7 @@ let A = class extends v {
184
184
  `;
185
185
  }
186
186
  };
187
- A.styles = c`
187
+ R.styles = d`
188
188
  :host {
189
189
  display: inline-block;
190
190
  font-family: var(--vox-font-family-base);
@@ -221,60 +221,60 @@ A.styles = c`
221
221
  transform: translateX(3px);
222
222
  }
223
223
  `;
224
- Le([
224
+ Ue([
225
225
  n()
226
- ], A.prototype, "href", 2);
227
- Le([
226
+ ], R.prototype, "href", 2);
227
+ Ue([
228
228
  n()
229
- ], A.prototype, "target", 2);
230
- A = Le([
231
- d("vox-cta")
232
- ], A);
233
- var bo = Object.defineProperty, go = Object.getOwnPropertyDescriptor, $e = (t, o, a, r) => {
234
- for (var e = r > 1 ? void 0 : r ? go(o, a) : o, s = t.length - 1, i; s >= 0; s--)
235
- (i = t[s]) && (e = (r ? i(o, a, e) : i(e)) || e);
236
- return r && e && bo(o, a, e), e;
229
+ ], R.prototype, "target", 2);
230
+ R = Ue([
231
+ p("vox-cta")
232
+ ], R);
233
+ var _t = Object.defineProperty, Ct = Object.getOwnPropertyDescriptor, Pe = (o, t, a, r) => {
234
+ for (var e = r > 1 ? void 0 : r ? Ct(t, a) : t, s = o.length - 1, i; s >= 0; s--)
235
+ (i = o[s]) && (e = (r ? i(t, a, e) : i(e)) || e);
236
+ return r && e && _t(t, a, e), e;
237
237
  };
238
- const oo = "vox-theme", ve = "data-vox-theme";
239
- let D = class extends v {
238
+ const ct = "vox-theme", be = "data-vox-theme";
239
+ let z = class extends h {
240
240
  constructor() {
241
- super(...arguments), this.lightLabel = "Switch to dark theme", this.darkLabel = "Switch to light theme", this.dark = !1, this.media = window.matchMedia("(prefers-color-scheme: dark)"), this.handleSystemChange = (t) => {
242
- localStorage.getItem(oo) || document.documentElement.setAttribute(ve, t.matches ? "dark" : "light");
241
+ super(...arguments), this.lightLabel = "Switch to dark theme", this.darkLabel = "Switch to light theme", this.dark = !1, this.media = window.matchMedia("(prefers-color-scheme: dark)"), this.handleSystemChange = (o) => {
242
+ localStorage.getItem(ct) || document.documentElement.setAttribute(be, o.matches ? "dark" : "light");
243
243
  };
244
244
  }
245
245
  connectedCallback() {
246
246
  super.connectedCallback(), this.syncFromDocument(), this.observer = new MutationObserver(() => this.syncFromDocument()), this.observer.observe(document.documentElement, {
247
247
  attributes: !0,
248
- attributeFilter: [ve]
248
+ attributeFilter: [be]
249
249
  }), this.media.addEventListener("change", this.handleSystemChange);
250
250
  }
251
251
  disconnectedCallback() {
252
- var t;
253
- super.disconnectedCallback(), (t = this.observer) == null || t.disconnect(), this.media.removeEventListener("change", this.handleSystemChange);
252
+ var o;
253
+ super.disconnectedCallback(), (o = this.observer) == null || o.disconnect(), this.media.removeEventListener("change", this.handleSystemChange);
254
254
  }
255
255
  syncFromDocument() {
256
- const t = document.documentElement.getAttribute(ve) === "dark";
257
- this.dark = t, this.toggleAttribute("dark", t);
256
+ const o = document.documentElement.getAttribute(be) === "dark";
257
+ this.dark = o, this.toggleAttribute("dark", o);
258
258
  }
259
259
  handleClick() {
260
- const t = this.dark ? "light" : "dark";
261
- document.documentElement.setAttribute(ve, t), localStorage.setItem(oo, t), this.dispatchEvent(
260
+ const o = this.dark ? "light" : "dark";
261
+ document.documentElement.setAttribute(be, o), localStorage.setItem(ct, o), this.dispatchEvent(
262
262
  new CustomEvent("vox-theme-change", {
263
- detail: { theme: t },
263
+ detail: { theme: o },
264
264
  bubbles: !0,
265
265
  composed: !0
266
266
  })
267
267
  );
268
268
  }
269
269
  render() {
270
- const t = this.dark ? this.darkLabel : this.lightLabel;
271
- return l`
270
+ const o = this.dark ? this.darkLabel : this.lightLabel;
271
+ return c`
272
272
  <button
273
273
  type="button"
274
274
  role="switch"
275
275
  aria-checked=${this.dark}
276
- aria-label=${t}
277
- title=${t}
276
+ aria-label=${o}
277
+ title=${o}
278
278
  @click=${this.handleClick}
279
279
  >
280
280
  <span class="track">
@@ -291,7 +291,7 @@ let D = class extends v {
291
291
  `;
292
292
  }
293
293
  };
294
- D.styles = c`
294
+ z.styles = d`
295
295
  :host {
296
296
  display: inline-flex;
297
297
  }
@@ -350,26 +350,185 @@ D.styles = c`
350
350
  transform: translateX(20px);
351
351
  }
352
352
  `;
353
- $e([
353
+ Pe([
354
354
  n({ attribute: "light-label" })
355
- ], D.prototype, "lightLabel", 2);
356
- $e([
355
+ ], z.prototype, "lightLabel", 2);
356
+ Pe([
357
357
  n({ attribute: "dark-label" })
358
- ], D.prototype, "darkLabel", 2);
359
- $e([
360
- to()
361
- ], D.prototype, "dark", 2);
362
- D = $e([
363
- d("vox-theme-toggle")
364
- ], D);
365
- var mo = Object.defineProperty, te = (t, o, a, r) => {
366
- for (var e = void 0, s = t.length - 1, i; s >= 0; s--)
367
- (i = t[s]) && (e = i(o, a, e) || e);
368
- return e && mo(o, a, e), e;
358
+ ], z.prototype, "darkLabel", 2);
359
+ Pe([
360
+ le()
361
+ ], z.prototype, "dark", 2);
362
+ z = Pe([
363
+ p("vox-theme-toggle")
364
+ ], z);
365
+ const y = {
366
+ // Phase 1: shared UI baseline -----------------------------------------
367
+ search: l`<circle cx="21" cy="21" r="13"/><path d="M30.5 30.5 L41 41"/>`,
368
+ close: l`<path d="M14 14 L34 34 M34 14 L14 34"/>`,
369
+ menu: l`<path d="M8 14 H40 M8 24 H40 M8 34 H40"/>`,
370
+ "chevron-up": l`<path d="M14 28 L24 18 L34 28"/>`,
371
+ "chevron-down": l`<path d="M14 20 L24 30 L34 20"/>`,
372
+ "chevron-left": l`<path d="M28 14 L18 24 L28 34"/>`,
373
+ "chevron-right": l`<path d="M20 14 L30 24 L20 34"/>`,
374
+ "external-link": l`<path d="M36 26 V38 A4 4 0 0 1 32 42 H10 A4 4 0 0 1 6 38 V16 A4 4 0 0 1 10 12 H22"/><path d="M30 6 H42 V18"/><path d="M20 28 L42 6"/>`,
375
+ copy: l`<rect x="8" y="14" width="24" height="24" rx="3"/><path d="M16 14 V10 A2 2 0 0 1 18 8 H38 A2 2 0 0 1 40 10 V30 A2 2 0 0 1 38 32 H34"/>`,
376
+ check: l`<path d="M10 25 L20 35 L38 13"/>`,
377
+ warning: l`<path d="M24 8 L44 40 H4 Z"/><path d="M24 20 V28"/><circle cx="24" cy="34" r="1.6" fill="currentColor" stroke="none"/>`,
378
+ info: l`<circle cx="24" cy="24" r="17"/><path d="M24 22 V33"/><circle cx="24" cy="15.5" r="1.8" fill="currentColor" stroke="none"/>`,
379
+ add: l`<path d="M24 10 V38 M10 24 H38"/>`,
380
+ remove: l`<path d="M10 24 H38"/>`,
381
+ edit: l`<path d="M30 8 L40 18 L18 40 L7 41 L8 30 Z"/><path d="M26 12 L36 22"/>`,
382
+ delete: l`<path d="M10 14 H38"/><path d="M17 14 V9 A2 2 0 0 1 19 7 H29 A2 2 0 0 1 31 9 V14"/><path d="M13 14 L15 40 A2 2 0 0 0 17 42 H31 A2 2 0 0 0 33 40 L35 14"/><path d="M20 21 V35 M28 21 V35"/>`,
383
+ filter: l`<path d="M6 10 H42 L28 26 V38 L20 42 V26 Z"/>`,
384
+ sort: l`<path d="M14 30 V10 M14 10 L8 16 M14 10 L20 16"/><path d="M34 18 V38 M34 38 L28 32 M34 38 L40 32"/>`,
385
+ calendar: l`<rect x="6" y="10" width="36" height="32" rx="3"/><path d="M6 20 H42"/><path d="M15 6 V14 M33 6 V14"/><circle cx="15" cy="28" r="1.6" fill="currentColor" stroke="none"/><circle cx="24" cy="28" r="1.6" fill="currentColor" stroke="none"/><circle cx="33" cy="28" r="1.6" fill="currentColor" stroke="none"/>`,
386
+ clock: l`<circle cx="24" cy="24" r="17"/><path d="M24 14 V24 L32 29"/>`,
387
+ person: l`<circle cx="24" cy="16" r="8"/><path d="M8 42 C8 31 15 26 24 26 C33 26 40 31 40 42"/>`,
388
+ people: l`<circle cx="17" cy="16" r="7"/><circle cx="33" cy="18" r="6"/><path d="M4 41 C4 31 10 27 17 27 C21 27 24 28.3 26.3 30.5"/><path d="M24 41 C24 32 29 28 37 28 C43 28 44 32 44 41"/>`,
389
+ lock: l`<rect x="10" y="21" width="28" height="21" rx="3"/><path d="M16 21 V15 A8 8 0 0 1 32 15 V21"/><circle cx="24" cy="31" r="2.2" fill="currentColor" stroke="none"/>`,
390
+ eye: l`<path d="M4 24 C10 12 20 8 24 8 C28 8 38 12 44 24 C38 36 28 40 24 40 C20 40 10 36 4 24 Z"/><circle cx="24" cy="24" r="6"/>`,
391
+ "eye-slash": l`<path d="M4 24 C10 12 20 8 24 8 C28 8 38 12 44 24 C38 36 28 40 24 40 C20 40 10 36 4 24 Z"/><circle cx="24" cy="24" r="6"/><path d="M6 6 L42 42"/>`,
392
+ refresh: l`<path d="M46 8 L46 20 L34 20"/><path d="M2 40 L2 28 L14 28"/><path d="M7.02 18 A18 18 0 0 1 36.72 11.28 L46 20"/><path d="M2 28 L11.28 36.72 A18 18 0 0 0 40.98 30"/>`,
393
+ // Phase 2: OpenVox marketing site --------------------------------------
394
+ community: l`<circle cx="24" cy="10" r="5"/><circle cx="10" cy="34" r="5"/><circle cx="38" cy="34" r="5"/><path d="M24 15 L14 30 M24 15 L34 30 M15 34 H33"/>`,
395
+ book: l`<path d="M24 12 C20 8 12 7 6 9 V37 C12 35 20 36 24 40 C28 36 36 35 42 37 V9 C36 7 28 8 24 12 Z"/><path d="M24 12 V40"/>`,
396
+ terminal: l`<rect x="6" y="9" width="36" height="30" rx="3"/><path d="M14 19 L21 24 L14 29"/><path d="M25 30 H33"/>`,
397
+ shield: l`<path d="M24 6 L40 12 V22 C40 33 33 40 24 43 C15 40 8 33 8 22 V12 Z"/><path d="M17 23 L22 28 L32 17"/>`,
398
+ roadmap: l`<path d="M6 38 C14 38 14 26 22 26 C30 26 30 14 38 14"/><circle cx="6" cy="38" r="3" fill="currentColor" stroke="none"/><circle cx="22" cy="26" r="3" fill="currentColor" stroke="none"/><circle cx="38" cy="14" r="3" fill="currentColor" stroke="none"/>`,
399
+ help: l`<circle cx="24" cy="24" r="17"/><path d="M18 18 C18 13 30 13 30 19 C30 24 24 23 24 29"/><circle cx="24" cy="35" r="1.8" fill="currentColor" stroke="none"/>`,
400
+ repository: l`<rect x="7" y="10" width="34" height="28" rx="3"/><path d="M18 20 L13 24 L18 28 M30 20 L35 24 L30 28"/>`,
401
+ star: l`<path d="M24 6 L29 19 L43 19 L32 28 L36 42 L24 34 L12 42 L16 28 L5 19 L19 19 Z"/>`,
402
+ chat: l`<path d="M8 10 H40 A2 2 0 0 1 42 12 V30 A2 2 0 0 1 40 32 H20 L12 40 V32 H8 A2 2 0 0 1 6 30 V12 A2 2 0 0 1 8 10 Z"/><path d="M14 18 H34 M14 24 H28"/>`,
403
+ heart: l`<path d="M24 41 C10 32 4 23 4 15.5 C4 9 9 5 15 5 C19.5 5 22.5 7.5 24 11 C25.5 7.5 28.5 5 33 5 C39 5 44 9 44 15.5 C44 23 38 32 24 41 Z"/>`,
404
+ // Phase 3: module registry (Forge replacement) -------------------------
405
+ module: l`<rect x="8" y="16" width="32" height="24" rx="3"/><path d="M8 24 H40"/><path d="M20 16 L24 24 L28 16"/>`,
406
+ tag: l`<path d="M6 10 H26 L42 26 L26 42 H6 Z"/><circle cx="15" cy="19" r="3" fill="currentColor" stroke="none"/>`,
407
+ dependency: l`<rect x="6" y="19" width="20" height="10" rx="5"/><rect x="22" y="19" width="20" height="10" rx="5"/>`,
408
+ verified: l`<path d="M24 5 L31 10 L39 9 L40 17 L46 24 L40 31 L39 39 L31 38 L24 43 L17 38 L9 39 L8 31 L2 24 L8 17 L9 9 L17 10 Z"/><path d="M16 24 L21 29 L32 18"/>`,
409
+ archived: l`<rect x="6" y="6" width="36" height="10" rx="2"/><rect x="10" y="16" width="28" height="26" rx="2"/><path d="M20 26 H28"/>`,
410
+ publish: l`<path d="M24 6 V28 M24 6 L16 14 M24 6 L32 14"/><path d="M8 32 V38 A2 2 0 0 0 10 40 H38 A2 2 0 0 0 40 38 V32"/>`,
411
+ changelog: l`<path d="M10 6 H28 L36 14 V42 H10 Z"/><path d="M28 6 V14 H36"/><path d="M16 24 H24"/><circle cx="34" cy="34" r="7"/><path d="M34 30 V34 L37 36"/>`,
412
+ vulnerability: l`<path d="M24 6 L40 12 V22 C40 33 33 40 24 43 C15 40 8 33 8 22 V12 Z"/><path d="M24 16 V26"/><circle cx="24" cy="32" r="1.8" fill="currentColor" stroke="none"/>`,
413
+ gauge: l`<path d="M6 34 A18 18 0 0 1 42 34"/><path d="M24 34 L34 20"/><circle cx="24" cy="34" r="2.2" fill="currentColor" stroke="none"/>`,
414
+ "file-tree": l`<path d="M6 12 H18 L22 17 H42 V38 H6 Z"/><path d="M26 24 H36 M26 30 H36"/>`,
415
+ "check-circle": l`<circle cx="24" cy="24" r="17"/><path d="M15 24 L21 30 L33 17"/>`,
416
+ "x-circle": l`<circle cx="24" cy="24" r="17"/><path d="M18 18 L30 30 M30 18 L18 30"/>`,
417
+ fork: l`<circle cx="14" cy="10" r="4"/><circle cx="34" cy="10" r="4"/><circle cx="24" cy="38" r="4"/><path d="M14 14 V22 L24 32 M34 14 V22 L24 32 M24 32 V34"/>`,
418
+ trending: l`<path d="M6 34 L18 22 L26 28 L42 10"/><path d="M32 10 H42 V20"/>`,
419
+ collection: l`<rect x="10" y="6" width="28" height="10" rx="2"/><rect x="6" y="19" width="36" height="10" rx="2"/><rect x="10" y="32" width="28" height="10" rx="2"/>`,
420
+ // Phase 4: fleet console (Puppet Enterprise replacement) ---------------
421
+ dashboard: l`<rect x="6" y="6" width="18" height="14" rx="2"/><rect x="28" y="6" width="14" height="8" rx="2"/><rect x="28" y="18" width="14" height="14" rx="2"/><rect x="6" y="24" width="18" height="18" rx="2"/>`,
422
+ node: l`<rect x="10" y="14" width="28" height="20" rx="3"/><path d="M16 22 H22 M16 27 H22"/><circle cx="32" cy="24" r="2" fill="currentColor" stroke="none"/>`,
423
+ "node-group": l`<rect x="6" y="10" width="24" height="9" rx="2"/><rect x="12" y="21" width="24" height="9" rx="2"/><rect x="18" y="32" width="24" height="9" rx="2"/>`,
424
+ pulse: l`<path d="M4 24 H14 L19 12 L27 36 L32 24 H44"/>`,
425
+ compliance: l`<rect x="9" y="6" width="30" height="36" rx="3"/><path d="M16 16 L19 19 L26 12 M16 26 L19 29 L26 22 M16 36 H30"/>`,
426
+ report: l`<path d="M10 6 H28 L36 14 V42 H10 Z"/><path d="M28 6 V14 H36"/><path d="M16 34 V28 M22 34 V24 M28 34 V30"/>`,
427
+ "activity-log": l`<path d="M14 8 V40"/><circle cx="14" cy="12" r="3" fill="currentColor" stroke="none"/><circle cx="14" cy="24" r="3" fill="currentColor" stroke="none"/><circle cx="14" cy="36" r="3" fill="currentColor" stroke="none"/><path d="M22 12 H40 M22 24 H40 M22 36 H34"/>`,
428
+ bell: l`<path d="M12 32 V22 A12 12 0 0 1 36 22 V32 L40 38 H8 Z"/><path d="M20 38 A4 4 0 0 0 28 38"/>`,
429
+ orchestrate: l`<circle cx="24" cy="24" r="17"/><path d="M19 15 L33 24 L19 33 Z"/>`,
430
+ plan: l`<rect x="6" y="8" width="24" height="32" rx="3"/><path d="M12 16 H24 M12 22 H24 M12 28 H20"/><path d="M32 24 H44 M38 18 L44 24 L38 30"/>`,
431
+ badge: l`<rect x="6" y="10" width="36" height="28" rx="3"/><circle cx="17" cy="21" r="5"/><path d="M10 32 C10 26 13 24 17 24 C21 24 24 26 24 32"/><path d="M30 18 H38 M30 24 H38 M30 30 H36"/>`,
432
+ audit: l`<path d="M10 6 H26 L34 14 V42 H10 Z"/><path d="M26 6 V14 H34"/><path d="M16 24 H24 M16 30 H22"/><circle cx="33" cy="33" r="6"/><path d="M37.5 37.5 L43 43"/>`,
433
+ key: l`<circle cx="16" cy="24" r="9"/><path d="M23 24 H42 M34 24 V31 M40 24 V29"/>`,
434
+ layers: l`<path d="M24 6 L44 16 L24 26 L4 16 Z"/><path d="M4 26 L24 36 L44 26"/><path d="M4 34 L24 44 L44 34"/>`,
435
+ classifier: l`<path d="M6 10 H24 L40 26 L24 42 H6 Z"/><circle cx="14" cy="18" r="3" fill="currentColor" stroke="none"/><circle cx="32" cy="26" r="3" fill="currentColor" stroke="none"/>`,
436
+ deploy: l`<path d="M24 8 V34"/><path d="M24 8 L15 20 M24 8 L33 20"/><path d="M10 40 H38"/>`,
437
+ metrics: l`<path d="M6 40 H42"/><path d="M6 40 V6"/><path d="M10 30 L18 22 L26 27 L38 12"/>`,
438
+ schedule: l`<rect x="6" y="10" width="28" height="30" rx="3"/><path d="M6 18 H34"/><path d="M14 6 V14 M26 6 V14"/><circle cx="34" cy="34" r="10"/><path d="M34 28 V34 L38 37"/>`,
439
+ backup: l`<path d="M24 6 V26 M24 26 L16 18 M24 26 L32 18"/><rect x="8" y="30" width="32" height="12" rx="2"/><path d="M8 36 H40"/>`,
440
+ webhook: l`<circle cx="12" cy="14" r="6"/><circle cx="36" cy="34" r="6"/><path d="M17 17 L31 31"/><path d="M22 22 L20 28 L26 26 L24 32"/>`,
441
+ organization: l`<rect x="10" y="10" width="28" height="32" rx="2"/><path d="M17 18 H21 M27 18 H31 M17 26 H21 M27 26 H31 M17 34 H21 M27 34 H31"/>`,
442
+ drift: l`<rect x="6" y="12" width="20" height="20" rx="3"/><rect x="22" y="16" width="20" height="20" rx="3"/><path d="M20 24 H28"/>`,
443
+ // Added later: consolidated from docs pages that predated vox-icon ------
444
+ blocks: l`<rect x="7" y="7" width="15" height="15" rx="2.5"/><rect x="26" y="7" width="15" height="15" rx="2.5"/><rect x="7" y="26" width="15" height="15" rx="2.5"/><rect x="26" y="26" width="15" height="15" rx="2.5"/>`,
445
+ plug: l`<path d="M16 6 V18 M32 6 V18 M12 18 H36 V28 C36 34 30 38 24 38 C18 38 12 34 12 28 Z"/><path d="M24 38 V44"/>`,
446
+ ballot: l`<rect x="8" y="18" width="32" height="24" rx="2.5"/><path d="M8 26 H40"/><path d="M24 10 V26"/><path d="M18 6 L24 12 L30 6"/>`,
447
+ sun: l`<circle cx="24" cy="24" r="8"/><path d="M24 4v4M24 40v4M9.86 9.86l2.82 2.82M35.32 35.32l2.82 2.82M4 24h4M40 24h4M12.68 35.32l-2.82 2.82M38.14 9.86l-2.82 2.82"/>`,
448
+ moon: l`<path d="M42 25.58A18 18 0 1 1 22.42 6 14 14 0 0 0 42 25.58Z"/>`,
449
+ github: l`<g transform="translate(4,4) scale(2.5)" fill="currentColor" stroke="none"><path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0 0 16 8c0-4.42-3.58-8-8-8z"/></g>`,
450
+ accessibility: l`<circle cx="24" cy="24" r="18"/><circle cx="24" cy="16" r="2.6" fill="currentColor" stroke="none"/><path d="M14 21 H34 M24 21 V32 M24 25 L18 34 M24 25 L30 34"/>`,
451
+ settings: l`<circle cx="24" cy="24" r="7"/><path d="M24 6 V12 M24 36 V42 M6 24 H12 M36 24 H42 M11 11 L15.2 15.2 M32.8 32.8 L37 37 M37 11 L32.8 15.2 M15.2 32.8 L11 37"/>`
369
452
  };
370
- const Ze = class Ze extends v {
453
+ var Ot = Object.defineProperty, Mt = Object.getOwnPropertyDescriptor, Ve = (o, t, a, r) => {
454
+ for (var e = r > 1 ? void 0 : r ? Mt(t, a) : t, s = o.length - 1, i; s >= 0; s--)
455
+ (i = o[s]) && (e = (r ? i(t, a, e) : i(e)) || e);
456
+ return r && e && Ot(t, a, e), e;
457
+ };
458
+ let E = class extends h {
371
459
  constructor() {
372
- super(), this.name = "", this.label = "", this.note = "", this.disabled = !1, this.required = !1, this.internals = this.attachInternals();
460
+ super(...arguments), this.name = "info", this.size = "md";
461
+ }
462
+ render() {
463
+ const o = y[this.name];
464
+ return o ? c`
465
+ <svg
466
+ viewBox="0 0 48 48"
467
+ fill="none"
468
+ stroke="currentColor"
469
+ stroke-width="2"
470
+ stroke-linecap="round"
471
+ stroke-linejoin="round"
472
+ role=${this.label ? "img" : v}
473
+ aria-hidden=${this.label ? v : "true"}
474
+ aria-label=${this.label ?? v}
475
+ >
476
+ ${o}
477
+ </svg>
478
+ ` : v;
479
+ }
480
+ };
481
+ E.styles = d`
482
+ :host {
483
+ display: inline-flex;
484
+ flex: none;
485
+ color: inherit;
486
+ }
487
+
488
+ svg {
489
+ display: block;
490
+ }
491
+
492
+ :host([size='sm']) svg {
493
+ width: 16px;
494
+ height: 16px;
495
+ }
496
+
497
+ :host([size='md']) svg {
498
+ width: 20px;
499
+ height: 20px;
500
+ }
501
+
502
+ :host([size='lg']) svg {
503
+ width: 24px;
504
+ height: 24px;
505
+ }
506
+
507
+ :host([size='xl']) svg {
508
+ width: 48px;
509
+ height: 48px;
510
+ }
511
+ `;
512
+ Ve([
513
+ n()
514
+ ], E.prototype, "name", 2);
515
+ Ve([
516
+ n({ reflect: !0 })
517
+ ], E.prototype, "size", 2);
518
+ Ve([
519
+ n()
520
+ ], E.prototype, "label", 2);
521
+ E = Ve([
522
+ p("vox-icon")
523
+ ], E);
524
+ var kt = Object.defineProperty, N = (o, t, a, r) => {
525
+ for (var e = void 0, s = o.length - 1, i; s >= 0; s--)
526
+ (i = o[s]) && (e = i(t, a, e) || e);
527
+ return e && kt(t, a, e), e;
528
+ };
529
+ const it = class it extends h {
530
+ constructor() {
531
+ super(), this.invalid = !1, this.name = "", this.label = "", this.note = "", this.disabled = !1, this.required = !1, this.internals = this.attachInternals();
373
532
  }
374
533
  get form() {
375
534
  return this.internals.form;
@@ -387,38 +546,45 @@ const Ze = class Ze extends v {
387
546
  return this.internals.reportValidity();
388
547
  }
389
548
  /** Mirror a native inner control's validity onto the host element. */
390
- syncValidity(o) {
391
- this.internals.setValidity(o.validity, o.validationMessage, o);
549
+ syncValidity(t) {
550
+ this.internals.setValidity(t.validity, t.validationMessage, t), this.invalid = !t.validity.valid;
392
551
  }
393
- renderLabel(o) {
394
- return this.label ? l`
395
- <label class="label" for=${o}>
396
- ${this.label}${this.required ? l`<span class="required-mark" aria-hidden="true"> *</span>` : p}
552
+ renderLabel(t) {
553
+ return this.label ? c`
554
+ <label class="label" for=${t}>
555
+ ${this.label}${this.required ? c`<span class="required-mark" aria-hidden="true"> *</span>` : v}
397
556
  </label>
398
- ` : p;
557
+ ` : v;
558
+ }
559
+ /** `note`'s id when present, for `aria-describedby` on the native control. */
560
+ get noteId() {
561
+ return this.note ? "note" : void 0;
399
562
  }
400
563
  renderNote() {
401
- return this.note ? l`<p class="note">${this.note}</p>` : p;
564
+ return this.note ? c`<p class="note" id="note">${this.note}</p>` : v;
402
565
  }
403
566
  };
404
- Ze.formAssociated = !0;
405
- let h = Ze;
406
- te([
567
+ it.formAssociated = !0;
568
+ let x = it;
569
+ N([
570
+ le()
571
+ ], x.prototype, "invalid");
572
+ N([
407
573
  n()
408
- ], h.prototype, "name");
409
- te([
574
+ ], x.prototype, "name");
575
+ N([
410
576
  n()
411
- ], h.prototype, "label");
412
- te([
577
+ ], x.prototype, "label");
578
+ N([
413
579
  n()
414
- ], h.prototype, "note");
415
- te([
580
+ ], x.prototype, "note");
581
+ N([
416
582
  n({ type: Boolean, reflect: !0 })
417
- ], h.prototype, "disabled");
418
- te([
583
+ ], x.prototype, "disabled");
584
+ N([
419
585
  n({ type: Boolean, reflect: !0 })
420
- ], h.prototype, "required");
421
- const re = c`
586
+ ], x.prototype, "required");
587
+ const ce = d`
422
588
  :host {
423
589
  display: block;
424
590
  font-family: var(--vox-font-family-base);
@@ -473,6 +639,15 @@ const re = c`
473
639
  box-shadow: 0 0 0 3px var(--vox-color-brand-soft);
474
640
  }
475
641
 
642
+ .control[aria-invalid='true'] {
643
+ border-color: var(--vox-color-danger-1);
644
+ }
645
+
646
+ .control[aria-invalid='true']:focus {
647
+ border-color: var(--vox-color-danger-1);
648
+ box-shadow: 0 0 0 3px var(--vox-color-danger-soft);
649
+ }
650
+
476
651
  /* Corner flattening when placed inside a <vox-input-group>. */
477
652
  :host([data-vox-group]) .control {
478
653
  border-radius: 0;
@@ -485,7 +660,7 @@ const re = c`
485
660
  :host([data-vox-group='end']) .control {
486
661
  border-radius: 0 var(--vox-radius-md) var(--vox-radius-md) 0;
487
662
  }
488
- `, ao = c`
663
+ `, pt = d`
489
664
  :host {
490
665
  display: block;
491
666
  font-family: var(--vox-font-family-base);
@@ -514,12 +689,12 @@ const re = c`
514
689
  margin: 0;
515
690
  }
516
691
  `;
517
- var yo = Object.defineProperty, wo = Object.getOwnPropertyDescriptor, Ne = (t, o, a, r) => {
518
- for (var e = r > 1 ? void 0 : r ? wo(o, a) : o, s = t.length - 1, i; s >= 0; s--)
519
- (i = t[s]) && (e = (r ? i(o, a, e) : i(e)) || e);
520
- return r && e && yo(o, a, e), e;
692
+ var Lt = Object.defineProperty, Pt = Object.getOwnPropertyDescriptor, Ke = (o, t, a, r) => {
693
+ for (var e = r > 1 ? void 0 : r ? Pt(t, a) : t, s = o.length - 1, i; s >= 0; s--)
694
+ (i = o[s]) && (e = (r ? i(t, a, e) : i(e)) || e);
695
+ return r && e && Lt(t, a, e), e;
521
696
  };
522
- let q = class extends h {
697
+ let Z = class extends x {
523
698
  constructor() {
524
699
  super(...arguments), this.checked = !1, this.value = "on";
525
700
  }
@@ -527,22 +702,24 @@ let q = class extends h {
527
702
  this.checked = !1;
528
703
  }
529
704
  updated() {
530
- this.internals.setFormValue(this.checked ? this.value : null), this.internals.setValidity(
531
- this.required && !this.checked ? { valueMissing: !0 } : {},
705
+ this.internals.setFormValue(this.checked ? this.value : null), this.invalid = this.required && !this.checked, this.internals.setValidity(
706
+ this.invalid ? { valueMissing: !0 } : {},
532
707
  "Please check this box.",
533
708
  this.renderRoot.querySelector("input") ?? void 0
534
709
  );
535
710
  }
536
- handleChange(t) {
537
- this.checked = t.target.checked, this.dispatchEvent(new Event("change", { bubbles: !0 }));
711
+ handleChange(o) {
712
+ this.checked = o.target.checked, this.dispatchEvent(new Event("change", { bubbles: !0 }));
538
713
  }
539
714
  render() {
540
- return l`
715
+ return c`
541
716
  <label class="check">
542
717
  <input
543
718
  type="checkbox"
544
719
  .checked=${this.checked}
545
720
  ?disabled=${this.disabled}
721
+ ?required=${this.required}
722
+ aria-invalid=${this.invalid ? "true" : "false"}
546
723
  @change=${this.handleChange}
547
724
  />
548
725
  <span class="box" aria-hidden="true">
@@ -555,9 +732,9 @@ let q = class extends h {
555
732
  `;
556
733
  }
557
734
  };
558
- q.styles = [
559
- ao,
560
- c`
735
+ Z.styles = [
736
+ pt,
737
+ d`
561
738
  .box {
562
739
  flex: none;
563
740
  display: flex;
@@ -596,21 +773,21 @@ q.styles = [
596
773
  }
597
774
  `
598
775
  ];
599
- Ne([
776
+ Ke([
600
777
  n({ type: Boolean, reflect: !0 })
601
- ], q.prototype, "checked", 2);
602
- Ne([
778
+ ], Z.prototype, "checked", 2);
779
+ Ke([
603
780
  n()
604
- ], q.prototype, "value", 2);
605
- q = Ne([
606
- d("vox-checkbox")
607
- ], q);
608
- var $o = Object.defineProperty, _o = Object.getOwnPropertyDescriptor, V = (t, o, a, r) => {
609
- for (var e = r > 1 ? void 0 : r ? _o(o, a) : o, s = t.length - 1, i; s >= 0; s--)
610
- (i = t[s]) && (e = (r ? i(o, a, e) : i(e)) || e);
611
- return r && e && $o(o, a, e), e;
781
+ ], Z.prototype, "value", 2);
782
+ Z = Ke([
783
+ p("vox-checkbox")
784
+ ], Z);
785
+ var Vt = Object.defineProperty, jt = Object.getOwnPropertyDescriptor, T = (o, t, a, r) => {
786
+ for (var e = r > 1 ? void 0 : r ? jt(t, a) : t, s = o.length - 1, i; s >= 0; s--)
787
+ (i = o[s]) && (e = (r ? i(t, a, e) : i(e)) || e);
788
+ return r && e && Vt(t, a, e), e;
612
789
  };
613
- let u = class extends h {
790
+ let b = class extends x {
614
791
  constructor() {
615
792
  super(...arguments), this.multiple = !1, this.buttonLabel = "Choose a file", this.fileNames = [];
616
793
  }
@@ -618,27 +795,29 @@ let u = class extends h {
618
795
  this.fileNames = [], this.inputEl && (this.inputEl.value = ""), this.internals.setFormValue(null);
619
796
  }
620
797
  handleChange() {
621
- const t = [...this.inputEl.files ?? []];
622
- this.fileNames = t.map((a) => a.name);
623
- const o = new FormData();
624
- for (const a of t) o.append(this.name, a);
625
- this.internals.setFormValue(t.length > 0 ? o : null), this.internals.setValidity(
626
- this.required && t.length === 0 ? { valueMissing: !0 } : {},
798
+ const o = [...this.inputEl.files ?? []];
799
+ this.fileNames = o.map((a) => a.name);
800
+ const t = new FormData();
801
+ for (const a of o) t.append(this.name, a);
802
+ this.internals.setFormValue(o.length > 0 ? t : null), this.invalid = this.required && o.length === 0, this.internals.setValidity(
803
+ this.invalid ? { valueMissing: !0 } : {},
627
804
  "Please select a file.",
628
805
  this.inputEl
629
806
  ), this.dispatchEvent(new Event("change", { bubbles: !0 }));
630
807
  }
631
808
  render() {
632
- return l`
809
+ return c`
633
810
  <div class="field">
634
811
  ${this.renderLabel("file")}
635
812
  <label>
636
813
  <input
637
814
  id="file"
638
815
  type="file"
639
- accept=${j(this.accept)}
816
+ accept=${u(this.accept)}
640
817
  ?multiple=${this.multiple}
641
818
  ?disabled=${this.disabled}
819
+ aria-describedby=${u(this.noteId)}
820
+ aria-invalid=${this.invalid ? "true" : "false"}
642
821
  @change=${this.handleChange}
643
822
  />
644
823
  <span class="picker">
@@ -653,9 +832,9 @@ let u = class extends h {
653
832
  `;
654
833
  }
655
834
  };
656
- u.styles = [
657
- re,
658
- c`
835
+ b.styles = [
836
+ ce,
837
+ d`
659
838
  input {
660
839
  position: absolute;
661
840
  width: 1px;
@@ -703,30 +882,30 @@ u.styles = [
703
882
  }
704
883
  `
705
884
  ];
706
- V([
885
+ T([
707
886
  n()
708
- ], u.prototype, "accept", 2);
709
- V([
887
+ ], b.prototype, "accept", 2);
888
+ T([
710
889
  n({ type: Boolean })
711
- ], u.prototype, "multiple", 2);
712
- V([
890
+ ], b.prototype, "multiple", 2);
891
+ T([
713
892
  n({ attribute: "button-label" })
714
- ], u.prototype, "buttonLabel", 2);
715
- V([
716
- to()
717
- ], u.prototype, "fileNames", 2);
718
- V([
719
- qe("input")
720
- ], u.prototype, "inputEl", 2);
721
- u = V([
722
- d("vox-file-input")
723
- ], u);
724
- var Oo = Object.defineProperty, Po = Object.getOwnPropertyDescriptor, B = (t, o, a, r) => {
725
- for (var e = r > 1 ? void 0 : r ? Po(o, a) : o, s = t.length - 1, i; s >= 0; s--)
726
- (i = t[s]) && (e = (r ? i(o, a, e) : i(e)) || e);
727
- return r && e && Oo(o, a, e), e;
893
+ ], b.prototype, "buttonLabel", 2);
894
+ T([
895
+ le()
896
+ ], b.prototype, "fileNames", 2);
897
+ T([
898
+ Ze("input")
899
+ ], b.prototype, "inputEl", 2);
900
+ b = T([
901
+ p("vox-file-input")
902
+ ], b);
903
+ var Dt = Object.defineProperty, zt = Object.getOwnPropertyDescriptor, F = (o, t, a, r) => {
904
+ for (var e = r > 1 ? void 0 : r ? zt(t, a) : t, s = o.length - 1, i; s >= 0; s--)
905
+ (i = o[s]) && (e = (r ? i(t, a, e) : i(e)) || e);
906
+ return r && e && Dt(t, a, e), e;
728
907
  };
729
- let f = class extends h {
908
+ let m = class extends x {
730
909
  constructor() {
731
910
  super(...arguments), this.type = "text", this.value = "", this.readonly = !1;
732
911
  }
@@ -735,34 +914,36 @@ let f = class extends h {
735
914
  }
736
915
  updated() {
737
916
  this.internals.setFormValue(this.value);
738
- const t = this.renderRoot.querySelector("input");
739
- t && this.syncValidity(t);
917
+ const o = this.renderRoot.querySelector("input");
918
+ o && this.syncValidity(o);
740
919
  }
741
- focus(t) {
742
- var o;
743
- (o = this.renderRoot.querySelector("input")) == null || o.focus(t);
920
+ focus(o) {
921
+ var t;
922
+ (t = this.renderRoot.querySelector("input")) == null || t.focus(o);
744
923
  }
745
- handleInput(t) {
746
- this.value = t.target.value;
924
+ handleInput(o) {
925
+ this.value = o.target.value;
747
926
  }
748
927
  handleChange() {
749
928
  this.dispatchEvent(new Event("change", { bubbles: !0 }));
750
929
  }
751
930
  render() {
752
- return l`
931
+ return c`
753
932
  <div class="field">
754
933
  ${this.renderLabel("input")}
755
934
  <input
756
935
  id="input"
757
936
  class="control"
758
937
  type=${this.type}
759
- .value=${ro(this.value)}
760
- placeholder=${j(this.placeholder)}
761
- autocomplete=${j(this.autocomplete)}
938
+ .value=${dt(this.value)}
939
+ placeholder=${u(this.placeholder)}
940
+ autocomplete=${u(this.autocomplete)}
762
941
  ?required=${this.required}
763
942
  ?readonly=${this.readonly}
764
943
  ?disabled=${this.disabled}
765
- aria-label=${this.label ? p : "text input"}
944
+ aria-label=${this.label ? v : "text input"}
945
+ aria-describedby=${u(this.noteId)}
946
+ aria-invalid=${this.invalid ? "true" : "false"}
766
947
  @input=${this.handleInput}
767
948
  @change=${this.handleChange}
768
949
  />
@@ -771,47 +952,47 @@ let f = class extends h {
771
952
  `;
772
953
  }
773
954
  };
774
- f.styles = re;
775
- B([
955
+ m.styles = ce;
956
+ F([
776
957
  n()
777
- ], f.prototype, "type", 2);
778
- B([
958
+ ], m.prototype, "type", 2);
959
+ F([
779
960
  n()
780
- ], f.prototype, "value", 2);
781
- B([
961
+ ], m.prototype, "value", 2);
962
+ F([
782
963
  n()
783
- ], f.prototype, "placeholder", 2);
784
- B([
964
+ ], m.prototype, "placeholder", 2);
965
+ F([
785
966
  n()
786
- ], f.prototype, "autocomplete", 2);
787
- B([
967
+ ], m.prototype, "autocomplete", 2);
968
+ F([
788
969
  n({ type: Boolean, reflect: !0 })
789
- ], f.prototype, "readonly", 2);
790
- f = B([
791
- d("vox-input")
792
- ], f);
793
- var Co = Object.getOwnPropertyDescriptor, jo = (t, o, a, r) => {
794
- for (var e = r > 1 ? void 0 : r ? Co(o, a) : o, s = t.length - 1, i; s >= 0; s--)
795
- (i = t[s]) && (e = i(e) || e);
970
+ ], m.prototype, "readonly", 2);
971
+ m = F([
972
+ p("vox-input")
973
+ ], m);
974
+ var Et = Object.getOwnPropertyDescriptor, Ht = (o, t, a, r) => {
975
+ for (var e = r > 1 ? void 0 : r ? Et(t, a) : t, s = o.length - 1, i; s >= 0; s--)
976
+ (i = o[s]) && (e = i(e) || e);
796
977
  return e;
797
978
  };
798
- let ke = class extends v {
799
- handleSlotChange(t) {
800
- const o = t.target.assignedElements();
801
- o.forEach((a, r) => {
802
- const e = r === 0 ? "start" : r === o.length - 1 ? "end" : "middle";
979
+ let Ie = class extends h {
980
+ handleSlotChange(o) {
981
+ const t = o.target.assignedElements();
982
+ t.forEach((a, r) => {
983
+ const e = r === 0 ? "start" : r === t.length - 1 ? "end" : "middle";
803
984
  a.setAttribute("data-vox-group", e);
804
985
  });
805
986
  }
806
987
  render() {
807
- return l`
988
+ return c`
808
989
  <div class="group" role="group">
809
990
  <slot @slotchange=${this.handleSlotChange}></slot>
810
991
  </div>
811
992
  `;
812
993
  }
813
994
  };
814
- ke.styles = c`
995
+ Ie.styles = d`
815
996
  :host {
816
997
  display: block;
817
998
  font-family: var(--vox-font-family-base);
@@ -853,15 +1034,15 @@ ke.styles = c`
853
1034
  border-left: none;
854
1035
  }
855
1036
  `;
856
- ke = jo([
857
- d("vox-input-group")
858
- ], ke);
859
- var Do = Object.defineProperty, ko = Object.getOwnPropertyDescriptor, _e = (t, o, a, r) => {
860
- for (var e = r > 1 ? void 0 : r ? ko(o, a) : o, s = t.length - 1, i; s >= 0; s--)
861
- (i = t[s]) && (e = (r ? i(o, a, e) : i(e)) || e);
862
- return r && e && Do(o, a, e), e;
1037
+ Ie = Ht([
1038
+ p("vox-input-group")
1039
+ ], Ie);
1040
+ var St = Object.defineProperty, At = Object.getOwnPropertyDescriptor, je = (o, t, a, r) => {
1041
+ for (var e = r > 1 ? void 0 : r ? At(t, a) : t, s = o.length - 1, i; s >= 0; s--)
1042
+ (i = o[s]) && (e = (r ? i(t, a, e) : i(e)) || e);
1043
+ return r && e && St(t, a, e), e;
863
1044
  };
864
- let k = class extends v {
1045
+ let H = class extends h {
865
1046
  constructor() {
866
1047
  super(...arguments), this.value = "", this.checked = !1, this.disabled = !1;
867
1048
  }
@@ -870,11 +1051,11 @@ let k = class extends v {
870
1051
  new CustomEvent("vox-radio-select", { bubbles: !0, composed: !0 })
871
1052
  );
872
1053
  }
873
- handleKeydown(t) {
874
- (t.key === " " || t.key === "Enter") && (t.preventDefault(), this.select());
1054
+ handleKeydown(o) {
1055
+ (o.key === " " || o.key === "Enter") && (o.preventDefault(), this.select());
875
1056
  }
876
1057
  render() {
877
- return l`
1058
+ return c`
878
1059
  <span
879
1060
  class="radio"
880
1061
  role="radio"
@@ -890,7 +1071,7 @@ let k = class extends v {
890
1071
  `;
891
1072
  }
892
1073
  };
893
- k.styles = c`
1074
+ H.styles = d`
894
1075
  :host {
895
1076
  display: block;
896
1077
  font-family: var(--vox-font-family-base);
@@ -939,24 +1120,24 @@ k.styles = c`
939
1120
  outline-offset: 2px;
940
1121
  }
941
1122
  `;
942
- _e([
1123
+ je([
943
1124
  n()
944
- ], k.prototype, "value", 2);
945
- _e([
1125
+ ], H.prototype, "value", 2);
1126
+ je([
946
1127
  n({ type: Boolean, reflect: !0 })
947
- ], k.prototype, "checked", 2);
948
- _e([
1128
+ ], H.prototype, "checked", 2);
1129
+ je([
949
1130
  n({ type: Boolean, reflect: !0 })
950
- ], k.prototype, "disabled", 2);
951
- k = _e([
952
- d("vox-radio")
953
- ], k);
954
- var zo = Object.defineProperty, Eo = Object.getOwnPropertyDescriptor, so = (t, o, a, r) => {
955
- for (var e = r > 1 ? void 0 : r ? Eo(o, a) : o, s = t.length - 1, i; s >= 0; s--)
956
- (i = t[s]) && (e = (r ? i(o, a, e) : i(e)) || e);
957
- return r && e && zo(o, a, e), e;
1131
+ ], H.prototype, "disabled", 2);
1132
+ H = je([
1133
+ p("vox-radio")
1134
+ ], H);
1135
+ var It = Object.defineProperty, Bt = Object.getOwnPropertyDescriptor, ht = (o, t, a, r) => {
1136
+ for (var e = r > 1 ? void 0 : r ? Bt(t, a) : t, s = o.length - 1, i; s >= 0; s--)
1137
+ (i = o[s]) && (e = (r ? i(t, a, e) : i(e)) || e);
1138
+ return r && e && It(t, a, e), e;
958
1139
  };
959
- let pe = class extends h {
1140
+ let me = class extends x {
960
1141
  constructor() {
961
1142
  super(...arguments), this.value = "";
962
1143
  }
@@ -967,45 +1148,52 @@ let pe = class extends h {
967
1148
  this.value = "";
968
1149
  }
969
1150
  updated() {
970
- this.internals.setFormValue(this.value || null), this.internals.setValidity(
971
- this.required && !this.value ? { valueMissing: !0 } : {},
1151
+ this.internals.setFormValue(this.value || null), this.invalid = this.required && !this.value, this.internals.setValidity(
1152
+ this.invalid ? { valueMissing: !0 } : {},
972
1153
  "Please select an option.",
973
1154
  this
974
1155
  ), this.syncRadios();
975
1156
  }
976
1157
  syncRadios() {
977
- const t = this.radios, o = t.some((a) => a.value === this.value && this.value !== "");
978
- t.forEach((a, r) => {
1158
+ const o = this.radios, t = o.some((r) => r.value === this.value && this.value !== ""), a = o.find((r) => !r.disabled);
1159
+ o.forEach((r) => {
979
1160
  var s, i;
980
- a.checked = this.value !== "" && a.value === this.value;
981
- const e = o ? a.checked : r === 0;
982
- (i = (s = a.shadowRoot) == null ? void 0 : s.querySelector(".radio")) == null || i.setAttribute("tabindex", e ? "0" : "-1");
1161
+ r.checked = this.value !== "" && r.value === this.value;
1162
+ const e = t ? r.checked : r === a;
1163
+ (i = (s = r.shadowRoot) == null ? void 0 : s.querySelector(".radio")) == null || i.setAttribute("tabindex", e ? "0" : "-1");
983
1164
  });
984
1165
  }
985
- handleSelect(t) {
986
- const o = t.target;
987
- !(o instanceof HTMLElement) || o.tagName !== "VOX-RADIO" || (t.stopPropagation(), this.value !== o.value && (this.value = o.value, this.dispatchEvent(new Event("change", { bubbles: !0 }))));
1166
+ handleSelect(o) {
1167
+ const t = o.target;
1168
+ !(t instanceof HTMLElement) || t.tagName !== "VOX-RADIO" || (o.stopPropagation(), this.value !== t.value && (this.value = t.value, this.dispatchEvent(new Event("change", { bubbles: !0 }))));
988
1169
  }
989
- handleKeydown(t) {
990
- var Je, eo;
1170
+ handleKeydown(o) {
1171
+ var nt, lt;
991
1172
  const a = {
992
1173
  ArrowDown: 1,
993
1174
  ArrowRight: 1,
994
1175
  ArrowUp: -1,
995
1176
  ArrowLeft: -1
996
- }[t.key];
1177
+ }[o.key];
997
1178
  if (!a) return;
998
- t.preventDefault();
999
- const r = this.radios.filter((De) => !De.disabled);
1179
+ o.preventDefault();
1180
+ const r = this.radios.filter((Ae) => !Ae.disabled);
1000
1181
  if (r.length === 0) return;
1001
- const e = r.findIndex((De) => De.checked), s = (Math.max(e, 0) + a + r.length) % r.length, i = r[s];
1002
- i.select(), (eo = (Je = i.shadowRoot) == null ? void 0 : Je.querySelector(".radio")) == null || eo.focus();
1182
+ const e = r.findIndex((Ae) => Ae.checked), s = (Math.max(e, 0) + a + r.length) % r.length, i = r[s];
1183
+ i.select(), (lt = (nt = i.shadowRoot) == null ? void 0 : nt.querySelector(".radio")) == null || lt.focus();
1003
1184
  }
1004
1185
  render() {
1005
- return l`
1006
- <div class="field" role="radiogroup" aria-label=${this.label}>
1007
- ${this.label ? l`<span class="label">
1008
- ${this.label}${this.required ? l`<span class="required-mark" aria-hidden="true"> *</span>` : ""}
1186
+ return c`
1187
+ <div
1188
+ class="field"
1189
+ role="radiogroup"
1190
+ aria-label=${this.label || v}
1191
+ aria-describedby=${u(this.noteId)}
1192
+ aria-invalid=${this.invalid ? "true" : "false"}
1193
+ aria-required=${this.required ? "true" : "false"}
1194
+ >
1195
+ ${this.label ? c`<span class="label">
1196
+ ${this.label}${this.required ? c`<span class="required-mark" aria-hidden="true"> *</span>` : ""}
1009
1197
  </span>` : ""}
1010
1198
  <div
1011
1199
  class="options"
@@ -1019,9 +1207,9 @@ let pe = class extends h {
1019
1207
  `;
1020
1208
  }
1021
1209
  };
1022
- pe.styles = [
1023
- re,
1024
- c`
1210
+ me.styles = [
1211
+ ce,
1212
+ d`
1025
1213
  .options {
1026
1214
  display: flex;
1027
1215
  flex-direction: column;
@@ -1030,18 +1218,18 @@ pe.styles = [
1030
1218
  }
1031
1219
  `
1032
1220
  ];
1033
- so([
1221
+ ht([
1034
1222
  n()
1035
- ], pe.prototype, "value", 2);
1036
- pe = so([
1037
- d("vox-radio-group")
1038
- ], pe);
1039
- var So = Object.defineProperty, Vo = Object.getOwnPropertyDescriptor, Me = (t, o, a, r) => {
1040
- for (var e = r > 1 ? void 0 : r ? Vo(o, a) : o, s = t.length - 1, i; s >= 0; s--)
1041
- (i = t[s]) && (e = (r ? i(o, a, e) : i(e)) || e);
1042
- return r && e && So(o, a, e), e;
1223
+ ], me.prototype, "value", 2);
1224
+ me = ht([
1225
+ p("vox-radio-group")
1226
+ ], me);
1227
+ var qt = Object.defineProperty, Nt = Object.getOwnPropertyDescriptor, Ge = (o, t, a, r) => {
1228
+ for (var e = r > 1 ? void 0 : r ? Nt(t, a) : t, s = o.length - 1, i; s >= 0; s--)
1229
+ (i = o[s]) && (e = (r ? i(t, a, e) : i(e)) || e);
1230
+ return r && e && qt(t, a, e), e;
1043
1231
  };
1044
- let L = class extends h {
1232
+ let U = class extends x {
1045
1233
  constructor() {
1046
1234
  super(...arguments), this.value = "";
1047
1235
  }
@@ -1053,16 +1241,16 @@ let L = class extends h {
1053
1241
  }
1054
1242
  syncOptions() {
1055
1243
  if (!this.selectEl) return;
1056
- const t = this.renderRoot.querySelector("slot");
1057
- t && (this.selectEl.replaceChildren(
1058
- ...t.assignedElements().filter((o) => o instanceof HTMLOptionElement || o instanceof HTMLOptGroupElement).map((o) => o.cloneNode(!0))
1244
+ const o = this.renderRoot.querySelector("slot");
1245
+ o && (this.selectEl.replaceChildren(
1246
+ ...o.assignedElements().filter((t) => t instanceof HTMLOptionElement || t instanceof HTMLOptGroupElement).map((t) => t.cloneNode(!0))
1059
1247
  ), this.value && (this.selectEl.value = this.value), this.value = this.selectEl.value);
1060
1248
  }
1061
1249
  handleChange() {
1062
1250
  this.value = this.selectEl.value, this.dispatchEvent(new Event("change", { bubbles: !0 }));
1063
1251
  }
1064
1252
  render() {
1065
- return l`
1253
+ return c`
1066
1254
  <div class="field">
1067
1255
  ${this.renderLabel("select")}
1068
1256
  <select
@@ -1070,6 +1258,8 @@ let L = class extends h {
1070
1258
  class="control"
1071
1259
  ?required=${this.required}
1072
1260
  ?disabled=${this.disabled}
1261
+ aria-describedby=${u(this.noteId)}
1262
+ aria-invalid=${this.invalid ? "true" : "false"}
1073
1263
  @change=${this.handleChange}
1074
1264
  ></select>
1075
1265
  ${this.renderNote()}
@@ -1078,9 +1268,9 @@ let L = class extends h {
1078
1268
  `;
1079
1269
  }
1080
1270
  };
1081
- L.styles = [
1082
- re,
1083
- c`
1271
+ U.styles = [
1272
+ ce,
1273
+ d`
1084
1274
  select.control {
1085
1275
  appearance: none;
1086
1276
  padding-right: var(--vox-space-8);
@@ -1091,21 +1281,21 @@ L.styles = [
1091
1281
  }
1092
1282
  `
1093
1283
  ];
1094
- Me([
1284
+ Ge([
1095
1285
  n()
1096
- ], L.prototype, "value", 2);
1097
- Me([
1098
- qe("select")
1099
- ], L.prototype, "selectEl", 2);
1100
- L = Me([
1101
- d("vox-select")
1102
- ], L);
1103
- var Bo = Object.defineProperty, Ao = Object.getOwnPropertyDescriptor, Te = (t, o, a, r) => {
1104
- for (var e = r > 1 ? void 0 : r ? Ao(o, a) : o, s = t.length - 1, i; s >= 0; s--)
1105
- (i = t[s]) && (e = (r ? i(o, a, e) : i(e)) || e);
1106
- return r && e && Bo(o, a, e), e;
1286
+ ], U.prototype, "value", 2);
1287
+ Ge([
1288
+ Ze("select")
1289
+ ], U.prototype, "selectEl", 2);
1290
+ U = Ge([
1291
+ p("vox-select")
1292
+ ], U);
1293
+ var Tt = Object.defineProperty, Ft = Object.getOwnPropertyDescriptor, Xe = (o, t, a, r) => {
1294
+ for (var e = r > 1 ? void 0 : r ? Ft(t, a) : t, s = o.length - 1, i; s >= 0; s--)
1295
+ (i = o[s]) && (e = (r ? i(t, a, e) : i(e)) || e);
1296
+ return r && e && Tt(t, a, e), e;
1107
1297
  };
1108
- let N = class extends h {
1298
+ let K = class extends x {
1109
1299
  constructor() {
1110
1300
  super(...arguments), this.checked = !1, this.value = "on";
1111
1301
  }
@@ -1115,11 +1305,11 @@ let N = class extends h {
1115
1305
  updated() {
1116
1306
  this.internals.setFormValue(this.checked ? this.value : null);
1117
1307
  }
1118
- handleChange(t) {
1119
- this.checked = t.target.checked, this.dispatchEvent(new Event("change", { bubbles: !0 }));
1308
+ handleChange(o) {
1309
+ this.checked = o.target.checked, this.dispatchEvent(new Event("change", { bubbles: !0 }));
1120
1310
  }
1121
1311
  render() {
1122
- return l`
1312
+ return c`
1123
1313
  <label class="check">
1124
1314
  <input
1125
1315
  type="checkbox"
@@ -1134,9 +1324,9 @@ let N = class extends h {
1134
1324
  `;
1135
1325
  }
1136
1326
  };
1137
- N.styles = [
1138
- ao,
1139
- c`
1327
+ K.styles = [
1328
+ pt,
1329
+ d`
1140
1330
  .track {
1141
1331
  flex: none;
1142
1332
  position: relative;
@@ -1174,21 +1364,21 @@ N.styles = [
1174
1364
  }
1175
1365
  `
1176
1366
  ];
1177
- Te([
1367
+ Xe([
1178
1368
  n({ type: Boolean, reflect: !0 })
1179
- ], N.prototype, "checked", 2);
1180
- Te([
1369
+ ], K.prototype, "checked", 2);
1370
+ Xe([
1181
1371
  n()
1182
- ], N.prototype, "value", 2);
1183
- N = Te([
1184
- d("vox-switch")
1185
- ], N);
1186
- var qo = Object.defineProperty, Lo = Object.getOwnPropertyDescriptor, ae = (t, o, a, r) => {
1187
- for (var e = r > 1 ? void 0 : r ? Lo(o, a) : o, s = t.length - 1, i; s >= 0; s--)
1188
- (i = t[s]) && (e = (r ? i(o, a, e) : i(e)) || e);
1189
- return r && e && qo(o, a, e), e;
1372
+ ], K.prototype, "value", 2);
1373
+ K = Xe([
1374
+ p("vox-switch")
1375
+ ], K);
1376
+ var Rt = Object.defineProperty, Zt = Object.getOwnPropertyDescriptor, de = (o, t, a, r) => {
1377
+ for (var e = r > 1 ? void 0 : r ? Zt(t, a) : t, s = o.length - 1, i; s >= 0; s--)
1378
+ (i = o[s]) && (e = (r ? i(t, a, e) : i(e)) || e);
1379
+ return r && e && Rt(t, a, e), e;
1190
1380
  };
1191
- let g = class extends h {
1381
+ let w = class extends x {
1192
1382
  constructor() {
1193
1383
  super(...arguments), this.value = "", this.rows = 4, this.readonly = !1;
1194
1384
  }
@@ -1197,32 +1387,34 @@ let g = class extends h {
1197
1387
  }
1198
1388
  updated() {
1199
1389
  this.internals.setFormValue(this.value);
1200
- const t = this.renderRoot.querySelector("textarea");
1201
- t && this.syncValidity(t);
1390
+ const o = this.renderRoot.querySelector("textarea");
1391
+ o && this.syncValidity(o);
1202
1392
  }
1203
- focus(t) {
1204
- var o;
1205
- (o = this.renderRoot.querySelector("textarea")) == null || o.focus(t);
1393
+ focus(o) {
1394
+ var t;
1395
+ (t = this.renderRoot.querySelector("textarea")) == null || t.focus(o);
1206
1396
  }
1207
- handleInput(t) {
1208
- this.value = t.target.value;
1397
+ handleInput(o) {
1398
+ this.value = o.target.value;
1209
1399
  }
1210
1400
  handleChange() {
1211
1401
  this.dispatchEvent(new Event("change", { bubbles: !0 }));
1212
1402
  }
1213
1403
  render() {
1214
- return l`
1404
+ return c`
1215
1405
  <div class="field">
1216
1406
  ${this.renderLabel("textarea")}
1217
1407
  <textarea
1218
1408
  id="textarea"
1219
1409
  class="control"
1220
1410
  rows=${this.rows}
1221
- .value=${ro(this.value)}
1222
- placeholder=${j(this.placeholder)}
1411
+ .value=${dt(this.value)}
1412
+ placeholder=${u(this.placeholder)}
1223
1413
  ?required=${this.required}
1224
1414
  ?readonly=${this.readonly}
1225
1415
  ?disabled=${this.disabled}
1416
+ aria-describedby=${u(this.noteId)}
1417
+ aria-invalid=${this.invalid ? "true" : "false"}
1226
1418
  @input=${this.handleInput}
1227
1419
  @change=${this.handleChange}
1228
1420
  ></textarea>
@@ -1231,48 +1423,53 @@ let g = class extends h {
1231
1423
  `;
1232
1424
  }
1233
1425
  };
1234
- g.styles = [
1235
- re,
1236
- c`
1426
+ w.styles = [
1427
+ ce,
1428
+ d`
1237
1429
  textarea.control {
1238
1430
  resize: vertical;
1239
1431
  min-height: 4em;
1240
1432
  }
1241
1433
  `
1242
1434
  ];
1243
- ae([
1435
+ de([
1244
1436
  n()
1245
- ], g.prototype, "value", 2);
1246
- ae([
1437
+ ], w.prototype, "value", 2);
1438
+ de([
1247
1439
  n()
1248
- ], g.prototype, "placeholder", 2);
1249
- ae([
1440
+ ], w.prototype, "placeholder", 2);
1441
+ de([
1250
1442
  n({ type: Number })
1251
- ], g.prototype, "rows", 2);
1252
- ae([
1443
+ ], w.prototype, "rows", 2);
1444
+ de([
1253
1445
  n({ type: Boolean, reflect: !0 })
1254
- ], g.prototype, "readonly", 2);
1255
- g = ae([
1256
- d("vox-textarea")
1257
- ], g);
1258
- var No = Object.defineProperty, Mo = Object.getOwnPropertyDescriptor, se = (t, o, a, r) => {
1259
- for (var e = r > 1 ? void 0 : r ? Mo(o, a) : o, s = t.length - 1, i; s >= 0; s--)
1260
- (i = t[s]) && (e = (r ? i(o, a, e) : i(e)) || e);
1261
- return r && e && No(o, a, e), e;
1446
+ ], w.prototype, "readonly", 2);
1447
+ w = de([
1448
+ p("vox-textarea")
1449
+ ], w);
1450
+ var Ut = Object.defineProperty, Kt = Object.getOwnPropertyDescriptor, pe = (o, t, a, r) => {
1451
+ for (var e = r > 1 ? void 0 : r ? Kt(t, a) : t, s = o.length - 1, i; s >= 0; s--)
1452
+ (i = o[s]) && (e = (r ? i(t, a, e) : i(e)) || e);
1453
+ return r && e && Ut(t, a, e), e;
1262
1454
  };
1263
- let m = class extends v {
1455
+ let $ = class extends h {
1264
1456
  constructor() {
1265
1457
  super(...arguments), this.alt = "", this.initials = "", this.size = "md";
1266
1458
  }
1267
1459
  render() {
1268
- return l`
1269
- <span class="avatar" role=${this.src ? "presentation" : "img"} aria-label=${this.alt}>
1270
- ${this.src ? l`<img src=${this.src} alt=${this.alt} />` : this.initials}
1460
+ const o = !this.src && this.alt;
1461
+ return c`
1462
+ <span
1463
+ class="avatar"
1464
+ role=${o ? "img" : v}
1465
+ aria-label=${o ? this.alt : v}
1466
+ >
1467
+ ${this.src ? c`<img src=${this.src} alt=${this.alt} />` : this.initials}
1271
1468
  </span>
1272
1469
  `;
1273
1470
  }
1274
1471
  };
1275
- m.styles = c`
1472
+ $.styles = d`
1276
1473
  :host {
1277
1474
  display: inline-block;
1278
1475
  }
@@ -1320,36 +1517,36 @@ m.styles = c`
1320
1517
  font-size: 28px;
1321
1518
  }
1322
1519
  `;
1323
- se([
1520
+ pe([
1324
1521
  n()
1325
- ], m.prototype, "src", 2);
1326
- se([
1522
+ ], $.prototype, "src", 2);
1523
+ pe([
1327
1524
  n()
1328
- ], m.prototype, "alt", 2);
1329
- se([
1525
+ ], $.prototype, "alt", 2);
1526
+ pe([
1330
1527
  n()
1331
- ], m.prototype, "initials", 2);
1332
- se([
1528
+ ], $.prototype, "initials", 2);
1529
+ pe([
1333
1530
  n({ reflect: !0 })
1334
- ], m.prototype, "size", 2);
1335
- m = se([
1336
- d("vox-avatar")
1337
- ], m);
1338
- var To = Object.defineProperty, Fo = Object.getOwnPropertyDescriptor, Fe = (t, o, a, r) => {
1339
- for (var e = r > 1 ? void 0 : r ? Fo(o, a) : o, s = t.length - 1, i; s >= 0; s--)
1340
- (i = t[s]) && (e = (r ? i(o, a, e) : i(e)) || e);
1341
- return r && e && To(o, a, e), e;
1531
+ ], $.prototype, "size", 2);
1532
+ $ = pe([
1533
+ p("vox-avatar")
1534
+ ], $);
1535
+ var Gt = Object.defineProperty, Xt = Object.getOwnPropertyDescriptor, Qe = (o, t, a, r) => {
1536
+ for (var e = r > 1 ? void 0 : r ? Xt(t, a) : t, s = o.length - 1, i; s >= 0; s--)
1537
+ (i = o[s]) && (e = (r ? i(t, a, e) : i(e)) || e);
1538
+ return r && e && Gt(t, a, e), e;
1342
1539
  };
1343
- let M = class extends v {
1540
+ let G = class extends h {
1344
1541
  constructor() {
1345
1542
  super(...arguments), this.heading = "", this.reverse = !1, this.hasActions = !1;
1346
1543
  }
1347
- handleActionsSlotChange(t) {
1348
- const o = t.target;
1349
- this.hasActions = o.assignedNodes({ flatten: !0 }).length > 0, this.requestUpdate();
1544
+ handleActionsSlotChange(o) {
1545
+ const t = o.target;
1546
+ this.hasActions = t.assignedNodes({ flatten: !0 }).length > 0, this.requestUpdate();
1350
1547
  }
1351
1548
  render() {
1352
- return l`
1549
+ return c`
1353
1550
  <div class="billboard">
1354
1551
  <div class="media"><slot name="media"></slot></div>
1355
1552
  <div class="content">
@@ -1363,7 +1560,7 @@ let M = class extends v {
1363
1560
  `;
1364
1561
  }
1365
1562
  };
1366
- M.styles = c`
1563
+ G.styles = d`
1367
1564
  :host {
1368
1565
  display: block;
1369
1566
  font-family: var(--vox-font-family-base);
@@ -1425,30 +1622,30 @@ M.styles = c`
1425
1622
  display: none;
1426
1623
  }
1427
1624
  `;
1428
- Fe([
1625
+ Qe([
1429
1626
  n()
1430
- ], M.prototype, "heading", 2);
1431
- Fe([
1627
+ ], G.prototype, "heading", 2);
1628
+ Qe([
1432
1629
  n({ type: Boolean, reflect: !0 })
1433
- ], M.prototype, "reverse", 2);
1434
- M = Fe([
1435
- d("vox-billboard")
1436
- ], M);
1437
- var Io = Object.getOwnPropertyDescriptor, Ro = (t, o, a, r) => {
1438
- for (var e = r > 1 ? void 0 : r ? Io(o, a) : o, s = t.length - 1, i; s >= 0; s--)
1439
- (i = t[s]) && (e = i(e) || e);
1630
+ ], G.prototype, "reverse", 2);
1631
+ G = Qe([
1632
+ p("vox-billboard")
1633
+ ], G);
1634
+ var Qt = Object.getOwnPropertyDescriptor, Wt = (o, t, a, r) => {
1635
+ for (var e = r > 1 ? void 0 : r ? Qt(t, a) : t, s = o.length - 1, i; s >= 0; s--)
1636
+ (i = o[s]) && (e = i(e) || e);
1440
1637
  return e;
1441
1638
  };
1442
- let ze = class extends v {
1639
+ let Be = class extends h {
1443
1640
  render() {
1444
- return l`
1641
+ return c`
1445
1642
  <nav aria-label="Breadcrumbs">
1446
1643
  <slot></slot>
1447
1644
  </nav>
1448
1645
  `;
1449
1646
  }
1450
1647
  };
1451
- ze.styles = c`
1648
+ Be.styles = d`
1452
1649
  :host {
1453
1650
  display: block;
1454
1651
  font-family: var(--vox-font-family-base);
@@ -1482,36 +1679,77 @@ ze.styles = c`
1482
1679
  color: var(--vox-color-text-3);
1483
1680
  }
1484
1681
  `;
1485
- ze = Ro([
1486
- d("vox-breadcrumbs")
1487
- ], ze);
1488
- var Ho = Object.defineProperty, Uo = Object.getOwnPropertyDescriptor, Ie = (t, o, a, r) => {
1489
- for (var e = r > 1 ? void 0 : r ? Uo(o, a) : o, s = t.length - 1, i; s >= 0; s--)
1490
- (i = t[s]) && (e = (r ? i(o, a, e) : i(e)) || e);
1491
- return r && e && Ho(o, a, e), e;
1682
+ Be = Wt([
1683
+ p("vox-breadcrumbs")
1684
+ ], Be);
1685
+ var Yt = Object.defineProperty, Jt = Object.getOwnPropertyDescriptor, De = (o, t, a, r) => {
1686
+ for (var e = r > 1 ? void 0 : r ? Jt(t, a) : t, s = o.length - 1, i; s >= 0; s--)
1687
+ (i = o[s]) && (e = (r ? i(t, a, e) : i(e)) || e);
1688
+ return r && e && Yt(t, a, e), e;
1492
1689
  };
1493
- let T = class extends v {
1690
+ let S = class extends h {
1494
1691
  constructor() {
1495
- super(...arguments), this.siteTitle = "", this.href = "/";
1692
+ super(...arguments), this.siteTitle = "", this.href = "/", this.mobileOpen = !1, this.handleOutsideClick = (o) => {
1693
+ this.mobileOpen && !o.composedPath().includes(this) && (this.mobileOpen = !1);
1694
+ }, this.handleFocusOut = (o) => {
1695
+ const t = o.relatedTarget;
1696
+ this.mobileOpen && !(t && this.contains(t)) && (this.mobileOpen = !1);
1697
+ }, this.handleKeydown = (o) => {
1698
+ var t;
1699
+ o.key === "Escape" && this.mobileOpen && (this.mobileOpen = !1, (t = this.renderRoot.querySelector(".menu-toggle")) == null || t.focus());
1700
+ }, this.toggleMobileMenu = () => {
1701
+ this.mobileOpen = !this.mobileOpen;
1702
+ }, this.closeMobileMenu = () => {
1703
+ this.mobileOpen = !1;
1704
+ };
1705
+ }
1706
+ connectedCallback() {
1707
+ super.connectedCallback(), document.addEventListener("click", this.handleOutsideClick), this.addEventListener("keydown", this.handleKeydown), this.addEventListener("focusout", this.handleFocusOut);
1708
+ }
1709
+ disconnectedCallback() {
1710
+ super.disconnectedCallback(), document.removeEventListener("click", this.handleOutsideClick), this.removeEventListener("keydown", this.handleKeydown), this.removeEventListener("focusout", this.handleFocusOut);
1496
1711
  }
1497
1712
  render() {
1498
- return l`
1713
+ return c`
1499
1714
  <header class="header">
1500
1715
  <a class="brand" href=${this.href}>
1501
1716
  <slot name="logo"></slot>
1502
- ${this.siteTitle ? l`<span>${this.siteTitle}</span>` : p}
1717
+ ${this.siteTitle ? c`<span>${this.siteTitle}</span>` : v}
1503
1718
  </a>
1504
- <nav aria-label="Main">
1505
- <slot></slot>
1506
- </nav>
1507
- <div class="actions">
1508
- <slot name="actions"></slot>
1719
+ <button
1720
+ type="button"
1721
+ class="menu-toggle"
1722
+ aria-expanded=${this.mobileOpen ? "true" : "false"}
1723
+ aria-controls="nav-wrap"
1724
+ aria-label=${this.mobileOpen ? "Close menu" : "Open menu"}
1725
+ @click=${this.toggleMobileMenu}
1726
+ >
1727
+ <svg
1728
+ class="menu-icon"
1729
+ viewBox="0 0 48 48"
1730
+ fill="none"
1731
+ stroke="currentColor"
1732
+ stroke-width="2"
1733
+ stroke-linecap="round"
1734
+ stroke-linejoin="round"
1735
+ aria-hidden="true"
1736
+ >
1737
+ ${this.mobileOpen ? y.close : y.menu}
1738
+ </svg>
1739
+ </button>
1740
+ <div id="nav-wrap" class="nav-wrap${this.mobileOpen ? " open" : ""}">
1741
+ <nav aria-label="Main">
1742
+ <slot @click=${this.closeMobileMenu}></slot>
1743
+ </nav>
1744
+ <div class="actions">
1745
+ <slot name="actions"></slot>
1746
+ </div>
1509
1747
  </div>
1510
1748
  </header>
1511
1749
  `;
1512
1750
  }
1513
1751
  };
1514
- T.styles = c`
1752
+ S.styles = d`
1515
1753
  :host {
1516
1754
  display: block;
1517
1755
  font-family: var(--vox-font-family-base);
@@ -1545,6 +1783,39 @@ T.styles = c`
1545
1783
  width: auto;
1546
1784
  }
1547
1785
 
1786
+ .menu-toggle {
1787
+ display: none;
1788
+ align-items: center;
1789
+ justify-content: center;
1790
+ width: 36px;
1791
+ height: 36px;
1792
+ margin-left: auto;
1793
+ padding: 0;
1794
+ background: none;
1795
+ border: none;
1796
+ border-radius: var(--vox-radius-sm);
1797
+ color: var(--vox-color-text-1);
1798
+ cursor: pointer;
1799
+ }
1800
+
1801
+ .menu-toggle:hover {
1802
+ color: var(--vox-color-brand-1);
1803
+ }
1804
+
1805
+ .menu-toggle:focus-visible {
1806
+ outline: 2px solid var(--vox-color-brand-1);
1807
+ outline-offset: 2px;
1808
+ }
1809
+
1810
+ .menu-icon {
1811
+ width: 22px;
1812
+ height: 22px;
1813
+ }
1814
+
1815
+ .nav-wrap {
1816
+ display: contents;
1817
+ }
1818
+
1548
1819
  nav {
1549
1820
  display: flex;
1550
1821
  align-items: center;
@@ -1575,45 +1846,80 @@ T.styles = c`
1575
1846
  align-items: center;
1576
1847
  gap: var(--vox-space-3);
1577
1848
  }
1849
+
1850
+ @media (max-width: 768px) {
1851
+ .menu-toggle {
1852
+ display: inline-flex;
1853
+ }
1854
+
1855
+ .nav-wrap {
1856
+ display: none;
1857
+ width: 100%;
1858
+ }
1859
+
1860
+ .nav-wrap.open {
1861
+ display: flex;
1862
+ flex-direction: column;
1863
+ align-items: stretch;
1864
+ gap: var(--vox-space-4);
1865
+ margin-top: var(--vox-space-3);
1866
+ padding-top: var(--vox-space-4);
1867
+ border-top: 1px solid var(--vox-color-divider);
1868
+ }
1869
+
1870
+ nav {
1871
+ flex-direction: column;
1872
+ align-items: flex-start;
1873
+ gap: var(--vox-space-3);
1874
+ }
1875
+
1876
+ .actions {
1877
+ flex-direction: column;
1878
+ align-items: stretch;
1879
+ }
1880
+ }
1578
1881
  `;
1579
- Ie([
1882
+ De([
1580
1883
  n({ attribute: "site-title" })
1581
- ], T.prototype, "siteTitle", 2);
1582
- Ie([
1884
+ ], S.prototype, "siteTitle", 2);
1885
+ De([
1583
1886
  n()
1584
- ], T.prototype, "href", 2);
1585
- T = Ie([
1586
- d("vox-header")
1587
- ], T);
1588
- var Ko = Object.defineProperty, Go = Object.getOwnPropertyDescriptor, ie = (t, o, a, r) => {
1589
- for (var e = r > 1 ? void 0 : r ? Go(o, a) : o, s = t.length - 1, i; s >= 0; s--)
1590
- (i = t[s]) && (e = (r ? i(o, a, e) : i(e)) || e);
1591
- return r && e && Ko(o, a, e), e;
1887
+ ], S.prototype, "href", 2);
1888
+ De([
1889
+ le()
1890
+ ], S.prototype, "mobileOpen", 2);
1891
+ S = De([
1892
+ p("vox-header")
1893
+ ], S);
1894
+ var eo = Object.defineProperty, to = Object.getOwnPropertyDescriptor, he = (o, t, a, r) => {
1895
+ for (var e = r > 1 ? void 0 : r ? to(t, a) : t, s = o.length - 1, i; s >= 0; s--)
1896
+ (i = o[s]) && (e = (r ? i(t, a, e) : i(e)) || e);
1897
+ return r && e && eo(t, a, e), e;
1592
1898
  };
1593
- let y = class extends v {
1899
+ let _ = class extends h {
1594
1900
  constructor() {
1595
1901
  super(...arguments), this.previousLabel = "", this.nextLabel = "";
1596
1902
  }
1597
1903
  render() {
1598
- return l`
1904
+ return c`
1599
1905
  <nav aria-label="Series">
1600
- ${this.previousHref ? l`
1906
+ ${this.previousHref ? c`
1601
1907
  <a href=${this.previousHref} rel="prev">
1602
1908
  <span class="direction">← Previous</span>
1603
1909
  <span class="title">${this.previousLabel}</span>
1604
1910
  </a>
1605
- ` : p}
1606
- ${this.nextHref ? l`
1911
+ ` : v}
1912
+ ${this.nextHref ? c`
1607
1913
  <a class="next" href=${this.nextHref} rel="next">
1608
1914
  <span class="direction">Next →</span>
1609
1915
  <span class="title">${this.nextLabel}</span>
1610
1916
  </a>
1611
- ` : p}
1917
+ ` : v}
1612
1918
  </nav>
1613
1919
  `;
1614
1920
  }
1615
1921
  };
1616
- y.styles = c`
1922
+ _.styles = d`
1617
1923
  :host {
1618
1924
  display: block;
1619
1925
  font-family: var(--vox-font-family-base);
@@ -1663,68 +1969,167 @@ y.styles = c`
1663
1969
  color: var(--vox-color-brand-1);
1664
1970
  }
1665
1971
  `;
1666
- ie([
1972
+ he([
1667
1973
  n({ attribute: "previous-href" })
1668
- ], y.prototype, "previousHref", 2);
1669
- ie([
1974
+ ], _.prototype, "previousHref", 2);
1975
+ he([
1670
1976
  n({ attribute: "previous-label" })
1671
- ], y.prototype, "previousLabel", 2);
1672
- ie([
1977
+ ], _.prototype, "previousLabel", 2);
1978
+ he([
1673
1979
  n({ attribute: "next-href" })
1674
- ], y.prototype, "nextHref", 2);
1675
- ie([
1980
+ ], _.prototype, "nextHref", 2);
1981
+ he([
1676
1982
  n({ attribute: "next-label" })
1677
- ], y.prototype, "nextLabel", 2);
1678
- y = ie([
1679
- d("vox-series-nav")
1680
- ], y);
1681
- var Xo = Object.defineProperty, Qo = Object.getOwnPropertyDescriptor, b = (t, o, a, r) => {
1682
- for (var e = r > 1 ? void 0 : r ? Qo(o, a) : o, s = t.length - 1, i; s >= 0; s--)
1683
- (i = t[s]) && (e = (r ? i(o, a, e) : i(e)) || e);
1684
- return r && e && Xo(o, a, e), e;
1983
+ ], _.prototype, "nextLabel", 2);
1984
+ _ = he([
1985
+ p("vox-series-nav")
1986
+ ], _);
1987
+ var oo = Object.defineProperty, ro = Object.getOwnPropertyDescriptor, f = (o, t, a, r) => {
1988
+ for (var e = r > 1 ? void 0 : r ? ro(t, a) : t, s = o.length - 1, i; s >= 0; s--)
1989
+ (i = o[s]) && (e = (r ? i(t, a, e) : i(e)) || e);
1990
+ return r && e && oo(t, a, e), e;
1685
1991
  };
1686
- let he = class extends v {
1992
+ let A = class extends h {
1687
1993
  constructor() {
1688
- super(...arguments), this.label = "Section";
1994
+ super(...arguments), this.label = "Section", this.toggleLabel = "Menu", this.mobileOpen = !1, this.handleOutsideClick = (o) => {
1995
+ this.mobileOpen && !o.composedPath().includes(this) && (this.mobileOpen = !1);
1996
+ }, this.handleFocusOut = (o) => {
1997
+ const t = o.relatedTarget;
1998
+ this.mobileOpen && !(t && this.contains(t)) && (this.mobileOpen = !1);
1999
+ }, this.handleKeydown = (o) => {
2000
+ var t;
2001
+ o.key === "Escape" && this.mobileOpen && (this.mobileOpen = !1, (t = this.renderRoot.querySelector(".toggle")) == null || t.focus());
2002
+ }, this.toggleMobile = () => {
2003
+ this.mobileOpen = !this.mobileOpen;
2004
+ }, this.handleNavClick = (o) => {
2005
+ o.composedPath().some((t) => t instanceof HTMLAnchorElement) && (this.mobileOpen = !1);
2006
+ };
2007
+ }
2008
+ connectedCallback() {
2009
+ super.connectedCallback(), document.addEventListener("click", this.handleOutsideClick), this.addEventListener("keydown", this.handleKeydown), this.addEventListener("focusout", this.handleFocusOut);
2010
+ }
2011
+ disconnectedCallback() {
2012
+ super.disconnectedCallback(), document.removeEventListener("click", this.handleOutsideClick), this.removeEventListener("keydown", this.handleKeydown), this.removeEventListener("focusout", this.handleFocusOut);
1689
2013
  }
1690
2014
  render() {
1691
- return l`
1692
- <nav aria-label=${this.label}>
2015
+ return c`
2016
+ <button
2017
+ type="button"
2018
+ class="toggle"
2019
+ aria-expanded=${this.mobileOpen ? "true" : "false"}
2020
+ aria-controls="nav"
2021
+ @click=${this.toggleMobile}
2022
+ >
2023
+ ${this.toggleLabel}
2024
+ <svg
2025
+ class="toggle-icon"
2026
+ viewBox="0 0 48 48"
2027
+ fill="none"
2028
+ stroke="currentColor"
2029
+ stroke-width="2"
2030
+ stroke-linecap="round"
2031
+ stroke-linejoin="round"
2032
+ aria-hidden="true"
2033
+ >
2034
+ ${this.mobileOpen ? y.close : y.menu}
2035
+ </svg>
2036
+ </button>
2037
+ <nav
2038
+ id="nav"
2039
+ class=${this.mobileOpen ? "open" : ""}
2040
+ aria-label=${this.label}
2041
+ @click=${this.handleNavClick}
2042
+ >
1693
2043
  <slot></slot>
1694
2044
  </nav>
1695
2045
  `;
1696
2046
  }
1697
2047
  };
1698
- he.styles = c`
2048
+ A.styles = d`
1699
2049
  :host {
1700
2050
  display: block;
1701
2051
  font-family: var(--vox-font-family-base);
1702
2052
  }
1703
2053
 
2054
+ .toggle {
2055
+ display: none;
2056
+ align-items: center;
2057
+ justify-content: space-between;
2058
+ width: 100%;
2059
+ gap: var(--vox-space-2);
2060
+ padding: var(--vox-space-2) var(--vox-space-3);
2061
+ background: none;
2062
+ border: 1px solid var(--vox-color-divider);
2063
+ border-radius: var(--vox-radius-md);
2064
+ color: var(--vox-color-text-1);
2065
+ font-family: inherit;
2066
+ font-size: 14px;
2067
+ font-weight: 600;
2068
+ cursor: pointer;
2069
+ }
2070
+
2071
+ .toggle:hover {
2072
+ border-color: var(--vox-color-brand-1);
2073
+ color: var(--vox-color-brand-1);
2074
+ }
2075
+
2076
+ .toggle:focus-visible {
2077
+ outline: 2px solid var(--vox-color-brand-1);
2078
+ outline-offset: 2px;
2079
+ }
2080
+
2081
+ .toggle-icon {
2082
+ width: 18px;
2083
+ height: 18px;
2084
+ flex: none;
2085
+ }
2086
+
1704
2087
  nav {
1705
2088
  display: flex;
1706
2089
  flex-direction: column;
1707
2090
  gap: 2px;
1708
2091
  }
2092
+
2093
+ @media (max-width: 768px) {
2094
+ .toggle {
2095
+ display: flex;
2096
+ }
2097
+
2098
+ nav {
2099
+ display: none;
2100
+ margin-top: var(--vox-space-2);
2101
+ }
2102
+
2103
+ nav.open {
2104
+ display: flex;
2105
+ }
2106
+ }
1709
2107
  `;
1710
- b([
2108
+ f([
1711
2109
  n()
1712
- ], he.prototype, "label", 2);
1713
- he = b([
1714
- d("vox-sidenav")
1715
- ], he);
1716
- let F = class extends v {
2110
+ ], A.prototype, "label", 2);
2111
+ f([
2112
+ n({ attribute: "toggle-label" })
2113
+ ], A.prototype, "toggleLabel", 2);
2114
+ f([
2115
+ le()
2116
+ ], A.prototype, "mobileOpen", 2);
2117
+ A = f([
2118
+ p("vox-sidenav")
2119
+ ], A);
2120
+ let C = class extends h {
1717
2121
  constructor() {
1718
- super(...arguments), this.heading = "", this.open = !1;
2122
+ super(...arguments), this.heading = "", this.open = !1, this.itemsId = `vox-sidenav-group-items-${C.nextId++}`;
1719
2123
  }
1720
2124
  toggle() {
1721
2125
  this.open = !this.open;
1722
2126
  }
1723
2127
  render() {
1724
- return l`
2128
+ return c`
1725
2129
  <button
1726
2130
  class="trigger"
1727
2131
  aria-expanded=${this.open ? "true" : "false"}
2132
+ aria-controls=${this.itemsId}
1728
2133
  @click=${this.toggle}
1729
2134
  >
1730
2135
  ${this.heading}
@@ -1732,11 +2137,12 @@ let F = class extends v {
1732
2137
  <path d="m9 6 6 6-6 6" />
1733
2138
  </svg>
1734
2139
  </button>
1735
- <div class="items"><slot></slot></div>
2140
+ <div id=${this.itemsId} class="items"><slot></slot></div>
1736
2141
  `;
1737
2142
  }
1738
2143
  };
1739
- F.styles = c`
2144
+ C.nextId = 0;
2145
+ C.styles = d`
1740
2146
  :host {
1741
2147
  display: block;
1742
2148
  font-family: var(--vox-font-family-base);
@@ -1793,35 +2199,44 @@ F.styles = c`
1793
2199
  display: flex;
1794
2200
  }
1795
2201
  `;
1796
- b([
2202
+ f([
1797
2203
  n()
1798
- ], F.prototype, "heading", 2);
1799
- b([
2204
+ ], C.prototype, "heading", 2);
2205
+ f([
1800
2206
  n({ type: Boolean, reflect: !0 })
1801
- ], F.prototype, "open", 2);
1802
- F = b([
1803
- d("vox-sidenav-group")
1804
- ], F);
1805
- let I = class extends v {
2207
+ ], C.prototype, "open", 2);
2208
+ C = f([
2209
+ p("vox-sidenav-group")
2210
+ ], C);
2211
+ let X = class extends h {
1806
2212
  constructor() {
1807
- super(...arguments), this.href = "#", this.current = !1;
2213
+ super(...arguments), this.href = "#", this.current = !1, this.hasIcon = !1;
2214
+ }
2215
+ handleIconSlotChange(o) {
2216
+ const t = o.target;
2217
+ this.hasIcon = t.assignedNodes({ flatten: !0 }).length > 0, this.requestUpdate();
1808
2218
  }
1809
2219
  render() {
1810
- return l`
2220
+ return c`
1811
2221
  <a href=${this.href} aria-current=${this.current ? "page" : "false"}>
2222
+ <span class="icon ${this.hasIcon ? "has-icon" : ""}">
2223
+ <slot name="icon" @slotchange=${this.handleIconSlotChange}></slot>
2224
+ </span>
1812
2225
  <slot></slot>
1813
2226
  </a>
1814
2227
  `;
1815
2228
  }
1816
2229
  };
1817
- I.styles = c`
2230
+ X.styles = d`
1818
2231
  :host {
1819
2232
  display: block;
1820
2233
  font-family: var(--vox-font-family-base);
1821
2234
  }
1822
2235
 
1823
2236
  a {
1824
- display: block;
2237
+ display: flex;
2238
+ align-items: center;
2239
+ gap: var(--vox-space-2);
1825
2240
  padding: var(--vox-space-2) var(--vox-space-3);
1826
2241
  border-radius: var(--vox-radius-sm);
1827
2242
  color: var(--vox-color-text-2);
@@ -1846,34 +2261,43 @@ I.styles = c`
1846
2261
  color: var(--vox-color-brand-1);
1847
2262
  font-weight: 600;
1848
2263
  }
2264
+
2265
+ .icon {
2266
+ display: flex;
2267
+ flex: none;
2268
+ }
2269
+
2270
+ .icon:not(.has-icon) {
2271
+ display: none;
2272
+ }
1849
2273
  `;
1850
- b([
2274
+ f([
1851
2275
  n()
1852
- ], I.prototype, "href", 2);
1853
- b([
2276
+ ], X.prototype, "href", 2);
2277
+ f([
1854
2278
  n({ type: Boolean, reflect: !0 })
1855
- ], I.prototype, "current", 2);
1856
- I = b([
1857
- d("vox-sidenav-item")
1858
- ], I);
1859
- var Wo = Object.defineProperty, Yo = Object.getOwnPropertyDescriptor, io = (t, o, a, r) => {
1860
- for (var e = r > 1 ? void 0 : r ? Yo(o, a) : o, s = t.length - 1, i; s >= 0; s--)
1861
- (i = t[s]) && (e = (r ? i(o, a, e) : i(e)) || e);
1862
- return r && e && Wo(o, a, e), e;
2279
+ ], X.prototype, "current", 2);
2280
+ X = f([
2281
+ p("vox-sidenav-item")
2282
+ ], X);
2283
+ var ao = Object.defineProperty, so = Object.getOwnPropertyDescriptor, vt = (o, t, a, r) => {
2284
+ for (var e = r > 1 ? void 0 : r ? so(t, a) : t, s = o.length - 1, i; s >= 0; s--)
2285
+ (i = o[s]) && (e = (r ? i(t, a, e) : i(e)) || e);
2286
+ return r && e && ao(t, a, e), e;
1863
2287
  };
1864
- let xe = class extends v {
2288
+ let ye = class extends h {
1865
2289
  constructor() {
1866
2290
  super(...arguments), this.label = "Secondary";
1867
2291
  }
1868
2292
  render() {
1869
- return l`
2293
+ return c`
1870
2294
  <nav aria-label=${this.label}>
1871
2295
  <slot></slot>
1872
2296
  </nav>
1873
2297
  `;
1874
2298
  }
1875
2299
  };
1876
- xe.styles = c`
2300
+ ye.styles = d`
1877
2301
  :host {
1878
2302
  display: block;
1879
2303
  font-family: var(--vox-font-family-base);
@@ -1908,18 +2332,18 @@ xe.styles = c`
1908
2332
  border-bottom-color: var(--vox-color-brand-1);
1909
2333
  }
1910
2334
  `;
1911
- io([
2335
+ vt([
1912
2336
  n()
1913
- ], xe.prototype, "label", 2);
1914
- xe = io([
1915
- d("vox-subnav")
1916
- ], xe);
1917
- var Zo = Object.defineProperty, Jo = Object.getOwnPropertyDescriptor, P = (t, o, a, r) => {
1918
- for (var e = r > 1 ? void 0 : r ? Jo(o, a) : o, s = t.length - 1, i; s >= 0; s--)
1919
- (i = t[s]) && (e = (r ? i(o, a, e) : i(e)) || e);
1920
- return r && e && Zo(o, a, e), e;
2337
+ ], ye.prototype, "label", 2);
2338
+ ye = vt([
2339
+ p("vox-subnav")
2340
+ ], ye);
2341
+ var io = Object.defineProperty, no = Object.getOwnPropertyDescriptor, j = (o, t, a, r) => {
2342
+ for (var e = r > 1 ? void 0 : r ? no(t, a) : t, s = o.length - 1, i; s >= 0; s--)
2343
+ (i = o[s]) && (e = (r ? i(t, a, e) : i(e)) || e);
2344
+ return r && e && io(t, a, e), e;
1921
2345
  };
1922
- let Ee = class extends v {
2346
+ let qe = class extends h {
1923
2347
  get tabs() {
1924
2348
  return [...this.querySelectorAll("vox-tab")];
1925
2349
  }
@@ -1927,32 +2351,39 @@ let Ee = class extends v {
1927
2351
  return [...this.querySelectorAll("vox-tab-panel")];
1928
2352
  }
1929
2353
  sync() {
1930
- const t = this.tabs;
1931
- t.length > 0 && !t.some((a) => a.selected) && (t[0].selected = !0);
1932
- const o = t.find((a) => a.selected);
2354
+ const o = this.tabs;
2355
+ o.length > 0 && !o.some((a) => a.selected) && (o[0].selected = !0);
2356
+ const t = o.find((a) => a.selected);
1933
2357
  this.panels.forEach((a) => {
1934
- a.active = a.name === (o == null ? void 0 : o.panel);
2358
+ a.active = a.name === (t == null ? void 0 : t.panel);
1935
2359
  });
1936
2360
  }
1937
- handleSelect(t) {
1938
- const o = t.target;
1939
- o.tagName === "VOX-TAB" && (this.tabs.forEach((a) => a.selected = a === o), this.sync(), this.dispatchEvent(
2361
+ handleSelect(o) {
2362
+ const t = o.target;
2363
+ t.tagName === "VOX-TAB" && (this.tabs.forEach((a) => a.selected = a === t), this.sync(), this.dispatchEvent(
1940
2364
  new CustomEvent("vox-tab-change", {
1941
- detail: { panel: o.panel },
2365
+ detail: { panel: t.panel },
1942
2366
  bubbles: !0,
1943
2367
  composed: !0
1944
2368
  })
1945
2369
  ));
1946
2370
  }
1947
- handleKeydown(t) {
1948
- const a = { ArrowRight: 1, ArrowLeft: -1 }[t.key];
1949
- if (!a) return;
1950
- t.preventDefault();
1951
- const r = this.tabs, e = r.findIndex((i) => i.selected), s = r[(e + a + r.length) % r.length];
2371
+ handleKeydown(o) {
2372
+ const t = this.tabs;
2373
+ if (o.key === "Home" || o.key === "End") {
2374
+ o.preventDefault();
2375
+ const i = t[o.key === "Home" ? 0 : t.length - 1];
2376
+ i.select(), i.focusTab();
2377
+ return;
2378
+ }
2379
+ const r = { ArrowRight: 1, ArrowLeft: -1 }[o.key];
2380
+ if (!r) return;
2381
+ o.preventDefault();
2382
+ const e = t.findIndex((i) => i.selected), s = t[(e + r + t.length) % t.length];
1952
2383
  s.select(), s.focusTab();
1953
2384
  }
1954
2385
  render() {
1955
- return l`
2386
+ return c`
1956
2387
  <div
1957
2388
  class="tablist"
1958
2389
  role="tablist"
@@ -1965,7 +2396,7 @@ let Ee = class extends v {
1965
2396
  `;
1966
2397
  }
1967
2398
  };
1968
- Ee.styles = c`
2399
+ qe.styles = d`
1969
2400
  :host {
1970
2401
  display: block;
1971
2402
  }
@@ -1976,10 +2407,10 @@ Ee.styles = c`
1976
2407
  border-bottom: 1px solid var(--vox-color-divider);
1977
2408
  }
1978
2409
  `;
1979
- Ee = P([
1980
- d("vox-tabs")
1981
- ], Ee);
1982
- let R = class extends v {
2410
+ qe = j([
2411
+ p("vox-tabs")
2412
+ ], qe);
2413
+ let Q = class extends h {
1983
2414
  constructor() {
1984
2415
  super(...arguments), this.panel = "", this.selected = !1;
1985
2416
  }
@@ -1989,15 +2420,17 @@ let R = class extends v {
1989
2420
  );
1990
2421
  }
1991
2422
  focusTab() {
1992
- var t;
1993
- (t = this.renderRoot.querySelector(".tab")) == null || t.focus();
2423
+ var o;
2424
+ (o = this.renderRoot.querySelector(".tab")) == null || o.focus();
1994
2425
  }
1995
2426
  render() {
1996
- return l`
2427
+ return c`
1997
2428
  <button
2429
+ id="tab-${this.panel}"
1998
2430
  class="tab"
1999
2431
  role="tab"
2000
2432
  aria-selected=${this.selected ? "true" : "false"}
2433
+ aria-controls="panel-${this.panel}"
2001
2434
  tabindex=${this.selected ? "0" : "-1"}
2002
2435
  @click=${this.select}
2003
2436
  >
@@ -2006,7 +2439,7 @@ let R = class extends v {
2006
2439
  `;
2007
2440
  }
2008
2441
  };
2009
- R.styles = c`
2442
+ Q.styles = d`
2010
2443
  :host {
2011
2444
  display: block;
2012
2445
  font-family: var(--vox-font-family-base);
@@ -2041,24 +2474,33 @@ R.styles = c`
2041
2474
  border-bottom-color: var(--vox-color-brand-1);
2042
2475
  }
2043
2476
  `;
2044
- P([
2477
+ j([
2045
2478
  n()
2046
- ], R.prototype, "panel", 2);
2047
- P([
2479
+ ], Q.prototype, "panel", 2);
2480
+ j([
2048
2481
  n({ type: Boolean, reflect: !0 })
2049
- ], R.prototype, "selected", 2);
2050
- R = P([
2051
- d("vox-tab")
2052
- ], R);
2053
- let H = class extends v {
2482
+ ], Q.prototype, "selected", 2);
2483
+ Q = j([
2484
+ p("vox-tab")
2485
+ ], Q);
2486
+ let W = class extends h {
2054
2487
  constructor() {
2055
2488
  super(...arguments), this.name = "", this.active = !1;
2056
2489
  }
2057
2490
  render() {
2058
- return l`<div role="tabpanel"><slot></slot></div>`;
2491
+ return c`
2492
+ <div
2493
+ id="panel-${this.name}"
2494
+ role="tabpanel"
2495
+ aria-labelledby="tab-${this.name}"
2496
+ tabindex="0"
2497
+ >
2498
+ <slot></slot>
2499
+ </div>
2500
+ `;
2059
2501
  }
2060
2502
  };
2061
- H.styles = c`
2503
+ W.styles = d`
2062
2504
  :host {
2063
2505
  display: none;
2064
2506
  font-family: var(--vox-font-family-base);
@@ -2071,22 +2513,147 @@ H.styles = c`
2071
2513
  :host([active]) {
2072
2514
  display: block;
2073
2515
  }
2516
+
2517
+ div:focus-visible {
2518
+ outline: 2px solid var(--vox-color-brand-1);
2519
+ outline-offset: 2px;
2520
+ border-radius: var(--vox-radius-sm);
2521
+ }
2074
2522
  `;
2075
- P([
2523
+ j([
2076
2524
  n()
2077
- ], H.prototype, "name", 2);
2078
- P([
2525
+ ], W.prototype, "name", 2);
2526
+ j([
2079
2527
  n({ type: Boolean, reflect: !0 })
2080
- ], H.prototype, "active", 2);
2081
- H = P([
2082
- d("vox-tab-panel")
2083
- ], H);
2084
- var et = Object.defineProperty, ot = Object.getOwnPropertyDescriptor, ne = (t, o, a, r) => {
2085
- for (var e = r > 1 ? void 0 : r ? ot(o, a) : o, s = t.length - 1, i; s >= 0; s--)
2086
- (i = t[s]) && (e = (r ? i(o, a, e) : i(e)) || e);
2087
- return r && e && et(o, a, e), e;
2528
+ ], W.prototype, "active", 2);
2529
+ W = j([
2530
+ p("vox-tab-panel")
2531
+ ], W);
2532
+ var lo = Object.defineProperty, co = Object.getOwnPropertyDescriptor, ve = (o, t, a, r) => {
2533
+ for (var e = r > 1 ? void 0 : r ? co(t, a) : t, s = o.length - 1, i; s >= 0; s--)
2534
+ (i = o[s]) && (e = (r ? i(t, a, e) : i(e)) || e);
2535
+ return r && e && lo(t, a, e), e;
2088
2536
  };
2089
- let w = class extends v {
2537
+ let we = class extends h {
2538
+ constructor() {
2539
+ super(...arguments), this.heading = "On this page";
2540
+ }
2541
+ render() {
2542
+ return c`
2543
+ <div class="heading" id="vox-toc-heading">${this.heading}</div>
2544
+ <nav aria-labelledby="vox-toc-heading">
2545
+ <slot></slot>
2546
+ </nav>
2547
+ `;
2548
+ }
2549
+ };
2550
+ we.styles = d`
2551
+ :host {
2552
+ display: block;
2553
+ font-family: var(--vox-font-family-base);
2554
+ }
2555
+
2556
+ .heading {
2557
+ margin: 0 0 var(--vox-space-2);
2558
+ padding-left: var(--vox-space-3);
2559
+ font-size: 13px;
2560
+ font-weight: 600;
2561
+ color: var(--vox-color-text-1);
2562
+ }
2563
+
2564
+ nav {
2565
+ display: flex;
2566
+ flex-direction: column;
2567
+ gap: 1px;
2568
+ border-left: 1px solid var(--vox-color-divider);
2569
+ }
2570
+ `;
2571
+ ve([
2572
+ n()
2573
+ ], we.prototype, "heading", 2);
2574
+ we = ve([
2575
+ p("vox-toc")
2576
+ ], we);
2577
+ let Y = class extends h {
2578
+ constructor() {
2579
+ super(...arguments), this.href = "#", this.current = !1, this.hasChildren = !1;
2580
+ }
2581
+ handleChildrenSlotChange(o) {
2582
+ const t = o.target;
2583
+ this.hasChildren = t.assignedNodes({ flatten: !0 }).length > 0, this.requestUpdate();
2584
+ }
2585
+ render() {
2586
+ return c`
2587
+ <a href=${this.href} aria-current=${this.current ? "true" : "false"}>
2588
+ <slot></slot>
2589
+ </a>
2590
+ <div class="children ${this.hasChildren ? "has-children" : ""}">
2591
+ <slot name="children" @slotchange=${this.handleChildrenSlotChange}></slot>
2592
+ </div>
2593
+ `;
2594
+ }
2595
+ };
2596
+ Y.styles = d`
2597
+ :host {
2598
+ display: block;
2599
+ font-family: var(--vox-font-family-base);
2600
+ }
2601
+
2602
+ a {
2603
+ display: block;
2604
+ margin-left: -1px;
2605
+ padding: var(--vox-space-1) var(--vox-space-3);
2606
+ border-left: 2px solid transparent;
2607
+ color: var(--vox-color-text-2);
2608
+ font-size: 13px;
2609
+ line-height: 1.5;
2610
+ text-decoration: none;
2611
+ transition:
2612
+ color var(--vox-transition-fast),
2613
+ border-color var(--vox-transition-fast);
2614
+ }
2615
+
2616
+ a:hover {
2617
+ color: var(--vox-color-text-1);
2618
+ }
2619
+
2620
+ a:focus-visible {
2621
+ outline: 2px solid var(--vox-color-brand-1);
2622
+ outline-offset: -2px;
2623
+ }
2624
+
2625
+ :host([current]) a {
2626
+ border-left-color: var(--vox-color-brand-1);
2627
+ color: var(--vox-color-brand-1);
2628
+ font-weight: 600;
2629
+ }
2630
+
2631
+ .children {
2632
+ display: flex;
2633
+ flex-direction: column;
2634
+ gap: 1px;
2635
+ padding-left: var(--vox-space-3);
2636
+ }
2637
+
2638
+ .children:not(.has-children) {
2639
+ display: none;
2640
+ }
2641
+ `;
2642
+ ve([
2643
+ n()
2644
+ ], Y.prototype, "href", 2);
2645
+ ve([
2646
+ n({ type: Boolean, reflect: !0 })
2647
+ ], Y.prototype, "current", 2);
2648
+ Y = ve([
2649
+ p("vox-toc-item")
2650
+ ], Y);
2651
+ var po = Object.defineProperty, ho = Object.getOwnPropertyDescriptor, xe = (o, t, a, r) => {
2652
+ for (var e = r > 1 ? void 0 : r ? ho(t, a) : t, s = o.length - 1, i; s >= 0; s--)
2653
+ (i = o[s]) && (e = (r ? i(t, a, e) : i(e)) || e);
2654
+ return r && e && po(t, a, e), e;
2655
+ };
2656
+ let O = class extends h {
2090
2657
  constructor() {
2091
2658
  super(...arguments), this.heading = "", this.open = !1, this.lightDismiss = !1, this.hasFooter = !1;
2092
2659
  }
@@ -2104,22 +2671,22 @@ let w = class extends v {
2104
2671
  new CustomEvent("vox-close", { bubbles: !0, composed: !0 })
2105
2672
  );
2106
2673
  }
2107
- handleClick(t) {
2108
- this.lightDismiss && t.target === this.dialogEl && this.close();
2674
+ handleClick(o) {
2675
+ this.lightDismiss && o.target === this.dialogEl && this.close();
2109
2676
  }
2110
- handleFooterSlotChange(t) {
2111
- const o = t.target;
2112
- this.hasFooter = o.assignedNodes({ flatten: !0 }).length > 0, this.requestUpdate();
2677
+ handleFooterSlotChange(o) {
2678
+ const t = o.target;
2679
+ this.hasFooter = t.assignedNodes({ flatten: !0 }).length > 0, this.requestUpdate();
2113
2680
  }
2114
2681
  render() {
2115
- return l`
2682
+ return c`
2116
2683
  <dialog
2117
- aria-label=${this.heading || p}
2684
+ aria-labelledby=${this.heading ? "heading" : v}
2118
2685
  @close=${this.handleNativeClose}
2119
2686
  @click=${this.handleClick}
2120
2687
  >
2121
2688
  <div class="header">
2122
- <h2 class="heading">${this.heading}</h2>
2689
+ <h2 class="heading" id="heading">${this.heading}</h2>
2123
2690
  <button class="close" aria-label="Close dialog" @click=${this.close}>
2124
2691
  <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" aria-hidden="true">
2125
2692
  <path d="M18 6 6 18M6 6l12 12" />
@@ -2134,7 +2701,7 @@ let w = class extends v {
2134
2701
  `;
2135
2702
  }
2136
2703
  };
2137
- w.styles = c`
2704
+ O.styles = d`
2138
2705
  dialog {
2139
2706
  box-sizing: border-box;
2140
2707
  width: min(90vw, 480px);
@@ -2221,29 +2788,29 @@ w.styles = c`
2221
2788
  margin-bottom: 0;
2222
2789
  }
2223
2790
  `;
2224
- ne([
2791
+ xe([
2225
2792
  n()
2226
- ], w.prototype, "heading", 2);
2227
- ne([
2793
+ ], O.prototype, "heading", 2);
2794
+ xe([
2228
2795
  n({ type: Boolean })
2229
- ], w.prototype, "open", 2);
2230
- ne([
2796
+ ], O.prototype, "open", 2);
2797
+ xe([
2231
2798
  n({ type: Boolean, attribute: "light-dismiss" })
2232
- ], w.prototype, "lightDismiss", 2);
2233
- ne([
2234
- qe("dialog")
2235
- ], w.prototype, "dialogEl", 2);
2236
- w = ne([
2237
- d("vox-dialog")
2238
- ], w);
2239
- var tt = Object.defineProperty, rt = Object.getOwnPropertyDescriptor, Re = (t, o, a, r) => {
2240
- for (var e = r > 1 ? void 0 : r ? rt(o, a) : o, s = t.length - 1, i; s >= 0; s--)
2241
- (i = t[s]) && (e = (r ? i(o, a, e) : i(e)) || e);
2242
- return r && e && tt(o, a, e), e;
2799
+ ], O.prototype, "lightDismiss", 2);
2800
+ xe([
2801
+ Ze("dialog")
2802
+ ], O.prototype, "dialogEl", 2);
2803
+ O = xe([
2804
+ p("vox-dialog")
2805
+ ], O);
2806
+ var vo = Object.defineProperty, xo = Object.getOwnPropertyDescriptor, We = (o, t, a, r) => {
2807
+ for (var e = r > 1 ? void 0 : r ? xo(t, a) : t, s = o.length - 1, i; s >= 0; s--)
2808
+ (i = o[s]) && (e = (r ? i(t, a, e) : i(e)) || e);
2809
+ return r && e && vo(t, a, e), e;
2243
2810
  };
2244
- let U = class extends v {
2811
+ let M = class extends h {
2245
2812
  constructor() {
2246
- super(...arguments), this.summary = "Show details", this.open = !1;
2813
+ super(...arguments), this.summary = "Show details", this.open = !1, this.panelId = `vox-disclosure-panel-${M.nextId++}`;
2247
2814
  }
2248
2815
  toggle() {
2249
2816
  this.open = !this.open, this.dispatchEvent(
@@ -2251,10 +2818,11 @@ let U = class extends v {
2251
2818
  );
2252
2819
  }
2253
2820
  render() {
2254
- return l`
2821
+ return c`
2255
2822
  <button
2256
2823
  class="trigger"
2257
2824
  aria-expanded=${this.open ? "true" : "false"}
2825
+ aria-controls=${this.panelId}
2258
2826
  @click=${this.toggle}
2259
2827
  >
2260
2828
  <svg class="chevron" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
@@ -2262,13 +2830,14 @@ let U = class extends v {
2262
2830
  </svg>
2263
2831
  ${this.summary}
2264
2832
  </button>
2265
- <div class="panel" ?hidden=${!this.open}>
2833
+ <div id=${this.panelId} class="panel" ?hidden=${!this.open}>
2266
2834
  <slot></slot>
2267
2835
  </div>
2268
2836
  `;
2269
2837
  }
2270
2838
  };
2271
- U.styles = c`
2839
+ M.nextId = 0;
2840
+ M.styles = d`
2272
2841
  :host {
2273
2842
  display: block;
2274
2843
  font-family: var(--vox-font-family-base);
@@ -2320,54 +2889,67 @@ U.styles = c`
2320
2889
  display: none;
2321
2890
  }
2322
2891
  `;
2323
- Re([
2892
+ We([
2324
2893
  n()
2325
- ], U.prototype, "summary", 2);
2326
- Re([
2894
+ ], M.prototype, "summary", 2);
2895
+ We([
2327
2896
  n({ type: Boolean, reflect: !0 })
2328
- ], U.prototype, "open", 2);
2329
- U = Re([
2330
- d("vox-disclosure")
2331
- ], U);
2332
- var at = Object.defineProperty, st = Object.getOwnPropertyDescriptor, He = (t, o, a, r) => {
2333
- for (var e = r > 1 ? void 0 : r ? st(o, a) : o, s = t.length - 1, i; s >= 0; s--)
2334
- (i = t[s]) && (e = (r ? i(o, a, e) : i(e)) || e);
2335
- return r && e && at(o, a, e), e;
2897
+ ], M.prototype, "open", 2);
2898
+ M = We([
2899
+ p("vox-disclosure")
2900
+ ], M);
2901
+ var uo = Object.defineProperty, fo = Object.getOwnPropertyDescriptor, Ye = (o, t, a, r) => {
2902
+ for (var e = r > 1 ? void 0 : r ? fo(t, a) : t, s = o.length - 1, i; s >= 0; s--)
2903
+ (i = o[s]) && (e = (r ? i(t, a, e) : i(e)) || e);
2904
+ return r && e && uo(t, a, e), e;
2336
2905
  };
2337
- let K = class extends v {
2906
+ let J = class extends h {
2338
2907
  constructor() {
2339
- super(...arguments), this.label = "Menu", this.open = !1, this.handleOutsideClick = (t) => {
2340
- this.open && !t.composedPath().includes(this) && (this.open = !1);
2341
- }, this.handleKeydown = (t) => {
2342
- var o;
2343
- if (t.key === "Escape" && this.open) {
2344
- this.open = !1, (o = this.renderRoot.querySelector(".trigger")) == null || o.focus();
2908
+ super(...arguments), this.label = "Menu", this.open = !1, this.handleOutsideClick = (o) => {
2909
+ this.open && !o.composedPath().includes(this) && (this.open = !1);
2910
+ }, this.handleFocusOut = (o) => {
2911
+ const t = o.relatedTarget;
2912
+ this.open && !(t && this.contains(t)) && (this.open = !1);
2913
+ }, this.handleKeydown = (o) => {
2914
+ var t;
2915
+ if (o.key === "Escape" && this.open) {
2916
+ this.open = !1, (t = this.renderRoot.querySelector(".trigger")) == null || t.focus();
2345
2917
  return;
2346
2918
  }
2347
- if ((t.key === "ArrowDown" || t.key === "ArrowUp") && this.open) {
2348
- t.preventDefault();
2349
- const a = [...this.querySelectorAll("a, button")];
2350
- if (a.length === 0) return;
2351
- const r = document.activeElement, e = a.indexOf(r), s = t.key === "ArrowDown" ? 1 : -1;
2352
- a[(Math.max(e, 0) + s + a.length) % a.length].focus();
2919
+ if (o.key === "ArrowDown" || o.key === "ArrowUp") {
2920
+ o.preventDefault();
2921
+ const a = o.key === "ArrowDown" ? 1 : -1;
2922
+ if (!this.open) {
2923
+ this.open = !0, this.updateComplete.then(
2924
+ () => this.focusItem(o.key === "ArrowDown" ? 0 : -1)
2925
+ );
2926
+ return;
2927
+ }
2928
+ const e = [...this.querySelectorAll("a, button")].indexOf(document.activeElement);
2929
+ this.focusItem(Math.max(e, 0) + a);
2353
2930
  }
2354
2931
  };
2355
2932
  }
2356
2933
  connectedCallback() {
2357
- super.connectedCallback(), document.addEventListener("click", this.handleOutsideClick), this.addEventListener("keydown", this.handleKeydown);
2934
+ super.connectedCallback(), document.addEventListener("click", this.handleOutsideClick), this.addEventListener("keydown", this.handleKeydown), this.addEventListener("focusout", this.handleFocusOut);
2358
2935
  }
2359
2936
  disconnectedCallback() {
2360
- super.disconnectedCallback(), document.removeEventListener("click", this.handleOutsideClick), this.removeEventListener("keydown", this.handleKeydown);
2937
+ super.disconnectedCallback(), document.removeEventListener("click", this.handleOutsideClick), this.removeEventListener("keydown", this.handleKeydown), this.removeEventListener("focusout", this.handleFocusOut);
2938
+ }
2939
+ focusItem(o) {
2940
+ const t = [...this.querySelectorAll("a, button")];
2941
+ t.length !== 0 && t[(o + t.length) % t.length].focus();
2361
2942
  }
2362
2943
  toggle() {
2363
- this.open = !this.open;
2944
+ this.open = !this.open, this.open && this.updateComplete.then(() => this.focusItem(0));
2364
2945
  }
2365
2946
  render() {
2366
- return l`
2947
+ return c`
2367
2948
  <button
2368
2949
  class="trigger"
2369
2950
  aria-expanded=${this.open ? "true" : "false"}
2370
2951
  aria-haspopup="true"
2952
+ aria-controls="menu"
2371
2953
  @click=${this.toggle}
2372
2954
  >
2373
2955
  ${this.label}
@@ -2375,13 +2957,13 @@ let K = class extends v {
2375
2957
  <path d="m6 9 6 6 6-6" />
2376
2958
  </svg>
2377
2959
  </button>
2378
- <div class="menu">
2960
+ <div id="menu" class="menu">
2379
2961
  <slot @click=${() => this.open = !1}></slot>
2380
2962
  </div>
2381
2963
  `;
2382
2964
  }
2383
2965
  };
2384
- K.styles = c`
2966
+ J.styles = d`
2385
2967
  :host {
2386
2968
  position: relative;
2387
2969
  display: inline-block;
@@ -2480,38 +3062,38 @@ K.styles = c`
2480
3062
  border-top: 1px solid var(--vox-color-divider);
2481
3063
  }
2482
3064
  `;
2483
- He([
3065
+ Ye([
2484
3066
  n()
2485
- ], K.prototype, "label", 2);
2486
- He([
3067
+ ], J.prototype, "label", 2);
3068
+ Ye([
2487
3069
  n({ type: Boolean, reflect: !0 })
2488
- ], K.prototype, "open", 2);
2489
- K = He([
2490
- d("vox-dropdown")
2491
- ], K);
2492
- var it = Object.defineProperty, nt = Object.getOwnPropertyDescriptor, le = (t, o, a, r) => {
2493
- for (var e = r > 1 ? void 0 : r ? nt(o, a) : o, s = t.length - 1, i; s >= 0; s--)
2494
- (i = t[s]) && (e = (r ? i(o, a, e) : i(e)) || e);
2495
- return r && e && it(o, a, e), e;
3070
+ ], J.prototype, "open", 2);
3071
+ J = Ye([
3072
+ p("vox-dropdown")
3073
+ ], J);
3074
+ var go = Object.defineProperty, bo = Object.getOwnPropertyDescriptor, ue = (o, t, a, r) => {
3075
+ for (var e = r > 1 ? void 0 : r ? bo(t, a) : t, s = o.length - 1, i; s >= 0; s--)
3076
+ (i = o[s]) && (e = (r ? i(t, a, e) : i(e)) || e);
3077
+ return r && e && go(t, a, e), e;
2496
3078
  };
2497
- let ue = class extends v {
3079
+ let $e = class extends h {
2498
3080
  constructor() {
2499
3081
  super(...arguments), this.single = !1;
2500
3082
  }
2501
- handleToggle(t) {
3083
+ handleToggle(o) {
2502
3084
  if (!this.single) return;
2503
- const o = t.target;
2504
- o.open && this.querySelectorAll("vox-accordion-item").forEach(
3085
+ const t = o.target;
3086
+ t.open && this.querySelectorAll("vox-accordion-item").forEach(
2505
3087
  (a) => {
2506
- a !== o && (a.open = !1);
3088
+ a !== t && (a.open = !1);
2507
3089
  }
2508
3090
  );
2509
3091
  }
2510
3092
  render() {
2511
- return l`<slot @vox-toggle=${this.handleToggle}></slot>`;
3093
+ return c`<slot @vox-toggle=${this.handleToggle}></slot>`;
2512
3094
  }
2513
3095
  };
2514
- ue.styles = c`
3096
+ $e.styles = d`
2515
3097
  :host {
2516
3098
  display: block;
2517
3099
  border: 1px solid var(--vox-color-divider);
@@ -2523,15 +3105,15 @@ ue.styles = c`
2523
3105
  border-top: 1px solid var(--vox-color-divider);
2524
3106
  }
2525
3107
  `;
2526
- le([
3108
+ ue([
2527
3109
  n({ type: Boolean })
2528
- ], ue.prototype, "single", 2);
2529
- ue = le([
2530
- d("vox-accordion")
2531
- ], ue);
2532
- let G = class extends v {
3110
+ ], $e.prototype, "single", 2);
3111
+ $e = ue([
3112
+ p("vox-accordion")
3113
+ ], $e);
3114
+ let k = class extends h {
2533
3115
  constructor() {
2534
- super(...arguments), this.heading = "", this.open = !1;
3116
+ super(...arguments), this.heading = "", this.open = !1, this.panelId = `vox-accordion-panel-${k.nextId++}`;
2535
3117
  }
2536
3118
  toggle() {
2537
3119
  this.open = !this.open, this.dispatchEvent(
@@ -2539,11 +3121,12 @@ let G = class extends v {
2539
3121
  );
2540
3122
  }
2541
3123
  render() {
2542
- return l`
3124
+ return c`
2543
3125
  <h3 style="margin:0">
2544
3126
  <button
2545
3127
  class="trigger"
2546
3128
  aria-expanded=${this.open ? "true" : "false"}
3129
+ aria-controls=${this.panelId}
2547
3130
  @click=${this.toggle}
2548
3131
  >
2549
3132
  ${this.heading}
@@ -2552,13 +3135,14 @@ let G = class extends v {
2552
3135
  </svg>
2553
3136
  </button>
2554
3137
  </h3>
2555
- <div class="panel" ?hidden=${!this.open}>
3138
+ <div id=${this.panelId} class="panel" ?hidden=${!this.open}>
2556
3139
  <slot></slot>
2557
3140
  </div>
2558
3141
  `;
2559
3142
  }
2560
3143
  };
2561
- G.styles = c`
3144
+ k.nextId = 0;
3145
+ k.styles = d`
2562
3146
  :host {
2563
3147
  display: block;
2564
3148
  font-family: var(--vox-font-family-base);
@@ -2620,21 +3204,27 @@ G.styles = c`
2620
3204
  margin-bottom: 0;
2621
3205
  }
2622
3206
  `;
2623
- le([
3207
+ ue([
2624
3208
  n()
2625
- ], G.prototype, "heading", 2);
2626
- le([
3209
+ ], k.prototype, "heading", 2);
3210
+ ue([
2627
3211
  n({ type: Boolean, reflect: !0 })
2628
- ], G.prototype, "open", 2);
2629
- G = le([
2630
- d("vox-accordion-item")
2631
- ], G);
2632
- var lt = Object.defineProperty, ct = Object.getOwnPropertyDescriptor, ce = (t, o, a, r) => {
2633
- for (var e = r > 1 ? void 0 : r ? ct(o, a) : o, s = t.length - 1, i; s >= 0; s--)
2634
- (i = t[s]) && (e = (r ? i(o, a, e) : i(e)) || e);
2635
- return r && e && lt(o, a, e), e;
3212
+ ], k.prototype, "open", 2);
3213
+ k = ue([
3214
+ p("vox-accordion-item")
3215
+ ], k);
3216
+ var mo = Object.defineProperty, yo = Object.getOwnPropertyDescriptor, fe = (o, t, a, r) => {
3217
+ for (var e = r > 1 ? void 0 : r ? yo(t, a) : t, s = o.length - 1, i; s >= 0; s--)
3218
+ (i = o[s]) && (e = (r ? i(t, a, e) : i(e)) || e);
3219
+ return r && e && mo(t, a, e), e;
3220
+ };
3221
+ const wo = {
3222
+ info: "info",
3223
+ success: "check-circle",
3224
+ warning: "warning",
3225
+ danger: "x-circle"
2636
3226
  };
2637
- let $ = class extends v {
3227
+ let L = class extends h {
2638
3228
  constructor() {
2639
3229
  super(...arguments), this.variant = "info", this.heading = "", this.dismissible = !1, this.open = !0;
2640
3230
  }
@@ -2644,24 +3234,40 @@ let $ = class extends v {
2644
3234
  );
2645
3235
  }
2646
3236
  render() {
2647
- return l`
2648
- <div class="alert ${this.variant}" role="alert">
3237
+ const o = this.variant === "danger" || this.variant === "warning";
3238
+ return c`
3239
+ <div
3240
+ class="alert ${this.variant}"
3241
+ role=${o ? "alert" : "status"}
3242
+ >
3243
+ <svg
3244
+ class="icon"
3245
+ viewBox="0 0 48 48"
3246
+ fill="none"
3247
+ stroke="currentColor"
3248
+ stroke-width="2"
3249
+ stroke-linecap="round"
3250
+ stroke-linejoin="round"
3251
+ aria-hidden="true"
3252
+ >
3253
+ ${y[wo[this.variant]]}
3254
+ </svg>
2649
3255
  <div class="body">
2650
- ${this.heading ? l`<p class="heading">${this.heading}</p>` : p}
3256
+ ${this.heading ? c`<p class="heading">${this.heading}</p>` : v}
2651
3257
  <slot></slot>
2652
3258
  </div>
2653
- ${this.dismissible ? l`
3259
+ ${this.dismissible ? c`
2654
3260
  <button class="close" aria-label="Dismiss" @click=${this.dismiss}>
2655
3261
  <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" aria-hidden="true">
2656
3262
  <path d="M18 6 6 18M6 6l12 12" />
2657
3263
  </svg>
2658
3264
  </button>
2659
- ` : p}
3265
+ ` : v}
2660
3266
  </div>
2661
3267
  `;
2662
3268
  }
2663
3269
  };
2664
- $.styles = c`
3270
+ L.styles = d`
2665
3271
  :host {
2666
3272
  display: block;
2667
3273
  font-family: var(--vox-font-family-base);
@@ -2687,6 +3293,13 @@ $.styles = c`
2687
3293
  flex: 1 1 auto;
2688
3294
  }
2689
3295
 
3296
+ .icon {
3297
+ flex: none;
3298
+ width: 20px;
3299
+ height: 20px;
3300
+ margin-top: 1px;
3301
+ }
3302
+
2690
3303
  .heading {
2691
3304
  margin: 0 0 var(--vox-space-1);
2692
3305
  font-size: 14px;
@@ -2700,6 +3313,9 @@ $.styles = c`
2700
3313
  .info .heading {
2701
3314
  color: var(--vox-color-brand-1);
2702
3315
  }
3316
+ .info .icon {
3317
+ color: var(--vox-color-brand-1);
3318
+ }
2703
3319
 
2704
3320
  .success {
2705
3321
  background-color: var(--vox-color-tip-soft);
@@ -2708,6 +3324,9 @@ $.styles = c`
2708
3324
  .success .heading {
2709
3325
  color: var(--vox-color-tip-1);
2710
3326
  }
3327
+ .success .icon {
3328
+ color: var(--vox-color-tip-1);
3329
+ }
2711
3330
 
2712
3331
  .warning {
2713
3332
  background-color: var(--vox-color-warning-soft);
@@ -2716,6 +3335,9 @@ $.styles = c`
2716
3335
  .warning .heading {
2717
3336
  color: var(--vox-color-warning-1);
2718
3337
  }
3338
+ .warning .icon {
3339
+ color: var(--vox-color-warning-1);
3340
+ }
2719
3341
 
2720
3342
  .danger {
2721
3343
  background-color: var(--vox-color-danger-soft);
@@ -2724,6 +3346,9 @@ $.styles = c`
2724
3346
  .danger .heading {
2725
3347
  color: var(--vox-color-danger-1);
2726
3348
  }
3349
+ .danger .icon {
3350
+ color: var(--vox-color-danger-1);
3351
+ }
2727
3352
 
2728
3353
  .close {
2729
3354
  flex: none;
@@ -2761,35 +3386,35 @@ $.styles = c`
2761
3386
  margin-bottom: 0;
2762
3387
  }
2763
3388
  `;
2764
- ce([
3389
+ fe([
2765
3390
  n()
2766
- ], $.prototype, "variant", 2);
2767
- ce([
3391
+ ], L.prototype, "variant", 2);
3392
+ fe([
2768
3393
  n()
2769
- ], $.prototype, "heading", 2);
2770
- ce([
3394
+ ], L.prototype, "heading", 2);
3395
+ fe([
2771
3396
  n({ type: Boolean })
2772
- ], $.prototype, "dismissible", 2);
2773
- ce([
3397
+ ], L.prototype, "dismissible", 2);
3398
+ fe([
2774
3399
  n({ type: Boolean, reflect: !0 })
2775
- ], $.prototype, "open", 2);
2776
- $ = ce([
2777
- d("vox-alert")
2778
- ], $);
2779
- var dt = Object.defineProperty, vt = Object.getOwnPropertyDescriptor, no = (t, o, a, r) => {
2780
- for (var e = r > 1 ? void 0 : r ? vt(o, a) : o, s = t.length - 1, i; s >= 0; s--)
2781
- (i = t[s]) && (e = (r ? i(o, a, e) : i(e)) || e);
2782
- return r && e && dt(o, a, e), e;
3400
+ ], L.prototype, "open", 2);
3401
+ L = fe([
3402
+ p("vox-alert")
3403
+ ], L);
3404
+ var $o = Object.defineProperty, _o = Object.getOwnPropertyDescriptor, xt = (o, t, a, r) => {
3405
+ for (var e = r > 1 ? void 0 : r ? _o(t, a) : t, s = o.length - 1, i; s >= 0; s--)
3406
+ (i = o[s]) && (e = (r ? i(t, a, e) : i(e)) || e);
3407
+ return r && e && $o(t, a, e), e;
2783
3408
  };
2784
- let fe = class extends v {
3409
+ let _e = class extends h {
2785
3410
  constructor() {
2786
3411
  super(...arguments), this.variant = "brand";
2787
3412
  }
2788
3413
  render() {
2789
- return l`<span class="badge ${this.variant}"><slot></slot></span>`;
3414
+ return c`<span class="badge ${this.variant}"><slot></slot></span>`;
2790
3415
  }
2791
3416
  };
2792
- fe.styles = c`
3417
+ _e.styles = d`
2793
3418
  :host {
2794
3419
  display: inline-block;
2795
3420
  }
@@ -2831,24 +3456,24 @@ fe.styles = c`
2831
3456
  color: var(--vox-color-text-2);
2832
3457
  }
2833
3458
  `;
2834
- no([
3459
+ xt([
2835
3460
  n()
2836
- ], fe.prototype, "variant", 2);
2837
- fe = no([
2838
- d("vox-badge")
2839
- ], fe);
2840
- var pt = Object.defineProperty, ht = Object.getOwnPropertyDescriptor, Ue = (t, o, a, r) => {
2841
- for (var e = r > 1 ? void 0 : r ? ht(o, a) : o, s = t.length - 1, i; s >= 0; s--)
2842
- (i = t[s]) && (e = (r ? i(o, a, e) : i(e)) || e);
2843
- return r && e && pt(o, a, e), e;
3461
+ ], _e.prototype, "variant", 2);
3462
+ _e = xt([
3463
+ p("vox-badge")
3464
+ ], _e);
3465
+ var Co = Object.defineProperty, Oo = Object.getOwnPropertyDescriptor, Je = (o, t, a, r) => {
3466
+ for (var e = r > 1 ? void 0 : r ? Oo(t, a) : t, s = o.length - 1, i; s >= 0; s--)
3467
+ (i = o[s]) && (e = (r ? i(t, a, e) : i(e)) || e);
3468
+ return r && e && Co(t, a, e), e;
2844
3469
  };
2845
- let X = class extends v {
3470
+ let ee = class extends h {
2846
3471
  constructor() {
2847
3472
  super(...arguments), this.date = "";
2848
3473
  }
2849
3474
  render() {
2850
- const t = /* @__PURE__ */ new Date(`${this.date}T00:00:00`), o = !Number.isNaN(t.getTime()), a = o ? t.toLocaleString(this.locale, { month: "short" }) : "—", r = o ? t.getDate() : "–";
2851
- return l`
3475
+ const o = /* @__PURE__ */ new Date(`${this.date}T00:00:00`), t = !Number.isNaN(o.getTime()), a = t ? o.toLocaleString(this.locale, { month: "short" }) : "—", r = t ? o.getDate() : "–";
3476
+ return c`
2852
3477
  <time class="tile" datetime=${this.date}>
2853
3478
  <span class="month">${a}</span>
2854
3479
  <span class="day">${r}</span>
@@ -2856,7 +3481,7 @@ let X = class extends v {
2856
3481
  `;
2857
3482
  }
2858
3483
  };
2859
- X.styles = c`
3484
+ ee.styles = d`
2860
3485
  :host {
2861
3486
  display: inline-block;
2862
3487
  font-family: var(--vox-font-family-base);
@@ -2892,45 +3517,67 @@ X.styles = c`
2892
3517
  color: var(--vox-color-text-1);
2893
3518
  }
2894
3519
  `;
2895
- Ue([
3520
+ Je([
2896
3521
  n()
2897
- ], X.prototype, "date", 2);
2898
- Ue([
3522
+ ], ee.prototype, "date", 2);
3523
+ Je([
2899
3524
  n()
2900
- ], X.prototype, "locale", 2);
2901
- X = Ue([
2902
- d("vox-calendar-tile")
2903
- ], X);
2904
- var xt = Object.defineProperty, ut = Object.getOwnPropertyDescriptor, Ke = (t, o, a, r) => {
2905
- for (var e = r > 1 ? void 0 : r ? ut(o, a) : o, s = t.length - 1, i; s >= 0; s--)
2906
- (i = t[s]) && (e = (r ? i(o, a, e) : i(e)) || e);
2907
- return r && e && xt(o, a, e), e;
3525
+ ], ee.prototype, "locale", 2);
3526
+ ee = Je([
3527
+ p("vox-calendar-tile")
3528
+ ], ee);
3529
+ var Mo = Object.defineProperty, ko = Object.getOwnPropertyDescriptor, et = (o, t, a, r) => {
3530
+ for (var e = r > 1 ? void 0 : r ? ko(t, a) : t, s = o.length - 1, i; s >= 0; s--)
3531
+ (i = o[s]) && (e = (r ? i(t, a, e) : i(e)) || e);
3532
+ return r && e && Mo(t, a, e), e;
2908
3533
  };
2909
- const ft = {
3534
+ const Lo = {
2910
3535
  info: "Info",
2911
3536
  tip: "Tip",
2912
3537
  warning: "Warning",
2913
3538
  danger: "Danger"
3539
+ }, Po = {
3540
+ info: "info",
3541
+ tip: "check-circle",
3542
+ warning: "warning",
3543
+ danger: "x-circle"
2914
3544
  };
2915
- let Q = class extends v {
3545
+ let te = class extends h {
2916
3546
  constructor() {
2917
3547
  super(...arguments), this.variant = "info";
2918
3548
  }
2919
3549
  render() {
2920
- return l`
3550
+ return c`
2921
3551
  <div class="callout ${this.variant}" role="note">
2922
- <p class="heading">${this.heading ?? ft[this.variant]}</p>
2923
- <slot></slot>
3552
+ <svg
3553
+ class="icon"
3554
+ viewBox="0 0 48 48"
3555
+ fill="none"
3556
+ stroke="currentColor"
3557
+ stroke-width="2"
3558
+ stroke-linecap="round"
3559
+ stroke-linejoin="round"
3560
+ aria-hidden="true"
3561
+ >
3562
+ ${y[Po[this.variant]]}
3563
+ </svg>
3564
+ <div class="content">
3565
+ <p class="heading">${this.heading ?? Lo[this.variant]}</p>
3566
+ <slot></slot>
3567
+ </div>
2924
3568
  </div>
2925
3569
  `;
2926
3570
  }
2927
3571
  };
2928
- Q.styles = c`
3572
+ te.styles = d`
2929
3573
  :host {
2930
3574
  display: block;
2931
3575
  }
2932
3576
 
2933
3577
  .callout {
3578
+ display: flex;
3579
+ gap: var(--vox-space-3);
3580
+ align-items: flex-start;
2934
3581
  border-radius: var(--vox-radius-md);
2935
3582
  padding: var(--vox-space-4);
2936
3583
  font-family: var(--vox-font-family-base);
@@ -2939,6 +3586,18 @@ Q.styles = c`
2939
3586
  color: var(--vox-color-text-2);
2940
3587
  }
2941
3588
 
3589
+ .icon {
3590
+ flex: none;
3591
+ width: 18px;
3592
+ height: 18px;
3593
+ margin-top: 2px;
3594
+ }
3595
+
3596
+ .content {
3597
+ flex: 1 1 auto;
3598
+ min-width: 0;
3599
+ }
3600
+
2942
3601
  .heading {
2943
3602
  margin: 0 0 var(--vox-space-2);
2944
3603
  font-size: 14px;
@@ -2951,6 +3610,9 @@ Q.styles = c`
2951
3610
  .info .heading {
2952
3611
  color: var(--vox-color-text-1);
2953
3612
  }
3613
+ .info .icon {
3614
+ color: var(--vox-color-text-1);
3615
+ }
2954
3616
 
2955
3617
  .tip {
2956
3618
  background-color: var(--vox-color-tip-soft);
@@ -2958,6 +3620,9 @@ Q.styles = c`
2958
3620
  .tip .heading {
2959
3621
  color: var(--vox-color-tip-1);
2960
3622
  }
3623
+ .tip .icon {
3624
+ color: var(--vox-color-tip-1);
3625
+ }
2961
3626
 
2962
3627
  .warning {
2963
3628
  background-color: var(--vox-color-warning-soft);
@@ -2965,6 +3630,9 @@ Q.styles = c`
2965
3630
  .warning .heading {
2966
3631
  color: var(--vox-color-warning-1);
2967
3632
  }
3633
+ .warning .icon {
3634
+ color: var(--vox-color-warning-1);
3635
+ }
2968
3636
 
2969
3637
  .danger {
2970
3638
  background-color: var(--vox-color-danger-soft);
@@ -2972,6 +3640,9 @@ Q.styles = c`
2972
3640
  .danger .heading {
2973
3641
  color: var(--vox-color-danger-1);
2974
3642
  }
3643
+ .danger .icon {
3644
+ color: var(--vox-color-danger-1);
3645
+ }
2975
3646
 
2976
3647
  ::slotted(p:first-child) {
2977
3648
  margin-top: 0;
@@ -2981,42 +3652,42 @@ Q.styles = c`
2981
3652
  margin-bottom: 0;
2982
3653
  }
2983
3654
  `;
2984
- Ke([
3655
+ et([
2985
3656
  n()
2986
- ], Q.prototype, "variant", 2);
2987
- Ke([
3657
+ ], te.prototype, "variant", 2);
3658
+ et([
2988
3659
  n()
2989
- ], Q.prototype, "heading", 2);
2990
- Q = Ke([
2991
- d("vox-callout")
2992
- ], Q);
2993
- var bt = Object.defineProperty, gt = Object.getOwnPropertyDescriptor, Oe = (t, o, a, r) => {
2994
- for (var e = r > 1 ? void 0 : r ? gt(o, a) : o, s = t.length - 1, i; s >= 0; s--)
2995
- (i = t[s]) && (e = (r ? i(o, a, e) : i(e)) || e);
2996
- return r && e && bt(o, a, e), e;
3660
+ ], te.prototype, "heading", 2);
3661
+ te = et([
3662
+ p("vox-callout")
3663
+ ], te);
3664
+ var Vo = Object.defineProperty, jo = Object.getOwnPropertyDescriptor, ze = (o, t, a, r) => {
3665
+ for (var e = r > 1 ? void 0 : r ? jo(t, a) : t, s = o.length - 1, i; s >= 0; s--)
3666
+ (i = o[s]) && (e = (r ? i(t, a, e) : i(e)) || e);
3667
+ return r && e && Vo(t, a, e), e;
2997
3668
  };
2998
- let z = class extends v {
3669
+ let I = class extends h {
2999
3670
  constructor() {
3000
3671
  super(...arguments), this.heading = "", this.hasIcon = !1, this.hasBadge = !1, this.hasFooter = !1;
3001
3672
  }
3002
- handleIconSlotChange(t) {
3003
- const o = t.target;
3004
- this.hasIcon = o.assignedNodes({ flatten: !0 }).length > 0, this.requestUpdate();
3673
+ handleIconSlotChange(o) {
3674
+ const t = o.target;
3675
+ this.hasIcon = t.assignedNodes({ flatten: !0 }).length > 0, this.requestUpdate();
3005
3676
  }
3006
- handleBadgeSlotChange(t) {
3007
- const o = t.target;
3008
- this.hasBadge = o.assignedNodes({ flatten: !0 }).length > 0, this.requestUpdate();
3677
+ handleBadgeSlotChange(o) {
3678
+ const t = o.target;
3679
+ this.hasBadge = t.assignedNodes({ flatten: !0 }).length > 0, this.requestUpdate();
3009
3680
  }
3010
- handleFooterSlotChange(t) {
3011
- const o = t.target;
3012
- this.hasFooter = o.assignedNodes({ flatten: !0 }).length > 0, this.requestUpdate();
3681
+ handleFooterSlotChange(o) {
3682
+ const t = o.target;
3683
+ this.hasFooter = t.assignedNodes({ flatten: !0 }).length > 0, this.requestUpdate();
3013
3684
  }
3014
3685
  render() {
3015
- const t = l`
3686
+ const o = c`
3016
3687
  <div class="badge ${this.hasBadge ? "has-badge" : ""}">
3017
3688
  <slot name="badge" @slotchange=${this.handleBadgeSlotChange}></slot>
3018
3689
  </div>
3019
- <div class="icon ${this.hasIcon ? "has-icon" : ""}">
3690
+ <div class="icon ${this.hasIcon ? "has-icon" : ""}" aria-hidden="true">
3020
3691
  <slot name="icon" @slotchange=${this.handleIconSlotChange}></slot>
3021
3692
  </div>
3022
3693
  <h3 class="heading">${this.heading}</h3>
@@ -3025,10 +3696,10 @@ let z = class extends v {
3025
3696
  <slot name="footer" @slotchange=${this.handleFooterSlotChange}></slot>
3026
3697
  </div>
3027
3698
  `;
3028
- return this.href !== void 0 ? l`<a class="card" href=${this.href} target=${this.target ?? p}>${t}</a>` : l`<div class="card">${t}</div>`;
3699
+ return this.href !== void 0 ? c`<a class="card" href=${this.href} target=${this.target ?? v}>${o}</a>` : c`<div class="card">${o}</div>`;
3029
3700
  }
3030
3701
  };
3031
- z.styles = c`
3702
+ I.styles = d`
3032
3703
  :host {
3033
3704
  display: block;
3034
3705
  }
@@ -3044,6 +3715,11 @@ z.styles = c`
3044
3715
  border-radius: var(--vox-radius-lg);
3045
3716
  padding: var(--vox-space-6);
3046
3717
  font-family: var(--vox-font-family-base);
3718
+ /* Slotted content (e.g. an icon using stroke="currentColor")
3719
+ inherits from this element's position in the flat tree — when
3720
+ rendered as an <a>, that means the browser's default link color
3721
+ without this, since nothing else in .card sets one. */
3722
+ color: var(--vox-color-text-1);
3047
3723
  text-decoration: none;
3048
3724
  transition: border-color var(--vox-transition-base);
3049
3725
  }
@@ -3108,39 +3784,39 @@ z.styles = c`
3108
3784
  display: none;
3109
3785
  }
3110
3786
  `;
3111
- Oe([
3787
+ ze([
3112
3788
  n()
3113
- ], z.prototype, "heading", 2);
3114
- Oe([
3789
+ ], I.prototype, "heading", 2);
3790
+ ze([
3115
3791
  n()
3116
- ], z.prototype, "href", 2);
3117
- Oe([
3792
+ ], I.prototype, "href", 2);
3793
+ ze([
3118
3794
  n()
3119
- ], z.prototype, "target", 2);
3120
- z = Oe([
3121
- d("vox-card")
3122
- ], z);
3123
- var mt = Object.defineProperty, yt = Object.getOwnPropertyDescriptor, lo = (t, o, a, r) => {
3124
- for (var e = r > 1 ? void 0 : r ? yt(o, a) : o, s = t.length - 1, i; s >= 0; s--)
3125
- (i = t[s]) && (e = (r ? i(o, a, e) : i(e)) || e);
3126
- return r && e && mt(o, a, e), e;
3795
+ ], I.prototype, "target", 2);
3796
+ I = ze([
3797
+ p("vox-card")
3798
+ ], I);
3799
+ var Do = Object.defineProperty, zo = Object.getOwnPropertyDescriptor, ut = (o, t, a, r) => {
3800
+ for (var e = r > 1 ? void 0 : r ? zo(t, a) : t, s = o.length - 1, i; s >= 0; s--)
3801
+ (i = o[s]) && (e = (r ? i(t, a, e) : i(e)) || e);
3802
+ return r && e && Do(t, a, e), e;
3127
3803
  };
3128
- let be = class extends v {
3804
+ let Ce = class extends h {
3129
3805
  constructor() {
3130
3806
  super(...arguments), this.heading = "", this.hasBody = !1, this.hasActions = !1;
3131
3807
  }
3132
- handleBodySlotChange(t) {
3133
- const o = t.target;
3134
- this.hasBody = o.assignedNodes({ flatten: !0 }).length > 0, this.requestUpdate();
3808
+ handleBodySlotChange(o) {
3809
+ const t = o.target;
3810
+ this.hasBody = t.assignedNodes({ flatten: !0 }).length > 0, this.requestUpdate();
3135
3811
  }
3136
- handleActionsSlotChange(t) {
3137
- const o = t.target;
3138
- this.hasActions = o.assignedNodes({ flatten: !0 }).length > 0, this.requestUpdate();
3812
+ handleActionsSlotChange(o) {
3813
+ const t = o.target;
3814
+ this.hasActions = t.assignedNodes({ flatten: !0 }).length > 0, this.requestUpdate();
3139
3815
  }
3140
3816
  render() {
3141
- return l`
3817
+ return c`
3142
3818
  <div class="band">
3143
- ${this.heading ? l`<h2 class="heading">${this.heading}</h2>` : p}
3819
+ ${this.heading ? c`<h2 class="heading">${this.heading}</h2>` : v}
3144
3820
  <div class="body ${this.hasBody ? "has-content" : ""}">
3145
3821
  <slot @slotchange=${this.handleBodySlotChange}></slot>
3146
3822
  </div>
@@ -3151,7 +3827,7 @@ let be = class extends v {
3151
3827
  `;
3152
3828
  }
3153
3829
  };
3154
- be.styles = c`
3830
+ Ce.styles = d`
3155
3831
  :host {
3156
3832
  display: block;
3157
3833
  font-family: var(--vox-font-family-base);
@@ -3206,25 +3882,25 @@ be.styles = c`
3206
3882
  display: none;
3207
3883
  }
3208
3884
  `;
3209
- lo([
3885
+ ut([
3210
3886
  n()
3211
- ], be.prototype, "heading", 2);
3212
- be = lo([
3213
- d("vox-cta-band")
3214
- ], be);
3215
- var wt = Object.defineProperty, $t = Object.getOwnPropertyDescriptor, co = (t, o, a, r) => {
3216
- for (var e = r > 1 ? void 0 : r ? $t(o, a) : o, s = t.length - 1, i; s >= 0; s--)
3217
- (i = t[s]) && (e = (r ? i(o, a, e) : i(e)) || e);
3218
- return r && e && wt(o, a, e), e;
3887
+ ], Ce.prototype, "heading", 2);
3888
+ Ce = ut([
3889
+ p("vox-cta-band")
3890
+ ], Ce);
3891
+ var Eo = Object.defineProperty, Ho = Object.getOwnPropertyDescriptor, ft = (o, t, a, r) => {
3892
+ for (var e = r > 1 ? void 0 : r ? Ho(t, a) : t, s = o.length - 1, i; s >= 0; s--)
3893
+ (i = o[s]) && (e = (r ? i(t, a, e) : i(e)) || e);
3894
+ return r && e && Eo(t, a, e), e;
3219
3895
  };
3220
- let ge = class extends v {
3896
+ let Oe = class extends h {
3221
3897
  constructor() {
3222
3898
  super(...arguments), this.heading = "";
3223
3899
  }
3224
3900
  render() {
3225
- return l`
3901
+ return c`
3226
3902
  <div class="empty">
3227
- <div class="icon"><slot name="icon"></slot></div>
3903
+ <div class="icon" aria-hidden="true"><slot name="icon"></slot></div>
3228
3904
  <h3 class="heading">${this.heading}</h3>
3229
3905
  <div class="body"><slot></slot></div>
3230
3906
  <div class="actions"><slot name="actions"></slot></div>
@@ -3232,7 +3908,7 @@ let ge = class extends v {
3232
3908
  `;
3233
3909
  }
3234
3910
  };
3235
- ge.styles = c`
3911
+ Oe.styles = d`
3236
3912
  :host {
3237
3913
  display: block;
3238
3914
  font-family: var(--vox-font-family-base);
@@ -3276,20 +3952,20 @@ ge.styles = c`
3276
3952
  margin-top: var(--vox-space-4);
3277
3953
  }
3278
3954
  `;
3279
- co([
3955
+ ft([
3280
3956
  n()
3281
- ], ge.prototype, "heading", 2);
3282
- ge = co([
3283
- d("vox-empty-state")
3284
- ], ge);
3285
- var _t = Object.defineProperty, Ot = Object.getOwnPropertyDescriptor, Ge = (t, o, a, r) => {
3286
- for (var e = r > 1 ? void 0 : r ? Ot(o, a) : o, s = t.length - 1, i; s >= 0; s--)
3287
- (i = t[s]) && (e = (r ? i(o, a, e) : i(e)) || e);
3288
- return r && e && _t(o, a, e), e;
3957
+ ], Oe.prototype, "heading", 2);
3958
+ Oe = ft([
3959
+ p("vox-empty-state")
3960
+ ], Oe);
3961
+ var So = Object.defineProperty, Ao = Object.getOwnPropertyDescriptor, tt = (o, t, a, r) => {
3962
+ for (var e = r > 1 ? void 0 : r ? Ao(t, a) : t, s = o.length - 1, i; s >= 0; s--)
3963
+ (i = o[s]) && (e = (r ? i(t, a, e) : i(e)) || e);
3964
+ return r && e && So(t, a, e), e;
3289
3965
  };
3290
- let Se = class extends v {
3966
+ let Ne = class extends h {
3291
3967
  render() {
3292
- return l`
3968
+ return c`
3293
3969
  <footer>
3294
3970
  <div class="inner">
3295
3971
  <div class="columns"><slot></slot></div>
@@ -3299,7 +3975,7 @@ let Se = class extends v {
3299
3975
  `;
3300
3976
  }
3301
3977
  };
3302
- Se.styles = c`
3978
+ Ne.styles = d`
3303
3979
  :host {
3304
3980
  display: block;
3305
3981
  font-family: var(--vox-font-family-base);
@@ -3327,21 +4003,21 @@ Se.styles = c`
3327
4003
  color: var(--vox-color-text-3);
3328
4004
  }
3329
4005
  `;
3330
- Se = Ge([
3331
- d("vox-footer")
3332
- ], Se);
3333
- let me = class extends v {
4006
+ Ne = tt([
4007
+ p("vox-footer")
4008
+ ], Ne);
4009
+ let Me = class extends h {
3334
4010
  constructor() {
3335
4011
  super(...arguments), this.heading = "";
3336
4012
  }
3337
4013
  render() {
3338
- return l`
4014
+ return c`
3339
4015
  <h3 class="heading">${this.heading}</h3>
3340
4016
  <div class="links"><slot></slot></div>
3341
4017
  `;
3342
4018
  }
3343
4019
  };
3344
- me.styles = c`
4020
+ Me.styles = d`
3345
4021
  :host {
3346
4022
  display: block;
3347
4023
  font-family: var(--vox-font-family-base);
@@ -3373,18 +4049,18 @@ me.styles = c`
3373
4049
  text-decoration: underline;
3374
4050
  }
3375
4051
  `;
3376
- Ge([
4052
+ tt([
3377
4053
  n()
3378
- ], me.prototype, "heading", 2);
3379
- me = Ge([
3380
- d("vox-footer-column")
3381
- ], me);
3382
- var Pt = Object.defineProperty, Ct = Object.getOwnPropertyDescriptor, Pe = (t, o, a, r) => {
3383
- for (var e = r > 1 ? void 0 : r ? Ct(o, a) : o, s = t.length - 1, i; s >= 0; s--)
3384
- (i = t[s]) && (e = (r ? i(o, a, e) : i(e)) || e);
3385
- return r && e && Pt(o, a, e), e;
4054
+ ], Me.prototype, "heading", 2);
4055
+ Me = tt([
4056
+ p("vox-footer-column")
4057
+ ], Me);
4058
+ var Io = Object.defineProperty, Bo = Object.getOwnPropertyDescriptor, Ee = (o, t, a, r) => {
4059
+ for (var e = r > 1 ? void 0 : r ? Bo(t, a) : t, s = o.length - 1, i; s >= 0; s--)
4060
+ (i = o[s]) && (e = (r ? i(t, a, e) : i(e)) || e);
4061
+ return r && e && Io(t, a, e), e;
3386
4062
  };
3387
- let E = class extends v {
4063
+ let B = class extends h {
3388
4064
  constructor() {
3389
4065
  super(...arguments), this.cols = 0, this.min = "240px", this.gap = "md";
3390
4066
  }
@@ -3392,10 +4068,10 @@ let E = class extends v {
3392
4068
  this.style.gridTemplateColumns = this.cols > 0 ? `repeat(${this.cols}, minmax(0, 1fr))` : `repeat(auto-fit, minmax(min(${this.min}, 100%), 1fr))`;
3393
4069
  }
3394
4070
  render() {
3395
- return l`<slot></slot>`;
4071
+ return c`<slot></slot>`;
3396
4072
  }
3397
4073
  };
3398
- E.styles = c`
4074
+ B.styles = d`
3399
4075
  :host {
3400
4076
  display: grid;
3401
4077
  }
@@ -3412,35 +4088,35 @@ E.styles = c`
3412
4088
  gap: var(--vox-space-6);
3413
4089
  }
3414
4090
  `;
3415
- Pe([
4091
+ Ee([
3416
4092
  n({ type: Number })
3417
- ], E.prototype, "cols", 2);
3418
- Pe([
4093
+ ], B.prototype, "cols", 2);
4094
+ Ee([
3419
4095
  n()
3420
- ], E.prototype, "min", 2);
3421
- Pe([
4096
+ ], B.prototype, "min", 2);
4097
+ Ee([
3422
4098
  n({ reflect: !0 })
3423
- ], E.prototype, "gap", 2);
3424
- E = Pe([
3425
- d("vox-grid")
3426
- ], E);
3427
- var jt = Object.defineProperty, Dt = Object.getOwnPropertyDescriptor, Xe = (t, o, a, r) => {
3428
- for (var e = r > 1 ? void 0 : r ? Dt(o, a) : o, s = t.length - 1, i; s >= 0; s--)
3429
- (i = t[s]) && (e = (r ? i(o, a, e) : i(e)) || e);
3430
- return r && e && jt(o, a, e), e;
4099
+ ], B.prototype, "gap", 2);
4100
+ B = Ee([
4101
+ p("vox-grid")
4102
+ ], B);
4103
+ var qo = Object.defineProperty, No = Object.getOwnPropertyDescriptor, ot = (o, t, a, r) => {
4104
+ for (var e = r > 1 ? void 0 : r ? No(t, a) : t, s = o.length - 1, i; s >= 0; s--)
4105
+ (i = o[s]) && (e = (r ? i(t, a, e) : i(e)) || e);
4106
+ return r && e && qo(t, a, e), e;
3431
4107
  };
3432
- let W = class extends v {
4108
+ let oe = class extends h {
3433
4109
  constructor() {
3434
4110
  super(...arguments), this.eyebrow = "", this.heading = "", this.hasActions = !1;
3435
4111
  }
3436
- handleActionsSlotChange(t) {
3437
- const o = t.target;
3438
- this.hasActions = o.assignedNodes({ flatten: !0 }).length > 0, this.requestUpdate();
4112
+ handleActionsSlotChange(o) {
4113
+ const t = o.target;
4114
+ this.hasActions = t.assignedNodes({ flatten: !0 }).length > 0, this.requestUpdate();
3439
4115
  }
3440
4116
  render() {
3441
- return l`
4117
+ return c`
3442
4118
  <header class="hero">
3443
- ${this.eyebrow ? l`<p class="eyebrow">${this.eyebrow}</p>` : p}
4119
+ ${this.eyebrow ? c`<p class="eyebrow">${this.eyebrow}</p>` : v}
3444
4120
  <h1 class="heading">${this.heading}</h1>
3445
4121
  <div class="body"><slot></slot></div>
3446
4122
  <div class="actions ${this.hasActions ? "has-content" : ""}">
@@ -3450,7 +4126,7 @@ let W = class extends v {
3450
4126
  `;
3451
4127
  }
3452
4128
  };
3453
- W.styles = c`
4129
+ oe.styles = d`
3454
4130
  :host {
3455
4131
  display: block;
3456
4132
  font-family: var(--vox-font-family-base);
@@ -3507,43 +4183,50 @@ W.styles = c`
3507
4183
  display: none;
3508
4184
  }
3509
4185
  `;
3510
- Xe([
4186
+ ot([
3511
4187
  n()
3512
- ], W.prototype, "eyebrow", 2);
3513
- Xe([
4188
+ ], oe.prototype, "eyebrow", 2);
4189
+ ot([
3514
4190
  n()
3515
- ], W.prototype, "heading", 2);
3516
- W = Xe([
3517
- d("vox-hero")
3518
- ], W);
3519
- var kt = Object.defineProperty, zt = Object.getOwnPropertyDescriptor, Ce = (t, o, a, r) => {
3520
- for (var e = r > 1 ? void 0 : r ? zt(o, a) : o, s = t.length - 1, i; s >= 0; s--)
3521
- (i = t[s]) && (e = (r ? i(o, a, e) : i(e)) || e);
3522
- return r && e && kt(o, a, e), e;
4191
+ ], oe.prototype, "heading", 2);
4192
+ oe = ot([
4193
+ p("vox-hero")
4194
+ ], oe);
4195
+ var To = Object.defineProperty, Fo = Object.getOwnPropertyDescriptor, He = (o, t, a, r) => {
4196
+ for (var e = r > 1 ? void 0 : r ? Fo(t, a) : t, s = o.length - 1, i; s >= 0; s--)
4197
+ (i = o[s]) && (e = (r ? i(t, a, e) : i(e)) || e);
4198
+ return r && e && To(t, a, e), e;
3523
4199
  };
3524
- let Ve = class extends v {
4200
+ let Te = class extends h {
3525
4201
  render() {
3526
- return l`<slot></slot>`;
4202
+ return c`<slot></slot>`;
3527
4203
  }
3528
4204
  };
3529
- Ve.styles = c`
4205
+ Te.styles = d`
3530
4206
  :host {
3531
4207
  display: grid;
3532
4208
  grid-template-columns: repeat(auto-fit, minmax(min(260px, 100%), 1fr));
3533
4209
  gap: var(--vox-space-4);
3534
4210
  }
3535
4211
  `;
3536
- Ve = Ce([
3537
- d("vox-link-hub")
3538
- ], Ve);
3539
- let Y = class extends v {
4212
+ Te = He([
4213
+ p("vox-link-hub")
4214
+ ], Te);
4215
+ let re = class extends h {
3540
4216
  constructor() {
3541
- super(...arguments), this.href = "#", this.heading = "";
4217
+ super(...arguments), this.href = "#", this.heading = "", this.hasIcon = !1;
4218
+ }
4219
+ handleIconSlotChange(o) {
4220
+ const t = o.target;
4221
+ this.hasIcon = t.assignedNodes({ flatten: !0 }).length > 0, this.requestUpdate();
3542
4222
  }
3543
4223
  render() {
3544
- return l`
4224
+ return c`
3545
4225
  <a href=${this.href}>
3546
4226
  <span class="heading">
4227
+ <span class="icon ${this.hasIcon ? "has-icon" : ""}" aria-hidden="true">
4228
+ <slot name="icon" @slotchange=${this.handleIconSlotChange}></slot>
4229
+ </span>
3547
4230
  ${this.heading}
3548
4231
  <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
3549
4232
  <path d="M5 12h14" />
@@ -3555,12 +4238,21 @@ let Y = class extends v {
3555
4238
  `;
3556
4239
  }
3557
4240
  };
3558
- Y.styles = c`
4241
+ re.styles = d`
3559
4242
  :host {
3560
4243
  display: block;
3561
4244
  font-family: var(--vox-font-family-base);
3562
4245
  }
3563
4246
 
4247
+ .icon {
4248
+ display: flex;
4249
+ flex: none;
4250
+ }
4251
+
4252
+ .icon:not(.has-icon) {
4253
+ display: none;
4254
+ }
4255
+
3564
4256
  a {
3565
4257
  display: block;
3566
4258
  height: 100%;
@@ -3607,26 +4299,26 @@ Y.styles = c`
3607
4299
  color: var(--vox-color-text-2);
3608
4300
  }
3609
4301
  `;
3610
- Ce([
4302
+ He([
3611
4303
  n()
3612
- ], Y.prototype, "href", 2);
3613
- Ce([
4304
+ ], re.prototype, "href", 2);
4305
+ He([
3614
4306
  n()
3615
- ], Y.prototype, "heading", 2);
3616
- Y = Ce([
3617
- d("vox-link-hub-item")
3618
- ], Y);
3619
- var Et = Object.defineProperty, St = Object.getOwnPropertyDescriptor, Qe = (t, o, a, r) => {
3620
- for (var e = r > 1 ? void 0 : r ? St(o, a) : o, s = t.length - 1, i; s >= 0; s--)
3621
- (i = t[s]) && (e = (r ? i(o, a, e) : i(e)) || e);
3622
- return r && e && Et(o, a, e), e;
4307
+ ], re.prototype, "heading", 2);
4308
+ re = He([
4309
+ p("vox-link-hub-item")
4310
+ ], re);
4311
+ var Ro = Object.defineProperty, Zo = Object.getOwnPropertyDescriptor, rt = (o, t, a, r) => {
4312
+ for (var e = r > 1 ? void 0 : r ? Zo(t, a) : t, s = o.length - 1, i; s >= 0; s--)
4313
+ (i = o[s]) && (e = (r ? i(t, a, e) : i(e)) || e);
4314
+ return r && e && Ro(t, a, e), e;
3623
4315
  };
3624
- let Z = class extends v {
4316
+ let ae = class extends h {
3625
4317
  constructor() {
3626
4318
  super(...arguments), this.size = "md", this.label = "Loading";
3627
4319
  }
3628
4320
  render() {
3629
- return l`
4321
+ return c`
3630
4322
  <div role="status">
3631
4323
  <div class="spinner"></div>
3632
4324
  <span class="visually-hidden">${this.label}</span>
@@ -3634,7 +4326,7 @@ let Z = class extends v {
3634
4326
  `;
3635
4327
  }
3636
4328
  };
3637
- Z.styles = c`
4329
+ ae.styles = d`
3638
4330
  :host {
3639
4331
  display: inline-block;
3640
4332
  }
@@ -3687,33 +4379,33 @@ Z.styles = c`
3687
4379
  white-space: nowrap;
3688
4380
  }
3689
4381
  `;
3690
- Qe([
4382
+ rt([
3691
4383
  n({ reflect: !0 })
3692
- ], Z.prototype, "size", 2);
3693
- Qe([
4384
+ ], ae.prototype, "size", 2);
4385
+ rt([
3694
4386
  n()
3695
- ], Z.prototype, "label", 2);
3696
- Z = Qe([
3697
- d("vox-loader")
3698
- ], Z);
3699
- var Vt = Object.defineProperty, Bt = Object.getOwnPropertyDescriptor, vo = (t, o, a, r) => {
3700
- for (var e = r > 1 ? void 0 : r ? Bt(o, a) : o, s = t.length - 1, i; s >= 0; s--)
3701
- (i = t[s]) && (e = (r ? i(o, a, e) : i(e)) || e);
3702
- return r && e && Vt(o, a, e), e;
4387
+ ], ae.prototype, "label", 2);
4388
+ ae = rt([
4389
+ p("vox-loader")
4390
+ ], ae);
4391
+ var Uo = Object.defineProperty, Ko = Object.getOwnPropertyDescriptor, gt = (o, t, a, r) => {
4392
+ for (var e = r > 1 ? void 0 : r ? Ko(t, a) : t, s = o.length - 1, i; s >= 0; s--)
4393
+ (i = o[s]) && (e = (r ? i(t, a, e) : i(e)) || e);
4394
+ return r && e && Uo(t, a, e), e;
3703
4395
  };
3704
- let ye = class extends v {
4396
+ let ke = class extends h {
3705
4397
  constructor() {
3706
4398
  super(...arguments), this.label = "Pagination";
3707
4399
  }
3708
4400
  render() {
3709
- return l`
4401
+ return c`
3710
4402
  <nav aria-label=${this.label}>
3711
4403
  <slot></slot>
3712
4404
  </nav>
3713
4405
  `;
3714
4406
  }
3715
4407
  };
3716
- ye.styles = c`
4408
+ ke.styles = d`
3717
4409
  :host {
3718
4410
  display: block;
3719
4411
  font-family: var(--vox-font-family-base);
@@ -3725,7 +4417,8 @@ ye.styles = c`
3725
4417
  flex-wrap: wrap;
3726
4418
  }
3727
4419
 
3728
- ::slotted(a) {
4420
+ ::slotted(a),
4421
+ ::slotted(span) {
3729
4422
  display: inline-flex;
3730
4423
  align-items: center;
3731
4424
  justify-content: center;
@@ -3747,42 +4440,42 @@ ye.styles = c`
3747
4440
  background-color: var(--vox-color-brand-soft);
3748
4441
  }
3749
4442
 
3750
- ::slotted(a[aria-current='page']) {
4443
+ ::slotted([aria-current='page']) {
3751
4444
  background-color: var(--vox-color-brand-3);
3752
4445
  color: var(--vox-color-text-inverse);
3753
4446
  font-weight: 600;
3754
4447
  }
3755
4448
  `;
3756
- vo([
4449
+ gt([
3757
4450
  n()
3758
- ], ye.prototype, "label", 2);
3759
- ye = vo([
3760
- d("vox-pagination")
3761
- ], ye);
3762
- var At = Object.defineProperty, qt = Object.getOwnPropertyDescriptor, We = (t, o, a, r) => {
3763
- for (var e = r > 1 ? void 0 : r ? qt(o, a) : o, s = t.length - 1, i; s >= 0; s--)
3764
- (i = t[s]) && (e = (r ? i(o, a, e) : i(e)) || e);
3765
- return r && e && At(o, a, e), e;
4451
+ ], ke.prototype, "label", 2);
4452
+ ke = gt([
4453
+ p("vox-pagination")
4454
+ ], ke);
4455
+ var Go = Object.defineProperty, Xo = Object.getOwnPropertyDescriptor, at = (o, t, a, r) => {
4456
+ for (var e = r > 1 ? void 0 : r ? Xo(t, a) : t, s = o.length - 1, i; s >= 0; s--)
4457
+ (i = o[s]) && (e = (r ? i(t, a, e) : i(e)) || e);
4458
+ return r && e && Go(t, a, e), e;
3766
4459
  };
3767
- let J = class extends v {
4460
+ let se = class extends h {
3768
4461
  constructor() {
3769
4462
  super(...arguments), this.attribution = "", this.detail = "";
3770
4463
  }
3771
4464
  render() {
3772
- return l`
4465
+ return c`
3773
4466
  <blockquote>
3774
4467
  <div class="text"><slot></slot></div>
3775
- ${this.attribution ? l`
4468
+ ${this.attribution ? c`
3776
4469
  <footer>
3777
4470
  <span class="attribution">${this.attribution}</span>
3778
- ${this.detail ? l`<span class="detail"> — ${this.detail}</span>` : p}
4471
+ ${this.detail ? c`<span class="detail"> — ${this.detail}</span>` : v}
3779
4472
  </footer>
3780
- ` : p}
4473
+ ` : v}
3781
4474
  </blockquote>
3782
4475
  `;
3783
4476
  }
3784
4477
  };
3785
- J.styles = c`
4478
+ se.styles = d`
3786
4479
  :host {
3787
4480
  display: block;
3788
4481
  font-family: var(--vox-font-family-base);
@@ -3824,30 +4517,30 @@ J.styles = c`
3824
4517
  color: var(--vox-color-text-2);
3825
4518
  }
3826
4519
  `;
3827
- We([
4520
+ at([
3828
4521
  n()
3829
- ], J.prototype, "attribution", 2);
3830
- We([
4522
+ ], se.prototype, "attribution", 2);
4523
+ at([
3831
4524
  n()
3832
- ], J.prototype, "detail", 2);
3833
- J = We([
3834
- d("vox-quote")
3835
- ], J);
3836
- var Lt = Object.defineProperty, Nt = Object.getOwnPropertyDescriptor, C = (t, o, a, r) => {
3837
- for (var e = r > 1 ? void 0 : r ? Nt(o, a) : o, s = t.length - 1, i; s >= 0; s--)
3838
- (i = t[s]) && (e = (r ? i(o, a, e) : i(e)) || e);
3839
- return r && e && Lt(o, a, e), e;
4525
+ ], se.prototype, "detail", 2);
4526
+ se = at([
4527
+ p("vox-quote")
4528
+ ], se);
4529
+ var Qo = Object.defineProperty, Wo = Object.getOwnPropertyDescriptor, D = (o, t, a, r) => {
4530
+ for (var e = r > 1 ? void 0 : r ? Wo(t, a) : t, s = o.length - 1, i; s >= 0; s--)
4531
+ (i = o[s]) && (e = (r ? i(t, a, e) : i(e)) || e);
4532
+ return r && e && Qo(t, a, e), e;
3840
4533
  };
3841
- let we = class extends v {
4534
+ let Le = class extends h {
3842
4535
  constructor() {
3843
4536
  super(...arguments), this.heading = "", this.hasDescription = !1;
3844
4537
  }
3845
- handleDescriptionSlotChange(t) {
3846
- const o = t.target;
3847
- this.hasDescription = o.assignedNodes({ flatten: !0 }).length > 0, this.requestUpdate();
4538
+ handleDescriptionSlotChange(o) {
4539
+ const t = o.target;
4540
+ this.hasDescription = t.assignedNodes({ flatten: !0 }).length > 0, this.requestUpdate();
3848
4541
  }
3849
4542
  render() {
3850
- return l`
4543
+ return c`
3851
4544
  <h2 class="heading">${this.heading}</h2>
3852
4545
  <div class="description ${this.hasDescription ? "has-content" : ""}">
3853
4546
  <slot
@@ -3861,7 +4554,7 @@ let we = class extends v {
3861
4554
  `;
3862
4555
  }
3863
4556
  };
3864
- we.styles = c`
4557
+ Le.styles = d`
3865
4558
  :host {
3866
4559
  display: block;
3867
4560
  font-family: var(--vox-font-family-base);
@@ -3893,39 +4586,39 @@ we.styles = c`
3893
4586
  margin-top: var(--vox-space-6);
3894
4587
  }
3895
4588
  `;
3896
- C([
4589
+ D([
3897
4590
  n()
3898
- ], we.prototype, "heading", 2);
3899
- we = C([
3900
- d("vox-sponsor-tier")
3901
- ], we);
3902
- let _ = class extends v {
4591
+ ], Le.prototype, "heading", 2);
4592
+ Le = D([
4593
+ p("vox-sponsor-tier")
4594
+ ], Le);
4595
+ let P = class extends h {
3903
4596
  constructor() {
3904
4597
  super(...arguments), this.name = "", this.hasBody = !1;
3905
4598
  }
3906
- handleBodySlotChange(t) {
3907
- const o = t.target;
3908
- this.hasBody = o.assignedNodes({ flatten: !0 }).length > 0, this.requestUpdate();
4599
+ handleBodySlotChange(o) {
4600
+ const t = o.target;
4601
+ this.hasBody = t.assignedNodes({ flatten: !0 }).length > 0, this.requestUpdate();
3909
4602
  }
3910
4603
  render() {
3911
- const t = l`
4604
+ const o = c`
3912
4605
  <div class="logo ${this.logo ? "has-logo" : ""}">
3913
- ${this.logo ? l`<img src=${this.logo} alt=${this.name} />` : p}
4606
+ ${this.logo ? c`<img src=${this.logo} alt=${this.name} />` : v}
3914
4607
  </div>
3915
4608
  <span class="name">${this.name}</span>
3916
4609
  <div class="body ${this.hasBody ? "has-content" : ""}">
3917
4610
  <slot @slotchange=${this.handleBodySlotChange}></slot>
3918
4611
  </div>
3919
4612
  `;
3920
- return this.href !== void 0 ? l`<a
4613
+ return this.href !== void 0 ? c`<a
3921
4614
  class="sponsor"
3922
4615
  href=${this.href}
3923
- target=${this.target ?? p}
3924
- >${t}</a
3925
- >` : l`<div class="sponsor">${t}</div>`;
4616
+ target=${this.target ?? v}
4617
+ >${o}</a
4618
+ >` : c`<div class="sponsor">${o}</div>`;
3926
4619
  }
3927
4620
  };
3928
- _.styles = c`
4621
+ P.styles = d`
3929
4622
  :host {
3930
4623
  display: block;
3931
4624
  }
@@ -3991,39 +4684,39 @@ _.styles = c`
3991
4684
  display: none;
3992
4685
  }
3993
4686
  `;
3994
- C([
4687
+ D([
3995
4688
  n()
3996
- ], _.prototype, "name", 2);
3997
- C([
4689
+ ], P.prototype, "name", 2);
4690
+ D([
3998
4691
  n()
3999
- ], _.prototype, "href", 2);
4000
- C([
4692
+ ], P.prototype, "href", 2);
4693
+ D([
4001
4694
  n()
4002
- ], _.prototype, "logo", 2);
4003
- C([
4695
+ ], P.prototype, "logo", 2);
4696
+ D([
4004
4697
  n()
4005
- ], _.prototype, "target", 2);
4006
- _ = C([
4007
- d("vox-sponsor")
4008
- ], _);
4009
- var Mt = Object.defineProperty, Tt = Object.getOwnPropertyDescriptor, Ye = (t, o, a, r) => {
4010
- for (var e = r > 1 ? void 0 : r ? Tt(o, a) : o, s = t.length - 1, i; s >= 0; s--)
4011
- (i = t[s]) && (e = (r ? i(o, a, e) : i(e)) || e);
4012
- return r && e && Mt(o, a, e), e;
4698
+ ], P.prototype, "target", 2);
4699
+ P = D([
4700
+ p("vox-sponsor")
4701
+ ], P);
4702
+ var Yo = Object.defineProperty, Jo = Object.getOwnPropertyDescriptor, st = (o, t, a, r) => {
4703
+ for (var e = r > 1 ? void 0 : r ? Jo(t, a) : t, s = o.length - 1, i; s >= 0; s--)
4704
+ (i = o[s]) && (e = (r ? i(t, a, e) : i(e)) || e);
4705
+ return r && e && Yo(t, a, e), e;
4013
4706
  };
4014
- let ee = class extends v {
4707
+ let ie = class extends h {
4015
4708
  constructor() {
4016
4709
  super(...arguments), this.value = "", this.label = "";
4017
4710
  }
4018
4711
  render() {
4019
- return l`
4712
+ return c`
4020
4713
  <div class="value">${this.value}</div>
4021
4714
  <div class="label">${this.label}</div>
4022
4715
  <div class="description"><slot></slot></div>
4023
4716
  `;
4024
4717
  }
4025
4718
  };
4026
- ee.styles = c`
4719
+ ie.styles = d`
4027
4720
  :host {
4028
4721
  display: block;
4029
4722
  font-family: var(--vox-font-family-base);
@@ -4050,35 +4743,35 @@ ee.styles = c`
4050
4743
  color: var(--vox-color-text-2);
4051
4744
  }
4052
4745
  `;
4053
- Ye([
4746
+ st([
4054
4747
  n()
4055
- ], ee.prototype, "value", 2);
4056
- Ye([
4748
+ ], ie.prototype, "value", 2);
4749
+ st([
4057
4750
  n()
4058
- ], ee.prototype, "label", 2);
4059
- ee = Ye([
4060
- d("vox-stat")
4061
- ], ee);
4062
- var Ft = Object.defineProperty, It = Object.getOwnPropertyDescriptor, de = (t, o, a, r) => {
4063
- for (var e = r > 1 ? void 0 : r ? It(o, a) : o, s = t.length - 1, i; s >= 0; s--)
4064
- (i = t[s]) && (e = (r ? i(o, a, e) : i(e)) || e);
4065
- return r && e && Ft(o, a, e), e;
4751
+ ], ie.prototype, "label", 2);
4752
+ ie = st([
4753
+ p("vox-stat")
4754
+ ], ie);
4755
+ var er = Object.defineProperty, tr = Object.getOwnPropertyDescriptor, ge = (o, t, a, r) => {
4756
+ for (var e = r > 1 ? void 0 : r ? tr(t, a) : t, s = o.length - 1, i; s >= 0; s--)
4757
+ (i = o[s]) && (e = (r ? i(t, a, e) : i(e)) || e);
4758
+ return r && e && er(t, a, e), e;
4066
4759
  };
4067
- let Be = class extends v {
4760
+ let Fe = class extends h {
4068
4761
  numberSteps() {
4069
- this.querySelectorAll("vox-step").forEach((t, o) => {
4070
- t.number = o + 1;
4762
+ this.querySelectorAll("vox-step").forEach((o, t) => {
4763
+ o.number = t + 1;
4071
4764
  });
4072
4765
  }
4073
4766
  render() {
4074
- return l`
4767
+ return c`
4075
4768
  <div class="steps" role="list" aria-label="Progress">
4076
4769
  <slot @slotchange=${this.numberSteps}></slot>
4077
4770
  </div>
4078
4771
  `;
4079
4772
  }
4080
4773
  };
4081
- Be.styles = c`
4774
+ Fe.styles = d`
4082
4775
  :host {
4083
4776
  display: block;
4084
4777
  }
@@ -4092,31 +4785,34 @@ Be.styles = c`
4092
4785
  flex: 1 1 0;
4093
4786
  }
4094
4787
  `;
4095
- Be = de([
4096
- d("vox-step-indicator")
4097
- ], Be);
4098
- let S = class extends v {
4788
+ Fe = ge([
4789
+ p("vox-step-indicator")
4790
+ ], Fe);
4791
+ let q = class extends h {
4099
4792
  constructor() {
4100
4793
  super(...arguments), this.label = "", this.state = "upcoming", this.number = 1;
4101
4794
  }
4102
4795
  render() {
4103
- return l`
4796
+ return c`
4104
4797
  <div
4105
4798
  class="step"
4106
4799
  role="listitem"
4107
4800
  aria-current=${this.state === "current" ? "step" : "false"}
4108
4801
  >
4109
4802
  <span class="marker">
4110
- ${this.state === "complete" ? l`<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
4803
+ ${this.state === "complete" ? c`<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
4111
4804
  <path d="m4 12 5 5L20 6" />
4112
4805
  </svg>` : this.number}
4113
4806
  </span>
4114
- <span class="label">${this.label}</span>
4807
+ <span class="label">
4808
+ ${this.label}
4809
+ ${this.state !== "current" ? c`<span class="visually-hidden"> (${this.state})</span>` : v}
4810
+ </span>
4115
4811
  </div>
4116
4812
  `;
4117
4813
  }
4118
4814
  };
4119
- S.styles = c`
4815
+ q.styles = d`
4120
4816
  :host {
4121
4817
  display: block;
4122
4818
  font-family: var(--vox-font-family-base);
@@ -4189,53 +4885,62 @@ S.styles = c`
4189
4885
  font-weight: 600;
4190
4886
  color: var(--vox-color-text-1);
4191
4887
  }
4888
+
4889
+ .visually-hidden {
4890
+ position: absolute;
4891
+ width: 1px;
4892
+ height: 1px;
4893
+ overflow: hidden;
4894
+ clip: rect(0 0 0 0);
4895
+ white-space: nowrap;
4896
+ }
4192
4897
  `;
4193
- de([
4898
+ ge([
4194
4899
  n()
4195
- ], S.prototype, "label", 2);
4196
- de([
4900
+ ], q.prototype, "label", 2);
4901
+ ge([
4197
4902
  n({ reflect: !0 })
4198
- ], S.prototype, "state", 2);
4199
- de([
4903
+ ], q.prototype, "state", 2);
4904
+ ge([
4200
4905
  n({ type: Number })
4201
- ], S.prototype, "number", 2);
4202
- S = de([
4203
- d("vox-step")
4204
- ], S);
4205
- var Rt = Object.defineProperty, Ht = Object.getOwnPropertyDescriptor, je = (t, o, a, r) => {
4206
- for (var e = r > 1 ? void 0 : r ? Ht(o, a) : o, s = t.length - 1, i; s >= 0; s--)
4207
- (i = t[s]) && (e = (r ? i(o, a, e) : i(e)) || e);
4208
- return r && e && Rt(o, a, e), e;
4906
+ ], q.prototype, "number", 2);
4907
+ q = ge([
4908
+ p("vox-step")
4909
+ ], q);
4910
+ var or = Object.defineProperty, rr = Object.getOwnPropertyDescriptor, Se = (o, t, a, r) => {
4911
+ for (var e = r > 1 ? void 0 : r ? rr(t, a) : t, s = o.length - 1, i; s >= 0; s--)
4912
+ (i = o[s]) && (e = (r ? i(t, a, e) : i(e)) || e);
4913
+ return r && e && or(t, a, e), e;
4209
4914
  };
4210
- let Ae = class extends v {
4915
+ let Re = class extends h {
4211
4916
  render() {
4212
- return l`<slot></slot>`;
4917
+ return c`<slot></slot>`;
4213
4918
  }
4214
4919
  };
4215
- Ae.styles = c`
4920
+ Re.styles = d`
4216
4921
  :host {
4217
4922
  display: block;
4218
4923
  }
4219
4924
  `;
4220
- Ae = je([
4221
- d("vox-timeline")
4222
- ], Ae);
4223
- let oe = class extends v {
4925
+ Re = Se([
4926
+ p("vox-timeline")
4927
+ ], Re);
4928
+ let ne = class extends h {
4224
4929
  constructor() {
4225
4930
  super(...arguments), this.heading = "", this.date = "";
4226
4931
  }
4227
4932
  render() {
4228
- return l`
4933
+ return c`
4229
4934
  <div class="item">
4230
4935
  <span class="dot" aria-hidden="true"></span>
4231
- ${this.date ? l`<div class="date">${this.date}</div>` : p}
4936
+ ${this.date ? c`<div class="date">${this.date}</div>` : v}
4232
4937
  <h3 class="heading">${this.heading}</h3>
4233
4938
  <div class="body"><slot></slot></div>
4234
4939
  </div>
4235
4940
  `;
4236
4941
  }
4237
4942
  };
4238
- oe.styles = c`
4943
+ ne.styles = d`
4239
4944
  :host {
4240
4945
  display: block;
4241
4946
  font-family: var(--vox-font-family-base);
@@ -4285,66 +4990,69 @@ oe.styles = c`
4285
4990
  color: var(--vox-color-text-2);
4286
4991
  }
4287
4992
  `;
4288
- je([
4993
+ Se([
4289
4994
  n()
4290
- ], oe.prototype, "heading", 2);
4291
- je([
4995
+ ], ne.prototype, "heading", 2);
4996
+ Se([
4292
4997
  n()
4293
- ], oe.prototype, "date", 2);
4294
- oe = je([
4295
- d("vox-timeline-item")
4296
- ], oe);
4998
+ ], ne.prototype, "date", 2);
4999
+ ne = Se([
5000
+ p("vox-timeline-item")
5001
+ ], ne);
4297
5002
  export {
4298
- ue as VoxAccordion,
4299
- G as VoxAccordionItem,
4300
- $ as VoxAlert,
4301
- m as VoxAvatar,
4302
- fe as VoxBadge,
4303
- M as VoxBillboard,
4304
- ze as VoxBreadcrumbs,
4305
- x as VoxButton,
4306
- X as VoxCalendarTile,
4307
- Q as VoxCallout,
4308
- z as VoxCard,
4309
- q as VoxCheckbox,
4310
- A as VoxCta,
4311
- be as VoxCtaBand,
4312
- w as VoxDialog,
4313
- U as VoxDisclosure,
4314
- K as VoxDropdown,
4315
- ge as VoxEmptyState,
4316
- u as VoxFileInput,
4317
- Se as VoxFooter,
4318
- me as VoxFooterColumn,
4319
- E as VoxGrid,
4320
- T as VoxHeader,
4321
- W as VoxHero,
4322
- f as VoxInput,
4323
- ke as VoxInputGroup,
4324
- Ve as VoxLinkHub,
4325
- Y as VoxLinkHubItem,
4326
- Z as VoxLoader,
4327
- ye as VoxPagination,
4328
- J as VoxQuote,
4329
- k as VoxRadio,
4330
- pe as VoxRadioGroup,
4331
- L as VoxSelect,
4332
- y as VoxSeriesNav,
4333
- he as VoxSidenav,
4334
- F as VoxSidenavGroup,
4335
- I as VoxSidenavItem,
4336
- _ as VoxSponsor,
4337
- we as VoxSponsorTier,
4338
- ee as VoxStat,
4339
- S as VoxStep,
4340
- Be as VoxStepIndicator,
4341
- xe as VoxSubnav,
4342
- N as VoxSwitch,
4343
- R as VoxTab,
4344
- H as VoxTabPanel,
4345
- Ee as VoxTabs,
4346
- g as VoxTextarea,
4347
- D as VoxThemeToggle,
4348
- Ae as VoxTimeline,
4349
- oe as VoxTimelineItem
5003
+ $e as VoxAccordion,
5004
+ k as VoxAccordionItem,
5005
+ L as VoxAlert,
5006
+ $ as VoxAvatar,
5007
+ _e as VoxBadge,
5008
+ G as VoxBillboard,
5009
+ Be as VoxBreadcrumbs,
5010
+ g as VoxButton,
5011
+ ee as VoxCalendarTile,
5012
+ te as VoxCallout,
5013
+ I as VoxCard,
5014
+ Z as VoxCheckbox,
5015
+ R as VoxCta,
5016
+ Ce as VoxCtaBand,
5017
+ O as VoxDialog,
5018
+ M as VoxDisclosure,
5019
+ J as VoxDropdown,
5020
+ Oe as VoxEmptyState,
5021
+ b as VoxFileInput,
5022
+ Ne as VoxFooter,
5023
+ Me as VoxFooterColumn,
5024
+ B as VoxGrid,
5025
+ S as VoxHeader,
5026
+ oe as VoxHero,
5027
+ E as VoxIcon,
5028
+ m as VoxInput,
5029
+ Ie as VoxInputGroup,
5030
+ Te as VoxLinkHub,
5031
+ re as VoxLinkHubItem,
5032
+ ae as VoxLoader,
5033
+ ke as VoxPagination,
5034
+ se as VoxQuote,
5035
+ H as VoxRadio,
5036
+ me as VoxRadioGroup,
5037
+ U as VoxSelect,
5038
+ _ as VoxSeriesNav,
5039
+ A as VoxSidenav,
5040
+ C as VoxSidenavGroup,
5041
+ X as VoxSidenavItem,
5042
+ P as VoxSponsor,
5043
+ Le as VoxSponsorTier,
5044
+ ie as VoxStat,
5045
+ q as VoxStep,
5046
+ Fe as VoxStepIndicator,
5047
+ ye as VoxSubnav,
5048
+ K as VoxSwitch,
5049
+ Q as VoxTab,
5050
+ W as VoxTabPanel,
5051
+ qe as VoxTabs,
5052
+ w as VoxTextarea,
5053
+ z as VoxThemeToggle,
5054
+ Re as VoxTimeline,
5055
+ ne as VoxTimelineItem,
5056
+ we as VoxToc,
5057
+ Y as VoxTocItem
4350
5058
  };