@aerogel/core 0.0.0-next.b3caf219a503ce9b8c65ef1463132c9507f56c0a → 0.0.0-next.b656a964404fbde17d9cce7668722596098e47fd

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 (99) hide show
  1. package/dist/aerogel-core.d.ts +958 -491
  2. package/dist/aerogel-core.js +1987 -1828
  3. package/dist/aerogel-core.js.map +1 -1
  4. package/package.json +5 -2
  5. package/src/components/AppModals.vue +1 -1
  6. package/src/components/AppOverlays.vue +2 -7
  7. package/src/components/AppToasts.vue +16 -0
  8. package/src/components/contracts/Button.ts +1 -0
  9. package/src/components/contracts/DropdownMenu.ts +11 -0
  10. package/src/components/contracts/Input.ts +5 -5
  11. package/src/components/contracts/Modal.ts +4 -0
  12. package/src/components/contracts/Select.ts +36 -0
  13. package/src/components/contracts/Toast.ts +13 -0
  14. package/src/components/contracts/index.ts +2 -0
  15. package/src/components/headless/HeadlessButton.vue +7 -2
  16. package/src/components/headless/HeadlessInputDescription.vue +3 -3
  17. package/src/components/headless/HeadlessInputInput.vue +4 -4
  18. package/src/components/headless/HeadlessInputTextArea.vue +3 -3
  19. package/src/components/headless/HeadlessModal.vue +4 -2
  20. package/src/components/headless/HeadlessModalOverlay.vue +2 -2
  21. package/src/components/headless/HeadlessModalTitle.vue +2 -2
  22. package/src/components/headless/HeadlessSelect.vue +104 -0
  23. package/src/components/headless/{forms/AGHeadlessSelectError.vue → HeadlessSelectError.vue} +3 -4
  24. package/src/components/headless/HeadlessSelectLabel.vue +25 -0
  25. package/src/components/headless/HeadlessSelectOption.vue +34 -0
  26. package/src/components/headless/HeadlessSelectOptions.vue +30 -0
  27. package/src/components/headless/HeadlessSelectTrigger.vue +22 -0
  28. package/src/components/headless/HeadlessSelectValue.vue +15 -0
  29. package/src/components/headless/HeadlessToast.vue +18 -0
  30. package/src/components/headless/HeadlessToastAction.vue +13 -0
  31. package/src/components/headless/index.ts +7 -3
  32. package/src/components/index.ts +4 -9
  33. package/src/components/ui/AdvancedOptions.vue +18 -0
  34. package/src/components/ui/AlertModal.vue +3 -3
  35. package/src/components/ui/Button.vue +56 -16
  36. package/src/components/ui/Checkbox.vue +18 -11
  37. package/src/components/ui/ConfirmModal.vue +4 -4
  38. package/src/components/ui/DropdownMenu.vue +33 -0
  39. package/src/components/ui/EditableContent.vue +82 -0
  40. package/src/components/ui/ErrorMessage.vue +15 -0
  41. package/src/components/ui/ErrorReportModal.vue +3 -3
  42. package/src/components/ui/ErrorReportModalButtons.vue +6 -8
  43. package/src/components/ui/ErrorReportModalTitle.vue +2 -2
  44. package/src/components/ui/Input.vue +9 -5
  45. package/src/components/ui/Link.vue +2 -2
  46. package/src/components/ui/LoadingModal.vue +5 -5
  47. package/src/components/ui/Markdown.vue +69 -0
  48. package/src/components/ui/Modal.vue +26 -11
  49. package/src/components/ui/ProgressBar.vue +1 -1
  50. package/src/components/ui/PromptModal.vue +6 -6
  51. package/src/components/ui/Select.vue +21 -0
  52. package/src/components/ui/SelectLabel.vue +10 -0
  53. package/src/components/ui/SelectOptions.vue +31 -0
  54. package/src/components/ui/SelectTrigger.vue +29 -0
  55. package/src/components/ui/SettingsModal.vue +15 -0
  56. package/src/components/{lib/AGStartupCrash.vue → ui/StartupCrash.vue} +3 -3
  57. package/src/components/ui/Toast.vue +42 -0
  58. package/src/components/ui/index.ts +12 -0
  59. package/src/errors/Errors.ts +4 -5
  60. package/src/index.css +38 -0
  61. package/src/lang/index.ts +3 -0
  62. package/src/lang/settings/Language.vue +48 -0
  63. package/src/lang/settings/index.ts +10 -0
  64. package/src/services/App.state.ts +11 -1
  65. package/src/services/App.ts +3 -0
  66. package/src/services/index.ts +3 -0
  67. package/src/ui/UI.state.ts +2 -2
  68. package/src/ui/UI.ts +12 -20
  69. package/src/ui/index.ts +4 -4
  70. package/src/utils/classes.ts +49 -0
  71. package/src/utils/composition/forms.ts +10 -1
  72. package/src/utils/composition/state.ts +11 -2
  73. package/src/utils/index.ts +2 -1
  74. package/src/utils/vue.ts +22 -128
  75. package/src/components/AppSnackbars.vue +0 -13
  76. package/src/components/composition.ts +0 -23
  77. package/src/components/constants.ts +0 -8
  78. package/src/components/forms/AGSelect.story.vue +0 -46
  79. package/src/components/forms/AGSelect.vue +0 -54
  80. package/src/components/forms/index.ts +0 -1
  81. package/src/components/headless/forms/AGHeadlessSelect.ts +0 -42
  82. package/src/components/headless/forms/AGHeadlessSelect.vue +0 -77
  83. package/src/components/headless/forms/AGHeadlessSelectOption.ts +0 -4
  84. package/src/components/headless/forms/AGHeadlessSelectOption.vue +0 -31
  85. package/src/components/headless/forms/AGHeadlessSelectOptions.vue +0 -19
  86. package/src/components/headless/forms/AGHeadlessSelectTrigger.vue +0 -25
  87. package/src/components/headless/forms/composition.ts +0 -10
  88. package/src/components/headless/forms/index.ts +0 -8
  89. package/src/components/headless/snackbars/AGHeadlessSnackbar.vue +0 -10
  90. package/src/components/headless/snackbars/index.ts +0 -40
  91. package/src/components/lib/AGErrorMessage.vue +0 -16
  92. package/src/components/lib/AGMarkdown.vue +0 -54
  93. package/src/components/lib/AGMeasured.vue +0 -16
  94. package/src/components/lib/index.ts +0 -4
  95. package/src/components/snackbars/AGSnackbar.vue +0 -38
  96. package/src/components/snackbars/index.ts +0 -3
  97. package/src/components/utils.ts +0 -107
  98. package/src/utils/tailwindcss.test.ts +0 -26
  99. package/src/utils/tailwindcss.ts +0 -7
@@ -1,39 +1,39 @@
1
- var lt = Object.defineProperty;
2
- var ct = (t, r, e) => r in t ? lt(t, r, { enumerable: !0, configurable: !0, writable: !0, value: e }) : t[r] = e;
3
- var b = (t, r, e) => ct(t, typeof r != "symbol" ? r + "" : r, e);
4
- import { ref as A, computed as d, watch as Se, inject as X, reactive as ue, markRaw as Ae, nextTick as ze, defineComponent as h, createElementBlock as _, openBlock as u, renderSlot as y, createBlock as g, unref as c, mergeProps as H, withCtx as f, onUnmounted as oe, createPropsRestProxy as Y, useAttrs as qe, h as ut, normalizeClass as L, createVNode as m, Fragment as ee, renderList as ie, createTextVNode as q, toDisplayString as k, createElementVNode as v, provide as fe, toRef as He, resolveDynamicComponent as te, normalizeProps as ke, guardReactiveProps as Ce, createCommentVNode as E, resolveComponent as j, watchEffect as Be, withModifiers as dt, readonly as De, withDirectives as Fe, vModelCheckbox as pt, normalizeStyle as mt, createApp as ft, customRef as ht, useSlots as gt, resolveDirective as vt, onMounted as _t, toRaw as bt } from "vue";
5
- import { JSError as he, tap as K, MagicObject as Ue, PromisedValue as W, Storage as U, objectOnly as re, arrayFrom as Ge, isEmpty as be, objectDeepClone as yt, fail as O, facade as Q, arrayRemove as $e, getEnv as wt, updateLocationQueryParameters as $t, forever as xt, toString as B, isDevelopment as Z, isTesting as Me, after as Le, uuid as de, required as St, isObject as pe, objectWithoutEmpty as Ne, objectWithout as We, stringMatchAll as kt, isInstanceOf as Ct, stringExcerpt as Mt, ListenersManager as Et, toError as Pt, round as It, noop as At } from "@noeldemartin/utils";
6
- import J from "virtual:aerogel";
7
- import { createPinia as Ht, setActivePinia as Lt, defineStore as Tt } from "pinia";
8
- import { Primitive as Rt, DialogRoot as jt, DialogPortal as Vt, DialogContent as zt, DialogOverlay as qt, DialogTitle as Bt, SelectRoot as Dt, SelectTrigger as Ft, SelectValue as Ut, SelectItem as Gt, SelectItemText as Nt, SelectPortal as Wt, SelectContent as Ot, SelectViewport as Kt } from "reka-ui";
9
- import Qt from "clsx";
10
- import { cva as Jt } from "class-variance-authority";
11
- import { twMerge as Zt } from "tailwind-merge";
12
- import Xt from "dompurify";
13
- import { marked as Yt, Renderer as Te } from "marked";
14
- class xe extends he {
15
- constructor(r, e) {
16
- super(`Service '${r}' failed booting`, { cause: e });
17
- }
18
- }
19
- let Ee = null;
20
- function Oe() {
21
- return Ee ?? er();
22
- }
23
- function er() {
24
- return K(Ht(), (t) => {
25
- Ee = t, Lt(t);
1
+ var vt = Object.defineProperty;
2
+ var bt = (t, s, e) => s in t ? vt(t, s, { enumerable: !0, configurable: !0, writable: !0, value: e }) : t[s] = e;
3
+ var _ = (t, s, e) => bt(t, typeof s != "symbol" ? s + "" : s, e);
4
+ import { Comment as yt, Text as _t, Static as wt, inject as ae, reactive as ie, markRaw as Pe, nextTick as Be, defineComponent as g, useAttrs as De, useSlots as Se, computed as p, createBlock as h, openBlock as l, h as $t, unref as i, mergeProps as T, withCtx as f, renderSlot as w, createPropsRestProxy as Y, onUnmounted as ue, onMounted as xt, watch as ke, toRaw as Ct, ref as H, watchEffect as de, createVNode as m, normalizeProps as ne, guardReactiveProps as oe, createTextVNode as R, toDisplayString as $, normalizeClass as L, createElementBlock as v, Fragment as D, renderList as F, readonly as Me, provide as pe, resolveDynamicComponent as O, createCommentVNode as M, createElementVNode as y, toRef as Te, useTemplateRef as Ee, withModifiers as qe, withDirectives as Fe, vModelCheckbox as St, normalizeStyle as kt, createApp as Mt, vModelText as Et } from "vue";
5
+ import { JSError as me, tap as Z, MagicObject as Ue, PromisedValue as K, Storage as U, objectOnly as te, arrayFrom as Ne, isEmpty as ve, objectDeepClone as Lt, fail as J, facade as G, arrayRemove as _e, getEnv as Ht, updateLocationQueryParameters as Vt, forever as Pt, toString as B, isDevelopment as X, isTesting as Le, after as Ie, uuid as re, required as Tt, isObject as we, objectWithoutEmpty as Oe, stringMatchAll as It, isInstanceOf as At, objectWithout as Rt, noop as zt, debounce as jt, value as Bt, stringExcerpt as Dt, arraySorted as qt, ListenersManager as Ft, toError as Ut, round as Nt } from "@noeldemartin/utils";
6
+ import N from "virtual:aerogel";
7
+ import { createPinia as Ot, setActivePinia as Wt, defineStore as Kt } from "pinia";
8
+ import Jt from "dompurify";
9
+ import { marked as Qt, Renderer as Ae } from "marked";
10
+ import { Primitive as Zt, SelectValue as Gt, SelectTrigger as Xt, SelectIcon as Yt, SelectItem as es, SelectItemText as ts, SelectPortal as ss, SelectContent as rs, SelectViewport as as, SelectRoot as ns, Label as os, DialogRoot as ls, DialogPortal as is, DialogContent as cs, DialogOverlay as us, DialogTitle as ds, ToastClose as ps, ToastRoot as ms, ToastProvider as fs, ToastViewport as hs, DropdownMenuRoot as gs, DropdownMenuTrigger as vs, DropdownMenuPortal as bs, DropdownMenuContent as ys, DropdownMenuItem as _s } from "reka-ui";
11
+ import ws from "clsx";
12
+ import { cva as $s } from "class-variance-authority";
13
+ import { twMerge as xs } from "tailwind-merge";
14
+ class $e extends me {
15
+ constructor(s, e) {
16
+ super(`Service '${s}' failed booting`, { cause: e });
17
+ }
18
+ }
19
+ let He = null;
20
+ function We() {
21
+ return He ?? Cs();
22
+ }
23
+ function Cs() {
24
+ return Z(Ot(), (t) => {
25
+ He = t, Wt(t);
26
26
  });
27
27
  }
28
- function tr() {
29
- return Ee ?? Oe();
28
+ function Ss() {
29
+ return He ?? We();
30
30
  }
31
- function rr(t, r) {
32
- return Oe(), Tt(t, r)();
31
+ function ks(t, s) {
32
+ return We(), Kt(t, s)();
33
33
  }
34
- function ge(t) {
35
- var r;
36
- return r = class extends ve {
34
+ function fe(t) {
35
+ var s;
36
+ return s = class extends he {
37
37
  usesStore() {
38
38
  return !0;
39
39
  }
@@ -41,16 +41,16 @@ function ge(t) {
41
41
  return t.name ?? null;
42
42
  }
43
43
  getInitialState() {
44
- return typeof t.initialState == "function" ? t.initialState() : Object.entries(t.initialState).reduce((e, [s, n]) => {
44
+ return typeof t.initialState == "function" ? t.initialState() : Object.entries(t.initialState).reduce((e, [r, a]) => {
45
45
  try {
46
- n = structuredClone(n);
46
+ a = structuredClone(a);
47
47
  } catch {
48
48
  console.warn(
49
- `Could not clone '${s}' state from ${this.getName()} service, this may cause problems if you're using multiple instances of the service (for example, in unit tests).
49
+ `Could not clone '${r}' state from ${this.getName()} service, this may cause problems if you're using multiple instances of the service (for example, in unit tests).
50
50
  To fix this problem, declare your initialState as a function instead.`
51
51
  );
52
52
  }
53
- return e[s] = n, e;
53
+ return e[r] = a, e;
54
54
  }, {});
55
55
  }
56
56
  getComputedStateDefinition() {
@@ -60,26 +60,26 @@ To fix this problem, declare your initialState as a function instead.`
60
60
  return t.watch ?? {};
61
61
  }
62
62
  serializePersistedState(e) {
63
- var s;
64
- return ((s = t.serialize) == null ? void 0 : s.call(t, e)) ?? e;
63
+ var r;
64
+ return ((r = t.serialize) == null ? void 0 : r.call(t, e)) ?? e;
65
65
  }
66
66
  deserializePersistedState(e) {
67
- var s;
68
- return ((s = t.restore) == null ? void 0 : s.call(t, e)) ?? e;
67
+ var r;
68
+ return ((r = t.restore) == null ? void 0 : r.call(t, e)) ?? e;
69
69
  }
70
- }, b(r, "persist", t.persist ?? []), r;
70
+ }, _(s, "persist", t.persist ?? []), s;
71
71
  }
72
- var we;
73
- let ve = (we = class extends Ue {
72
+ var ye;
73
+ let he = (ye = class extends Ue {
74
74
  constructor() {
75
75
  super();
76
- b(this, "_name");
77
- b(this, "_booted");
78
- b(this, "_computedStateKeys");
79
- b(this, "_watchers");
80
- b(this, "_store");
76
+ _(this, "_name");
77
+ _(this, "_booted");
78
+ _(this, "_computedStateKeys");
79
+ _(this, "_watchers");
80
+ _(this, "_store");
81
81
  const e = this.getComputedStateDefinition();
82
- this._name = this.getName() ?? new.target.name, this._booted = new W(), this._computedStateKeys = new Set(Object.keys(e)), this._watchers = this.getStateWatchers(), this._store = this.usesStore() && rr(this._name, {
82
+ this._name = this.getName() ?? new.target.name, this._booted = new K(), this._computedStateKeys = new Set(Object.keys(e)), this._watchers = this.getStateWatchers(), this._store = this.usesStore() && ks(this._name, {
83
83
  state: () => this.getInitialState(),
84
84
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
85
85
  getters: e
@@ -92,11 +92,11 @@ let ve = (we = class extends Ue {
92
92
  return super.static(e);
93
93
  }
94
94
  launch() {
95
- const e = (s) => this._booted.reject(new xe(this._name, s));
95
+ const e = (r) => this._booted.reject(new $e(this._name, r));
96
96
  try {
97
97
  this.frameworkBoot().then(() => this.boot()).then(() => this._booted.resolve()).catch(e);
98
- } catch (s) {
99
- e(s);
98
+ } catch (r) {
99
+ e(r);
100
100
  }
101
101
  return this._booted;
102
102
  }
@@ -107,40 +107,40 @@ let ve = (we = class extends Ue {
107
107
  return this._store ? e in this._store.$state || this._computedStateKeys.has(e) : !1;
108
108
  }
109
109
  getState(e) {
110
- const s = this._store;
111
- return e ? s ? s[e] : void 0 : s || {};
110
+ const r = this._store;
111
+ return e ? r ? r[e] : void 0 : r || {};
112
112
  }
113
- setState(e, s) {
113
+ setState(e, r) {
114
114
  if (!this._store)
115
115
  return;
116
- const n = typeof e == "string" ? { [e]: s } : e, a = re(this._store.$state, Object.keys(n));
117
- Object.assign(this._store.$state, n), this.onStateUpdated(n, a);
116
+ const a = typeof e == "string" ? { [e]: r } : e, n = te(this._store.$state, Object.keys(a));
117
+ Object.assign(this._store.$state, a), this.onStateUpdated(a, n);
118
118
  }
119
119
  updatePersistedState(e) {
120
120
  if (!this._store)
121
121
  return;
122
- const s = Ge(e), n = re(this._store.$state, s);
123
- be(n) || this.onPersistentStateUpdated(n);
122
+ const r = Ne(e), a = te(this._store.$state, r);
123
+ ve(a) || this.onPersistentStateUpdated(a);
124
124
  }
125
125
  __get(e) {
126
126
  return this.hasState(e) ? this.getState(e) : super.__get(e);
127
127
  }
128
- __set(e, s) {
129
- this.setState({ [e]: s });
128
+ __set(e, r) {
129
+ this.setState({ [e]: r });
130
130
  }
131
- onStateUpdated(e, s) {
132
- const n = re(e, this.static("persist"));
133
- be(n) || this.onPersistentStateUpdated(n);
134
- for (const a in e) {
135
- const i = this._watchers[a];
136
- !i || e[a] === s[a] || i.call(this, e[a], s[a]);
131
+ onStateUpdated(e, r) {
132
+ const a = te(e, this.static("persist"));
133
+ ve(a) || this.onPersistentStateUpdated(a);
134
+ for (const n in e) {
135
+ const o = this._watchers[n];
136
+ !o || e[n] === r[n] || o.call(this, e[n], r[n]);
137
137
  }
138
138
  }
139
139
  onPersistentStateUpdated(e) {
140
- const s = U.get(this._name);
141
- s && U.set(this._name, {
142
- ...s,
143
- ...this.serializePersistedState(yt(e))
140
+ const r = U.get(this._name);
141
+ r && U.set(this._name, {
142
+ ...r,
143
+ ...this.serializePersistedState(Lt(e))
144
144
  });
145
145
  }
146
146
  usesStore() {
@@ -170,101 +170,106 @@ let ve = (we = class extends Ue {
170
170
  async boot() {
171
171
  }
172
172
  restorePersistedState() {
173
- if (!(!this.usesStore() || be(this.static("persist")))) {
173
+ if (!(!this.usesStore() || ve(this.static("persist")))) {
174
174
  if (U.has(this._name)) {
175
175
  const e = U.require(this._name);
176
176
  this.setState(this.deserializePersistedState(e));
177
177
  return;
178
178
  }
179
- U.set(this._name, re(this.getState(), this.static("persist")));
179
+ U.set(this._name, te(this.getState(), this.static("persist")));
180
180
  }
181
181
  }
182
182
  requireStore() {
183
- return this._store ? this._store : O(`Failed getting '${this._name}' store`);
183
+ return this._store ? this._store : J(`Failed getting '${this._name}' store`);
184
184
  }
185
- }, b(we, "persist", []), we);
186
- const na = {
185
+ }, _(ye, "persist", []), ye);
186
+ const pn = {
187
187
  Low: -256,
188
188
  Default: 0,
189
189
  High: 256
190
190
  };
191
- class sr extends ve {
191
+ class Ms extends he {
192
192
  constructor() {
193
193
  super(...arguments);
194
- b(this, "listeners", {});
194
+ _(this, "listeners", {});
195
195
  }
196
196
  async boot() {
197
- Object.entries(globalThis.__aerogelEvents__ ?? {}).forEach(([e, s]) => this.on(e, s));
197
+ Object.entries(globalThis.__aerogelEvents__ ?? {}).forEach(([e, r]) => this.on(e, r));
198
198
  }
199
- async emit(e, s) {
200
- var a;
201
- const n = this.listeners[e] ?? { priorities: [], handlers: {} };
202
- for (const i of n.priorities)
203
- await Promise.all(((a = n.handlers[i]) == null ? void 0 : a.map((o) => o(s))) ?? []);
199
+ async emit(e, r) {
200
+ var n;
201
+ const a = this.listeners[e] ?? { priorities: [], handlers: {} };
202
+ for (const o of a.priorities)
203
+ await Promise.all(((n = a.handlers[o]) == null ? void 0 : n.map((c) => c(r))) ?? []);
204
204
  }
205
205
  // prettier-ignore
206
206
  /* eslint-enable max-len */
207
- on(e, s, n) {
208
- const a = typeof s == "function" ? {} : typeof s == "number" ? { priority: s } : s, i = typeof s == "function" ? s : n;
209
- return this.registerListener(e, a, i), () => this.off(e, i);
207
+ on(e, r, a) {
208
+ const n = typeof r == "function" ? {} : typeof r == "number" ? { priority: r } : r, o = typeof r == "function" ? r : a;
209
+ return this.registerListener(e, n, o), () => this.off(e, o);
210
210
  }
211
211
  // prettier-ignore
212
212
  /* eslint-enable max-len */
213
- once(e, s, n) {
214
- let a = null;
215
- const i = typeof s == "function" ? {} : s, o = typeof s == "function" ? s : n;
216
- return K(
217
- () => a && this.off(e, a),
218
- (l) => {
219
- a = (...p) => (l(), o(...p)), this.registerListener(e, i, o);
213
+ once(e, r, a) {
214
+ let n = null;
215
+ const o = typeof r == "function" ? {} : r, c = typeof r == "function" ? r : a;
216
+ return Z(
217
+ () => n && this.off(e, n),
218
+ (u) => {
219
+ n = (...d) => (u(), c(...d)), this.registerListener(e, o, c);
220
220
  }
221
221
  );
222
222
  }
223
- off(e, s) {
224
- var i;
225
- const n = this.listeners[e];
226
- if (!n)
223
+ off(e, r) {
224
+ var o;
225
+ const a = this.listeners[e];
226
+ if (!a)
227
227
  return;
228
- const a = [...n.priorities];
229
- for (const o of a)
230
- $e(n.handlers[o] ?? [], s), ((i = n.handlers[o]) == null ? void 0 : i.length) === 0 && (delete n.handlers[o], $e(n.priorities, o));
231
- n.priorities.length === 0 && delete this.listeners[e];
232
- }
233
- registerListener(e, s, n) {
234
- var l, p, w;
235
- const a = s.priority ?? 0;
228
+ const n = [...a.priorities];
229
+ for (const c of n)
230
+ _e(a.handlers[c] ?? [], r), ((o = a.handlers[c]) == null ? void 0 : o.length) === 0 && (delete a.handlers[c], _e(a.priorities, c));
231
+ a.priorities.length === 0 && delete this.listeners[e];
232
+ }
233
+ registerListener(e, r, a) {
234
+ var u, d, b;
235
+ const n = r.priority ?? 0;
236
236
  e in this.listeners || (this.listeners[e] = { priorities: [], handlers: {} });
237
- const i = ((l = this.listeners[e]) == null ? void 0 : l.priorities) ?? O(`priorities missing for event '${e}'`), o = ((p = this.listeners[e]) == null ? void 0 : p.handlers) ?? O(`handlers missing for event '${e}'`);
238
- i.includes(a) || (i.push(a), i.sort((M, S) => S - M), o[a] = []), (w = o[a]) == null || w.push(n);
237
+ const o = ((u = this.listeners[e]) == null ? void 0 : u.priorities) ?? J(`priorities missing for event '${e}'`), c = ((d = this.listeners[e]) == null ? void 0 : d.handlers) ?? J(`handlers missing for event '${e}'`);
238
+ o.includes(n) || (o.push(n), o.sort((x, S) => S - x), c[n] = []), (b = c[n]) == null || b.push(a);
239
239
  }
240
240
  }
241
- const x = Q(sr), nr = ge({
241
+ const k = G(Ms);
242
+ function mn(t) {
243
+ return t;
244
+ }
245
+ const Es = fe({
242
246
  name: "app",
243
247
  initialState: {
244
248
  plugins: {},
245
249
  instance: null,
246
- environment: wt() ?? "development",
247
- version: J.version,
248
- sourceUrl: J.sourceUrl
250
+ environment: Ht() ?? "development",
251
+ version: N.version,
252
+ sourceUrl: N.sourceUrl,
253
+ settings: []
249
254
  },
250
255
  computed: {
251
256
  development: (t) => t.environment === "development",
252
257
  staging: (t) => t.environment === "staging",
253
258
  testing: (t) => t.environment === "test" || t.environment === "testing",
254
259
  versionName(t) {
255
- return this.development ? "dev." + J.sourceHash.toString().substring(0, 7) : this.staging ? "staging." + J.sourceHash.toString().substring(0, 7) : `v${t.version}`;
260
+ return this.development ? "dev." + N.sourceHash.toString().substring(0, 7) : this.staging ? "staging." + N.sourceHash.toString().substring(0, 7) : `v${t.version}`;
256
261
  },
257
262
  versionUrl(t) {
258
- return t.sourceUrl + (this.development || this.staging ? `/tree/${J.sourceHash}` : `/releases/tag/${this.versionName}`);
263
+ return t.sourceUrl + (this.development || this.staging ? `/tree/${N.sourceHash}` : `/releases/tag/${this.versionName}`);
259
264
  }
260
265
  }
261
266
  });
262
- class ar extends nr {
267
+ class Ls extends Es {
263
268
  constructor() {
264
269
  super(...arguments);
265
- b(this, "name", J.name);
266
- b(this, "ready", new W());
267
- b(this, "mounted", new W());
270
+ _(this, "name", N.name);
271
+ _(this, "ready", new K());
272
+ _(this, "mounted", new K());
268
273
  }
269
274
  isReady() {
270
275
  return this.ready.isResolved();
@@ -276,426 +281,333 @@ class ar extends nr {
276
281
  return await this.ready.then(e);
277
282
  }
278
283
  async reload(e) {
279
- e && $t(e), location.reload(), await xt();
284
+ e && Vt(e), location.reload(), await Pt();
280
285
  }
281
286
  plugin(e) {
282
287
  return this.plugins[e] ?? null;
283
288
  }
284
289
  service(e) {
285
- var s;
286
- return ((s = this.instance) == null ? void 0 : s.config.globalProperties[e]) ?? null;
290
+ var r;
291
+ return ((r = this.instance) == null ? void 0 : r.config.globalProperties[e]) ?? null;
287
292
  }
288
293
  async boot() {
289
- x.once("application-ready", () => this.ready.resolve()), x.once("application-mounted", () => this.mounted.resolve());
294
+ k.once("application-ready", () => this.ready.resolve()), k.once("application-mounted", () => this.mounted.resolve());
290
295
  }
291
296
  }
292
- const G = Q(ar);
293
- function aa(t) {
297
+ const j = G(Ls);
298
+ function fn(t) {
294
299
  return t;
295
300
  }
296
- async function or(t, ...r) {
297
- G.setState(
301
+ async function Hs(t, ...s) {
302
+ j.setState(
298
303
  "plugins",
299
304
  t.reduce(
300
- (e, s) => (s.name && (e[s.name] = s), e),
305
+ (e, r) => (r.name && (e[r.name] = r), e),
301
306
  {}
302
307
  )
303
- ), await Promise.all(t.map((e) => e.install(...r)) ?? []);
304
- }
305
- function ir(t) {
306
- return {
307
- type: Array,
308
- default: t ?? (() => [])
309
- };
310
- }
311
- function lr(t = !1) {
312
- return {
313
- type: Boolean,
314
- default: t
315
- };
308
+ ), await Promise.all(t.map((e) => e.install(...s)) ?? []);
316
309
  }
317
- function Pe() {
318
- return A();
310
+ function Vs(t) {
311
+ return Object.entries(t.props ?? {}).reduce((s, [e, r]) => s + `${e}="${B(r)}"`, "");
319
312
  }
320
- function oa(t) {
321
- const r = A(), e = d(t);
322
- return Se(e, async () => r.value = await e.value, { immediate: !0 }), r;
323
- }
324
- function ia(t) {
313
+ function hn(t) {
325
314
  return t;
326
315
  }
327
- function cr(t, r) {
328
- const e = Object.values(t);
329
- return {
330
- type: String,
331
- default: r ?? e[0] ?? null,
332
- validator: (s) => e.includes(s)
333
- };
334
- }
335
- function ur(t) {
336
- const r = X(t);
337
- return r ? ue(r) : void 0;
338
- }
339
- function V(t, r) {
340
- return ur(t) ?? O(r ?? `Could not resolve '${B(t)}' injection key`);
341
- }
342
- function la(t, r) {
343
- return X(t) ?? O(r ?? `Could not resolve '${B(t)}' injection key`);
344
- }
345
- function ca() {
346
- return {
347
- type: Function,
348
- default: null
349
- };
350
- }
351
- function Ie(t, r) {
352
- return {
353
- type: t,
354
- default: r ?? null
355
- };
356
- }
357
- function ua(t = null) {
358
- return {
359
- type: Number,
360
- default: t
361
- };
362
- }
363
- function dr(t = null) {
364
- return {
365
- type: Object,
366
- default: t
367
- };
368
- }
369
- function pr() {
370
- return {
371
- type: Array,
372
- required: !0
373
- };
374
- }
375
- function da(t) {
376
- const r = Object.values(t);
377
- return {
378
- type: String,
379
- required: !0,
380
- validator: (e) => r.includes(e)
381
- };
316
+ function Ps(t) {
317
+ const s = ae(t);
318
+ return s ? ie(s) : void 0;
382
319
  }
383
- function mr(t) {
384
- return {
385
- type: t,
386
- required: !0
387
- };
388
- }
389
- function pa() {
390
- return {
391
- type: Number,
392
- required: !0
393
- };
394
- }
395
- function fr() {
396
- return {
397
- type: Object,
398
- required: !0
399
- };
320
+ function V(t, s) {
321
+ return Ps(t) ?? J(s ?? `Could not resolve '${B(t)}' injection key`);
400
322
  }
401
- function Re() {
402
- return {
403
- type: String,
404
- required: !0
405
- };
323
+ function gn(t, s) {
324
+ return ae(t) ?? J(s ?? `Could not resolve '${B(t)}' injection key`);
406
325
  }
407
- function I(t = null) {
408
- return {
409
- type: String,
410
- default: t
411
- };
326
+ function Ke(t) {
327
+ return typeof t == "string" ? t : t.type === yt ? "" : t.type === _t || t.type === wt ? t.children : t.type === "br" ? `
328
+
329
+ ` : `<${t.type} ${Vs(t)}>${Array.from(t.children).map(Ke).join("")}</${t.type}>`;
412
330
  }
413
- const ye = /* @__PURE__ */ new WeakMap(), hr = {
414
- mounted(t, { value: r }) {
415
- const e = typeof r == "function" ? r : null, s = () => {
416
- const n = t.getBoundingClientRect();
417
- t.style.setProperty("--width", `${n.width}px`), t.style.setProperty("--height", `${n.height}px`), e == null || e({ width: n.width, height: n.height });
331
+ const be = /* @__PURE__ */ new WeakMap(), Ts = {
332
+ mounted(t, { value: s }) {
333
+ const e = typeof s == "function" ? s : null, r = () => {
334
+ const a = t.getBoundingClientRect();
335
+ t.style.setProperty("--width", `${a.width}px`), t.style.setProperty("--height", `${a.height}px`), e == null || e({ width: a.width, height: a.height });
418
336
  };
419
- ye.set(t, K(new ResizeObserver(s)).observe(t)), s();
337
+ be.set(t, Z(new ResizeObserver(r)).observe(t)), r();
420
338
  },
421
339
  unmounted(t) {
422
- var r;
423
- (r = ye.get(t)) == null || r.unobserve(t), ye.delete(t);
340
+ var s;
341
+ (s = be.get(t)) == null || s.unobserve(t), be.delete(t);
424
342
  }
425
- }, gr = {
426
- measure: hr
427
- }, vr = {
428
- install(t, r) {
343
+ }, Is = {
344
+ measure: Ts
345
+ }, As = {
346
+ install(t, s) {
429
347
  const e = {
430
- ...gr,
431
- ...r.directives
348
+ ...Is,
349
+ ...s.directives
432
350
  };
433
- for (const [s, n] of Object.entries(e))
434
- t.directive(s, n);
351
+ for (const [r, a] of Object.entries(e))
352
+ t.directive(r, a);
435
353
  }
436
354
  };
437
- class _r extends ve {
355
+ class Rs extends he {
438
356
  constructor() {
439
357
  super(...arguments);
440
- b(this, "cache");
358
+ _(this, "cache");
441
359
  }
442
360
  async get(e) {
443
361
  return await (await this.open()).match(e) ?? null;
444
362
  }
445
- async store(e, s) {
446
- await (await this.open()).put(e, s);
363
+ async store(e, r) {
364
+ await (await this.open()).put(e, r);
447
365
  }
448
- async replace(e, s) {
449
- const n = await this.open();
450
- (await n.keys(e)).length !== 0 && await n.put(e, s);
366
+ async replace(e, r) {
367
+ const a = await this.open();
368
+ (await a.keys(e)).length !== 0 && await a.put(e, r);
451
369
  }
452
370
  async open() {
453
- return this.cache = this.cache ?? K(new W(), (e) => {
454
- caches.open("app").then((s) => e.resolve(s));
371
+ return this.cache = this.cache ?? Z(new K(), (e) => {
372
+ caches.open("app").then((r) => e.resolve(r));
455
373
  });
456
374
  }
457
375
  }
458
- const ma = Q(_r);
459
- class br extends ve {
376
+ const vn = G(Rs);
377
+ class zs extends he {
460
378
  async purge() {
461
- await x.emit("purge-storage");
379
+ await k.emit("purge-storage");
462
380
  }
463
381
  }
464
- const yr = Q(br);
465
- function fa(t, r) {
382
+ const js = G(zs);
383
+ function bn(t, s) {
466
384
  return {
467
385
  ...t,
468
- ...re(r, Object.keys(t))
386
+ ...te(s, Object.keys(t))
469
387
  };
470
388
  }
471
- const wr = {
472
- $app: G,
473
- $events: x,
474
- $storage: yr
389
+ const Bs = {
390
+ $app: j,
391
+ $events: k,
392
+ $storage: js
475
393
  };
476
- async function _e(t, r) {
394
+ async function ge(t, s) {
477
395
  await Promise.all(
478
- Object.entries(r).map(async ([e, s]) => {
479
- await s.launch().catch((n) => {
480
- var a, i;
481
- return (i = (a = t.config).errorHandler) == null ? void 0 : i.call(a, n, null, `Failed launching ${e}.`);
396
+ Object.entries(s).map(async ([e, r]) => {
397
+ await r.launch().catch((a) => {
398
+ var n, o;
399
+ return (o = (n = t.config).errorHandler) == null ? void 0 : o.call(n, a, null, `Failed launching ${e}.`);
482
400
  });
483
401
  })
484
- ), Object.assign(t.config.globalProperties, r), (Z() || Me()) && Object.assign(globalThis, r);
402
+ ), Object.assign(t.config.globalProperties, s), (X() || Le()) && Object.assign(globalThis, s);
485
403
  }
486
- const $r = {
487
- async install(t, r) {
404
+ const Ds = {
405
+ async install(t, s) {
488
406
  const e = {
489
- ...wr,
490
- ...r.services
407
+ ...Bs,
408
+ ...s.services
491
409
  };
492
- t.use(tr()), await _e(t, e);
410
+ t.use(Ss()), j.settings.push(...s.settings ?? []), await ge(t, e);
493
411
  }
494
- }, Ke = 768, me = {
412
+ }, Je = 768, ce = {
495
413
  Mobile: "mobile",
496
414
  Desktop: "desktop"
497
415
  };
498
416
  function Qe() {
499
- return globalThis.innerWidth > Ke ? me.Desktop : me.Mobile;
417
+ return globalThis.innerWidth > Je ? ce.Desktop : ce.Mobile;
500
418
  }
501
- const xr = ge({
419
+ const qs = fe({
502
420
  name: "ui",
503
421
  initialState: {
504
422
  modals: [],
505
- snackbars: [],
423
+ toasts: [],
506
424
  layout: Qe()
507
425
  },
508
426
  computed: {
509
- mobile: ({ layout: t }) => t === me.Mobile,
510
- desktop: ({ layout: t }) => t === me.Desktop
427
+ mobile: ({ layout: t }) => t === ce.Mobile,
428
+ desktop: ({ layout: t }) => t === ce.Desktop
511
429
  }
512
- }), C = {
430
+ }), E = {
513
431
  AlertModal: "alert-modal",
514
432
  ConfirmModal: "confirm-modal",
515
433
  ErrorReportModal: "error-report-modal",
516
434
  LoadingModal: "loading-modal",
517
435
  PromptModal: "prompt-modal",
518
- Snackbar: "snackbar",
436
+ Toast: "toast",
519
437
  StartupCrash: "startup-crash"
520
438
  };
521
- class Sr extends xr {
439
+ class Fs extends qs {
522
440
  constructor() {
523
441
  super(...arguments);
524
- b(this, "modalCallbacks", {});
525
- b(this, "components", {});
442
+ _(this, "modalCallbacks", {});
443
+ _(this, "components", {});
526
444
  }
527
445
  requireComponent(e) {
528
- return this.components[e] ?? O(`UI Component '${e}' is not defined!`);
446
+ return this.components[e] ?? J(`UI Component '${e}' is not defined!`);
529
447
  }
530
- alert(e, s) {
531
- const n = () => typeof s != "string" ? { message: e } : {
448
+ alert(e, r) {
449
+ const a = () => typeof r != "string" ? { message: e } : {
532
450
  title: e,
533
- message: s
451
+ message: r
534
452
  };
535
453
  this.openModal(
536
- this.requireComponent(C.AlertModal),
537
- n()
454
+ this.requireComponent(E.AlertModal),
455
+ a()
538
456
  );
539
457
  }
540
458
  // prettier-ignore
541
459
  /* eslint-enable max-len */
542
- async confirm(e, s, n) {
543
- const i = typeof s != "string" ? {
544
- ...s ?? {},
460
+ async confirm(e, r, a) {
461
+ const o = typeof r != "string" ? {
462
+ ...r ?? {},
545
463
  message: e,
546
- required: !!(s != null && s.required)
464
+ required: !!(r != null && r.required)
547
465
  } : {
548
- ...n ?? {},
466
+ ...a ?? {},
549
467
  title: e,
550
- message: s,
551
- required: !!(n != null && n.required)
552
- }, l = await (await this.openModal(
553
- this.requireComponent(C.ConfirmModal),
554
- i
555
- )).beforeClose, p = typeof l == "object" ? l[0] : l ?? !1, w = typeof l == "object" ? l[1] : Object.entries(i.checkboxes ?? {}).reduce(
556
- (M, [S, { default: D }]) => ({
557
- [S]: D ?? !1,
558
- ...M
468
+ message: r,
469
+ required: !!(a != null && a.required)
470
+ }, u = await (await this.openModal(
471
+ this.requireComponent(E.ConfirmModal),
472
+ o
473
+ )).beforeClose, d = typeof u == "object" ? u[0] : u ?? !1, b = typeof u == "object" ? u[1] : Object.entries(o.checkboxes ?? {}).reduce(
474
+ (x, [S, { default: W }]) => ({
475
+ [S]: W ?? !1,
476
+ ...x
559
477
  }),
560
478
  {}
561
479
  );
562
- for (const [M, S] of Object.entries(i.checkboxes ?? {}))
563
- if (!(!S.required || w[M]))
564
- return p && Z() && console.warn(`Confirmed confirm modal was suppressed because required '${M}' checkbox was missing`), [!1, w];
565
- return "checkboxes" in i ? [p, w] : p;
480
+ for (const [x, S] of Object.entries(o.checkboxes ?? {}))
481
+ if (!(!S.required || b[x]))
482
+ return d && X() && console.warn(`Confirmed confirm modal was suppressed because required '${x}' checkbox was missing`), [!1, b];
483
+ return "checkboxes" in o ? [d, b] : d;
566
484
  }
567
- async prompt(e, s, n) {
568
- const a = (n == null ? void 0 : n.trim) ?? !0, i = () => typeof s != "string" ? {
485
+ async prompt(e, r, a) {
486
+ const n = (a == null ? void 0 : a.trim) ?? !0, o = () => typeof r != "string" ? {
569
487
  message: e,
570
- ...s ?? {}
488
+ ...r ?? {}
571
489
  } : {
572
490
  title: e,
573
- message: s,
574
- ...n ?? {}
575
- }, l = await (await this.openModal(
576
- this.requireComponent(C.PromptModal),
577
- i()
491
+ message: r,
492
+ ...a ?? {}
493
+ }, u = await (await this.openModal(
494
+ this.requireComponent(E.PromptModal),
495
+ o()
578
496
  )).beforeClose;
579
- return (a && typeof l == "string" ? l == null ? void 0 : l.trim() : l) ?? null;
497
+ return (n && typeof u == "string" ? u == null ? void 0 : u.trim() : u) ?? null;
580
498
  }
581
- async loading(e, s) {
582
- const n = (p) => typeof p == "function" ? Promise.resolve(p()) : p, a = () => typeof e == "string" ? {
499
+ async loading(e, r) {
500
+ const a = (d) => typeof d == "function" ? Promise.resolve(d()) : d, n = () => typeof e == "string" ? {
583
501
  props: { message: e },
584
- operationPromise: n(s)
585
- } : typeof e == "function" || e instanceof Promise ? { operationPromise: n(e) } : {
502
+ operationPromise: a(r)
503
+ } : typeof e == "function" || e instanceof Promise ? { operationPromise: a(e) } : {
586
504
  props: e,
587
- operationPromise: n(s)
588
- }, { operationPromise: i, props: o } = a(), l = await this.openModal(this.requireComponent(C.LoadingModal), o);
505
+ operationPromise: a(r)
506
+ }, { operationPromise: o, props: c } = n(), u = await this.openModal(this.requireComponent(E.LoadingModal), c);
589
507
  try {
590
- const p = await i;
591
- return await Le({ ms: 500 }), p;
508
+ const d = await o;
509
+ return await Ie({ ms: 500 }), d;
592
510
  } finally {
593
- await this.closeModal(l.id);
511
+ await this.closeModal(u.id);
594
512
  }
595
513
  }
596
- showSnackbar(e, s = {}) {
597
- const n = {
598
- id: de(),
599
- properties: { message: e, ...s },
600
- component: Ae(s.component ?? this.requireComponent(C.Snackbar))
514
+ toast(e, r = {}) {
515
+ const { component: a, ...n } = r, o = {
516
+ id: re(),
517
+ properties: { message: e, ...n },
518
+ component: Pe(a ?? this.requireComponent(E.Toast))
601
519
  };
602
- this.setState("snackbars", this.snackbars.concat(n)), setTimeout(() => this.hideSnackbar(n.id), 5e3);
603
- }
604
- hideSnackbar(e) {
605
- this.setState(
606
- "snackbars",
607
- this.snackbars.filter((s) => s.id !== e)
608
- );
609
- }
610
- registerComponent(e, s) {
611
- this.components[e] = s;
612
- }
613
- async openModal(e, s) {
614
- const n = de(), a = {}, i = {
615
- id: n,
616
- properties: s ?? {},
617
- component: Ae(e),
618
- beforeClose: new Promise((p) => a.willClose = p),
619
- afterClose: new Promise((p) => a.closed = p)
620
- }, o = this.modals.at(-1), l = this.modals.concat(i);
621
- return this.modalCallbacks[i.id] = a, this.setState({ modals: l }), await ze(), await (o && x.emit("hide-modal", { id: o.id })), await Promise.all([
622
- o || x.emit("show-overlays-backdrop"),
623
- x.emit("show-modal", { id: i.id })
624
- ]), i;
625
- }
626
- async closeModal(e, s) {
627
- if (!G.isMounted()) {
628
- await this.removeModal(e, s);
520
+ this.setState("toasts", this.toasts.concat(o));
521
+ }
522
+ registerComponent(e, r) {
523
+ this.components[e] = r;
524
+ }
525
+ async openModal(e, r) {
526
+ const a = re(), n = {}, o = {
527
+ id: a,
528
+ properties: r ?? {},
529
+ component: Pe(e),
530
+ beforeClose: new Promise((d) => n.willClose = d),
531
+ afterClose: new Promise((d) => n.closed = d)
532
+ }, c = this.modals.at(-1), u = this.modals.concat(o);
533
+ return this.modalCallbacks[o.id] = n, this.setState({ modals: u }), await Be(), await (c && k.emit("hide-modal", { id: c.id })), await Promise.all([
534
+ c || k.emit("show-overlays-backdrop"),
535
+ k.emit("show-modal", { id: o.id })
536
+ ]), o;
537
+ }
538
+ async closeModal(e, r) {
539
+ if (!j.isMounted()) {
540
+ await this.removeModal(e, r);
629
541
  return;
630
542
  }
631
- await x.emit("close-modal", { id: e, result: s });
543
+ await k.emit("close-modal", { id: e, result: r });
632
544
  }
633
545
  async closeAllModals() {
634
546
  for (; this.modals.length > 0; )
635
- await this.closeModal(St(this.modals[this.modals.length - 1]).id);
547
+ await this.closeModal(Tt(this.modals[this.modals.length - 1]).id);
636
548
  }
637
549
  async boot() {
638
550
  this.watchModalEvents(), this.watchMountedEvent(), this.watchViewportBreakpoints();
639
551
  }
640
- async removeModal(e, s) {
641
- var a, i;
552
+ async removeModal(e, r) {
553
+ var n, o;
642
554
  this.setState(
643
555
  "modals",
644
- this.modals.filter((o) => o.id !== e)
645
- ), (i = (a = this.modalCallbacks[e]) == null ? void 0 : a.closed) == null || i.call(a, s), delete this.modalCallbacks[e];
646
- const n = this.modals.at(-1);
647
- await (n && x.emit("show-modal", { id: n.id }));
556
+ this.modals.filter((c) => c.id !== e)
557
+ ), (o = (n = this.modalCallbacks[e]) == null ? void 0 : n.closed) == null || o.call(n, r), delete this.modalCallbacks[e];
558
+ const a = this.modals.at(-1);
559
+ await (a && k.emit("show-modal", { id: a.id }));
648
560
  }
649
561
  watchModalEvents() {
650
- x.on("modal-will-close", ({ modal: e, result: s }) => {
651
- var n, a;
652
- (a = (n = this.modalCallbacks[e.id]) == null ? void 0 : n.willClose) == null || a.call(n, s), this.modals.length === 1 && x.emit("hide-overlays-backdrop");
653
- }), x.on("modal-closed", async ({ modal: { id: e }, result: s }) => {
654
- await this.removeModal(e, s);
562
+ k.on("modal-will-close", ({ modal: e, result: r }) => {
563
+ var a, n;
564
+ (n = (a = this.modalCallbacks[e.id]) == null ? void 0 : a.willClose) == null || n.call(a, r), this.modals.length === 1 && k.emit("hide-overlays-backdrop");
565
+ }), k.on("modal-closed", async ({ modal: { id: e }, result: r }) => {
566
+ await this.removeModal(e, r);
655
567
  });
656
568
  }
657
569
  watchMountedEvent() {
658
- x.once("application-mounted", async () => {
570
+ k.once("application-mounted", async () => {
659
571
  if (!globalThis.document || !globalThis.getComputedStyle)
660
572
  return;
661
573
  const e = globalThis.document.getElementById("splash");
662
- e && (globalThis.getComputedStyle(e).opacity !== "0" && (e.style.opacity = "0", await Le({ ms: 600 })), e.remove());
574
+ e && (globalThis.getComputedStyle(e).opacity !== "0" && (e.style.opacity = "0", await Ie({ ms: 600 })), e.remove());
663
575
  });
664
576
  }
665
577
  watchViewportBreakpoints() {
666
578
  if (!globalThis.matchMedia)
667
579
  return;
668
- globalThis.matchMedia(`(min-width: ${Ke}px)`).addEventListener("change", () => this.setState({ layout: Qe() }));
580
+ globalThis.matchMedia(`(min-width: ${Je}px)`).addEventListener("change", () => this.setState({ layout: Qe() }));
669
581
  }
670
582
  }
671
- const P = Q(Sr);
672
- class kr {
673
- constructor(r, e) {
674
- this.locale = r, this.fallbackLocale = e;
583
+ const A = G(Fs);
584
+ class Us {
585
+ constructor(s, e) {
586
+ this.locale = s, this.fallbackLocale = e;
675
587
  }
676
588
  getLocale() {
677
589
  return this.locale;
678
590
  }
679
- async setLocale(r) {
680
- this.locale = r;
591
+ async setLocale(s) {
592
+ this.locale = s;
681
593
  }
682
594
  getFallbackLocale() {
683
595
  return this.fallbackLocale;
684
596
  }
685
- async setFallbackLocale(r) {
686
- this.fallbackLocale = r;
597
+ async setFallbackLocale(s) {
598
+ this.fallbackLocale = s;
687
599
  }
688
600
  getLocales() {
689
601
  return ["en"];
690
602
  }
691
- translate(r) {
692
- return Z() && console.warn("Lang provider is missing"), r;
603
+ translate(s) {
604
+ return X() && console.warn("Lang provider is missing"), s;
693
605
  }
694
- translateWithDefault(r, e) {
695
- return Z() && console.warn("Lang provider is missing"), e;
606
+ translateWithDefault(s, e) {
607
+ return X() && console.warn("Lang provider is missing"), e;
696
608
  }
697
609
  }
698
- const Cr = ge({
610
+ const Ns = fe({
699
611
  name: "lang",
700
612
  persist: ["locale", "fallbackLocale"],
701
613
  initialState: {
@@ -704,11 +616,11 @@ const Cr = ge({
704
616
  fallbackLocale: "en"
705
617
  }
706
618
  });
707
- class Mr extends Cr {
619
+ class Os extends Ns {
708
620
  constructor() {
709
621
  super();
710
- b(this, "provider");
711
- this.provider = new kr(
622
+ _(this, "provider");
623
+ this.provider = new Us(
712
624
  this.getState("locale") ?? this.getBrowserLocale(),
713
625
  this.getState("fallbackLocale")
714
626
  );
@@ -716,32 +628,27 @@ class Mr extends Cr {
716
628
  async setProvider(e) {
717
629
  this.provider = e, this.locales = e.getLocales(), await e.setLocale(this.locale ?? this.getBrowserLocale()), await e.setFallbackLocale(this.fallbackLocale);
718
630
  }
719
- translate(e, s) {
720
- return this.provider.translate(e, s) ?? e;
631
+ translate(e, r) {
632
+ return this.provider.translate(e, r) ?? e;
721
633
  }
722
- translateWithDefault(e, s, n = {}) {
723
- return this.provider.translateWithDefault(e, s, n);
634
+ translateWithDefault(e, r, a = {}) {
635
+ return this.provider.translateWithDefault(e, r, a);
724
636
  }
725
637
  getBrowserLocale() {
726
638
  const e = this.getState("locales");
727
- return navigator.languages.find((s) => e.includes(s)) ?? "en";
639
+ return navigator.languages.find((r) => e.includes(r)) ?? "en";
728
640
  }
729
641
  async boot() {
730
642
  globalThis.document && this.requireStore().$subscribe(
731
643
  async () => {
732
- var e, s;
733
- await this.provider.setLocale(this.locale ?? this.getBrowserLocale()), await this.provider.setFallbackLocale(this.fallbackLocale), this.locale ? (e = document.querySelector("html")) == null || e.setAttribute("lang", this.locale) : (s = document.querySelector("html")) == null || s.removeAttribute("lang");
644
+ var e, r;
645
+ await this.provider.setLocale(this.locale ?? this.getBrowserLocale()), await this.provider.setFallbackLocale(this.fallbackLocale), this.locale ? (e = document.querySelector("html")) == null || e.setAttribute("lang", this.locale) : (r = document.querySelector("html")) == null || r.removeAttribute("lang");
734
646
  },
735
647
  { immediate: !0 }
736
648
  );
737
649
  }
738
650
  }
739
- const ne = Q(Mr), Je = ne.translate.bind(ne), $ = ne.translateWithDefault.bind(ne), ae = {
740
- Primary: "primary",
741
- Secondary: "secondary",
742
- Danger: "danger",
743
- Clear: "clear"
744
- }, Er = ge({
651
+ const Q = G(Os), Ze = Q.translate.bind(Q), C = Q.translateWithDefault.bind(Q), Ws = fe({
745
652
  name: "errors",
746
653
  initialState: {
747
654
  logs: [],
@@ -749,15 +656,15 @@ const ne = Q(Mr), Je = ne.translate.bind(ne), $ = ne.translateWithDefault.bind(n
749
656
  },
750
657
  computed: {
751
658
  hasErrors: ({ logs: t }) => t.length > 0,
752
- hasNewErrors: ({ logs: t }) => t.some((r) => !r.seen),
659
+ hasNewErrors: ({ logs: t }) => t.some((s) => !s.seen),
753
660
  hasStartupErrors: ({ startupErrors: t }) => t.length > 0
754
661
  }
755
662
  });
756
- class Pr extends Er {
663
+ class Ks extends Ws {
757
664
  constructor() {
758
665
  super(...arguments);
759
- b(this, "forceReporting", !1);
760
- b(this, "enabled", !0);
666
+ _(this, "forceReporting", !1);
667
+ _(this, "enabled", !0);
761
668
  }
762
669
  enable() {
763
670
  this.enabled = !0;
@@ -766,49 +673,49 @@ class Pr extends Er {
766
673
  this.enabled = !1;
767
674
  }
768
675
  async inspect(e) {
769
- const s = Array.isArray(e) ? e : [await this.createErrorReport(e)];
770
- if (s.length === 0) {
771
- P.alert($("errors.inspectEmpty", "Nothing to inspect!"));
676
+ const r = Array.isArray(e) ? e : [await this.createErrorReport(e)];
677
+ if (r.length === 0) {
678
+ A.alert(C("errors.inspectEmpty", "Nothing to inspect!"));
772
679
  return;
773
680
  }
774
- P.openModal(P.requireComponent(C.ErrorReportModal), {
775
- reports: s
681
+ A.openModal(A.requireComponent(E.ErrorReportModal), {
682
+ reports: r
776
683
  });
777
684
  }
778
- async report(e, s) {
779
- if (await x.emit("error", { error: e, message: s }), Me("unit") || (Z() && this.logError(e), !this.enabled))
685
+ async report(e, r) {
686
+ if (await k.emit("error", { error: e, message: r }), Le("unit") || (X() && this.logError(e), !this.enabled))
780
687
  throw e;
781
- if (!G.isMounted()) {
782
- const i = await this.createStartupErrorReport(e);
783
- i && this.setState({ startupErrors: this.startupErrors.concat(i) });
688
+ if (!j.isMounted()) {
689
+ const o = await this.createStartupErrorReport(e);
690
+ o && this.setState({ startupErrors: this.startupErrors.concat(o) });
784
691
  return;
785
692
  }
786
- const n = await this.createErrorReport(e), a = {
787
- report: n,
693
+ const a = await this.createErrorReport(e), n = {
694
+ report: a,
788
695
  seen: !1,
789
696
  date: /* @__PURE__ */ new Date()
790
697
  };
791
- P.showSnackbar(
792
- s ?? $("errors.notice", "Something went wrong, but it's not your fault. Try again!"),
698
+ A.toast(
699
+ r ?? C("errors.notice", "Something went wrong, but it's not your fault. Try again!"),
793
700
  {
794
- color: ae.Danger,
701
+ variant: "danger",
795
702
  actions: [
796
703
  {
797
- text: $("errors.viewDetails", "View details"),
704
+ label: C("errors.viewDetails", "View details"),
798
705
  dismiss: !0,
799
- handler: () => P.openModal(
800
- P.requireComponent(C.ErrorReportModal),
801
- { reports: [n] }
706
+ click: () => A.openModal(
707
+ A.requireComponent(E.ErrorReportModal),
708
+ { reports: [a] }
802
709
  )
803
710
  }
804
711
  ]
805
712
  }
806
- ), this.setState({ logs: [a].concat(this.logs) });
713
+ ), this.setState({ logs: [n].concat(this.logs) });
807
714
  }
808
715
  see(e) {
809
716
  this.setState({
810
- logs: this.logs.map((s) => s.report !== e ? s : {
811
- ...s,
717
+ logs: this.logs.map((r) => r.report !== e ? r : {
718
+ ...r,
812
719
  seen: !0
813
720
  })
814
721
  });
@@ -822,96 +729,117 @@ class Pr extends Er {
822
729
  });
823
730
  }
824
731
  logError(e) {
825
- console.error(e), pe(e) && e.cause && this.logError(e.cause);
732
+ console.error(e), we(e) && e.cause && this.logError(e.cause);
826
733
  }
827
734
  async createErrorReport(e) {
828
- return typeof e == "string" ? { title: e } : e instanceof Error || e instanceof he ? this.createErrorReportFromError(e) : pe(e) ? Ne({
735
+ return typeof e == "string" ? { title: e } : e instanceof Error || e instanceof me ? this.createErrorReportFromError(e) : we(e) ? Oe({
829
736
  title: B(
830
- e.name ?? e.title ?? $("errors.unknown", "Unknown Error")
737
+ e.name ?? e.title ?? C("errors.unknown", "Unknown Error")
831
738
  ),
832
739
  description: B(
833
- e.message ?? e.description ?? $("errors.unknownDescription", "Unknown error object")
740
+ e.message ?? e.description ?? C("errors.unknownDescription", "Unknown error object")
834
741
  ),
835
742
  error: e
836
743
  }) : {
837
- title: $("errors.unknown", "Unknown Error"),
744
+ title: C("errors.unknown", "Unknown Error"),
838
745
  error: e
839
746
  };
840
747
  }
841
748
  async createStartupErrorReport(e) {
842
- return e instanceof xe ? e.cause instanceof xe ? null : this.createErrorReport(e.cause) : this.createErrorReport(e);
749
+ return e instanceof $e ? e.cause instanceof $e ? null : this.createErrorReport(e.cause) : this.createErrorReport(e);
843
750
  }
844
- createErrorReportFromError(e, s = {}) {
751
+ createErrorReportFromError(e, r = {}) {
845
752
  return {
846
753
  title: e.name,
847
754
  description: e.message,
848
755
  details: e.stack,
849
756
  error: e,
850
- ...s
757
+ ...r
851
758
  };
852
759
  }
853
760
  }
854
- const Ze = Q(Pr), Xe = [];
855
- function ha(t) {
761
+ const Ge = G(Ks), Xe = [];
762
+ function yn(t) {
856
763
  Xe.push(t);
857
764
  }
858
- function Ir(t) {
859
- for (const r of Xe) {
860
- const e = r(t);
765
+ function Js(t) {
766
+ for (const s of Xe) {
767
+ const e = s(t);
861
768
  if (e)
862
769
  return e;
863
770
  }
864
- return typeof t == "string" ? t : t instanceof Error || t instanceof he ? t.message : pe(t) ? B(t.message ?? t.description ?? "Unknown error object") : $("errors.unknown", "Unknown Error");
771
+ return typeof t == "string" ? t : t instanceof Error || t instanceof me ? t.message : we(t) ? B(t.message ?? t.description ?? "Unknown error object") : C("errors.unknown", "Unknown Error");
865
772
  }
866
- class je extends he {
773
+ class Re extends me {
867
774
  }
868
- const Ar = { $errors: Ze }, Hr = (t) => (Ze.report(t), !0);
869
- function Lr(t, r = () => !1) {
870
- const e = (s) => r(s) || Hr(s);
871
- t.config.errorHandler = e, globalThis.onerror = (s, n, a, i, o) => e(o ?? s), globalThis.onunhandledrejection = (s) => e(s.reason);
775
+ const Qs = { $errors: Ge }, Zs = (t) => (Ge.report(t), !0);
776
+ function Gs(t, s = () => !1) {
777
+ const e = (r) => s(r) || Zs(r);
778
+ t.config.errorHandler = e, globalThis.onerror = (r, a, n, o, c) => e(c ?? r), globalThis.onunhandledrejection = (r) => e(r.reason);
872
779
  }
873
- const Tr = {
874
- async install(t, r) {
875
- Lr(t, r.handleError), await _e(t, Ar);
876
- }
877
- }, Rr = { $lang: ne }, jr = {
878
- async install(t) {
879
- var r;
880
- (r = t.config.globalProperties).$t ?? (r.$t = Je), t.config.globalProperties.$td = $, await _e(t, Rr);
780
+ const Xs = {
781
+ async install(t, s) {
782
+ Gs(t, s.handleError), await ge(t, Qs);
881
783
  }
882
- }, Vr = {
883
- async install() {
884
- Me() && (globalThis.testingRuntime = {
885
- on: (...t) => x.on(...t)
886
- });
887
- }
888
- }, zr = { class: "pointer-events-auto" }, qr = /* @__PURE__ */ h({
889
- __name: "AGHeadlessSnackbar",
890
- setup(t) {
891
- return (r, e) => (u(), _("div", zr, [
892
- y(r.$slots, "default")
893
- ]));
894
- }
895
- }), Br = We(ae, ["Primary", "Clear"]), Dr = {
896
- id: Re(),
897
- message: Re(),
898
- actions: ir(() => []),
899
- color: cr(Br, ae.Secondary)
900
784
  };
901
- function Fr() {
902
- return Dr;
785
+ function Ys() {
786
+ return Z(new Ae(), (t) => {
787
+ t.link = function(s) {
788
+ return Ae.prototype.link.apply(this, [s]).replace("<a", '<a target="_blank"');
789
+ };
790
+ });
903
791
  }
904
- function Ur(t) {
905
- function r(e) {
906
- var s;
907
- (s = e.handler) == null || s.call(e), e.dismiss && P.hideSnackbar(t.id);
908
- }
909
- return { activate: r };
792
+ function er(t) {
793
+ const s = It(t, /<a[^>]*href="#action:([^"]+)"[^>]*>([^<]+)<\/a>/g);
794
+ for (const [e, r, a] of s)
795
+ t = t.replace(e, `<button type="button" data-markdown-action="${r}">${a}</button>`);
796
+ return t;
797
+ }
798
+ function tr(t) {
799
+ let s = Qt(t, { renderer: Ys(), async: !1 });
800
+ return s = sr(s), s = er(s), s;
910
801
  }
911
- const Gr = /* @__PURE__ */ h({
802
+ function sr(t) {
803
+ return Jt.sanitize(t, { ADD_ATTR: ["target"] });
804
+ }
805
+ const z = /* @__PURE__ */ g({
806
+ __name: "Markdown",
807
+ props: {
808
+ as: {},
809
+ inline: { type: Boolean },
810
+ langKey: {},
811
+ langParams: {},
812
+ langDefault: {},
813
+ text: {},
814
+ actions: {}
815
+ },
816
+ setup(t) {
817
+ const s = De(), e = Se(), r = p(() => e.default ? e.default().map(Ke).join("") : t.text ?? (t.langKey && (t.langDefault ? C(t.langKey, t.langDefault, t.langParams ?? {}) : Ze(t.langKey, t.langParams ?? {})))), a = p(() => {
818
+ if (!r.value)
819
+ return null;
820
+ let c = tr(r.value);
821
+ return t.inline && (c = c.replace("<p>", "<span>").replace("</p>", "</span>")), c;
822
+ }), n = () => $t(t.as ?? (t.inline ? "span" : "div"), {
823
+ innerHTML: a.value,
824
+ onClick: o,
825
+ ...s,
826
+ class: `${s.class ?? ""} ${t.inline ? "" : "prose"}`
827
+ });
828
+ async function o(c) {
829
+ var d, b;
830
+ const { target: u } = c;
831
+ if (At(u, HTMLElement) && u.dataset.markdownAction) {
832
+ (b = (d = t.actions) == null ? void 0 : d[u.dataset.markdownAction]) == null || b.call(d);
833
+ return;
834
+ }
835
+ }
836
+ return (c, u) => (l(), h(n));
837
+ }
838
+ }), rr = /* @__PURE__ */ g({
912
839
  __name: "HeadlessButton",
913
840
  props: {
914
841
  class: {},
842
+ disabled: { type: Boolean },
915
843
  href: {},
916
844
  route: {},
917
845
  routeParams: {},
@@ -923,9 +851,9 @@ const Gr = /* @__PURE__ */ h({
923
851
  as: {}
924
852
  },
925
853
  setup(t) {
926
- const r = d(() => t.as ? { as: t.as } : t.route ? {
854
+ const s = p(() => t.as ? { as: t.as } : t.route ? {
927
855
  as: "router-link",
928
- to: Ne({
856
+ to: Oe({
929
857
  name: t.route,
930
858
  params: t.routeParams,
931
859
  query: t.routeQuery
@@ -938,49 +866,32 @@ const Gr = /* @__PURE__ */ h({
938
866
  as: "button",
939
867
  type: t.submit ? "submit" : "button"
940
868
  });
941
- return (e, s) => (u(), g(c(Rt), H({
869
+ return (e, r) => (l(), h(i(Zt), T({
942
870
  class: t.class,
943
- "as-child": e.asChild
944
- }, r.value), {
871
+ "as-child": e.asChild,
872
+ disabled: e.disabled
873
+ }, s.value), {
945
874
  default: f(() => [
946
- y(e.$slots, "default")
875
+ w(e.$slots, "default")
947
876
  ]),
948
877
  _: 3
949
- }, 16, ["class", "as-child"]));
878
+ }, 16, ["class", "as-child", "disabled"]));
950
879
  }
951
880
  });
952
- function Nr(t, r) {
953
- return d(() => {
954
- const { baseClasses: e, ...s } = t, { baseClasses: n, ...a } = r, i = Jt(n, a), o = Object.entries(s).reduce((l, [p, w]) => (l[p] = c(w), l), {});
955
- return N(i(o), c(e));
881
+ function Ye(t, s) {
882
+ return p(() => {
883
+ const { baseClasses: e, ...r } = t, { baseClasses: a, ...n } = s, o = $s(a, n), c = Object.entries(r).reduce((u, [d, b]) => (u[d] = i(b), u), {});
884
+ return P(o(c), i(e));
956
885
  });
957
886
  }
958
- function N(...t) {
959
- return Zt(Qt(t));
887
+ function P(...t) {
888
+ return xs(ws(t));
960
889
  }
961
- function Wr(t, r) {
962
- return Object.keys(r).reduce(
963
- (e, s) => (e[s] = t[s], e),
964
- {}
965
- );
966
- }
967
- function Or(t) {
968
- if (t instanceof HTMLElement)
969
- return t;
970
- if (Kr(t))
971
- return t.$el;
972
- }
973
- function Kr(t) {
974
- return pe(t) && "$el" in t;
975
- }
976
- function Ye(t, r) {
977
- const e = X("form", null), s = e == null ? void 0 : e.on("focus", (n) => t.name === n && r());
978
- oe(() => s == null ? void 0 : s());
979
- }
980
- const T = /* @__PURE__ */ h({
890
+ const I = /* @__PURE__ */ g({
981
891
  __name: "Button",
982
892
  props: {
983
893
  class: {},
894
+ disabled: { type: Boolean },
984
895
  href: {},
985
896
  route: {},
986
897
  routeParams: {},
@@ -992,24 +903,28 @@ const T = /* @__PURE__ */ h({
992
903
  as: {}
993
904
  },
994
905
  setup(t) {
995
- const r = Y(t, ["class", "size", "variant"]), e = Nr(
996
- { baseClasses: t.class, variant: t.variant, size: t.size },
906
+ const s = Y(t, ["class", "size", "variant", "disabled"]), e = Ye(
907
+ { baseClasses: t.class, variant: t.variant, size: t.size, disabled: t.disabled },
997
908
  {
998
- baseClasses: "focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2",
909
+ baseClasses: "flex items-center justify-center gap-1 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2",
999
910
  variants: {
1000
911
  variant: {
1001
- default: "bg-primary text-white hover:bg-primary/90 focus-visible:outline-primary",
1002
- secondary: "bg-background text-gray-900 ring-gray-300 hover:bg-accent",
1003
- danger: "bg-danger text-white hover:bg-danger/80 focus-visible:outline-danger",
1004
- ghost: "bg-background hover:bg-accent",
1005
- outline: "bg-background text-primary ring-primary hover:bg-accent",
1006
- link: "text-primary hover:underline"
912
+ default: "bg-primary text-white focus-visible:outline-primary",
913
+ secondary: "bg-background text-gray-900 ring-gray-300",
914
+ danger: "bg-danger text-white focus-visible:outline-danger",
915
+ ghost: "bg-transparent",
916
+ outline: "bg-transparent text-primary ring-primary",
917
+ link: "text-primary"
1007
918
  },
1008
919
  size: {
1009
- small: "rounded px-2 py-1 text-xs",
1010
- default: "rounded-md px-2.5 py-1.5 text-sm",
1011
- large: "rounded-md px-3 py-2 text-base",
920
+ small: "text-xs",
921
+ default: "text-sm",
922
+ large: "text-base",
1012
923
  icon: "rounded-full p-2.5"
924
+ },
925
+ disabled: {
926
+ false: null,
927
+ true: "opacity-50 cursor-not-allowed"
1013
928
  }
1014
929
  },
1015
930
  compoundVariants: [
@@ -1024,435 +939,729 @@ const T = /* @__PURE__ */ h({
1024
939
  {
1025
940
  variant: ["secondary", "outline"],
1026
941
  class: "ring-1 ring-inset"
942
+ },
943
+ {
944
+ variant: ["default", "secondary", "danger", "ghost", "outline"],
945
+ size: "small",
946
+ class: "rounded px-2 py-1"
947
+ },
948
+ {
949
+ variant: ["default", "secondary", "danger", "ghost", "outline"],
950
+ size: "default",
951
+ class: "rounded-md px-2.5 py-1.5"
952
+ },
953
+ {
954
+ variant: ["default", "secondary", "danger", "ghost", "outline"],
955
+ size: "large",
956
+ class: "rounded-md px-3 py-2"
957
+ },
958
+ {
959
+ variant: "default",
960
+ disabled: !1,
961
+ class: "hover:bg-primary/90"
962
+ },
963
+ {
964
+ variant: ["secondary", "ghost", "outline"],
965
+ disabled: !1,
966
+ class: "hover:bg-accent"
967
+ },
968
+ {
969
+ variant: "danger",
970
+ disabled: !1,
971
+ class: "hover:bg-danger/80"
972
+ },
973
+ {
974
+ variant: "link",
975
+ disabled: !1,
976
+ class: "hover:underline"
1027
977
  }
1028
978
  ],
1029
979
  defaultVariants: {
1030
980
  variant: "default",
1031
- size: "default"
981
+ size: "default",
982
+ disabled: !1
1032
983
  }
1033
984
  }
1034
985
  );
1035
- return (s, n) => (u(), g(Gr, H({ class: c(e) }, r), {
986
+ return (r, a) => (l(), h(rr, T({
987
+ class: i(e),
988
+ disabled: r.disabled
989
+ }, s), {
1036
990
  default: f(() => [
1037
- y(s.$slots, "default")
991
+ w(r.$slots, "default")
1038
992
  ]),
1039
993
  _: 3
1040
- }, 16, ["class"]));
994
+ }, 16, ["class", "disabled"]));
1041
995
  }
1042
996
  });
1043
- function Qr() {
1044
- return K(new Te(), (t) => {
1045
- t.link = function(r) {
1046
- return Te.prototype.link.apply(this, [r]).replace("<a", '<a target="_blank"');
1047
- };
1048
- });
997
+ function ar(t) {
998
+ return typeof t == "object" && t !== null && "label" in t;
1049
999
  }
1050
- function Jr(t) {
1051
- const r = kt(t, /<a[^>]*href="#action:([^"]+)"[^>]*>([^<]+)<\/a>/g);
1052
- for (const [e, s, n] of r)
1053
- t = t.replace(e, `<button type="button" data-markdown-action="${s}">${n}</button>`);
1054
- return t;
1000
+ function se(t, s) {
1001
+ const e = k.on(t, s);
1002
+ ue(() => e());
1055
1003
  }
1056
- function Zr(t) {
1057
- let r = Yt(t, { renderer: Qr(), async: !1 });
1058
- return r = Xr(r), r = Jr(r), r;
1004
+ function et(t, s) {
1005
+ const e = ae("form", null), r = e == null ? void 0 : e.on("focus", (a) => t.name === a && s());
1006
+ ue(() => r == null ? void 0 : r());
1059
1007
  }
1060
- function Xr(t) {
1061
- return Xt.sanitize(t, { ADD_ATTR: ["target"] });
1008
+ function tt() {
1009
+ const t = De(), s = p(() => t.class);
1010
+ return [p(() => Rt(t, "class")), s];
1062
1011
  }
1063
- const R = /* @__PURE__ */ h({
1064
- __name: "AGMarkdown",
1065
- props: {
1066
- as: I(),
1067
- inline: lr(),
1068
- langKey: I(),
1069
- langParams: Ie(),
1070
- text: I(),
1071
- actions: dr()
1072
- },
1012
+ function _n(t) {
1013
+ let s = zt;
1014
+ xt(() => s = t()), ue(() => s());
1015
+ }
1016
+ function wn(t, s) {
1017
+ const e = ie(U.get(t) ?? s);
1018
+ return ke(e, () => U.set(t, Ct(e))), e;
1019
+ }
1020
+ function $n(t) {
1021
+ const s = H(), e = p(t);
1022
+ return ke(e, async () => s.value = await e.value, { immediate: !0 }), s;
1023
+ }
1024
+ function xn(t, s) {
1025
+ const e = s ? t : {}, r = s ?? t, a = H(e.initial ?? null), n = jt((o) => a.value = o, e.delay ?? 300);
1026
+ return de(() => n(r())), a;
1027
+ }
1028
+ const st = /* @__PURE__ */ g({
1029
+ __name: "HeadlessSelectValue",
1073
1030
  setup(t) {
1074
- const r = t, e = qe(), s = d(() => r.text ?? (r.langKey && Je(r.langKey, r.langParams ?? {}))), n = d(() => {
1075
- if (!s.value)
1076
- return null;
1077
- let o = Zr(s.value);
1078
- return r.inline && (o = o.replace("<p>", "<span>").replace("</p>", "</span>")), o;
1079
- }), a = () => ut(r.as ?? (r.inline ? "span" : "div"), {
1080
- innerHTML: n.value,
1081
- onClick: i,
1082
- ...e,
1083
- class: `${e.class ?? ""} ${r.inline ? "" : "prose"}`
1084
- });
1085
- async function i(o) {
1086
- var p, w;
1087
- const { target: l } = o;
1088
- if (Ct(l, HTMLElement) && l.dataset.markdownAction) {
1089
- (w = (p = r.actions) == null ? void 0 : p[l.dataset.markdownAction]) == null || w.call(p);
1090
- return;
1091
- }
1092
- }
1093
- return (o, l) => (u(), g(a));
1031
+ const s = V(
1032
+ "select",
1033
+ "<HeadlessSelectValue> must be a child of a <HeadlessSelect>"
1034
+ );
1035
+ return (e, r) => (l(), h(i(Gt), {
1036
+ placeholder: i(s).placeholder
1037
+ }, null, 8, ["placeholder"]));
1094
1038
  }
1095
- }), Yr = /* @__PURE__ */ h({
1096
- __name: "AGSnackbar",
1097
- props: Fr(),
1039
+ }), rt = /* @__PURE__ */ g({
1040
+ __name: "HeadlessSelectTrigger",
1098
1041
  setup(t) {
1099
- const r = t, { activate: e } = Ur(r), s = d(() => {
1100
- switch (r.color) {
1101
- case ae.Danger:
1102
- return "bg-red-200 text-red-900";
1103
- default:
1104
- case ae.Secondary:
1105
- return "bg-gray-900 text-white";
1106
- }
1107
- }), n = d(() => r.color);
1108
- return (a, i) => (u(), g(qr, {
1109
- class: L(["flex flex-row items-center justify-center gap-3 p-4", s.value])
1042
+ const s = V(
1043
+ "select",
1044
+ "<HeadlessSelectTrigger> must be a child of a <HeadlessSelect>"
1045
+ );
1046
+ return (e, r) => (l(), h(i(Xt), {
1047
+ id: i(s).id
1110
1048
  }, {
1111
1049
  default: f(() => [
1112
- m(R, {
1113
- text: a.message,
1114
- inline: ""
1115
- }, null, 8, ["text"]),
1116
- (u(!0), _(ee, null, ie(a.actions, (o, l) => (u(), g(T, {
1117
- key: l,
1118
- variant: n.value,
1119
- onClick: (p) => c(e)(o)
1120
- }, {
1121
- default: f(() => [
1122
- q(k(o.text), 1)
1123
- ]),
1124
- _: 2
1125
- }, 1032, ["variant", "onClick"]))), 128))
1126
- ]),
1127
- _: 1
1128
- }, 8, ["class"]));
1129
- }
1130
- }), es = { class: "grid grow place-items-center" }, ts = { class: "flex flex-col items-center space-y-6 p-8" }, rs = { class: "mt-2 text-center text-4xl font-medium text-red-600" }, ss = { class: "mt-4 flex flex-col space-y-4" }, ns = /* @__PURE__ */ h({
1131
- __name: "AGStartupCrash",
1132
- setup(t) {
1133
- return (r, e) => (u(), _("div", es, [
1134
- v("div", ts, [
1135
- v("h1", rs, k(r.$td("startupCrash.title", "Something went wrong!")), 1),
1136
- m(R, {
1137
- text: r.$td(
1138
- "startupCrash.message",
1139
- `Something failed trying to start the application.
1140
-
1141
- Here's some things you can do:`
1142
- ),
1143
- class: "mt-4 text-center"
1144
- }, null, 8, ["text"]),
1145
- v("div", ss, [
1146
- m(T, {
1147
- variant: "danger",
1148
- onClick: e[0] || (e[0] = (s) => r.$app.reload())
1149
- }, {
1150
- default: f(() => [
1151
- q(k(r.$td("startupCrash.reload", "Try again")), 1)
1152
- ]),
1153
- _: 1
1154
- }),
1155
- m(T, {
1156
- variant: "danger",
1157
- onClick: e[1] || (e[1] = (s) => r.$errors.inspect(r.$errors.startupErrors))
1158
- }, {
1159
- default: f(() => [
1160
- q(k(r.$td("startupCrash.inspect", "View error details")), 1)
1161
- ]),
1162
- _: 1
1163
- })
1050
+ w(e.$slots, "default", {}, () => [
1051
+ m(st, {
1052
+ placeholder: i(s).placeholder
1053
+ }, null, 8, ["placeholder"]),
1054
+ m(i(Yt))
1164
1055
  ])
1165
- ])
1166
- ]));
1056
+ ]),
1057
+ _: 3
1058
+ }, 8, ["id"]));
1167
1059
  }
1168
- }), as = {
1169
- viewBox: "0 0 20 20",
1170
- width: "1.2em",
1171
- height: "1.2em"
1172
- };
1173
- function os(t, r) {
1174
- return u(), _("svg", as, r[0] || (r[0] = [
1175
- v("path", {
1176
- fill: "currentColor",
1177
- d: "M10 8.586L2.929 1.515L1.515 2.929L8.586 10l-7.071 7.071l1.414 1.414L10 11.414l7.071 7.071l1.414-1.414L11.414 10l7.071-7.071l-1.414-1.414z"
1178
- }, null, -1)
1179
- ]));
1180
- }
1181
- const is = { name: "zondicons-close", render: os };
1182
- function se(t, r) {
1183
- const e = x.on(t, r);
1184
- oe(() => e());
1185
- }
1186
- const ls = /* @__PURE__ */ h({
1187
- __name: "HeadlessModal",
1060
+ }), at = /* @__PURE__ */ g({
1061
+ __name: "HeadlessSelectOption",
1188
1062
  props: {
1189
- persistent: { type: Boolean },
1190
- title: {},
1191
- description: {}
1063
+ value: {},
1064
+ disabled: { type: Boolean },
1065
+ textValue: {},
1066
+ asChild: { type: Boolean },
1067
+ as: {}
1192
1068
  },
1193
1069
  setup(t) {
1194
- const r = A(null), e = A(!0), s = A(!1), { modal: n } = V(
1195
- "modal",
1196
- "could not obtain modal reference from <HeadlessModal>, did you render this component manually? Show it using $ui.openModal() instead"
1197
- );
1198
- async function a() {
1199
- var l;
1200
- (l = r.value) != null && l.$el && (e.value = !0);
1201
- }
1202
- async function i() {
1203
- var l;
1204
- (l = r.value) != null && l.$el && (e.value = !1);
1205
- }
1206
- async function o(l) {
1207
- s.value || (x.emit("modal-will-close", { modal: n, result: l }), await a(), s.value = !0, x.emit("modal-closed", { modal: n, result: l }));
1208
- }
1209
- return se("close-modal", async ({ id: l, result: p }) => {
1210
- l === n.id && await o(p);
1211
- }), se("hide-modal", async ({ id: l }) => {
1212
- l === n.id && await a();
1213
- }), se("show-modal", async ({ id: l }) => {
1214
- l === n.id && await i();
1215
- }), (l, p) => (u(), g(c(jt), {
1216
- ref_key: "$root",
1217
- ref: r,
1218
- open: !0,
1219
- "onUpdate:open": p[0] || (p[0] = (w) => l.persistent || o())
1220
- }, {
1070
+ const s = V(
1071
+ "select",
1072
+ "<HeadlessSelectOption> must be a child of a <HeadlessSelect>"
1073
+ ), e = p(() => {
1074
+ var a;
1075
+ const r = (a = s.options) == null ? void 0 : a.find((n) => n.value === t.value);
1076
+ return r ? r.label : B(t.value);
1077
+ });
1078
+ return (r, a) => (l(), h(i(es), ne(oe(r.$props)), {
1221
1079
  default: f(() => [
1222
- m(c(Vt), null, {
1080
+ m(i(ts), { class: "the-text" }, {
1223
1081
  default: f(() => [
1224
- y(l.$slots, "default", { close: o })
1082
+ w(r.$slots, "default", {}, () => [
1083
+ R($(e.value), 1)
1084
+ ])
1225
1085
  ]),
1226
1086
  _: 3
1227
1087
  })
1228
1088
  ]),
1229
1089
  _: 3
1230
- }, 512));
1090
+ }, 16));
1231
1091
  }
1232
- }), et = /* @__PURE__ */ h({
1233
- __name: "ModalContext",
1092
+ }), nt = /* @__PURE__ */ g({
1093
+ __name: "HeadlessSelectOptions",
1234
1094
  props: {
1235
- modal: {},
1236
- childIndex: {}
1095
+ class: {}
1237
1096
  },
1238
1097
  setup(t) {
1239
- const r = t, e = d(() => {
1240
- const s = {};
1241
- for (const n in r.modal.properties)
1242
- s[n] = c(r.modal.properties[n]);
1243
- return s;
1244
- });
1245
- return fe("modal", {
1246
- modal: He(r, "modal"),
1247
- childIndex: He(r, "childIndex")
1248
- }), (s, n) => (u(), g(te(s.modal.component), ke(Ce(e.value)), null, 16));
1249
- }
1250
- }), cs = /* @__PURE__ */ h({
1251
- __name: "HeadlessModalContent",
1252
- setup(t) {
1253
- const { childIndex: r = 0 } = V(
1254
- "modal",
1255
- "could not obtain modal reference from <HeadlessModalContent>, did you render this component manually? Show it using $ui.openModal() instead"
1256
- ), e = d(() => P.modals[r] ?? null);
1257
- return (s, n) => (u(), g(c(zt), null, {
1098
+ const s = V(
1099
+ "select",
1100
+ "<HeadlessSelectOptions> must be a child of a <HeadlessSelect>"
1101
+ );
1102
+ return (e, r) => (l(), h(i(ss), null, {
1258
1103
  default: f(() => [
1259
- y(s.$slots, "default"),
1260
- e.value ? (u(), g(et, {
1261
- key: 0,
1262
- "child-index": c(r) + 1,
1263
- modal: e.value
1264
- }, null, 8, ["child-index", "modal"])) : E("", !0)
1104
+ m(i(rs), {
1105
+ class: L(t.class)
1106
+ }, {
1107
+ default: f(() => [
1108
+ m(i(as), null, {
1109
+ default: f(() => [
1110
+ w(e.$slots, "default", {}, () => [
1111
+ (l(!0), v(D, null, F(i(s).options ?? [], (a) => (l(), h(at, {
1112
+ key: a.key,
1113
+ value: a.value
1114
+ }, null, 8, ["value"]))), 128))
1115
+ ])
1116
+ ]),
1117
+ _: 3
1118
+ })
1119
+ ]),
1120
+ _: 3
1121
+ }, 8, ["class"])
1265
1122
  ]),
1266
1123
  _: 3
1267
1124
  }));
1268
1125
  }
1269
- }), us = /* @__PURE__ */ h({
1270
- __name: "HeadlessModalOverlay",
1126
+ }), nr = /* @__PURE__ */ g({
1127
+ inheritAttrs: !1,
1128
+ __name: "HeadlessSelect",
1271
1129
  props: {
1272
- forceMount: { type: Boolean },
1273
- asChild: { type: Boolean },
1274
- as: {}
1130
+ as: { default: "template" },
1131
+ options: {},
1132
+ placeholder: {},
1133
+ renderOption: { type: Function },
1134
+ name: {},
1135
+ label: {},
1136
+ description: {},
1137
+ modelValue: {}
1275
1138
  },
1276
- setup(t) {
1277
- const r = t;
1278
- return (e, s) => (u(), g(c(qt), ke(Ce(r)), {
1279
- default: f(() => [
1280
- y(e.$slots, "default")
1139
+ emits: ["update:modelValue"],
1140
+ setup(t, { expose: s, emit: e }) {
1141
+ const r = e, a = ae("form", null), n = p(() => t.modelValue), o = p(() => !a || !t.name ? null : a.errors[t.name] ?? null), c = p(() => t.options ? t.options.map((b) => ({
1142
+ key: re(),
1143
+ label: t.renderOption ? t.renderOption(b) : ar(b) ? Bt(b.label) : B(b),
1144
+ value: b
1145
+ })) : null), u = {
1146
+ id: `select-${re()}`,
1147
+ name: p(() => t.name),
1148
+ label: p(() => t.label),
1149
+ description: p(() => t.description),
1150
+ placeholder: p(() => t.placeholder ?? C("ui.select", "Select an option")),
1151
+ options: c,
1152
+ selectedOption: p(() => {
1153
+ var b;
1154
+ return (b = c.value) == null ? void 0 : b.find((x) => x.value === t.modelValue);
1155
+ }),
1156
+ value: p(() => a && t.name ? a.getFieldValue(t.name) : t.modelValue),
1157
+ errors: Me(o),
1158
+ required: p(() => {
1159
+ if (!(!t.name || !a))
1160
+ return a.getFieldRules(t.name).includes("required");
1161
+ }),
1162
+ update(b) {
1163
+ if (a && t.name) {
1164
+ a.setFieldValue(t.name, b);
1165
+ return;
1166
+ }
1167
+ r("update:modelValue", b);
1168
+ }
1169
+ };
1170
+ function d(b) {
1171
+ u.update(b);
1172
+ }
1173
+ return pe("select", u), s(u), (b, x) => (l(), h(i(ns), {
1174
+ "model-value": n.value,
1175
+ "onUpdate:modelValue": x[0] || (x[0] = (S) => d(S))
1176
+ }, {
1177
+ default: f(({ open: S }) => [
1178
+ (l(), h(O(b.as), ne(oe(b.$attrs)), {
1179
+ default: f(() => [
1180
+ w(b.$slots, "default", {
1181
+ modelValue: b.modelValue,
1182
+ open: S
1183
+ }, () => [
1184
+ m(rt),
1185
+ m(nt)
1186
+ ])
1187
+ ]),
1188
+ _: 2
1189
+ }, 1040))
1281
1190
  ]),
1282
1191
  _: 3
1283
- }, 16));
1192
+ }, 8, ["model-value"]));
1284
1193
  }
1285
- }), ds = /* @__PURE__ */ h({
1286
- __name: "HeadlessModalTitle",
1194
+ }), ze = /* @__PURE__ */ g({
1195
+ __name: "HeadlessSelectLabel",
1287
1196
  props: {
1288
1197
  asChild: { type: Boolean },
1289
1198
  as: {}
1290
1199
  },
1291
1200
  setup(t) {
1292
- const r = t;
1293
- return (e, s) => (u(), g(c(Bt), ke(Ce(r)), {
1201
+ const s = V(
1202
+ "select",
1203
+ "<HeadlessSelectLabel> must be a child of a <HeadlessSelect>"
1204
+ ), e = Se(), r = p(() => !!(s.label || e.default));
1205
+ return (a, n) => r.value ? (l(), h(i(os), T({
1206
+ key: 0,
1207
+ for: i(s).id
1208
+ }, a.$props), {
1294
1209
  default: f(() => [
1295
- y(e.$slots, "default")
1210
+ w(a.$slots, "default", {}, () => [
1211
+ R($(i(s).label), 1)
1212
+ ])
1296
1213
  ]),
1297
1214
  _: 3
1298
- }, 16));
1215
+ }, 16, ["for"])) : M("", !0);
1299
1216
  }
1300
- }), ps = {
1301
- key: 0,
1302
- class: "absolute top-0 right-0 hidden pt-1.5 pr-1.5 sm:block"
1303
- }, ms = { class: "sr-only" }, le = /* @__PURE__ */ h({
1217
+ }), ot = /* @__PURE__ */ g({
1218
+ __name: "SelectLabel",
1219
+ setup(t) {
1220
+ return (s, e) => s.$slots.default ? (l(), h(ze, {
1221
+ key: 0,
1222
+ class: "block text-sm leading-6 font-medium text-gray-900"
1223
+ }, {
1224
+ default: f(() => [
1225
+ w(s.$slots, "default")
1226
+ ]),
1227
+ _: 3
1228
+ })) : (l(), h(ze, {
1229
+ key: 1,
1230
+ class: "block text-sm leading-6 font-medium text-gray-900"
1231
+ }));
1232
+ }
1233
+ }), or = { class: "relative flex max-w-[calc(100vw-2rem)] cursor-pointer items-center truncate rounded-md px-2 py-1 select-none *:truncate group-data-[highlighted]:bg-gray-100 group-data-[state=checked]:font-semibold group-data-[state=unchecked]:opacity-50" }, lr = { class: "text-sm" }, lt = /* @__PURE__ */ g({
1234
+ __name: "SelectOptions",
1235
+ setup(t) {
1236
+ const s = V("select", "<SelectOptions> must be a child of a <Select>");
1237
+ return (e, r) => (l(), h(nt, { class: "z-50 overflow-auto rounded-lg bg-white text-base shadow-lg ring-1 ring-black/5 focus:outline-hidden" }, {
1238
+ default: f(() => [
1239
+ w(e.$slots, "default", {}, () => {
1240
+ var a;
1241
+ return [
1242
+ (l(!0), v(D, null, F(((a = i(s)) == null ? void 0 : a.options) ?? [], (n) => (l(), h(at, {
1243
+ key: n.key,
1244
+ value: n.value,
1245
+ class: "group p-1 outline-none"
1246
+ }, {
1247
+ default: f(() => [
1248
+ y("div", or, [
1249
+ y("span", lr, $(n.label), 1)
1250
+ ])
1251
+ ]),
1252
+ _: 2
1253
+ }, 1032, ["value"]))), 128))
1254
+ ];
1255
+ })
1256
+ ]),
1257
+ _: 3
1258
+ }));
1259
+ }
1260
+ }), ir = {
1261
+ viewBox: "0 0 20 20",
1262
+ width: "1.2em",
1263
+ height: "1.2em"
1264
+ };
1265
+ function cr(t, s) {
1266
+ return l(), v("svg", ir, s[0] || (s[0] = [
1267
+ y("path", {
1268
+ fill: "currentColor",
1269
+ d: "m9.293 12.95l.707.707L15.657 8l-1.414-1.414L10 10.828L5.757 6.586L4.343 8z"
1270
+ }, null, -1)
1271
+ ]));
1272
+ }
1273
+ const ur = { name: "zondicons-cheveron-down", render: cr }, it = /* @__PURE__ */ g({
1274
+ __name: "SelectTrigger",
1275
+ props: {
1276
+ class: {}
1277
+ },
1278
+ setup(t) {
1279
+ const s = V("select", "<SelectTrigger> must be a child of a <Select>"), e = p(() => P(
1280
+ // eslint-disable-next-line vue/max-len
1281
+ "focus:outline-primary grid w-full cursor-default grid-cols-1 rounded-md bg-white py-1.5 pr-2 pl-3 text-left text-gray-900 outline outline-1 -outline-offset-1 outline-gray-300 focus:outline focus:outline-2 focus:-outline-offset-2 sm:text-sm/6",
1282
+ { "mt-1": s.label },
1283
+ t.class
1284
+ ));
1285
+ return (r, a) => (l(), h(rt, {
1286
+ class: L(e.value)
1287
+ }, {
1288
+ default: f(() => [
1289
+ m(st, { class: "col-start-1 row-start-1 truncate pr-2" }),
1290
+ m(i(ur), { class: "col-start-1 row-start-1 size-5 self-center justify-self-end text-gray-500 sm:size-4" })
1291
+ ]),
1292
+ _: 1
1293
+ }, 8, ["class"]));
1294
+ }
1295
+ }), dr = /* @__PURE__ */ g({
1296
+ __name: "Select",
1297
+ props: {
1298
+ as: {},
1299
+ options: {},
1300
+ placeholder: {},
1301
+ renderOption: { type: Function },
1302
+ name: {},
1303
+ label: {},
1304
+ description: {},
1305
+ modelValue: {}
1306
+ },
1307
+ emits: ["update:modelValue"],
1308
+ setup(t) {
1309
+ return (s, e) => (l(), h(nr, T(s.$props, {
1310
+ "onUpdate:modelValue": e[0] || (e[0] = (r) => s.$emit("update:modelValue", r))
1311
+ }), {
1312
+ default: f(() => [
1313
+ m(ot),
1314
+ w(s.$slots, "default", {}, () => [
1315
+ m(it),
1316
+ m(lt)
1317
+ ])
1318
+ ]),
1319
+ _: 3
1320
+ }, 16));
1321
+ }
1322
+ }), pr = { class: "grow" }, mr = /* @__PURE__ */ g({
1323
+ __name: "Language",
1324
+ setup(t) {
1325
+ const s = Q.getBrowserLocale(), e = p(() => [null, ...Q.locales]);
1326
+ function r(a) {
1327
+ return (a && N.locales[a]) ?? C("settings.localeDefault", "{locale} (default)", {
1328
+ locale: N.locales[s] ?? s
1329
+ });
1330
+ }
1331
+ return (a, n) => (l(), h(dr, {
1332
+ modelValue: a.$lang.locale,
1333
+ "onUpdate:modelValue": n[0] || (n[0] = (o) => a.$lang.locale = o),
1334
+ class: "flex flex-col items-start md:flex-row",
1335
+ as: "div",
1336
+ options: e.value,
1337
+ "render-option": r
1338
+ }, {
1339
+ default: f(() => [
1340
+ y("div", pr, [
1341
+ m(ot, null, {
1342
+ default: f(() => [
1343
+ R($(a.$td("settings.locale", "Language")), 1)
1344
+ ]),
1345
+ _: 1
1346
+ }),
1347
+ m(z, {
1348
+ "lang-key": "settings.localeDescription",
1349
+ "lang-default": "Choose the application's language.",
1350
+ class: "mt-1 text-sm text-gray-500"
1351
+ })
1352
+ ]),
1353
+ m(I, {
1354
+ variant: "ghost",
1355
+ as: it,
1356
+ class: "w-auto outline-none"
1357
+ }),
1358
+ m(lt)
1359
+ ]),
1360
+ _: 1
1361
+ }, 8, ["modelValue", "options"]));
1362
+ }
1363
+ }), fr = [
1364
+ {
1365
+ priority: 100,
1366
+ component: mr
1367
+ }
1368
+ ], hr = { $lang: Q }, gr = {
1369
+ async install(t) {
1370
+ var s;
1371
+ (s = t.config.globalProperties).$t ?? (s.$t = Ze), t.config.globalProperties.$td = C, j.settings.push(...fr), await ge(t, hr);
1372
+ }
1373
+ }, vr = {
1374
+ async install() {
1375
+ Le() && (globalThis.testingRuntime = {
1376
+ on: (...t) => k.on(...t)
1377
+ });
1378
+ }
1379
+ }, br = {
1380
+ viewBox: "0 0 20 20",
1381
+ width: "1.2em",
1382
+ height: "1.2em"
1383
+ };
1384
+ function yr(t, s) {
1385
+ return l(), v("svg", br, s[0] || (s[0] = [
1386
+ y("path", {
1387
+ fill: "currentColor",
1388
+ d: "M10 8.586L2.929 1.515L1.515 2.929L8.586 10l-7.071 7.071l1.414 1.414L10 11.414l7.071 7.071l1.414-1.414L11.414 10l7.071-7.071l-1.414-1.414z"
1389
+ }, null, -1)
1390
+ ]));
1391
+ }
1392
+ const _r = { name: "zondicons-close", render: yr }, wr = /* @__PURE__ */ g({
1393
+ __name: "HeadlessModal",
1394
+ props: {
1395
+ persistent: { type: Boolean },
1396
+ title: {},
1397
+ description: {}
1398
+ },
1399
+ setup(t, { expose: s }) {
1400
+ const e = H(null), r = H(!0), a = H(!1), { modal: n } = V(
1401
+ "modal",
1402
+ "could not obtain modal reference from <HeadlessModal>, did you render this component manually? Show it using $ui.openModal() instead"
1403
+ );
1404
+ async function o() {
1405
+ var d;
1406
+ (d = e.value) != null && d.$el && (r.value = !0);
1407
+ }
1408
+ async function c() {
1409
+ var d;
1410
+ (d = e.value) != null && d.$el && (r.value = !1);
1411
+ }
1412
+ async function u(d) {
1413
+ a.value || (k.emit("modal-will-close", { modal: n, result: d }), await o(), a.value = !0, k.emit("modal-closed", { modal: n, result: d }));
1414
+ }
1415
+ return se("close-modal", async ({ id: d, result: b }) => {
1416
+ d === n.id && await u(b);
1417
+ }), se("hide-modal", async ({ id: d }) => {
1418
+ d === n.id && await o();
1419
+ }), se("show-modal", async ({ id: d }) => {
1420
+ d === n.id && await c();
1421
+ }), s({ close: u }), (d, b) => (l(), h(i(ls), {
1422
+ ref_key: "$root",
1423
+ ref: e,
1424
+ open: "",
1425
+ "onUpdate:open": b[0] || (b[0] = (x) => d.persistent || u())
1426
+ }, {
1427
+ default: f(() => [
1428
+ m(i(is), null, {
1429
+ default: f(() => [
1430
+ w(d.$slots, "default", { close: u })
1431
+ ]),
1432
+ _: 3
1433
+ })
1434
+ ]),
1435
+ _: 3
1436
+ }, 512));
1437
+ }
1438
+ }), ct = /* @__PURE__ */ g({
1439
+ __name: "ModalContext",
1440
+ props: {
1441
+ modal: {},
1442
+ childIndex: {}
1443
+ },
1444
+ setup(t) {
1445
+ const s = t, e = p(() => {
1446
+ const r = {};
1447
+ for (const a in s.modal.properties)
1448
+ r[a] = i(s.modal.properties[a]);
1449
+ return r;
1450
+ });
1451
+ return pe("modal", {
1452
+ modal: Te(s, "modal"),
1453
+ childIndex: Te(s, "childIndex")
1454
+ }), (r, a) => (l(), h(O(r.modal.component), ne(oe(e.value)), null, 16));
1455
+ }
1456
+ }), $r = /* @__PURE__ */ g({
1457
+ __name: "HeadlessModalContent",
1458
+ setup(t) {
1459
+ const { childIndex: s = 0 } = V(
1460
+ "modal",
1461
+ "could not obtain modal reference from <HeadlessModalContent>, did you render this component manually? Show it using $ui.openModal() instead"
1462
+ ), e = p(() => A.modals[s] ?? null);
1463
+ return (r, a) => (l(), h(i(cs), null, {
1464
+ default: f(() => [
1465
+ w(r.$slots, "default"),
1466
+ e.value ? (l(), h(ct, {
1467
+ key: 0,
1468
+ "child-index": i(s) + 1,
1469
+ modal: e.value
1470
+ }, null, 8, ["child-index", "modal"])) : M("", !0)
1471
+ ]),
1472
+ _: 3
1473
+ }));
1474
+ }
1475
+ }), xr = /* @__PURE__ */ g({
1476
+ __name: "HeadlessModalOverlay",
1477
+ props: {
1478
+ forceMount: { type: Boolean },
1479
+ asChild: { type: Boolean },
1480
+ as: {}
1481
+ },
1482
+ setup(t) {
1483
+ return (s, e) => (l(), h(i(us), ne(oe(s.$props)), {
1484
+ default: f(() => [
1485
+ w(s.$slots, "default")
1486
+ ]),
1487
+ _: 3
1488
+ }, 16));
1489
+ }
1490
+ }), Cr = /* @__PURE__ */ g({
1491
+ __name: "HeadlessModalTitle",
1492
+ props: {
1493
+ asChild: { type: Boolean },
1494
+ as: {}
1495
+ },
1496
+ setup(t) {
1497
+ return (s, e) => (l(), h(i(ds), ne(oe(s.$props)), {
1498
+ default: f(() => [
1499
+ w(s.$slots, "default")
1500
+ ]),
1501
+ _: 3
1502
+ }, 16));
1503
+ }
1504
+ }), Sr = {
1505
+ key: 0,
1506
+ class: "absolute top-0 right-0 hidden pt-1.5 pr-1.5 sm:block"
1507
+ }, kr = { class: "sr-only" }, ee = /* @__PURE__ */ g({
1304
1508
  __name: "Modal",
1305
1509
  props: {
1306
1510
  persistent: { type: Boolean },
1307
1511
  title: {},
1308
1512
  description: {},
1513
+ dismissable: { type: Boolean, default: !0 },
1309
1514
  wrapperClass: { default: "" },
1310
1515
  class: { default: "" }
1311
1516
  },
1312
- setup(t) {
1313
- const r = Y(t, ["class", "wrapperClass", "title", "persistent"]), e = d(() => N({ "mt-2": t.title }, t.class)), s = d(() => N(
1517
+ setup(t, { expose: s }) {
1518
+ const e = Y(t, ["class", "dismissable", "wrapperClass", "title", "persistent"]), r = Ee("$modal"), a = p(() => P({ "mt-2": t.title }, t.class)), n = p(() => P(
1314
1519
  // eslint-disable-next-line vue/max-len
1315
1520
  "fixed top-1/2 left-1/2 z-50 w-full max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 overflow-hidden rounded-lg bg-white px-4 pt-5 pb-4 text-left shadow-xl sm:max-w-lg",
1316
1521
  t.wrapperClass
1317
1522
  ));
1318
- return (n, a) => {
1319
- const i = j("Button");
1320
- return u(), g(ls, H({ persistent: n.persistent }, r), {
1321
- default: f(({ close: o }) => [
1322
- m(us, { class: "fixed inset-0 bg-gray-500/75" }),
1323
- m(cs, {
1324
- class: L(s.value)
1325
- }, {
1326
- default: f(() => [
1327
- n.persistent ? E("", !0) : (u(), _("div", ps, [
1328
- m(i, {
1329
- variant: "ghost",
1330
- size: "icon",
1331
- onClick: (l) => o()
1332
- }, {
1333
- default: f(() => [
1334
- v("span", ms, k(n.$td("ui.close", "Close")), 1),
1335
- m(c(is), { class: "size-3 text-gray-400" })
1336
- ]),
1337
- _: 2
1338
- }, 1032, ["onClick"])
1339
- ])),
1340
- n.title ? (u(), g(ds, {
1341
- key: 1,
1342
- class: "text-base font-semibold text-gray-900"
1523
+ return s({ close: async () => {
1524
+ var o;
1525
+ return (o = r.value) == null ? void 0 : o.close();
1526
+ } }), (o, c) => (l(), h(wr, T(e, {
1527
+ ref_key: "$modal",
1528
+ ref: r,
1529
+ persistent: o.persistent
1530
+ }), {
1531
+ default: f(({ close: u }) => [
1532
+ m(xr, { class: "fixed inset-0 bg-gray-500/75" }),
1533
+ m($r, {
1534
+ class: L(n.value)
1535
+ }, {
1536
+ default: f(() => [
1537
+ !o.persistent && o.dismissable ? (l(), v("div", Sr, [
1538
+ m(I, {
1539
+ variant: "ghost",
1540
+ size: "icon",
1541
+ onClick: (d) => u()
1343
1542
  }, {
1344
1543
  default: f(() => [
1345
- m(R, {
1346
- text: n.title,
1347
- inline: ""
1348
- }, null, 8, ["text"])
1544
+ y("span", kr, $(o.$td("ui.close", "Close")), 1),
1545
+ m(i(_r), { class: "size-3 text-gray-400" })
1349
1546
  ]),
1350
- _: 1
1351
- })) : E("", !0),
1352
- v("div", {
1353
- class: L(e.value)
1354
- }, [
1355
- y(n.$slots, "default", { close: o })
1356
- ], 2)
1357
- ]),
1358
- _: 2
1359
- }, 1032, ["class"])
1360
- ]),
1361
- _: 3
1362
- }, 16, ["persistent"]);
1363
- };
1547
+ _: 2
1548
+ }, 1032, ["onClick"])
1549
+ ])) : M("", !0),
1550
+ o.title ? (l(), h(Cr, {
1551
+ key: 1,
1552
+ class: "text-base font-semibold text-gray-900"
1553
+ }, {
1554
+ default: f(() => [
1555
+ m(z, {
1556
+ text: o.title,
1557
+ inline: ""
1558
+ }, null, 8, ["text"])
1559
+ ]),
1560
+ _: 1
1561
+ })) : M("", !0),
1562
+ y("div", {
1563
+ class: L(a.value)
1564
+ }, [
1565
+ w(o.$slots, "default", { close: u })
1566
+ ], 2)
1567
+ ]),
1568
+ _: 2
1569
+ }, 1032, ["class"])
1570
+ ]),
1571
+ _: 3
1572
+ }, 16, ["persistent"]));
1364
1573
  }
1365
- }), fs = /* @__PURE__ */ h({
1574
+ }), Mr = /* @__PURE__ */ g({
1366
1575
  __name: "AlertModal",
1367
1576
  props: {
1368
1577
  title: {},
1369
1578
  message: {}
1370
1579
  },
1371
1580
  setup(t) {
1372
- return (r, e) => (u(), g(le, { title: r.title }, {
1581
+ return (s, e) => (l(), h(ee, { title: s.title }, {
1373
1582
  default: f(() => [
1374
- m(R, { text: r.message }, null, 8, ["text"])
1583
+ m(z, { text: s.message }, null, 8, ["text"])
1375
1584
  ]),
1376
1585
  _: 1
1377
1586
  }, 8, ["title"]));
1378
1587
  }
1379
- }), tt = /* @__PURE__ */ h({
1588
+ }), ut = /* @__PURE__ */ g({
1380
1589
  __name: "Form",
1381
1590
  props: {
1382
1591
  form: {}
1383
1592
  },
1384
1593
  emits: ["submit"],
1385
- setup(t, { emit: r }) {
1594
+ setup(t, { emit: s }) {
1386
1595
  let e;
1387
- const s = r;
1388
- return Be((n) => {
1389
- var a;
1390
- e == null || e(), e = (a = t.form) == null ? void 0 : a.on("submit", () => s("submit")), n(() => e == null ? void 0 : e());
1391
- }), fe("form", t.form), (n, a) => (u(), _("form", {
1392
- onSubmit: a[0] || (a[0] = dt((i) => {
1393
- var o;
1394
- return (o = n.form) == null ? void 0 : o.submit();
1596
+ const r = s;
1597
+ return de((a) => {
1598
+ var n;
1599
+ e == null || e(), e = (n = t.form) == null ? void 0 : n.on("submit", () => r("submit")), a(() => e == null ? void 0 : e());
1600
+ }), pe("form", t.form), (a, n) => (l(), v("form", {
1601
+ onSubmit: n[0] || (n[0] = qe((o) => {
1602
+ var c;
1603
+ return (c = a.form) == null ? void 0 : c.submit();
1395
1604
  }, ["prevent"]))
1396
1605
  }, [
1397
- y(n.$slots, "default")
1606
+ w(a.$slots, "default")
1398
1607
  ], 32));
1399
1608
  }
1400
- }), hs = {
1609
+ }), Er = {
1401
1610
  required: (t) => t ? void 0 : "required"
1402
- }, ce = { ...hs };
1403
- function ga(t, r) {
1404
- ce[t] = r;
1611
+ }, le = { ...Er };
1612
+ function Cn(t, s) {
1613
+ le[t] = s;
1405
1614
  }
1406
- function gs(t, r) {
1407
- var s;
1408
- const e = (s = ce[r]) == null ? void 0 : s.call(ce, t);
1409
- return e ? Ge(e) : [];
1615
+ function Lr(t, s) {
1616
+ var r;
1617
+ const e = (r = le[s]) == null ? void 0 : r.call(le, t);
1618
+ return e ? Ne(e) : [];
1410
1619
  }
1411
- const z = {
1620
+ const q = {
1412
1621
  String: "string",
1413
1622
  Number: "number",
1414
1623
  Boolean: "boolean",
1415
1624
  Object: "object",
1416
1625
  Date: "date"
1417
- }, Ve = /* @__PURE__ */ new WeakMap();
1418
- class vs extends Ue {
1626
+ }, je = /* @__PURE__ */ new WeakMap();
1627
+ class Hr extends Ue {
1419
1628
  constructor(e) {
1420
1629
  super();
1421
- b(this, "errors");
1422
- b(this, "_fields");
1423
- b(this, "_data");
1424
- b(this, "_submitted");
1425
- b(this, "_errors");
1426
- b(this, "_listeners", {});
1427
- this._fields = e, this._submitted = A(!1), this._data = this.getInitialData(e), this._errors = this.getInitialErrors(e), Ve.set(
1630
+ _(this, "errors");
1631
+ _(this, "_fields");
1632
+ _(this, "_data");
1633
+ _(this, "_submitted");
1634
+ _(this, "_errors");
1635
+ _(this, "_listeners", {});
1636
+ this._fields = e, this._submitted = H(!1), this._data = this.getInitialData(e), this._errors = this.getInitialErrors(e), je.set(
1428
1637
  this,
1429
- d(() => !Object.values(this._errors).some((s) => s !== null))
1430
- ), this.errors = De(this._errors);
1638
+ p(() => !Object.values(this._errors).some((r) => r !== null))
1639
+ ), this.errors = Me(this._errors);
1431
1640
  }
1432
1641
  get valid() {
1433
1642
  var e;
1434
- return !!((e = Ve.get(this)) != null && e.value);
1643
+ return !!((e = je.get(this)) != null && e.value);
1435
1644
  }
1436
1645
  get submitted() {
1437
1646
  return this._submitted.value;
1438
1647
  }
1439
- setFieldValue(e, s) {
1440
- const n = this._fields[e] ?? O(`Trying to set undefined '${B(e)}' field`);
1441
- this._data[e] = n.type === z.String && (n.trim ?? !0) ? B(s).trim() : s, this._submitted.value && this.validate();
1648
+ setFieldValue(e, r) {
1649
+ const a = this._fields[e] ?? J(`Trying to set undefined '${B(e)}' field`);
1650
+ this._data[e] = a.type === q.String && (a.trim ?? !0) ? B(r).trim() : r, this._submitted.value && this.validate();
1442
1651
  }
1443
1652
  getFieldValue(e) {
1444
1653
  return this._data[e];
1445
1654
  }
1446
1655
  getFieldRules(e) {
1447
- var s, n;
1448
- return ((n = (s = this._fields[e]) == null ? void 0 : s.rules) == null ? void 0 : n.split("|")) ?? [];
1656
+ var r, a;
1657
+ return ((a = (r = this._fields[e]) == null ? void 0 : r.rules) == null ? void 0 : a.split("|")) ?? [];
1449
1658
  }
1450
1659
  data() {
1451
1660
  return { ...this._data };
1452
1661
  }
1453
1662
  validate() {
1454
1663
  const e = Object.entries(this._fields).reduce(
1455
- (s, [n, a]) => (s[n] = this.getFieldErrors(n, a), s),
1664
+ (r, [a, n]) => (r[a] = this.getFieldErrors(a, n), r),
1456
1665
  {}
1457
1666
  );
1458
1667
  return this.resetErrors(e), this.valid;
@@ -1461,138 +1670,138 @@ class vs extends Ue {
1461
1670
  this._submitted.value = !1, e.keepData || this.resetData(), e.keepErrors || this.resetErrors();
1462
1671
  }
1463
1672
  submit() {
1464
- var s;
1673
+ var r;
1465
1674
  this._submitted.value = !0;
1466
1675
  const e = this.validate();
1467
- return e && ((s = this._listeners.submit) == null || s.forEach((n) => n())), e;
1676
+ return e && ((r = this._listeners.submit) == null || r.forEach((a) => a())), e;
1468
1677
  }
1469
- on(e, s) {
1470
- var n, a;
1471
- return (n = this._listeners)[e] ?? (n[e] = []), (a = this._listeners[e]) == null || a.push(s), () => this.off(e, s);
1678
+ on(e, r) {
1679
+ var a, n;
1680
+ return (a = this._listeners)[e] ?? (a[e] = []), (n = this._listeners[e]) == null || n.push(r), () => this.off(e, r);
1472
1681
  }
1473
- off(e, s) {
1474
- $e(this._listeners[e] ?? [], s);
1682
+ off(e, r) {
1683
+ _e(this._listeners[e] ?? [], r);
1475
1684
  }
1476
1685
  async focus(e) {
1477
- var s;
1478
- await ze(), (s = this._listeners.focus) == null || s.forEach((n) => n(e));
1686
+ var r;
1687
+ await Be(), (r = this._listeners.focus) == null || r.forEach((a) => a(e));
1479
1688
  }
1480
1689
  __get(e) {
1481
1690
  return e in this._fields ? this.getFieldValue(e) : super.__get(e);
1482
1691
  }
1483
- __set(e, s) {
1692
+ __set(e, r) {
1484
1693
  if (!(e in this._fields)) {
1485
- super.__set(e, s);
1694
+ super.__set(e, r);
1486
1695
  return;
1487
1696
  }
1488
- this.setFieldValue(e, s);
1697
+ this.setFieldValue(e, r);
1489
1698
  }
1490
- getFieldErrors(e, s) {
1491
- var o;
1492
- const n = [], a = this._data[e], i = ((o = s.rules) == null ? void 0 : o.split("|")) ?? [];
1493
- for (const l of i)
1494
- l !== "required" && a == null || n.push(...gs(a, l));
1495
- return n.length > 0 ? n : null;
1699
+ getFieldErrors(e, r) {
1700
+ var c;
1701
+ const a = [], n = this._data[e], o = ((c = r.rules) == null ? void 0 : c.split("|")) ?? [];
1702
+ for (const u of o)
1703
+ u !== "required" && n == null || a.push(...Lr(n, u));
1704
+ return a.length > 0 ? a : null;
1496
1705
  }
1497
1706
  getInitialData(e) {
1498
1707
  if (this.static().isConjuring())
1499
1708
  return {};
1500
- const s = Object.entries(e).reduce((n, [a, i]) => (n[a] = i.default ?? null, n), {});
1501
- return ue(s);
1709
+ const r = Object.entries(e).reduce((a, [n, o]) => (a[n] = o.default ?? null, a), {});
1710
+ return ie(r);
1502
1711
  }
1503
1712
  getInitialErrors(e) {
1504
1713
  if (this.static().isConjuring())
1505
1714
  return {};
1506
- const s = Object.keys(e).reduce((n, a) => (n[a] = null, n), {});
1507
- return ue(s);
1715
+ const r = Object.keys(e).reduce((a, n) => (a[n] = null, a), {});
1716
+ return ie(r);
1508
1717
  }
1509
1718
  resetData() {
1510
- for (const [e, s] of Object.entries(this._fields))
1511
- this._data[e] = s.default ?? null;
1719
+ for (const [e, r] of Object.entries(this._fields))
1720
+ this._data[e] = r.default ?? null;
1512
1721
  }
1513
1722
  resetErrors(e) {
1514
- Object.keys(this._errors).forEach((s) => delete this._errors[s]), e && Object.assign(this._errors, e);
1723
+ Object.keys(this._errors).forEach((r) => delete this._errors[r]), e && Object.assign(this._errors, e);
1515
1724
  }
1516
1725
  }
1517
- function rt(t) {
1518
- return new vs(t);
1726
+ function dt(t) {
1727
+ return new Hr(t);
1519
1728
  }
1520
- function va(t, r = {}) {
1729
+ function Sn(t, s = {}) {
1521
1730
  return {
1522
1731
  default: t,
1523
- type: z.Boolean,
1524
- rules: r.rules
1732
+ type: q.Boolean,
1733
+ rules: s.rules
1525
1734
  };
1526
1735
  }
1527
- function _a(t, r = {}) {
1736
+ function kn(t, s = {}) {
1528
1737
  return {
1529
1738
  default: t,
1530
- type: z.Date,
1531
- rules: r.rules
1739
+ type: q.Date,
1740
+ rules: s.rules
1532
1741
  };
1533
1742
  }
1534
- function ba(t) {
1743
+ function Mn(t) {
1535
1744
  return {
1536
1745
  default: t,
1537
- type: z.Boolean,
1746
+ type: q.Boolean,
1538
1747
  rules: "required"
1539
1748
  };
1540
1749
  }
1541
- function ya(t) {
1750
+ function En(t) {
1542
1751
  return {
1543
1752
  default: t,
1544
- type: z.Date,
1753
+ type: q.Date,
1545
1754
  rules: "required"
1546
1755
  };
1547
1756
  }
1548
- function wa(t) {
1757
+ function Ln(t) {
1549
1758
  return {
1550
1759
  default: t,
1551
- type: z.Number,
1760
+ type: q.Number,
1552
1761
  rules: "required"
1553
1762
  };
1554
1763
  }
1555
- function _s(t) {
1764
+ function Vr(t) {
1556
1765
  return {
1557
1766
  default: t,
1558
- type: z.String,
1767
+ type: q.String,
1559
1768
  rules: "required"
1560
1769
  };
1561
1770
  }
1562
- function $a(t, r = {}) {
1771
+ function Hn(t, s = {}) {
1563
1772
  return {
1564
1773
  default: t,
1565
- type: z.Number,
1566
- rules: r.rules
1774
+ type: q.Number,
1775
+ rules: s.rules
1567
1776
  };
1568
1777
  }
1569
- function xa(t, r = {}) {
1778
+ function Vn(t, s = {}) {
1570
1779
  return {
1571
1780
  default: t,
1572
- type: z.String,
1573
- rules: r.rules
1781
+ type: q.String,
1782
+ rules: s.rules
1574
1783
  };
1575
1784
  }
1576
- function bs(t) {
1577
- const r = rt(
1785
+ function Pr(t) {
1786
+ const s = dt(
1578
1787
  Object.entries(t.checkboxes ?? {}).reduce(
1579
- (n, [a, i]) => ({
1580
- [a]: {
1581
- type: z.Boolean,
1582
- default: i.default,
1583
- required: i.required ? "required" : void 0
1788
+ (a, [n, o]) => ({
1789
+ [n]: {
1790
+ type: q.Boolean,
1791
+ default: o.default,
1792
+ required: o.required ? "required" : void 0
1584
1793
  },
1585
- ...n
1794
+ ...a
1586
1795
  }),
1587
1796
  {}
1588
1797
  )
1589
- ), e = d(() => t.acceptText ?? $("ui.accept", "Ok")), s = d(() => t.cancelText ?? $("ui.cancel", "Cancel"));
1590
- return { form: r, renderedAcceptText: e, renderedCancelText: s };
1798
+ ), e = p(() => t.acceptText ?? C("ui.accept", "Ok")), r = p(() => t.cancelText ?? C("ui.cancel", "Cancel"));
1799
+ return { form: s, renderedAcceptText: e, renderedCancelText: r };
1591
1800
  }
1592
- const ys = {
1801
+ const Tr = {
1593
1802
  key: 0,
1594
1803
  class: "mt-4 flex flex-col text-sm text-gray-600"
1595
- }, ws = { class: "flex items-center" }, $s = ["onUpdate:modelValue", "required"], xs = { class: "ml-1.5" }, Ss = { class: "mt-4 flex flex-row-reverse gap-2" }, ks = /* @__PURE__ */ h({
1804
+ }, Ir = { class: "flex items-center" }, Ar = ["onUpdate:modelValue", "required"], Rr = { class: "ml-1.5" }, zr = { class: "mt-4 flex flex-row-reverse gap-2" }, jr = /* @__PURE__ */ g({
1596
1805
  __name: "ConfirmModal",
1597
1806
  props: {
1598
1807
  title: {},
@@ -1606,53 +1815,53 @@ const ys = {
1606
1815
  required: { type: Boolean }
1607
1816
  },
1608
1817
  setup(t) {
1609
- const r = Y(t, ["cancelVariant"]), { form: e, renderedAcceptText: s, renderedCancelText: n } = bs(r);
1610
- return (a, i) => (u(), g(le, {
1611
- title: a.title,
1818
+ const s = Y(t, ["cancelVariant"]), { form: e, renderedAcceptText: r, renderedCancelText: a } = Pr(s);
1819
+ return (n, o) => (l(), h(ee, {
1820
+ title: n.title,
1612
1821
  persistent: ""
1613
1822
  }, {
1614
- default: f(({ close: o }) => [
1615
- m(tt, {
1616
- form: c(e),
1617
- onSubmit: (l) => o([!0, c(e).data()])
1823
+ default: f(({ close: c }) => [
1824
+ m(ut, {
1825
+ form: i(e),
1826
+ onSubmit: (u) => c([!0, i(e).data()])
1618
1827
  }, {
1619
1828
  default: f(() => [
1620
- m(R, {
1621
- text: a.message,
1622
- actions: a.actions
1829
+ m(z, {
1830
+ text: n.message,
1831
+ actions: n.actions
1623
1832
  }, null, 8, ["text", "actions"]),
1624
- a.checkboxes ? (u(), _("ul", ys, [
1625
- (u(!0), _(ee, null, ie(a.checkboxes, (l, p) => (u(), _("li", { key: p }, [
1626
- v("label", ws, [
1627
- Fe(v("input", {
1628
- "onUpdate:modelValue": (w) => c(e)[p] = w,
1833
+ n.checkboxes ? (l(), v("ul", Tr, [
1834
+ (l(!0), v(D, null, F(n.checkboxes, (u, d) => (l(), v("li", { key: d }, [
1835
+ y("label", Ir, [
1836
+ Fe(y("input", {
1837
+ "onUpdate:modelValue": (b) => i(e)[d] = b,
1629
1838
  type: "checkbox",
1630
- required: l.required,
1839
+ required: u.required,
1631
1840
  class: "border-primary text-primary hover:bg-primary/10 hover:checked:bg-primary/80 focus:ring-primary focus-visible:ring-primary rounded border-2"
1632
- }, null, 8, $s), [
1633
- [pt, c(e)[p]]
1841
+ }, null, 8, Ar), [
1842
+ [St, i(e)[d]]
1634
1843
  ]),
1635
- v("span", xs, k(l.label), 1)
1844
+ y("span", Rr, $(u.label), 1)
1636
1845
  ])
1637
1846
  ]))), 128))
1638
- ])) : E("", !0),
1639
- v("div", Ss, [
1640
- m(T, {
1641
- variant: a.acceptVariant,
1847
+ ])) : M("", !0),
1848
+ y("div", zr, [
1849
+ m(I, {
1850
+ variant: n.acceptVariant,
1642
1851
  submit: ""
1643
1852
  }, {
1644
1853
  default: f(() => [
1645
- q(k(c(s)), 1)
1854
+ R($(i(r)), 1)
1646
1855
  ]),
1647
1856
  _: 1
1648
1857
  }, 8, ["variant"]),
1649
- a.required ? E("", !0) : (u(), g(T, {
1858
+ n.required ? M("", !0) : (l(), h(I, {
1650
1859
  key: 0,
1651
- variant: a.cancelVariant,
1652
- onClick: (l) => o(!1)
1860
+ variant: n.cancelVariant,
1861
+ onClick: (u) => c(!1)
1653
1862
  }, {
1654
1863
  default: f(() => [
1655
- q(k(c(n)), 1)
1864
+ R($(i(a)), 1)
1656
1865
  ]),
1657
1866
  _: 2
1658
1867
  }, 1032, ["variant", "onClick"]))
@@ -1664,130 +1873,128 @@ const ys = {
1664
1873
  _: 1
1665
1874
  }, 8, ["title"]));
1666
1875
  }
1667
- }), Cs = {
1876
+ }), Br = {
1668
1877
  viewBox: "0 0 20 20",
1669
1878
  width: "1.2em",
1670
1879
  height: "1.2em"
1671
1880
  };
1672
- function Ms(t, r) {
1673
- return u(), _("svg", Cs, r[0] || (r[0] = [
1674
- v("path", {
1881
+ function Dr(t, s) {
1882
+ return l(), v("svg", Br, s[0] || (s[0] = [
1883
+ y("path", {
1675
1884
  fill: "currentColor",
1676
1885
  d: "M7.05 9.293L6.343 10L12 15.657l1.414-1.414L9.172 10l4.242-4.243L12 4.343z"
1677
1886
  }, null, -1)
1678
1887
  ]));
1679
1888
  }
1680
- const Es = { name: "zondicons-cheveron-left", render: Ms }, Ps = {
1889
+ const qr = { name: "zondicons-cheveron-left", render: Dr }, Fr = {
1681
1890
  viewBox: "0 0 20 20",
1682
1891
  width: "1.2em",
1683
1892
  height: "1.2em"
1684
1893
  };
1685
- function Is(t, r) {
1686
- return u(), _("svg", Ps, r[0] || (r[0] = [
1687
- v("path", {
1894
+ function Ur(t, s) {
1895
+ return l(), v("svg", Fr, s[0] || (s[0] = [
1896
+ y("path", {
1688
1897
  fill: "currentColor",
1689
1898
  d: "m12.95 10.707l.707-.707L8 4.343L6.586 5.757L10.828 10l-4.242 4.243L8 15.657z"
1690
1899
  }, null, -1)
1691
1900
  ]));
1692
1901
  }
1693
- const As = { name: "zondicons-cheveron-right", render: Is }, Hs = {
1902
+ const pt = { name: "zondicons-cheveron-right", render: Ur }, Nr = {
1694
1903
  viewBox: "0 0 20 20",
1695
1904
  width: "1.2em",
1696
1905
  height: "1.2em"
1697
1906
  };
1698
- function Ls(t, r) {
1699
- return u(), _("svg", Hs, r[0] || (r[0] = [
1700
- v("path", {
1907
+ function Or(t, s) {
1908
+ return l(), v("svg", Nr, s[0] || (s[0] = [
1909
+ y("path", {
1701
1910
  fill: "currentColor",
1702
1911
  d: "M2.93 17.07A10 10 0 1 1 17.07 2.93A10 10 0 0 1 2.93 17.07M9 5v6h2V5zm0 8v2h2v-2z"
1703
1912
  }, null, -1)
1704
1913
  ]));
1705
1914
  }
1706
- const st = { name: "zondicons-exclamation-solid", render: Ls }, Ts = {
1915
+ const mt = { name: "zondicons-exclamation-solid", render: Or }, Wr = {
1707
1916
  viewBox: "0 0 24 24",
1708
1917
  width: "1.2em",
1709
1918
  height: "1.2em"
1710
1919
  };
1711
- function Rs(t, r) {
1712
- return u(), _("svg", Ts, r[0] || (r[0] = [
1713
- v("path", {
1920
+ function Kr(t, s) {
1921
+ return l(), v("svg", Wr, s[0] || (s[0] = [
1922
+ y("path", {
1714
1923
  fill: "currentColor",
1715
1924
  d: "M20 19V7H4v12zm0-16a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2zm-7 14v-2h5v2zm-3.42-4L5.57 9H8.4l3.3 3.3c.39.39.39 1.03 0 1.42L8.42 17H5.59z"
1716
1925
  }, null, -1)
1717
1926
  ]));
1718
1927
  }
1719
- const js = { name: "mdi-console", render: Rs }, Vs = {
1928
+ const Jr = { name: "mdi-console", render: Kr }, Qr = {
1720
1929
  viewBox: "0 0 20 20",
1721
1930
  width: "1.2em",
1722
1931
  height: "1.2em"
1723
1932
  };
1724
- function zs(t, r) {
1725
- return u(), _("svg", Vs, r[0] || (r[0] = [
1726
- v("path", {
1933
+ function Zr(t, s) {
1934
+ return l(), v("svg", Qr, s[0] || (s[0] = [
1935
+ y("path", {
1727
1936
  fill: "currentColor",
1728
1937
  d: "M6 6V2c0-1.1.9-2 2-2h10a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2h-4v4a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V8c0-1.1.9-2 2-2zm2 0h4a2 2 0 0 1 2 2v4h4V2H8zM2 8v10h10V8z"
1729
1938
  }, null, -1)
1730
1939
  ]));
1731
1940
  }
1732
- const qs = { name: "zondicons-copy", render: zs }, Bs = {
1941
+ const Gr = { name: "zondicons-copy", render: Zr }, Xr = {
1733
1942
  viewBox: "0 0 24 24",
1734
1943
  width: "1.2em",
1735
1944
  height: "1.2em"
1736
1945
  };
1737
- function Ds(t, r) {
1738
- return u(), _("svg", Bs, r[0] || (r[0] = [
1739
- v("path", {
1946
+ function Yr(t, s) {
1947
+ return l(), v("svg", Xr, s[0] || (s[0] = [
1948
+ y("path", {
1740
1949
  fill: "currentColor",
1741
1950
  d: "M12 2A10 10 0 0 0 2 12c0 4.42 2.87 8.17 6.84 9.5c.5.08.66-.23.66-.5v-1.69c-2.77.6-3.36-1.34-3.36-1.34c-.46-1.16-1.11-1.47-1.11-1.47c-.91-.62.07-.6.07-.6c1 .07 1.53 1.03 1.53 1.03c.87 1.52 2.34 1.07 2.91.83c.09-.65.35-1.09.63-1.34c-2.22-.25-4.55-1.11-4.55-4.92c0-1.11.38-2 1.03-2.71c-.1-.25-.45-1.29.1-2.64c0 0 .84-.27 2.75 1.02c.79-.22 1.65-.33 2.5-.33s1.71.11 2.5.33c1.91-1.29 2.75-1.02 2.75-1.02c.55 1.35.2 2.39.1 2.64c.65.71 1.03 1.6 1.03 2.71c0 3.82-2.34 4.66-4.57 4.91c.36.31.69.92.69 1.85V21c0 .27.16.59.67.5C19.14 20.16 22 16.42 22 12A10 10 0 0 0 12 2"
1742
1951
  }, null, -1)
1743
1952
  ]));
1744
1953
  }
1745
- const Fs = { name: "mdi-github", render: Ds }, Us = { class: "flex" }, Gs = { class: "sr-only" }, Ns = /* @__PURE__ */ h({
1954
+ const ea = { name: "mdi-github", render: Yr }, ta = { class: "flex" }, sa = { class: "sr-only" }, ra = /* @__PURE__ */ g({
1746
1955
  __name: "ErrorReportModalButtons",
1747
1956
  props: {
1748
1957
  report: {}
1749
1958
  },
1750
1959
  setup(t) {
1751
- const r = t, e = d(() => r.report.description ? `${r.report.title}: ${r.report.description}` : r.report.title), s = d(() => {
1752
- if (!G.sourceUrl)
1960
+ const s = t, e = p(() => s.report.description ? `${s.report.title}: ${s.report.description}` : s.report.title), r = p(() => {
1961
+ if (!j.sourceUrl)
1753
1962
  return !1;
1754
- const a = encodeURIComponent(e.value), i = encodeURIComponent(
1963
+ const n = encodeURIComponent(e.value), o = encodeURIComponent(
1755
1964
  [
1756
1965
  "[Please, explain here what you were trying to do when this error appeared]",
1757
1966
  "",
1758
1967
  "Error details:",
1759
1968
  "```",
1760
- Mt(
1761
- r.report.details ?? "Details missing from report",
1762
- 1800 - a.length - G.sourceUrl.length
1969
+ Dt(
1970
+ s.report.details ?? "Details missing from report",
1971
+ 1800 - n.length - j.sourceUrl.length
1763
1972
  ).trim(),
1764
1973
  "```"
1765
1974
  ].join(`
1766
1975
  `)
1767
1976
  );
1768
- return `${G.sourceUrl}/issues/new?title=${a}&body=${i}`;
1769
- }), n = d(() => K(
1977
+ return `${j.sourceUrl}/issues/new?title=${n}&body=${o}`;
1978
+ }), a = p(() => Z(
1770
1979
  [
1771
1980
  {
1772
1981
  id: "clipboard",
1773
1982
  description: "Copy to clipboard",
1774
- iconComponent: qs,
1775
- async handler() {
1983
+ iconComponent: Gr,
1984
+ async click() {
1776
1985
  await navigator.clipboard.writeText(`${e.value}
1777
1986
 
1778
- ${r.report.details}`), P.showSnackbar(
1779
- $("errors.copiedToClipboard", "Debug information copied to clipboard")
1780
- );
1987
+ ${s.report.details}`), A.toast(C("errors.copiedToClipboard", "Debug information copied to clipboard"));
1781
1988
  }
1782
1989
  },
1783
1990
  {
1784
1991
  id: "console",
1785
1992
  description: "Log to console",
1786
- iconComponent: js,
1787
- handler() {
1788
- const a = r.report.error ?? r.report;
1789
- window.error = a, console.error(a), P.showSnackbar(
1790
- $(
1993
+ iconComponent: Jr,
1994
+ click() {
1995
+ const n = s.report.error ?? s.report;
1996
+ window.error = n, console.error(n), A.toast(
1997
+ C(
1791
1998
  "errors.addedToConsole",
1792
1999
  "You can now use the **error** variable in the console"
1793
2000
  )
@@ -1795,28 +2002,28 @@ ${r.report.details}`), P.showSnackbar(
1795
2002
  }
1796
2003
  }
1797
2004
  ],
1798
- (a) => {
1799
- s.value && a.push({
2005
+ (n) => {
2006
+ r.value && n.push({
1800
2007
  id: "github",
1801
2008
  description: "Report in GitHub",
1802
- iconComponent: Fs,
1803
- url: s.value
2009
+ iconComponent: ea,
2010
+ url: r.value
1804
2011
  });
1805
2012
  }
1806
2013
  ));
1807
- return (a, i) => (u(), _("div", Us, [
1808
- (u(!0), _(ee, null, ie(n.value, (o) => y(a.$slots, "default", H({ ref_for: !0 }, o), () => [
1809
- m(T, {
2014
+ return (n, o) => (l(), v("div", ta, [
2015
+ (l(!0), v(D, null, F(a.value, (c) => w(n.$slots, "default", T({ ref_for: !0 }, c), () => [
2016
+ m(I, {
1810
2017
  size: "icon",
1811
2018
  variant: "ghost",
1812
2019
  class: "group whitespace-nowrap",
1813
- href: o.url,
1814
- title: a.$td(`errors.report_${o.id}`, o.description),
1815
- onClick: o.handler
2020
+ href: c.url,
2021
+ title: n.$td(`errors.report_${c.id}`, c.description),
2022
+ onClick: c.click
1816
2023
  }, {
1817
2024
  default: f(() => [
1818
- v("span", Gs, k(a.$td(`errors.report_${o.id}`, o.description)), 1),
1819
- (u(), g(te(o.iconComponent), {
2025
+ y("span", sa, $(n.$td(`errors.report_${c.id}`, c.description)), 1),
2026
+ (l(), h(O(c.iconComponent), {
1820
2027
  class: "size-4",
1821
2028
  "aria-hidden": "true"
1822
2029
  }))
@@ -1826,7 +2033,7 @@ ${r.report.details}`), P.showSnackbar(
1826
2033
  ])), 256))
1827
2034
  ]));
1828
2035
  }
1829
- }), Ws = /* @__PURE__ */ h({
2036
+ }), aa = /* @__PURE__ */ g({
1830
2037
  __name: "ErrorReportModalTitle",
1831
2038
  props: {
1832
2039
  report: {},
@@ -1834,117 +2041,117 @@ ${r.report.details}`), P.showSnackbar(
1834
2041
  totalReports: {}
1835
2042
  },
1836
2043
  setup(t) {
1837
- const r = d(() => !t.totalReports || t.totalReports <= 1 ? t.report.title : `${t.report.title} (${t.currentReport}/${t.totalReports})`);
1838
- return (e, s) => (u(), g(R, {
1839
- text: r.value,
2044
+ const s = p(() => !t.totalReports || t.totalReports <= 1 ? t.report.title : `${t.report.title} (${t.currentReport}/${t.totalReports})`);
2045
+ return (e, r) => (l(), h(z, {
2046
+ text: s.value,
1840
2047
  inline: ""
1841
2048
  }, null, 8, ["text"]));
1842
2049
  }
1843
2050
  });
1844
- function Os(t) {
1845
- const r = A(0), e = d(() => t.reports[r.value]), s = d(
2051
+ function na(t) {
2052
+ const s = H(0), e = p(() => t.reports[s.value]), r = p(
1846
2053
  () => {
1847
- var i;
1848
- return ((i = e.value.details) == null ? void 0 : i.trim()) || $("errors.detailsEmpty", "This error is missing a stacktrace.");
2054
+ var o;
2055
+ return ((o = e.value.details) == null ? void 0 : o.trim()) || C("errors.detailsEmpty", "This error is missing a stacktrace.");
1849
2056
  }
1850
- ), n = $("errors.previousReport", "Show previous report"), a = $("errors.nextReport", "Show next report");
2057
+ ), a = C("errors.previousReport", "Show previous report"), n = C("errors.nextReport", "Show next report");
1851
2058
  return {
1852
- activeReportIndex: r,
1853
- details: s,
1854
- nextReportText: a,
1855
- previousReportText: n,
2059
+ activeReportIndex: s,
2060
+ details: r,
2061
+ nextReportText: n,
2062
+ previousReportText: a,
1856
2063
  report: e
1857
2064
  };
1858
2065
  }
1859
- const Ks = { class: "px-4 pt-5 pb-4" }, Qs = { class: "flex justify-between gap-4" }, Js = { class: "flex items-center gap-2" }, Zs = {
2066
+ const oa = { class: "px-4 pt-5 pb-4" }, la = { class: "flex justify-between gap-4" }, ia = { class: "flex items-center gap-2" }, ca = {
1860
2067
  key: 0,
1861
2068
  class: "flex gap-0.5"
1862
- }, Xs = { class: "-mt-2 max-h-[80vh] overflow-auto bg-red-800/10" }, Ys = ["textContent"], en = /* @__PURE__ */ h({
2069
+ }, ua = { class: "-mt-2 max-h-[80vh] overflow-auto bg-red-800/10" }, da = ["textContent"], pa = /* @__PURE__ */ g({
1863
2070
  __name: "ErrorReportModal",
1864
2071
  props: {
1865
2072
  reports: {}
1866
2073
  },
1867
2074
  setup(t) {
1868
- const r = t, { activeReportIndex: e, details: s, nextReportText: n, previousReportText: a, report: i } = Os(r);
1869
- return (o, l) => (u(), g(le, { "wrapper-class": "p-0 sm:w-auto sm:min-w-lg sm:max-w-[80vw]" }, {
2075
+ const s = t, { activeReportIndex: e, details: r, nextReportText: a, previousReportText: n, report: o } = na(s);
2076
+ return (c, u) => (l(), h(ee, { "wrapper-class": "p-0 sm:w-auto sm:min-w-lg sm:max-w-[80vw]" }, {
1870
2077
  default: f(() => [
1871
- v("div", Ks, [
1872
- v("h2", Qs, [
1873
- v("div", Js, [
1874
- m(c(st), { class: "size-5 text-red-600" }),
1875
- m(Ws, {
2078
+ y("div", oa, [
2079
+ y("h2", la, [
2080
+ y("div", ia, [
2081
+ m(i(mt), { class: "size-5 text-red-600" }),
2082
+ m(aa, {
1876
2083
  class: "text-lg leading-6 font-semibold text-gray-900",
1877
- report: c(i),
1878
- "current-report": c(e) + 1,
1879
- "total-reports": o.reports.length
2084
+ report: i(o),
2085
+ "current-report": i(e) + 1,
2086
+ "total-reports": c.reports.length
1880
2087
  }, null, 8, ["report", "current-report", "total-reports"]),
1881
- o.reports.length > 1 ? (u(), _("span", Zs, [
1882
- m(T, {
2088
+ c.reports.length > 1 ? (l(), v("span", ca, [
2089
+ m(I, {
1883
2090
  size: "icon",
1884
2091
  variant: "ghost",
1885
- disabled: c(e) === 0,
1886
- "aria-label": c(a),
1887
- title: c(a),
1888
- onClick: l[0] || (l[0] = (p) => e.value--)
2092
+ disabled: i(e) === 0,
2093
+ "aria-label": i(n),
2094
+ title: i(n),
2095
+ onClick: u[0] || (u[0] = (d) => e.value--)
1889
2096
  }, {
1890
2097
  default: f(() => [
1891
- m(c(Es), { class: "size-4" })
2098
+ m(i(qr), { class: "size-4" })
1892
2099
  ]),
1893
2100
  _: 1
1894
2101
  }, 8, ["disabled", "aria-label", "title"]),
1895
- m(T, {
2102
+ m(I, {
1896
2103
  size: "icon",
1897
2104
  variant: "ghost",
1898
- disabled: c(e) === o.reports.length - 1,
1899
- "aria-label": c(n),
1900
- title: c(n),
1901
- onClick: l[1] || (l[1] = (p) => e.value++)
2105
+ disabled: i(e) === c.reports.length - 1,
2106
+ "aria-label": i(a),
2107
+ title: i(a),
2108
+ onClick: u[1] || (u[1] = (d) => e.value++)
1902
2109
  }, {
1903
2110
  default: f(() => [
1904
- m(c(As), { class: "size-4" })
2111
+ m(i(pt), { class: "size-4" })
1905
2112
  ]),
1906
2113
  _: 1
1907
2114
  }, 8, ["disabled", "aria-label", "title"])
1908
- ])) : E("", !0)
2115
+ ])) : M("", !0)
1909
2116
  ]),
1910
- m(Ns, {
1911
- report: c(i),
2117
+ m(ra, {
2118
+ report: i(o),
1912
2119
  class: "gap-0.5"
1913
2120
  }, null, 8, ["report"])
1914
2121
  ]),
1915
- c(i).description ? (u(), g(R, {
2122
+ i(o).description ? (l(), h(z, {
1916
2123
  key: 0,
1917
- text: c(i).description,
2124
+ text: i(o).description,
1918
2125
  class: "text-gray-600"
1919
- }, null, 8, ["text"])) : E("", !0)
2126
+ }, null, 8, ["text"])) : M("", !0)
1920
2127
  ]),
1921
- v("div", Xs, [
1922
- v("pre", {
2128
+ y("div", ua, [
2129
+ y("pre", {
1923
2130
  class: "p-4 text-xs text-red-800",
1924
- textContent: k(c(s))
1925
- }, null, 8, Ys)
2131
+ textContent: $(i(r))
2132
+ }, null, 8, da)
1926
2133
  ])
1927
2134
  ]),
1928
2135
  _: 1
1929
2136
  }));
1930
2137
  }
1931
- }), tn = {
2138
+ }), ma = {
1932
2139
  viewBox: "0 0 24 24",
1933
2140
  width: "1.2em",
1934
2141
  height: "1.2em"
1935
2142
  };
1936
- function rn(t, r) {
1937
- return u(), _("svg", tn, r[0] || (r[0] = [
1938
- v("path", {
2143
+ function fa(t, s) {
2144
+ return l(), v("svg", ma, s[0] || (s[0] = [
2145
+ y("path", {
1939
2146
  fill: "currentColor",
1940
2147
  d: "M12,1A11,11,0,1,0,23,12,11,11,0,0,0,12,1Zm0,19a8,8,0,1,1,8-8A8,8,0,0,1,12,20Z",
1941
2148
  opacity: ".25"
1942
2149
  }, null, -1),
1943
- v("path", {
2150
+ y("path", {
1944
2151
  fill: "currentColor",
1945
2152
  d: "M10.14,1.16a11,11,0,0,0-9,8.92A1.59,1.59,0,0,0,2.46,12,1.52,1.52,0,0,0,4.11,10.7a8,8,0,0,1,6.66-6.61A1.42,1.42,0,0,0,12,2.69h0A1.57,1.57,0,0,0,10.14,1.16Z"
1946
2153
  }, [
1947
- v("animateTransform", {
2154
+ y("animateTransform", {
1948
2155
  attributeName: "transform",
1949
2156
  dur: "0.75s",
1950
2157
  repeatCount: "indefinite",
@@ -1954,7 +2161,7 @@ function rn(t, r) {
1954
2161
  ], -1)
1955
2162
  ]));
1956
2163
  }
1957
- const sn = { name: "svg-spinners-90-ring-with-bg", render: rn }, nn = { class: "mt-1 h-2 w-full overflow-hidden rounded-full bg-gray-200" }, an = { class: "sr-only" }, on = /* @__PURE__ */ h({
2164
+ const ha = { name: "svg-spinners-90-ring-with-bg", render: fa }, ga = { class: "mt-1 h-2 w-full overflow-hidden rounded-full bg-gray-200" }, va = { class: "sr-only" }, ba = /* @__PURE__ */ g({
1958
2165
  __name: "ProgressBar",
1959
2166
  props: {
1960
2167
  filledClass: {},
@@ -1962,31 +2169,31 @@ const sn = { name: "svg-spinners-90-ring-with-bg", render: rn }, nn = { class: "
1962
2169
  job: {}
1963
2170
  },
1964
2171
  setup(t) {
1965
- let r;
1966
- const e = A(0), s = d(() => N("size-full transition-transform duration-500 rounded-r-full ease-linear bg-primary", t.filledClass)), n = d(() => typeof t.progress == "number" ? t.progress : e.value);
1967
- return Se(
2172
+ let s;
2173
+ const e = H(0), r = p(() => P("size-full transition-transform duration-500 rounded-r-full ease-linear bg-primary", t.filledClass)), a = p(() => typeof t.progress == "number" ? t.progress : e.value);
2174
+ return ke(
1968
2175
  () => t.job,
1969
2176
  () => {
1970
- var a, i;
1971
- r == null || r(), e.value = ((a = t.job) == null ? void 0 : a.progress) ?? 0, r = (i = t.job) == null ? void 0 : i.listeners.add({ onUpdated: (o) => e.value = o });
2177
+ var n, o;
2178
+ s == null || s(), e.value = ((n = t.job) == null ? void 0 : n.progress) ?? 0, s = (o = t.job) == null ? void 0 : o.listeners.add({ onUpdated: (c) => e.value = c });
1972
2179
  },
1973
2180
  { immediate: !0 }
1974
- ), oe(() => r == null ? void 0 : r()), (a, i) => (u(), _("div", nn, [
1975
- v("div", {
1976
- class: L(s.value),
1977
- style: mt(`transform:translateX(-${(1 - n.value) * 100}%)`)
2181
+ ), ue(() => s == null ? void 0 : s()), (n, o) => (l(), v("div", ga, [
2182
+ y("div", {
2183
+ class: L(r.value),
2184
+ style: kt(`transform:translateX(-${(1 - a.value) * 100}%)`)
1978
2185
  }, null, 6),
1979
- v("span", an, k(a.$td("ui.progress", "{progress}% complete", {
1980
- progress: n.value * 100
2186
+ y("span", va, $(n.$td("ui.progress", "{progress}% complete", {
2187
+ progress: a.value * 100
1981
2188
  })), 1)
1982
2189
  ]));
1983
2190
  }
1984
2191
  });
1985
- function ln(t) {
1986
- const r = d(() => t.message ?? $("ui.loading", "Loading...")), e = d(() => typeof t.progress == "number" || !!t.job);
1987
- return { renderedMessage: r, showProgress: e };
2192
+ function ya(t) {
2193
+ const s = p(() => t.message ?? C("ui.loading", "Loading...")), e = p(() => typeof t.progress == "number" || !!t.job);
2194
+ return { renderedMessage: s, showProgress: e };
1988
2195
  }
1989
- const cn = /* @__PURE__ */ h({
2196
+ const _a = /* @__PURE__ */ g({
1990
2197
  __name: "LoadingModal",
1991
2198
  props: {
1992
2199
  title: {},
@@ -1995,147 +2202,264 @@ const cn = /* @__PURE__ */ h({
1995
2202
  job: {}
1996
2203
  },
1997
2204
  setup(t) {
1998
- const r = t, { renderedMessage: e, showProgress: s } = ln(r);
1999
- return (n, a) => (u(), g(le, {
2205
+ const s = t, { renderedMessage: e, showProgress: r } = ya(s);
2206
+ return (a, n) => (l(), h(ee, {
2000
2207
  persistent: "",
2001
- class: L(["flex", { "flex-col-reverse": c(s), "items-center justify-center gap-2": !c(s) }]),
2208
+ class: L(["flex", { "flex-col-reverse": i(r), "items-center justify-center gap-2": !i(r) }]),
2002
2209
  "wrapper-class": "w-auto",
2003
- title: n.title
2210
+ title: a.title
2004
2211
  }, {
2005
2212
  default: f(() => [
2006
- c(s) ? (u(), g(on, {
2213
+ i(r) ? (l(), h(ba, {
2007
2214
  key: 0,
2008
- progress: n.progress,
2009
- job: n.job,
2215
+ progress: a.progress,
2216
+ job: a.job,
2010
2217
  class: "min-w-[min(400px,80vw)]"
2011
- }, null, 8, ["progress", "job"])) : (u(), g(c(sn), {
2218
+ }, null, 8, ["progress", "job"])) : (l(), h(i(ha), {
2012
2219
  key: 1,
2013
2220
  class: "text-primary mr-1 size-6"
2014
2221
  })),
2015
- m(R, { text: c(e) }, null, 8, ["text"])
2222
+ m(z, { text: i(e) }, null, 8, ["text"])
2016
2223
  ]),
2017
2224
  _: 1
2018
2225
  }, 8, ["title", "class"]));
2019
2226
  }
2020
- });
2021
- function nt() {
2022
- const t = qe(), r = d(() => t.class);
2023
- return [d(() => We(t, "class")), r];
2024
- }
2025
- const un = {
2026
- key: 0,
2027
- class: "pointer-events-none absolute inset-y-0 right-0 flex items-center pr-3"
2028
- }, dn = /* @__PURE__ */ h({
2029
- inheritAttrs: !1,
2030
- __name: "Input",
2227
+ }), ft = /* @__PURE__ */ g({
2228
+ __name: "HeadlessInput",
2031
2229
  props: {
2032
2230
  name: {},
2033
2231
  label: {},
2034
2232
  description: {},
2035
2233
  modelValue: {},
2036
- inputClass: {},
2037
- wrapperClass: {}
2234
+ as: { default: "div" }
2038
2235
  },
2039
2236
  emits: ["update:modelValue"],
2040
- setup(t) {
2041
- const r = Y(t, ["label", "inputClass", "wrapperClass"]), e = Pe(), [s, n] = nt(), a = d(() => N("relative rounded-md shadow-2xs", { "mt-1": t.label }, t.wrapperClass)), i = d(() => {
2042
- var o, l, p;
2043
- return N(
2044
- // eslint-disable-next-line vue/max-len
2045
- "block w-full rounded-md border-0 py-1.5 ring-1 ring-inset focus:ring-2 focus:ring-inset sm:text-sm sm:leading-6",
2046
- {
2047
- "text-gray-900 shadow-2xs ring-gray-300 placeholder:text-gray-400": !((o = e.value) != null && o.errors),
2048
- "hover:ring-1 hover:ring-primary/80 hover:ring-inset focus:ring-primary": !((l = e.value) != null && l.errors),
2049
- "pr-10 text-red-900 ring-red-300 placeholder:text-red-300 focus:ring-red-500": (p = e.value) == null ? void 0 : p.errors
2050
- },
2051
- t.inputClass
2052
- );
2053
- });
2054
- return (o, l) => {
2055
- const p = j("HeadlessInputLabel"), w = j("HeadlessInputInput"), M = j("HeadlessInputDescription"), S = j("HeadlessInputError"), D = j("HeadlessInput");
2056
- return u(), g(D, H({
2057
- ref_key: "$input",
2058
- ref: e,
2059
- label: o.label,
2060
- class: c(n)
2061
- }, r, {
2062
- "onUpdate:modelValue": l[0] || (l[0] = (F) => o.$emit("update:modelValue", F))
2063
- }), {
2064
- default: f(() => {
2065
- var F;
2066
- return [
2067
- m(p, { class: "block text-sm leading-6 font-medium text-gray-900" }),
2068
- v("div", {
2069
- class: L(a.value)
2070
- }, [
2071
- m(w, H(c(s), { class: i.value }), null, 16, ["class"]),
2072
- (F = c(e)) != null && F.errors ? (u(), _("div", un, [
2073
- m(c(st), { class: "size-5 text-red-500" })
2074
- ])) : E("", !0)
2075
- ], 2),
2076
- m(M, { class: "mt-2 text-sm text-gray-600" }),
2077
- m(S, { class: "mt-2 text-sm text-red-600" })
2078
- ];
2079
- }),
2080
- _: 1
2081
- }, 16, ["label", "class"]);
2237
+ setup(t, { expose: s, emit: e }) {
2238
+ const r = e, a = ae("form", null), n = p(() => !a || !t.name ? null : a.errors[t.name] ?? null), o = {
2239
+ id: `input-${re()}`,
2240
+ name: p(() => t.name),
2241
+ label: p(() => t.label),
2242
+ description: p(() => t.description),
2243
+ value: p(() => a && t.name ? a.getFieldValue(t.name) : t.modelValue),
2244
+ errors: Me(n),
2245
+ required: p(() => {
2246
+ if (!(!t.name || !a))
2247
+ return a.getFieldRules(t.name).includes("required");
2248
+ }),
2249
+ update(c) {
2250
+ if (a && t.name) {
2251
+ a.setFieldValue(t.name, c);
2252
+ return;
2253
+ }
2254
+ r("update:modelValue", c);
2255
+ }
2082
2256
  };
2257
+ return pe("input", o), s(o), (c, u) => (l(), h(O(c.as), null, {
2258
+ default: f(() => [
2259
+ w(c.$slots, "default")
2260
+ ]),
2261
+ _: 3
2262
+ }));
2083
2263
  }
2084
- });
2085
- function pn(t) {
2086
- const r = rt({
2087
- draft: _s(t.defaultValue ?? "")
2088
- }), e = d(() => t.acceptText ?? $("ui.accept", "Ok")), s = d(() => t.cancelText ?? $("ui.cancel", "Cancel"));
2089
- return { form: r, renderedAcceptText: e, renderedCancelText: s };
2090
- }
2091
- const mn = { class: "mt-4 flex flex-row-reverse gap-2" }, fn = /* @__PURE__ */ h({
2092
- __name: "PromptModal",
2264
+ }), wa = ["for"], xe = /* @__PURE__ */ g({
2265
+ __name: "HeadlessInputLabel",
2266
+ setup(t) {
2267
+ const s = V("input", "<HeadlessInputLabel> must be a child of a <HeadlessInput>"), e = Se(), r = p(() => !!(s.label || e.default));
2268
+ return (a, n) => r.value ? (l(), v("label", {
2269
+ key: 0,
2270
+ for: i(s).id
2271
+ }, [
2272
+ w(a.$slots, "default", {}, () => [
2273
+ R($(i(s).label), 1)
2274
+ ])
2275
+ ], 8, wa)) : M("", !0);
2276
+ }
2277
+ }), $a = ["id", "name", "type", "checked", "required", "aria-invalid", "aria-describedby"], ht = /* @__PURE__ */ g({
2278
+ __name: "HeadlessInputInput",
2093
2279
  props: {
2094
- title: {},
2095
- message: {},
2096
- label: {},
2097
- defaultValue: {},
2098
- placeholder: {},
2099
- acceptText: {},
2100
- acceptVariant: {},
2101
- cancelText: {},
2102
- cancelVariant: { default: "secondary" }
2280
+ type: { default: "text" }
2103
2281
  },
2104
2282
  setup(t) {
2105
- const r = Y(t, ["cancelVariant"]), { form: e, renderedAcceptText: s, renderedCancelText: n } = pn(r);
2106
- return (a, i) => (u(), g(le, {
2107
- title: a.title,
2108
- persistent: ""
2109
- }, {
2110
- default: f(({ close: o }) => [
2111
- m(tt, {
2112
- form: c(e),
2113
- onSubmit: (l) => o(c(e).draft)
2114
- }, {
2115
- default: f(() => [
2116
- m(R, { text: a.message }, null, 8, ["text"]),
2117
- m(dn, {
2118
- name: "draft",
2119
- class: "mt-2",
2120
- placeholder: a.placeholder,
2121
- label: a.label
2122
- }, null, 8, ["placeholder", "label"]),
2123
- v("div", mn, [
2124
- m(T, {
2125
- variant: a.acceptVariant,
2283
+ const s = H(), e = V("input", "<HeadlessInputInput> must be a child of a <HeadlessInput>"), r = p(() => e.name ?? void 0), a = p(() => e.value), n = p(() => {
2284
+ if (t.type === "checkbox")
2285
+ return !!a.value;
2286
+ });
2287
+ function o() {
2288
+ s.value && e.update(c());
2289
+ }
2290
+ function c() {
2291
+ if (!s.value)
2292
+ return null;
2293
+ switch (t.type) {
2294
+ case "checkbox":
2295
+ return s.value.checked;
2296
+ case "date":
2297
+ return s.value.valueAsDate;
2298
+ default:
2299
+ return s.value.value;
2300
+ }
2301
+ }
2302
+ return et(e, () => {
2303
+ var u;
2304
+ return (u = s.value) == null ? void 0 : u.focus();
2305
+ }), de(() => {
2306
+ if (s.value) {
2307
+ if (t.type === "date") {
2308
+ s.value.valueAsDate = a.value;
2309
+ return;
2310
+ }
2311
+ s.value.value = a.value ?? null;
2312
+ }
2313
+ }), (u, d) => (l(), v("input", {
2314
+ id: i(e).id,
2315
+ ref_key: "$input",
2316
+ ref: s,
2317
+ name: r.value,
2318
+ type: u.type,
2319
+ checked: n.value,
2320
+ required: i(e).required ?? void 0,
2321
+ "aria-invalid": i(e).errors ? "true" : "false",
2322
+ "aria-describedby": i(e).errors ? `${i(e).id}-error` : i(e).description ? `${i(e).id}-description` : void 0,
2323
+ onInput: o
2324
+ }, null, 40, $a));
2325
+ }
2326
+ }), xa = /* @__PURE__ */ g({
2327
+ inheritAttrs: !1,
2328
+ __name: "HeadlessInputDescription",
2329
+ setup(t) {
2330
+ const s = V(
2331
+ "input",
2332
+ "<HeadlessInputDescription> must be a child of a <HeadlessInput>"
2333
+ ), e = p(() => typeof s.description == "string" ? s.description : ""), r = p(() => !!s.description);
2334
+ return (a, n) => w(a.$slots, "default", {
2335
+ id: `${i(s).id}-description`
2336
+ }, () => [
2337
+ r.value ? (l(), h(z, T({ key: 0 }, a.$attrs, {
2338
+ id: `${i(s).id}-description`,
2339
+ text: e.value
2340
+ }), null, 16, ["id", "text"])) : M("", !0)
2341
+ ]);
2342
+ }
2343
+ }), Ca = ["id"], Ce = /* @__PURE__ */ g({
2344
+ __name: "HeadlessInputError",
2345
+ setup(t) {
2346
+ const s = V("input", "<HeadlessInputError> must be a child of a <HeadlessInput>"), e = p(() => s.errors ? C(`errors.${s.errors[0]}`, `Error: ${s.errors[0]}`) : null);
2347
+ return (r, a) => e.value ? (l(), v("p", {
2348
+ key: 0,
2349
+ id: `${i(s).id}-error`
2350
+ }, $(e.value), 9, Ca)) : M("", !0);
2351
+ }
2352
+ }), Sa = {
2353
+ key: 0,
2354
+ class: "pointer-events-none absolute inset-y-0 right-0 flex items-center pr-3"
2355
+ }, ka = /* @__PURE__ */ g({
2356
+ inheritAttrs: !1,
2357
+ __name: "Input",
2358
+ props: {
2359
+ name: {},
2360
+ label: {},
2361
+ description: {},
2362
+ modelValue: {},
2363
+ inputClass: {},
2364
+ wrapperClass: {}
2365
+ },
2366
+ emits: ["update:modelValue"],
2367
+ setup(t) {
2368
+ const s = Y(t, ["label", "inputClass", "wrapperClass"]), e = Ee("$input"), [r, a] = tt(), n = p(() => P("relative rounded-md shadow-2xs", { "mt-1": t.label }, t.wrapperClass)), o = p(() => {
2369
+ var c, u, d;
2370
+ return P(
2371
+ // eslint-disable-next-line vue/max-len
2372
+ "block w-full rounded-md border-0 py-1.5 ring-1 ring-inset focus:ring-2 focus:ring-inset sm:text-sm sm:leading-6",
2373
+ {
2374
+ "text-gray-900 shadow-2xs ring-gray-300 placeholder:text-gray-400": !((c = e.value) != null && c.errors),
2375
+ "hover:ring-1 hover:ring-primary/80 hover:ring-inset focus:ring-primary": !((u = e.value) != null && u.errors),
2376
+ "pr-10 text-red-900 ring-red-300 placeholder:text-red-300 focus:ring-red-500": (d = e.value) == null ? void 0 : d.errors
2377
+ },
2378
+ t.inputClass
2379
+ );
2380
+ });
2381
+ return (c, u) => (l(), h(ft, T({
2382
+ ref_key: "$input",
2383
+ ref: e,
2384
+ label: c.label,
2385
+ class: i(a)
2386
+ }, s, {
2387
+ "onUpdate:modelValue": u[0] || (u[0] = (d) => c.$emit("update:modelValue", d))
2388
+ }), {
2389
+ default: f(() => {
2390
+ var d;
2391
+ return [
2392
+ m(xe, { class: "block text-sm leading-6 font-medium text-gray-900" }),
2393
+ y("div", {
2394
+ class: L(n.value)
2395
+ }, [
2396
+ m(ht, T(i(r), { class: o.value }), null, 16, ["class"]),
2397
+ (d = i(e)) != null && d.errors ? (l(), v("div", Sa, [
2398
+ m(i(mt), { class: "size-5 text-red-500" })
2399
+ ])) : M("", !0)
2400
+ ], 2),
2401
+ m(xa, { class: "mt-2 text-sm text-gray-600" }),
2402
+ m(Ce, { class: "mt-2 text-sm text-red-600" })
2403
+ ];
2404
+ }),
2405
+ _: 1
2406
+ }, 16, ["label", "class"]));
2407
+ }
2408
+ });
2409
+ function Ma(t) {
2410
+ const s = dt({
2411
+ draft: Vr(t.defaultValue ?? "")
2412
+ }), e = p(() => t.acceptText ?? C("ui.accept", "Ok")), r = p(() => t.cancelText ?? C("ui.cancel", "Cancel"));
2413
+ return { form: s, renderedAcceptText: e, renderedCancelText: r };
2414
+ }
2415
+ const Ea = { class: "mt-4 flex flex-row-reverse gap-2" }, La = /* @__PURE__ */ g({
2416
+ __name: "PromptModal",
2417
+ props: {
2418
+ title: {},
2419
+ message: {},
2420
+ label: {},
2421
+ defaultValue: {},
2422
+ placeholder: {},
2423
+ acceptText: {},
2424
+ acceptVariant: {},
2425
+ cancelText: {},
2426
+ cancelVariant: { default: "secondary" }
2427
+ },
2428
+ setup(t) {
2429
+ const s = Y(t, ["cancelVariant"]), { form: e, renderedAcceptText: r, renderedCancelText: a } = Ma(s);
2430
+ return (n, o) => (l(), h(ee, {
2431
+ title: n.title,
2432
+ persistent: ""
2433
+ }, {
2434
+ default: f(({ close: c }) => [
2435
+ m(ut, {
2436
+ form: i(e),
2437
+ onSubmit: (u) => c(i(e).draft)
2438
+ }, {
2439
+ default: f(() => [
2440
+ m(z, { text: n.message }, null, 8, ["text"]),
2441
+ m(ka, {
2442
+ name: "draft",
2443
+ class: "mt-2",
2444
+ placeholder: n.placeholder,
2445
+ label: n.label
2446
+ }, null, 8, ["placeholder", "label"]),
2447
+ y("div", Ea, [
2448
+ m(I, {
2449
+ variant: n.acceptVariant,
2126
2450
  submit: ""
2127
2451
  }, {
2128
2452
  default: f(() => [
2129
- q(k(c(s)), 1)
2453
+ R($(i(r)), 1)
2130
2454
  ]),
2131
2455
  _: 1
2132
2456
  }, 8, ["variant"]),
2133
- m(T, {
2134
- variant: a.cancelVariant,
2135
- onClick: (l) => o(!1)
2457
+ m(I, {
2458
+ variant: n.cancelVariant,
2459
+ onClick: (u) => c(!1)
2136
2460
  }, {
2137
2461
  default: f(() => [
2138
- q(k(c(n)), 1)
2462
+ R($(i(a)), 1)
2139
2463
  ]),
2140
2464
  _: 2
2141
2465
  }, 1032, ["variant", "onClick"])
@@ -2147,516 +2471,239 @@ const mn = { class: "mt-4 flex flex-row-reverse gap-2" }, fn = /* @__PURE__ */ h
2147
2471
  _: 1
2148
2472
  }, 8, ["title"]));
2149
2473
  }
2150
- }), hn = { $ui: P }, gn = {
2151
- async install(t, r) {
2152
- const e = {
2153
- [C.AlertModal]: fs,
2154
- [C.ConfirmModal]: ks,
2155
- [C.ErrorReportModal]: en,
2156
- [C.LoadingModal]: cn,
2157
- [C.PromptModal]: fn,
2158
- [C.Snackbar]: Yr,
2159
- [C.StartupCrash]: ns
2160
- };
2161
- Object.entries({
2162
- ...e,
2163
- ...r.components
2164
- }).forEach(([s, n]) => P.registerComponent(s, n)), await _e(t, hn);
2165
- }
2166
- };
2167
- async function vn(t, r = {}) {
2168
- var s;
2169
- const e = [Vr, vr, Tr, jr, $r, gn, ...r.plugins ?? []];
2170
- G.instance = t, await or(e, t, r), await ((s = r.install) == null ? void 0 : s.call(r, t)), await x.emit("application-ready");
2171
- }
2172
- async function Sa(t, r = {}) {
2173
- var s;
2174
- const e = ft(t);
2175
- Z() && (window.$aerogel = e), await vn(e, r), e.mount("#app"), (s = e._container) == null || s.classList.remove("loading"), await x.emit("application-mounted");
2176
- }
2177
- const _n = { key: 0 }, bn = /* @__PURE__ */ h({
2178
- __name: "AppModals",
2179
- setup(t) {
2180
- const r = d(() => P.modals[0] ?? null);
2181
- return (e, s) => r.value ? (u(), _("aside", _n, [
2182
- m(et, {
2183
- "child-index": 1,
2184
- modal: r.value
2185
- }, null, 8, ["modal"])
2186
- ])) : E("", !0);
2187
- }
2188
- }), yn = (t, r) => {
2189
- const e = t.__vccOpts || t;
2190
- for (const [s, n] of r)
2191
- e[s] = n;
2192
- return e;
2193
- }, wn = {}, $n = {
2194
- "aria-live": "assertive",
2195
- class: "pointer-events-none fixed inset-0 z-50 flex items-end px-4 py-6 sm:p-6"
2196
- }, xn = { class: "flex w-full flex-col items-end space-y-4" };
2197
- function Sn(t, r) {
2198
- return u(), _("div", $n, [
2199
- v("div", xn, [
2200
- (u(!0), _(ee, null, ie(t.$ui.snackbars, (e) => (u(), g(te(e.component), H({
2201
- id: e.id,
2202
- key: e.id,
2203
- ref_for: !0
2204
- }, e.properties), null, 16, ["id"]))), 128))
2205
- ])
2206
- ]);
2207
- }
2208
- const kn = /* @__PURE__ */ yn(wn, [["render", Sn]]), Cn = /* @__PURE__ */ h({
2209
- __name: "AppOverlays",
2210
- setup(t) {
2211
- const r = A(null), e = A(!0);
2212
- return se("show-overlays-backdrop", async () => {
2213
- !r.value || !e.value || (e.value = !1, r.value.classList.remove("opacity-0"));
2214
- }), se("hide-overlays-backdrop", async () => {
2215
- !r.value || e.value || (e.value = !0, r.value.classList.add("opacity-0"));
2216
- }), (s, n) => (u(), _(ee, null, [
2217
- v("div", {
2218
- id: "aerogel-overlays-backdrop",
2219
- ref_key: "$backdrop",
2220
- ref: r,
2221
- class: "pointer-events-none fixed inset-0 z-50 bg-black/30 opacity-0"
2222
- }, null, 512),
2223
- m(bn),
2224
- m(kn)
2225
- ], 64));
2226
- }
2227
- }), Mn = { class: "flex min-h-full flex-col text-base leading-tight font-normal text-gray-900 antialiased" }, ka = /* @__PURE__ */ h({
2228
- __name: "AppLayout",
2474
+ }), Ha = { class: "grid grow place-items-center" }, Va = { class: "flex flex-col items-center space-y-6 p-8" }, Pa = { class: "mt-2 text-center text-4xl font-medium text-red-600" }, Ta = { class: "mt-4 flex flex-col space-y-4" }, Ia = /* @__PURE__ */ g({
2475
+ __name: "StartupCrash",
2229
2476
  setup(t) {
2230
- return (r, e) => (u(), _("div", Mn, [
2231
- r.$errors.hasStartupErrors ? y(r.$slots, "startup-crash", { key: 0 }, () => [
2232
- (u(), g(te(r.$ui.requireComponent(c(C).StartupCrash))))
2233
- ]) : y(r.$slots, "default", { key: 1 }),
2234
- m(Cn)
2477
+ return (s, e) => (l(), v("div", Ha, [
2478
+ y("div", Va, [
2479
+ y("h1", Pa, $(s.$td("startupCrash.title", "Something went wrong!")), 1),
2480
+ m(z, {
2481
+ text: s.$td(
2482
+ "startupCrash.message",
2483
+ `Something failed trying to start the application.
2484
+
2485
+ Here's some things you can do:`
2486
+ ),
2487
+ class: "mt-4 text-center"
2488
+ }, null, 8, ["text"]),
2489
+ y("div", Ta, [
2490
+ m(I, {
2491
+ variant: "danger",
2492
+ onClick: e[0] || (e[0] = (r) => s.$app.reload())
2493
+ }, {
2494
+ default: f(() => [
2495
+ R($(s.$td("startupCrash.reload", "Try again")), 1)
2496
+ ]),
2497
+ _: 1
2498
+ }),
2499
+ m(I, {
2500
+ variant: "danger",
2501
+ onClick: e[1] || (e[1] = (r) => s.$errors.inspect(s.$errors.startupErrors))
2502
+ }, {
2503
+ default: f(() => [
2504
+ R($(s.$td("startupCrash.inspect", "View error details")), 1)
2505
+ ]),
2506
+ _: 1
2507
+ })
2508
+ ])
2509
+ ])
2235
2510
  ]));
2236
2511
  }
2237
- });
2238
- function Ca() {
2239
- return ht((t, r) => {
2240
- let e;
2241
- return {
2242
- get() {
2243
- return t(), e;
2244
- },
2245
- set(s) {
2246
- e = Or(s), r();
2247
- }
2248
- };
2249
- });
2250
- }
2251
- const En = {
2252
- viewBox: "0 0 20 20",
2253
- width: "1.2em",
2254
- height: "1.2em"
2255
- };
2256
- function Pn(t, r) {
2257
- return u(), _("svg", En, r[0] || (r[0] = [
2258
- v("path", {
2259
- fill: "currentColor",
2260
- d: "m9.293 12.95l.707.707L15.657 8l-1.414-1.414L10 10.828L5.757 6.586L4.343 8z"
2261
- }, null, -1)
2262
- ]));
2263
- }
2264
- const In = { name: "zondicons-cheveron-down", render: Pn }, at = {
2265
- name: I(),
2266
- label: I(),
2267
- options: pr(),
2268
- noSelectionText: I(),
2269
- optionsText: Ie()
2270
- }, An = ["update:modelValue"];
2271
- function ot() {
2272
- return at;
2273
- }
2274
- function it() {
2275
- return [...An];
2276
- }
2277
- function Ma(t) {
2278
- return Wr(t, at);
2279
- }
2280
- const Hn = /* @__PURE__ */ h({
2281
- __name: "AGHeadlessSelect",
2512
+ }), gt = /* @__PURE__ */ g({
2513
+ __name: "HeadlessToastAction",
2282
2514
  props: {
2283
- modelValue: Ie(),
2284
- ...ot()
2515
+ action: {}
2285
2516
  },
2286
- emits: it(),
2287
- setup(t, { expose: r, emit: e }) {
2288
- const s = e, n = t, a = d(() => typeof n.optionsText == "function" ? n.optionsText : typeof n.optionsText == "string" ? (S) => B(S[n.optionsText]) : (S) => B(S)), i = X("form", null), o = d(() => n.noSelectionText ?? $("select.noSelection", "-")), l = d(
2289
- () => i && n.name ? i.getFieldValue(n.name) : n.modelValue
2290
- ), p = d(() => !i || !n.name ? null : i.errors[n.name] ?? null);
2291
- function w(S) {
2292
- if (i && n.name) {
2293
- i.setFieldValue(n.name, S);
2294
- return;
2295
- }
2296
- s("update:modelValue", S);
2297
- }
2298
- const M = {
2299
- id: `select-${de()}`,
2300
- noSelectionText: o,
2301
- selectedOption: l,
2302
- errors: p,
2303
- options: d(() => n.options),
2304
- label: d(() => n.label),
2305
- buttonText: d(() => l.value === null ? o.value : a.value(l.value)),
2306
- renderText: a,
2307
- update: w
2308
- };
2309
- return fe("select", M), r(M), (S, D) => (u(), g(c(Dt), {
2310
- "model-value": l.value,
2311
- "onUpdate:modelValue": D[0] || (D[0] = (F) => w(F))
2517
+ setup(t) {
2518
+ return (s, e) => (l(), h(O(s.action.dismiss ? i(ps) : "button"), {
2519
+ type: "button",
2520
+ onClick: s.action.click
2312
2521
  }, {
2313
- default: f(({ open: F }) => [
2314
- y(S.$slots, "default", {
2315
- modelValue: t.modelValue,
2316
- open: F
2317
- })
2522
+ default: f(() => [
2523
+ R($(s.action.label), 1)
2318
2524
  ]),
2319
- _: 3
2320
- }, 8, ["model-value"]));
2525
+ _: 1
2526
+ }, 8, ["onClick"]));
2321
2527
  }
2322
- }), Ln = /* @__PURE__ */ h({
2323
- __name: "AGHeadlessSelectTrigger",
2324
- props: { textClass: I() },
2528
+ }), Aa = { key: 0 }, Ra = /* @__PURE__ */ g({
2529
+ __name: "HeadlessToast",
2530
+ props: {
2531
+ message: {},
2532
+ actions: {},
2533
+ variant: {}
2534
+ },
2325
2535
  setup(t) {
2326
- const r = V(
2327
- "select",
2328
- "<AGHeadlessSelectTrigger> must be a child of a <AGHeadlessSelect>"
2329
- );
2330
- return (e, s) => (u(), g(c(Ft), null, {
2536
+ return (s, e) => (l(), h(i(ms), null, {
2331
2537
  default: f(() => [
2332
- m(c(Ut), null, {
2333
- default: f(() => [
2334
- y(e.$slots, "default", {}, () => {
2335
- var n;
2336
- return [
2337
- v("span", {
2338
- class: L(t.textClass)
2339
- }, k((n = c(r)) == null ? void 0 : n.buttonText), 3)
2340
- ];
2341
- }),
2342
- y(e.$slots, "icon")
2343
- ]),
2344
- _: 3
2345
- })
2538
+ w(s.$slots, "default", {}, () => [
2539
+ s.message ? (l(), v("span", Aa, $(s.message), 1)) : M("", !0),
2540
+ (l(!0), v(D, null, F(s.actions, (r, a) => (l(), h(gt, {
2541
+ key: a,
2542
+ action: r
2543
+ }, null, 8, ["action"]))), 128))
2544
+ ])
2346
2545
  ]),
2347
2546
  _: 3
2348
2547
  }));
2349
2548
  }
2350
- }), Tn = ["id"], Rn = /* @__PURE__ */ h({
2351
- __name: "AGHeadlessSelectError",
2352
- setup(t) {
2353
- const r = V(
2354
- "select",
2355
- "<AGHeadlessSelectError> must be a child of a <AGHeadlessSelect>"
2356
- ), e = d(() => r.errors ? $(`errors.${r.errors[0]}`, `Error: ${r.errors[0]}`) : null);
2357
- return (s, n) => e.value ? (u(), _("p", {
2358
- key: 0,
2359
- id: `${c(r).id}-error`
2360
- }, k(e.value), 9, Tn)) : E("", !0);
2361
- }
2362
- }), jn = /* @__PURE__ */ h({
2363
- __name: "AGHeadlessSelectOption",
2549
+ }), za = /* @__PURE__ */ g({
2550
+ __name: "Toast",
2364
2551
  props: {
2365
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
2366
- value: mr(),
2367
- selectedClass: I(),
2368
- unselectedClass: I(),
2369
- activeClass: I(),
2370
- inactiveClass: I()
2552
+ message: {},
2553
+ actions: {},
2554
+ variant: { default: "secondary" },
2555
+ class: {}
2371
2556
  },
2372
2557
  setup(t) {
2373
- const r = V(
2374
- "select",
2375
- "<AGHeadlessSelectOption> must be a child of a <AGHeadlessSelect>"
2558
+ const s = Ye(
2559
+ { baseClasses: t.class, variant: t.variant },
2560
+ {
2561
+ baseClasses: "flex items-center gap-2 rounded-md p-2 ring-1 shadow-lg border-gray-200",
2562
+ variants: {
2563
+ variant: {
2564
+ secondary: "bg-gray-900 text-white ring-black",
2565
+ danger: "bg-red-50 text-red-900 ring-red-100"
2566
+ }
2567
+ },
2568
+ defaultVariants: {
2569
+ variant: "secondary"
2570
+ }
2571
+ }
2376
2572
  );
2377
- return (e, s) => (u(), g(c(Gt), {
2378
- value: t.value,
2379
- as: "template"
2573
+ return (e, r) => (l(), h(Ra, {
2574
+ class: L(i(s))
2380
2575
  }, {
2381
2576
  default: f(() => [
2382
- m(c(Nt), null, {
2383
- default: f(() => [
2384
- y(e.$slots, "default", {}, () => [
2385
- q(k(c(r).renderText(t.value)), 1)
2386
- ])
2387
- ]),
2388
- _: 3
2389
- })
2577
+ e.message ? (l(), h(z, {
2578
+ key: 0,
2579
+ text: e.message,
2580
+ inline: ""
2581
+ }, null, 8, ["text"])) : M("", !0),
2582
+ (l(!0), v(D, null, F(e.actions, (a, n) => (l(), h(I, {
2583
+ key: n,
2584
+ action: a,
2585
+ variant: e.variant,
2586
+ as: gt
2587
+ }, null, 8, ["action", "variant"]))), 128))
2390
2588
  ]),
2391
- _: 3
2392
- }, 8, ["value"]));
2589
+ _: 1
2590
+ }, 8, ["class"]));
2393
2591
  }
2394
- }), Vn = /* @__PURE__ */ h({
2395
- __name: "AGHeadlessSelectOptions",
2396
- props: { class: I("") },
2397
- setup(t) {
2398
- const r = t, e = d(() => r.class);
2399
- return (s, n) => (u(), g(c(Wt), null, {
2400
- default: f(() => [
2401
- m(c(Ot), {
2402
- class: L(e.value)
2403
- }, {
2404
- default: f(() => [
2405
- m(c(Kt), null, {
2406
- default: f(() => [
2407
- y(s.$slots, "default")
2408
- ]),
2409
- _: 3
2410
- })
2411
- ]),
2412
- _: 3
2413
- }, 8, ["class"])
2414
- ]),
2415
- _: 3
2416
- }));
2592
+ }), ja = { $ui: A }, Ba = {
2593
+ async install(t, s) {
2594
+ const e = {
2595
+ [E.AlertModal]: Mr,
2596
+ [E.ConfirmModal]: jr,
2597
+ [E.ErrorReportModal]: pa,
2598
+ [E.LoadingModal]: _a,
2599
+ [E.PromptModal]: La,
2600
+ [E.Toast]: za,
2601
+ [E.StartupCrash]: Ia
2602
+ };
2603
+ Object.entries({
2604
+ ...e,
2605
+ ...s.components
2606
+ }).forEach(([r, a]) => A.registerComponent(r, a)), await ge(t, ja);
2417
2607
  }
2418
- }), zn = { class: "pointer-events-none absolute inset-y-0 right-0 flex items-center pr-2" }, Ea = /* @__PURE__ */ h({
2419
- __name: "AGSelect",
2420
- props: ot(),
2421
- emits: it(),
2608
+ };
2609
+ async function Da(t, s = {}) {
2610
+ var r;
2611
+ const e = [vr, As, Xs, gr, Ds, Ba, ...s.plugins ?? []];
2612
+ j.instance = t, await Hs(e, t, s), await ((r = s.install) == null ? void 0 : r.call(s, t)), await k.emit("application-ready");
2613
+ }
2614
+ async function Pn(t, s = {}) {
2615
+ var r;
2616
+ const e = Mt(t);
2617
+ X() && (window.$aerogel = e), await Da(e, s), e.mount("#app"), (r = e._container) == null || r.classList.remove("loading"), await k.emit("application-mounted");
2618
+ }
2619
+ const qa = { key: 0 }, Fa = /* @__PURE__ */ g({
2620
+ __name: "AppModals",
2422
2621
  setup(t) {
2423
- const r = t, e = Pe();
2424
- return (s, n) => (u(), g(Hn, H(r, {
2425
- ref_key: "$select",
2426
- ref: e,
2427
- as: "div",
2428
- "onUpdate:modelValue": n[0] || (n[0] = (a) => s.$emit("update:modelValue", a))
2429
- }), {
2430
- default: f(() => {
2431
- var a, i;
2432
- return [
2433
- v("div", {
2434
- class: L(["relative", { "mt-2": (a = c(e)) == null ? void 0 : a.label }])
2435
- }, [
2436
- m(Ln, {
2437
- class: L(["relative w-full cursor-default bg-white py-1.5 pr-10 pl-3 text-left text-gray-900 ring-1 ring-gray-300 ring-inset focus:ring-2 focus:ring-indigo-600 focus:outline-hidden", {
2438
- "ring-1 ring-red-500": (i = c(e)) == null ? void 0 : i.errors
2439
- }]),
2440
- "text-class": "block truncate"
2441
- }, {
2442
- icon: f(() => [
2443
- v("span", zn, [
2444
- m(c(In), { class: "size-5 text-gray-400" })
2445
- ])
2446
- ]),
2447
- _: 1
2448
- }, 8, ["class"]),
2449
- m(Vn, { class: "absolute z-10 mt-1 max-h-60 w-full overflow-auto border border-gray-300 bg-white py-1 text-base ring-1 ring-black/5 focus:outline-hidden" }, {
2450
- default: f(() => {
2451
- var o;
2452
- return [
2453
- (u(!0), _(ee, null, ie(((o = c(e)) == null ? void 0 : o.options) ?? [], (l, p) => (u(), g(jn, {
2454
- key: p,
2455
- value: l,
2456
- class: "relative block cursor-default truncate py-2 pr-9 pl-3 text-gray-900 select-none data-[highlighted]:bg-indigo-600 data-[highlighted]:text-white data-[state=checked]:font-semibold data-[state=unchecked]:font-normal"
2457
- }, null, 8, ["value"]))), 128))
2458
- ];
2459
- }),
2460
- _: 1
2461
- })
2462
- ], 2),
2463
- m(Rn, { class: "mt-2 text-sm text-red-600" })
2464
- ];
2465
- }),
2466
- _: 1
2467
- }, 16));
2622
+ const s = p(() => A.modals[0] ?? null);
2623
+ return (e, r) => s.value ? (l(), v("aside", qa, [
2624
+ m(ct, {
2625
+ "child-index": 1,
2626
+ modal: s.value
2627
+ }, null, 8, ["modal"])
2628
+ ])) : M("", !0);
2468
2629
  }
2469
- });
2470
- function Pa(t, r) {
2471
- const e = X("form", null), s = e == null ? void 0 : e.on("focus", (n) => t.name === n && r());
2472
- oe(() => s == null ? void 0 : s());
2473
- }
2474
- const Ia = /* @__PURE__ */ h({
2475
- __name: "HeadlessInput",
2476
- props: {
2477
- name: {},
2478
- label: {},
2479
- description: {},
2480
- modelValue: {},
2481
- as: { default: "div" }
2482
- },
2483
- emits: ["update:modelValue"],
2484
- setup(t, { expose: r, emit: e }) {
2485
- const s = e, n = X("form", null), a = d(() => !n || !t.name ? null : n.errors[t.name] ?? null), i = {
2486
- id: `input-${de()}`,
2487
- name: d(() => t.name),
2488
- label: d(() => t.label),
2489
- description: d(() => t.description),
2490
- value: d(() => n && t.name ? n.getFieldValue(t.name) : t.modelValue),
2491
- errors: De(a),
2492
- required: d(() => {
2493
- if (!(!t.name || !n))
2494
- return n.getFieldRules(t.name).includes("required");
2495
- }),
2496
- update(o) {
2497
- if (n && t.name) {
2498
- n.setFieldValue(t.name, o);
2499
- return;
2500
- }
2501
- s("update:modelValue", o);
2502
- }
2503
- };
2504
- return fe("input", i), r(i), (o, l) => (u(), g(te(o.as), null, {
2630
+ }), Ua = /* @__PURE__ */ g({
2631
+ __name: "AppToasts",
2632
+ setup(t) {
2633
+ return (s, e) => (l(), h(i(fs), null, {
2505
2634
  default: f(() => [
2506
- y(o.$slots, "default")
2635
+ (l(!0), v(D, null, F(s.$ui.toasts, (r) => (l(), h(O(r.component), T({
2636
+ id: r.id,
2637
+ key: r.id,
2638
+ ref_for: !0
2639
+ }, r.properties), null, 16, ["id"]))), 128)),
2640
+ m(i(hs), { class: "fixed right-0 bottom-0 z-50 flex flex-col items-end space-y-4 px-4 py-6 sm:p-6" })
2507
2641
  ]),
2508
- _: 3
2642
+ _: 1
2509
2643
  }));
2510
2644
  }
2511
- }), Aa = /* @__PURE__ */ h({
2512
- inheritAttrs: !1,
2513
- __name: "HeadlessInputDescription",
2514
- setup(t) {
2515
- const r = V(
2516
- "input",
2517
- "<HeadlessInputDescription> must be a child of a <HeadlessInput>"
2518
- ), e = d(() => typeof r.description == "string" ? r.description : ""), s = d(() => !!r.description);
2519
- return (n, a) => y(n.$slots, "default", {
2520
- id: `${c(r).id}-description`
2521
- }, () => [
2522
- s.value ? (u(), g(R, H({ key: 0 }, n.$attrs, {
2523
- id: `${c(r).id}-description`,
2524
- text: e.value
2525
- }), null, 16, ["id", "text"])) : E("", !0)
2526
- ]);
2527
- }
2528
- }), qn = ["id"], Ha = /* @__PURE__ */ h({
2529
- __name: "HeadlessInputError",
2645
+ }), Na = /* @__PURE__ */ g({
2646
+ __name: "AppOverlays",
2530
2647
  setup(t) {
2531
- const r = V("input", "<HeadlessInputError> must be a child of a <HeadlessInput>"), e = d(() => r.errors ? $(`errors.${r.errors[0]}`, `Error: ${r.errors[0]}`) : null);
2532
- return (s, n) => e.value ? (u(), _("p", {
2533
- key: 0,
2534
- id: `${c(r).id}-error`
2535
- }, k(e.value), 9, qn)) : E("", !0);
2648
+ const s = H(null), e = H(!0);
2649
+ return se("show-overlays-backdrop", async () => {
2650
+ !s.value || !e.value || (e.value = !1, s.value.classList.remove("opacity-0"));
2651
+ }), se("hide-overlays-backdrop", async () => {
2652
+ !s.value || e.value || (e.value = !0, s.value.classList.add("opacity-0"));
2653
+ }), (r, a) => (l(), v(D, null, [
2654
+ m(Fa),
2655
+ m(Ua)
2656
+ ], 64));
2536
2657
  }
2537
- }), Bn = ["id", "name", "type", "required", "aria-invalid", "aria-describedby", "checked"], La = /* @__PURE__ */ h({
2538
- __name: "HeadlessInputInput",
2539
- props: {
2540
- type: { default: "text" }
2541
- },
2542
- setup(t) {
2543
- const r = A(), e = V("input", "<HeadlessInputInput> must be a child of a <HeadlessInput>"), s = d(() => e.name ?? void 0), n = d(() => e.value), a = d(() => {
2544
- if (t.type === "checkbox")
2545
- return !!n.value;
2546
- });
2547
- function i() {
2548
- r.value && e.update(o());
2549
- }
2550
- function o() {
2551
- if (!r.value)
2552
- return null;
2553
- switch (t.type) {
2554
- case "checkbox":
2555
- return r.value.checked;
2556
- case "date":
2557
- return r.value.valueAsDate;
2558
- default:
2559
- return r.value.value;
2560
- }
2561
- }
2562
- return Ye(e, () => {
2563
- var l;
2564
- return (l = r.value) == null ? void 0 : l.focus();
2565
- }), Be(() => {
2566
- if (r.value) {
2567
- if (t.type === "date") {
2568
- r.value.valueAsDate = n.value;
2569
- return;
2570
- }
2571
- r.value.value = n.value ?? null;
2572
- }
2573
- }), (l, p) => (u(), _("input", {
2574
- id: c(e).id,
2575
- ref_key: "$input",
2576
- ref: r,
2577
- name: s.value,
2578
- type: l.type,
2579
- required: c(e).required ?? void 0,
2580
- "aria-invalid": c(e).errors ? "true" : "false",
2581
- "aria-describedby": c(e).errors ? `${c(e).id}-error` : c(e).description ? `${c(e).id}-description` : void 0,
2582
- checked: a.value,
2583
- onInput: i
2584
- }, null, 40, Bn));
2585
- }
2586
- }), Dn = ["for"], Ta = /* @__PURE__ */ h({
2587
- __name: "HeadlessInputLabel",
2658
+ }), Oa = { class: "flex min-h-full flex-col text-base leading-tight font-normal text-gray-900 antialiased" }, Tn = /* @__PURE__ */ g({
2659
+ __name: "AppLayout",
2588
2660
  setup(t) {
2589
- const r = V("input", "<HeadlessInputLabel> must be a child of a <HeadlessInput>"), e = gt(), s = d(() => !!(r.label || e.default));
2590
- return (n, a) => s.value ? (u(), _("label", {
2591
- key: 0,
2592
- for: c(r).id
2593
- }, [
2594
- y(n.$slots, "default", {}, () => [
2595
- q(k(c(r).label), 1)
2596
- ])
2597
- ], 8, Dn)) : E("", !0);
2661
+ return (s, e) => (l(), v("div", Oa, [
2662
+ s.$errors.hasStartupErrors ? w(s.$slots, "startup-crash", { key: 0 }, () => [
2663
+ (l(), h(O(s.$ui.requireComponent(i(E).StartupCrash))))
2664
+ ]) : w(s.$slots, "default", { key: 1 }),
2665
+ m(Na)
2666
+ ]));
2598
2667
  }
2599
- }), Fn = ["id", "name", "required", "value", "aria-invalid", "aria-describedby"], Ra = /* @__PURE__ */ h({
2668
+ }), Wa = ["id", "name", "value", "required", "aria-invalid", "aria-describedby"], In = /* @__PURE__ */ g({
2600
2669
  __name: "HeadlessInputTextArea",
2601
2670
  setup(t) {
2602
- const r = A(), e = V(
2671
+ const s = H(), e = V(
2603
2672
  "input",
2604
2673
  "<HeadlessInputTextArea> must be a child of a <HeadlessInput>"
2605
- ), s = d(() => e.name ?? void 0), n = d(() => e.value);
2606
- function a() {
2607
- r.value && e.update(r.value.value);
2674
+ ), r = p(() => e.name ?? void 0), a = p(() => e.value);
2675
+ function n() {
2676
+ s.value && e.update(s.value.value);
2608
2677
  }
2609
- return Ye(e, () => {
2610
- var i;
2611
- return (i = r.value) == null ? void 0 : i.focus();
2612
- }), (i, o) => (u(), _("textarea", {
2613
- id: c(e).id,
2678
+ return et(e, () => {
2679
+ var o;
2680
+ return (o = s.value) == null ? void 0 : o.focus();
2681
+ }), (o, c) => (l(), v("textarea", {
2682
+ id: i(e).id,
2614
2683
  ref_key: "$textArea",
2615
- ref: r,
2616
- name: s.value,
2617
- required: c(e).required ?? void 0,
2618
- value: n.value,
2619
- "aria-invalid": c(e).errors ? "true" : "false",
2620
- "aria-describedby": c(e).errors ? `${c(e).id}-error` : c(e).description ? `${c(e).id}-description` : void 0,
2621
- onInput: a
2622
- }, null, 40, Fn));
2623
- }
2624
- }), ja = /* @__PURE__ */ h({
2625
- __name: "AGErrorMessage",
2626
- props: { error: fr() },
2684
+ ref: s,
2685
+ name: r.value,
2686
+ value: a.value,
2687
+ required: i(e).required ?? void 0,
2688
+ "aria-invalid": i(e).errors ? "true" : "false",
2689
+ "aria-describedby": i(e).errors ? `${i(e).id}-error` : i(e).description ? `${i(e).id}-description` : void 0,
2690
+ onInput: n
2691
+ }, null, 40, Wa));
2692
+ }
2693
+ }), Ka = { class: "group" }, Ja = { class: "-ml-2 flex w-[max-content] cursor-pointer items-center rounded-lg py-2 pr-3 pl-1 hover:bg-gray-100 focus-visible:outline focus-visible:outline-gray-700" }, Qa = { class: "pt-2 pl-4" }, An = /* @__PURE__ */ g({
2694
+ __name: "AdvancedOptions",
2627
2695
  setup(t) {
2628
- const r = t, e = d(() => Ir(r.error));
2629
- return (s, n) => (u(), g(R, {
2630
- text: e.value,
2631
- inline: ""
2632
- }, null, 8, ["text"]));
2633
- }
2634
- }), Va = /* @__PURE__ */ h({
2635
- __name: "AGMeasured",
2636
- props: { as: I("span") },
2637
- setup(t) {
2638
- const r = A(!1);
2639
- return (e, s) => {
2640
- const n = vt("measure");
2641
- return Fe((u(), g(te(t.as), {
2642
- class: L({ "invisible! absolute! w-auto!": !r.value })
2643
- }, {
2644
- default: f(() => [
2645
- y(e.$slots, "default")
2646
- ]),
2647
- _: 3
2648
- }, 8, ["class"])), [
2649
- [n, () => r.value = !0]
2650
- ]);
2651
- };
2696
+ return (s, e) => (l(), v("details", Ka, [
2697
+ y("summary", Ja, [
2698
+ m(i(pt), { class: "size-6 transition-transform group-open:rotate-90" }),
2699
+ y("span", null, $(s.$td("ui.advancedOptions", "Advanced options")), 1)
2700
+ ]),
2701
+ y("div", Qa, [
2702
+ w(s.$slots, "default")
2703
+ ])
2704
+ ]));
2652
2705
  }
2653
- }), Un = { class: "flex h-6 items-center" }, Gn = {
2654
- key: 0,
2655
- class: "ml-2 text-sm leading-6"
2656
- }, Nn = {
2657
- key: 1,
2658
- class: "ml-2 text-sm leading-6"
2659
- }, za = /* @__PURE__ */ h({
2706
+ }), Za = { class: "flex h-6 items-center" }, Rn = /* @__PURE__ */ g({
2660
2707
  inheritAttrs: !1,
2661
2708
  __name: "Checkbox",
2662
2709
  props: {
@@ -2664,58 +2711,181 @@ const Ia = /* @__PURE__ */ h({
2664
2711
  label: {},
2665
2712
  description: {},
2666
2713
  modelValue: {},
2667
- inputClass: {}
2714
+ inputClass: {},
2715
+ labelClass: {}
2668
2716
  },
2669
2717
  emits: ["update:modelValue"],
2670
2718
  setup(t) {
2671
- const r = Y(t, ["inputClass"]), e = Pe(), [s, n] = nt(), a = d(() => N("relative flex items-start", n.value)), i = d(() => {
2672
- var o, l;
2673
- return N(
2719
+ const s = Y(t, ["inputClass", "labelClass"]), e = Ee("$input"), [r, a] = tt(), n = p(() => P("relative flex items-start", a.value)), o = p(() => {
2720
+ var u, d;
2721
+ return P(
2674
2722
  "size-4 rounded text-primary hover:bg-gray-200 checked:hover:bg-primary/80 checked:border-0",
2675
2723
  {
2676
- "border-gray-300 focus:ring-primary": !((o = e.value) != null && o.errors),
2677
- "border-red-400 border-2 focus:ring-red-600": (l = e.value) == null ? void 0 : l.errors
2724
+ "border-gray-300 focus:ring-primary": !((u = e.value) != null && u.errors),
2725
+ "border-red-400 border-2 focus:ring-red-600": (d = e.value) == null ? void 0 : d.errors
2678
2726
  },
2679
2727
  t.inputClass
2680
2728
  );
2681
- });
2682
- return (o, l) => {
2683
- const p = j("HeadlessInputInput"), w = j("HeadlessInputLabel"), M = j("HeadlessInputError"), S = j("HeadlessInput");
2684
- return u(), g(S, H({
2685
- ref_key: "$input",
2686
- ref: e,
2687
- class: a.value
2688
- }, r, {
2689
- "onUpdate:modelValue": l[0] || (l[0] = (D) => o.$emit("update:modelValue", D))
2690
- }), {
2691
- default: f(() => [
2692
- v("div", Un, [
2693
- m(p, H(c(s), {
2694
- type: "checkbox",
2695
- class: i.value
2696
- }), null, 16, ["class"])
2729
+ }), c = p(() => P("ml-2 text-sm leading-6", t.labelClass));
2730
+ return (u, d) => (l(), h(ft, T({
2731
+ ref_key: "$input",
2732
+ ref: e,
2733
+ class: n.value
2734
+ }, s, {
2735
+ "onUpdate:modelValue": d[0] || (d[0] = (b) => u.$emit("update:modelValue", b))
2736
+ }), {
2737
+ default: f(() => [
2738
+ y("div", Za, [
2739
+ m(ht, T(i(r), {
2740
+ type: "checkbox",
2741
+ class: o.value
2742
+ }), null, 16, ["class"])
2743
+ ]),
2744
+ u.$slots.default ? (l(), v("div", {
2745
+ key: 0,
2746
+ class: L(c.value)
2747
+ }, [
2748
+ m(xe, { class: "text-gray-900" }, {
2749
+ default: f(() => [
2750
+ w(u.$slots, "default")
2751
+ ]),
2752
+ _: 3
2753
+ }),
2754
+ m(Ce, { class: "text-red-600" })
2755
+ ], 2)) : u.label ? (l(), v("div", {
2756
+ key: 1,
2757
+ class: L(c.value)
2758
+ }, [
2759
+ m(xe, { class: "text-gray-900" }),
2760
+ m(Ce, { class: "text-red-600" })
2761
+ ], 2)) : M("", !0)
2762
+ ]),
2763
+ _: 3
2764
+ }, 16, ["class"]));
2765
+ }
2766
+ }), zn = /* @__PURE__ */ g({
2767
+ __name: "DropdownMenu",
2768
+ props: {
2769
+ align: {},
2770
+ options: {}
2771
+ },
2772
+ setup(t) {
2773
+ return (s, e) => (l(), h(i(gs), null, {
2774
+ default: f(() => [
2775
+ m(i(vs), null, {
2776
+ default: f(() => [
2777
+ w(s.$slots, "default")
2697
2778
  ]),
2698
- o.$slots.default ? (u(), _("div", Gn, [
2699
- m(w, { class: "text-gray-900" }, {
2779
+ _: 3
2780
+ }),
2781
+ m(i(bs), null, {
2782
+ default: f(() => [
2783
+ m(i(ys), {
2784
+ class: "gap-y-0.5 rounded-lg bg-white p-1.5 shadow-lg ring-1 ring-black/5",
2785
+ align: s.align
2786
+ }, {
2700
2787
  default: f(() => [
2701
- y(o.$slots, "default")
2788
+ (l(!0), v(D, null, F(s.options, (r, a) => (l(), h(i(_s), {
2789
+ key: a,
2790
+ class: "flex w-full items-center rounded-lg px-2 py-2 text-sm text-gray-900 data-[highlighted]:bg-gray-100",
2791
+ onSelect: r.click
2792
+ }, {
2793
+ default: f(() => [
2794
+ R($(r.label), 1)
2795
+ ]),
2796
+ _: 2
2797
+ }, 1032, ["onSelect"]))), 128))
2702
2798
  ]),
2703
- _: 3
2704
- }),
2705
- m(M, { class: "text-sm text-red-600" })
2706
- ])) : o.label ? (u(), _("div", Nn, [
2707
- m(w),
2708
- m(M, { class: "text-sm text-red-600" })
2709
- ])) : E("", !0)
2710
- ]),
2711
- _: 3
2712
- }, 16, ["class"]);
2713
- };
2799
+ _: 1
2800
+ }, 8, ["align"])
2801
+ ]),
2802
+ _: 1
2803
+ })
2804
+ ]),
2805
+ _: 3
2806
+ }));
2714
2807
  }
2715
- }), qa = /* @__PURE__ */ h({
2808
+ }), Ga = ["aria-hidden"], Xa = ["tabindex", "aria-label", "type"], jn = /* @__PURE__ */ g({
2809
+ __name: "EditableContent",
2810
+ props: {
2811
+ type: { default: "text" },
2812
+ contentClass: {},
2813
+ ariaLabel: {},
2814
+ formAriaHidden: { type: Boolean },
2815
+ tabindex: {},
2816
+ text: {},
2817
+ disabled: { type: Boolean }
2818
+ },
2819
+ emits: ["update", "save"],
2820
+ setup(t, { emit: s }) {
2821
+ const e = s, r = H(), a = H(null), n = H(t.text), o = p(() => P("inline whitespace-pre", t.contentClass)), c = p(() => P("invisible whitespace-pre", t.contentClass)), u = p(() => P("absolute inset-0 h-full w-full resize-none border-0 bg-transparent p-0 focus:ring-0", t.contentClass));
2822
+ function d() {
2823
+ a.value = t.text;
2824
+ }
2825
+ function b() {
2826
+ a.value && (t.type !== "number" && n.value.trim().length === 0 && (n.value = a.value, e("update", n.value)), a.value = null, e("save"));
2827
+ }
2828
+ return de(() => n.value = t.text), (x, S) => (l(), v("div", {
2829
+ class: L(["relative", { "pointer-events-none!": x.disabled && !a.value }])
2830
+ }, [
2831
+ a.value ? (l(), v("span", {
2832
+ key: 1,
2833
+ class: L(c.value)
2834
+ }, $(n.value), 3)) : (l(), v("div", {
2835
+ key: 0,
2836
+ class: L(o.value)
2837
+ }, [
2838
+ w(x.$slots, "default")
2839
+ ], 2)),
2840
+ x.type === "number" ? (l(), v("span", {
2841
+ key: 2,
2842
+ class: L(["inline-block transition-[width]", a.value ? "w-5" : "w-0"])
2843
+ }, null, 2)) : M("", !0),
2844
+ y("form", {
2845
+ class: "w-full",
2846
+ "aria-hidden": x.formAriaHidden,
2847
+ onSubmit: S[4] || (S[4] = qe((W) => {
2848
+ var Ve;
2849
+ return (Ve = r.value) == null ? void 0 : Ve.blur();
2850
+ }, ["prevent"]))
2851
+ }, [
2852
+ Fe(y("input", {
2853
+ ref_key: "$input",
2854
+ ref: r,
2855
+ "onUpdate:modelValue": S[0] || (S[0] = (W) => n.value = W),
2856
+ tabindex: x.tabindex ?? void 0,
2857
+ "aria-label": x.ariaLabel ?? void 0,
2858
+ type: x.type,
2859
+ class: L([
2860
+ u.value,
2861
+ { "opacity-0": !a.value, "appearance-textfield": !a.value && x.type === "number" }
2862
+ ]),
2863
+ onKeyup: S[1] || (S[1] = (W) => x.$emit("update", n.value)),
2864
+ onFocus: S[2] || (S[2] = (W) => d()),
2865
+ onBlur: S[3] || (S[3] = (W) => b())
2866
+ }, null, 42, Xa), [
2867
+ [Et, n.value]
2868
+ ])
2869
+ ], 40, Ga)
2870
+ ], 2));
2871
+ }
2872
+ }), Bn = /* @__PURE__ */ g({
2873
+ __name: "ErrorMessage",
2874
+ props: {
2875
+ error: {}
2876
+ },
2877
+ setup(t) {
2878
+ const s = p(() => Js(t.error));
2879
+ return (e, r) => (l(), h(z, {
2880
+ text: s.value,
2881
+ inline: ""
2882
+ }, null, 8, ["text"]));
2883
+ }
2884
+ }), Dn = /* @__PURE__ */ g({
2716
2885
  __name: "Link",
2717
2886
  props: {
2718
2887
  class: {},
2888
+ disabled: { type: Boolean },
2719
2889
  href: {},
2720
2890
  route: {},
2721
2891
  routeParams: {},
@@ -2726,39 +2896,51 @@ const Ia = /* @__PURE__ */ h({
2726
2896
  as: {}
2727
2897
  },
2728
2898
  setup(t) {
2729
- const r = t;
2730
- return (e, s) => (u(), g(T, H({ variant: "link" }, r), {
2899
+ return (s, e) => (l(), h(I, T({ variant: "link" }, s.$props), {
2731
2900
  default: f(() => [
2732
- y(e.$slots, "default")
2901
+ w(s.$slots, "default")
2733
2902
  ]),
2734
2903
  _: 3
2735
2904
  }, 16));
2736
2905
  }
2906
+ }), qn = /* @__PURE__ */ g({
2907
+ __name: "SettingsModal",
2908
+ setup(t) {
2909
+ const s = p(() => qt(j.settings, "priority", "desc"));
2910
+ return (e, r) => (l(), h(ee, {
2911
+ title: e.$td("settings.title", "Settings")
2912
+ }, {
2913
+ default: f(() => [
2914
+ (l(!0), v(D, null, F(s.value, (a, n) => (l(), h(O(a.component), { key: n }))), 128))
2915
+ ]),
2916
+ _: 1
2917
+ }, 8, ["title"]));
2918
+ }
2737
2919
  });
2738
- class Ba {
2920
+ class Fn {
2739
2921
  constructor() {
2740
- b(this, "status");
2741
- b(this, "_listeners");
2742
- b(this, "_progress");
2743
- b(this, "_cancelled");
2744
- b(this, "_started");
2745
- b(this, "_completed");
2746
- this.status = this.getInitialStatus(), this._listeners = new Et(), this._started = new W(), this._completed = new W();
2922
+ _(this, "status");
2923
+ _(this, "_listeners");
2924
+ _(this, "_progress");
2925
+ _(this, "_cancelled");
2926
+ _(this, "_started");
2927
+ _(this, "_completed");
2928
+ this.status = this.getInitialStatus(), this._listeners = new Ft(), this._started = new K(), this._completed = new K();
2747
2929
  }
2748
2930
  async start() {
2749
2931
  this.beforeStart(), this._started.resolve();
2750
2932
  try {
2751
2933
  await this.updateProgress(), await this.run(), await this.updateProgress(), this._completed.resolve();
2752
- } catch (r) {
2753
- if (r instanceof je)
2934
+ } catch (s) {
2935
+ if (s instanceof Re)
2754
2936
  return;
2755
- throw K(Pt(r), (e) => {
2937
+ throw Z(Ut(s), (e) => {
2756
2938
  this._completed.reject(e);
2757
2939
  });
2758
2940
  }
2759
2941
  }
2760
2942
  async cancel() {
2761
- this._cancelled = new W(), await this._cancelled;
2943
+ this._cancelled = new K(), await this._cancelled;
2762
2944
  }
2763
2945
  serialize() {
2764
2946
  return this.serializeStatus(this.status);
@@ -2770,8 +2952,8 @@ class Ba {
2770
2952
  return this._progress ?? 0;
2771
2953
  }
2772
2954
  get cancelled() {
2773
- var r;
2774
- return !!((r = this._cancelled) != null && r.isResolved());
2955
+ var s;
2956
+ return !!((s = this._cancelled) != null && s.isResolved());
2775
2957
  }
2776
2958
  get started() {
2777
2959
  return this._started;
@@ -2793,168 +2975,145 @@ class Ba {
2793
2975
  }
2794
2976
  assertNotCancelled() {
2795
2977
  if (this._cancelled)
2796
- throw this._cancelled.resolve(), new je();
2978
+ throw this._cancelled.resolve(), new Re();
2797
2979
  }
2798
- calculateCurrentProgress(r) {
2799
- return r ?? (r = this.status), r.completed ? 1 : r.children ? It(
2800
- r.children.reduce((e, s) => e + this.calculateCurrentProgress(s), 0) / r.children.length,
2980
+ calculateCurrentProgress(s) {
2981
+ return s ?? (s = this.status), s.completed ? 1 : s.children ? Nt(
2982
+ s.children.reduce((e, r) => e + this.calculateCurrentProgress(r), 0) / s.children.length,
2801
2983
  2
2802
2984
  ) : 0;
2803
2985
  }
2804
- async updateProgress(r) {
2805
- await (r == null ? void 0 : r(this.status));
2986
+ async updateProgress(s) {
2987
+ await (s == null ? void 0 : s(this.status));
2806
2988
  const e = this.calculateCurrentProgress();
2807
2989
  e !== this._progress && (this._progress = e, await this._listeners.emit("onUpdated", e));
2808
2990
  }
2809
- serializeStatus(r) {
2810
- return { ...r };
2991
+ serializeStatus(s) {
2992
+ return { ...s };
2811
2993
  }
2812
2994
  }
2813
- async function Da(t) {
2995
+ async function Un(t) {
2814
2996
  await t.start();
2815
2997
  }
2816
- function Fa(t) {
2817
- let r = At;
2818
- _t(() => r = t()), oe(() => r());
2819
- }
2820
- function Ua(t, r) {
2821
- const e = ue(U.get(t) ?? r);
2822
- return Se(e, () => U.set(t, bt(e))), e;
2823
- }
2824
- function Ga(t) {
2825
- return t.split(/\s+/).filter((r) => !/^(hover|focus|focus-visible):/.test(r)).join(" ").trim();
2826
- }
2827
2998
  export {
2828
- ja as AGErrorMessage,
2829
- Hn as AGHeadlessSelect,
2830
- Rn as AGHeadlessSelectError,
2831
- jn as AGHeadlessSelectOption,
2832
- Vn as AGHeadlessSelectOptions,
2833
- Ln as AGHeadlessSelectTrigger,
2834
- qr as AGHeadlessSnackbar,
2835
- R as AGMarkdown,
2836
- Va as AGMeasured,
2837
- Ea as AGSelect,
2838
- Yr as AGSnackbar,
2839
- ns as AGStartupCrash,
2840
- fs as AlertModal,
2841
- G as App,
2842
- ka as AppLayout,
2843
- Cn as AppOverlays,
2844
- ar as AppService,
2845
- T as Button,
2846
- ma as Cache,
2847
- _r as CacheService,
2848
- za as Checkbox,
2849
- ae as Colors,
2850
- ks as ConfirmModal,
2851
- en as ErrorReportModal,
2852
- Ns as ErrorReportModalButtons,
2853
- Ws as ErrorReportModalTitle,
2854
- Ze as Errors,
2855
- na as EventListenerPriorities,
2856
- x as Events,
2857
- sr as EventsService,
2858
- tt as Form,
2859
- vs as FormController,
2860
- z as FormFieldTypes,
2861
- Gr as HeadlessButton,
2862
- Ia as HeadlessInput,
2863
- Aa as HeadlessInputDescription,
2864
- Ha as HeadlessInputError,
2865
- La as HeadlessInputInput,
2866
- Ta as HeadlessInputLabel,
2867
- Ra as HeadlessInputTextArea,
2868
- ls as HeadlessModal,
2869
- cs as HeadlessModalContent,
2870
- us as HeadlessModalOverlay,
2871
- ds as HeadlessModalTitle,
2872
- dn as Input,
2873
- Ba as Job,
2874
- je as JobCancelledError,
2875
- ne as Lang,
2876
- me as Layouts,
2877
- qa as Link,
2878
- cn as LoadingModal,
2879
- Ke as MOBILE_BREAKPOINT,
2880
- le as Modal,
2881
- et as ModalContext,
2882
- on as ProgressBar,
2883
- fn as PromptModal,
2884
- ve as Service,
2885
- xe as ServiceBootError,
2886
- Br as SnackbarColors,
2887
- yr as Storage,
2888
- P as UI,
2889
- C as UIComponents,
2890
- Sr as UIService,
2891
- ir as arrayProp,
2892
- va as booleanInput,
2893
- lr as booleanProp,
2894
- _e as bootServices,
2895
- Sa as bootstrap,
2896
- vn as bootstrapApplication,
2897
- Pe as componentRef,
2898
- oa as computedAsync,
2899
- _a as dateInput,
2900
- ia as defineDirective,
2901
- ga as defineFormValidationRule,
2902
- aa as definePlugin,
2903
- ge as defineServiceState,
2904
- rr as defineServiceStore,
2905
- Da as dispatch,
2906
- Ca as elementRef,
2907
- cr as enumProp,
2908
- Ma as extractSelectProps,
2999
+ An as AdvancedOptions,
3000
+ Mr as AlertModal,
3001
+ j as App,
3002
+ Tn as AppLayout,
3003
+ Fa as AppModals,
3004
+ Na as AppOverlays,
3005
+ Ls as AppService,
3006
+ Ua as AppToasts,
3007
+ I as Button,
3008
+ vn as Cache,
3009
+ Rs as CacheService,
3010
+ Rn as Checkbox,
3011
+ jr as ConfirmModal,
3012
+ zn as DropdownMenu,
3013
+ jn as EditableContent,
3014
+ Bn as ErrorMessage,
3015
+ pa as ErrorReportModal,
3016
+ ra as ErrorReportModalButtons,
3017
+ aa as ErrorReportModalTitle,
3018
+ Ge as Errors,
3019
+ pn as EventListenerPriorities,
3020
+ k as Events,
3021
+ Ms as EventsService,
3022
+ ut as Form,
3023
+ Hr as FormController,
3024
+ q as FormFieldTypes,
3025
+ rr as HeadlessButton,
3026
+ ft as HeadlessInput,
3027
+ xa as HeadlessInputDescription,
3028
+ Ce as HeadlessInputError,
3029
+ ht as HeadlessInputInput,
3030
+ xe as HeadlessInputLabel,
3031
+ In as HeadlessInputTextArea,
3032
+ wr as HeadlessModal,
3033
+ $r as HeadlessModalContent,
3034
+ xr as HeadlessModalOverlay,
3035
+ Cr as HeadlessModalTitle,
3036
+ nr as HeadlessSelect,
3037
+ ze as HeadlessSelectLabel,
3038
+ at as HeadlessSelectOption,
3039
+ nt as HeadlessSelectOptions,
3040
+ rt as HeadlessSelectTrigger,
3041
+ st as HeadlessSelectValue,
3042
+ Ra as HeadlessToast,
3043
+ ka as Input,
3044
+ Fn as Job,
3045
+ Re as JobCancelledError,
3046
+ Q as Lang,
3047
+ ce as Layouts,
3048
+ Dn as Link,
3049
+ _a as LoadingModal,
3050
+ Je as MOBILE_BREAKPOINT,
3051
+ z as Markdown,
3052
+ ee as Modal,
3053
+ ct as ModalContext,
3054
+ ba as ProgressBar,
3055
+ La as PromptModal,
3056
+ dr as Select,
3057
+ ot as SelectLabel,
3058
+ lt as SelectOptions,
3059
+ it as SelectTrigger,
3060
+ he as Service,
3061
+ $e as ServiceBootError,
3062
+ qn as SettingsModal,
3063
+ Ia as StartupCrash,
3064
+ js as Storage,
3065
+ za as Toast,
3066
+ A as UI,
3067
+ E as UIComponents,
3068
+ Fs as UIService,
3069
+ Sn as booleanInput,
3070
+ ge as bootServices,
3071
+ Pn as bootstrap,
3072
+ Da as bootstrapApplication,
3073
+ P as classes,
3074
+ $n as computedAsync,
3075
+ xn as computedDebounce,
3076
+ Ye as computedVariantClasses,
3077
+ kn as dateInput,
3078
+ hn as defineDirective,
3079
+ Cn as defineFormValidationRule,
3080
+ fn as definePlugin,
3081
+ fe as defineServiceState,
3082
+ ks as defineServiceStore,
3083
+ mn as defineSettings,
3084
+ Un as dispatch,
2909
3085
  Qe as getCurrentLayout,
2910
- Ir as getErrorMessage,
2911
- tr as getPiniaStore,
2912
- la as injectOrFail,
2913
- ur as injectReactive,
3086
+ Js as getErrorMessage,
3087
+ Ss as getPiniaStore,
3088
+ ar as hasSelectOptionLabel,
3089
+ gn as injectOrFail,
3090
+ Ps as injectReactive,
2914
3091
  V as injectReactiveOrFail,
2915
- or as installPlugins,
2916
- ca as listenerProp,
2917
- Ie as mixedProp,
2918
- $a as numberInput,
2919
- ua as numberProp,
2920
- dr as objectProp,
2921
- Fa as onCleanMounted,
2922
- Pa as onFormFocus,
2923
- Ua as persistent,
2924
- ha as registerErrorHandler,
2925
- Ga as removeInteractiveClasses,
2926
- Zr as renderMarkdown,
2927
- fa as replaceExisting,
2928
- pr as requiredArrayProp,
2929
- ba as requiredBooleanInput,
2930
- ya as requiredDateInput,
2931
- da as requiredEnumProp,
2932
- mr as requiredMixedProp,
2933
- wa as requiredNumberInput,
2934
- pa as requiredNumberProp,
2935
- fr as requiredObjectProp,
2936
- _s as requiredStringInput,
2937
- Re as requiredStringProp,
2938
- er as resetPiniaStore,
2939
- Xr as safeHtml,
2940
- An as selectEmits,
2941
- at as selectProps,
2942
- Dr as snackbarProps,
2943
- xa as stringInput,
2944
- I as stringProp,
2945
- Je as translate,
2946
- $ as translateWithDefault,
2947
- bs as useConfirmModal,
3092
+ Hs as installPlugins,
3093
+ Hn as numberInput,
3094
+ _n as onCleanMounted,
3095
+ et as onFormFocus,
3096
+ wn as persistent,
3097
+ yn as registerErrorHandler,
3098
+ tr as renderMarkdown,
3099
+ Ke as renderVNode,
3100
+ bn as replaceExisting,
3101
+ Mn as requiredBooleanInput,
3102
+ En as requiredDateInput,
3103
+ Ln as requiredNumberInput,
3104
+ Vr as requiredStringInput,
3105
+ Cs as resetPiniaStore,
3106
+ sr as safeHtml,
3107
+ Vn as stringInput,
3108
+ Ze as translate,
3109
+ C as translateWithDefault,
3110
+ Pr as useConfirmModal,
2948
3111
  se as useEvent,
2949
- rt as useForm,
2950
- nt as useInputAttrs,
2951
- ln as useLoadingModal,
2952
- pn as usePromptModal,
2953
- it as useSelectEmits,
2954
- ot as useSelectProps,
2955
- Ur as useSnackbar,
2956
- Fr as useSnackbarProps,
2957
- gs as validate,
2958
- ce as validators
3112
+ dt as useForm,
3113
+ tt as useInputAttrs,
3114
+ ya as useLoadingModal,
3115
+ Ma as usePromptModal,
3116
+ Lr as validate,
3117
+ le as validators
2959
3118
  };
2960
3119
  //# sourceMappingURL=aerogel-core.js.map