@meddleware/ui 0.1.27 → 0.1.29

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/ui.js CHANGED
@@ -1,30 +1,39 @@
1
- import { Fragment as e, computed as t, createBlock as n, createCommentVNode as r, createElementBlock as i, createElementVNode as a, createTextVNode as o, defineComponent as s, mergeProps as c, normalizeClass as l, normalizeStyle as u, onBeforeUnmount as ee, onMounted as d, onUnmounted as f, openBlock as p, ref as m, renderList as h, renderSlot as g, resolveDynamicComponent as te, toDisplayString as _, unref as v, useModel as ne, useSlots as re, vModelSelect as ie, watch as ae, withCtx as oe, withDirectives as se } from "vue";
1
+ import { Fragment as e, computed as t, createBlock as n, createCommentVNode as r, createElementBlock as i, createElementVNode as a, createTextVNode as o, createVNode as s, defineComponent as c, mergeModels as l, normalizeClass as u, onBeforeUnmount as d, onMounted as f, onUnmounted as p, openBlock as m, ref as h, renderList as g, renderSlot as _, resolveDynamicComponent as v, toDisplayString as y, unref as b, useCssVars as x, useId as S, useModel as C, useSlots as w, vModelSelect as T, watch as E, withCtx as D, withDirectives as O } from "vue";
2
2
  //#region src/internal/panel.ts
3
- function y(e, t) {
3
+ function k(e, t) {
4
4
  let n;
5
5
  return n = e === "transparent" ? {
6
6
  "--_bg": "transparent",
7
7
  "--_surface": "transparent",
8
8
  "--_text": "var(--text)",
9
9
  "--_muted": "var(--muted)",
10
- "--_border": "transparent"
10
+ "--_border": "transparent",
11
+ "--_ok": "var(--ok)",
12
+ "--_danger": "var(--danger)",
13
+ "--_info": "var(--info)"
11
14
  } : e === "light" ? {
12
15
  "--_bg": "var(--mw-panel-light-bg)",
13
16
  "--_surface": "var(--mw-panel-light-surface)",
14
17
  "--_text": "var(--mw-panel-light-text)",
15
18
  "--_muted": "var(--mw-panel-light-muted)",
16
- "--_border": "var(--mw-panel-light-border)"
19
+ "--_border": "var(--mw-panel-light-border)",
20
+ "--_ok": "var(--mw-panel-light-ok, #177542)",
21
+ "--_danger": "var(--mw-panel-light-danger, #b3261e)",
22
+ "--_info": "var(--mw-panel-light-info, #1558b5)"
17
23
  } : {
18
24
  "--_bg": "var(--mw-panel-dark-bg)",
19
25
  "--_surface": "var(--mw-panel-dark-surface)",
20
26
  "--_text": "var(--mw-panel-dark-text)",
21
27
  "--_muted": "var(--mw-panel-dark-muted)",
22
- "--_border": "var(--mw-panel-dark-border)"
23
- }, t && (t.bg && (n["--_bg"] = t.bg), t.surface && (n["--_surface"] = t.surface), t.text && (n["--_text"] = t.text), t.muted && (n["--_muted"] = t.muted), t.border && (n["--_border"] = t.border)), n;
28
+ "--_border": "var(--mw-panel-dark-border)",
29
+ "--_ok": "var(--mw-panel-dark-ok, #5bb392)",
30
+ "--_danger": "var(--mw-panel-dark-danger, #f08a7e)",
31
+ "--_info": "var(--mw-panel-dark-info, #6ea8fe)"
32
+ }, t && (t.bg && (n["--_bg"] = t.bg), t.surface && (n["--_surface"] = t.surface), t.text && (n["--_text"] = t.text), t.muted && (n["--_muted"] = t.muted), t.border && (n["--_border"] = t.border), t.ok && (n["--_ok"] = t.ok), t.danger && (n["--_danger"] = t.danger), t.info && (n["--_info"] = t.info)), n;
24
33
  }
25
34
  //#endregion
26
35
  //#region src/components/AppHeader.vue?vue&type=script&setup=true&lang.ts
27
- var ce = { class: "mw-header__brand" }, le = { class: "mw-header__center" }, ue = { class: "mw-header__actions" }, de = /*@__PURE__*/ s({
36
+ var A = /*@__PURE__*/ c({
28
37
  __name: "AppHeader",
29
38
  props: {
30
39
  variant: { default: "dark" },
@@ -39,42 +48,40 @@ var ce = { class: "mw-header__brand" }, le = { class: "mw-header__center" }, ue
39
48
  }
40
49
  },
41
50
  setup(e) {
42
- let n = e, r = t(() => y(n.variant, n.colors)), o = m(!1), s = null;
43
- return d(() => {
44
- n.solidifyOnScroll && typeof window < "u" && (s = () => {
45
- o.value = window.scrollY > 8;
46
- }, s(), window.addEventListener("scroll", s, { passive: !0 }));
47
- }), ee(() => {
48
- s && window.removeEventListener("scroll", s);
49
- }), (t, n) => (p(), i("header", {
50
- class: l(["mw-header", [`mw-header--${e.variant}`, {
51
- "mw-header--sticky": e.sticky,
52
- "mw-header--scrolled": e.solidifyOnScroll && o.value
53
- }]]),
54
- style: u(r.value)
55
- }, [
56
- a("div", ce, [g(t.$slots, "brand", {}, void 0, !0)]),
57
- a("div", le, [g(t.$slots, "default", {}, void 0, !0)]),
58
- a("div", ue, [g(t.$slots, "actions", {}, void 0, !0)])
59
- ], 6));
60
- }
61
- }), b = (e, t) => {
51
+ x((e) => ({
52
+ v207c6e6c: r.value["--_bg"],
53
+ f304fa44: r.value["--_surface"],
54
+ v25353d32: r.value["--_text"],
55
+ v2a36159c: r.value["--_muted"],
56
+ v65041df1: r.value["--_border"],
57
+ v20707ebe: r.value["--_ok"],
58
+ v49861e28: r.value["--_danger"],
59
+ v12e68073: r.value["--_info"]
60
+ }));
61
+ let n = e, r = t(() => k(n.variant, n.colors)), a = h(!1), o = null;
62
+ return f(() => {
63
+ n.solidifyOnScroll && typeof window < "u" && (o = () => {
64
+ a.value = window.scrollY > 8;
65
+ }, o(), window.addEventListener("scroll", o, { passive: !0 }));
66
+ }), d(() => {
67
+ o && window.removeEventListener("scroll", o);
68
+ }), (t, n) => (m(), i("header", { class: u(["mw-header", [`mw-header--${e.variant}`, {
69
+ "mw-header--sticky": e.sticky,
70
+ "mw-header--scrolled": e.solidifyOnScroll && a.value
71
+ }]]) }, [
72
+ _(t.$slots, "brand"),
73
+ _(t.$slots, "default"),
74
+ _(t.$slots, "actions")
75
+ ], 2));
76
+ }
77
+ }), j = (e, t) => {
62
78
  let n = e.__vccOpts || e;
63
79
  for (let [e, r] of t) n[e] = r;
64
80
  return n;
65
- }, x = /*#__PURE__*/ b(de, [["__scopeId", "data-v-a7df94dc"]]), S = {
66
- key: 0,
67
- class: "mw-sidebar__head"
68
- }, C = {
81
+ }, ee = /*#__PURE__*/ j(A, [["__scopeId", "data-v-4c177b22"]]), te = {
69
82
  class: "mw-sidebar__nav",
70
83
  "aria-label": "Primary"
71
- }, w = {
72
- key: 1,
73
- class: "mw-sidebar__body"
74
- }, T = {
75
- key: 2,
76
- class: "mw-sidebar__foot"
77
- }, E = /*#__PURE__*/ b(/* @__PURE__ */ s({
84
+ }, ne = /*#__PURE__*/ j(/* @__PURE__ */ c({
78
85
  __name: "AppSidebar",
79
86
  props: {
80
87
  variant: { default: "dark" },
@@ -82,24 +89,29 @@ var ce = { class: "mw-header__brand" }, le = { class: "mw-header__center" }, ue
82
89
  width: {}
83
90
  },
84
91
  setup(e) {
85
- let n = e, o = t(() => {
86
- let e = y(n.variant, n.colors);
87
- return n.width && (e["--mw-sidebar-width"] = n.width), e;
88
- });
89
- return (t, n) => (p(), i("aside", {
90
- class: l(["mw-sidebar", `mw-sidebar--${e.variant}`]),
91
- style: u(o.value)
92
- }, [
93
- t.$slots.head ? (p(), i("div", S, [g(t.$slots, "head", {}, void 0, !0)])) : r("", !0),
94
- a("nav", C, [g(t.$slots, "default", {}, void 0, !0)]),
95
- t.$slots.body ? (p(), i("div", w, [g(t.$slots, "body", {}, void 0, !0)])) : r("", !0),
96
- t.$slots.foot ? (p(), i("div", T, [g(t.$slots, "foot", {}, void 0, !0)])) : r("", !0)
97
- ], 6));
98
- }
99
- }), [["__scopeId", "data-v-a2b8405c"]]);
92
+ x((e) => ({
93
+ v71ead984: r.value["--_bg"],
94
+ fe385338: r.value["--_surface"],
95
+ v7d45f128: r.value["--_text"],
96
+ v130792a2: r.value["--_muted"],
97
+ d33b7caa: r.value["--_border"],
98
+ v71f0d15b: r.value["--_ok"],
99
+ v7ae441e2: r.value["--_danger"],
100
+ a1e36aa6: r.value["--_info"],
101
+ v4463291a: o.value
102
+ }));
103
+ let n = e, r = t(() => k(n.variant, n.colors)), o = t(() => n.width ?? "var(--mw-sidebar-width, 240px)");
104
+ return (t, n) => (m(), i("aside", { class: u(["mw-sidebar", `mw-sidebar--${e.variant}`]) }, [
105
+ _(t.$slots, "head", {}, void 0, !0),
106
+ a("nav", te, [_(t.$slots, "default", {}, void 0, !0)]),
107
+ _(t.$slots, "body", {}, void 0, !0),
108
+ _(t.$slots, "foot", {}, void 0, !0)
109
+ ], 2));
110
+ }
111
+ }), [["__scopeId", "data-v-30f2000a"]]);
100
112
  //#endregion
101
113
  //#region src/safe-href.ts
102
- function D(e) {
114
+ function M(e) {
103
115
  if (e) try {
104
116
  let t = new URL(e);
105
117
  if (t.protocol === "https:" || t.protocol === "http:" && (t.hostname === "localhost" || t.hostname === "127.0.0.1")) return e;
@@ -107,7 +119,11 @@ function D(e) {
107
119
  }
108
120
  //#endregion
109
121
  //#region src/components/AppFooter.vue?vue&type=script&setup=true&lang.ts
110
- var O = { class: "mw-footer__start" }, k = { class: "mw-footer__center" }, A = { class: "mw-footer__end" }, j = ["href"], M = ["href"], N = /*#__PURE__*/ b(/* @__PURE__ */ s({
122
+ var re = {
123
+ key: 0,
124
+ class: "mw-footer__docs",
125
+ "aria-label": "Documentation"
126
+ }, ie = ["href"], ae = ["href"], oe = /*#__PURE__*/ j(/* @__PURE__ */ c({
111
127
  __name: "AppFooter",
112
128
  props: {
113
129
  variant: { default: "transparent" },
@@ -116,42 +132,40 @@ var O = { class: "mw-footer__start" }, k = { class: "mw-footer__center" }, A = {
116
132
  devUrl: {}
117
133
  },
118
134
  setup(e) {
119
- let n = e, o = t(() => y(n.variant, n.colors));
120
- return (t, n) => (p(), i("footer", {
121
- class: l(["mw-footer", `mw-footer--${e.variant}`]),
122
- style: u(o.value)
123
- }, [
124
- a("div", O, [g(t.$slots, "start", {}, void 0, !0)]),
125
- a("div", k, [g(t.$slots, "default", {}, void 0, !0)]),
126
- a("div", A, [
127
- g(t.$slots, "end", {}, void 0, !0),
128
- e.docsUrl ? (p(), i("a", {
129
- key: 0,
130
- href: v(D)(e.docsUrl),
131
- target: "_blank",
132
- rel: "noopener noreferrer",
133
- class: "mw-footer__docs-link"
134
- }, "Documentation", 8, j)) : r("", !0),
135
- e.devUrl ? (p(), i("a", {
136
- key: 1,
137
- href: v(D)(e.devUrl),
138
- target: "_blank",
139
- rel: "noopener noreferrer",
140
- "aria-label": "Developer documentation",
141
- class: "mw-footer__docs-link"
142
- }, "Developer docs", 8, M)) : r("", !0)
143
- ])
144
- ], 6));
145
- }
146
- }), [["__scopeId", "data-v-979579a9"]]), P = {
147
- class: "mw-mode",
148
- role: "group",
149
- "aria-label": "Colour mode"
150
- }, F = [
135
+ x((e) => ({
136
+ v605673bd: a.value["--_bg"],
137
+ v08ecb7cb: a.value["--_surface"],
138
+ v796a1136: a.value["--_text"],
139
+ v4ed7a1c9: a.value["--_muted"],
140
+ v56d7d138: a.value["--_border"],
141
+ v605c6b94: a.value["--_ok"],
142
+ v8dd3d0ca: a.value["--_danger"],
143
+ v9e078ab4: a.value["--_info"]
144
+ }));
145
+ let n = e, a = t(() => k(n.variant, n.colors));
146
+ return (t, n) => (m(), i("footer", { class: u(["mw-footer", `mw-footer--${e.variant}`]) }, [
147
+ _(t.$slots, "start", {}, void 0, !0),
148
+ _(t.$slots, "default", {}, void 0, !0),
149
+ _(t.$slots, "end", {}, void 0, !0),
150
+ e.docsUrl || e.devUrl ? (m(), i("nav", re, [e.docsUrl ? (m(), i("a", {
151
+ key: 0,
152
+ href: b(M)(e.docsUrl),
153
+ target: "_blank",
154
+ rel: "noopener noreferrer"
155
+ }, "Documentation", 8, ie)) : r("", !0), e.devUrl ? (m(), i("a", {
156
+ key: 1,
157
+ href: b(M)(e.devUrl),
158
+ target: "_blank",
159
+ rel: "noopener noreferrer",
160
+ "aria-label": "Developer documentation"
161
+ }, "Developer docs", 8, ae)) : r("", !0)])) : r("", !0)
162
+ ], 2));
163
+ }
164
+ }), [["__scopeId", "data-v-6c5fa699"]]), se = { class: "mw-mode" }, ce = [
151
165
  "aria-pressed",
152
166
  "title",
153
167
  "onClick"
154
- ], I = { "aria-hidden": "true" }, L = { class: "mw-mode__label" }, R = /*#__PURE__*/ b(/* @__PURE__ */ s({
168
+ ], le = { "aria-hidden": "true" }, ue = { class: "mw-mode__label" }, de = /*#__PURE__*/ j(/* @__PURE__ */ c({
155
169
  __name: "ColorModeControl",
156
170
  props: {
157
171
  modelValue: {},
@@ -172,16 +186,16 @@ var O = { class: "mw-footer__start" }, k = { class: "mw-footer__center" }, A = {
172
186
  dark: "☾",
173
187
  system: "🖵"
174
188
  };
175
- return (o, s) => (p(), i("div", P, [(p(!0), i(e, null, h(t.modes, (e) => (p(), i("button", {
189
+ return (o, s) => (m(), i("fieldset", se, [s[0] ||= a("legend", { class: "mw-visually-hidden" }, "Colour mode", -1), (m(!0), i(e, null, g(t.modes, (e) => (m(), i("button", {
176
190
  key: e,
177
191
  type: "button",
178
- class: l(["mw-mode__btn", { "is-active": t.modelValue === e }]),
192
+ class: u(["mw-mode__btn", { "is-active": t.modelValue === e }]),
179
193
  "aria-pressed": t.modelValue === e,
180
194
  title: n[e],
181
195
  onClick: (t) => o.$emit("update:modelValue", e)
182
- }, [a("span", I, _(r[e]), 1), a("span", L, _(n[e]), 1)], 10, F))), 128))]));
196
+ }, [a("span", le, y(r[e]), 1), a("span", ue, y(n[e]), 1)], 10, ce))), 128))]));
183
197
  }
184
- }), [["__scopeId", "data-v-345f2b04"]]), z = ["type", "disabled"], B = /*#__PURE__*/ b(/* @__PURE__ */ s({
198
+ }), [["__scopeId", "data-v-e5cba7a7"]]), fe = ["type", "disabled"], pe = /*#__PURE__*/ j(/* @__PURE__ */ c({
185
199
  __name: "UiButton",
186
200
  props: {
187
201
  variant: { default: "primary" },
@@ -192,30 +206,29 @@ var O = { class: "mw-footer__start" }, k = { class: "mw-footer__center" }, A = {
192
206
  }
193
207
  },
194
208
  setup(e) {
195
- return (t, n) => (p(), i("button", {
209
+ return (t, n) => (m(), i("button", {
196
210
  type: e.type,
197
211
  disabled: e.disabled,
198
- class: l(["mw-btn", `mw-btn--${e.variant}`])
199
- }, [g(t.$slots, "default", {}, void 0, !0)], 10, z));
212
+ class: u(["mw-btn", `mw-btn--${e.variant}`])
213
+ }, [_(t.$slots, "default", {}, void 0, !0)], 10, fe));
200
214
  }
201
- }), [["__scopeId", "data-v-bc33cc23"]]), V = { class: "mw-card" }, H = {
215
+ }), [["__scopeId", "data-v-bc33cc23"]]), me = { class: "mw-card" }, N = {
202
216
  key: 0,
203
217
  class: "mw-card__header"
204
- }, fe = { class: "mw-card__title" }, pe = { class: "mw-card__body" }, me = {
218
+ }, P = { class: "mw-card__title" }, F = {
205
219
  key: 1,
206
220
  class: "mw-card__footer"
207
- }, he = /*#__PURE__*/ b(/* @__PURE__ */ s({
221
+ }, I = /*#__PURE__*/ j(/* @__PURE__ */ c({
208
222
  __name: "UiCard",
209
223
  props: { title: {} },
210
224
  setup(e) {
211
- return (t, n) => (p(), i("section", V, [
212
- e.title || t.$slots.header ? (p(), i("header", H, [g(t.$slots, "header", {}, () => [a("h3", fe, _(e.title), 1)], !0)])) : r("", !0),
213
- a("div", pe, [g(t.$slots, "default", {}, void 0, !0)]),
214
- t.$slots.footer ? (p(), i("footer", me, [g(t.$slots, "footer", {}, void 0, !0)])) : r("", !0)
225
+ return (t, n) => (m(), i("section", me, [
226
+ e.title || t.$slots.header ? (m(), i("header", N, [_(t.$slots, "header", {}, () => [a("h3", P, y(e.title), 1)], !0)])) : r("", !0),
227
+ _(t.$slots, "default", {}, void 0, !0),
228
+ t.$slots.footer ? (m(), i("footer", F, [_(t.$slots, "footer", {}, void 0, !0)])) : r("", !0)
215
229
  ]));
216
230
  }
217
- }), [["__scopeId", "data-v-883f87f5"]]), ge = { class: "mw-select" }, _e = /*#__PURE__*/ b(/* @__PURE__ */ s({
218
- inheritAttrs: !1,
231
+ }), [["__scopeId", "data-v-384b36cf"]]), L = /*#__PURE__*/ j(/* @__PURE__ */ c({
219
232
  __name: "UiSelect",
220
233
  props: {
221
234
  modelValue: {},
@@ -223,17 +236,13 @@ var O = { class: "mw-footer__start" }, k = { class: "mw-footer__center" }, A = {
223
236
  },
224
237
  emits: ["update:modelValue"],
225
238
  setup(e) {
226
- let t = ne(e, "modelValue");
227
- return (e, n) => (p(), i("div", ge, [se(a("select", c(e.$attrs, { "onUpdate:modelValue": n[0] ||= (e) => t.value = e }), [g(e.$slots, "default", {}, void 0, !0)], 16), [[ie, t.value]]), n[1] ||= a("svg", {
228
- class: "mw-select__chevron",
229
- xmlns: "http://www.w3.org/2000/svg",
230
- width: "12",
231
- height: "8",
232
- viewBox: "0 0 12 8",
233
- "aria-hidden": "true"
234
- }, [a("path", { d: "M1 1l5 5 5-5" })], -1)]));
239
+ let t = C(e, "modelValue");
240
+ return (e, n) => O((m(), i("select", {
241
+ "onUpdate:modelValue": n[0] ||= (e) => t.value = e,
242
+ class: "mw-select"
243
+ }, [_(e.$slots, "default", {}, void 0, !0)], 512)), [[T, t.value]]);
235
244
  }
236
- }), [["__scopeId", "data-v-3096db80"]]), ve = ["role"], ye = /*#__PURE__*/ b(/* @__PURE__ */ s({
245
+ }), [["__scopeId", "data-v-38fbd9b5"]]), R = ["role"], z = /*#__PURE__*/ j(/* @__PURE__ */ c({
237
246
  __name: "UiNotice",
238
247
  props: { type: {} },
239
248
  setup(e) {
@@ -241,16 +250,16 @@ var O = { class: "mw-footer__start" }, k = { class: "mw-footer__center" }, A = {
241
250
  if (n.type === "error") return "alert";
242
251
  if (n.type === "ok") return "status";
243
252
  });
244
- return (t, n) => (p(), i("p", {
245
- class: l(["mw-notice", e.type && e.type !== "info" ? `mw-notice--${e.type}` : ""]),
253
+ return (t, n) => (m(), i("p", {
254
+ class: u(["mw-notice", e.type && e.type !== "info" ? `mw-notice--${e.type}` : ""]),
246
255
  role: r.value
247
- }, [g(t.$slots, "default", {}, void 0, !0)], 10, ve));
256
+ }, [_(t.$slots, "default", {}, void 0, !0)], 10, R));
248
257
  }
249
- }), [["__scopeId", "data-v-ee7fffb1"]]), be = ["disabled", "aria-current"], xe = {
258
+ }), [["__scopeId", "data-v-ee7fffb1"]]), he = ["disabled", "aria-current"], ge = {
250
259
  key: 0,
251
260
  class: "sidebar-item__icon",
252
261
  "aria-hidden": "true"
253
- }, Se = { class: "sidebar-item__label" }, Ce = /*#__PURE__*/ b(/* @__PURE__ */ s({
262
+ }, _e = /*#__PURE__*/ j(/* @__PURE__ */ c({
254
263
  __name: "SidebarItem",
255
264
  props: {
256
265
  label: {},
@@ -265,52 +274,178 @@ var O = { class: "mw-footer__start" }, k = { class: "mw-footer__center" }, A = {
265
274
  }
266
275
  },
267
276
  setup(e) {
268
- return (t, n) => (p(), i("button", {
277
+ return (t, n) => (m(), i("button", {
269
278
  type: "button",
270
- class: l(["sidebar-item", { "is-active": e.active }]),
279
+ class: u(["sidebar-item", { "is-active": e.active }]),
271
280
  disabled: e.disabled,
272
281
  "aria-current": e.active ? "page" : void 0
273
- }, [e.icon ? (p(), i("span", xe, _(e.icon), 1)) : r("", !0), a("span", Se, _(e.label), 1)], 10, be));
282
+ }, [e.icon ? (m(), i("span", ge, y(e.icon), 1)) : r("", !0), o(" " + y(e.label), 1)], 10, he));
274
283
  }
275
- }), [["__scopeId", "data-v-8da2d583"]]), we = ["aria-label"], Te = {
276
- class: "sidebar-group__label",
277
- "aria-hidden": "true"
278
- }, Ee = { class: "sidebar-group__items" }, De = /*#__PURE__*/ b(/* @__PURE__ */ s({
284
+ }), [["__scopeId", "data-v-c8ae7e5f"]]), ve = { class: "sidebar-group__label" }, ye = /*#__PURE__*/ j(/* @__PURE__ */ c({
279
285
  __name: "SidebarGroup",
280
286
  props: {
281
287
  label: {},
282
288
  level: { default: 1 }
283
289
  },
284
290
  setup(e) {
285
- return (t, n) => (p(), i("div", {
286
- class: l(["sidebar-group", `sidebar-group--l${e.level}`]),
287
- role: "group",
288
- "aria-label": e.label
289
- }, [a("div", Te, _(e.label), 1), a("div", Ee, [g(t.$slots, "default", {}, void 0, !0)])], 10, we));
291
+ return (t, n) => (m(), i("fieldset", { class: u(["sidebar-group", `sidebar-group--l${e.level}`]) }, [a("legend", ve, y(e.label), 1), _(t.$slots, "default", {}, void 0, !0)], 2));
290
292
  }
291
- }), [["__scopeId", "data-v-c8f6c8b2"]]), Oe = ["aria-label"], ke = ["aria-current", "onClick"], Ae = /*#__PURE__*/ b(/* @__PURE__ */ s({
293
+ }), [["__scopeId", "data-v-95acc444"]]);
294
+ //#endregion
295
+ //#region src/tabs.ts
296
+ function B(e, t) {
297
+ return {
298
+ tab: `${e}-tab-${t}`,
299
+ panel: `${e}-panel-${t}`
300
+ };
301
+ }
302
+ //#endregion
303
+ //#region src/components/AppTabNav.vue?vue&type=script&setup=true&lang.ts
304
+ var be = ["aria-label"], xe = [
305
+ "id",
306
+ "aria-selected",
307
+ "aria-controls",
308
+ "tabindex",
309
+ "onClick",
310
+ "onKeydown"
311
+ ], Se = /*#__PURE__*/ j(/* @__PURE__ */ c({
292
312
  __name: "AppTabNav",
293
313
  props: {
294
314
  tabs: {},
295
315
  modelValue: {},
316
+ idPrefix: {},
296
317
  ariaLabel: {},
297
- variant: { default: "underline" }
318
+ variant: { default: "underline" },
319
+ size: { default: "md" },
320
+ allPanels: {
321
+ type: Boolean,
322
+ default: !1
323
+ }
298
324
  },
299
325
  emits: ["update:modelValue"],
300
326
  setup(t, { emit: n }) {
301
- let r = n;
302
- return (n, a) => (p(), i("nav", {
303
- class: l(["mw-tab-nav", { "mw-tab-nav--raised": t.variant === "raised" }]),
327
+ let r = t, o = n, s = [];
328
+ function c(e) {
329
+ let t = r.tabs[e];
330
+ t && (o("update:modelValue", t.id), s[e]?.focus());
331
+ }
332
+ function l(e, t) {
333
+ let n = r.tabs.length - 1, i = e.key === "ArrowRight" ? t === n ? 0 : t + 1 : e.key === "ArrowLeft" ? t === 0 ? n : t - 1 : e.key === "Home" ? 0 : e.key === "End" ? n : -1;
334
+ i < 0 || (e.preventDefault(), c(i));
335
+ }
336
+ return (n, r) => (m(), i("menu", {
337
+ role: "tablist",
338
+ class: u(["mw-tab-nav", {
339
+ "mw-tab-nav--raised": t.variant === "raised",
340
+ "mw-tab-nav--lg": t.size === "lg"
341
+ }]),
304
342
  "aria-label": t.ariaLabel
305
- }, [(p(!0), i(e, null, h(t.tabs, (e) => (p(), i("button", {
343
+ }, [(m(!0), i(e, null, g(t.tabs, (e, n) => (m(), i("li", {
306
344
  key: e.id,
345
+ role: "presentation",
346
+ class: "mw-tab-nav__item"
347
+ }, [a("button", {
348
+ id: b(B)(t.idPrefix, e.id).tab,
349
+ ref_for: !0,
350
+ ref: (e) => {
351
+ s[n] = e;
352
+ },
307
353
  type: "button",
308
- class: l(["mw-tab-nav__tab", { "mw-tab-nav__tab--active": t.modelValue === e.id }]),
309
- "aria-current": t.modelValue === e.id ? "page" : void 0,
310
- onClick: (t) => r("update:modelValue", e.id)
311
- }, _(e.label), 11, ke))), 128))], 10, Oe));
312
- }
313
- }), [["__scopeId", "data-v-00b3c666"]]), je = { class: "ca-root" }, Me = ["title"], Ne = ["title", "aria-label"], Pe = {
354
+ role: "tab",
355
+ class: u(["mw-tab-nav__tab", { "mw-tab-nav__tab--active": t.modelValue === e.id }]),
356
+ "aria-selected": t.modelValue === e.id,
357
+ "aria-controls": t.allPanels || t.modelValue === e.id ? b(B)(t.idPrefix, e.id).panel : void 0,
358
+ tabindex: t.modelValue === e.id ? 0 : -1,
359
+ onClick: (t) => o("update:modelValue", e.id),
360
+ onKeydown: (e) => l(e, n)
361
+ }, y(e.label), 43, xe)]))), 128))], 10, be));
362
+ }
363
+ }), [["__scopeId", "data-v-fbb7de4c"]]), Ce = ["id", "aria-labelledby"], we = /*#__PURE__*/ j(/* @__PURE__ */ c({
364
+ __name: "UiTabPanel",
365
+ props: {
366
+ idPrefix: {},
367
+ tab: {}
368
+ },
369
+ setup(e) {
370
+ let n = e, r = t(() => B(n.idPrefix, n.tab));
371
+ return (e, t) => (m(), i("section", {
372
+ id: r.value.panel,
373
+ role: "tabpanel",
374
+ "aria-labelledby": r.value.tab,
375
+ tabindex: "0",
376
+ class: "mw-tab-panel"
377
+ }, [_(e.$slots, "default", {}, void 0, !0)], 8, Ce));
378
+ }
379
+ }), [["__scopeId", "data-v-add194c8"]]), Te = ["aria-labelledby"], Ee = { class: "mw-dialog__content" }, De = { class: "mw-dialog__header" }, Oe = ["id"], ke = ["aria-label"], Ae = {
380
+ key: 0,
381
+ class: "mw-dialog__actions"
382
+ }, je = /*#__PURE__*/ j(/* @__PURE__ */ c({
383
+ __name: "UiDialog",
384
+ props: /*@__PURE__*/ l({
385
+ title: {},
386
+ dismissible: {
387
+ type: Boolean,
388
+ default: !0
389
+ },
390
+ closeLabel: { default: "Close" },
391
+ width: {}
392
+ }, {
393
+ open: {
394
+ type: Boolean,
395
+ default: !1
396
+ },
397
+ openModifiers: {}
398
+ }),
399
+ emits: /*@__PURE__*/ l(["close"], ["update:open"]),
400
+ setup(e, { expose: n, emit: s }) {
401
+ x((e) => ({ ce627f2e: v.value }));
402
+ let c = C(e, "open"), l = e, u = s, p = h(null), g = S(), v = t(() => l.width ?? "min(420px, 90vw)"), w = typeof HTMLDialogElement < "u" && "closedBy" in HTMLDialogElement.prototype;
403
+ function T(e = "") {
404
+ p.value?.open && p.value.close(e);
405
+ }
406
+ function D(e) {
407
+ let t = p.value;
408
+ t && (e && !t.open ? t.showModal() : !e && t.open && t.close());
409
+ }
410
+ function O() {
411
+ p.value?.setAttribute("closedby", l.dismissible ? "any" : "none");
412
+ }
413
+ function k(e) {
414
+ l.dismissible && e.target === p.value && T();
415
+ }
416
+ function A(e) {
417
+ l.dismissible || e.preventDefault();
418
+ }
419
+ function j() {
420
+ c.value = !1, u("close", p.value?.returnValue ?? "");
421
+ }
422
+ return f(() => {
423
+ O(), w || p.value?.addEventListener("click", k), D(c.value);
424
+ }), d(() => {
425
+ p.value?.removeEventListener("click", k);
426
+ }), E(c, D, { flush: "post" }), E(() => l.dismissible, O), n({ close: T }), (t, n) => (m(), i("dialog", {
427
+ ref_key: "el",
428
+ ref: p,
429
+ class: "mw-dialog",
430
+ "aria-labelledby": b(g),
431
+ onCancel: A,
432
+ onClose: j
433
+ }, [a("article", Ee, [
434
+ a("header", De, [a("h2", {
435
+ id: b(g),
436
+ class: "mw-dialog__title"
437
+ }, [_(t.$slots, "title", {}, () => [o(y(e.title), 1)], !0)], 8, Oe), e.dismissible ? (m(), i("button", {
438
+ key: 0,
439
+ type: "button",
440
+ class: "mw-dialog__close",
441
+ "aria-label": e.closeLabel,
442
+ onClick: n[0] ||= (e) => T()
443
+ }, "×", 8, ke)) : r("", !0)]),
444
+ _(t.$slots, "default", {}, void 0, !0),
445
+ t.$slots.actions ? (m(), i("footer", Ae, [_(t.$slots, "actions", { close: T }, void 0, !0)])) : r("", !0)
446
+ ])], 40, Te));
447
+ }
448
+ }), [["__scopeId", "data-v-78973168"]]), Me = { class: "ca-root" }, Ne = ["title"], Pe = ["title", "aria-label"], Fe = {
314
449
  key: 0,
315
450
  class: "ca-icon",
316
451
  viewBox: "0 0 24 24",
@@ -322,7 +457,7 @@ var O = { class: "mw-footer__start" }, k = { class: "mw-footer__center" }, A = {
322
457
  "stroke-linecap": "round",
323
458
  "stroke-linejoin": "round",
324
459
  "aria-hidden": "true"
325
- }, Fe = {
460
+ }, Ie = {
326
461
  key: 1,
327
462
  class: "ca-icon",
328
463
  viewBox: "0 0 24 24",
@@ -334,7 +469,7 @@ var O = { class: "mw-footer__start" }, k = { class: "mw-footer__center" }, A = {
334
469
  "stroke-linecap": "round",
335
470
  "stroke-linejoin": "round",
336
471
  "aria-hidden": "true"
337
- }, Ie = /*#__PURE__*/ b(/* @__PURE__ */ s({
472
+ }, Le = /*#__PURE__*/ j(/* @__PURE__ */ c({
338
473
  __name: "CopyableAddress",
339
474
  props: {
340
475
  address: {},
@@ -346,35 +481,40 @@ var O = { class: "mw-footer__start" }, k = { class: "mw-footer__center" }, A = {
346
481
  label: { default: "Copy" }
347
482
  },
348
483
  setup(e) {
349
- let n = e, r = m(!1), s = t(() => {
484
+ let n = e, r = h(!1), s = t(() => {
350
485
  if (!n.truncate) return n.address;
351
486
  let [e, t] = n.chars;
352
487
  return `${n.address.slice(0, e)}…${n.address.slice(-t)}`;
353
488
  });
354
489
  async function c() {
355
- await navigator.clipboard.writeText(n.address), r.value = !0, setTimeout(() => {
490
+ try {
491
+ await navigator.clipboard.writeText(n.address);
492
+ } catch {
493
+ return;
494
+ }
495
+ r.value = !0, setTimeout(() => {
356
496
  r.value = !1;
357
497
  }, 1500);
358
498
  }
359
- return (t, n) => (p(), i("span", je, [a("span", {
499
+ return (t, n) => (m(), i("span", Me, [a("span", {
360
500
  class: "ca-value",
361
501
  title: e.address
362
- }, [g(t.$slots, "default", {}, () => [o(_(s.value), 1)], !0)], 8, Me), a("button", {
502
+ }, [_(t.$slots, "default", {}, () => [o(y(s.value), 1)], !0)], 8, Ne), a("button", {
363
503
  type: "button",
364
- class: l(["ca-copy", { "ca-copy--copied": r.value }]),
504
+ class: u(["ca-copy", { "ca-copy--copied": r.value }]),
365
505
  title: r.value ? "Copied!" : e.label,
366
506
  "aria-label": r.value ? "Copied" : e.label,
367
507
  onClick: c
368
- }, [r.value ? (p(), i("svg", Pe, [...n[0] ||= [a("polyline", { points: "20 6 9 17 4 12" }, null, -1)]])) : (p(), i("svg", Fe, [...n[1] ||= [a("rect", {
508
+ }, [r.value ? (m(), i("svg", Fe, [...n[0] ||= [a("polyline", { points: "20 6 9 17 4 12" }, null, -1)]])) : (m(), i("svg", Ie, [...n[1] ||= [a("rect", {
369
509
  x: "9",
370
510
  y: "9",
371
511
  width: "13",
372
512
  height: "13",
373
513
  rx: "2",
374
514
  ry: "2"
375
- }, null, -1), a("path", { d: "M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1" }, null, -1)]]))], 10, Ne)]));
515
+ }, null, -1), a("path", { d: "M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1" }, null, -1)]]))], 10, Pe)]));
376
516
  }
377
- }), [["__scopeId", "data-v-b43dabdd"]]), Le = ["href", "title"], Re = /*#__PURE__*/ b(/* @__PURE__ */ s({
517
+ }), [["__scopeId", "data-v-56006bd1"]]), Re = ["href", "title"], ze = /*#__PURE__*/ j(/* @__PURE__ */ c({
378
518
  __name: "ExplorerLink",
379
519
  props: {
380
520
  href: {},
@@ -392,18 +532,18 @@ var O = { class: "mw-footer__start" }, k = { class: "mw-footer__center" }, A = {
392
532
  let [e, t] = n.chars;
393
533
  return `${n.value.slice(0, e)}…${n.value.slice(-t)}`;
394
534
  });
395
- return (t, n) => (p(), i("a", {
535
+ return (t, n) => (m(), i("a", {
396
536
  class: "el-root",
397
- href: v(D)(e.href),
537
+ href: b(M)(e.href),
398
538
  target: "_blank",
399
539
  rel: "noopener noreferrer",
400
540
  title: e.value
401
- }, [g(t.$slots, "default", {}, () => [o(_(r.value), 1)], !0)], 8, Le));
541
+ }, [_(t.$slots, "default", {}, () => [o(y(r.value), 1)], !0)], 8, Re));
402
542
  }
403
- }), [["__scopeId", "data-v-073d1bbe"]]), ze = { class: "copyright-line" }, Be = ["href", "aria-label"], Ve = { key: 0 }, He = { key: 1 }, Ue = {
543
+ }), [["__scopeId", "data-v-073d1bbe"]]), Be = { class: "copyright-line" }, Ve = ["href", "aria-label"], He = { key: 0 }, Ue = { key: 1 }, We = {
404
544
  key: 2,
405
545
  class: "kopimi-symbol"
406
- }, We = { class: "text-content" }, Ge = { key: 0 }, Ke = /*#__PURE__*/ b(/* @__PURE__ */ s({
546
+ }, Ge = { class: "text-content" }, Ke = { key: 0 }, qe = /*#__PURE__*/ j(/* @__PURE__ */ c({
407
547
  __name: "CopyrightLine",
408
548
  props: {
409
549
  organisationName: {},
@@ -414,14 +554,18 @@ var O = { class: "mw-footer__start" }, k = { class: "mw-footer__center" }, A = {
414
554
  symbolLabel: {}
415
555
  },
416
556
  setup(e) {
417
- let n = e, s = t(() => n.symbolVariant), c = t(() => n.symbolHref || (s.value === "kopimi" ? "/legal/powr.broccoli-kopimi.pdf" : s.value === "copyleft" ? "/legal/copyleft.html" : "/legal/copyright.html")), l = t(() => n.symbolLabel || (s.value === "kopimi" ? "Kopimi legal notice" : s.value === "copyleft" ? "Copyleft legal notice" : "Copyright legal notice")), u = t(() => n.rightsStatement === "" ? "" : n.rightsStatement === "none" ? "No rights reserved." : n.rightsStatement === "all" || !n.rightsStatement ? "All rights reserved." : n.rightsStatement === "jam" ? "All jams preserved." : n.rightsStatement);
418
- return (t, n) => (p(), i("small", ze, [a("a", {
419
- href: c.value,
557
+ let n = e, s = t(() => n.symbolVariant);
558
+ function c(e) {
559
+ return /^\/(?![/\\])/.test(e) ? e : M(e);
560
+ }
561
+ let l = t(() => (n.symbolHref ? c(n.symbolHref) : void 0) || (s.value === "kopimi" ? "/legal/powr.broccoli-kopimi.pdf" : s.value === "copyleft" ? "/legal/copyleft.html" : "/legal/copyright.html")), u = t(() => n.symbolLabel || (s.value === "kopimi" ? "Kopimi legal notice" : s.value === "copyleft" ? "Copyleft legal notice" : "Copyright legal notice")), d = t(() => n.rightsStatement === "" ? "" : n.rightsStatement === "none" ? "No rights reserved." : n.rightsStatement === "all" || !n.rightsStatement ? "All rights reserved." : n.rightsStatement === "jam" ? "All jams preserved." : n.rightsStatement);
562
+ return (t, n) => (m(), i("small", Be, [a("a", {
563
+ href: l.value,
420
564
  class: "symbol-link",
421
565
  target: "_blank",
422
566
  rel: "noopener noreferrer",
423
- "aria-label": l.value
424
- }, [s.value === "copyright" ? (p(), i("span", Ve, "©")) : s.value === "copyleft" ? (p(), i("span", He, "🄯")) : s.value === "kopimi" ? (p(), i("span", Ue, [...n[0] ||= [a("svg", {
567
+ "aria-label": u.value
568
+ }, [s.value === "copyright" ? (m(), i("span", He, "©")) : s.value === "copyleft" ? (m(), i("span", Ue, "🄯")) : s.value === "kopimi" ? (m(), i("span", We, [...n[0] ||= [a("svg", {
425
569
  viewBox: "0 0 24 24",
426
570
  width: "1em",
427
571
  height: "1em",
@@ -441,58 +585,53 @@ var O = { class: "mw-footer__start" }, k = { class: "mw-footer__center" }, A = {
441
585
  "font-family": "system-ui, sans-serif",
442
586
  "font-size": "11",
443
587
  fill: "currentColor"
444
- }, " C ")], -1)]])) : r("", !0)], 8, Be), a("span", We, [o(_(e.year) + " " + _(e.organisationName) + ".", 1), u.value ? (p(), i("span", Ge, _(`
445
- ${u.value}`), 1)) : r("", !0)])]));
588
+ }, " C ")], -1)]])) : r("", !0)], 8, Ve), a("span", Ge, [o(y(e.year) + " " + y(e.organisationName) + ".", 1), d.value ? (m(), i("span", Ke, y(`
589
+ ${d.value}`), 1)) : r("", !0)])]));
446
590
  }
447
- }), [["__scopeId", "data-v-44b327f4"]]), qe = {
591
+ }), [["__scopeId", "data-v-464082bf"]]), Je = {
448
592
  class: "ui-stepper",
449
593
  role: "list"
450
- }, Je = {
451
- key: 0,
452
- "aria-hidden": "true"
453
- }, Ye = {
594
+ }, Ye = ["aria-current"], Xe = ["aria-label", "onClick"], Ze = {
454
595
  key: 1,
596
+ class: "ui-stepper__badge",
455
597
  "aria-hidden": "true"
456
- }, Xe = { class: "ui-stepper__label" }, Ze = /*#__PURE__*/ b(/* @__PURE__ */ s({
598
+ }, Qe = { class: "ui-stepper__label" }, $e = /*#__PURE__*/ j(/* @__PURE__ */ c({
457
599
  __name: "UiStepper",
458
600
  props: {
459
601
  steps: {},
460
602
  modelValue: {}
461
603
  },
462
604
  emits: ["update:modelValue"],
463
- setup(t, { emit: r }) {
464
- let o = t, s = r;
465
- function c(e) {
466
- return e < o.modelValue ? "done" : e === o.modelValue ? "active" : "upcoming";
605
+ setup(t, { emit: n }) {
606
+ let r = t, o = n;
607
+ function s(e) {
608
+ return e < r.modelValue ? "done" : e === r.modelValue ? "active" : "upcoming";
467
609
  }
468
- function u(e) {
469
- e < o.modelValue && s("update:modelValue", e);
610
+ function c(e) {
611
+ e < r.modelValue && o("update:modelValue", e);
470
612
  }
471
- return (r, o) => (p(), i("ol", qe, [(p(!0), i(e, null, h(t.steps, (e, t) => (p(), i("li", {
613
+ return (n, r) => (m(), i("ol", Je, [(m(!0), i(e, null, g(t.steps, (e, t) => (m(), i("li", {
472
614
  key: e.id,
473
- class: l(["ui-stepper__step", `is-${c(t)}`])
474
- }, [(p(), n(te(c(t) === "done" ? "button" : "span"), {
615
+ class: u(["ui-stepper__step", `is-${s(t)}`]),
616
+ "aria-current": s(t) === "active" ? "step" : void 0
617
+ }, [s(t) === "done" ? (m(), i("button", {
618
+ key: 0,
619
+ type: "button",
475
620
  class: "ui-stepper__badge",
476
- type: c(t) === "done" ? "button" : void 0,
477
- "aria-label": c(t) === "done" ? `Back to ${e.label}` : void 0,
478
- "aria-current": c(t) === "active" ? "step" : void 0,
479
- onClick: (e) => c(t) === "done" && u(t)
480
- }, {
481
- default: oe(() => [c(t) === "done" ? (p(), i("span", Je, "✓")) : (p(), i("span", Ye, _(t + 1), 1))]),
482
- _: 2
483
- }, 1032, [
484
- "type",
485
- "aria-label",
486
- "aria-current",
487
- "onClick"
488
- ])), a("span", Xe, _(e.label), 1)], 2))), 128))]));
489
- }
490
- }), [["__scopeId", "data-v-33717fc3"]]), Qe = ["aria-label"], $e = ["title"], et = [
621
+ "aria-label": `Back to ${e.label}`,
622
+ onClick: (e) => c(t)
623
+ }, "✓", 8, Xe)) : (m(), i("span", Ze, y(t + 1), 1)), a("span", Qe, y(e.label), 1)], 10, Ye))), 128))]));
624
+ }
625
+ }), [["__scopeId", "data-v-6f5db325"]]), et = { class: "mw-seg" }, tt = {
626
+ key: 0,
627
+ class: "mw-visually-hidden"
628
+ }, nt = ["title"], rt = [
629
+ "name",
491
630
  "value",
492
631
  "checked",
493
632
  "disabled",
494
633
  "onChange"
495
- ], tt = /*#__PURE__*/ b(/* @__PURE__ */ s({
634
+ ], it = /*#__PURE__*/ j(/* @__PURE__ */ c({
496
635
  __name: "UiSegmentedControl",
497
636
  props: {
498
637
  options: {},
@@ -501,49 +640,43 @@ var O = { class: "mw-footer__start" }, k = { class: "mw-footer__center" }, A = {
501
640
  },
502
641
  emits: ["update:modelValue"],
503
642
  setup(t, { emit: n }) {
504
- let r = n;
505
- return (n, s) => (p(), i("div", {
506
- class: "mw-seg",
507
- role: "group",
508
- "aria-label": t.ariaLabel
509
- }, [(p(!0), i(e, null, h(t.options, (e) => (p(), i("label", {
643
+ let s = n, c = S();
644
+ return (n, l) => (m(), i("fieldset", et, [t.ariaLabel ? (m(), i("legend", tt, y(t.ariaLabel), 1)) : r("", !0), (m(!0), i(e, null, g(t.options, (e) => (m(), i("label", {
510
645
  key: e.id,
511
- class: l(["mw-seg__item", {
646
+ class: u(["mw-seg__item", {
512
647
  "mw-seg__item--active": t.modelValue === e.id,
513
648
  "mw-seg__item--disabled": e.disabled
514
649
  }]),
515
650
  title: e.title
516
651
  }, [a("input", {
517
652
  type: "radio",
653
+ name: b(c),
518
654
  value: e.id,
519
655
  checked: t.modelValue === e.id,
520
656
  disabled: e.disabled,
521
- onChange: (t) => r("update:modelValue", e.id)
522
- }, null, 40, et), o(" " + _(e.label), 1)], 10, $e))), 128))], 8, Qe));
657
+ onChange: (t) => s("update:modelValue", e.id)
658
+ }, null, 40, rt), o(" " + y(e.label), 1)], 10, nt))), 128))]));
523
659
  }
524
- }), [["__scopeId", "data-v-0dacb6ea"]]), nt = { class: "mw-field-hint" }, rt = ["aria-describedby"], it = ["id"], at = /*#__PURE__*/ b(/* @__PURE__ */ s({
660
+ }), [["__scopeId", "data-v-430ffdd6"]]), at = { class: "mw-field-hint" }, ot = ["aria-describedby"], st = ["id"], ct = /*#__PURE__*/ j(/* @__PURE__ */ c({
525
661
  __name: "UiFieldHint",
526
662
  props: { fieldId: {} },
527
663
  setup(e) {
528
664
  function t(e) {
529
665
  e.key === "Escape" && e.currentTarget.blur();
530
666
  }
531
- return (n, r) => (p(), i("span", nt, [a("button", {
667
+ return (n, r) => (m(), i("span", at, [a("button", {
532
668
  type: "button",
533
669
  class: "mw-field-hint__btn",
534
670
  "aria-describedby": `${e.fieldId}-hint`,
535
671
  "aria-label": "Help",
536
672
  onKeydown: t
537
- }, "?", 40, rt), a("span", {
673
+ }, "?", 40, ot), a("span", {
538
674
  id: `${e.fieldId}-hint`,
539
675
  role: "tooltip",
540
676
  class: "mw-field-hint__tip"
541
- }, [g(n.$slots, "default", {}, void 0, !0)], 8, it)]));
677
+ }, [_(n.$slots, "default", {}, void 0, !0)], 8, st)]));
542
678
  }
543
- }), [["__scopeId", "data-v-29d9a629"]]), ot = { class: "mw-form-field" }, st = ["for"], ct = {
544
- key: 0,
545
- class: "mw-form-field__hint"
546
- }, lt = ["id"], ut = /*#__PURE__*/ b(/* @__PURE__ */ s({
679
+ }), [["__scopeId", "data-v-29d9a629"]]), lt = { class: "mw-form-field" }, ut = ["for"], dt = ["id"], ft = ["id"], pt = /*#__PURE__*/ j(/* @__PURE__ */ c({
547
680
  __name: "UiFormField",
548
681
  props: {
549
682
  id: {},
@@ -552,120 +685,183 @@ var O = { class: "mw-footer__start" }, k = { class: "mw-footer__center" }, A = {
552
685
  hint: {}
553
686
  },
554
687
  setup(e) {
555
- let n = e, s = t(() => `${n.id}-err`), c = t(() => ({
688
+ let n = e, o = t(() => `${n.id}-err`), s = t(() => `${n.id}-hint-text`), c = t(() => ({
556
689
  id: n.id,
557
690
  "aria-invalid": n.error ? !0 : void 0,
558
- "aria-describedby": n.error ? s.value : void 0
691
+ "aria-describedby": n.error ? o.value : n.hint ? s.value : void 0
559
692
  }));
560
- return (t, n) => (p(), i("div", ot, [
561
- a("label", { for: e.id }, [o(_(e.label), 1), g(t.$slots, "label-suffix", {}, void 0, !0)], 8, st),
562
- g(t.$slots, "default", { attrs: c.value }, void 0, !0),
563
- e.hint && !e.error ? (p(), i("p", ct, _(e.hint), 1)) : r("", !0),
564
- e.error ? (p(), i("p", {
565
- key: 1,
693
+ return (t, n) => (m(), i("p", lt, [
694
+ a("label", {
695
+ for: e.id,
696
+ class: "mw-form-field__label"
697
+ }, y(e.label), 9, ut),
698
+ _(t.$slots, "label-suffix"),
699
+ _(t.$slots, "default", { attrs: c.value }),
700
+ e.hint && !e.error ? (m(), i("small", {
701
+ key: 0,
566
702
  id: s.value,
703
+ class: "mw-form-field__hint"
704
+ }, y(e.hint), 9, dt)) : r("", !0),
705
+ e.error ? (m(), i("small", {
706
+ key: 1,
707
+ id: o.value,
567
708
  class: "mw-form-field__error"
568
- }, _(e.error), 9, lt)) : r("", !0)
709
+ }, y(e.error), 9, ft)) : r("", !0)
569
710
  ]));
570
711
  }
571
- }), [["__scopeId", "data-v-c22333c7"]]), dt = { class: "mw-panel" }, ft = {
572
- key: 0,
573
- class: "mw-panel__head"
574
- }, pt = { class: "mw-panel__body" }, mt = /*#__PURE__*/ b(/* @__PURE__ */ s({
712
+ }), [["__scopeId", "data-v-5aef34d9"]]), mt = { class: "mw-tool-intro" }, ht = /*#__PURE__*/ j(/* @__PURE__ */ c({
713
+ __name: "UiToolIntro",
714
+ setup(e) {
715
+ return (e, t) => (m(), i("p", mt, [_(e.$slots, "default", {}, void 0, !0)]));
716
+ }
717
+ }), [["__scopeId", "data-v-9a5436b9"]]), gt = { class: "mw-panel" }, _t = /*#__PURE__*/ j(/* @__PURE__ */ c({
575
718
  __name: "UiPanel",
576
- props: { title: {} },
719
+ props: {
720
+ title: {},
721
+ level: { default: 2 }
722
+ },
577
723
  setup(e) {
578
- return (t, n) => (p(), i("div", dt, [e.title || t.$slots.head ? (p(), i("div", ft, [g(t.$slots, "head", {}, () => [o(_(e.title), 1)], !0)])) : r("", !0), a("div", pt, [g(t.$slots, "default", {}, void 0, !0)])]));
724
+ let a = e, s = w(), c = t(() => !!(a.title || s.title));
725
+ return (t, a) => (m(), i("section", gt, [c.value ? (m(), n(v(`h${e.level}`), {
726
+ key: 0,
727
+ class: "mw-panel__title"
728
+ }, {
729
+ default: D(() => [_(t.$slots, "title", {}, () => [o(y(e.title), 1)], !0)]),
730
+ _: 3
731
+ })) : r("", !0), _(t.$slots, "default", {}, void 0, !0)]));
579
732
  }
580
- }), [["__scopeId", "data-v-d112e62d"]]), ht = /*#__PURE__*/ b(/* @__PURE__ */ s({
733
+ }), [["__scopeId", "data-v-62fac524"]]), vt = /*#__PURE__*/ j(/* @__PURE__ */ c({
581
734
  __name: "UiBadge",
582
735
  props: { variant: { default: "neutral" } },
583
736
  setup(e) {
584
- return (t, n) => (p(), i("span", { class: l(["mw-badge", `mw-badge--${e.variant}`]) }, [g(t.$slots, "default", {}, void 0, !0)], 2));
585
- }
586
- }), [["__scopeId", "data-v-5aa44ef5"]]), gt = { class: "mw-toolbar" }, _t = /*#__PURE__*/ b(/* @__PURE__ */ s({
587
- __name: "UiToolbar",
588
- setup(e) {
589
- return (e, t) => (p(), i("div", gt, [g(e.$slots, "default", {}, void 0, !0)]));
737
+ return (t, n) => (m(), i("span", { class: u(["mw-badge", `mw-badge--${e.variant}`]) }, [_(t.$slots, "default", {}, void 0, !0)], 2));
590
738
  }
591
- }), [["__scopeId", "data-v-827466de"]]), vt = {
739
+ }), [["__scopeId", "data-v-5aa44ef5"]]), yt = {
592
740
  type: "button",
593
741
  class: "mw-toolbar-btn"
594
- }, yt = /*#__PURE__*/ b(/* @__PURE__ */ s({
742
+ }, V = /*#__PURE__*/ j(/* @__PURE__ */ c({
595
743
  __name: "UiToolbarButton",
596
744
  setup(e) {
597
- return (e, t) => (p(), i("button", vt, [g(e.$slots, "default", {}, void 0, !0)]));
745
+ return (e, t) => (m(), i("button", yt, [_(e.$slots, "default", {}, void 0, !0)]));
598
746
  }
599
- }), [["__scopeId", "data-v-d5f19134"]]), bt = { class: "mw-stat-grid" }, xt = /*#__PURE__*/ b(/* @__PURE__ */ s({
747
+ }), [["__scopeId", "data-v-d5f19134"]]), bt = { class: "mw-toolbar" }, xt = /*#__PURE__*/ j(/* @__PURE__ */ c({
748
+ __name: "UiToolbar",
749
+ props: { actions: {} },
750
+ emits: ["action"],
751
+ setup(t, { emit: n }) {
752
+ let r = n;
753
+ return (n, a) => (m(), i("menu", bt, [(m(!0), i(e, null, g(t.actions, (e) => (m(), i("li", { key: e.id }, [s(V, {
754
+ disabled: e.disabled,
755
+ onClick: (t) => r("action", e.id)
756
+ }, {
757
+ default: D(() => [o(y(e.label), 1)]),
758
+ _: 2
759
+ }, 1032, ["disabled", "onClick"])]))), 128))]));
760
+ }
761
+ }), [["__scopeId", "data-v-170c8eb5"]]), St = { class: "mw-stat-grid" }, Ct = /*#__PURE__*/ j(/* @__PURE__ */ c({
600
762
  __name: "UiStatGrid",
601
763
  setup(e) {
602
- return (e, t) => (p(), i("div", bt, [g(e.$slots, "default", {}, void 0, !0)]));
764
+ return (e, t) => (m(), i("dl", St, [_(e.$slots, "default", {}, void 0, !0)]));
603
765
  }
604
- }), [["__scopeId", "data-v-f481948b"]]), St = { class: "mw-stat-grid__label" }, Ct = /*#__PURE__*/ b(/* @__PURE__ */ s({
766
+ }), [["__scopeId", "data-v-3608575d"]]), wt = { class: "mw-stat-grid__label" }, Tt = /*#__PURE__*/ j(/* @__PURE__ */ c({
605
767
  __name: "UiStatRow",
606
768
  props: {
607
769
  label: {},
608
770
  align: { default: "right" }
609
771
  },
610
772
  setup(t) {
611
- return (n, r) => (p(), i(e, null, [a("span", St, _(t.label), 1), a("span", { class: l(["mw-stat-grid__value", { "mw-stat-grid__value--left": t.align === "left" }]) }, [g(n.$slots, "default", {}, void 0, !0)], 2)], 64));
773
+ return (n, r) => (m(), i(e, null, [a("dt", wt, y(t.label), 1), a("dd", { class: u(["mw-stat-grid__value", { "mw-stat-grid__value--left": t.align === "left" }]) }, [_(n.$slots, "default", {}, void 0, !0)], 2)], 64));
612
774
  }
613
- }), [["__scopeId", "data-v-4c872fab"]]), wt = { class: "mw-data-table-wrap" }, Tt = { class: "mw-data-table" }, Et = {
775
+ }), [["__scopeId", "data-v-829f7772"]]), Et = { class: "mw-data-table-wrap" }, Dt = { class: "mw-data-table" }, Ot = {
614
776
  key: 0,
615
777
  class: "mw-data-table__empty"
616
- }, Dt = /*#__PURE__*/ b(/* @__PURE__ */ s({
778
+ }, kt = /*#__PURE__*/ j(/* @__PURE__ */ c({
617
779
  __name: "UiDataTable",
618
780
  props: { empty: {} },
619
781
  setup(e) {
620
- let t = re();
621
- return (n, o) => (p(), i("div", wt, [a("table", Tt, [a("thead", null, [a("tr", null, [g(n.$slots, "head", {}, void 0, !0)])]), a("tbody", null, [g(n.$slots, "default", {}, void 0, !0)])]), e.empty && !t.default ? (p(), i("p", Et, _(e.empty), 1)) : r("", !0)]));
622
- }
623
- }), [["__scopeId", "data-v-fc20cb49"]]), Ot = { class: "mw-statusbar" }, kt = /*#__PURE__*/ b(/* @__PURE__ */ s({
624
- __name: "UiStatusBar",
625
- setup(e) {
626
- return (e, t) => (p(), i("footer", Ot, [g(e.$slots, "default", {}, void 0, !0)]));
782
+ let t = w();
783
+ return (n, o) => (m(), i("div", Et, [a("table", Dt, [a("thead", null, [a("tr", null, [_(n.$slots, "head", {}, void 0, !0)])]), a("tbody", null, [_(n.$slots, "default", {}, void 0, !0)])]), e.empty && !t.default ? (m(), i("p", Ot, y(e.empty), 1)) : r("", !0)]));
627
784
  }
628
- }), [["__scopeId", "data-v-890bec3f"]]), At = /*#__PURE__*/ b(/* @__PURE__ */ s({
785
+ }), [["__scopeId", "data-v-de139c21"]]), H = /*#__PURE__*/ j(/* @__PURE__ */ c({
629
786
  __name: "UiStatusDot",
630
787
  props: { status: { default: "ok" } },
631
788
  setup(e) {
632
- return (t, n) => (p(), i("span", {
633
- class: l(["mw-status-dot", `mw-status-dot--${e.status}`]),
789
+ return (t, n) => (m(), i("span", {
790
+ class: u(["mw-status-dot", `mw-status-dot--${e.status}`]),
634
791
  "aria-hidden": "true"
635
792
  }, null, 2));
636
793
  }
637
- }), [["__scopeId", "data-v-62e9a7cc"]]), jt = {
794
+ }), [["__scopeId", "data-v-62e9a7cc"]]), At = {
795
+ role: "list",
796
+ class: "mw-statusbar",
797
+ "aria-label": "Status"
798
+ }, jt = { key: 0 }, Mt = { class: "mw-visually-hidden" }, Nt = { key: 0 }, Pt = {
799
+ key: 1,
800
+ class: "mw-statusbar__pending"
801
+ }, Ft = { key: 0 }, It = {
802
+ key: 1,
803
+ class: "mw-statusbar__pending"
804
+ }, Lt = /*#__PURE__*/ j(/* @__PURE__ */ c({
805
+ __name: "UiStatusBar",
806
+ props: {
807
+ network: {},
808
+ healthy: {
809
+ type: Boolean,
810
+ default: !0
811
+ },
812
+ epoch: {},
813
+ lastRefresh: {}
814
+ },
815
+ setup(n) {
816
+ let c = n, l = t(() => c.network ? c.network.charAt(0).toUpperCase() + c.network.slice(1) : "");
817
+ function u(e) {
818
+ let t = Math.floor((Date.now() - e.getTime()) / 1e3);
819
+ return t < 5 ? "just now" : t < 60 ? `${t}s ago` : `${Math.floor(t / 60)}m ago`;
820
+ }
821
+ return (t, c) => (m(), i("ul", At, [
822
+ n.network ? (m(), i("li", jt, [
823
+ s(H, { status: n.healthy ? "ok" : "error" }, null, 8, ["status"]),
824
+ o(" " + y(l.value) + " ", 1),
825
+ a("span", Mt, "(" + y(n.healthy ? "status OK" : "status error") + ")", 1)
826
+ ])) : r("", !0),
827
+ n.epoch === void 0 ? r("", !0) : (m(), i(e, { key: 1 }, [n.epoch === null ? (m(), i("li", Pt, "Epoch —")) : (m(), i("li", Nt, "Epoch " + y(n.epoch), 1))], 64)),
828
+ n.lastRefresh === void 0 ? r("", !0) : (m(), i(e, { key: 2 }, [n.lastRefresh ? (m(), i("li", Ft, "Refreshed " + y(u(n.lastRefresh)), 1)) : (m(), i("li", It, "Loading…"))], 64)),
829
+ _(t.$slots, "default", {}, void 0, !0)
830
+ ]));
831
+ }
832
+ }), [["__scopeId", "data-v-cb4a19b8"]]), Rt = {
638
833
  class: "mw-feed",
639
834
  role: "list"
640
- }, Mt = /*#__PURE__*/ b(/* @__PURE__ */ s({
835
+ }, zt = /*#__PURE__*/ j(/* @__PURE__ */ c({
641
836
  __name: "UiActivityFeed",
642
837
  setup(e) {
643
- return (e, t) => (p(), i("ul", jt, [g(e.$slots, "default", {}, void 0, !0)]));
838
+ return (e, t) => (m(), i("ul", Rt, [_(e.$slots, "default", {}, void 0, !0)]));
644
839
  }
645
- }), [["__scopeId", "data-v-9e578c9d"]]), Nt = { class: "mw-feed__item" }, Pt = { class: "mw-feed__type" }, Ft = { class: "mw-feed__time" }, It = /*#__PURE__*/ b(/* @__PURE__ */ s({
840
+ }), [["__scopeId", "data-v-9e578c9d"]]), Bt = { class: "mw-feed__item" }, Vt = ["datetime"], Ht = {
841
+ key: 1,
842
+ class: "mw-feed__meta"
843
+ }, Ut = /*#__PURE__*/ j(/* @__PURE__ */ c({
646
844
  __name: "UiActivityItem",
647
845
  props: {
648
846
  type: {},
649
- time: {}
847
+ time: {},
848
+ datetime: {}
650
849
  },
651
850
  setup(e) {
652
- return (t, n) => (p(), i("li", Nt, [
653
- n[0] ||= a("span", {
654
- class: "mw-feed__dot",
655
- "aria-hidden": "true"
656
- }, null, -1),
657
- a("span", Pt, [g(t.$slots, "type", {}, () => [o(_(e.type), 1)], !0)]),
658
- a("span", Ft, [g(t.$slots, "time", {}, () => [o(_(e.time), 1)], !0)])
659
- ]));
851
+ return (t, n) => (m(), i("li", Bt, [_(t.$slots, "type", {}, () => [o(y(e.type), 1)], !0), e.datetime ? (m(), i("time", {
852
+ key: 0,
853
+ class: "mw-feed__meta",
854
+ datetime: e.datetime
855
+ }, [_(t.$slots, "time", {}, () => [o(y(e.time), 1)], !0)], 8, Vt)) : (m(), i("small", Ht, [_(t.$slots, "time", {}, () => [o(y(e.time), 1)], !0)]))]));
660
856
  }
661
- }), [["__scopeId", "data-v-f662c634"]]), Lt = /* @__PURE__ */ new Set([
857
+ }), [["__scopeId", "data-v-797b66a9"]]), Wt = /* @__PURE__ */ new Set([
662
858
  "operational",
663
859
  "degraded",
664
860
  "down",
665
861
  "unknown"
666
862
  ]);
667
863
  function U(e) {
668
- return typeof e == "string" && Lt.has(e);
864
+ return typeof e == "string" && Wt.has(e);
669
865
  }
670
866
  function W(e) {
671
867
  return U(e) ? e : "unknown";
@@ -673,7 +869,7 @@ function W(e) {
673
869
  function G(e) {
674
870
  return typeof e != "string" || e.trim() === "" ? "" : e.replace(/[<>&"]/g, "");
675
871
  }
676
- function Rt(e) {
872
+ function Gt(e) {
677
873
  if (typeof e != "object" || !e) return null;
678
874
  let t = e, n = G(t.name);
679
875
  return n ? {
@@ -681,11 +877,11 @@ function Rt(e) {
681
877
  status: W(t.status)
682
878
  } : null;
683
879
  }
684
- function zt(e) {
880
+ function Kt(e) {
685
881
  if (typeof e != "object" || !e) return null;
686
882
  let t = e, n = G(t.name);
687
883
  if (!n) return null;
688
- let r = Array.isArray(t.components) ? t.components.map(Rt).filter((e) => e !== null) : [];
884
+ let r = Array.isArray(t.components) ? t.components.map(Gt).filter((e) => e !== null) : [];
689
885
  return {
690
886
  name: n,
691
887
  status: W(t.status),
@@ -696,7 +892,7 @@ function K(e) {
696
892
  if (typeof e != "object" || !e) return null;
697
893
  let t = e;
698
894
  if (!U(t.overall) || typeof t.generated_at != "string" || !Array.isArray(t.groups)) return null;
699
- let n = t.groups.map(zt).filter((e) => e !== null);
895
+ let n = t.groups.map(Kt).filter((e) => e !== null);
700
896
  return {
701
897
  generated_at: t.generated_at,
702
898
  overall: t.overall,
@@ -705,7 +901,7 @@ function K(e) {
705
901
  }
706
902
  //#endregion
707
903
  //#region src/components/StatusWidget.vue?vue&type=script&setup=true&lang.ts
708
- var q = ["href", "title"], Bt = { class: "status-widget__label" }, Vt = /*#__PURE__*/ b(/* @__PURE__ */ s({
904
+ var q = ["href", "title"], qt = /*#__PURE__*/ j(/* @__PURE__ */ c({
709
905
  __name: "StatusWidget",
710
906
  props: {
711
907
  apiUrl: { default: "https://status.meddleware.co.uk/api/status" },
@@ -723,63 +919,61 @@ var q = ["href", "title"], Bt = { class: "status-widget__label" }, Vt = /*#__PUR
723
919
  degraded: "Degraded",
724
920
  down: "Major outage",
725
921
  unknown: "Status unknown"
726
- }, o = m("ok"), s = m("All systems operational"), c = null;
727
- async function u() {
922
+ }, a = h("ok"), o = h("All systems operational"), s = null;
923
+ async function c() {
728
924
  try {
729
- let e = await fetch(t.apiUrl);
925
+ let e = await fetch(t.apiUrl, { signal: AbortSignal.timeout(1e4) });
730
926
  if (!e.ok) throw Error(`HTTP ${e.status}`);
731
927
  let i = K(await e.json());
732
928
  if (!i) throw Error("unexpected response shape");
733
- o.value = n[i.overall], s.value = r[i.overall];
929
+ a.value = n[i.overall], o.value = r[i.overall];
734
930
  } catch {
735
- o.value = "error", s.value = "Status unavailable";
931
+ a.value = "error", o.value = "Status unavailable";
736
932
  }
737
933
  }
738
- return d(() => {
739
- u(), c = setInterval(u, t.pollInterval);
740
- }), f(() => {
741
- c !== null && clearInterval(c);
742
- }), (t, n) => (p(), i("a", {
743
- href: v(D)(e.href),
934
+ return f(() => {
935
+ c(), s = setInterval(c, t.pollInterval);
936
+ }), p(() => {
937
+ s !== null && clearInterval(s);
938
+ }), (t, n) => (m(), i("a", {
939
+ href: b(M)(e.href),
744
940
  target: "_blank",
745
941
  rel: "noopener noreferrer",
746
- class: l(["status-widget", `status-widget--${o.value}`]),
747
- title: `Platform status: ${s.value}`
748
- }, [n[0] ||= a("span", {
749
- class: "status-widget__dot",
750
- "aria-hidden": "true"
751
- }, null, -1), a("span", Bt, _(s.value), 1)], 10, q));
942
+ class: u(["status-widget", `status-widget--${a.value}`]),
943
+ title: `Platform status: ${o.value}`
944
+ }, y(o.value), 11, q));
752
945
  }
753
- }), [["__scopeId", "data-v-6436368e"]]), J = {
946
+ }), [["__scopeId", "data-v-57682f53"]]), J = {
754
947
  mainnet: "https://suivision.xyz",
755
948
  testnet: "https://testnet.suivision.xyz",
756
949
  devnet: "https://devnet.suivision.xyz"
757
950
  };
758
- function Ht(e, t, n = "testnet") {
759
- return `${J[n] ?? J.testnet}/${e}/${t}`;
951
+ function Jt(e, t, n = "testnet") {
952
+ return `${J[n] ?? J.testnet}/${e}/${encodeURIComponent(t)}`;
760
953
  }
761
954
  //#endregion
762
955
  //#region src/composables/useColorMode.ts
763
- var Y = "mw-color-mode", X = m("system"), Z = !1;
764
- function Ut() {
956
+ var Y = "mw-color-mode", X = h("system"), Z = !1;
957
+ function Yt() {
765
958
  return typeof window < "u" && typeof window.matchMedia == "function" && window.matchMedia("(prefers-color-scheme: dark)").matches;
766
959
  }
767
960
  function Q(e) {
768
- return e === "dark" || e === "system" && Ut();
961
+ return e === "dark" || e === "system" && Yt();
769
962
  }
770
963
  function $(e) {
771
964
  typeof document < "u" && document.documentElement.setAttribute("data-theme", Q(e) ? "dark" : "light");
772
965
  }
773
- function Wt(e = "system") {
966
+ function Xt(e = "system") {
774
967
  if (!Z) {
775
968
  Z = !0;
776
969
  let t = null;
777
970
  try {
778
- t = typeof localStorage < "u" ? localStorage.getItem(Y) : null;
971
+ let e = typeof localStorage < "u" ? localStorage.getItem(Y) : null;
972
+ (e === "light" || e === "dark" || e === "system") && (t = e);
779
973
  } catch {}
780
974
  X.value = t ?? e, $(X.value), typeof window < "u" && typeof window.matchMedia == "function" && window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change", () => {
781
975
  X.value === "system" && $("system");
782
- }), ae(X, (e) => {
976
+ }), E(X, (e) => {
783
977
  $(e);
784
978
  try {
785
979
  typeof localStorage < "u" && localStorage.setItem(Y, e);
@@ -801,10 +995,10 @@ function Wt(e = "system") {
801
995
  }
802
996
  //#endregion
803
997
  //#region src/composables/useSeason.ts
804
- function Gt() {
998
+ function Zt() {
805
999
  if (typeof document > "u") return;
806
1000
  let e = (/* @__PURE__ */ new Date()).getMonth(), t = e >= 2 && e <= 4 ? "spring" : e >= 5 && e <= 7 ? "summer" : e >= 8 && e <= 10 ? "autumn" : "winter";
807
1001
  document.documentElement.dataset.season = t;
808
1002
  }
809
1003
  //#endregion
810
- export { N as AppFooter, x as AppHeader, E as AppSidebar, Ae as AppTabNav, R as ColorModeControl, Ie as CopyableAddress, Ke as CopyrightLine, Re as ExplorerLink, De as SidebarGroup, Ce as SidebarItem, Vt as StatusWidget, Mt as UiActivityFeed, It as UiActivityItem, ht as UiBadge, B as UiButton, he as UiCard, Dt as UiDataTable, at as UiFieldHint, ut as UiFormField, ye as UiNotice, mt as UiPanel, tt as UiSegmentedControl, _e as UiSelect, xt as UiStatGrid, Ct as UiStatRow, kt as UiStatusBar, At as UiStatusDot, Ze as UiStepper, _t as UiToolbar, yt as UiToolbarButton, U as isStatusLevel, K as parseSnapshot, D as safeHref, Ht as suiExplorerUrl, Wt as useColorMode, Gt as useSeason };
1004
+ export { oe as AppFooter, ee as AppHeader, ne as AppSidebar, Se as AppTabNav, de as ColorModeControl, Le as CopyableAddress, qe as CopyrightLine, ze as ExplorerLink, ye as SidebarGroup, _e as SidebarItem, qt as StatusWidget, zt as UiActivityFeed, Ut as UiActivityItem, vt as UiBadge, pe as UiButton, I as UiCard, kt as UiDataTable, je as UiDialog, ct as UiFieldHint, pt as UiFormField, z as UiNotice, _t as UiPanel, it as UiSegmentedControl, L as UiSelect, Ct as UiStatGrid, Tt as UiStatRow, Lt as UiStatusBar, H as UiStatusDot, $e as UiStepper, we as UiTabPanel, ht as UiToolIntro, xt as UiToolbar, V as UiToolbarButton, U as isStatusLevel, K as parseSnapshot, M as safeHref, Jt as suiExplorerUrl, B as tabIds, Xt as useColorMode, Zt as useSeason };