@openvoxproject/voxblocks 0.9.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 (97) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +66 -0
  3. package/dist/cdn/voxblocks.css +1 -0
  4. package/dist/cdn/voxblocks.js +5057 -0
  5. package/dist/types/components/accordion/vox-accordion.d.ts +32 -0
  6. package/dist/types/components/alert/vox-alert.d.ts +23 -0
  7. package/dist/types/components/avatar/vox-avatar.d.ts +18 -0
  8. package/dist/types/components/badge/vox-badge.d.ts +17 -0
  9. package/dist/types/components/billboard/vox-billboard.d.ts +22 -0
  10. package/dist/types/components/breadcrumbs/vox-breadcrumbs.d.ts +24 -0
  11. package/dist/types/components/button/vox-button.d.ts +24 -0
  12. package/dist/types/components/calendar-tile/vox-calendar-tile.d.ts +18 -0
  13. package/dist/types/components/callout/vox-callout.d.ts +20 -0
  14. package/dist/types/components/card/vox-card.d.ts +28 -0
  15. package/dist/types/components/checkbox/vox-checkbox.d.ts +20 -0
  16. package/dist/types/components/cta/vox-cta.d.ts +17 -0
  17. package/dist/types/components/cta-band/vox-cta-band.d.ts +22 -0
  18. package/dist/types/components/dialog/vox-dialog.d.ts +30 -0
  19. package/dist/types/components/disclosure/vox-disclosure.d.ts +19 -0
  20. package/dist/types/components/dropdown/vox-dropdown.d.ts +29 -0
  21. package/dist/types/components/empty-state/vox-empty-state.d.ts +18 -0
  22. package/dist/types/components/file-input/vox-file-input.d.ts +22 -0
  23. package/dist/types/components/footer/vox-footer.d.ts +28 -0
  24. package/dist/types/components/grid/vox-grid.d.ts +22 -0
  25. package/dist/types/components/header/vox-header.d.ts +23 -0
  26. package/dist/types/components/hero/vox-hero.d.ts +21 -0
  27. package/dist/types/components/input/vox-input.d.ts +24 -0
  28. package/dist/types/components/input-group/vox-input-group.d.ts +25 -0
  29. package/dist/types/components/link-hub/vox-link-hub.d.ts +27 -0
  30. package/dist/types/components/loader/vox-loader.d.ts +16 -0
  31. package/dist/types/components/pagination/vox-pagination.d.ts +25 -0
  32. package/dist/types/components/quote/vox-quote.d.ts +18 -0
  33. package/dist/types/components/radio/vox-radio-group.d.ts +23 -0
  34. package/dist/types/components/radio/vox-radio.d.ts +21 -0
  35. package/dist/types/components/select/vox-select.d.ts +27 -0
  36. package/dist/types/components/series-nav/vox-series-nav.d.ts +18 -0
  37. package/dist/types/components/sidenav/vox-sidenav.d.ts +50 -0
  38. package/dist/types/components/sponsor/vox-sponsor.d.ts +35 -0
  39. package/dist/types/components/stat/vox-stat.d.ts +17 -0
  40. package/dist/types/components/step-indicator/vox-step-indicator.d.ts +28 -0
  41. package/dist/types/components/subnav/vox-subnav.d.ts +18 -0
  42. package/dist/types/components/switch/vox-switch.d.ts +20 -0
  43. package/dist/types/components/tabs/vox-tabs.d.ts +57 -0
  44. package/dist/types/components/textarea/vox-textarea.d.ts +22 -0
  45. package/dist/types/components/theme-toggle/vox-theme-toggle.d.ts +35 -0
  46. package/dist/types/components/timeline/vox-timeline.d.ts +27 -0
  47. package/dist/types/index.d.ts +51 -0
  48. package/dist/types/internal/field.d.ts +27 -0
  49. package/dist/voxblocks.css +1 -0
  50. package/dist/voxblocks.js +4350 -0
  51. package/package.json +59 -0
  52. package/src/components/accordion/vox-accordion.ts +150 -0
  53. package/src/components/alert/vox-alert.ts +155 -0
  54. package/src/components/avatar/vox-avatar.ts +80 -0
  55. package/src/components/badge/vox-badge.ts +67 -0
  56. package/src/components/billboard/vox-billboard.ts +109 -0
  57. package/src/components/breadcrumbs/vox-breadcrumbs.ts +68 -0
  58. package/src/components/button/vox-button.ts +165 -0
  59. package/src/components/calendar-tile/vox-calendar-tile.ts +74 -0
  60. package/src/components/callout/vox-callout.ts +97 -0
  61. package/src/components/card/vox-card.ts +147 -0
  62. package/src/components/checkbox/vox-checkbox.ts +101 -0
  63. package/src/components/cta/vox-cta.ts +69 -0
  64. package/src/components/cta-band/vox-cta-band.ts +105 -0
  65. package/src/components/dialog/vox-dialog.ts +176 -0
  66. package/src/components/disclosure/vox-disclosure.ts +98 -0
  67. package/src/components/dropdown/vox-dropdown.ts +186 -0
  68. package/src/components/empty-state/vox-empty-state.ts +76 -0
  69. package/src/components/file-input/vox-file-input.ts +127 -0
  70. package/src/components/footer/vox-footer.ts +109 -0
  71. package/src/components/grid/vox-grid.ts +54 -0
  72. package/src/components/header/vox-header.ts +109 -0
  73. package/src/components/hero/vox-hero.ts +100 -0
  74. package/src/components/input/vox-input.ts +72 -0
  75. package/src/components/input-group/vox-input-group.ts +85 -0
  76. package/src/components/link-hub/vox-link-hub.ts +108 -0
  77. package/src/components/loader/vox-loader.ts +82 -0
  78. package/src/components/pagination/vox-pagination.ts +76 -0
  79. package/src/components/quote/vox-quote.ts +82 -0
  80. package/src/components/radio/vox-radio-group.ts +117 -0
  81. package/src/components/radio/vox-radio.ts +102 -0
  82. package/src/components/select/vox-select.ts +89 -0
  83. package/src/components/series-nav/vox-series-nav.ts +94 -0
  84. package/src/components/sidenav/vox-sidenav.ts +192 -0
  85. package/src/components/sponsor/vox-sponsor.ts +187 -0
  86. package/src/components/stat/vox-stat.ts +55 -0
  87. package/src/components/step-indicator/vox-step-indicator.ts +152 -0
  88. package/src/components/subnav/vox-subnav.ts +64 -0
  89. package/src/components/switch/vox-switch.ts +90 -0
  90. package/src/components/tabs/vox-tabs.ts +201 -0
  91. package/src/components/textarea/vox-textarea.ts +75 -0
  92. package/src/components/theme-toggle/vox-theme-toggle.ts +164 -0
  93. package/src/components/timeline/vox-timeline.ts +100 -0
  94. package/src/index.ts +65 -0
  95. package/src/internal/field.ts +165 -0
  96. package/src/styles/utilities.css +409 -0
  97. package/src/tokens/tokens.css +161 -0
@@ -0,0 +1,5057 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2019 Google LLC
4
+ * SPDX-License-Identifier: BSD-3-Clause
5
+ */
6
+ const Ne = globalThis, ut = Ne.ShadowRoot && (Ne.ShadyCSS === void 0 || Ne.ShadyCSS.nativeShadow) && "adoptedStyleSheets" in Document.prototype && "replace" in CSSStyleSheet.prototype, xt = Symbol(), Bt = /* @__PURE__ */ new WeakMap();
7
+ let Gt = class {
8
+ constructor(e, o, r) {
9
+ if (this._$cssResult$ = !0, r !== xt) throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");
10
+ this.cssText = e, this.t = o;
11
+ }
12
+ get styleSheet() {
13
+ let e = this.o;
14
+ const o = this.t;
15
+ if (ut && e === void 0) {
16
+ const r = o !== void 0 && o.length === 1;
17
+ r && (e = Bt.get(o)), e === void 0 && ((this.o = e = new CSSStyleSheet()).replaceSync(this.cssText), r && Bt.set(o, e));
18
+ }
19
+ return e;
20
+ }
21
+ toString() {
22
+ return this.cssText;
23
+ }
24
+ };
25
+ const po = (s) => new Gt(typeof s == "string" ? s : s + "", void 0, xt), c = (s, ...e) => {
26
+ const o = s.length === 1 ? s[0] : e.reduce((r, t, a) => r + ((i) => {
27
+ if (i._$cssResult$ === !0) return i.cssText;
28
+ if (typeof i == "number") return i;
29
+ throw Error("Value passed to 'css' function must be a 'css' function result: " + i + ". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.");
30
+ })(t) + s[a + 1], s[0]);
31
+ return new Gt(o, s, xt);
32
+ }, ho = (s, e) => {
33
+ if (ut) s.adoptedStyleSheets = e.map((o) => o instanceof CSSStyleSheet ? o : o.styleSheet);
34
+ else for (const o of e) {
35
+ const r = document.createElement("style"), t = Ne.litNonce;
36
+ t !== void 0 && r.setAttribute("nonce", t), r.textContent = o.cssText, s.appendChild(r);
37
+ }
38
+ }, Vt = ut ? (s) => s : (s) => s instanceof CSSStyleSheet ? ((e) => {
39
+ let o = "";
40
+ for (const r of e.cssRules) o += r.cssText;
41
+ return po(o);
42
+ })(s) : s;
43
+ /**
44
+ * @license
45
+ * Copyright 2017 Google LLC
46
+ * SPDX-License-Identifier: BSD-3-Clause
47
+ */
48
+ const { is: vo, defineProperty: uo, getOwnPropertyDescriptor: xo, getOwnPropertyNames: fo, getOwnPropertySymbols: go, getPrototypeOf: bo } = Object, P = globalThis, Nt = P.trustedTypes, mo = Nt ? Nt.emptyScript : "", rt = P.reactiveElementPolyfillSupport, Q = (s, e) => s, Re = { toAttribute(s, e) {
49
+ switch (e) {
50
+ case Boolean:
51
+ s = s ? mo : null;
52
+ break;
53
+ case Object:
54
+ case Array:
55
+ s = s == null ? s : JSON.stringify(s);
56
+ }
57
+ return s;
58
+ }, fromAttribute(s, e) {
59
+ let o = s;
60
+ switch (e) {
61
+ case Boolean:
62
+ o = s !== null;
63
+ break;
64
+ case Number:
65
+ o = s === null ? null : Number(s);
66
+ break;
67
+ case Object:
68
+ case Array:
69
+ try {
70
+ o = JSON.parse(s);
71
+ } catch {
72
+ o = null;
73
+ }
74
+ }
75
+ return o;
76
+ } }, ft = (s, e) => !vo(s, e), Rt = { attribute: !0, type: String, converter: Re, reflect: !1, useDefault: !1, hasChanged: ft };
77
+ Symbol.metadata ?? (Symbol.metadata = Symbol("metadata")), P.litPropertyMetadata ?? (P.litPropertyMetadata = /* @__PURE__ */ new WeakMap());
78
+ let q = class extends HTMLElement {
79
+ static addInitializer(e) {
80
+ this._$Ei(), (this.l ?? (this.l = [])).push(e);
81
+ }
82
+ static get observedAttributes() {
83
+ return this.finalize(), this._$Eh && [...this._$Eh.keys()];
84
+ }
85
+ static createProperty(e, o = Rt) {
86
+ if (o.state && (o.attribute = !1), this._$Ei(), this.prototype.hasOwnProperty(e) && ((o = Object.create(o)).wrapped = !0), this.elementProperties.set(e, o), !o.noAccessor) {
87
+ const r = Symbol(), t = this.getPropertyDescriptor(e, r, o);
88
+ t !== void 0 && uo(this.prototype, e, t);
89
+ }
90
+ }
91
+ static getPropertyDescriptor(e, o, r) {
92
+ const { get: t, set: a } = xo(this.prototype, e) ?? { get() {
93
+ return this[o];
94
+ }, set(i) {
95
+ this[o] = i;
96
+ } };
97
+ return { get: t, set(i) {
98
+ const v = t == null ? void 0 : t.call(this);
99
+ a == null || a.call(this, i), this.requestUpdate(e, v, r);
100
+ }, configurable: !0, enumerable: !0 };
101
+ }
102
+ static getPropertyOptions(e) {
103
+ return this.elementProperties.get(e) ?? Rt;
104
+ }
105
+ static _$Ei() {
106
+ if (this.hasOwnProperty(Q("elementProperties"))) return;
107
+ const e = bo(this);
108
+ e.finalize(), e.l !== void 0 && (this.l = [...e.l]), this.elementProperties = new Map(e.elementProperties);
109
+ }
110
+ static finalize() {
111
+ if (this.hasOwnProperty(Q("finalized"))) return;
112
+ if (this.finalized = !0, this._$Ei(), this.hasOwnProperty(Q("properties"))) {
113
+ const o = this.properties, r = [...fo(o), ...go(o)];
114
+ for (const t of r) this.createProperty(t, o[t]);
115
+ }
116
+ const e = this[Symbol.metadata];
117
+ if (e !== null) {
118
+ const o = litPropertyMetadata.get(e);
119
+ if (o !== void 0) for (const [r, t] of o) this.elementProperties.set(r, t);
120
+ }
121
+ this._$Eh = /* @__PURE__ */ new Map();
122
+ for (const [o, r] of this.elementProperties) {
123
+ const t = this._$Eu(o, r);
124
+ t !== void 0 && this._$Eh.set(t, o);
125
+ }
126
+ this.elementStyles = this.finalizeStyles(this.styles);
127
+ }
128
+ static finalizeStyles(e) {
129
+ const o = [];
130
+ if (Array.isArray(e)) {
131
+ const r = new Set(e.flat(1 / 0).reverse());
132
+ for (const t of r) o.unshift(Vt(t));
133
+ } else e !== void 0 && o.push(Vt(e));
134
+ return o;
135
+ }
136
+ static _$Eu(e, o) {
137
+ const r = o.attribute;
138
+ return r === !1 ? void 0 : typeof r == "string" ? r : typeof e == "string" ? e.toLowerCase() : void 0;
139
+ }
140
+ constructor() {
141
+ super(), this._$Ep = void 0, this.isUpdatePending = !1, this.hasUpdated = !1, this._$Em = null, this._$Ev();
142
+ }
143
+ _$Ev() {
144
+ var e;
145
+ this._$ES = new Promise((o) => this.enableUpdating = o), this._$AL = /* @__PURE__ */ new Map(), this._$E_(), this.requestUpdate(), (e = this.constructor.l) == null || e.forEach((o) => o(this));
146
+ }
147
+ addController(e) {
148
+ var o;
149
+ (this._$EO ?? (this._$EO = /* @__PURE__ */ new Set())).add(e), this.renderRoot !== void 0 && this.isConnected && ((o = e.hostConnected) == null || o.call(e));
150
+ }
151
+ removeController(e) {
152
+ var o;
153
+ (o = this._$EO) == null || o.delete(e);
154
+ }
155
+ _$E_() {
156
+ const e = /* @__PURE__ */ new Map(), o = this.constructor.elementProperties;
157
+ for (const r of o.keys()) this.hasOwnProperty(r) && (e.set(r, this[r]), delete this[r]);
158
+ e.size > 0 && (this._$Ep = e);
159
+ }
160
+ createRenderRoot() {
161
+ const e = this.shadowRoot ?? this.attachShadow(this.constructor.shadowRootOptions);
162
+ return ho(e, this.constructor.elementStyles), e;
163
+ }
164
+ connectedCallback() {
165
+ var e;
166
+ this.renderRoot ?? (this.renderRoot = this.createRenderRoot()), this.enableUpdating(!0), (e = this._$EO) == null || e.forEach((o) => {
167
+ var r;
168
+ return (r = o.hostConnected) == null ? void 0 : r.call(o);
169
+ });
170
+ }
171
+ enableUpdating(e) {
172
+ }
173
+ disconnectedCallback() {
174
+ var e;
175
+ (e = this._$EO) == null || e.forEach((o) => {
176
+ var r;
177
+ return (r = o.hostDisconnected) == null ? void 0 : r.call(o);
178
+ });
179
+ }
180
+ attributeChangedCallback(e, o, r) {
181
+ this._$AK(e, r);
182
+ }
183
+ _$ET(e, o) {
184
+ var a;
185
+ const r = this.constructor.elementProperties.get(e), t = this.constructor._$Eu(e, r);
186
+ if (t !== void 0 && r.reflect === !0) {
187
+ const i = (((a = r.converter) == null ? void 0 : a.toAttribute) !== void 0 ? r.converter : Re).toAttribute(o, r.type);
188
+ this._$Em = e, i == null ? this.removeAttribute(t) : this.setAttribute(t, i), this._$Em = null;
189
+ }
190
+ }
191
+ _$AK(e, o) {
192
+ var a, i;
193
+ const r = this.constructor, t = r._$Eh.get(e);
194
+ if (t !== void 0 && this._$Em !== t) {
195
+ const v = r.getPropertyOptions(t), h = typeof v.converter == "function" ? { fromAttribute: v.converter } : ((a = v.converter) == null ? void 0 : a.fromAttribute) !== void 0 ? v.converter : Re;
196
+ this._$Em = t;
197
+ const x = h.fromAttribute(o, v.type);
198
+ this[t] = x ?? ((i = this._$Ej) == null ? void 0 : i.get(t)) ?? x, this._$Em = null;
199
+ }
200
+ }
201
+ requestUpdate(e, o, r, t = !1, a) {
202
+ var i;
203
+ if (e !== void 0) {
204
+ const v = this.constructor;
205
+ if (t === !1 && (a = this[e]), r ?? (r = v.getPropertyOptions(e)), !((r.hasChanged ?? ft)(a, o) || r.useDefault && r.reflect && a === ((i = this._$Ej) == null ? void 0 : i.get(e)) && !this.hasAttribute(v._$Eu(e, r)))) return;
206
+ this.C(e, o, r);
207
+ }
208
+ this.isUpdatePending === !1 && (this._$ES = this._$EP());
209
+ }
210
+ C(e, o, { useDefault: r, reflect: t, wrapped: a }, i) {
211
+ r && !(this._$Ej ?? (this._$Ej = /* @__PURE__ */ new Map())).has(e) && (this._$Ej.set(e, i ?? o ?? this[e]), a !== !0 || i !== void 0) || (this._$AL.has(e) || (this.hasUpdated || r || (o = void 0), this._$AL.set(e, o)), t === !0 && this._$Em !== e && (this._$Eq ?? (this._$Eq = /* @__PURE__ */ new Set())).add(e));
212
+ }
213
+ async _$EP() {
214
+ this.isUpdatePending = !0;
215
+ try {
216
+ await this._$ES;
217
+ } catch (o) {
218
+ Promise.reject(o);
219
+ }
220
+ const e = this.scheduleUpdate();
221
+ return e != null && await e, !this.isUpdatePending;
222
+ }
223
+ scheduleUpdate() {
224
+ return this.performUpdate();
225
+ }
226
+ performUpdate() {
227
+ var r;
228
+ if (!this.isUpdatePending) return;
229
+ if (!this.hasUpdated) {
230
+ if (this.renderRoot ?? (this.renderRoot = this.createRenderRoot()), this._$Ep) {
231
+ for (const [a, i] of this._$Ep) this[a] = i;
232
+ this._$Ep = void 0;
233
+ }
234
+ const t = this.constructor.elementProperties;
235
+ if (t.size > 0) for (const [a, i] of t) {
236
+ const { wrapped: v } = i, h = this[a];
237
+ v !== !0 || this._$AL.has(a) || h === void 0 || this.C(a, void 0, i, h);
238
+ }
239
+ }
240
+ let e = !1;
241
+ const o = this._$AL;
242
+ try {
243
+ e = this.shouldUpdate(o), e ? (this.willUpdate(o), (r = this._$EO) == null || r.forEach((t) => {
244
+ var a;
245
+ return (a = t.hostUpdate) == null ? void 0 : a.call(t);
246
+ }), this.update(o)) : this._$EM();
247
+ } catch (t) {
248
+ throw e = !1, this._$EM(), t;
249
+ }
250
+ e && this._$AE(o);
251
+ }
252
+ willUpdate(e) {
253
+ }
254
+ _$AE(e) {
255
+ var o;
256
+ (o = this._$EO) == null || o.forEach((r) => {
257
+ var t;
258
+ return (t = r.hostUpdated) == null ? void 0 : t.call(r);
259
+ }), this.hasUpdated || (this.hasUpdated = !0, this.firstUpdated(e)), this.updated(e);
260
+ }
261
+ _$EM() {
262
+ this._$AL = /* @__PURE__ */ new Map(), this.isUpdatePending = !1;
263
+ }
264
+ get updateComplete() {
265
+ return this.getUpdateComplete();
266
+ }
267
+ getUpdateComplete() {
268
+ return this._$ES;
269
+ }
270
+ shouldUpdate(e) {
271
+ return !0;
272
+ }
273
+ update(e) {
274
+ this._$Eq && (this._$Eq = this._$Eq.forEach((o) => this._$ET(o, this[o]))), this._$EM();
275
+ }
276
+ updated(e) {
277
+ }
278
+ firstUpdated(e) {
279
+ }
280
+ };
281
+ q.elementStyles = [], q.shadowRootOptions = { mode: "open" }, q[Q("elementProperties")] = /* @__PURE__ */ new Map(), q[Q("finalized")] = /* @__PURE__ */ new Map(), rt == null || rt({ ReactiveElement: q }), (P.reactiveElementVersions ?? (P.reactiveElementVersions = [])).push("2.1.2");
282
+ /**
283
+ * @license
284
+ * Copyright 2017 Google LLC
285
+ * SPDX-License-Identifier: BSD-3-Clause
286
+ */
287
+ const ee = globalThis, Mt = (s) => s, Me = ee.trustedTypes, Ut = Me ? Me.createPolicy("lit-html", { createHTML: (s) => s }) : void 0, Xt = "$lit$", w = `lit$${Math.random().toFixed(9).slice(2)}$`, Yt = "?" + w, yo = `<${Yt}>`, D = document, te = () => D.createComment(""), oe = (s) => s === null || typeof s != "object" && typeof s != "function", gt = Array.isArray, $o = (s) => gt(s) || typeof (s == null ? void 0 : s[Symbol.iterator]) == "function", st = `[
288
+ \f\r]`, J = /<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g, Lt = /-->/g, qt = />/g, E = RegExp(`>|${st}(?:([^\\s"'>=/]+)(${st}*=${st}*(?:[^
289
+ \f\r"'\`<>=]|("|')|))|$)`, "g"), Ht = /'/g, It = /"/g, Zt = /^(?:script|style|textarea|title)$/i, _o = (s) => (e, ...o) => ({ _$litType$: s, strings: e, values: o }), l = _o(1), m = Symbol.for("lit-noChange"), u = Symbol.for("lit-nothing"), Ft = /* @__PURE__ */ new WeakMap(), j = D.createTreeWalker(D, 129);
290
+ function Jt(s, e) {
291
+ if (!gt(s) || !s.hasOwnProperty("raw")) throw Error("invalid template strings array");
292
+ return Ut !== void 0 ? Ut.createHTML(e) : e;
293
+ }
294
+ const wo = (s, e) => {
295
+ const o = s.length - 1, r = [];
296
+ let t, a = e === 2 ? "<svg>" : e === 3 ? "<math>" : "", i = J;
297
+ for (let v = 0; v < o; v++) {
298
+ const h = s[v];
299
+ let x, g, f = -1, y = 0;
300
+ for (; y < h.length && (i.lastIndex = y, g = i.exec(h), g !== null); ) y = i.lastIndex, i === J ? g[1] === "!--" ? i = Lt : g[1] !== void 0 ? i = qt : g[2] !== void 0 ? (Zt.test(g[2]) && (t = RegExp("</" + g[2], "g")), i = E) : g[3] !== void 0 && (i = E) : i === E ? g[0] === ">" ? (i = t ?? J, f = -1) : g[1] === void 0 ? f = -2 : (f = i.lastIndex - g[2].length, x = g[1], i = g[3] === void 0 ? E : g[3] === '"' ? It : Ht) : i === It || i === Ht ? i = E : i === Lt || i === qt ? i = J : (i = E, t = void 0);
301
+ const _ = i === E && s[v + 1].startsWith("/>") ? " " : "";
302
+ a += i === J ? h + yo : f >= 0 ? (r.push(x), h.slice(0, f) + Xt + h.slice(f) + w + _) : h + w + (f === -2 ? v : _);
303
+ }
304
+ return [Jt(s, a + (s[o] || "<?>") + (e === 2 ? "</svg>" : e === 3 ? "</math>" : "")), r];
305
+ };
306
+ class re {
307
+ constructor({ strings: e, _$litType$: o }, r) {
308
+ let t;
309
+ this.parts = [];
310
+ let a = 0, i = 0;
311
+ const v = e.length - 1, h = this.parts, [x, g] = wo(e, o);
312
+ if (this.el = re.createElement(x, r), j.currentNode = this.el.content, o === 2 || o === 3) {
313
+ const f = this.el.content.firstChild;
314
+ f.replaceWith(...f.childNodes);
315
+ }
316
+ for (; (t = j.nextNode()) !== null && h.length < v; ) {
317
+ if (t.nodeType === 1) {
318
+ if (t.hasAttributes()) for (const f of t.getAttributeNames()) if (f.endsWith(Xt)) {
319
+ const y = g[i++], _ = t.getAttribute(f).split(w), Be = /([.?@])?(.*)/.exec(y);
320
+ h.push({ type: 1, index: a, name: Be[2], strings: _, ctor: Be[1] === "." ? Oo : Be[1] === "?" ? Ao : Be[1] === "@" ? Co : Ye }), t.removeAttribute(f);
321
+ } else f.startsWith(w) && (h.push({ type: 6, index: a }), t.removeAttribute(f));
322
+ if (Zt.test(t.tagName)) {
323
+ const f = t.textContent.split(w), y = f.length - 1;
324
+ if (y > 0) {
325
+ t.textContent = Me ? Me.emptyScript : "";
326
+ for (let _ = 0; _ < y; _++) t.append(f[_], te()), j.nextNode(), h.push({ type: 2, index: ++a });
327
+ t.append(f[y], te());
328
+ }
329
+ }
330
+ } else if (t.nodeType === 8) if (t.data === Yt) h.push({ type: 2, index: a });
331
+ else {
332
+ let f = -1;
333
+ for (; (f = t.data.indexOf(w, f + 1)) !== -1; ) h.push({ type: 7, index: a }), f += w.length - 1;
334
+ }
335
+ a++;
336
+ }
337
+ }
338
+ static createElement(e, o) {
339
+ const r = D.createElement("template");
340
+ return r.innerHTML = e, r;
341
+ }
342
+ }
343
+ function H(s, e, o = s, r) {
344
+ var i, v;
345
+ if (e === m) return e;
346
+ let t = r !== void 0 ? (i = o._$Co) == null ? void 0 : i[r] : o._$Cl;
347
+ const a = oe(e) ? void 0 : e._$litDirective$;
348
+ return (t == null ? void 0 : t.constructor) !== a && ((v = t == null ? void 0 : t._$AO) == null || v.call(t, !1), a === void 0 ? t = void 0 : (t = new a(s), t._$AT(s, o, r)), r !== void 0 ? (o._$Co ?? (o._$Co = []))[r] = t : o._$Cl = t), t !== void 0 && (e = H(s, t._$AS(s, e.values), t, r)), e;
349
+ }
350
+ class Po {
351
+ constructor(e, o) {
352
+ this._$AV = [], this._$AN = void 0, this._$AD = e, this._$AM = o;
353
+ }
354
+ get parentNode() {
355
+ return this._$AM.parentNode;
356
+ }
357
+ get _$AU() {
358
+ return this._$AM._$AU;
359
+ }
360
+ u(e) {
361
+ const { el: { content: o }, parts: r } = this._$AD, t = ((e == null ? void 0 : e.creationScope) ?? D).importNode(o, !0);
362
+ j.currentNode = t;
363
+ let a = j.nextNode(), i = 0, v = 0, h = r[0];
364
+ for (; h !== void 0; ) {
365
+ if (i === h.index) {
366
+ let x;
367
+ h.type === 2 ? x = new Oe(a, a.nextSibling, this, e) : h.type === 1 ? x = new h.ctor(a, h.name, h.strings, this, e) : h.type === 6 && (x = new Eo(a, this, e)), this._$AV.push(x), h = r[++v];
368
+ }
369
+ i !== (h == null ? void 0 : h.index) && (a = j.nextNode(), i++);
370
+ }
371
+ return j.currentNode = D, t;
372
+ }
373
+ p(e) {
374
+ let o = 0;
375
+ for (const r of this._$AV) r !== void 0 && (r.strings !== void 0 ? (r._$AI(e, r, o), o += r.strings.length - 2) : r._$AI(e[o])), o++;
376
+ }
377
+ }
378
+ class Oe {
379
+ get _$AU() {
380
+ var e;
381
+ return ((e = this._$AM) == null ? void 0 : e._$AU) ?? this._$Cv;
382
+ }
383
+ constructor(e, o, r, t) {
384
+ this.type = 2, this._$AH = u, this._$AN = void 0, this._$AA = e, this._$AB = o, this._$AM = r, this.options = t, this._$Cv = (t == null ? void 0 : t.isConnected) ?? !0;
385
+ }
386
+ get parentNode() {
387
+ let e = this._$AA.parentNode;
388
+ const o = this._$AM;
389
+ return o !== void 0 && (e == null ? void 0 : e.nodeType) === 11 && (e = o.parentNode), e;
390
+ }
391
+ get startNode() {
392
+ return this._$AA;
393
+ }
394
+ get endNode() {
395
+ return this._$AB;
396
+ }
397
+ _$AI(e, o = this) {
398
+ e = H(this, e, o), oe(e) ? e === u || e == null || e === "" ? (this._$AH !== u && this._$AR(), this._$AH = u) : e !== this._$AH && e !== m && this._(e) : e._$litType$ !== void 0 ? this.$(e) : e.nodeType !== void 0 ? this.T(e) : $o(e) ? this.k(e) : this._(e);
399
+ }
400
+ O(e) {
401
+ return this._$AA.parentNode.insertBefore(e, this._$AB);
402
+ }
403
+ T(e) {
404
+ this._$AH !== e && (this._$AR(), this._$AH = this.O(e));
405
+ }
406
+ _(e) {
407
+ this._$AH !== u && oe(this._$AH) ? this._$AA.nextSibling.data = e : this.T(D.createTextNode(e)), this._$AH = e;
408
+ }
409
+ $(e) {
410
+ var a;
411
+ const { values: o, _$litType$: r } = e, t = typeof r == "number" ? this._$AC(e) : (r.el === void 0 && (r.el = re.createElement(Jt(r.h, r.h[0]), this.options)), r);
412
+ if (((a = this._$AH) == null ? void 0 : a._$AD) === t) this._$AH.p(o);
413
+ else {
414
+ const i = new Po(t, this), v = i.u(this.options);
415
+ i.p(o), this.T(v), this._$AH = i;
416
+ }
417
+ }
418
+ _$AC(e) {
419
+ let o = Ft.get(e.strings);
420
+ return o === void 0 && Ft.set(e.strings, o = new re(e)), o;
421
+ }
422
+ k(e) {
423
+ gt(this._$AH) || (this._$AH = [], this._$AR());
424
+ const o = this._$AH;
425
+ let r, t = 0;
426
+ for (const a of e) t === o.length ? o.push(r = new Oe(this.O(te()), this.O(te()), this, this.options)) : r = o[t], r._$AI(a), t++;
427
+ t < o.length && (this._$AR(r && r._$AB.nextSibling, t), o.length = t);
428
+ }
429
+ _$AR(e = this._$AA.nextSibling, o) {
430
+ var r;
431
+ for ((r = this._$AP) == null ? void 0 : r.call(this, !1, !0, o); e !== this._$AB; ) {
432
+ const t = Mt(e).nextSibling;
433
+ Mt(e).remove(), e = t;
434
+ }
435
+ }
436
+ setConnected(e) {
437
+ var o;
438
+ this._$AM === void 0 && (this._$Cv = e, (o = this._$AP) == null || o.call(this, e));
439
+ }
440
+ }
441
+ class Ye {
442
+ get tagName() {
443
+ return this.element.tagName;
444
+ }
445
+ get _$AU() {
446
+ return this._$AM._$AU;
447
+ }
448
+ constructor(e, o, r, t, a) {
449
+ this.type = 1, this._$AH = u, this._$AN = void 0, this.element = e, this.name = o, this._$AM = t, this.options = a, r.length > 2 || r[0] !== "" || r[1] !== "" ? (this._$AH = Array(r.length - 1).fill(new String()), this.strings = r) : this._$AH = u;
450
+ }
451
+ _$AI(e, o = this, r, t) {
452
+ const a = this.strings;
453
+ let i = !1;
454
+ if (a === void 0) e = H(this, e, o, 0), i = !oe(e) || e !== this._$AH && e !== m, i && (this._$AH = e);
455
+ else {
456
+ const v = e;
457
+ let h, x;
458
+ for (e = a[0], h = 0; h < a.length - 1; h++) x = H(this, v[r + h], o, h), x === m && (x = this._$AH[h]), i || (i = !oe(x) || x !== this._$AH[h]), x === u ? e = u : e !== u && (e += (x ?? "") + a[h + 1]), this._$AH[h] = x;
459
+ }
460
+ i && !t && this.j(e);
461
+ }
462
+ j(e) {
463
+ e === u ? this.element.removeAttribute(this.name) : this.element.setAttribute(this.name, e ?? "");
464
+ }
465
+ }
466
+ class Oo extends Ye {
467
+ constructor() {
468
+ super(...arguments), this.type = 3;
469
+ }
470
+ j(e) {
471
+ this.element[this.name] = e === u ? void 0 : e;
472
+ }
473
+ }
474
+ class Ao extends Ye {
475
+ constructor() {
476
+ super(...arguments), this.type = 4;
477
+ }
478
+ j(e) {
479
+ this.element.toggleAttribute(this.name, !!e && e !== u);
480
+ }
481
+ }
482
+ class Co extends Ye {
483
+ constructor(e, o, r, t, a) {
484
+ super(e, o, r, t, a), this.type = 5;
485
+ }
486
+ _$AI(e, o = this) {
487
+ if ((e = H(this, e, o, 0) ?? u) === m) return;
488
+ const r = this._$AH, t = e === u && r !== u || e.capture !== r.capture || e.once !== r.once || e.passive !== r.passive, a = e !== u && (r === u || t);
489
+ t && this.element.removeEventListener(this.name, this, r), a && this.element.addEventListener(this.name, this, e), this._$AH = e;
490
+ }
491
+ handleEvent(e) {
492
+ var o;
493
+ typeof this._$AH == "function" ? this._$AH.call(((o = this.options) == null ? void 0 : o.host) ?? this.element, e) : this._$AH.handleEvent(e);
494
+ }
495
+ }
496
+ class Eo {
497
+ constructor(e, o, r) {
498
+ this.element = e, this.type = 6, this._$AN = void 0, this._$AM = o, this.options = r;
499
+ }
500
+ get _$AU() {
501
+ return this._$AM._$AU;
502
+ }
503
+ _$AI(e) {
504
+ H(this, e);
505
+ }
506
+ }
507
+ const at = ee.litHtmlPolyfillSupport;
508
+ at == null || at(re, Oe), (ee.litHtmlVersions ?? (ee.litHtmlVersions = [])).push("3.3.3");
509
+ const So = (s, e, o) => {
510
+ const r = (o == null ? void 0 : o.renderBefore) ?? e;
511
+ let t = r._$litPart$;
512
+ if (t === void 0) {
513
+ const a = (o == null ? void 0 : o.renderBefore) ?? null;
514
+ r._$litPart$ = t = new Oe(e.insertBefore(te(), a), a, void 0, o ?? {});
515
+ }
516
+ return t._$AI(s), t;
517
+ };
518
+ /**
519
+ * @license
520
+ * Copyright 2017 Google LLC
521
+ * SPDX-License-Identifier: BSD-3-Clause
522
+ */
523
+ const k = globalThis;
524
+ let p = class extends q {
525
+ constructor() {
526
+ super(...arguments), this.renderOptions = { host: this }, this._$Do = void 0;
527
+ }
528
+ createRenderRoot() {
529
+ var o;
530
+ const e = super.createRenderRoot();
531
+ return (o = this.renderOptions).renderBefore ?? (o.renderBefore = e.firstChild), e;
532
+ }
533
+ update(e) {
534
+ const o = this.render();
535
+ this.hasUpdated || (this.renderOptions.isConnected = this.isConnected), super.update(e), this._$Do = So(o, this.renderRoot, this.renderOptions);
536
+ }
537
+ connectedCallback() {
538
+ var e;
539
+ super.connectedCallback(), (e = this._$Do) == null || e.setConnected(!0);
540
+ }
541
+ disconnectedCallback() {
542
+ var e;
543
+ super.disconnectedCallback(), (e = this._$Do) == null || e.setConnected(!1);
544
+ }
545
+ render() {
546
+ return m;
547
+ }
548
+ };
549
+ var Wt;
550
+ p._$litElement$ = !0, p.finalized = !0, (Wt = k.litElementHydrateSupport) == null || Wt.call(k, { LitElement: p });
551
+ const it = k.litElementPolyfillSupport;
552
+ it == null || it({ LitElement: p });
553
+ (k.litElementVersions ?? (k.litElementVersions = [])).push("4.2.2");
554
+ /**
555
+ * @license
556
+ * Copyright 2017 Google LLC
557
+ * SPDX-License-Identifier: BSD-3-Clause
558
+ */
559
+ const d = (s) => (e, o) => {
560
+ o !== void 0 ? o.addInitializer(() => {
561
+ customElements.define(s, e);
562
+ }) : customElements.define(s, e);
563
+ };
564
+ /**
565
+ * @license
566
+ * Copyright 2017 Google LLC
567
+ * SPDX-License-Identifier: BSD-3-Clause
568
+ */
569
+ const jo = { attribute: !0, type: String, converter: Re, reflect: !1, hasChanged: ft }, ko = (s = jo, e, o) => {
570
+ const { kind: r, metadata: t } = o;
571
+ let a = globalThis.litPropertyMetadata.get(t);
572
+ if (a === void 0 && globalThis.litPropertyMetadata.set(t, a = /* @__PURE__ */ new Map()), r === "setter" && ((s = Object.create(s)).wrapped = !0), a.set(o.name, s), r === "accessor") {
573
+ const { name: i } = o;
574
+ return { set(v) {
575
+ const h = e.get.call(this);
576
+ e.set.call(this, v), this.requestUpdate(i, h, s, !0, v);
577
+ }, init(v) {
578
+ return v !== void 0 && this.C(i, void 0, s, v), v;
579
+ } };
580
+ }
581
+ if (r === "setter") {
582
+ const { name: i } = o;
583
+ return function(v) {
584
+ const h = this[i];
585
+ e.call(this, v), this.requestUpdate(i, h, s, !0, v);
586
+ };
587
+ }
588
+ throw Error("Unsupported decorator location: " + r);
589
+ };
590
+ function n(s) {
591
+ return (e, o) => typeof o == "object" ? ko(s, e, o) : ((r, t, a) => {
592
+ const i = t.hasOwnProperty(a);
593
+ return t.constructor.createProperty(a, r), i ? Object.getOwnPropertyDescriptor(t, a) : void 0;
594
+ })(s, e, o);
595
+ }
596
+ /**
597
+ * @license
598
+ * Copyright 2017 Google LLC
599
+ * SPDX-License-Identifier: BSD-3-Clause
600
+ */
601
+ function Qt(s) {
602
+ return n({ ...s, state: !0, attribute: !1 });
603
+ }
604
+ /**
605
+ * @license
606
+ * Copyright 2017 Google LLC
607
+ * SPDX-License-Identifier: BSD-3-Clause
608
+ */
609
+ const Do = (s, e, o) => (o.configurable = !0, o.enumerable = !0, Reflect.decorate && typeof e != "object" && Object.defineProperty(s, e, o), o);
610
+ /**
611
+ * @license
612
+ * Copyright 2017 Google LLC
613
+ * SPDX-License-Identifier: BSD-3-Clause
614
+ */
615
+ function bt(s, e) {
616
+ return (o, r, t) => {
617
+ const a = (i) => {
618
+ var v;
619
+ return ((v = i.renderRoot) == null ? void 0 : v.querySelector(s)) ?? null;
620
+ };
621
+ return Do(o, r, { get() {
622
+ return a(this);
623
+ } });
624
+ };
625
+ }
626
+ /**
627
+ * @license
628
+ * Copyright 2017 Google LLC
629
+ * SPDX-License-Identifier: BSD-3-Clause
630
+ */
631
+ const S = { ATTRIBUTE: 1, PROPERTY: 3, BOOLEAN_ATTRIBUTE: 4 }, eo = (s) => (...e) => ({ _$litDirective$: s, values: e });
632
+ class to {
633
+ constructor(e) {
634
+ }
635
+ get _$AU() {
636
+ return this._$AM._$AU;
637
+ }
638
+ _$AT(e, o, r) {
639
+ this._$Ct = e, this._$AM = o, this._$Ci = r;
640
+ }
641
+ _$AS(e, o) {
642
+ return this.update(e, o);
643
+ }
644
+ update(e, o) {
645
+ return this.render(...o);
646
+ }
647
+ }
648
+ /**
649
+ * @license
650
+ * Copyright 2018 Google LLC
651
+ * SPDX-License-Identifier: BSD-3-Clause
652
+ */
653
+ const zo = eo(class extends to {
654
+ constructor(s) {
655
+ var e;
656
+ if (super(s), s.type !== S.ATTRIBUTE || s.name !== "class" || ((e = s.strings) == null ? void 0 : e.length) > 2) throw Error("`classMap()` can only be used in the `class` attribute and must be the only part in the attribute.");
657
+ }
658
+ render(s) {
659
+ return " " + Object.keys(s).filter((e) => s[e]).join(" ") + " ";
660
+ }
661
+ update(s, [e]) {
662
+ var r, t;
663
+ if (this.st === void 0) {
664
+ this.st = /* @__PURE__ */ new Set(), s.strings !== void 0 && (this.nt = new Set(s.strings.join(" ").split(/\s/).filter((a) => a !== "")));
665
+ for (const a in e) e[a] && !((r = this.nt) != null && r.has(a)) && this.st.add(a);
666
+ return this.render(e);
667
+ }
668
+ const o = s.element.classList;
669
+ for (const a of this.st) a in e || (o.remove(a), this.st.delete(a));
670
+ for (const a in e) {
671
+ const i = !!e[a];
672
+ i === this.st.has(a) || (t = this.nt) != null && t.has(a) || (i ? (o.add(a), this.st.add(a)) : (o.remove(a), this.st.delete(a)));
673
+ }
674
+ return m;
675
+ }
676
+ });
677
+ /**
678
+ * @license
679
+ * Copyright 2018 Google LLC
680
+ * SPDX-License-Identifier: BSD-3-Clause
681
+ */
682
+ const I = (s) => s ?? u;
683
+ var To = Object.defineProperty, Bo = Object.getOwnPropertyDescriptor, M = (s, e, o, r) => {
684
+ for (var t = r > 1 ? void 0 : r ? Bo(e, o) : e, a = s.length - 1, i; a >= 0; a--)
685
+ (i = s[a]) && (t = (r ? i(e, o, t) : i(t)) || t);
686
+ return r && t && To(e, o, t), t;
687
+ };
688
+ let $ = class extends p {
689
+ constructor() {
690
+ super(...arguments), this.variant = "brand", this.size = "md", this.type = "button", this.disabled = !1;
691
+ }
692
+ render() {
693
+ const s = zo({
694
+ button: !0,
695
+ [this.variant]: !0,
696
+ [this.size]: !0
697
+ });
698
+ return this.href !== void 0 && !this.disabled ? l`
699
+ <a
700
+ class=${s}
701
+ href=${this.href}
702
+ target=${I(this.target)}
703
+ rel=${I(this.target === "_blank" ? "noreferrer" : void 0)}
704
+ >
705
+ <slot></slot>
706
+ </a>
707
+ ` : l`
708
+ <button class=${s} type=${this.type} ?disabled=${this.disabled}>
709
+ <slot></slot>
710
+ </button>
711
+ `;
712
+ }
713
+ };
714
+ $.styles = c`
715
+ :host {
716
+ display: inline-block;
717
+ }
718
+
719
+ :host([disabled]) {
720
+ pointer-events: none;
721
+ }
722
+
723
+ .button {
724
+ display: inline-flex;
725
+ align-items: center;
726
+ justify-content: center;
727
+ gap: var(--vox-space-2);
728
+ border: 1px solid transparent;
729
+ border-radius: var(--vox-radius-full);
730
+ font-family: var(--vox-font-family-base);
731
+ font-weight: 600;
732
+ line-height: 1;
733
+ text-decoration: none;
734
+ cursor: pointer;
735
+ white-space: nowrap;
736
+ transition:
737
+ color var(--vox-transition-base),
738
+ background-color var(--vox-transition-base),
739
+ border-color var(--vox-transition-base);
740
+ }
741
+
742
+ .button:focus-visible {
743
+ outline: 2px solid var(--vox-color-brand-1);
744
+ outline-offset: 2px;
745
+ }
746
+
747
+ .button:disabled {
748
+ opacity: 0.5;
749
+ cursor: not-allowed;
750
+ }
751
+
752
+ .sm {
753
+ font-size: 12px;
754
+ padding: 0 var(--vox-space-3);
755
+ height: 28px;
756
+ }
757
+
758
+ .md {
759
+ font-size: 14px;
760
+ padding: 0 20px;
761
+ height: 38px;
762
+ }
763
+
764
+ .lg {
765
+ font-size: 16px;
766
+ padding: 0 var(--vox-space-6);
767
+ height: 48px;
768
+ }
769
+
770
+ .brand {
771
+ background-color: var(--vox-color-brand-3);
772
+ color: var(--vox-color-text-inverse);
773
+ }
774
+
775
+ .brand:hover:not(:disabled) {
776
+ background-color: var(--vox-color-brand-2);
777
+ }
778
+
779
+ .alt {
780
+ background-color: var(--vox-color-bg-soft);
781
+ color: var(--vox-color-text-1);
782
+ border-color: var(--vox-color-divider);
783
+ }
784
+
785
+ .alt:hover:not(:disabled) {
786
+ border-color: var(--vox-color-brand-1);
787
+ color: var(--vox-color-brand-1);
788
+ }
789
+
790
+ .danger {
791
+ background-color: var(--vox-color-danger-3);
792
+ color: var(--vox-color-text-inverse);
793
+ }
794
+
795
+ .danger:hover:not(:disabled) {
796
+ background-color: var(--vox-color-danger-2);
797
+ }
798
+
799
+ .ghost {
800
+ background-color: transparent;
801
+ color: var(--vox-color-brand-1);
802
+ }
803
+
804
+ .ghost:hover:not(:disabled) {
805
+ background-color: var(--vox-color-brand-soft);
806
+ }
807
+
808
+ /* Corner flattening when placed inside a <vox-input-group>. */
809
+ :host([data-vox-group]) .button {
810
+ height: 100%;
811
+ border-radius: 0;
812
+ }
813
+
814
+ :host([data-vox-group='start']) .button {
815
+ border-radius: var(--vox-radius-md) 0 0 var(--vox-radius-md);
816
+ }
817
+
818
+ :host([data-vox-group='end']) .button {
819
+ border-radius: 0 var(--vox-radius-md) var(--vox-radius-md) 0;
820
+ }
821
+ `;
822
+ M([
823
+ n()
824
+ ], $.prototype, "variant", 2);
825
+ M([
826
+ n()
827
+ ], $.prototype, "size", 2);
828
+ M([
829
+ n()
830
+ ], $.prototype, "href", 2);
831
+ M([
832
+ n()
833
+ ], $.prototype, "target", 2);
834
+ M([
835
+ n()
836
+ ], $.prototype, "type", 2);
837
+ M([
838
+ n({ type: Boolean, reflect: !0 })
839
+ ], $.prototype, "disabled", 2);
840
+ $ = M([
841
+ d("vox-button")
842
+ ], $);
843
+ var Vo = Object.defineProperty, No = Object.getOwnPropertyDescriptor, mt = (s, e, o, r) => {
844
+ for (var t = r > 1 ? void 0 : r ? No(e, o) : e, a = s.length - 1, i; a >= 0; a--)
845
+ (i = s[a]) && (t = (r ? i(e, o, t) : i(t)) || t);
846
+ return r && t && Vo(e, o, t), t;
847
+ };
848
+ let se = class extends p {
849
+ constructor() {
850
+ super(...arguments), this.href = "#";
851
+ }
852
+ render() {
853
+ return l`
854
+ <a href=${this.href} target=${this.target ?? ""}>
855
+ <slot></slot>
856
+ <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
857
+ <path d="M5 12h14" />
858
+ <path d="m13 6 6 6-6 6" />
859
+ </svg>
860
+ </a>
861
+ `;
862
+ }
863
+ };
864
+ se.styles = c`
865
+ :host {
866
+ display: inline-block;
867
+ font-family: var(--vox-font-family-base);
868
+ }
869
+
870
+ a {
871
+ display: inline-flex;
872
+ align-items: center;
873
+ gap: var(--vox-space-2);
874
+ color: var(--vox-color-brand-1);
875
+ font-size: 15px;
876
+ font-weight: 600;
877
+ text-decoration: none;
878
+ }
879
+
880
+ a:hover {
881
+ color: var(--vox-color-brand-2);
882
+ text-decoration: underline;
883
+ }
884
+
885
+ a:focus-visible {
886
+ outline: 2px solid var(--vox-color-brand-1);
887
+ outline-offset: 2px;
888
+ border-radius: var(--vox-radius-sm);
889
+ }
890
+
891
+ svg {
892
+ width: 16px;
893
+ height: 16px;
894
+ transition: transform var(--vox-transition-fast);
895
+ }
896
+
897
+ a:hover svg {
898
+ transform: translateX(3px);
899
+ }
900
+ `;
901
+ mt([
902
+ n()
903
+ ], se.prototype, "href", 2);
904
+ mt([
905
+ n()
906
+ ], se.prototype, "target", 2);
907
+ se = mt([
908
+ d("vox-cta")
909
+ ], se);
910
+ var Ro = Object.defineProperty, Mo = Object.getOwnPropertyDescriptor, Ze = (s, e, o, r) => {
911
+ for (var t = r > 1 ? void 0 : r ? Mo(e, o) : e, a = s.length - 1, i; a >= 0; a--)
912
+ (i = s[a]) && (t = (r ? i(e, o, t) : i(t)) || t);
913
+ return r && t && Ro(e, o, t), t;
914
+ };
915
+ const Kt = "vox-theme", Ve = "data-vox-theme";
916
+ let F = class extends p {
917
+ constructor() {
918
+ 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 = (s) => {
919
+ localStorage.getItem(Kt) || document.documentElement.setAttribute(Ve, s.matches ? "dark" : "light");
920
+ };
921
+ }
922
+ connectedCallback() {
923
+ super.connectedCallback(), this.syncFromDocument(), this.observer = new MutationObserver(() => this.syncFromDocument()), this.observer.observe(document.documentElement, {
924
+ attributes: !0,
925
+ attributeFilter: [Ve]
926
+ }), this.media.addEventListener("change", this.handleSystemChange);
927
+ }
928
+ disconnectedCallback() {
929
+ var s;
930
+ super.disconnectedCallback(), (s = this.observer) == null || s.disconnect(), this.media.removeEventListener("change", this.handleSystemChange);
931
+ }
932
+ syncFromDocument() {
933
+ const s = document.documentElement.getAttribute(Ve) === "dark";
934
+ this.dark = s, this.toggleAttribute("dark", s);
935
+ }
936
+ handleClick() {
937
+ const s = this.dark ? "light" : "dark";
938
+ document.documentElement.setAttribute(Ve, s), localStorage.setItem(Kt, s), this.dispatchEvent(
939
+ new CustomEvent("vox-theme-change", {
940
+ detail: { theme: s },
941
+ bubbles: !0,
942
+ composed: !0
943
+ })
944
+ );
945
+ }
946
+ render() {
947
+ const s = this.dark ? this.darkLabel : this.lightLabel;
948
+ return l`
949
+ <button
950
+ type="button"
951
+ role="switch"
952
+ aria-checked=${this.dark}
953
+ aria-label=${s}
954
+ title=${s}
955
+ @click=${this.handleClick}
956
+ >
957
+ <span class="track">
958
+ <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
959
+ <circle cx="12" cy="12" r="4" />
960
+ <path d="M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M6.34 17.66l-1.41 1.41M19.07 4.93l-1.41 1.41" />
961
+ </svg>
962
+ <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
963
+ <path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79Z" />
964
+ </svg>
965
+ <span class="thumb"></span>
966
+ </span>
967
+ </button>
968
+ `;
969
+ }
970
+ };
971
+ F.styles = c`
972
+ :host {
973
+ display: inline-flex;
974
+ }
975
+
976
+ button {
977
+ display: inline-flex;
978
+ align-items: center;
979
+ border: none;
980
+ background: none;
981
+ padding: 0;
982
+ cursor: pointer;
983
+ -webkit-tap-highlight-color: transparent;
984
+ }
985
+
986
+ button:focus-visible {
987
+ outline: 2px solid var(--vox-color-brand-1);
988
+ outline-offset: 2px;
989
+ border-radius: var(--vox-radius-full);
990
+ }
991
+
992
+ .track {
993
+ position: relative;
994
+ display: inline-flex;
995
+ align-items: center;
996
+ justify-content: space-between;
997
+ box-sizing: border-box;
998
+ width: 44px;
999
+ height: 24px;
1000
+ padding: 0 5px;
1001
+ border-radius: var(--vox-radius-full);
1002
+ background-color: var(--vox-color-bg-soft);
1003
+ border: 1px solid var(--vox-color-divider);
1004
+ }
1005
+
1006
+ .track svg {
1007
+ position: relative;
1008
+ width: 13px;
1009
+ height: 13px;
1010
+ flex: none;
1011
+ color: var(--vox-color-text-3);
1012
+ }
1013
+
1014
+ .thumb {
1015
+ position: absolute;
1016
+ top: 1px;
1017
+ left: 1px;
1018
+ width: 20px;
1019
+ height: 20px;
1020
+ border-radius: 50%;
1021
+ background-color: var(--vox-color-bg-elv);
1022
+ box-shadow: var(--vox-shadow-1);
1023
+ transition: transform var(--vox-transition-base);
1024
+ }
1025
+
1026
+ :host([dark]) .thumb {
1027
+ transform: translateX(20px);
1028
+ }
1029
+ `;
1030
+ Ze([
1031
+ n({ attribute: "light-label" })
1032
+ ], F.prototype, "lightLabel", 2);
1033
+ Ze([
1034
+ n({ attribute: "dark-label" })
1035
+ ], F.prototype, "darkLabel", 2);
1036
+ Ze([
1037
+ Qt()
1038
+ ], F.prototype, "dark", 2);
1039
+ F = Ze([
1040
+ d("vox-theme-toggle")
1041
+ ], F);
1042
+ var Uo = Object.defineProperty, Ae = (s, e, o, r) => {
1043
+ for (var t = void 0, a = s.length - 1, i; a >= 0; a--)
1044
+ (i = s[a]) && (t = i(e, o, t) || t);
1045
+ return t && Uo(e, o, t), t;
1046
+ };
1047
+ const Tt = class Tt extends p {
1048
+ constructor() {
1049
+ super(), this.name = "", this.label = "", this.note = "", this.disabled = !1, this.required = !1, this.internals = this.attachInternals();
1050
+ }
1051
+ get form() {
1052
+ return this.internals.form;
1053
+ }
1054
+ get validity() {
1055
+ return this.internals.validity;
1056
+ }
1057
+ get validationMessage() {
1058
+ return this.internals.validationMessage;
1059
+ }
1060
+ checkValidity() {
1061
+ return this.internals.checkValidity();
1062
+ }
1063
+ reportValidity() {
1064
+ return this.internals.reportValidity();
1065
+ }
1066
+ /** Mirror a native inner control's validity onto the host element. */
1067
+ syncValidity(e) {
1068
+ this.internals.setValidity(e.validity, e.validationMessage, e);
1069
+ }
1070
+ renderLabel(e) {
1071
+ return this.label ? l`
1072
+ <label class="label" for=${e}>
1073
+ ${this.label}${this.required ? l`<span class="required-mark" aria-hidden="true"> *</span>` : u}
1074
+ </label>
1075
+ ` : u;
1076
+ }
1077
+ renderNote() {
1078
+ return this.note ? l`<p class="note">${this.note}</p>` : u;
1079
+ }
1080
+ };
1081
+ Tt.formAssociated = !0;
1082
+ let b = Tt;
1083
+ Ae([
1084
+ n()
1085
+ ], b.prototype, "name");
1086
+ Ae([
1087
+ n()
1088
+ ], b.prototype, "label");
1089
+ Ae([
1090
+ n()
1091
+ ], b.prototype, "note");
1092
+ Ae([
1093
+ n({ type: Boolean, reflect: !0 })
1094
+ ], b.prototype, "disabled");
1095
+ Ae([
1096
+ n({ type: Boolean, reflect: !0 })
1097
+ ], b.prototype, "required");
1098
+ const Ce = c`
1099
+ :host {
1100
+ display: block;
1101
+ font-family: var(--vox-font-family-base);
1102
+ }
1103
+
1104
+ :host([disabled]) {
1105
+ opacity: 0.6;
1106
+ pointer-events: none;
1107
+ }
1108
+
1109
+ .field {
1110
+ display: flex;
1111
+ flex-direction: column;
1112
+ gap: var(--vox-space-1);
1113
+ }
1114
+
1115
+ .label {
1116
+ font-size: 14px;
1117
+ font-weight: 600;
1118
+ color: var(--vox-color-text-1);
1119
+ }
1120
+
1121
+ .required-mark {
1122
+ color: var(--vox-color-danger-1);
1123
+ }
1124
+
1125
+ .note {
1126
+ margin: 0;
1127
+ font-size: 12px;
1128
+ color: var(--vox-color-text-2);
1129
+ }
1130
+
1131
+ .control {
1132
+ box-sizing: border-box;
1133
+ width: 100%;
1134
+ background-color: var(--vox-color-bg);
1135
+ border: 1px solid var(--vox-color-border);
1136
+ border-radius: var(--vox-radius-md);
1137
+ color: var(--vox-color-text-1);
1138
+ font-family: inherit;
1139
+ font-size: 14px;
1140
+ line-height: 1.5;
1141
+ padding: var(--vox-space-2) var(--vox-space-3);
1142
+ transition:
1143
+ border-color var(--vox-transition-fast),
1144
+ box-shadow var(--vox-transition-fast);
1145
+ }
1146
+
1147
+ .control:focus {
1148
+ outline: none;
1149
+ border-color: var(--vox-color-brand-1);
1150
+ box-shadow: 0 0 0 3px var(--vox-color-brand-soft);
1151
+ }
1152
+
1153
+ /* Corner flattening when placed inside a <vox-input-group>. */
1154
+ :host([data-vox-group]) .control {
1155
+ border-radius: 0;
1156
+ }
1157
+
1158
+ :host([data-vox-group='start']) .control {
1159
+ border-radius: var(--vox-radius-md) 0 0 var(--vox-radius-md);
1160
+ }
1161
+
1162
+ :host([data-vox-group='end']) .control {
1163
+ border-radius: 0 var(--vox-radius-md) var(--vox-radius-md) 0;
1164
+ }
1165
+ `, oo = c`
1166
+ :host {
1167
+ display: block;
1168
+ font-family: var(--vox-font-family-base);
1169
+ }
1170
+
1171
+ :host([disabled]) {
1172
+ opacity: 0.6;
1173
+ pointer-events: none;
1174
+ }
1175
+
1176
+ .check {
1177
+ display: inline-flex;
1178
+ align-items: flex-start;
1179
+ gap: var(--vox-space-2);
1180
+ cursor: pointer;
1181
+ font-size: 14px;
1182
+ line-height: 1.5;
1183
+ color: var(--vox-color-text-1);
1184
+ }
1185
+
1186
+ input {
1187
+ position: absolute;
1188
+ width: 1px;
1189
+ height: 1px;
1190
+ opacity: 0;
1191
+ margin: 0;
1192
+ }
1193
+ `;
1194
+ var Lo = Object.defineProperty, qo = Object.getOwnPropertyDescriptor, yt = (s, e, o, r) => {
1195
+ for (var t = r > 1 ? void 0 : r ? qo(e, o) : e, a = s.length - 1, i; a >= 0; a--)
1196
+ (i = s[a]) && (t = (r ? i(e, o, t) : i(t)) || t);
1197
+ return r && t && Lo(e, o, t), t;
1198
+ };
1199
+ let ae = class extends b {
1200
+ constructor() {
1201
+ super(...arguments), this.checked = !1, this.value = "on";
1202
+ }
1203
+ formResetCallback() {
1204
+ this.checked = !1;
1205
+ }
1206
+ updated() {
1207
+ this.internals.setFormValue(this.checked ? this.value : null), this.internals.setValidity(
1208
+ this.required && !this.checked ? { valueMissing: !0 } : {},
1209
+ "Please check this box.",
1210
+ this.renderRoot.querySelector("input") ?? void 0
1211
+ );
1212
+ }
1213
+ handleChange(s) {
1214
+ this.checked = s.target.checked, this.dispatchEvent(new Event("change", { bubbles: !0 }));
1215
+ }
1216
+ render() {
1217
+ return l`
1218
+ <label class="check">
1219
+ <input
1220
+ type="checkbox"
1221
+ .checked=${this.checked}
1222
+ ?disabled=${this.disabled}
1223
+ @change=${this.handleChange}
1224
+ />
1225
+ <span class="box" aria-hidden="true">
1226
+ <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="4" stroke-linecap="round" stroke-linejoin="round">
1227
+ <path d="m4 12 5 5L20 6" />
1228
+ </svg>
1229
+ </span>
1230
+ <span class="text"><slot></slot></span>
1231
+ </label>
1232
+ `;
1233
+ }
1234
+ };
1235
+ ae.styles = [
1236
+ oo,
1237
+ c`
1238
+ .box {
1239
+ flex: none;
1240
+ display: flex;
1241
+ align-items: center;
1242
+ justify-content: center;
1243
+ width: 18px;
1244
+ height: 18px;
1245
+ margin-top: 2px;
1246
+ border: 1px solid var(--vox-color-border);
1247
+ border-radius: var(--vox-radius-sm);
1248
+ background-color: var(--vox-color-bg);
1249
+ color: var(--vox-color-text-inverse);
1250
+ transition:
1251
+ background-color var(--vox-transition-fast),
1252
+ border-color var(--vox-transition-fast);
1253
+ }
1254
+
1255
+ .box svg {
1256
+ width: 12px;
1257
+ height: 12px;
1258
+ opacity: 0;
1259
+ }
1260
+
1261
+ input:checked + .box {
1262
+ background-color: var(--vox-color-brand-3);
1263
+ border-color: var(--vox-color-brand-3);
1264
+ }
1265
+
1266
+ input:checked + .box svg {
1267
+ opacity: 1;
1268
+ }
1269
+
1270
+ input:focus-visible + .box {
1271
+ outline: 2px solid var(--vox-color-brand-1);
1272
+ outline-offset: 2px;
1273
+ }
1274
+ `
1275
+ ];
1276
+ yt([
1277
+ n({ type: Boolean, reflect: !0 })
1278
+ ], ae.prototype, "checked", 2);
1279
+ yt([
1280
+ n()
1281
+ ], ae.prototype, "value", 2);
1282
+ ae = yt([
1283
+ d("vox-checkbox")
1284
+ ], ae);
1285
+ var Ho = Object.defineProperty, Io = Object.getOwnPropertyDescriptor, Y = (s, e, o, r) => {
1286
+ for (var t = r > 1 ? void 0 : r ? Io(e, o) : e, a = s.length - 1, i; a >= 0; a--)
1287
+ (i = s[a]) && (t = (r ? i(e, o, t) : i(t)) || t);
1288
+ return r && t && Ho(e, o, t), t;
1289
+ };
1290
+ let O = class extends b {
1291
+ constructor() {
1292
+ super(...arguments), this.multiple = !1, this.buttonLabel = "Choose a file", this.fileNames = [];
1293
+ }
1294
+ formResetCallback() {
1295
+ this.fileNames = [], this.inputEl && (this.inputEl.value = ""), this.internals.setFormValue(null);
1296
+ }
1297
+ handleChange() {
1298
+ const s = [...this.inputEl.files ?? []];
1299
+ this.fileNames = s.map((o) => o.name);
1300
+ const e = new FormData();
1301
+ for (const o of s) e.append(this.name, o);
1302
+ this.internals.setFormValue(s.length > 0 ? e : null), this.internals.setValidity(
1303
+ this.required && s.length === 0 ? { valueMissing: !0 } : {},
1304
+ "Please select a file.",
1305
+ this.inputEl
1306
+ ), this.dispatchEvent(new Event("change", { bubbles: !0 }));
1307
+ }
1308
+ render() {
1309
+ return l`
1310
+ <div class="field">
1311
+ ${this.renderLabel("file")}
1312
+ <label>
1313
+ <input
1314
+ id="file"
1315
+ type="file"
1316
+ accept=${I(this.accept)}
1317
+ ?multiple=${this.multiple}
1318
+ ?disabled=${this.disabled}
1319
+ @change=${this.handleChange}
1320
+ />
1321
+ <span class="picker">
1322
+ <span class="button">${this.buttonLabel}</span>
1323
+ <span class="names">
1324
+ ${this.fileNames.length > 0 ? this.fileNames.join(", ") : "No file selected"}
1325
+ </span>
1326
+ </span>
1327
+ </label>
1328
+ ${this.renderNote()}
1329
+ </div>
1330
+ `;
1331
+ }
1332
+ };
1333
+ O.styles = [
1334
+ Ce,
1335
+ c`
1336
+ input {
1337
+ position: absolute;
1338
+ width: 1px;
1339
+ height: 1px;
1340
+ opacity: 0;
1341
+ }
1342
+
1343
+ .picker {
1344
+ display: flex;
1345
+ align-items: center;
1346
+ gap: var(--vox-space-3);
1347
+ flex-wrap: wrap;
1348
+ }
1349
+
1350
+ .button {
1351
+ display: inline-flex;
1352
+ align-items: center;
1353
+ padding: 0 var(--vox-space-4);
1354
+ height: 34px;
1355
+ background-color: var(--vox-color-bg-soft);
1356
+ border: 1px dashed var(--vox-color-border);
1357
+ border-radius: var(--vox-radius-md);
1358
+ color: var(--vox-color-text-1);
1359
+ font-size: 14px;
1360
+ font-weight: 600;
1361
+ cursor: pointer;
1362
+ transition:
1363
+ border-color var(--vox-transition-fast),
1364
+ color var(--vox-transition-fast);
1365
+ }
1366
+
1367
+ .button:hover {
1368
+ border-color: var(--vox-color-brand-1);
1369
+ color: var(--vox-color-brand-1);
1370
+ }
1371
+
1372
+ input:focus-visible ~ .picker .button {
1373
+ outline: 2px solid var(--vox-color-brand-1);
1374
+ outline-offset: 2px;
1375
+ }
1376
+
1377
+ .names {
1378
+ font-size: 13px;
1379
+ color: var(--vox-color-text-2);
1380
+ }
1381
+ `
1382
+ ];
1383
+ Y([
1384
+ n()
1385
+ ], O.prototype, "accept", 2);
1386
+ Y([
1387
+ n({ type: Boolean })
1388
+ ], O.prototype, "multiple", 2);
1389
+ Y([
1390
+ n({ attribute: "button-label" })
1391
+ ], O.prototype, "buttonLabel", 2);
1392
+ Y([
1393
+ Qt()
1394
+ ], O.prototype, "fileNames", 2);
1395
+ Y([
1396
+ bt("input")
1397
+ ], O.prototype, "inputEl", 2);
1398
+ O = Y([
1399
+ d("vox-file-input")
1400
+ ], O);
1401
+ /**
1402
+ * @license
1403
+ * Copyright 2020 Google LLC
1404
+ * SPDX-License-Identifier: BSD-3-Clause
1405
+ */
1406
+ const Fo = (s) => s.strings === void 0, Ko = {}, Wo = (s, e = Ko) => s._$AH = e;
1407
+ /**
1408
+ * @license
1409
+ * Copyright 2020 Google LLC
1410
+ * SPDX-License-Identifier: BSD-3-Clause
1411
+ */
1412
+ const ro = eo(class extends to {
1413
+ constructor(s) {
1414
+ if (super(s), s.type !== S.PROPERTY && s.type !== S.ATTRIBUTE && s.type !== S.BOOLEAN_ATTRIBUTE) throw Error("The `live` directive is not allowed on child or event bindings");
1415
+ if (!Fo(s)) throw Error("`live` bindings can only contain a single expression");
1416
+ }
1417
+ render(s) {
1418
+ return s;
1419
+ }
1420
+ update(s, [e]) {
1421
+ if (e === m || e === u) return e;
1422
+ const o = s.element, r = s.name;
1423
+ if (s.type === S.PROPERTY) {
1424
+ if (e === o[r]) return m;
1425
+ } else if (s.type === S.BOOLEAN_ATTRIBUTE) {
1426
+ if (!!e === o.hasAttribute(r)) return m;
1427
+ } else if (s.type === S.ATTRIBUTE && o.getAttribute(r) === e + "") return m;
1428
+ return Wo(s), e;
1429
+ }
1430
+ });
1431
+ var Go = Object.defineProperty, Xo = Object.getOwnPropertyDescriptor, Z = (s, e, o, r) => {
1432
+ for (var t = r > 1 ? void 0 : r ? Xo(e, o) : e, a = s.length - 1, i; a >= 0; a--)
1433
+ (i = s[a]) && (t = (r ? i(e, o, t) : i(t)) || t);
1434
+ return r && t && Go(e, o, t), t;
1435
+ };
1436
+ let A = class extends b {
1437
+ constructor() {
1438
+ super(...arguments), this.type = "text", this.value = "", this.readonly = !1;
1439
+ }
1440
+ formResetCallback() {
1441
+ this.value = "";
1442
+ }
1443
+ updated() {
1444
+ this.internals.setFormValue(this.value);
1445
+ const s = this.renderRoot.querySelector("input");
1446
+ s && this.syncValidity(s);
1447
+ }
1448
+ focus(s) {
1449
+ var e;
1450
+ (e = this.renderRoot.querySelector("input")) == null || e.focus(s);
1451
+ }
1452
+ handleInput(s) {
1453
+ this.value = s.target.value;
1454
+ }
1455
+ handleChange() {
1456
+ this.dispatchEvent(new Event("change", { bubbles: !0 }));
1457
+ }
1458
+ render() {
1459
+ return l`
1460
+ <div class="field">
1461
+ ${this.renderLabel("input")}
1462
+ <input
1463
+ id="input"
1464
+ class="control"
1465
+ type=${this.type}
1466
+ .value=${ro(this.value)}
1467
+ placeholder=${I(this.placeholder)}
1468
+ autocomplete=${I(this.autocomplete)}
1469
+ ?required=${this.required}
1470
+ ?readonly=${this.readonly}
1471
+ ?disabled=${this.disabled}
1472
+ aria-label=${this.label ? u : "text input"}
1473
+ @input=${this.handleInput}
1474
+ @change=${this.handleChange}
1475
+ />
1476
+ ${this.renderNote()}
1477
+ </div>
1478
+ `;
1479
+ }
1480
+ };
1481
+ A.styles = Ce;
1482
+ Z([
1483
+ n()
1484
+ ], A.prototype, "type", 2);
1485
+ Z([
1486
+ n()
1487
+ ], A.prototype, "value", 2);
1488
+ Z([
1489
+ n()
1490
+ ], A.prototype, "placeholder", 2);
1491
+ Z([
1492
+ n()
1493
+ ], A.prototype, "autocomplete", 2);
1494
+ Z([
1495
+ n({ type: Boolean, reflect: !0 })
1496
+ ], A.prototype, "readonly", 2);
1497
+ A = Z([
1498
+ d("vox-input")
1499
+ ], A);
1500
+ var Yo = Object.getOwnPropertyDescriptor, Zo = (s, e, o, r) => {
1501
+ for (var t = r > 1 ? void 0 : r ? Yo(e, o) : e, a = s.length - 1, i; a >= 0; a--)
1502
+ (i = s[a]) && (t = i(t) || t);
1503
+ return t;
1504
+ };
1505
+ let nt = class extends p {
1506
+ handleSlotChange(s) {
1507
+ const e = s.target.assignedElements();
1508
+ e.forEach((o, r) => {
1509
+ const t = r === 0 ? "start" : r === e.length - 1 ? "end" : "middle";
1510
+ o.setAttribute("data-vox-group", t);
1511
+ });
1512
+ }
1513
+ render() {
1514
+ return l`
1515
+ <div class="group" role="group">
1516
+ <slot @slotchange=${this.handleSlotChange}></slot>
1517
+ </div>
1518
+ `;
1519
+ }
1520
+ };
1521
+ nt.styles = c`
1522
+ :host {
1523
+ display: block;
1524
+ font-family: var(--vox-font-family-base);
1525
+ }
1526
+
1527
+ .group {
1528
+ display: flex;
1529
+ align-items: stretch;
1530
+ }
1531
+
1532
+ ::slotted(*) {
1533
+ flex: none;
1534
+ }
1535
+
1536
+ ::slotted(vox-input),
1537
+ ::slotted(vox-select) {
1538
+ flex: 1 1 auto;
1539
+ min-width: 0;
1540
+ }
1541
+
1542
+ ::slotted(span) {
1543
+ display: inline-flex;
1544
+ align-items: center;
1545
+ padding: 0 var(--vox-space-3);
1546
+ background-color: var(--vox-color-bg-soft);
1547
+ border: 1px solid var(--vox-color-border);
1548
+ color: var(--vox-color-text-2);
1549
+ font-size: 14px;
1550
+ white-space: nowrap;
1551
+ }
1552
+
1553
+ ::slotted(span[data-vox-group='start']) {
1554
+ border-radius: var(--vox-radius-md) 0 0 var(--vox-radius-md);
1555
+ border-right: none;
1556
+ }
1557
+
1558
+ ::slotted(span[data-vox-group='end']) {
1559
+ border-radius: 0 var(--vox-radius-md) var(--vox-radius-md) 0;
1560
+ border-left: none;
1561
+ }
1562
+ `;
1563
+ nt = Zo([
1564
+ d("vox-input-group")
1565
+ ], nt);
1566
+ var Jo = Object.defineProperty, Qo = Object.getOwnPropertyDescriptor, Je = (s, e, o, r) => {
1567
+ for (var t = r > 1 ? void 0 : r ? Qo(e, o) : e, a = s.length - 1, i; a >= 0; a--)
1568
+ (i = s[a]) && (t = (r ? i(e, o, t) : i(t)) || t);
1569
+ return r && t && Jo(e, o, t), t;
1570
+ };
1571
+ let K = class extends p {
1572
+ constructor() {
1573
+ super(...arguments), this.value = "", this.checked = !1, this.disabled = !1;
1574
+ }
1575
+ select() {
1576
+ this.disabled || this.dispatchEvent(
1577
+ new CustomEvent("vox-radio-select", { bubbles: !0, composed: !0 })
1578
+ );
1579
+ }
1580
+ handleKeydown(s) {
1581
+ (s.key === " " || s.key === "Enter") && (s.preventDefault(), this.select());
1582
+ }
1583
+ render() {
1584
+ return l`
1585
+ <span
1586
+ class="radio"
1587
+ role="radio"
1588
+ aria-checked=${this.checked ? "true" : "false"}
1589
+ aria-disabled=${this.disabled ? "true" : "false"}
1590
+ tabindex=${this.checked ? "0" : "-1"}
1591
+ @click=${this.select}
1592
+ @keydown=${this.handleKeydown}
1593
+ >
1594
+ <span class="circle" aria-hidden="true"></span>
1595
+ <span class="text"><slot></slot></span>
1596
+ </span>
1597
+ `;
1598
+ }
1599
+ };
1600
+ K.styles = c`
1601
+ :host {
1602
+ display: block;
1603
+ font-family: var(--vox-font-family-base);
1604
+ }
1605
+
1606
+ :host([disabled]) {
1607
+ opacity: 0.6;
1608
+ pointer-events: none;
1609
+ }
1610
+
1611
+ .radio {
1612
+ display: inline-flex;
1613
+ align-items: flex-start;
1614
+ gap: var(--vox-space-2);
1615
+ cursor: pointer;
1616
+ font-size: 14px;
1617
+ line-height: 1.5;
1618
+ color: var(--vox-color-text-1);
1619
+ }
1620
+
1621
+ .radio:focus {
1622
+ outline: none;
1623
+ }
1624
+
1625
+ .circle {
1626
+ flex: none;
1627
+ box-sizing: border-box;
1628
+ width: 18px;
1629
+ height: 18px;
1630
+ margin-top: 2px;
1631
+ border: 1px solid var(--vox-color-border);
1632
+ border-radius: 50%;
1633
+ background-color: var(--vox-color-bg);
1634
+ transition:
1635
+ border-color var(--vox-transition-fast),
1636
+ box-shadow var(--vox-transition-fast);
1637
+ }
1638
+
1639
+ :host([checked]) .circle {
1640
+ border-color: var(--vox-color-brand-3);
1641
+ border-width: 5px;
1642
+ }
1643
+
1644
+ .radio:focus-visible .circle {
1645
+ outline: 2px solid var(--vox-color-brand-1);
1646
+ outline-offset: 2px;
1647
+ }
1648
+ `;
1649
+ Je([
1650
+ n()
1651
+ ], K.prototype, "value", 2);
1652
+ Je([
1653
+ n({ type: Boolean, reflect: !0 })
1654
+ ], K.prototype, "checked", 2);
1655
+ Je([
1656
+ n({ type: Boolean, reflect: !0 })
1657
+ ], K.prototype, "disabled", 2);
1658
+ K = Je([
1659
+ d("vox-radio")
1660
+ ], K);
1661
+ var er = Object.defineProperty, tr = Object.getOwnPropertyDescriptor, so = (s, e, o, r) => {
1662
+ for (var t = r > 1 ? void 0 : r ? tr(e, o) : e, a = s.length - 1, i; a >= 0; a--)
1663
+ (i = s[a]) && (t = (r ? i(e, o, t) : i(t)) || t);
1664
+ return r && t && er(e, o, t), t;
1665
+ };
1666
+ let Ue = class extends b {
1667
+ constructor() {
1668
+ super(...arguments), this.value = "";
1669
+ }
1670
+ get radios() {
1671
+ return [...this.querySelectorAll("vox-radio")];
1672
+ }
1673
+ formResetCallback() {
1674
+ this.value = "";
1675
+ }
1676
+ updated() {
1677
+ this.internals.setFormValue(this.value || null), this.internals.setValidity(
1678
+ this.required && !this.value ? { valueMissing: !0 } : {},
1679
+ "Please select an option.",
1680
+ this
1681
+ ), this.syncRadios();
1682
+ }
1683
+ syncRadios() {
1684
+ const s = this.radios, e = s.some((o) => o.value === this.value && this.value !== "");
1685
+ s.forEach((o, r) => {
1686
+ var a, i;
1687
+ o.checked = this.value !== "" && o.value === this.value;
1688
+ const t = e ? o.checked : r === 0;
1689
+ (i = (a = o.shadowRoot) == null ? void 0 : a.querySelector(".radio")) == null || i.setAttribute("tabindex", t ? "0" : "-1");
1690
+ });
1691
+ }
1692
+ handleSelect(s) {
1693
+ const e = s.target;
1694
+ !(e instanceof HTMLElement) || e.tagName !== "VOX-RADIO" || (s.stopPropagation(), this.value !== e.value && (this.value = e.value, this.dispatchEvent(new Event("change", { bubbles: !0 }))));
1695
+ }
1696
+ handleKeydown(s) {
1697
+ var v, h;
1698
+ const o = {
1699
+ ArrowDown: 1,
1700
+ ArrowRight: 1,
1701
+ ArrowUp: -1,
1702
+ ArrowLeft: -1
1703
+ }[s.key];
1704
+ if (!o) return;
1705
+ s.preventDefault();
1706
+ const r = this.radios.filter((x) => !x.disabled);
1707
+ if (r.length === 0) return;
1708
+ const t = r.findIndex((x) => x.checked), a = (Math.max(t, 0) + o + r.length) % r.length, i = r[a];
1709
+ i.select(), (h = (v = i.shadowRoot) == null ? void 0 : v.querySelector(".radio")) == null || h.focus();
1710
+ }
1711
+ render() {
1712
+ return l`
1713
+ <div class="field" role="radiogroup" aria-label=${this.label}>
1714
+ ${this.label ? l`<span class="label">
1715
+ ${this.label}${this.required ? l`<span class="required-mark" aria-hidden="true"> *</span>` : ""}
1716
+ </span>` : ""}
1717
+ <div
1718
+ class="options"
1719
+ @vox-radio-select=${this.handleSelect}
1720
+ @keydown=${this.handleKeydown}
1721
+ >
1722
+ <slot @slotchange=${this.syncRadios}></slot>
1723
+ </div>
1724
+ ${this.renderNote()}
1725
+ </div>
1726
+ `;
1727
+ }
1728
+ };
1729
+ Ue.styles = [
1730
+ Ce,
1731
+ c`
1732
+ .options {
1733
+ display: flex;
1734
+ flex-direction: column;
1735
+ gap: var(--vox-space-2);
1736
+ margin-top: var(--vox-space-1);
1737
+ }
1738
+ `
1739
+ ];
1740
+ so([
1741
+ n()
1742
+ ], Ue.prototype, "value", 2);
1743
+ Ue = so([
1744
+ d("vox-radio-group")
1745
+ ], Ue);
1746
+ var or = Object.defineProperty, rr = Object.getOwnPropertyDescriptor, $t = (s, e, o, r) => {
1747
+ for (var t = r > 1 ? void 0 : r ? rr(e, o) : e, a = s.length - 1, i; a >= 0; a--)
1748
+ (i = s[a]) && (t = (r ? i(e, o, t) : i(t)) || t);
1749
+ return r && t && or(e, o, t), t;
1750
+ };
1751
+ let ie = class extends b {
1752
+ constructor() {
1753
+ super(...arguments), this.value = "";
1754
+ }
1755
+ formResetCallback() {
1756
+ this.value = "", this.syncOptions();
1757
+ }
1758
+ updated() {
1759
+ this.internals.setFormValue(this.value), this.selectEl && this.syncValidity(this.selectEl);
1760
+ }
1761
+ syncOptions() {
1762
+ if (!this.selectEl) return;
1763
+ const s = this.renderRoot.querySelector("slot");
1764
+ s && (this.selectEl.replaceChildren(
1765
+ ...s.assignedElements().filter((e) => e instanceof HTMLOptionElement || e instanceof HTMLOptGroupElement).map((e) => e.cloneNode(!0))
1766
+ ), this.value && (this.selectEl.value = this.value), this.value = this.selectEl.value);
1767
+ }
1768
+ handleChange() {
1769
+ this.value = this.selectEl.value, this.dispatchEvent(new Event("change", { bubbles: !0 }));
1770
+ }
1771
+ render() {
1772
+ return l`
1773
+ <div class="field">
1774
+ ${this.renderLabel("select")}
1775
+ <select
1776
+ id="select"
1777
+ class="control"
1778
+ ?required=${this.required}
1779
+ ?disabled=${this.disabled}
1780
+ @change=${this.handleChange}
1781
+ ></select>
1782
+ ${this.renderNote()}
1783
+ </div>
1784
+ <div hidden><slot @slotchange=${this.syncOptions}></slot></div>
1785
+ `;
1786
+ }
1787
+ };
1788
+ ie.styles = [
1789
+ Ce,
1790
+ c`
1791
+ select.control {
1792
+ appearance: none;
1793
+ padding-right: var(--vox-space-8);
1794
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23808080' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
1795
+ background-repeat: no-repeat;
1796
+ background-position: right var(--vox-space-3) center;
1797
+ cursor: pointer;
1798
+ }
1799
+ `
1800
+ ];
1801
+ $t([
1802
+ n()
1803
+ ], ie.prototype, "value", 2);
1804
+ $t([
1805
+ bt("select")
1806
+ ], ie.prototype, "selectEl", 2);
1807
+ ie = $t([
1808
+ d("vox-select")
1809
+ ], ie);
1810
+ var sr = Object.defineProperty, ar = Object.getOwnPropertyDescriptor, _t = (s, e, o, r) => {
1811
+ for (var t = r > 1 ? void 0 : r ? ar(e, o) : e, a = s.length - 1, i; a >= 0; a--)
1812
+ (i = s[a]) && (t = (r ? i(e, o, t) : i(t)) || t);
1813
+ return r && t && sr(e, o, t), t;
1814
+ };
1815
+ let ne = class extends b {
1816
+ constructor() {
1817
+ super(...arguments), this.checked = !1, this.value = "on";
1818
+ }
1819
+ formResetCallback() {
1820
+ this.checked = !1;
1821
+ }
1822
+ updated() {
1823
+ this.internals.setFormValue(this.checked ? this.value : null);
1824
+ }
1825
+ handleChange(s) {
1826
+ this.checked = s.target.checked, this.dispatchEvent(new Event("change", { bubbles: !0 }));
1827
+ }
1828
+ render() {
1829
+ return l`
1830
+ <label class="check">
1831
+ <input
1832
+ type="checkbox"
1833
+ role="switch"
1834
+ .checked=${this.checked}
1835
+ ?disabled=${this.disabled}
1836
+ @change=${this.handleChange}
1837
+ />
1838
+ <span class="track" aria-hidden="true"></span>
1839
+ <span class="text"><slot></slot></span>
1840
+ </label>
1841
+ `;
1842
+ }
1843
+ };
1844
+ ne.styles = [
1845
+ oo,
1846
+ c`
1847
+ .track {
1848
+ flex: none;
1849
+ position: relative;
1850
+ width: 36px;
1851
+ height: 20px;
1852
+ margin-top: 1px;
1853
+ border-radius: var(--vox-radius-full);
1854
+ background-color: var(--vox-color-border);
1855
+ transition: background-color var(--vox-transition-fast);
1856
+ }
1857
+
1858
+ .track::after {
1859
+ content: '';
1860
+ position: absolute;
1861
+ top: 2px;
1862
+ left: 2px;
1863
+ width: 16px;
1864
+ height: 16px;
1865
+ border-radius: 50%;
1866
+ background-color: var(--vox-color-bg);
1867
+ transition: transform var(--vox-transition-fast);
1868
+ }
1869
+
1870
+ input:checked + .track {
1871
+ background-color: var(--vox-color-brand-3);
1872
+ }
1873
+
1874
+ input:checked + .track::after {
1875
+ transform: translateX(16px);
1876
+ }
1877
+
1878
+ input:focus-visible + .track {
1879
+ outline: 2px solid var(--vox-color-brand-1);
1880
+ outline-offset: 2px;
1881
+ }
1882
+ `
1883
+ ];
1884
+ _t([
1885
+ n({ type: Boolean, reflect: !0 })
1886
+ ], ne.prototype, "checked", 2);
1887
+ _t([
1888
+ n()
1889
+ ], ne.prototype, "value", 2);
1890
+ ne = _t([
1891
+ d("vox-switch")
1892
+ ], ne);
1893
+ var ir = Object.defineProperty, nr = Object.getOwnPropertyDescriptor, Ee = (s, e, o, r) => {
1894
+ for (var t = r > 1 ? void 0 : r ? nr(e, o) : e, a = s.length - 1, i; a >= 0; a--)
1895
+ (i = s[a]) && (t = (r ? i(e, o, t) : i(t)) || t);
1896
+ return r && t && ir(e, o, t), t;
1897
+ };
1898
+ let z = class extends b {
1899
+ constructor() {
1900
+ super(...arguments), this.value = "", this.rows = 4, this.readonly = !1;
1901
+ }
1902
+ formResetCallback() {
1903
+ this.value = "";
1904
+ }
1905
+ updated() {
1906
+ this.internals.setFormValue(this.value);
1907
+ const s = this.renderRoot.querySelector("textarea");
1908
+ s && this.syncValidity(s);
1909
+ }
1910
+ focus(s) {
1911
+ var e;
1912
+ (e = this.renderRoot.querySelector("textarea")) == null || e.focus(s);
1913
+ }
1914
+ handleInput(s) {
1915
+ this.value = s.target.value;
1916
+ }
1917
+ handleChange() {
1918
+ this.dispatchEvent(new Event("change", { bubbles: !0 }));
1919
+ }
1920
+ render() {
1921
+ return l`
1922
+ <div class="field">
1923
+ ${this.renderLabel("textarea")}
1924
+ <textarea
1925
+ id="textarea"
1926
+ class="control"
1927
+ rows=${this.rows}
1928
+ .value=${ro(this.value)}
1929
+ placeholder=${I(this.placeholder)}
1930
+ ?required=${this.required}
1931
+ ?readonly=${this.readonly}
1932
+ ?disabled=${this.disabled}
1933
+ @input=${this.handleInput}
1934
+ @change=${this.handleChange}
1935
+ ></textarea>
1936
+ ${this.renderNote()}
1937
+ </div>
1938
+ `;
1939
+ }
1940
+ };
1941
+ z.styles = [
1942
+ Ce,
1943
+ c`
1944
+ textarea.control {
1945
+ resize: vertical;
1946
+ min-height: 4em;
1947
+ }
1948
+ `
1949
+ ];
1950
+ Ee([
1951
+ n()
1952
+ ], z.prototype, "value", 2);
1953
+ Ee([
1954
+ n()
1955
+ ], z.prototype, "placeholder", 2);
1956
+ Ee([
1957
+ n({ type: Number })
1958
+ ], z.prototype, "rows", 2);
1959
+ Ee([
1960
+ n({ type: Boolean, reflect: !0 })
1961
+ ], z.prototype, "readonly", 2);
1962
+ z = Ee([
1963
+ d("vox-textarea")
1964
+ ], z);
1965
+ var lr = Object.defineProperty, cr = Object.getOwnPropertyDescriptor, Se = (s, e, o, r) => {
1966
+ for (var t = r > 1 ? void 0 : r ? cr(e, o) : e, a = s.length - 1, i; a >= 0; a--)
1967
+ (i = s[a]) && (t = (r ? i(e, o, t) : i(t)) || t);
1968
+ return r && t && lr(e, o, t), t;
1969
+ };
1970
+ let T = class extends p {
1971
+ constructor() {
1972
+ super(...arguments), this.alt = "", this.initials = "", this.size = "md";
1973
+ }
1974
+ render() {
1975
+ return l`
1976
+ <span class="avatar" role=${this.src ? "presentation" : "img"} aria-label=${this.alt}>
1977
+ ${this.src ? l`<img src=${this.src} alt=${this.alt} />` : this.initials}
1978
+ </span>
1979
+ `;
1980
+ }
1981
+ };
1982
+ T.styles = c`
1983
+ :host {
1984
+ display: inline-block;
1985
+ }
1986
+
1987
+ .avatar {
1988
+ display: flex;
1989
+ align-items: center;
1990
+ justify-content: center;
1991
+ overflow: hidden;
1992
+ border-radius: 50%;
1993
+ background-color: var(--vox-color-brand-soft);
1994
+ color: var(--vox-color-brand-1);
1995
+ font-family: var(--vox-font-family-base);
1996
+ font-weight: 600;
1997
+ user-select: none;
1998
+ }
1999
+
2000
+ img {
2001
+ width: 100%;
2002
+ height: 100%;
2003
+ object-fit: cover;
2004
+ }
2005
+
2006
+ :host([size='sm']) .avatar {
2007
+ width: 28px;
2008
+ height: 28px;
2009
+ font-size: 11px;
2010
+ }
2011
+
2012
+ :host([size='md']) .avatar {
2013
+ width: 40px;
2014
+ height: 40px;
2015
+ font-size: 14px;
2016
+ }
2017
+
2018
+ :host([size='lg']) .avatar {
2019
+ width: 56px;
2020
+ height: 56px;
2021
+ font-size: 20px;
2022
+ }
2023
+
2024
+ :host([size='xl']) .avatar {
2025
+ width: 80px;
2026
+ height: 80px;
2027
+ font-size: 28px;
2028
+ }
2029
+ `;
2030
+ Se([
2031
+ n()
2032
+ ], T.prototype, "src", 2);
2033
+ Se([
2034
+ n()
2035
+ ], T.prototype, "alt", 2);
2036
+ Se([
2037
+ n()
2038
+ ], T.prototype, "initials", 2);
2039
+ Se([
2040
+ n({ reflect: !0 })
2041
+ ], T.prototype, "size", 2);
2042
+ T = Se([
2043
+ d("vox-avatar")
2044
+ ], T);
2045
+ var dr = Object.defineProperty, pr = Object.getOwnPropertyDescriptor, wt = (s, e, o, r) => {
2046
+ for (var t = r > 1 ? void 0 : r ? pr(e, o) : e, a = s.length - 1, i; a >= 0; a--)
2047
+ (i = s[a]) && (t = (r ? i(e, o, t) : i(t)) || t);
2048
+ return r && t && dr(e, o, t), t;
2049
+ };
2050
+ let le = class extends p {
2051
+ constructor() {
2052
+ super(...arguments), this.heading = "", this.reverse = !1, this.hasActions = !1;
2053
+ }
2054
+ handleActionsSlotChange(s) {
2055
+ const e = s.target;
2056
+ this.hasActions = e.assignedNodes({ flatten: !0 }).length > 0, this.requestUpdate();
2057
+ }
2058
+ render() {
2059
+ return l`
2060
+ <div class="billboard">
2061
+ <div class="media"><slot name="media"></slot></div>
2062
+ <div class="content">
2063
+ <h2 class="heading">${this.heading}</h2>
2064
+ <div class="body"><slot></slot></div>
2065
+ <div class="actions ${this.hasActions ? "has-content" : ""}">
2066
+ <slot name="actions" @slotchange=${this.handleActionsSlotChange}></slot>
2067
+ </div>
2068
+ </div>
2069
+ </div>
2070
+ `;
2071
+ }
2072
+ };
2073
+ le.styles = c`
2074
+ :host {
2075
+ display: block;
2076
+ font-family: var(--vox-font-family-base);
2077
+ }
2078
+
2079
+ .billboard {
2080
+ display: flex;
2081
+ gap: var(--vox-space-8);
2082
+ align-items: center;
2083
+ flex-wrap: wrap;
2084
+ padding: var(--vox-space-8);
2085
+ background-color: var(--vox-color-bg-soft);
2086
+ border-radius: var(--vox-radius-lg);
2087
+ }
2088
+
2089
+ :host([reverse]) .billboard {
2090
+ flex-direction: row-reverse;
2091
+ }
2092
+
2093
+ .media {
2094
+ flex: 1 1 280px;
2095
+ min-width: 0;
2096
+ }
2097
+
2098
+ .media ::slotted(img) {
2099
+ display: block;
2100
+ max-width: 100%;
2101
+ border-radius: var(--vox-radius-md);
2102
+ }
2103
+
2104
+ .content {
2105
+ flex: 1 1 320px;
2106
+ min-width: 0;
2107
+ }
2108
+
2109
+ .heading {
2110
+ margin: 0 0 var(--vox-space-3);
2111
+ font-family: var(--vox-font-family-display);
2112
+ font-size: 28px;
2113
+ font-weight: 600;
2114
+ line-height: 1.3;
2115
+ color: var(--vox-color-text-1);
2116
+ }
2117
+
2118
+ .body {
2119
+ font-size: 16px;
2120
+ line-height: 1.7;
2121
+ color: var(--vox-color-text-2);
2122
+ }
2123
+
2124
+ .actions {
2125
+ display: flex;
2126
+ gap: var(--vox-space-3);
2127
+ flex-wrap: wrap;
2128
+ margin-top: var(--vox-space-6);
2129
+ }
2130
+
2131
+ .actions:not(.has-content) {
2132
+ display: none;
2133
+ }
2134
+ `;
2135
+ wt([
2136
+ n()
2137
+ ], le.prototype, "heading", 2);
2138
+ wt([
2139
+ n({ type: Boolean, reflect: !0 })
2140
+ ], le.prototype, "reverse", 2);
2141
+ le = wt([
2142
+ d("vox-billboard")
2143
+ ], le);
2144
+ var hr = Object.getOwnPropertyDescriptor, vr = (s, e, o, r) => {
2145
+ for (var t = r > 1 ? void 0 : r ? hr(e, o) : e, a = s.length - 1, i; a >= 0; a--)
2146
+ (i = s[a]) && (t = i(t) || t);
2147
+ return t;
2148
+ };
2149
+ let lt = class extends p {
2150
+ render() {
2151
+ return l`
2152
+ <nav aria-label="Breadcrumbs">
2153
+ <slot></slot>
2154
+ </nav>
2155
+ `;
2156
+ }
2157
+ };
2158
+ lt.styles = c`
2159
+ :host {
2160
+ display: block;
2161
+ font-family: var(--vox-font-family-base);
2162
+ }
2163
+
2164
+ nav {
2165
+ display: flex;
2166
+ align-items: center;
2167
+ flex-wrap: wrap;
2168
+ font-size: 13px;
2169
+ }
2170
+
2171
+ ::slotted(*) {
2172
+ color: var(--vox-color-text-2);
2173
+ text-decoration: none;
2174
+ }
2175
+
2176
+ ::slotted(a:hover) {
2177
+ color: var(--vox-color-brand-1);
2178
+ text-decoration: underline;
2179
+ }
2180
+
2181
+ ::slotted([aria-current='page']) {
2182
+ color: var(--vox-color-text-1);
2183
+ font-weight: 600;
2184
+ }
2185
+
2186
+ ::slotted(*:not(:first-child))::before {
2187
+ content: '/';
2188
+ margin: 0 var(--vox-space-2);
2189
+ color: var(--vox-color-text-3);
2190
+ }
2191
+ `;
2192
+ lt = vr([
2193
+ d("vox-breadcrumbs")
2194
+ ], lt);
2195
+ var ur = Object.defineProperty, xr = Object.getOwnPropertyDescriptor, Pt = (s, e, o, r) => {
2196
+ for (var t = r > 1 ? void 0 : r ? xr(e, o) : e, a = s.length - 1, i; a >= 0; a--)
2197
+ (i = s[a]) && (t = (r ? i(e, o, t) : i(t)) || t);
2198
+ return r && t && ur(e, o, t), t;
2199
+ };
2200
+ let ce = class extends p {
2201
+ constructor() {
2202
+ super(...arguments), this.siteTitle = "", this.href = "/";
2203
+ }
2204
+ render() {
2205
+ return l`
2206
+ <header class="header">
2207
+ <a class="brand" href=${this.href}>
2208
+ <slot name="logo"></slot>
2209
+ ${this.siteTitle ? l`<span>${this.siteTitle}</span>` : u}
2210
+ </a>
2211
+ <nav aria-label="Main">
2212
+ <slot></slot>
2213
+ </nav>
2214
+ <div class="actions">
2215
+ <slot name="actions"></slot>
2216
+ </div>
2217
+ </header>
2218
+ `;
2219
+ }
2220
+ };
2221
+ ce.styles = c`
2222
+ :host {
2223
+ display: block;
2224
+ font-family: var(--vox-font-family-base);
2225
+ background-color: var(--vox-color-bg);
2226
+ border-bottom: 1px solid var(--vox-color-divider);
2227
+ }
2228
+
2229
+ .header {
2230
+ display: flex;
2231
+ align-items: center;
2232
+ gap: var(--vox-space-6);
2233
+ flex-wrap: wrap;
2234
+ max-width: 1280px;
2235
+ margin: 0 auto;
2236
+ padding: var(--vox-space-3) var(--vox-space-6);
2237
+ }
2238
+
2239
+ .brand {
2240
+ display: inline-flex;
2241
+ align-items: center;
2242
+ gap: var(--vox-space-2);
2243
+ color: var(--vox-color-text-1);
2244
+ font-size: 16px;
2245
+ font-weight: 700;
2246
+ text-decoration: none;
2247
+ }
2248
+
2249
+ .brand ::slotted(img),
2250
+ .brand ::slotted(svg) {
2251
+ height: 28px;
2252
+ width: auto;
2253
+ }
2254
+
2255
+ nav {
2256
+ display: flex;
2257
+ align-items: center;
2258
+ gap: var(--vox-space-4);
2259
+ flex-wrap: wrap;
2260
+ flex: 1 1 auto;
2261
+ }
2262
+
2263
+ nav ::slotted(a) {
2264
+ color: var(--vox-color-text-2);
2265
+ font-size: 14px;
2266
+ font-weight: 500;
2267
+ text-decoration: none;
2268
+ transition: color var(--vox-transition-fast);
2269
+ }
2270
+
2271
+ nav ::slotted(a:hover) {
2272
+ color: var(--vox-color-brand-1);
2273
+ }
2274
+
2275
+ nav ::slotted(a[aria-current='page']) {
2276
+ color: var(--vox-color-brand-1);
2277
+ font-weight: 600;
2278
+ }
2279
+
2280
+ .actions {
2281
+ display: flex;
2282
+ align-items: center;
2283
+ gap: var(--vox-space-3);
2284
+ }
2285
+ `;
2286
+ Pt([
2287
+ n({ attribute: "site-title" })
2288
+ ], ce.prototype, "siteTitle", 2);
2289
+ Pt([
2290
+ n()
2291
+ ], ce.prototype, "href", 2);
2292
+ ce = Pt([
2293
+ d("vox-header")
2294
+ ], ce);
2295
+ var fr = Object.defineProperty, gr = Object.getOwnPropertyDescriptor, je = (s, e, o, r) => {
2296
+ for (var t = r > 1 ? void 0 : r ? gr(e, o) : e, a = s.length - 1, i; a >= 0; a--)
2297
+ (i = s[a]) && (t = (r ? i(e, o, t) : i(t)) || t);
2298
+ return r && t && fr(e, o, t), t;
2299
+ };
2300
+ let B = class extends p {
2301
+ constructor() {
2302
+ super(...arguments), this.previousLabel = "", this.nextLabel = "";
2303
+ }
2304
+ render() {
2305
+ return l`
2306
+ <nav aria-label="Series">
2307
+ ${this.previousHref ? l`
2308
+ <a href=${this.previousHref} rel="prev">
2309
+ <span class="direction">← Previous</span>
2310
+ <span class="title">${this.previousLabel}</span>
2311
+ </a>
2312
+ ` : u}
2313
+ ${this.nextHref ? l`
2314
+ <a class="next" href=${this.nextHref} rel="next">
2315
+ <span class="direction">Next →</span>
2316
+ <span class="title">${this.nextLabel}</span>
2317
+ </a>
2318
+ ` : u}
2319
+ </nav>
2320
+ `;
2321
+ }
2322
+ };
2323
+ B.styles = c`
2324
+ :host {
2325
+ display: block;
2326
+ font-family: var(--vox-font-family-base);
2327
+ }
2328
+
2329
+ nav {
2330
+ display: flex;
2331
+ justify-content: space-between;
2332
+ gap: var(--vox-space-4);
2333
+ }
2334
+
2335
+ a {
2336
+ display: flex;
2337
+ flex-direction: column;
2338
+ gap: 2px;
2339
+ flex: 0 1 48%;
2340
+ padding: var(--vox-space-3) var(--vox-space-4);
2341
+ border: 1px solid var(--vox-color-divider);
2342
+ border-radius: var(--vox-radius-md);
2343
+ text-decoration: none;
2344
+ transition: border-color var(--vox-transition-base);
2345
+ }
2346
+
2347
+ a:hover,
2348
+ a:focus-visible {
2349
+ border-color: var(--vox-color-brand-1);
2350
+ }
2351
+
2352
+ a:focus-visible {
2353
+ outline: 2px solid var(--vox-color-brand-1);
2354
+ outline-offset: 2px;
2355
+ }
2356
+
2357
+ .next {
2358
+ margin-left: auto;
2359
+ text-align: right;
2360
+ }
2361
+
2362
+ .direction {
2363
+ font-size: 12px;
2364
+ color: var(--vox-color-text-3);
2365
+ }
2366
+
2367
+ .title {
2368
+ font-size: 14px;
2369
+ font-weight: 600;
2370
+ color: var(--vox-color-brand-1);
2371
+ }
2372
+ `;
2373
+ je([
2374
+ n({ attribute: "previous-href" })
2375
+ ], B.prototype, "previousHref", 2);
2376
+ je([
2377
+ n({ attribute: "previous-label" })
2378
+ ], B.prototype, "previousLabel", 2);
2379
+ je([
2380
+ n({ attribute: "next-href" })
2381
+ ], B.prototype, "nextHref", 2);
2382
+ je([
2383
+ n({ attribute: "next-label" })
2384
+ ], B.prototype, "nextLabel", 2);
2385
+ B = je([
2386
+ d("vox-series-nav")
2387
+ ], B);
2388
+ var br = Object.defineProperty, mr = Object.getOwnPropertyDescriptor, C = (s, e, o, r) => {
2389
+ for (var t = r > 1 ? void 0 : r ? mr(e, o) : e, a = s.length - 1, i; a >= 0; a--)
2390
+ (i = s[a]) && (t = (r ? i(e, o, t) : i(t)) || t);
2391
+ return r && t && br(e, o, t), t;
2392
+ };
2393
+ let Le = class extends p {
2394
+ constructor() {
2395
+ super(...arguments), this.label = "Section";
2396
+ }
2397
+ render() {
2398
+ return l`
2399
+ <nav aria-label=${this.label}>
2400
+ <slot></slot>
2401
+ </nav>
2402
+ `;
2403
+ }
2404
+ };
2405
+ Le.styles = c`
2406
+ :host {
2407
+ display: block;
2408
+ font-family: var(--vox-font-family-base);
2409
+ }
2410
+
2411
+ nav {
2412
+ display: flex;
2413
+ flex-direction: column;
2414
+ gap: 2px;
2415
+ }
2416
+ `;
2417
+ C([
2418
+ n()
2419
+ ], Le.prototype, "label", 2);
2420
+ Le = C([
2421
+ d("vox-sidenav")
2422
+ ], Le);
2423
+ let de = class extends p {
2424
+ constructor() {
2425
+ super(...arguments), this.heading = "", this.open = !1;
2426
+ }
2427
+ toggle() {
2428
+ this.open = !this.open;
2429
+ }
2430
+ render() {
2431
+ return l`
2432
+ <button
2433
+ class="trigger"
2434
+ aria-expanded=${this.open ? "true" : "false"}
2435
+ @click=${this.toggle}
2436
+ >
2437
+ ${this.heading}
2438
+ <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">
2439
+ <path d="m9 6 6 6-6 6" />
2440
+ </svg>
2441
+ </button>
2442
+ <div class="items"><slot></slot></div>
2443
+ `;
2444
+ }
2445
+ };
2446
+ de.styles = c`
2447
+ :host {
2448
+ display: block;
2449
+ font-family: var(--vox-font-family-base);
2450
+ }
2451
+
2452
+ .trigger {
2453
+ display: flex;
2454
+ align-items: center;
2455
+ justify-content: space-between;
2456
+ gap: var(--vox-space-2);
2457
+ width: 100%;
2458
+ padding: var(--vox-space-2) var(--vox-space-3);
2459
+ background: none;
2460
+ border: none;
2461
+ border-radius: var(--vox-radius-sm);
2462
+ color: var(--vox-color-text-1);
2463
+ font-family: inherit;
2464
+ font-size: 14px;
2465
+ font-weight: 600;
2466
+ text-align: left;
2467
+ cursor: pointer;
2468
+ }
2469
+
2470
+ .trigger:hover {
2471
+ color: var(--vox-color-brand-1);
2472
+ }
2473
+
2474
+ .trigger:focus-visible {
2475
+ outline: 2px solid var(--vox-color-brand-1);
2476
+ outline-offset: -2px;
2477
+ }
2478
+
2479
+ .chevron {
2480
+ flex: none;
2481
+ width: 14px;
2482
+ height: 14px;
2483
+ transition: transform var(--vox-transition-fast);
2484
+ }
2485
+
2486
+ :host([open]) .chevron {
2487
+ transform: rotate(90deg);
2488
+ }
2489
+
2490
+ .items {
2491
+ display: none;
2492
+ flex-direction: column;
2493
+ gap: 2px;
2494
+ padding-left: var(--vox-space-3);
2495
+ border-left: 1px solid var(--vox-color-divider);
2496
+ margin-left: var(--vox-space-3);
2497
+ }
2498
+
2499
+ :host([open]) .items {
2500
+ display: flex;
2501
+ }
2502
+ `;
2503
+ C([
2504
+ n()
2505
+ ], de.prototype, "heading", 2);
2506
+ C([
2507
+ n({ type: Boolean, reflect: !0 })
2508
+ ], de.prototype, "open", 2);
2509
+ de = C([
2510
+ d("vox-sidenav-group")
2511
+ ], de);
2512
+ let pe = class extends p {
2513
+ constructor() {
2514
+ super(...arguments), this.href = "#", this.current = !1;
2515
+ }
2516
+ render() {
2517
+ return l`
2518
+ <a href=${this.href} aria-current=${this.current ? "page" : "false"}>
2519
+ <slot></slot>
2520
+ </a>
2521
+ `;
2522
+ }
2523
+ };
2524
+ pe.styles = c`
2525
+ :host {
2526
+ display: block;
2527
+ font-family: var(--vox-font-family-base);
2528
+ }
2529
+
2530
+ a {
2531
+ display: block;
2532
+ padding: var(--vox-space-2) var(--vox-space-3);
2533
+ border-radius: var(--vox-radius-sm);
2534
+ color: var(--vox-color-text-2);
2535
+ font-size: 14px;
2536
+ text-decoration: none;
2537
+ transition:
2538
+ color var(--vox-transition-fast),
2539
+ background-color var(--vox-transition-fast);
2540
+ }
2541
+
2542
+ a:hover {
2543
+ color: var(--vox-color-text-1);
2544
+ }
2545
+
2546
+ a:focus-visible {
2547
+ outline: 2px solid var(--vox-color-brand-1);
2548
+ outline-offset: -2px;
2549
+ }
2550
+
2551
+ :host([current]) a {
2552
+ background-color: var(--vox-color-brand-soft);
2553
+ color: var(--vox-color-brand-1);
2554
+ font-weight: 600;
2555
+ }
2556
+ `;
2557
+ C([
2558
+ n()
2559
+ ], pe.prototype, "href", 2);
2560
+ C([
2561
+ n({ type: Boolean, reflect: !0 })
2562
+ ], pe.prototype, "current", 2);
2563
+ pe = C([
2564
+ d("vox-sidenav-item")
2565
+ ], pe);
2566
+ var yr = Object.defineProperty, $r = Object.getOwnPropertyDescriptor, ao = (s, e, o, r) => {
2567
+ for (var t = r > 1 ? void 0 : r ? $r(e, o) : e, a = s.length - 1, i; a >= 0; a--)
2568
+ (i = s[a]) && (t = (r ? i(e, o, t) : i(t)) || t);
2569
+ return r && t && yr(e, o, t), t;
2570
+ };
2571
+ let qe = class extends p {
2572
+ constructor() {
2573
+ super(...arguments), this.label = "Secondary";
2574
+ }
2575
+ render() {
2576
+ return l`
2577
+ <nav aria-label=${this.label}>
2578
+ <slot></slot>
2579
+ </nav>
2580
+ `;
2581
+ }
2582
+ };
2583
+ qe.styles = c`
2584
+ :host {
2585
+ display: block;
2586
+ font-family: var(--vox-font-family-base);
2587
+ }
2588
+
2589
+ nav {
2590
+ display: flex;
2591
+ gap: var(--vox-space-1);
2592
+ overflow-x: auto;
2593
+ border-bottom: 1px solid var(--vox-color-divider);
2594
+ }
2595
+
2596
+ ::slotted(a) {
2597
+ padding: var(--vox-space-2) var(--vox-space-4);
2598
+ margin-bottom: -1px;
2599
+ border-bottom: 2px solid transparent;
2600
+ color: var(--vox-color-text-2);
2601
+ font-size: 14px;
2602
+ font-weight: 500;
2603
+ text-decoration: none;
2604
+ white-space: nowrap;
2605
+ transition: color var(--vox-transition-fast);
2606
+ }
2607
+
2608
+ ::slotted(a:hover) {
2609
+ color: var(--vox-color-text-1);
2610
+ }
2611
+
2612
+ ::slotted(a[aria-current='page']) {
2613
+ color: var(--vox-color-brand-1);
2614
+ font-weight: 600;
2615
+ border-bottom-color: var(--vox-color-brand-1);
2616
+ }
2617
+ `;
2618
+ ao([
2619
+ n()
2620
+ ], qe.prototype, "label", 2);
2621
+ qe = ao([
2622
+ d("vox-subnav")
2623
+ ], qe);
2624
+ var _r = Object.defineProperty, wr = Object.getOwnPropertyDescriptor, U = (s, e, o, r) => {
2625
+ for (var t = r > 1 ? void 0 : r ? wr(e, o) : e, a = s.length - 1, i; a >= 0; a--)
2626
+ (i = s[a]) && (t = (r ? i(e, o, t) : i(t)) || t);
2627
+ return r && t && _r(e, o, t), t;
2628
+ };
2629
+ let ct = class extends p {
2630
+ get tabs() {
2631
+ return [...this.querySelectorAll("vox-tab")];
2632
+ }
2633
+ get panels() {
2634
+ return [...this.querySelectorAll("vox-tab-panel")];
2635
+ }
2636
+ sync() {
2637
+ const s = this.tabs;
2638
+ s.length > 0 && !s.some((o) => o.selected) && (s[0].selected = !0);
2639
+ const e = s.find((o) => o.selected);
2640
+ this.panels.forEach((o) => {
2641
+ o.active = o.name === (e == null ? void 0 : e.panel);
2642
+ });
2643
+ }
2644
+ handleSelect(s) {
2645
+ const e = s.target;
2646
+ e.tagName === "VOX-TAB" && (this.tabs.forEach((o) => o.selected = o === e), this.sync(), this.dispatchEvent(
2647
+ new CustomEvent("vox-tab-change", {
2648
+ detail: { panel: e.panel },
2649
+ bubbles: !0,
2650
+ composed: !0
2651
+ })
2652
+ ));
2653
+ }
2654
+ handleKeydown(s) {
2655
+ const o = { ArrowRight: 1, ArrowLeft: -1 }[s.key];
2656
+ if (!o) return;
2657
+ s.preventDefault();
2658
+ const r = this.tabs, t = r.findIndex((i) => i.selected), a = r[(t + o + r.length) % r.length];
2659
+ a.select(), a.focusTab();
2660
+ }
2661
+ render() {
2662
+ return l`
2663
+ <div
2664
+ class="tablist"
2665
+ role="tablist"
2666
+ @vox-tab-select=${this.handleSelect}
2667
+ @keydown=${this.handleKeydown}
2668
+ >
2669
+ <slot name="tab" @slotchange=${this.sync}></slot>
2670
+ </div>
2671
+ <slot @slotchange=${this.sync}></slot>
2672
+ `;
2673
+ }
2674
+ };
2675
+ ct.styles = c`
2676
+ :host {
2677
+ display: block;
2678
+ }
2679
+
2680
+ .tablist {
2681
+ display: flex;
2682
+ gap: var(--vox-space-1);
2683
+ border-bottom: 1px solid var(--vox-color-divider);
2684
+ }
2685
+ `;
2686
+ ct = U([
2687
+ d("vox-tabs")
2688
+ ], ct);
2689
+ let he = class extends p {
2690
+ constructor() {
2691
+ super(...arguments), this.panel = "", this.selected = !1;
2692
+ }
2693
+ select() {
2694
+ this.dispatchEvent(
2695
+ new CustomEvent("vox-tab-select", { bubbles: !0, composed: !0 })
2696
+ );
2697
+ }
2698
+ focusTab() {
2699
+ var s;
2700
+ (s = this.renderRoot.querySelector(".tab")) == null || s.focus();
2701
+ }
2702
+ render() {
2703
+ return l`
2704
+ <button
2705
+ class="tab"
2706
+ role="tab"
2707
+ aria-selected=${this.selected ? "true" : "false"}
2708
+ tabindex=${this.selected ? "0" : "-1"}
2709
+ @click=${this.select}
2710
+ >
2711
+ <slot></slot>
2712
+ </button>
2713
+ `;
2714
+ }
2715
+ };
2716
+ he.styles = c`
2717
+ :host {
2718
+ display: block;
2719
+ font-family: var(--vox-font-family-base);
2720
+ }
2721
+
2722
+ .tab {
2723
+ padding: var(--vox-space-2) var(--vox-space-4);
2724
+ margin-bottom: -1px;
2725
+ background: none;
2726
+ border: none;
2727
+ border-bottom: 2px solid transparent;
2728
+ color: var(--vox-color-text-2);
2729
+ font-family: inherit;
2730
+ font-size: 14px;
2731
+ font-weight: 600;
2732
+ cursor: pointer;
2733
+ transition: color var(--vox-transition-fast);
2734
+ }
2735
+
2736
+ .tab:hover {
2737
+ color: var(--vox-color-text-1);
2738
+ }
2739
+
2740
+ .tab:focus-visible {
2741
+ outline: 2px solid var(--vox-color-brand-1);
2742
+ outline-offset: -2px;
2743
+ border-radius: var(--vox-radius-sm);
2744
+ }
2745
+
2746
+ :host([selected]) .tab {
2747
+ color: var(--vox-color-brand-1);
2748
+ border-bottom-color: var(--vox-color-brand-1);
2749
+ }
2750
+ `;
2751
+ U([
2752
+ n()
2753
+ ], he.prototype, "panel", 2);
2754
+ U([
2755
+ n({ type: Boolean, reflect: !0 })
2756
+ ], he.prototype, "selected", 2);
2757
+ he = U([
2758
+ d("vox-tab")
2759
+ ], he);
2760
+ let ve = class extends p {
2761
+ constructor() {
2762
+ super(...arguments), this.name = "", this.active = !1;
2763
+ }
2764
+ render() {
2765
+ return l`<div role="tabpanel"><slot></slot></div>`;
2766
+ }
2767
+ };
2768
+ ve.styles = c`
2769
+ :host {
2770
+ display: none;
2771
+ font-family: var(--vox-font-family-base);
2772
+ font-size: 14px;
2773
+ line-height: 1.7;
2774
+ color: var(--vox-color-text-2);
2775
+ padding: var(--vox-space-4) 0;
2776
+ }
2777
+
2778
+ :host([active]) {
2779
+ display: block;
2780
+ }
2781
+ `;
2782
+ U([
2783
+ n()
2784
+ ], ve.prototype, "name", 2);
2785
+ U([
2786
+ n({ type: Boolean, reflect: !0 })
2787
+ ], ve.prototype, "active", 2);
2788
+ ve = U([
2789
+ d("vox-tab-panel")
2790
+ ], ve);
2791
+ var Pr = Object.defineProperty, Or = Object.getOwnPropertyDescriptor, ke = (s, e, o, r) => {
2792
+ for (var t = r > 1 ? void 0 : r ? Or(e, o) : e, a = s.length - 1, i; a >= 0; a--)
2793
+ (i = s[a]) && (t = (r ? i(e, o, t) : i(t)) || t);
2794
+ return r && t && Pr(e, o, t), t;
2795
+ };
2796
+ let V = class extends p {
2797
+ constructor() {
2798
+ super(...arguments), this.heading = "", this.open = !1, this.lightDismiss = !1, this.hasFooter = !1;
2799
+ }
2800
+ show() {
2801
+ this.open = !0;
2802
+ }
2803
+ close() {
2804
+ this.open = !1;
2805
+ }
2806
+ updated() {
2807
+ this.open && !this.dialogEl.open ? this.dialogEl.showModal() : !this.open && this.dialogEl.open && this.dialogEl.close();
2808
+ }
2809
+ handleNativeClose() {
2810
+ this.open = !1, this.dispatchEvent(
2811
+ new CustomEvent("vox-close", { bubbles: !0, composed: !0 })
2812
+ );
2813
+ }
2814
+ handleClick(s) {
2815
+ this.lightDismiss && s.target === this.dialogEl && this.close();
2816
+ }
2817
+ handleFooterSlotChange(s) {
2818
+ const e = s.target;
2819
+ this.hasFooter = e.assignedNodes({ flatten: !0 }).length > 0, this.requestUpdate();
2820
+ }
2821
+ render() {
2822
+ return l`
2823
+ <dialog
2824
+ aria-label=${this.heading || u}
2825
+ @close=${this.handleNativeClose}
2826
+ @click=${this.handleClick}
2827
+ >
2828
+ <div class="header">
2829
+ <h2 class="heading">${this.heading}</h2>
2830
+ <button class="close" aria-label="Close dialog" @click=${this.close}>
2831
+ <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" aria-hidden="true">
2832
+ <path d="M18 6 6 18M6 6l12 12" />
2833
+ </svg>
2834
+ </button>
2835
+ </div>
2836
+ <div class="body"><slot></slot></div>
2837
+ <div class="footer ${this.hasFooter ? "has-content" : ""}">
2838
+ <slot name="footer" @slotchange=${this.handleFooterSlotChange}></slot>
2839
+ </div>
2840
+ </dialog>
2841
+ `;
2842
+ }
2843
+ };
2844
+ V.styles = c`
2845
+ dialog {
2846
+ box-sizing: border-box;
2847
+ width: min(90vw, 480px);
2848
+ padding: 0;
2849
+ border: 1px solid var(--vox-color-divider);
2850
+ border-radius: var(--vox-radius-lg);
2851
+ background-color: var(--vox-color-bg-elv);
2852
+ color: var(--vox-color-text-1);
2853
+ font-family: var(--vox-font-family-base);
2854
+ box-shadow: var(--vox-shadow-2);
2855
+ }
2856
+
2857
+ dialog::backdrop {
2858
+ background-color: rgba(0, 0, 0, 0.5);
2859
+ }
2860
+
2861
+ .header {
2862
+ display: flex;
2863
+ align-items: center;
2864
+ justify-content: space-between;
2865
+ gap: var(--vox-space-3);
2866
+ padding: var(--vox-space-4) var(--vox-space-6);
2867
+ border-bottom: 1px solid var(--vox-color-divider);
2868
+ }
2869
+
2870
+ .heading {
2871
+ margin: 0;
2872
+ font-size: 16px;
2873
+ font-weight: 600;
2874
+ }
2875
+
2876
+ .close {
2877
+ display: flex;
2878
+ align-items: center;
2879
+ justify-content: center;
2880
+ width: 28px;
2881
+ height: 28px;
2882
+ padding: 0;
2883
+ background: none;
2884
+ border: none;
2885
+ border-radius: var(--vox-radius-sm);
2886
+ color: var(--vox-color-text-2);
2887
+ cursor: pointer;
2888
+ }
2889
+
2890
+ .close:hover {
2891
+ color: var(--vox-color-text-1);
2892
+ background-color: var(--vox-color-bg-soft);
2893
+ }
2894
+
2895
+ .close:focus-visible {
2896
+ outline: 2px solid var(--vox-color-brand-1);
2897
+ }
2898
+
2899
+ .close svg {
2900
+ width: 16px;
2901
+ height: 16px;
2902
+ }
2903
+
2904
+ .body {
2905
+ padding: var(--vox-space-6);
2906
+ font-size: 14px;
2907
+ line-height: 1.7;
2908
+ color: var(--vox-color-text-2);
2909
+ }
2910
+
2911
+ .footer {
2912
+ display: flex;
2913
+ justify-content: flex-end;
2914
+ gap: var(--vox-space-3);
2915
+ padding: var(--vox-space-4) var(--vox-space-6);
2916
+ border-top: 1px solid var(--vox-color-divider);
2917
+ }
2918
+
2919
+ .footer:not(.has-content) {
2920
+ display: none;
2921
+ }
2922
+
2923
+ ::slotted(p:first-child) {
2924
+ margin-top: 0;
2925
+ }
2926
+
2927
+ ::slotted(p:last-child) {
2928
+ margin-bottom: 0;
2929
+ }
2930
+ `;
2931
+ ke([
2932
+ n()
2933
+ ], V.prototype, "heading", 2);
2934
+ ke([
2935
+ n({ type: Boolean })
2936
+ ], V.prototype, "open", 2);
2937
+ ke([
2938
+ n({ type: Boolean, attribute: "light-dismiss" })
2939
+ ], V.prototype, "lightDismiss", 2);
2940
+ ke([
2941
+ bt("dialog")
2942
+ ], V.prototype, "dialogEl", 2);
2943
+ V = ke([
2944
+ d("vox-dialog")
2945
+ ], V);
2946
+ var Ar = Object.defineProperty, Cr = Object.getOwnPropertyDescriptor, Ot = (s, e, o, r) => {
2947
+ for (var t = r > 1 ? void 0 : r ? Cr(e, o) : e, a = s.length - 1, i; a >= 0; a--)
2948
+ (i = s[a]) && (t = (r ? i(e, o, t) : i(t)) || t);
2949
+ return r && t && Ar(e, o, t), t;
2950
+ };
2951
+ let ue = class extends p {
2952
+ constructor() {
2953
+ super(...arguments), this.summary = "Show details", this.open = !1;
2954
+ }
2955
+ toggle() {
2956
+ this.open = !this.open, this.dispatchEvent(
2957
+ new CustomEvent("vox-toggle", { bubbles: !0, composed: !0 })
2958
+ );
2959
+ }
2960
+ render() {
2961
+ return l`
2962
+ <button
2963
+ class="trigger"
2964
+ aria-expanded=${this.open ? "true" : "false"}
2965
+ @click=${this.toggle}
2966
+ >
2967
+ <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">
2968
+ <path d="m9 6 6 6-6 6" />
2969
+ </svg>
2970
+ ${this.summary}
2971
+ </button>
2972
+ <div class="panel" ?hidden=${!this.open}>
2973
+ <slot></slot>
2974
+ </div>
2975
+ `;
2976
+ }
2977
+ };
2978
+ ue.styles = c`
2979
+ :host {
2980
+ display: block;
2981
+ font-family: var(--vox-font-family-base);
2982
+ }
2983
+
2984
+ .trigger {
2985
+ display: inline-flex;
2986
+ align-items: center;
2987
+ gap: var(--vox-space-2);
2988
+ padding: 0;
2989
+ background: none;
2990
+ border: none;
2991
+ color: var(--vox-color-brand-1);
2992
+ font-family: inherit;
2993
+ font-size: 14px;
2994
+ font-weight: 600;
2995
+ cursor: pointer;
2996
+ }
2997
+
2998
+ .trigger:hover {
2999
+ color: var(--vox-color-brand-2);
3000
+ text-decoration: underline;
3001
+ }
3002
+
3003
+ .trigger:focus-visible {
3004
+ outline: 2px solid var(--vox-color-brand-1);
3005
+ outline-offset: 2px;
3006
+ border-radius: var(--vox-radius-sm);
3007
+ }
3008
+
3009
+ .chevron {
3010
+ width: 14px;
3011
+ height: 14px;
3012
+ transition: transform var(--vox-transition-fast);
3013
+ }
3014
+
3015
+ :host([open]) .chevron {
3016
+ transform: rotate(90deg);
3017
+ }
3018
+
3019
+ .panel {
3020
+ margin-top: var(--vox-space-3);
3021
+ font-size: 14px;
3022
+ line-height: 1.7;
3023
+ color: var(--vox-color-text-2);
3024
+ }
3025
+
3026
+ .panel[hidden] {
3027
+ display: none;
3028
+ }
3029
+ `;
3030
+ Ot([
3031
+ n()
3032
+ ], ue.prototype, "summary", 2);
3033
+ Ot([
3034
+ n({ type: Boolean, reflect: !0 })
3035
+ ], ue.prototype, "open", 2);
3036
+ ue = Ot([
3037
+ d("vox-disclosure")
3038
+ ], ue);
3039
+ var Er = Object.defineProperty, Sr = Object.getOwnPropertyDescriptor, At = (s, e, o, r) => {
3040
+ for (var t = r > 1 ? void 0 : r ? Sr(e, o) : e, a = s.length - 1, i; a >= 0; a--)
3041
+ (i = s[a]) && (t = (r ? i(e, o, t) : i(t)) || t);
3042
+ return r && t && Er(e, o, t), t;
3043
+ };
3044
+ let xe = class extends p {
3045
+ constructor() {
3046
+ super(...arguments), this.label = "Menu", this.open = !1, this.handleOutsideClick = (s) => {
3047
+ this.open && !s.composedPath().includes(this) && (this.open = !1);
3048
+ }, this.handleKeydown = (s) => {
3049
+ var e;
3050
+ if (s.key === "Escape" && this.open) {
3051
+ this.open = !1, (e = this.renderRoot.querySelector(".trigger")) == null || e.focus();
3052
+ return;
3053
+ }
3054
+ if ((s.key === "ArrowDown" || s.key === "ArrowUp") && this.open) {
3055
+ s.preventDefault();
3056
+ const o = [...this.querySelectorAll("a, button")];
3057
+ if (o.length === 0) return;
3058
+ const r = document.activeElement, t = o.indexOf(r), a = s.key === "ArrowDown" ? 1 : -1;
3059
+ o[(Math.max(t, 0) + a + o.length) % o.length].focus();
3060
+ }
3061
+ };
3062
+ }
3063
+ connectedCallback() {
3064
+ super.connectedCallback(), document.addEventListener("click", this.handleOutsideClick), this.addEventListener("keydown", this.handleKeydown);
3065
+ }
3066
+ disconnectedCallback() {
3067
+ super.disconnectedCallback(), document.removeEventListener("click", this.handleOutsideClick), this.removeEventListener("keydown", this.handleKeydown);
3068
+ }
3069
+ toggle() {
3070
+ this.open = !this.open;
3071
+ }
3072
+ render() {
3073
+ return l`
3074
+ <button
3075
+ class="trigger"
3076
+ aria-expanded=${this.open ? "true" : "false"}
3077
+ aria-haspopup="true"
3078
+ @click=${this.toggle}
3079
+ >
3080
+ ${this.label}
3081
+ <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">
3082
+ <path d="m6 9 6 6 6-6" />
3083
+ </svg>
3084
+ </button>
3085
+ <div class="menu">
3086
+ <slot @click=${() => this.open = !1}></slot>
3087
+ </div>
3088
+ `;
3089
+ }
3090
+ };
3091
+ xe.styles = c`
3092
+ :host {
3093
+ position: relative;
3094
+ display: inline-block;
3095
+ font-family: var(--vox-font-family-base);
3096
+ }
3097
+
3098
+ .trigger {
3099
+ display: inline-flex;
3100
+ align-items: center;
3101
+ gap: var(--vox-space-2);
3102
+ padding: 0 var(--vox-space-4);
3103
+ height: 38px;
3104
+ background-color: var(--vox-color-bg-soft);
3105
+ border: 1px solid var(--vox-color-divider);
3106
+ border-radius: var(--vox-radius-md);
3107
+ color: var(--vox-color-text-1);
3108
+ font-family: inherit;
3109
+ font-size: 14px;
3110
+ font-weight: 600;
3111
+ cursor: pointer;
3112
+ transition:
3113
+ border-color var(--vox-transition-fast),
3114
+ color var(--vox-transition-fast);
3115
+ }
3116
+
3117
+ .trigger:hover {
3118
+ border-color: var(--vox-color-brand-1);
3119
+ color: var(--vox-color-brand-1);
3120
+ }
3121
+
3122
+ .trigger:focus-visible {
3123
+ outline: 2px solid var(--vox-color-brand-1);
3124
+ outline-offset: 2px;
3125
+ }
3126
+
3127
+ .chevron {
3128
+ width: 14px;
3129
+ height: 14px;
3130
+ transition: transform var(--vox-transition-fast);
3131
+ }
3132
+
3133
+ :host([open]) .chevron {
3134
+ transform: rotate(180deg);
3135
+ }
3136
+
3137
+ .menu {
3138
+ position: absolute;
3139
+ top: calc(100% + 4px);
3140
+ left: 0;
3141
+ z-index: 10;
3142
+ min-width: max(100%, 180px);
3143
+ display: none;
3144
+ flex-direction: column;
3145
+ padding: var(--vox-space-2);
3146
+ background-color: var(--vox-color-bg-elv);
3147
+ border: 1px solid var(--vox-color-divider);
3148
+ border-radius: var(--vox-radius-md);
3149
+ box-shadow: var(--vox-shadow-2);
3150
+ }
3151
+
3152
+ :host([open]) .menu {
3153
+ display: flex;
3154
+ }
3155
+
3156
+ ::slotted(a),
3157
+ ::slotted(button) {
3158
+ display: block;
3159
+ width: 100%;
3160
+ box-sizing: border-box;
3161
+ padding: var(--vox-space-2) var(--vox-space-3);
3162
+ background: none;
3163
+ border: none;
3164
+ border-radius: var(--vox-radius-sm);
3165
+ color: var(--vox-color-text-1);
3166
+ font-family: inherit;
3167
+ font-size: 14px;
3168
+ text-align: left;
3169
+ text-decoration: none;
3170
+ cursor: pointer;
3171
+ white-space: nowrap;
3172
+ }
3173
+
3174
+ ::slotted(a:hover),
3175
+ ::slotted(button:hover),
3176
+ ::slotted(a:focus-visible),
3177
+ ::slotted(button:focus-visible) {
3178
+ background-color: var(--vox-color-brand-soft);
3179
+ color: var(--vox-color-brand-1);
3180
+ outline: none;
3181
+ }
3182
+
3183
+ ::slotted(hr) {
3184
+ width: 100%;
3185
+ margin: var(--vox-space-1) 0;
3186
+ border: none;
3187
+ border-top: 1px solid var(--vox-color-divider);
3188
+ }
3189
+ `;
3190
+ At([
3191
+ n()
3192
+ ], xe.prototype, "label", 2);
3193
+ At([
3194
+ n({ type: Boolean, reflect: !0 })
3195
+ ], xe.prototype, "open", 2);
3196
+ xe = At([
3197
+ d("vox-dropdown")
3198
+ ], xe);
3199
+ var jr = Object.defineProperty, kr = Object.getOwnPropertyDescriptor, De = (s, e, o, r) => {
3200
+ for (var t = r > 1 ? void 0 : r ? kr(e, o) : e, a = s.length - 1, i; a >= 0; a--)
3201
+ (i = s[a]) && (t = (r ? i(e, o, t) : i(t)) || t);
3202
+ return r && t && jr(e, o, t), t;
3203
+ };
3204
+ let He = class extends p {
3205
+ constructor() {
3206
+ super(...arguments), this.single = !1;
3207
+ }
3208
+ handleToggle(s) {
3209
+ if (!this.single) return;
3210
+ const e = s.target;
3211
+ e.open && this.querySelectorAll("vox-accordion-item").forEach(
3212
+ (o) => {
3213
+ o !== e && (o.open = !1);
3214
+ }
3215
+ );
3216
+ }
3217
+ render() {
3218
+ return l`<slot @vox-toggle=${this.handleToggle}></slot>`;
3219
+ }
3220
+ };
3221
+ He.styles = c`
3222
+ :host {
3223
+ display: block;
3224
+ border: 1px solid var(--vox-color-divider);
3225
+ border-radius: var(--vox-radius-md);
3226
+ overflow: hidden;
3227
+ }
3228
+
3229
+ ::slotted(vox-accordion-item:not(:first-child)) {
3230
+ border-top: 1px solid var(--vox-color-divider);
3231
+ }
3232
+ `;
3233
+ De([
3234
+ n({ type: Boolean })
3235
+ ], He.prototype, "single", 2);
3236
+ He = De([
3237
+ d("vox-accordion")
3238
+ ], He);
3239
+ let fe = class extends p {
3240
+ constructor() {
3241
+ super(...arguments), this.heading = "", this.open = !1;
3242
+ }
3243
+ toggle() {
3244
+ this.open = !this.open, this.dispatchEvent(
3245
+ new CustomEvent("vox-toggle", { bubbles: !0, composed: !0 })
3246
+ );
3247
+ }
3248
+ render() {
3249
+ return l`
3250
+ <h3 style="margin:0">
3251
+ <button
3252
+ class="trigger"
3253
+ aria-expanded=${this.open ? "true" : "false"}
3254
+ @click=${this.toggle}
3255
+ >
3256
+ ${this.heading}
3257
+ <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">
3258
+ <path d="m6 9 6 6 6-6" />
3259
+ </svg>
3260
+ </button>
3261
+ </h3>
3262
+ <div class="panel" ?hidden=${!this.open}>
3263
+ <slot></slot>
3264
+ </div>
3265
+ `;
3266
+ }
3267
+ };
3268
+ fe.styles = c`
3269
+ :host {
3270
+ display: block;
3271
+ font-family: var(--vox-font-family-base);
3272
+ }
3273
+
3274
+ .trigger {
3275
+ display: flex;
3276
+ align-items: center;
3277
+ justify-content: space-between;
3278
+ gap: var(--vox-space-3);
3279
+ width: 100%;
3280
+ padding: var(--vox-space-4);
3281
+ background: none;
3282
+ border: none;
3283
+ color: var(--vox-color-text-1);
3284
+ font-family: inherit;
3285
+ font-size: 15px;
3286
+ font-weight: 600;
3287
+ text-align: left;
3288
+ cursor: pointer;
3289
+ }
3290
+
3291
+ .trigger:hover {
3292
+ color: var(--vox-color-brand-1);
3293
+ }
3294
+
3295
+ .trigger:focus-visible {
3296
+ outline: 2px solid var(--vox-color-brand-1);
3297
+ outline-offset: -2px;
3298
+ }
3299
+
3300
+ .chevron {
3301
+ flex: none;
3302
+ width: 16px;
3303
+ height: 16px;
3304
+ transition: transform var(--vox-transition-fast);
3305
+ }
3306
+
3307
+ :host([open]) .chevron {
3308
+ transform: rotate(180deg);
3309
+ }
3310
+
3311
+ .panel {
3312
+ padding: 0 var(--vox-space-4) var(--vox-space-4);
3313
+ font-size: 14px;
3314
+ line-height: 1.7;
3315
+ color: var(--vox-color-text-2);
3316
+ }
3317
+
3318
+ .panel[hidden] {
3319
+ display: none;
3320
+ }
3321
+
3322
+ ::slotted(p:first-child) {
3323
+ margin-top: 0;
3324
+ }
3325
+
3326
+ ::slotted(p:last-child) {
3327
+ margin-bottom: 0;
3328
+ }
3329
+ `;
3330
+ De([
3331
+ n()
3332
+ ], fe.prototype, "heading", 2);
3333
+ De([
3334
+ n({ type: Boolean, reflect: !0 })
3335
+ ], fe.prototype, "open", 2);
3336
+ fe = De([
3337
+ d("vox-accordion-item")
3338
+ ], fe);
3339
+ var Dr = Object.defineProperty, zr = Object.getOwnPropertyDescriptor, ze = (s, e, o, r) => {
3340
+ for (var t = r > 1 ? void 0 : r ? zr(e, o) : e, a = s.length - 1, i; a >= 0; a--)
3341
+ (i = s[a]) && (t = (r ? i(e, o, t) : i(t)) || t);
3342
+ return r && t && Dr(e, o, t), t;
3343
+ };
3344
+ let N = class extends p {
3345
+ constructor() {
3346
+ super(...arguments), this.variant = "info", this.heading = "", this.dismissible = !1, this.open = !0;
3347
+ }
3348
+ dismiss() {
3349
+ this.open = !1, this.dispatchEvent(
3350
+ new CustomEvent("vox-dismiss", { bubbles: !0, composed: !0 })
3351
+ );
3352
+ }
3353
+ render() {
3354
+ return l`
3355
+ <div class="alert ${this.variant}" role="alert">
3356
+ <div class="body">
3357
+ ${this.heading ? l`<p class="heading">${this.heading}</p>` : u}
3358
+ <slot></slot>
3359
+ </div>
3360
+ ${this.dismissible ? l`
3361
+ <button class="close" aria-label="Dismiss" @click=${this.dismiss}>
3362
+ <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" aria-hidden="true">
3363
+ <path d="M18 6 6 18M6 6l12 12" />
3364
+ </svg>
3365
+ </button>
3366
+ ` : u}
3367
+ </div>
3368
+ `;
3369
+ }
3370
+ };
3371
+ N.styles = c`
3372
+ :host {
3373
+ display: block;
3374
+ font-family: var(--vox-font-family-base);
3375
+ }
3376
+
3377
+ :host(:not([open])) {
3378
+ display: none;
3379
+ }
3380
+
3381
+ .alert {
3382
+ display: flex;
3383
+ gap: var(--vox-space-3);
3384
+ align-items: flex-start;
3385
+ padding: var(--vox-space-4);
3386
+ border-radius: var(--vox-radius-md);
3387
+ border-left: 4px solid;
3388
+ font-size: 14px;
3389
+ line-height: 1.6;
3390
+ color: var(--vox-color-text-1);
3391
+ }
3392
+
3393
+ .body {
3394
+ flex: 1 1 auto;
3395
+ }
3396
+
3397
+ .heading {
3398
+ margin: 0 0 var(--vox-space-1);
3399
+ font-size: 14px;
3400
+ font-weight: 600;
3401
+ }
3402
+
3403
+ .info {
3404
+ background-color: var(--vox-color-brand-soft);
3405
+ border-color: var(--vox-color-brand-1);
3406
+ }
3407
+ .info .heading {
3408
+ color: var(--vox-color-brand-1);
3409
+ }
3410
+
3411
+ .success {
3412
+ background-color: var(--vox-color-tip-soft);
3413
+ border-color: var(--vox-color-tip-1);
3414
+ }
3415
+ .success .heading {
3416
+ color: var(--vox-color-tip-1);
3417
+ }
3418
+
3419
+ .warning {
3420
+ background-color: var(--vox-color-warning-soft);
3421
+ border-color: var(--vox-color-warning-1);
3422
+ }
3423
+ .warning .heading {
3424
+ color: var(--vox-color-warning-1);
3425
+ }
3426
+
3427
+ .danger {
3428
+ background-color: var(--vox-color-danger-soft);
3429
+ border-color: var(--vox-color-danger-1);
3430
+ }
3431
+ .danger .heading {
3432
+ color: var(--vox-color-danger-1);
3433
+ }
3434
+
3435
+ .close {
3436
+ flex: none;
3437
+ display: flex;
3438
+ align-items: center;
3439
+ justify-content: center;
3440
+ width: 24px;
3441
+ height: 24px;
3442
+ padding: 0;
3443
+ background: none;
3444
+ border: none;
3445
+ border-radius: var(--vox-radius-sm);
3446
+ color: var(--vox-color-text-2);
3447
+ cursor: pointer;
3448
+ }
3449
+
3450
+ .close:hover {
3451
+ color: var(--vox-color-text-1);
3452
+ }
3453
+
3454
+ .close:focus-visible {
3455
+ outline: 2px solid var(--vox-color-brand-1);
3456
+ }
3457
+
3458
+ .close svg {
3459
+ width: 14px;
3460
+ height: 14px;
3461
+ }
3462
+
3463
+ ::slotted(p:first-child) {
3464
+ margin-top: 0;
3465
+ }
3466
+
3467
+ ::slotted(p:last-child) {
3468
+ margin-bottom: 0;
3469
+ }
3470
+ `;
3471
+ ze([
3472
+ n()
3473
+ ], N.prototype, "variant", 2);
3474
+ ze([
3475
+ n()
3476
+ ], N.prototype, "heading", 2);
3477
+ ze([
3478
+ n({ type: Boolean })
3479
+ ], N.prototype, "dismissible", 2);
3480
+ ze([
3481
+ n({ type: Boolean, reflect: !0 })
3482
+ ], N.prototype, "open", 2);
3483
+ N = ze([
3484
+ d("vox-alert")
3485
+ ], N);
3486
+ var Tr = Object.defineProperty, Br = Object.getOwnPropertyDescriptor, io = (s, e, o, r) => {
3487
+ for (var t = r > 1 ? void 0 : r ? Br(e, o) : e, a = s.length - 1, i; a >= 0; a--)
3488
+ (i = s[a]) && (t = (r ? i(e, o, t) : i(t)) || t);
3489
+ return r && t && Tr(e, o, t), t;
3490
+ };
3491
+ let Ie = class extends p {
3492
+ constructor() {
3493
+ super(...arguments), this.variant = "brand";
3494
+ }
3495
+ render() {
3496
+ return l`<span class="badge ${this.variant}"><slot></slot></span>`;
3497
+ }
3498
+ };
3499
+ Ie.styles = c`
3500
+ :host {
3501
+ display: inline-block;
3502
+ }
3503
+
3504
+ .badge {
3505
+ display: inline-flex;
3506
+ align-items: center;
3507
+ padding: 2px 10px;
3508
+ border-radius: var(--vox-radius-full);
3509
+ font-family: var(--vox-font-family-base);
3510
+ font-size: 12px;
3511
+ font-weight: 600;
3512
+ line-height: 1.6;
3513
+ white-space: nowrap;
3514
+ }
3515
+
3516
+ .brand {
3517
+ background-color: var(--vox-color-brand-soft);
3518
+ color: var(--vox-color-brand-1);
3519
+ }
3520
+
3521
+ .tip {
3522
+ background-color: var(--vox-color-tip-soft);
3523
+ color: var(--vox-color-tip-1);
3524
+ }
3525
+
3526
+ .warning {
3527
+ background-color: var(--vox-color-warning-soft);
3528
+ color: var(--vox-color-warning-1);
3529
+ }
3530
+
3531
+ .danger {
3532
+ background-color: var(--vox-color-danger-soft);
3533
+ color: var(--vox-color-danger-1);
3534
+ }
3535
+
3536
+ .neutral {
3537
+ background-color: var(--vox-color-bg-soft);
3538
+ color: var(--vox-color-text-2);
3539
+ }
3540
+ `;
3541
+ io([
3542
+ n()
3543
+ ], Ie.prototype, "variant", 2);
3544
+ Ie = io([
3545
+ d("vox-badge")
3546
+ ], Ie);
3547
+ var Vr = Object.defineProperty, Nr = Object.getOwnPropertyDescriptor, Ct = (s, e, o, r) => {
3548
+ for (var t = r > 1 ? void 0 : r ? Nr(e, o) : e, a = s.length - 1, i; a >= 0; a--)
3549
+ (i = s[a]) && (t = (r ? i(e, o, t) : i(t)) || t);
3550
+ return r && t && Vr(e, o, t), t;
3551
+ };
3552
+ let ge = class extends p {
3553
+ constructor() {
3554
+ super(...arguments), this.date = "";
3555
+ }
3556
+ render() {
3557
+ const s = /* @__PURE__ */ new Date(`${this.date}T00:00:00`), e = !Number.isNaN(s.getTime()), o = e ? s.toLocaleString(this.locale, { month: "short" }) : "—", r = e ? s.getDate() : "–";
3558
+ return l`
3559
+ <time class="tile" datetime=${this.date}>
3560
+ <span class="month">${o}</span>
3561
+ <span class="day">${r}</span>
3562
+ </time>
3563
+ `;
3564
+ }
3565
+ };
3566
+ ge.styles = c`
3567
+ :host {
3568
+ display: inline-block;
3569
+ font-family: var(--vox-font-family-base);
3570
+ }
3571
+
3572
+ .tile {
3573
+ display: flex;
3574
+ flex-direction: column;
3575
+ align-items: center;
3576
+ min-width: 56px;
3577
+ border: 1px solid var(--vox-color-divider);
3578
+ border-radius: var(--vox-radius-md);
3579
+ overflow: hidden;
3580
+ background-color: var(--vox-color-bg-elv);
3581
+ }
3582
+
3583
+ .month {
3584
+ align-self: stretch;
3585
+ padding: 2px var(--vox-space-2);
3586
+ background-color: var(--vox-color-brand-3);
3587
+ color: var(--vox-color-text-inverse);
3588
+ font-size: 11px;
3589
+ font-weight: 700;
3590
+ letter-spacing: 0.08em;
3591
+ text-transform: uppercase;
3592
+ text-align: center;
3593
+ }
3594
+
3595
+ .day {
3596
+ padding: var(--vox-space-1) var(--vox-space-2);
3597
+ font-size: 24px;
3598
+ font-weight: 700;
3599
+ color: var(--vox-color-text-1);
3600
+ }
3601
+ `;
3602
+ Ct([
3603
+ n()
3604
+ ], ge.prototype, "date", 2);
3605
+ Ct([
3606
+ n()
3607
+ ], ge.prototype, "locale", 2);
3608
+ ge = Ct([
3609
+ d("vox-calendar-tile")
3610
+ ], ge);
3611
+ var Rr = Object.defineProperty, Mr = Object.getOwnPropertyDescriptor, Et = (s, e, o, r) => {
3612
+ for (var t = r > 1 ? void 0 : r ? Mr(e, o) : e, a = s.length - 1, i; a >= 0; a--)
3613
+ (i = s[a]) && (t = (r ? i(e, o, t) : i(t)) || t);
3614
+ return r && t && Rr(e, o, t), t;
3615
+ };
3616
+ const Ur = {
3617
+ info: "Info",
3618
+ tip: "Tip",
3619
+ warning: "Warning",
3620
+ danger: "Danger"
3621
+ };
3622
+ let be = class extends p {
3623
+ constructor() {
3624
+ super(...arguments), this.variant = "info";
3625
+ }
3626
+ render() {
3627
+ return l`
3628
+ <div class="callout ${this.variant}" role="note">
3629
+ <p class="heading">${this.heading ?? Ur[this.variant]}</p>
3630
+ <slot></slot>
3631
+ </div>
3632
+ `;
3633
+ }
3634
+ };
3635
+ be.styles = c`
3636
+ :host {
3637
+ display: block;
3638
+ }
3639
+
3640
+ .callout {
3641
+ border-radius: var(--vox-radius-md);
3642
+ padding: var(--vox-space-4);
3643
+ font-family: var(--vox-font-family-base);
3644
+ font-size: 14px;
3645
+ line-height: 1.7;
3646
+ color: var(--vox-color-text-2);
3647
+ }
3648
+
3649
+ .heading {
3650
+ margin: 0 0 var(--vox-space-2);
3651
+ font-size: 14px;
3652
+ font-weight: 600;
3653
+ }
3654
+
3655
+ .info {
3656
+ background-color: var(--vox-color-bg-soft);
3657
+ }
3658
+ .info .heading {
3659
+ color: var(--vox-color-text-1);
3660
+ }
3661
+
3662
+ .tip {
3663
+ background-color: var(--vox-color-tip-soft);
3664
+ }
3665
+ .tip .heading {
3666
+ color: var(--vox-color-tip-1);
3667
+ }
3668
+
3669
+ .warning {
3670
+ background-color: var(--vox-color-warning-soft);
3671
+ }
3672
+ .warning .heading {
3673
+ color: var(--vox-color-warning-1);
3674
+ }
3675
+
3676
+ .danger {
3677
+ background-color: var(--vox-color-danger-soft);
3678
+ }
3679
+ .danger .heading {
3680
+ color: var(--vox-color-danger-1);
3681
+ }
3682
+
3683
+ ::slotted(p:first-child) {
3684
+ margin-top: 0;
3685
+ }
3686
+
3687
+ ::slotted(p:last-child) {
3688
+ margin-bottom: 0;
3689
+ }
3690
+ `;
3691
+ Et([
3692
+ n()
3693
+ ], be.prototype, "variant", 2);
3694
+ Et([
3695
+ n()
3696
+ ], be.prototype, "heading", 2);
3697
+ be = Et([
3698
+ d("vox-callout")
3699
+ ], be);
3700
+ var Lr = Object.defineProperty, qr = Object.getOwnPropertyDescriptor, Qe = (s, e, o, r) => {
3701
+ for (var t = r > 1 ? void 0 : r ? qr(e, o) : e, a = s.length - 1, i; a >= 0; a--)
3702
+ (i = s[a]) && (t = (r ? i(e, o, t) : i(t)) || t);
3703
+ return r && t && Lr(e, o, t), t;
3704
+ };
3705
+ let W = class extends p {
3706
+ constructor() {
3707
+ super(...arguments), this.heading = "", this.hasIcon = !1, this.hasBadge = !1, this.hasFooter = !1;
3708
+ }
3709
+ handleIconSlotChange(s) {
3710
+ const e = s.target;
3711
+ this.hasIcon = e.assignedNodes({ flatten: !0 }).length > 0, this.requestUpdate();
3712
+ }
3713
+ handleBadgeSlotChange(s) {
3714
+ const e = s.target;
3715
+ this.hasBadge = e.assignedNodes({ flatten: !0 }).length > 0, this.requestUpdate();
3716
+ }
3717
+ handleFooterSlotChange(s) {
3718
+ const e = s.target;
3719
+ this.hasFooter = e.assignedNodes({ flatten: !0 }).length > 0, this.requestUpdate();
3720
+ }
3721
+ render() {
3722
+ const s = l`
3723
+ <div class="badge ${this.hasBadge ? "has-badge" : ""}">
3724
+ <slot name="badge" @slotchange=${this.handleBadgeSlotChange}></slot>
3725
+ </div>
3726
+ <div class="icon ${this.hasIcon ? "has-icon" : ""}">
3727
+ <slot name="icon" @slotchange=${this.handleIconSlotChange}></slot>
3728
+ </div>
3729
+ <h3 class="heading">${this.heading}</h3>
3730
+ <div class="body"><slot></slot></div>
3731
+ <div class="footer ${this.hasFooter ? "has-footer" : ""}">
3732
+ <slot name="footer" @slotchange=${this.handleFooterSlotChange}></slot>
3733
+ </div>
3734
+ `;
3735
+ return this.href !== void 0 ? l`<a class="card" href=${this.href} target=${this.target ?? u}>${s}</a>` : l`<div class="card">${s}</div>`;
3736
+ }
3737
+ };
3738
+ W.styles = c`
3739
+ :host {
3740
+ display: block;
3741
+ }
3742
+
3743
+ .card {
3744
+ position: relative;
3745
+ display: flex;
3746
+ flex-direction: column;
3747
+ height: 100%;
3748
+ box-sizing: border-box;
3749
+ background-color: var(--vox-color-bg-soft);
3750
+ border: 1px solid var(--vox-color-bg-soft);
3751
+ border-radius: var(--vox-radius-lg);
3752
+ padding: var(--vox-space-6);
3753
+ font-family: var(--vox-font-family-base);
3754
+ text-decoration: none;
3755
+ transition: border-color var(--vox-transition-base);
3756
+ }
3757
+
3758
+ .badge {
3759
+ position: absolute;
3760
+ top: var(--vox-space-6);
3761
+ right: var(--vox-space-6);
3762
+ }
3763
+
3764
+ .badge:not(.has-badge) {
3765
+ display: none;
3766
+ }
3767
+
3768
+ a.card:hover,
3769
+ a.card:focus-visible {
3770
+ border-color: var(--vox-color-brand-1);
3771
+ }
3772
+
3773
+ a.card:focus-visible {
3774
+ outline: 2px solid var(--vox-color-brand-1);
3775
+ outline-offset: 2px;
3776
+ }
3777
+
3778
+ .icon {
3779
+ display: flex;
3780
+ align-items: center;
3781
+ justify-content: center;
3782
+ width: 48px;
3783
+ height: 48px;
3784
+ margin-bottom: var(--vox-space-4);
3785
+ background-color: var(--vox-color-bg-elv);
3786
+ border-radius: var(--vox-radius-md);
3787
+ font-size: 24px;
3788
+ }
3789
+
3790
+ .icon:not(.has-icon) {
3791
+ display: none;
3792
+ }
3793
+
3794
+ .heading {
3795
+ margin: 0;
3796
+ font-size: 16px;
3797
+ font-weight: 600;
3798
+ line-height: 1.5;
3799
+ color: var(--vox-color-text-1);
3800
+ }
3801
+
3802
+ .body {
3803
+ margin-top: var(--vox-space-2);
3804
+ font-size: 14px;
3805
+ line-height: 1.6;
3806
+ color: var(--vox-color-text-2);
3807
+ }
3808
+
3809
+ .footer {
3810
+ margin-top: auto;
3811
+ padding-top: var(--vox-space-4);
3812
+ }
3813
+
3814
+ .footer:not(.has-footer) {
3815
+ display: none;
3816
+ }
3817
+ `;
3818
+ Qe([
3819
+ n()
3820
+ ], W.prototype, "heading", 2);
3821
+ Qe([
3822
+ n()
3823
+ ], W.prototype, "href", 2);
3824
+ Qe([
3825
+ n()
3826
+ ], W.prototype, "target", 2);
3827
+ W = Qe([
3828
+ d("vox-card")
3829
+ ], W);
3830
+ var Hr = Object.defineProperty, Ir = Object.getOwnPropertyDescriptor, no = (s, e, o, r) => {
3831
+ for (var t = r > 1 ? void 0 : r ? Ir(e, o) : e, a = s.length - 1, i; a >= 0; a--)
3832
+ (i = s[a]) && (t = (r ? i(e, o, t) : i(t)) || t);
3833
+ return r && t && Hr(e, o, t), t;
3834
+ };
3835
+ let Fe = class extends p {
3836
+ constructor() {
3837
+ super(...arguments), this.heading = "", this.hasBody = !1, this.hasActions = !1;
3838
+ }
3839
+ handleBodySlotChange(s) {
3840
+ const e = s.target;
3841
+ this.hasBody = e.assignedNodes({ flatten: !0 }).length > 0, this.requestUpdate();
3842
+ }
3843
+ handleActionsSlotChange(s) {
3844
+ const e = s.target;
3845
+ this.hasActions = e.assignedNodes({ flatten: !0 }).length > 0, this.requestUpdate();
3846
+ }
3847
+ render() {
3848
+ return l`
3849
+ <div class="band">
3850
+ ${this.heading ? l`<h2 class="heading">${this.heading}</h2>` : u}
3851
+ <div class="body ${this.hasBody ? "has-content" : ""}">
3852
+ <slot @slotchange=${this.handleBodySlotChange}></slot>
3853
+ </div>
3854
+ <div class="actions ${this.hasActions ? "has-content" : ""}">
3855
+ <slot name="actions" @slotchange=${this.handleActionsSlotChange}></slot>
3856
+ </div>
3857
+ </div>
3858
+ `;
3859
+ }
3860
+ };
3861
+ Fe.styles = c`
3862
+ :host {
3863
+ display: block;
3864
+ font-family: var(--vox-font-family-base);
3865
+ }
3866
+
3867
+ .band {
3868
+ text-align: center;
3869
+ padding: var(--vox-space-8);
3870
+ background-color: var(--vox-color-bg-soft);
3871
+ border-radius: var(--vox-radius-lg);
3872
+ }
3873
+
3874
+ .heading {
3875
+ margin: 0;
3876
+ font-family: var(--vox-font-family-display);
3877
+ font-size: 28px;
3878
+ font-weight: 600;
3879
+ line-height: 1.3;
3880
+ color: var(--vox-color-text-1);
3881
+ }
3882
+
3883
+ .body {
3884
+ max-width: 36rem;
3885
+ margin: var(--vox-space-3) auto 0;
3886
+ font-size: 16px;
3887
+ line-height: 1.6;
3888
+ color: var(--vox-color-text-2);
3889
+ }
3890
+
3891
+ .body:not(.has-content) {
3892
+ display: none;
3893
+ }
3894
+
3895
+ .body ::slotted(a) {
3896
+ color: var(--vox-color-brand-1);
3897
+ text-decoration: underline;
3898
+ }
3899
+
3900
+ .body ::slotted(a:hover) {
3901
+ color: var(--vox-color-brand-2);
3902
+ }
3903
+
3904
+ .actions {
3905
+ display: flex;
3906
+ gap: var(--vox-space-3);
3907
+ justify-content: center;
3908
+ flex-wrap: wrap;
3909
+ margin-top: var(--vox-space-6);
3910
+ }
3911
+
3912
+ .actions:not(.has-content) {
3913
+ display: none;
3914
+ }
3915
+ `;
3916
+ no([
3917
+ n()
3918
+ ], Fe.prototype, "heading", 2);
3919
+ Fe = no([
3920
+ d("vox-cta-band")
3921
+ ], Fe);
3922
+ var Fr = Object.defineProperty, Kr = Object.getOwnPropertyDescriptor, lo = (s, e, o, r) => {
3923
+ for (var t = r > 1 ? void 0 : r ? Kr(e, o) : e, a = s.length - 1, i; a >= 0; a--)
3924
+ (i = s[a]) && (t = (r ? i(e, o, t) : i(t)) || t);
3925
+ return r && t && Fr(e, o, t), t;
3926
+ };
3927
+ let Ke = class extends p {
3928
+ constructor() {
3929
+ super(...arguments), this.heading = "";
3930
+ }
3931
+ render() {
3932
+ return l`
3933
+ <div class="empty">
3934
+ <div class="icon"><slot name="icon"></slot></div>
3935
+ <h3 class="heading">${this.heading}</h3>
3936
+ <div class="body"><slot></slot></div>
3937
+ <div class="actions"><slot name="actions"></slot></div>
3938
+ </div>
3939
+ `;
3940
+ }
3941
+ };
3942
+ Ke.styles = c`
3943
+ :host {
3944
+ display: block;
3945
+ font-family: var(--vox-font-family-base);
3946
+ }
3947
+
3948
+ .empty {
3949
+ display: flex;
3950
+ flex-direction: column;
3951
+ align-items: center;
3952
+ text-align: center;
3953
+ padding: var(--vox-space-8);
3954
+ border: 1px dashed var(--vox-color-border);
3955
+ border-radius: var(--vox-radius-lg);
3956
+ }
3957
+
3958
+ .icon {
3959
+ font-size: 32px;
3960
+ margin-bottom: var(--vox-space-3);
3961
+ }
3962
+
3963
+ .heading {
3964
+ margin: 0;
3965
+ font-size: 18px;
3966
+ font-weight: 600;
3967
+ color: var(--vox-color-text-1);
3968
+ }
3969
+
3970
+ .body {
3971
+ max-width: 32rem;
3972
+ margin-top: var(--vox-space-2);
3973
+ font-size: 14px;
3974
+ line-height: 1.6;
3975
+ color: var(--vox-color-text-2);
3976
+ }
3977
+
3978
+ .actions {
3979
+ display: flex;
3980
+ gap: var(--vox-space-3);
3981
+ flex-wrap: wrap;
3982
+ justify-content: center;
3983
+ margin-top: var(--vox-space-4);
3984
+ }
3985
+ `;
3986
+ lo([
3987
+ n()
3988
+ ], Ke.prototype, "heading", 2);
3989
+ Ke = lo([
3990
+ d("vox-empty-state")
3991
+ ], Ke);
3992
+ var Wr = Object.defineProperty, Gr = Object.getOwnPropertyDescriptor, St = (s, e, o, r) => {
3993
+ for (var t = r > 1 ? void 0 : r ? Gr(e, o) : e, a = s.length - 1, i; a >= 0; a--)
3994
+ (i = s[a]) && (t = (r ? i(e, o, t) : i(t)) || t);
3995
+ return r && t && Wr(e, o, t), t;
3996
+ };
3997
+ let dt = class extends p {
3998
+ render() {
3999
+ return l`
4000
+ <footer>
4001
+ <div class="inner">
4002
+ <div class="columns"><slot></slot></div>
4003
+ <div class="bottom"><slot name="bottom"></slot></div>
4004
+ </div>
4005
+ </footer>
4006
+ `;
4007
+ }
4008
+ };
4009
+ dt.styles = c`
4010
+ :host {
4011
+ display: block;
4012
+ font-family: var(--vox-font-family-base);
4013
+ background-color: var(--vox-color-bg-alt);
4014
+ border-top: 1px solid var(--vox-color-divider);
4015
+ }
4016
+
4017
+ .inner {
4018
+ max-width: 1280px;
4019
+ margin: 0 auto;
4020
+ padding: var(--vox-space-8) var(--vox-space-6);
4021
+ }
4022
+
4023
+ .columns {
4024
+ display: grid;
4025
+ grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
4026
+ gap: var(--vox-space-6);
4027
+ }
4028
+
4029
+ .bottom {
4030
+ margin-top: var(--vox-space-8);
4031
+ padding-top: var(--vox-space-4);
4032
+ border-top: 1px solid var(--vox-color-divider);
4033
+ font-size: 13px;
4034
+ color: var(--vox-color-text-3);
4035
+ }
4036
+ `;
4037
+ dt = St([
4038
+ d("vox-footer")
4039
+ ], dt);
4040
+ let We = class extends p {
4041
+ constructor() {
4042
+ super(...arguments), this.heading = "";
4043
+ }
4044
+ render() {
4045
+ return l`
4046
+ <h3 class="heading">${this.heading}</h3>
4047
+ <div class="links"><slot></slot></div>
4048
+ `;
4049
+ }
4050
+ };
4051
+ We.styles = c`
4052
+ :host {
4053
+ display: block;
4054
+ font-family: var(--vox-font-family-base);
4055
+ }
4056
+
4057
+ .heading {
4058
+ margin: 0 0 var(--vox-space-3);
4059
+ font-size: 13px;
4060
+ font-weight: 600;
4061
+ letter-spacing: 0.05em;
4062
+ text-transform: uppercase;
4063
+ color: var(--vox-color-text-1);
4064
+ }
4065
+
4066
+ .links {
4067
+ display: flex;
4068
+ flex-direction: column;
4069
+ gap: var(--vox-space-2);
4070
+ }
4071
+
4072
+ ::slotted(a) {
4073
+ color: var(--vox-color-text-2);
4074
+ font-size: 14px;
4075
+ text-decoration: none;
4076
+ }
4077
+
4078
+ ::slotted(a:hover) {
4079
+ color: var(--vox-color-brand-1);
4080
+ text-decoration: underline;
4081
+ }
4082
+ `;
4083
+ St([
4084
+ n()
4085
+ ], We.prototype, "heading", 2);
4086
+ We = St([
4087
+ d("vox-footer-column")
4088
+ ], We);
4089
+ var Xr = Object.defineProperty, Yr = Object.getOwnPropertyDescriptor, et = (s, e, o, r) => {
4090
+ for (var t = r > 1 ? void 0 : r ? Yr(e, o) : e, a = s.length - 1, i; a >= 0; a--)
4091
+ (i = s[a]) && (t = (r ? i(e, o, t) : i(t)) || t);
4092
+ return r && t && Xr(e, o, t), t;
4093
+ };
4094
+ let G = class extends p {
4095
+ constructor() {
4096
+ super(...arguments), this.cols = 0, this.min = "240px", this.gap = "md";
4097
+ }
4098
+ updated() {
4099
+ this.style.gridTemplateColumns = this.cols > 0 ? `repeat(${this.cols}, minmax(0, 1fr))` : `repeat(auto-fit, minmax(min(${this.min}, 100%), 1fr))`;
4100
+ }
4101
+ render() {
4102
+ return l`<slot></slot>`;
4103
+ }
4104
+ };
4105
+ G.styles = c`
4106
+ :host {
4107
+ display: grid;
4108
+ }
4109
+
4110
+ :host([gap='sm']) {
4111
+ gap: var(--vox-space-2);
4112
+ }
4113
+
4114
+ :host([gap='md']) {
4115
+ gap: var(--vox-space-4);
4116
+ }
4117
+
4118
+ :host([gap='lg']) {
4119
+ gap: var(--vox-space-6);
4120
+ }
4121
+ `;
4122
+ et([
4123
+ n({ type: Number })
4124
+ ], G.prototype, "cols", 2);
4125
+ et([
4126
+ n()
4127
+ ], G.prototype, "min", 2);
4128
+ et([
4129
+ n({ reflect: !0 })
4130
+ ], G.prototype, "gap", 2);
4131
+ G = et([
4132
+ d("vox-grid")
4133
+ ], G);
4134
+ var Zr = Object.defineProperty, Jr = Object.getOwnPropertyDescriptor, jt = (s, e, o, r) => {
4135
+ for (var t = r > 1 ? void 0 : r ? Jr(e, o) : e, a = s.length - 1, i; a >= 0; a--)
4136
+ (i = s[a]) && (t = (r ? i(e, o, t) : i(t)) || t);
4137
+ return r && t && Zr(e, o, t), t;
4138
+ };
4139
+ let me = class extends p {
4140
+ constructor() {
4141
+ super(...arguments), this.eyebrow = "", this.heading = "", this.hasActions = !1;
4142
+ }
4143
+ handleActionsSlotChange(s) {
4144
+ const e = s.target;
4145
+ this.hasActions = e.assignedNodes({ flatten: !0 }).length > 0, this.requestUpdate();
4146
+ }
4147
+ render() {
4148
+ return l`
4149
+ <header class="hero">
4150
+ ${this.eyebrow ? l`<p class="eyebrow">${this.eyebrow}</p>` : u}
4151
+ <h1 class="heading">${this.heading}</h1>
4152
+ <div class="body"><slot></slot></div>
4153
+ <div class="actions ${this.hasActions ? "has-content" : ""}">
4154
+ <slot name="actions" @slotchange=${this.handleActionsSlotChange}></slot>
4155
+ </div>
4156
+ </header>
4157
+ `;
4158
+ }
4159
+ };
4160
+ me.styles = c`
4161
+ :host {
4162
+ display: block;
4163
+ font-family: var(--vox-font-family-base);
4164
+ }
4165
+
4166
+ .hero {
4167
+ padding: var(--vox-space-8) 0;
4168
+ border-bottom: 1px solid var(--vox-color-divider);
4169
+ }
4170
+
4171
+ .eyebrow {
4172
+ margin: 0 0 var(--vox-space-2);
4173
+ font-size: 13px;
4174
+ font-weight: 600;
4175
+ letter-spacing: 0.05em;
4176
+ text-transform: uppercase;
4177
+ color: var(--vox-color-brand-1);
4178
+ }
4179
+
4180
+ .heading {
4181
+ margin: 0;
4182
+ font-family: var(--vox-font-family-display);
4183
+ font-size: 36px;
4184
+ font-weight: 600;
4185
+ line-height: 1.25;
4186
+ color: var(--vox-color-text-1);
4187
+ }
4188
+
4189
+ .body {
4190
+ max-width: 44rem;
4191
+ margin-top: var(--vox-space-3);
4192
+ font-size: 17px;
4193
+ line-height: 1.7;
4194
+ color: var(--vox-color-text-2);
4195
+ }
4196
+
4197
+ .body ::slotted(a) {
4198
+ color: var(--vox-color-brand-1);
4199
+ text-decoration: underline;
4200
+ }
4201
+
4202
+ .body ::slotted(a:hover) {
4203
+ color: var(--vox-color-brand-2);
4204
+ }
4205
+
4206
+ .actions {
4207
+ display: flex;
4208
+ gap: var(--vox-space-3);
4209
+ flex-wrap: wrap;
4210
+ margin-top: var(--vox-space-6);
4211
+ }
4212
+
4213
+ .actions:not(.has-content) {
4214
+ display: none;
4215
+ }
4216
+ `;
4217
+ jt([
4218
+ n()
4219
+ ], me.prototype, "eyebrow", 2);
4220
+ jt([
4221
+ n()
4222
+ ], me.prototype, "heading", 2);
4223
+ me = jt([
4224
+ d("vox-hero")
4225
+ ], me);
4226
+ var Qr = Object.defineProperty, es = Object.getOwnPropertyDescriptor, tt = (s, e, o, r) => {
4227
+ for (var t = r > 1 ? void 0 : r ? es(e, o) : e, a = s.length - 1, i; a >= 0; a--)
4228
+ (i = s[a]) && (t = (r ? i(e, o, t) : i(t)) || t);
4229
+ return r && t && Qr(e, o, t), t;
4230
+ };
4231
+ let pt = class extends p {
4232
+ render() {
4233
+ return l`<slot></slot>`;
4234
+ }
4235
+ };
4236
+ pt.styles = c`
4237
+ :host {
4238
+ display: grid;
4239
+ grid-template-columns: repeat(auto-fit, minmax(min(260px, 100%), 1fr));
4240
+ gap: var(--vox-space-4);
4241
+ }
4242
+ `;
4243
+ pt = tt([
4244
+ d("vox-link-hub")
4245
+ ], pt);
4246
+ let ye = class extends p {
4247
+ constructor() {
4248
+ super(...arguments), this.href = "#", this.heading = "";
4249
+ }
4250
+ render() {
4251
+ return l`
4252
+ <a href=${this.href}>
4253
+ <span class="heading">
4254
+ ${this.heading}
4255
+ <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
4256
+ <path d="M5 12h14" />
4257
+ <path d="m13 6 6 6-6 6" />
4258
+ </svg>
4259
+ </span>
4260
+ <span class="body"><slot></slot></span>
4261
+ </a>
4262
+ `;
4263
+ }
4264
+ };
4265
+ ye.styles = c`
4266
+ :host {
4267
+ display: block;
4268
+ font-family: var(--vox-font-family-base);
4269
+ }
4270
+
4271
+ a {
4272
+ display: block;
4273
+ height: 100%;
4274
+ box-sizing: border-box;
4275
+ padding: var(--vox-space-4);
4276
+ border-bottom: 2px solid var(--vox-color-divider);
4277
+ text-decoration: none;
4278
+ transition: border-color var(--vox-transition-base);
4279
+ }
4280
+
4281
+ a:hover,
4282
+ a:focus-visible {
4283
+ border-bottom-color: var(--vox-color-brand-1);
4284
+ }
4285
+
4286
+ a:focus-visible {
4287
+ outline: 2px solid var(--vox-color-brand-1);
4288
+ outline-offset: 2px;
4289
+ }
4290
+
4291
+ .heading {
4292
+ display: flex;
4293
+ align-items: center;
4294
+ gap: var(--vox-space-2);
4295
+ font-size: 16px;
4296
+ font-weight: 600;
4297
+ color: var(--vox-color-brand-1);
4298
+ }
4299
+
4300
+ .heading svg {
4301
+ width: 14px;
4302
+ height: 14px;
4303
+ transition: transform var(--vox-transition-fast);
4304
+ }
4305
+
4306
+ a:hover .heading svg {
4307
+ transform: translateX(3px);
4308
+ }
4309
+
4310
+ .body {
4311
+ margin-top: var(--vox-space-1);
4312
+ font-size: 14px;
4313
+ line-height: 1.6;
4314
+ color: var(--vox-color-text-2);
4315
+ }
4316
+ `;
4317
+ tt([
4318
+ n()
4319
+ ], ye.prototype, "href", 2);
4320
+ tt([
4321
+ n()
4322
+ ], ye.prototype, "heading", 2);
4323
+ ye = tt([
4324
+ d("vox-link-hub-item")
4325
+ ], ye);
4326
+ var ts = Object.defineProperty, os = Object.getOwnPropertyDescriptor, kt = (s, e, o, r) => {
4327
+ for (var t = r > 1 ? void 0 : r ? os(e, o) : e, a = s.length - 1, i; a >= 0; a--)
4328
+ (i = s[a]) && (t = (r ? i(e, o, t) : i(t)) || t);
4329
+ return r && t && ts(e, o, t), t;
4330
+ };
4331
+ let $e = class extends p {
4332
+ constructor() {
4333
+ super(...arguments), this.size = "md", this.label = "Loading";
4334
+ }
4335
+ render() {
4336
+ return l`
4337
+ <div role="status">
4338
+ <div class="spinner"></div>
4339
+ <span class="visually-hidden">${this.label}</span>
4340
+ </div>
4341
+ `;
4342
+ }
4343
+ };
4344
+ $e.styles = c`
4345
+ :host {
4346
+ display: inline-block;
4347
+ }
4348
+
4349
+ .spinner {
4350
+ box-sizing: border-box;
4351
+ border-radius: 50%;
4352
+ border-style: solid;
4353
+ border-color: var(--vox-color-brand-soft);
4354
+ border-top-color: var(--vox-color-brand-3);
4355
+ animation: spin 0.8s linear infinite;
4356
+ }
4357
+
4358
+ :host([size='sm']) .spinner {
4359
+ width: 16px;
4360
+ height: 16px;
4361
+ border-width: 2px;
4362
+ }
4363
+
4364
+ :host([size='md']) .spinner {
4365
+ width: 28px;
4366
+ height: 28px;
4367
+ border-width: 3px;
4368
+ }
4369
+
4370
+ :host([size='lg']) .spinner {
4371
+ width: 44px;
4372
+ height: 44px;
4373
+ border-width: 4px;
4374
+ }
4375
+
4376
+ @keyframes spin {
4377
+ to {
4378
+ transform: rotate(360deg);
4379
+ }
4380
+ }
4381
+
4382
+ @media (prefers-reduced-motion: reduce) {
4383
+ .spinner {
4384
+ animation-duration: 2.4s;
4385
+ }
4386
+ }
4387
+
4388
+ .visually-hidden {
4389
+ position: absolute;
4390
+ width: 1px;
4391
+ height: 1px;
4392
+ overflow: hidden;
4393
+ clip: rect(0 0 0 0);
4394
+ white-space: nowrap;
4395
+ }
4396
+ `;
4397
+ kt([
4398
+ n({ reflect: !0 })
4399
+ ], $e.prototype, "size", 2);
4400
+ kt([
4401
+ n()
4402
+ ], $e.prototype, "label", 2);
4403
+ $e = kt([
4404
+ d("vox-loader")
4405
+ ], $e);
4406
+ var rs = Object.defineProperty, ss = Object.getOwnPropertyDescriptor, co = (s, e, o, r) => {
4407
+ for (var t = r > 1 ? void 0 : r ? ss(e, o) : e, a = s.length - 1, i; a >= 0; a--)
4408
+ (i = s[a]) && (t = (r ? i(e, o, t) : i(t)) || t);
4409
+ return r && t && rs(e, o, t), t;
4410
+ };
4411
+ let Ge = class extends p {
4412
+ constructor() {
4413
+ super(...arguments), this.label = "Pagination";
4414
+ }
4415
+ render() {
4416
+ return l`
4417
+ <nav aria-label=${this.label}>
4418
+ <slot></slot>
4419
+ </nav>
4420
+ `;
4421
+ }
4422
+ };
4423
+ Ge.styles = c`
4424
+ :host {
4425
+ display: block;
4426
+ font-family: var(--vox-font-family-base);
4427
+ }
4428
+
4429
+ nav {
4430
+ display: flex;
4431
+ gap: var(--vox-space-1);
4432
+ flex-wrap: wrap;
4433
+ }
4434
+
4435
+ ::slotted(a) {
4436
+ display: inline-flex;
4437
+ align-items: center;
4438
+ justify-content: center;
4439
+ min-width: 34px;
4440
+ height: 34px;
4441
+ padding: 0 var(--vox-space-2);
4442
+ border-radius: var(--vox-radius-md);
4443
+ color: var(--vox-color-text-2);
4444
+ font-size: 14px;
4445
+ font-weight: 500;
4446
+ text-decoration: none;
4447
+ transition:
4448
+ color var(--vox-transition-fast),
4449
+ background-color var(--vox-transition-fast);
4450
+ }
4451
+
4452
+ ::slotted(a:hover) {
4453
+ color: var(--vox-color-brand-1);
4454
+ background-color: var(--vox-color-brand-soft);
4455
+ }
4456
+
4457
+ ::slotted(a[aria-current='page']) {
4458
+ background-color: var(--vox-color-brand-3);
4459
+ color: var(--vox-color-text-inverse);
4460
+ font-weight: 600;
4461
+ }
4462
+ `;
4463
+ co([
4464
+ n()
4465
+ ], Ge.prototype, "label", 2);
4466
+ Ge = co([
4467
+ d("vox-pagination")
4468
+ ], Ge);
4469
+ var as = Object.defineProperty, is = Object.getOwnPropertyDescriptor, Dt = (s, e, o, r) => {
4470
+ for (var t = r > 1 ? void 0 : r ? is(e, o) : e, a = s.length - 1, i; a >= 0; a--)
4471
+ (i = s[a]) && (t = (r ? i(e, o, t) : i(t)) || t);
4472
+ return r && t && as(e, o, t), t;
4473
+ };
4474
+ let _e = class extends p {
4475
+ constructor() {
4476
+ super(...arguments), this.attribution = "", this.detail = "";
4477
+ }
4478
+ render() {
4479
+ return l`
4480
+ <blockquote>
4481
+ <div class="text"><slot></slot></div>
4482
+ ${this.attribution ? l`
4483
+ <footer>
4484
+ <span class="attribution">${this.attribution}</span>
4485
+ ${this.detail ? l`<span class="detail"> — ${this.detail}</span>` : u}
4486
+ </footer>
4487
+ ` : u}
4488
+ </blockquote>
4489
+ `;
4490
+ }
4491
+ };
4492
+ _e.styles = c`
4493
+ :host {
4494
+ display: block;
4495
+ font-family: var(--vox-font-family-base);
4496
+ }
4497
+
4498
+ blockquote {
4499
+ margin: 0;
4500
+ padding-left: var(--vox-space-6);
4501
+ border-left: 4px solid var(--vox-color-brand-3);
4502
+ }
4503
+
4504
+ .text {
4505
+ font-family: var(--vox-font-family-display);
4506
+ font-style: italic;
4507
+ font-size: 20px;
4508
+ line-height: 1.6;
4509
+ color: var(--vox-color-text-1);
4510
+ }
4511
+
4512
+ .text::before {
4513
+ content: '“';
4514
+ }
4515
+
4516
+ .text::after {
4517
+ content: '”';
4518
+ }
4519
+
4520
+ footer {
4521
+ margin-top: var(--vox-space-3);
4522
+ font-size: 14px;
4523
+ }
4524
+
4525
+ .attribution {
4526
+ font-weight: 600;
4527
+ color: var(--vox-color-text-1);
4528
+ }
4529
+
4530
+ .detail {
4531
+ color: var(--vox-color-text-2);
4532
+ }
4533
+ `;
4534
+ Dt([
4535
+ n()
4536
+ ], _e.prototype, "attribution", 2);
4537
+ Dt([
4538
+ n()
4539
+ ], _e.prototype, "detail", 2);
4540
+ _e = Dt([
4541
+ d("vox-quote")
4542
+ ], _e);
4543
+ var ns = Object.defineProperty, ls = Object.getOwnPropertyDescriptor, L = (s, e, o, r) => {
4544
+ for (var t = r > 1 ? void 0 : r ? ls(e, o) : e, a = s.length - 1, i; a >= 0; a--)
4545
+ (i = s[a]) && (t = (r ? i(e, o, t) : i(t)) || t);
4546
+ return r && t && ns(e, o, t), t;
4547
+ };
4548
+ let Xe = class extends p {
4549
+ constructor() {
4550
+ super(...arguments), this.heading = "", this.hasDescription = !1;
4551
+ }
4552
+ handleDescriptionSlotChange(s) {
4553
+ const e = s.target;
4554
+ this.hasDescription = e.assignedNodes({ flatten: !0 }).length > 0, this.requestUpdate();
4555
+ }
4556
+ render() {
4557
+ return l`
4558
+ <h2 class="heading">${this.heading}</h2>
4559
+ <div class="description ${this.hasDescription ? "has-content" : ""}">
4560
+ <slot
4561
+ name="description"
4562
+ @slotchange=${this.handleDescriptionSlotChange}
4563
+ ></slot>
4564
+ </div>
4565
+ <div class="grid">
4566
+ <slot></slot>
4567
+ </div>
4568
+ `;
4569
+ }
4570
+ };
4571
+ Xe.styles = c`
4572
+ :host {
4573
+ display: block;
4574
+ font-family: var(--vox-font-family-base);
4575
+ }
4576
+
4577
+ .heading {
4578
+ margin: 0;
4579
+ font-size: 22px;
4580
+ font-weight: 700;
4581
+ line-height: 1.3;
4582
+ color: var(--vox-color-text-1);
4583
+ }
4584
+
4585
+ .description {
4586
+ margin: var(--vox-space-2) 0 0;
4587
+ font-size: 15px;
4588
+ line-height: 1.7;
4589
+ color: var(--vox-color-text-2);
4590
+ }
4591
+
4592
+ .description:not(.has-content) {
4593
+ display: none;
4594
+ }
4595
+
4596
+ .grid {
4597
+ display: grid;
4598
+ grid-template-columns: repeat(auto-fit, minmax(min(220px, 100%), 1fr));
4599
+ gap: var(--vox-space-4);
4600
+ margin-top: var(--vox-space-6);
4601
+ }
4602
+ `;
4603
+ L([
4604
+ n()
4605
+ ], Xe.prototype, "heading", 2);
4606
+ Xe = L([
4607
+ d("vox-sponsor-tier")
4608
+ ], Xe);
4609
+ let R = class extends p {
4610
+ constructor() {
4611
+ super(...arguments), this.name = "", this.hasBody = !1;
4612
+ }
4613
+ handleBodySlotChange(s) {
4614
+ const e = s.target;
4615
+ this.hasBody = e.assignedNodes({ flatten: !0 }).length > 0, this.requestUpdate();
4616
+ }
4617
+ render() {
4618
+ const s = l`
4619
+ <div class="logo ${this.logo ? "has-logo" : ""}">
4620
+ ${this.logo ? l`<img src=${this.logo} alt=${this.name} />` : u}
4621
+ </div>
4622
+ <span class="name">${this.name}</span>
4623
+ <div class="body ${this.hasBody ? "has-content" : ""}">
4624
+ <slot @slotchange=${this.handleBodySlotChange}></slot>
4625
+ </div>
4626
+ `;
4627
+ return this.href !== void 0 ? l`<a
4628
+ class="sponsor"
4629
+ href=${this.href}
4630
+ target=${this.target ?? u}
4631
+ >${s}</a
4632
+ >` : l`<div class="sponsor">${s}</div>`;
4633
+ }
4634
+ };
4635
+ R.styles = c`
4636
+ :host {
4637
+ display: block;
4638
+ }
4639
+
4640
+ .sponsor {
4641
+ display: flex;
4642
+ flex-direction: column;
4643
+ height: 100%;
4644
+ box-sizing: border-box;
4645
+ gap: var(--vox-space-3);
4646
+ padding: var(--vox-space-4);
4647
+ background-color: var(--vox-color-bg-soft);
4648
+ border: 1px solid var(--vox-color-bg-soft);
4649
+ border-radius: var(--vox-radius-lg);
4650
+ font-family: var(--vox-font-family-base);
4651
+ text-decoration: none;
4652
+ transition: border-color var(--vox-transition-base);
4653
+ }
4654
+
4655
+ a.sponsor:hover,
4656
+ a.sponsor:focus-visible {
4657
+ border-color: var(--vox-color-brand-1);
4658
+ }
4659
+
4660
+ a.sponsor:focus-visible {
4661
+ outline: 2px solid var(--vox-color-brand-1);
4662
+ outline-offset: 2px;
4663
+ }
4664
+
4665
+ .logo {
4666
+ display: flex;
4667
+ align-items: center;
4668
+ justify-content: center;
4669
+ height: 64px;
4670
+ background-color: var(--vox-color-bg-elv);
4671
+ border-radius: var(--vox-radius-md);
4672
+ }
4673
+
4674
+ .logo:not(.has-logo) {
4675
+ display: none;
4676
+ }
4677
+
4678
+ .logo img {
4679
+ max-width: 80%;
4680
+ max-height: 40px;
4681
+ object-fit: contain;
4682
+ }
4683
+
4684
+ .name {
4685
+ font-size: 15px;
4686
+ font-weight: 600;
4687
+ line-height: 1.4;
4688
+ color: var(--vox-color-text-1);
4689
+ }
4690
+
4691
+ .body {
4692
+ font-size: 13px;
4693
+ line-height: 1.6;
4694
+ color: var(--vox-color-text-2);
4695
+ }
4696
+
4697
+ .body:not(.has-content) {
4698
+ display: none;
4699
+ }
4700
+ `;
4701
+ L([
4702
+ n()
4703
+ ], R.prototype, "name", 2);
4704
+ L([
4705
+ n()
4706
+ ], R.prototype, "href", 2);
4707
+ L([
4708
+ n()
4709
+ ], R.prototype, "logo", 2);
4710
+ L([
4711
+ n()
4712
+ ], R.prototype, "target", 2);
4713
+ R = L([
4714
+ d("vox-sponsor")
4715
+ ], R);
4716
+ var cs = Object.defineProperty, ds = Object.getOwnPropertyDescriptor, zt = (s, e, o, r) => {
4717
+ for (var t = r > 1 ? void 0 : r ? ds(e, o) : e, a = s.length - 1, i; a >= 0; a--)
4718
+ (i = s[a]) && (t = (r ? i(e, o, t) : i(t)) || t);
4719
+ return r && t && cs(e, o, t), t;
4720
+ };
4721
+ let we = class extends p {
4722
+ constructor() {
4723
+ super(...arguments), this.value = "", this.label = "";
4724
+ }
4725
+ render() {
4726
+ return l`
4727
+ <div class="value">${this.value}</div>
4728
+ <div class="label">${this.label}</div>
4729
+ <div class="description"><slot></slot></div>
4730
+ `;
4731
+ }
4732
+ };
4733
+ we.styles = c`
4734
+ :host {
4735
+ display: block;
4736
+ font-family: var(--vox-font-family-base);
4737
+ }
4738
+
4739
+ .value {
4740
+ font-size: 40px;
4741
+ font-weight: 700;
4742
+ line-height: 1.1;
4743
+ color: var(--vox-color-brand-1);
4744
+ }
4745
+
4746
+ .label {
4747
+ margin-top: var(--vox-space-1);
4748
+ font-size: 14px;
4749
+ font-weight: 600;
4750
+ color: var(--vox-color-text-1);
4751
+ }
4752
+
4753
+ .description {
4754
+ margin-top: var(--vox-space-1);
4755
+ font-size: 13px;
4756
+ line-height: 1.6;
4757
+ color: var(--vox-color-text-2);
4758
+ }
4759
+ `;
4760
+ zt([
4761
+ n()
4762
+ ], we.prototype, "value", 2);
4763
+ zt([
4764
+ n()
4765
+ ], we.prototype, "label", 2);
4766
+ we = zt([
4767
+ d("vox-stat")
4768
+ ], we);
4769
+ var ps = Object.defineProperty, hs = Object.getOwnPropertyDescriptor, Te = (s, e, o, r) => {
4770
+ for (var t = r > 1 ? void 0 : r ? hs(e, o) : e, a = s.length - 1, i; a >= 0; a--)
4771
+ (i = s[a]) && (t = (r ? i(e, o, t) : i(t)) || t);
4772
+ return r && t && ps(e, o, t), t;
4773
+ };
4774
+ let ht = class extends p {
4775
+ numberSteps() {
4776
+ this.querySelectorAll("vox-step").forEach((s, e) => {
4777
+ s.number = e + 1;
4778
+ });
4779
+ }
4780
+ render() {
4781
+ return l`
4782
+ <div class="steps" role="list" aria-label="Progress">
4783
+ <slot @slotchange=${this.numberSteps}></slot>
4784
+ </div>
4785
+ `;
4786
+ }
4787
+ };
4788
+ ht.styles = c`
4789
+ :host {
4790
+ display: block;
4791
+ }
4792
+
4793
+ .steps {
4794
+ display: flex;
4795
+ align-items: flex-start;
4796
+ }
4797
+
4798
+ ::slotted(vox-step) {
4799
+ flex: 1 1 0;
4800
+ }
4801
+ `;
4802
+ ht = Te([
4803
+ d("vox-step-indicator")
4804
+ ], ht);
4805
+ let X = class extends p {
4806
+ constructor() {
4807
+ super(...arguments), this.label = "", this.state = "upcoming", this.number = 1;
4808
+ }
4809
+ render() {
4810
+ return l`
4811
+ <div
4812
+ class="step"
4813
+ role="listitem"
4814
+ aria-current=${this.state === "current" ? "step" : "false"}
4815
+ >
4816
+ <span class="marker">
4817
+ ${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">
4818
+ <path d="m4 12 5 5L20 6" />
4819
+ </svg>` : this.number}
4820
+ </span>
4821
+ <span class="label">${this.label}</span>
4822
+ </div>
4823
+ `;
4824
+ }
4825
+ };
4826
+ X.styles = c`
4827
+ :host {
4828
+ display: block;
4829
+ font-family: var(--vox-font-family-base);
4830
+ }
4831
+
4832
+ .step {
4833
+ position: relative;
4834
+ display: flex;
4835
+ flex-direction: column;
4836
+ align-items: center;
4837
+ text-align: center;
4838
+ gap: var(--vox-space-2);
4839
+ padding: 0 var(--vox-space-2);
4840
+ }
4841
+
4842
+ /* Connector line to the previous step. */
4843
+ :host(:not(:first-child)) .step::before {
4844
+ content: '';
4845
+ position: absolute;
4846
+ top: 14px;
4847
+ right: 50%;
4848
+ width: 100%;
4849
+ height: 2px;
4850
+ background-color: var(--vox-color-divider);
4851
+ z-index: 0;
4852
+ }
4853
+
4854
+ :host([state='complete']) .step::before {
4855
+ background-color: var(--vox-color-brand-3);
4856
+ }
4857
+
4858
+ .marker {
4859
+ position: relative;
4860
+ z-index: 1;
4861
+ display: flex;
4862
+ align-items: center;
4863
+ justify-content: center;
4864
+ width: 28px;
4865
+ height: 28px;
4866
+ border-radius: 50%;
4867
+ border: 2px solid var(--vox-color-divider);
4868
+ background-color: var(--vox-color-bg);
4869
+ color: var(--vox-color-text-2);
4870
+ font-size: 13px;
4871
+ font-weight: 600;
4872
+ }
4873
+
4874
+ :host([state='complete']) .marker {
4875
+ background-color: var(--vox-color-brand-3);
4876
+ border-color: var(--vox-color-brand-3);
4877
+ color: var(--vox-color-text-inverse);
4878
+ }
4879
+
4880
+ :host([state='current']) .marker {
4881
+ border-color: var(--vox-color-brand-3);
4882
+ color: var(--vox-color-brand-1);
4883
+ }
4884
+
4885
+ .marker svg {
4886
+ width: 14px;
4887
+ height: 14px;
4888
+ }
4889
+
4890
+ .label {
4891
+ font-size: 13px;
4892
+ color: var(--vox-color-text-2);
4893
+ }
4894
+
4895
+ :host([state='current']) .label {
4896
+ font-weight: 600;
4897
+ color: var(--vox-color-text-1);
4898
+ }
4899
+ `;
4900
+ Te([
4901
+ n()
4902
+ ], X.prototype, "label", 2);
4903
+ Te([
4904
+ n({ reflect: !0 })
4905
+ ], X.prototype, "state", 2);
4906
+ Te([
4907
+ n({ type: Number })
4908
+ ], X.prototype, "number", 2);
4909
+ X = Te([
4910
+ d("vox-step")
4911
+ ], X);
4912
+ var vs = Object.defineProperty, us = Object.getOwnPropertyDescriptor, ot = (s, e, o, r) => {
4913
+ for (var t = r > 1 ? void 0 : r ? us(e, o) : e, a = s.length - 1, i; a >= 0; a--)
4914
+ (i = s[a]) && (t = (r ? i(e, o, t) : i(t)) || t);
4915
+ return r && t && vs(e, o, t), t;
4916
+ };
4917
+ let vt = class extends p {
4918
+ render() {
4919
+ return l`<slot></slot>`;
4920
+ }
4921
+ };
4922
+ vt.styles = c`
4923
+ :host {
4924
+ display: block;
4925
+ }
4926
+ `;
4927
+ vt = ot([
4928
+ d("vox-timeline")
4929
+ ], vt);
4930
+ let Pe = class extends p {
4931
+ constructor() {
4932
+ super(...arguments), this.heading = "", this.date = "";
4933
+ }
4934
+ render() {
4935
+ return l`
4936
+ <div class="item">
4937
+ <span class="dot" aria-hidden="true"></span>
4938
+ ${this.date ? l`<div class="date">${this.date}</div>` : u}
4939
+ <h3 class="heading">${this.heading}</h3>
4940
+ <div class="body"><slot></slot></div>
4941
+ </div>
4942
+ `;
4943
+ }
4944
+ };
4945
+ Pe.styles = c`
4946
+ :host {
4947
+ display: block;
4948
+ font-family: var(--vox-font-family-base);
4949
+ }
4950
+
4951
+ .item {
4952
+ position: relative;
4953
+ padding: 0 0 var(--vox-space-6) var(--vox-space-6);
4954
+ border-left: 2px solid var(--vox-color-divider);
4955
+ }
4956
+
4957
+ :host(:last-child) .item {
4958
+ border-left-color: transparent;
4959
+ padding-bottom: 0;
4960
+ }
4961
+
4962
+ .dot {
4963
+ position: absolute;
4964
+ top: 4px;
4965
+ left: -7px;
4966
+ width: 12px;
4967
+ height: 12px;
4968
+ border-radius: 50%;
4969
+ background-color: var(--vox-color-brand-3);
4970
+ border: 2px solid var(--vox-color-bg);
4971
+ }
4972
+
4973
+ .date {
4974
+ font-size: 12px;
4975
+ font-weight: 600;
4976
+ letter-spacing: 0.05em;
4977
+ text-transform: uppercase;
4978
+ color: var(--vox-color-text-3);
4979
+ }
4980
+
4981
+ .heading {
4982
+ margin: var(--vox-space-1) 0 0;
4983
+ font-size: 16px;
4984
+ font-weight: 600;
4985
+ color: var(--vox-color-text-1);
4986
+ }
4987
+
4988
+ .body {
4989
+ margin-top: var(--vox-space-1);
4990
+ font-size: 14px;
4991
+ line-height: 1.6;
4992
+ color: var(--vox-color-text-2);
4993
+ }
4994
+ `;
4995
+ ot([
4996
+ n()
4997
+ ], Pe.prototype, "heading", 2);
4998
+ ot([
4999
+ n()
5000
+ ], Pe.prototype, "date", 2);
5001
+ Pe = ot([
5002
+ d("vox-timeline-item")
5003
+ ], Pe);
5004
+ export {
5005
+ He as VoxAccordion,
5006
+ fe as VoxAccordionItem,
5007
+ N as VoxAlert,
5008
+ T as VoxAvatar,
5009
+ Ie as VoxBadge,
5010
+ le as VoxBillboard,
5011
+ lt as VoxBreadcrumbs,
5012
+ $ as VoxButton,
5013
+ ge as VoxCalendarTile,
5014
+ be as VoxCallout,
5015
+ W as VoxCard,
5016
+ ae as VoxCheckbox,
5017
+ se as VoxCta,
5018
+ Fe as VoxCtaBand,
5019
+ V as VoxDialog,
5020
+ ue as VoxDisclosure,
5021
+ xe as VoxDropdown,
5022
+ Ke as VoxEmptyState,
5023
+ O as VoxFileInput,
5024
+ dt as VoxFooter,
5025
+ We as VoxFooterColumn,
5026
+ G as VoxGrid,
5027
+ ce as VoxHeader,
5028
+ me as VoxHero,
5029
+ A as VoxInput,
5030
+ nt as VoxInputGroup,
5031
+ pt as VoxLinkHub,
5032
+ ye as VoxLinkHubItem,
5033
+ $e as VoxLoader,
5034
+ Ge as VoxPagination,
5035
+ _e as VoxQuote,
5036
+ K as VoxRadio,
5037
+ Ue as VoxRadioGroup,
5038
+ ie as VoxSelect,
5039
+ B as VoxSeriesNav,
5040
+ Le as VoxSidenav,
5041
+ de as VoxSidenavGroup,
5042
+ pe as VoxSidenavItem,
5043
+ R as VoxSponsor,
5044
+ Xe as VoxSponsorTier,
5045
+ we as VoxStat,
5046
+ X as VoxStep,
5047
+ ht as VoxStepIndicator,
5048
+ qe as VoxSubnav,
5049
+ ne as VoxSwitch,
5050
+ he as VoxTab,
5051
+ ve as VoxTabPanel,
5052
+ ct as VoxTabs,
5053
+ z as VoxTextarea,
5054
+ F as VoxThemeToggle,
5055
+ vt as VoxTimeline,
5056
+ Pe as VoxTimelineItem
5057
+ };