appsalutely 0.1.8 → 0.1.12

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.
@@ -1,173 +1,171 @@
1
1
  (function(){"use strict";try{if(typeof document<"u"){var e=document.createElement("style");e.appendChild(document.createTextNode("html{overflow:auto}html[data-theme=dark]{color-scheme:dark}html[data-theme=light]{color-scheme:light}")),document.head.appendChild(e)}}catch(t){console.error("vite-plugin-css-injected-by-js",t)}})();
2
- import { ref as b, watch as M, computed as F, defineComponent as x, useModel as $, useSlots as A, onBeforeMount as E, createBlock as c, openBlock as m, unref as t, withCtx as s, createCommentVNode as g, createVNode as d, createElementBlock as S, renderSlot as h, createElementVNode as w, normalizeClass as z, toDisplayString as P, Fragment as T, renderList as L, normalizeStyle as j, mergeModels as B, withModifiers as N } from "vue";
3
- import { useRouter as q, RouterView as R } from "vue-router";
4
- import { VApp as J, VProgressLinear as G, VAppBar as O, VMain as H, VFooter as K, VBtn as V, VNavigationDrawer as Q, VList as X, VSnackbar as Y, VContainer as Z, VBreadcrumbs as ee, VCard as U, VForm as W, VCardText as I, VTextField as D, VListItem as te, VIcon as le, VOtpInput as oe } from "vuetify/components";
5
- import { defineStore as C } from "pinia";
6
- const ae = C("colorMode", () => {
7
- const l = b(localStorage.getItem("colorMode") == "dark" ? "dark" : "light");
8
- function a() {
9
- l.value = l.value === "dark" ? "light" : "dark";
2
+ import { ref as b, watch as C, computed as P, defineComponent as V, useModel as B, useSlots as E, onBeforeMount as z, createBlock as c, openBlock as s, unref as l, withCtx as i, createCommentVNode as g, createVNode as d, createElementBlock as $, renderSlot as h, createElementVNode as x, normalizeClass as j, toDisplayString as N, Fragment as M, renderList as O, normalizeStyle as q, mergeModels as T, withModifiers as U } from "vue";
3
+ import { useRouter as R, RouterView as J } from "vue-router";
4
+ import { VApp as G, VProgressLinear as H, VAppBar as D, VMain as K, VFooter as Q, VBtn as y, VNavigationDrawer as X, VList as Y, VSnackbar as Z, VContainer as _, VBreadcrumbs as ee, VCard as W, VForm as I, VCardText as A, VTextField as F, VListItem as te, VIcon as le, VOtpInput as oe } from "vuetify/components";
5
+ import { defineStore as L } from "pinia";
6
+ const ae = L("colorMode", () => {
7
+ const e = b(localStorage.getItem("colorMode") == "dark" ? "dark" : "light");
8
+ function r() {
9
+ e.value = e.value === "dark" ? "light" : "dark";
10
10
  }
11
- function o(r) {
12
- localStorage.setItem("colorMode", r), document.documentElement.setAttribute("data-theme", r);
11
+ function o(a) {
12
+ localStorage.setItem("colorMode", a), document.documentElement.setAttribute("data-theme", a);
13
13
  }
14
- return M(l, (r) => o(r)), o(l.value), { mode: l, toggle: a };
15
- }), re = C("footer", () => {
16
- const l = b([]), a = F(() => l.value.length > 0 ? l.value[l.value.length - 1] : null);
14
+ return C(e, (a) => o(a)), o(e.value), { mode: e, toggle: r };
15
+ }), ne = L("footer", () => {
16
+ const e = b([]), r = P(() => e.value.length > 0 ? e.value[e.value.length - 1] : null);
17
17
  function o(n) {
18
- return n.id || (n.id = (/* @__PURE__ */ new Date()).getTime().toString()), n.timeout === void 0 && (n.timeout = 5e3), l.value.push(n), n.timeout && setTimeout(() => {
19
- r(n.id);
18
+ return n.id || (n.id = (/* @__PURE__ */ new Date()).getTime().toString()), n.timeout === void 0 && (n.timeout = 5e3), e.value.push(n), n.timeout && setTimeout(() => {
19
+ a(n.id);
20
20
  }, n.timeout), n.id;
21
21
  }
22
- function r(n) {
23
- l.value = l.value.filter((f) => f.id !== n);
22
+ function a(n) {
23
+ e.value = e.value.filter((m) => m.id !== n);
24
24
  }
25
- return { messages: l, current: a, addMessage: o, removeMessage: r };
26
- }), ne = C("notify", () => {
27
- const l = b([]), a = b({});
28
- function o(e) {
29
- return e.id ? r(e.id) : e.id = (/* @__PURE__ */ new Date()).getTime().toString(), e.timeout === void 0 && (e.timeout = 5e3), l.value.push(e), e.timeout && (a.value[e.id] = setTimeout(() => {
30
- r(e.id);
31
- }, e.timeout)), e.id;
25
+ return { messages: e, current: r, addMessage: o, removeMessage: a };
26
+ }), re = L("notify", () => {
27
+ const e = b([]), r = b({});
28
+ function o(t) {
29
+ return t.id ? a(t.id) : t.id = (/* @__PURE__ */ new Date()).getTime().toString(), t.timeout === void 0 && (t.timeout = 5e3), e.value.push(t), t.timeout && (r.value[t.id] = setTimeout(() => {
30
+ a(t.id);
31
+ }, t.timeout)), t.id;
32
32
  }
33
- function r(e) {
34
- l.value = l.value.filter((k) => k.id !== e), a.value[e] && (clearTimeout(a.value[e]), delete a.value[e]);
33
+ function a(t) {
34
+ e.value = e.value.filter((k) => k.id !== t), r.value[t] && (clearTimeout(r.value[t]), delete r.value[t]);
35
35
  }
36
- function n(e) {
37
- return o({ text: e, type: "info" });
36
+ function n(t) {
37
+ return o({ text: t, type: "info" });
38
38
  }
39
- function f(e) {
40
- return o({ text: e, type: "success" });
39
+ function m(t) {
40
+ return o({ text: t, type: "success" });
41
41
  }
42
- function u(e) {
43
- return o({ text: e, type: "warning" });
42
+ function f(t) {
43
+ return o({ text: t, type: "warning" });
44
44
  }
45
- function i(e) {
46
- return o({ text: e, type: "error" });
45
+ function u(t) {
46
+ return o({ text: t, type: "error" });
47
47
  }
48
- return { messages: l, add: o, remove: r, info: n, success: f, warning: u, error: i };
49
- }), ue = { class: "d-flex flex-column pa-4 h-100" }, ie = ["textContent"], ye = /* @__PURE__ */ x({
48
+ return { messages: e, add: o, remove: a, info: n, success: m, warning: f, error: u };
49
+ }), ue = { class: "d-flex flex-column pa-4 h-100" }, ie = ["textContent"], we = /* @__PURE__ */ V({
50
50
  __name: "AppBase",
51
51
  props: {
52
52
  drawerOpen: { type: Boolean, default: !1 },
53
53
  drawerOpenModifiers: {}
54
54
  },
55
55
  emits: ["update:drawerOpen"],
56
- setup(l) {
57
- const a = ae(), o = $(l, "drawerOpen"), r = b(!1), n = re(), f = b(!1), u = b(null), i = ne(), e = q(), k = A();
58
- return M(r, (y) => {
59
- localStorage.setItem("drawerDocked", String(y));
60
- }), E(() => {
61
- e.beforeEach(() => {
62
- u.value = setTimeout(() => {
63
- f.value = !0;
56
+ setup(e) {
57
+ const r = ae(), o = B(e, "drawerOpen"), a = b(!1), n = ne(), m = b(!1), f = b(null), u = re(), t = R(), k = E();
58
+ return C(a, (w) => {
59
+ localStorage.setItem("drawerDocked", String(w));
60
+ }), z(() => {
61
+ t.beforeEach(() => {
62
+ f.value = setTimeout(() => {
63
+ m.value = !0;
64
64
  }, 300);
65
- }), e.afterEach(() => {
66
- u.value && (clearTimeout(u.value), u.value = null), f.value = !1;
67
- }), r.value = localStorage.getItem("drawerDocked") === "true", o.value = r.value;
68
- }), (y, v) => (m(), c(t(J), {
69
- theme: t(a).mode
65
+ }), t.afterEach(() => {
66
+ f.value && (clearTimeout(f.value), f.value = null), m.value = !1;
67
+ }), a.value = localStorage.getItem("drawerDocked") === "true", o.value = a.value;
68
+ }), (w, p) => (s(), c(l(G), {
69
+ theme: l(r).mode
70
70
  }, {
71
- default: s(() => [
72
- f.value ? (m(), c(t(G), {
71
+ default: i(() => [
72
+ m.value ? (s(), c(l(H), {
73
73
  key: 0,
74
74
  indeterminate: "",
75
75
  class: "mb-n1",
76
76
  style: { "z-index": "100000", opacity: "0.5" },
77
77
  height: "1"
78
78
  })) : g("", !0),
79
- d(t(O), { height: "64" }, {
80
- default: s(() => [
81
- h(y.$slots, "header")
79
+ d(l(D), { height: "64" }, {
80
+ default: i(() => [
81
+ h(w.$slots, "header")
82
82
  ]),
83
83
  _: 3
84
84
  }),
85
- d(t(H), { class: "bg-surface-light" }, {
86
- default: s(() => [
87
- w("div", ue, [
88
- d(t(R))
85
+ d(l(K), { class: "bg-surface-light" }, {
86
+ default: i(() => [
87
+ x("div", ue, [
88
+ d(l(J))
89
89
  ])
90
90
  ]),
91
91
  _: 1
92
92
  }),
93
- t(k).footer ? (m(), c(t(O), {
93
+ l(k).footer ? (s(), c(l(D), {
94
94
  key: 1,
95
95
  height: "40",
96
96
  location: "bottom"
97
97
  }, {
98
- default: s(() => [
99
- d(t(K), { class: "py-0 w-100 d-flex align-center" }, {
100
- default: s(() => [
101
- t(n).current ? (m(), S("span", {
98
+ default: i(() => [
99
+ d(l(Q), { class: "py-0 w-100 d-flex align-center" }, {
100
+ default: i(() => [
101
+ l(n).current ? (s(), $("span", {
102
102
  key: 0,
103
- textContent: P(t(n).current.text),
104
- class: z([t(n).current.type ? {} : { ["text-" + t(n).current.type]: !0 }, "overflow-hidden text-no-wrap"]),
103
+ textContent: N(l(n).current.text),
104
+ class: j([l(n).current.type ? {} : { ["text-" + l(n).current.type]: !0 }, "overflow-hidden text-no-wrap"]),
105
105
  style: { "text-overflow": "ellipsis" }
106
106
  }, null, 10, ie)) : g("", !0),
107
- t(n).current && t(n).current.actions ? (m(!0), S(T, { key: 1 }, L(Object.entries(t(n).current.actions), (p, _) => (m(), c(t(V), {
108
- text: p[0],
109
- onClick: p[1],
110
- key: _,
107
+ l(n).current && l(n).current.actions ? (s(!0), $(M, { key: 1 }, O(Object.entries(l(n).current.actions), (v, S) => (s(), c(l(y), {
108
+ text: v[0],
109
+ onClick: v[1],
110
+ key: S,
111
111
  density: "comfortable",
112
112
  variant: "tonal",
113
113
  class: "mx-2 px-2 text-none",
114
- color: t(n).current.type
114
+ color: l(n).current.type
115
115
  }, null, 8, ["text", "onClick", "color"]))), 128)) : g("", !0),
116
- v[2] || (v[2] = w("div", { class: "me-auto" }, null, -1)),
117
- h(y.$slots, "footer")
116
+ p[2] || (p[2] = x("div", { class: "me-auto" }, null, -1)),
117
+ h(w.$slots, "footer")
118
118
  ]),
119
- _: 3,
120
- __: [2]
119
+ _: 3
121
120
  })
122
121
  ]),
123
122
  _: 3
124
123
  })) : g("", !0),
125
- t(k).drawer ? (m(), c(t(Q), {
124
+ l(k).drawer ? (s(), c(l(X), {
126
125
  key: 2,
127
126
  modelValue: o.value,
128
- "onUpdate:modelValue": v[1] || (v[1] = (p) => o.value = p),
127
+ "onUpdate:modelValue": p[1] || (p[1] = (v) => o.value = v),
129
128
  width: "250",
130
129
  "rail-width": "58",
131
- rail: r.value,
132
- mobile: r.value ? !1 : void 0
130
+ rail: a.value,
131
+ mobile: a.value ? !1 : void 0
133
132
  }, {
134
- default: s(() => [
135
- d(t(X), {
133
+ default: i(() => [
134
+ d(l(Y), {
136
135
  class: "h-100 d-flex flex-column",
137
136
  nav: ""
138
137
  }, {
139
- default: s(() => [
140
- h(y.$slots, "drawer"),
141
- v[3] || (v[3] = w("div", { class: "flex-grow-1" }, null, -1)),
142
- d(t(V), {
143
- onClick: v[0] || (v[0] = (p) => r.value = !r.value),
138
+ default: i(() => [
139
+ h(w.$slots, "drawer"),
140
+ p[3] || (p[3] = x("div", { class: "flex-grow-1" }, null, -1)),
141
+ d(l(y), {
142
+ onClick: p[0] || (p[0] = (v) => a.value = !a.value),
144
143
  icon: "mdi-pin-outline",
145
144
  rounded: "rounded",
146
145
  density: "comfortable",
147
- title: r.value ? "Undock sidebar" : "Dock sidebar",
146
+ title: a.value ? "Undock sidebar" : "Dock sidebar",
148
147
  class: "ma-1 ms-auto",
149
- variant: r.value ? "tonal" : "text"
148
+ variant: a.value ? "tonal" : "text"
150
149
  }, null, 8, ["title", "variant"])
151
150
  ]),
152
- _: 3,
153
- __: [3]
151
+ _: 3
154
152
  })
155
153
  ]),
156
154
  _: 3
157
155
  }, 8, ["modelValue", "rail", "mobile"])) : g("", !0),
158
- (m(!0), S(T, null, L(t(i).messages, (p, _) => (m(), c(t(Y), {
159
- key: _,
156
+ (s(!0), $(M, null, O(l(u).messages, (v, S) => (s(), c(l(Z), {
157
+ key: S,
160
158
  "model-value": !0,
161
- text: p.text,
162
- color: p.type,
159
+ text: v.text,
160
+ color: v.type,
163
161
  location: "bottom end",
164
- style: j({ bottom: `${_ * 56}px` }),
162
+ style: q({ bottom: `${S * 56}px` }),
165
163
  timeout: -1
166
164
  }, {
167
- actions: s(() => [
168
- d(t(V), {
165
+ actions: i(() => [
166
+ d(l(y), {
169
167
  icon: "mdi-close",
170
- onClick: (ve) => t(i).remove(p.id)
168
+ onClick: (pe) => l(u).remove(v.id)
171
169
  }, null, 8, ["onClick"])
172
170
  ]),
173
171
  _: 2
@@ -176,49 +174,49 @@ const ae = C("colorMode", () => {
176
174
  _: 3
177
175
  }, 8, ["theme"]));
178
176
  }
179
- }), Ve = /* @__PURE__ */ x({
177
+ }), ye = /* @__PURE__ */ V({
180
178
  __name: "DashboardPage",
181
179
  props: {
182
180
  breadcrumbs: {},
183
181
  fluid: { type: Boolean, default: !0 }
184
182
  },
185
- setup(l) {
186
- return (a, o) => (m(), c(t(Z), {
187
- fluid: a.fluid,
183
+ setup(e) {
184
+ return (r, o) => (s(), c(l(_), {
185
+ fluid: e.fluid,
188
186
  class: "h-100 d-flex flex-column py-0 h-100"
189
187
  }, {
190
- default: s(() => [
191
- a.breadcrumbs ? (m(), c(t(ee), {
188
+ default: i(() => [
189
+ e.breadcrumbs ? (s(), c(l(ee), {
192
190
  key: 0,
193
- items: a.breadcrumbs,
191
+ items: e.breadcrumbs,
194
192
  density: "comfortable",
195
193
  class: "pa-0 flex-wrap"
196
194
  }, null, 8, ["items"])) : g("", !0),
197
- h(a.$slots, "default")
195
+ h(r.$slots, "default")
198
196
  ]),
199
197
  _: 3
200
198
  }, 8, ["fluid"]));
201
199
  }
202
- }), se = (l, a) => {
203
- const o = l.__vccOpts || l;
204
- for (const [r, n] of a)
205
- o[r] = n;
200
+ }), de = (e, r) => {
201
+ const o = e.__vccOpts || e;
202
+ for (const [a, n] of r)
203
+ o[a] = n;
206
204
  return o;
207
- }, de = {}, me = { class: "h-100 d-flex align-center" };
208
- function fe(l, a) {
209
- return m(), S(T, null, [
210
- a[0] || (a[0] = w("span", {
205
+ }, se = {}, me = { class: "h-100 d-flex align-center" };
206
+ function ce(e, r) {
207
+ return s(), $(M, null, [
208
+ r[0] || (r[0] = x("span", {
211
209
  class: "border-s mx-3",
212
210
  style: { height: "32px" }
213
211
  }, null, -1)),
214
- w("span", me, [
215
- h(l.$slots, "default")
212
+ x("span", me, [
213
+ h(e.$slots, "default")
216
214
  ])
217
215
  ], 64);
218
216
  }
219
- const xe = /* @__PURE__ */ se(de, [["render", fe]]), ke = /* @__PURE__ */ x({
217
+ const Ve = /* @__PURE__ */ de(se, [["render", ce]]), ke = /* @__PURE__ */ V({
220
218
  __name: "LoginForm",
221
- props: /* @__PURE__ */ B({
219
+ props: /* @__PURE__ */ T({
222
220
  title: { default: "Log in" },
223
221
  submitButtonText: { default: "Log in" },
224
222
  minWidth: {},
@@ -232,49 +230,49 @@ const xe = /* @__PURE__ */ se(de, [["render", fe]]), ke = /* @__PURE__ */ x({
232
230
  password: { default: "" },
233
231
  passwordModifiers: {}
234
232
  }),
235
- emits: /* @__PURE__ */ B(["submit"], ["update:username", "update:password"]),
236
- setup(l, { emit: a }) {
237
- const o = $(l, "username"), r = $(l, "password"), n = a, f = b(!1);
238
- return (u, i) => (m(), c(t(U), {
239
- title: u.title,
240
- "min-width": u.minWidth,
241
- "max-width": u.maxWidth
233
+ emits: /* @__PURE__ */ T(["submit"], ["update:username", "update:password"]),
234
+ setup(e, { emit: r }) {
235
+ const o = B(e, "username"), a = B(e, "password"), n = r, m = b(!1);
236
+ return (f, u) => (s(), c(l(W), {
237
+ title: e.title,
238
+ "min-width": e.minWidth,
239
+ "max-width": e.maxWidth
242
240
  }, {
243
- default: s(() => [
244
- d(t(W), {
245
- onSubmit: i[2] || (i[2] = N((e) => n("submit", o.value, r.value), ["prevent"])),
246
- modelValue: f.value,
247
- "onUpdate:modelValue": i[3] || (i[3] = (e) => f.value = e)
241
+ default: i(() => [
242
+ d(l(I), {
243
+ onSubmit: u[2] || (u[2] = U((t) => n("submit", o.value, a.value), ["prevent"])),
244
+ modelValue: m.value,
245
+ "onUpdate:modelValue": u[3] || (u[3] = (t) => m.value = t)
248
246
  }, {
249
- default: s(() => [
250
- d(t(I), { class: "d-flex flex-column" }, {
251
- default: s(() => [
252
- d(t(D), {
247
+ default: i(() => [
248
+ d(l(A), { class: "d-flex flex-column" }, {
249
+ default: i(() => [
250
+ d(l(F), {
253
251
  modelValue: o.value,
254
- "onUpdate:modelValue": i[0] || (i[0] = (e) => o.value = e),
255
- label: u.usernameLabel,
256
- rules: [(e) => !!e || "Username is required"],
252
+ "onUpdate:modelValue": u[0] || (u[0] = (t) => o.value = t),
253
+ label: e.usernameLabel,
254
+ rules: [(t) => !!t || "Username is required"],
257
255
  "persistent-placeholder": "",
258
256
  autofocus: ""
259
257
  }, null, 8, ["modelValue", "label", "rules"]),
260
- d(t(D), {
261
- modelValue: r.value,
262
- "onUpdate:modelValue": i[1] || (i[1] = (e) => r.value = e),
263
- label: u.passwordLabel,
258
+ d(l(F), {
259
+ modelValue: a.value,
260
+ "onUpdate:modelValue": u[1] || (u[1] = (t) => a.value = t),
261
+ label: e.passwordLabel,
264
262
  type: "password",
265
- rules: [(e) => !!e || "Password is required"],
263
+ rules: [(t) => !!t || "Password is required"],
266
264
  "persistent-placeholder": ""
267
265
  }, null, 8, ["modelValue", "label", "rules"]),
268
- d(t(V), {
269
- disabled: !f.value,
266
+ d(l(y), {
267
+ disabled: !m.value,
270
268
  type: "submit",
271
269
  color: "primary",
272
270
  variant: "flat",
273
- text: u.submitButtonText,
274
- loading: u.loading,
271
+ text: e.submitButtonText,
272
+ loading: e.loading,
275
273
  class: "align-self-center"
276
274
  }, null, 8, ["disabled", "text", "loading"]),
277
- h(u.$slots, "beneath")
275
+ h(f.$slots, "beneath")
278
276
  ]),
279
277
  _: 3
280
278
  })
@@ -285,7 +283,7 @@ const xe = /* @__PURE__ */ se(de, [["render", fe]]), ke = /* @__PURE__ */ x({
285
283
  _: 3
286
284
  }, 8, ["title", "min-width", "max-width"]));
287
285
  }
288
- }), ce = { class: "text-no-wrap overflow-hidden" }, _e = /* @__PURE__ */ x({
286
+ }), fe = { class: "text-no-wrap overflow-hidden" }, Se = /* @__PURE__ */ V({
289
287
  __name: "NavDrawerLink",
290
288
  props: {
291
289
  to: {},
@@ -294,26 +292,26 @@ const xe = /* @__PURE__ */ se(de, [["render", fe]]), ke = /* @__PURE__ */ x({
294
292
  icon: {},
295
293
  text: {}
296
294
  },
297
- setup(l) {
298
- return (a, o) => (m(), c(t(te), {
295
+ setup(e) {
296
+ return (r, o) => (s(), c(l(te), {
299
297
  role: "option",
300
- to: a.to,
301
- href: a.href,
302
- target: a.target,
298
+ to: e.to,
299
+ href: e.href,
300
+ target: e.target,
303
301
  slim: ""
304
302
  }, {
305
- prepend: s(() => [
306
- d(t(le), { icon: a.icon }, null, 8, ["icon"])
303
+ prepend: i(() => [
304
+ d(l(le), { icon: e.icon }, null, 8, ["icon"])
307
305
  ]),
308
- default: s(() => [
309
- w("span", ce, P(a.text), 1)
306
+ default: i(() => [
307
+ x("span", fe, N(e.text), 1)
310
308
  ]),
311
309
  _: 1
312
310
  }, 8, ["to", "href", "target"]));
313
311
  }
314
- }), Se = /* @__PURE__ */ x({
312
+ }), $e = /* @__PURE__ */ V({
315
313
  __name: "OTPForm",
316
- props: /* @__PURE__ */ B({
314
+ props: /* @__PURE__ */ T({
317
315
  title: { default: "2FA Verification" },
318
316
  subtitle: { default: "Enter the code from your authenticator app" },
319
317
  submitButtonText: { default: "Verify" },
@@ -326,43 +324,43 @@ const xe = /* @__PURE__ */ se(de, [["render", fe]]), ke = /* @__PURE__ */ x({
326
324
  otp: { default: "" },
327
325
  otpModifiers: {}
328
326
  }),
329
- emits: /* @__PURE__ */ B(["submit"], ["update:otp"]),
330
- setup(l, { emit: a }) {
331
- const o = $(l, "otp"), r = a, n = l, f = F(() => o.value.length === n.length);
332
- return M(o, () => {
333
- n.autosubmit && o.value.length === n.length && r("submit", o.value);
334
- }), (u, i) => (m(), c(t(U), {
335
- title: u.title,
336
- subtitle: u.subtitle,
337
- "min-width": u.minWidth,
338
- "max-width": u.maxWidth
327
+ emits: /* @__PURE__ */ T(["submit"], ["update:otp"]),
328
+ setup(e, { emit: r }) {
329
+ const o = B(e, "otp"), a = r, n = e, m = P(() => o.value.length === n.length);
330
+ return C(o, () => {
331
+ n.autosubmit && o.value.length === n.length && a("submit", o.value);
332
+ }), (f, u) => (s(), c(l(W), {
333
+ title: e.title,
334
+ subtitle: e.subtitle,
335
+ "min-width": e.minWidth,
336
+ "max-width": e.maxWidth
339
337
  }, {
340
- default: s(() => [
341
- d(t(W), {
342
- onSubmit: i[1] || (i[1] = N((e) => r("submit", o.value), ["prevent"])),
343
- "model-value": f.value
338
+ default: i(() => [
339
+ d(l(I), {
340
+ onSubmit: u[1] || (u[1] = U((t) => a("submit", o.value), ["prevent"])),
341
+ "model-value": m.value
344
342
  }, {
345
- default: s(() => [
346
- d(t(I), { class: "d-flex flex-column" }, {
347
- default: s(() => [
348
- d(t(oe), {
343
+ default: i(() => [
344
+ d(l(A), { class: "d-flex flex-column" }, {
345
+ default: i(() => [
346
+ d(l(oe), {
349
347
  modelValue: o.value,
350
- "onUpdate:modelValue": i[0] || (i[0] = (e) => o.value = e),
348
+ "onUpdate:modelValue": u[0] || (u[0] = (t) => o.value = t),
351
349
  label: "OTP",
352
350
  "persistent-placeholder": "",
353
351
  autofocus: "",
354
- length: u.length
352
+ length: e.length
355
353
  }, null, 8, ["modelValue", "length"]),
356
- d(t(V), {
357
- disabled: !f.value,
354
+ d(l(y), {
355
+ disabled: !m.value,
358
356
  type: "submit",
359
357
  color: "primary",
360
358
  variant: "flat",
361
- text: u.submitButtonText,
362
- loading: u.loading,
359
+ text: e.submitButtonText,
360
+ loading: e.loading,
363
361
  class: "align-self-center"
364
362
  }, null, 8, ["disabled", "text", "loading"]),
365
- h(u.$slots, "beneath")
363
+ h(f.$slots, "beneath")
366
364
  ]),
367
365
  _: 3
368
366
  })
@@ -374,24 +372,24 @@ const xe = /* @__PURE__ */ se(de, [["render", fe]]), ke = /* @__PURE__ */ x({
374
372
  }, 8, ["title", "subtitle", "min-width", "max-width"]));
375
373
  }
376
374
  });
377
- function pe(l) {
378
- return !l || l.length === 0 ? {} : {
379
- filter: JSON.stringify(l)
375
+ function ve(e) {
376
+ return !e || e.length === 0 ? {} : {
377
+ filter: JSON.stringify(e)
380
378
  };
381
379
  }
382
- const $e = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
380
+ const Be = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
383
381
  __proto__: null,
384
- asParams: pe
382
+ asParams: ve
385
383
  }, Symbol.toStringTag, { value: "Module" }));
386
384
  export {
387
- ye as AppBase,
388
- Ve as DashboardPage,
389
- xe as FooterSection,
385
+ we as AppBase,
386
+ ye as DashboardPage,
387
+ Ve as FooterSection,
390
388
  ke as LoginForm,
391
- _e as NavDrawerLink,
392
- Se as OTPForm,
393
- $e as filters,
389
+ Se as NavDrawerLink,
390
+ $e as OTPForm,
391
+ Be as filters,
394
392
  ae as useColorMode,
395
- re as useFooter,
396
- ne as useNotify
393
+ ne as useFooter,
394
+ re as useNotify
397
395
  };
@@ -1,2 +1,2 @@
1
1
  (function(){"use strict";try{if(typeof document<"u"){var e=document.createElement("style");e.appendChild(document.createTextNode("html{overflow:auto}html[data-theme=dark]{color-scheme:dark}html[data-theme=light]{color-scheme:light}")),document.head.appendChild(e)}}catch(t){console.error("vite-plugin-css-injected-by-js",t)}})();
2
- (function(s,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue"),require("vue-router"),require("vuetify/components"),require("pinia")):typeof define=="function"&&define.amd?define(["exports","vue","vue-router","vuetify/components","pinia"],e):(s=typeof globalThis<"u"?globalThis:s||self,e(s.appsalutely={},s.Vue,s.VueRouter,s.VuetifyComponents,s.Pinia))})(this,function(s,e,b,i,w){"use strict";const g=w.defineStore("colorMode",()=>{const r=e.ref(localStorage.getItem("colorMode")=="dark"?"dark":"light");function o(){r.value=r.value==="dark"?"light":"dark"}function l(n){localStorage.setItem("colorMode",n),document.documentElement.setAttribute("data-theme",n)}return e.watch(r,n=>l(n)),l(r.value),{mode:r,toggle:o}}),y=w.defineStore("footer",()=>{const r=e.ref([]),o=e.computed(()=>r.value.length>0?r.value[r.value.length-1]:null);function l(a){return a.id||(a.id=new Date().getTime().toString()),a.timeout===void 0&&(a.timeout=5e3),r.value.push(a),a.timeout&&setTimeout(()=>{n(a.id)},a.timeout),a.id}function n(a){r.value=r.value.filter(u=>u.id!==a)}return{messages:r,current:o,addMessage:l,removeMessage:n}}),k=w.defineStore("notify",()=>{const r=e.ref([]),o=e.ref({});function l(t){return t.id?n(t.id):t.id=new Date().getTime().toString(),t.timeout===void 0&&(t.timeout=5e3),r.value.push(t),t.timeout&&(o.value[t.id]=setTimeout(()=>{n(t.id)},t.timeout)),t.id}function n(t){r.value=r.value.filter(h=>h.id!==t),o.value[t]&&(clearTimeout(o.value[t]),delete o.value[t])}function a(t){return l({text:t,type:"info"})}function u(t){return l({text:t,type:"success"})}function d(t){return l({text:t,type:"warning"})}function f(t){return l({text:t,type:"error"})}return{messages:r,add:l,remove:n,info:a,success:u,warning:d,error:f}}),B={class:"d-flex flex-column pa-4 h-100"},C=["textContent"],x=e.defineComponent({__name:"AppBase",props:{drawerOpen:{type:Boolean,default:!1},drawerOpenModifiers:{}},emits:["update:drawerOpen"],setup(r){const o=g(),l=e.useModel(r,"drawerOpen"),n=e.ref(!1),a=y(),u=e.ref(!1),d=e.ref(null),f=k(),t=b.useRouter(),h=e.useSlots();return e.watch(n,p=>{localStorage.setItem("drawerDocked",String(p))}),e.onBeforeMount(()=>{t.beforeEach(()=>{d.value=setTimeout(()=>{u.value=!0},300)}),t.afterEach(()=>{d.value&&(clearTimeout(d.value),d.value=null),u.value=!1}),n.value=localStorage.getItem("drawerDocked")==="true",l.value=n.value}),(p,m)=>(e.openBlock(),e.createBlock(e.unref(i.VApp),{theme:e.unref(o).mode},{default:e.withCtx(()=>[u.value?(e.openBlock(),e.createBlock(e.unref(i.VProgressLinear),{key:0,indeterminate:"",class:"mb-n1",style:{"z-index":"100000",opacity:"0.5"},height:"1"})):e.createCommentVNode("",!0),e.createVNode(e.unref(i.VAppBar),{height:"64"},{default:e.withCtx(()=>[e.renderSlot(p.$slots,"header")]),_:3}),e.createVNode(e.unref(i.VMain),{class:"bg-surface-light"},{default:e.withCtx(()=>[e.createElementVNode("div",B,[e.createVNode(e.unref(b.RouterView))])]),_:1}),e.unref(h).footer?(e.openBlock(),e.createBlock(e.unref(i.VAppBar),{key:1,height:"40",location:"bottom"},{default:e.withCtx(()=>[e.createVNode(e.unref(i.VFooter),{class:"py-0 w-100 d-flex align-center"},{default:e.withCtx(()=>[e.unref(a).current?(e.openBlock(),e.createElementBlock("span",{key:0,textContent:e.toDisplayString(e.unref(a).current.text),class:e.normalizeClass([e.unref(a).current.type?{}:{["text-"+e.unref(a).current.type]:!0},"overflow-hidden text-no-wrap"]),style:{"text-overflow":"ellipsis"}},null,10,C)):e.createCommentVNode("",!0),e.unref(a).current&&e.unref(a).current.actions?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:1},e.renderList(Object.entries(e.unref(a).current.actions),(c,V)=>(e.openBlock(),e.createBlock(e.unref(i.VBtn),{text:c[0],onClick:c[1],key:V,density:"comfortable",variant:"tonal",class:"mx-2 px-2 text-none",color:e.unref(a).current.type},null,8,["text","onClick","color"]))),128)):e.createCommentVNode("",!0),m[2]||(m[2]=e.createElementVNode("div",{class:"me-auto"},null,-1)),e.renderSlot(p.$slots,"footer")]),_:3,__:[2]})]),_:3})):e.createCommentVNode("",!0),e.unref(h).drawer?(e.openBlock(),e.createBlock(e.unref(i.VNavigationDrawer),{key:2,modelValue:l.value,"onUpdate:modelValue":m[1]||(m[1]=c=>l.value=c),width:"250","rail-width":"58",rail:n.value,mobile:n.value?!1:void 0},{default:e.withCtx(()=>[e.createVNode(e.unref(i.VList),{class:"h-100 d-flex flex-column",nav:""},{default:e.withCtx(()=>[e.renderSlot(p.$slots,"drawer"),m[3]||(m[3]=e.createElementVNode("div",{class:"flex-grow-1"},null,-1)),e.createVNode(e.unref(i.VBtn),{onClick:m[0]||(m[0]=c=>n.value=!n.value),icon:"mdi-pin-outline",rounded:"rounded",density:"comfortable",title:n.value?"Undock sidebar":"Dock sidebar",class:"ma-1 ms-auto",variant:n.value?"tonal":"text"},null,8,["title","variant"])]),_:3,__:[3]})]),_:3},8,["modelValue","rail","mobile"])):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(f).messages,(c,V)=>(e.openBlock(),e.createBlock(e.unref(i.VSnackbar),{key:V,"model-value":!0,text:c.text,color:c.type,location:"bottom end",style:e.normalizeStyle({bottom:`${V*56}px`}),timeout:-1},{actions:e.withCtx(()=>[e.createVNode(e.unref(i.VBtn),{icon:"mdi-close",onClick:U=>e.unref(f).remove(c.id)},null,8,["onClick"])]),_:2},1032,["text","color","style"]))),128))]),_:3},8,["theme"]))}}),N=e.defineComponent({__name:"DashboardPage",props:{breadcrumbs:{},fluid:{type:Boolean,default:!0}},setup(r){return(o,l)=>(e.openBlock(),e.createBlock(e.unref(i.VContainer),{fluid:o.fluid,class:"h-100 d-flex flex-column py-0 h-100"},{default:e.withCtx(()=>[o.breadcrumbs?(e.openBlock(),e.createBlock(e.unref(i.VBreadcrumbs),{key:0,items:o.breadcrumbs,density:"comfortable",class:"pa-0 flex-wrap"},null,8,["items"])):e.createCommentVNode("",!0),e.renderSlot(o.$slots,"default")]),_:3},8,["fluid"]))}}),S=(r,o)=>{const l=r.__vccOpts||r;for(const[n,a]of o)l[n]=a;return l},M={},T={class:"h-100 d-flex align-center"};function _(r,o){return e.openBlock(),e.createElementBlock(e.Fragment,null,[o[0]||(o[0]=e.createElementVNode("span",{class:"border-s mx-3",style:{height:"32px"}},null,-1)),e.createElementVNode("span",T,[e.renderSlot(r.$slots,"default")])],64)}const $=S(M,[["render",_]]),F=e.defineComponent({__name:"LoginForm",props:e.mergeModels({title:{default:"Log in"},submitButtonText:{default:"Log in"},minWidth:{},maxWidth:{},loading:{type:Boolean},usernameLabel:{default:"Username"},passwordLabel:{default:"Password"}},{username:{default:""},usernameModifiers:{},password:{default:""},passwordModifiers:{}}),emits:e.mergeModels(["submit"],["update:username","update:password"]),setup(r,{emit:o}){const l=e.useModel(r,"username"),n=e.useModel(r,"password"),a=o,u=e.ref(!1);return(d,f)=>(e.openBlock(),e.createBlock(e.unref(i.VCard),{title:d.title,"min-width":d.minWidth,"max-width":d.maxWidth},{default:e.withCtx(()=>[e.createVNode(e.unref(i.VForm),{onSubmit:f[2]||(f[2]=e.withModifiers(t=>a("submit",l.value,n.value),["prevent"])),modelValue:u.value,"onUpdate:modelValue":f[3]||(f[3]=t=>u.value=t)},{default:e.withCtx(()=>[e.createVNode(e.unref(i.VCardText),{class:"d-flex flex-column"},{default:e.withCtx(()=>[e.createVNode(e.unref(i.VTextField),{modelValue:l.value,"onUpdate:modelValue":f[0]||(f[0]=t=>l.value=t),label:d.usernameLabel,rules:[t=>!!t||"Username is required"],"persistent-placeholder":"",autofocus:""},null,8,["modelValue","label","rules"]),e.createVNode(e.unref(i.VTextField),{modelValue:n.value,"onUpdate:modelValue":f[1]||(f[1]=t=>n.value=t),label:d.passwordLabel,type:"password",rules:[t=>!!t||"Password is required"],"persistent-placeholder":""},null,8,["modelValue","label","rules"]),e.createVNode(e.unref(i.VBtn),{disabled:!u.value,type:"submit",color:"primary",variant:"flat",text:d.submitButtonText,loading:d.loading,class:"align-self-center"},null,8,["disabled","text","loading"]),e.renderSlot(d.$slots,"beneath")]),_:3})]),_:3},8,["modelValue"])]),_:3},8,["title","min-width","max-width"]))}}),L={class:"text-no-wrap overflow-hidden"},O=e.defineComponent({__name:"NavDrawerLink",props:{to:{},href:{},target:{},icon:{},text:{}},setup(r){return(o,l)=>(e.openBlock(),e.createBlock(e.unref(i.VListItem),{role:"option",to:o.to,href:o.href,target:o.target,slim:""},{prepend:e.withCtx(()=>[e.createVNode(e.unref(i.VIcon),{icon:o.icon},null,8,["icon"])]),default:e.withCtx(()=>[e.createElementVNode("span",L,e.toDisplayString(o.text),1)]),_:1},8,["to","href","target"]))}}),E=e.defineComponent({__name:"OTPForm",props:e.mergeModels({title:{default:"2FA Verification"},subtitle:{default:"Enter the code from your authenticator app"},submitButtonText:{default:"Verify"},minWidth:{},maxWidth:{},loading:{type:Boolean},length:{default:6},autosubmit:{type:Boolean,default:!0}},{otp:{default:""},otpModifiers:{}}),emits:e.mergeModels(["submit"],["update:otp"]),setup(r,{emit:o}){const l=e.useModel(r,"otp"),n=o,a=r,u=e.computed(()=>l.value.length===a.length);return e.watch(l,()=>{a.autosubmit&&l.value.length===a.length&&n("submit",l.value)}),(d,f)=>(e.openBlock(),e.createBlock(e.unref(i.VCard),{title:d.title,subtitle:d.subtitle,"min-width":d.minWidth,"max-width":d.maxWidth},{default:e.withCtx(()=>[e.createVNode(e.unref(i.VForm),{onSubmit:f[1]||(f[1]=e.withModifiers(t=>n("submit",l.value),["prevent"])),"model-value":u.value},{default:e.withCtx(()=>[e.createVNode(e.unref(i.VCardText),{class:"d-flex flex-column"},{default:e.withCtx(()=>[e.createVNode(e.unref(i.VOtpInput),{modelValue:l.value,"onUpdate:modelValue":f[0]||(f[0]=t=>l.value=t),label:"OTP","persistent-placeholder":"",autofocus:"",length:d.length},null,8,["modelValue","length"]),e.createVNode(e.unref(i.VBtn),{disabled:!u.value,type:"submit",color:"primary",variant:"flat",text:d.submitButtonText,loading:d.loading,class:"align-self-center"},null,8,["disabled","text","loading"]),e.renderSlot(d.$slots,"beneath")]),_:3})]),_:3},8,["model-value"])]),_:3},8,["title","subtitle","min-width","max-width"]))}});function D(r){return!r||r.length===0?{}:{filter:JSON.stringify(r)}}const P=Object.freeze(Object.defineProperty({__proto__:null,asParams:D},Symbol.toStringTag,{value:"Module"}));s.AppBase=x,s.DashboardPage=N,s.FooterSection=$,s.LoginForm=F,s.NavDrawerLink=O,s.OTPForm=E,s.filters=P,s.useColorMode=g,s.useFooter=y,s.useNotify=k,Object.defineProperty(s,Symbol.toStringTag,{value:"Module"})});
2
+ (function(d,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue"),require("vue-router"),require("vuetify/components"),require("pinia")):typeof define=="function"&&define.amd?define(["exports","vue","vue-router","vuetify/components","pinia"],e):(d=typeof globalThis<"u"?globalThis:d||self,e(d.appsalutely={},d.Vue,d.VueRouter,d.VuetifyComponents,d.Pinia))})(this,(function(d,e,x,a,w){"use strict";const b=w.defineStore("colorMode",()=>{const t=e.ref(localStorage.getItem("colorMode")=="dark"?"dark":"light");function i(){t.value=t.value==="dark"?"light":"dark"}function r(o){localStorage.setItem("colorMode",o),document.documentElement.setAttribute("data-theme",o)}return e.watch(t,o=>r(o)),r(t.value),{mode:t,toggle:i}}),g=w.defineStore("footer",()=>{const t=e.ref([]),i=e.computed(()=>t.value.length>0?t.value[t.value.length-1]:null);function r(n){return n.id||(n.id=new Date().getTime().toString()),n.timeout===void 0&&(n.timeout=5e3),t.value.push(n),n.timeout&&setTimeout(()=>{o(n.id)},n.timeout),n.id}function o(n){t.value=t.value.filter(f=>f.id!==n)}return{messages:t,current:i,addMessage:r,removeMessage:o}}),y=w.defineStore("notify",()=>{const t=e.ref([]),i=e.ref({});function r(l){return l.id?o(l.id):l.id=new Date().getTime().toString(),l.timeout===void 0&&(l.timeout=5e3),t.value.push(l),l.timeout&&(i.value[l.id]=setTimeout(()=>{o(l.id)},l.timeout)),l.id}function o(l){t.value=t.value.filter(V=>V.id!==l),i.value[l]&&(clearTimeout(i.value[l]),delete i.value[l])}function n(l){return r({text:l,type:"info"})}function f(l){return r({text:l,type:"success"})}function u(l){return r({text:l,type:"warning"})}function s(l){return r({text:l,type:"error"})}return{messages:t,add:r,remove:o,info:n,success:f,warning:u,error:s}}),k={class:"d-flex flex-column pa-4 h-100"},B=["textContent"],C=e.defineComponent({__name:"AppBase",props:{drawerOpen:{type:Boolean,default:!1},drawerOpenModifiers:{}},emits:["update:drawerOpen"],setup(t){const i=b(),r=e.useModel(t,"drawerOpen"),o=e.ref(!1),n=g(),f=e.ref(!1),u=e.ref(null),s=y(),l=x.useRouter(),V=e.useSlots();return e.watch(o,h=>{localStorage.setItem("drawerDocked",String(h))}),e.onBeforeMount(()=>{l.beforeEach(()=>{u.value=setTimeout(()=>{f.value=!0},300)}),l.afterEach(()=>{u.value&&(clearTimeout(u.value),u.value=null),f.value=!1}),o.value=localStorage.getItem("drawerDocked")==="true",r.value=o.value}),(h,m)=>(e.openBlock(),e.createBlock(e.unref(a.VApp),{theme:e.unref(i).mode},{default:e.withCtx(()=>[f.value?(e.openBlock(),e.createBlock(e.unref(a.VProgressLinear),{key:0,indeterminate:"",class:"mb-n1",style:{"z-index":"100000",opacity:"0.5"},height:"1"})):e.createCommentVNode("",!0),e.createVNode(e.unref(a.VAppBar),{height:"64"},{default:e.withCtx(()=>[e.renderSlot(h.$slots,"header")]),_:3}),e.createVNode(e.unref(a.VMain),{class:"bg-surface-light"},{default:e.withCtx(()=>[e.createElementVNode("div",k,[e.createVNode(e.unref(x.RouterView))])]),_:1}),e.unref(V).footer?(e.openBlock(),e.createBlock(e.unref(a.VAppBar),{key:1,height:"40",location:"bottom"},{default:e.withCtx(()=>[e.createVNode(e.unref(a.VFooter),{class:"py-0 w-100 d-flex align-center"},{default:e.withCtx(()=>[e.unref(n).current?(e.openBlock(),e.createElementBlock("span",{key:0,textContent:e.toDisplayString(e.unref(n).current.text),class:e.normalizeClass([e.unref(n).current.type?{}:{["text-"+e.unref(n).current.type]:!0},"overflow-hidden text-no-wrap"]),style:{"text-overflow":"ellipsis"}},null,10,B)):e.createCommentVNode("",!0),e.unref(n).current&&e.unref(n).current.actions?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:1},e.renderList(Object.entries(e.unref(n).current.actions),(c,p)=>(e.openBlock(),e.createBlock(e.unref(a.VBtn),{text:c[0],onClick:c[1],key:p,density:"comfortable",variant:"tonal",class:"mx-2 px-2 text-none",color:e.unref(n).current.type},null,8,["text","onClick","color"]))),128)):e.createCommentVNode("",!0),m[2]||(m[2]=e.createElementVNode("div",{class:"me-auto"},null,-1)),e.renderSlot(h.$slots,"footer")]),_:3})]),_:3})):e.createCommentVNode("",!0),e.unref(V).drawer?(e.openBlock(),e.createBlock(e.unref(a.VNavigationDrawer),{key:2,modelValue:r.value,"onUpdate:modelValue":m[1]||(m[1]=c=>r.value=c),width:"250","rail-width":"58",rail:o.value,mobile:o.value?!1:void 0},{default:e.withCtx(()=>[e.createVNode(e.unref(a.VList),{class:"h-100 d-flex flex-column",nav:""},{default:e.withCtx(()=>[e.renderSlot(h.$slots,"drawer"),m[3]||(m[3]=e.createElementVNode("div",{class:"flex-grow-1"},null,-1)),e.createVNode(e.unref(a.VBtn),{onClick:m[0]||(m[0]=c=>o.value=!o.value),icon:"mdi-pin-outline",rounded:"rounded",density:"comfortable",title:o.value?"Undock sidebar":"Dock sidebar",class:"ma-1 ms-auto",variant:o.value?"tonal":"text"},null,8,["title","variant"])]),_:3})]),_:3},8,["modelValue","rail","mobile"])):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(s).messages,(c,p)=>(e.openBlock(),e.createBlock(e.unref(a.VSnackbar),{key:p,"model-value":!0,text:c.text,color:c.type,location:"bottom end",style:e.normalizeStyle({bottom:`${p*56}px`}),timeout:-1},{actions:e.withCtx(()=>[e.createVNode(e.unref(a.VBtn),{icon:"mdi-close",onClick:W=>e.unref(s).remove(c.id)},null,8,["onClick"])]),_:2},1032,["text","color","style"]))),128))]),_:3},8,["theme"]))}}),N=e.defineComponent({__name:"DashboardPage",props:{breadcrumbs:{},fluid:{type:Boolean,default:!0}},setup(t){return(i,r)=>(e.openBlock(),e.createBlock(e.unref(a.VContainer),{fluid:t.fluid,class:"h-100 d-flex flex-column py-0 h-100"},{default:e.withCtx(()=>[t.breadcrumbs?(e.openBlock(),e.createBlock(e.unref(a.VBreadcrumbs),{key:0,items:t.breadcrumbs,density:"comfortable",class:"pa-0 flex-wrap"},null,8,["items"])):e.createCommentVNode("",!0),e.renderSlot(i.$slots,"default")]),_:3},8,["fluid"]))}}),S=(t,i)=>{const r=t.__vccOpts||t;for(const[o,n]of i)r[o]=n;return r},M={},T={class:"h-100 d-flex align-center"};function $(t,i){return e.openBlock(),e.createElementBlock(e.Fragment,null,[i[0]||(i[0]=e.createElementVNode("span",{class:"border-s mx-3",style:{height:"32px"}},null,-1)),e.createElementVNode("span",T,[e.renderSlot(t.$slots,"default")])],64)}const F=S(M,[["render",$]]),L=e.defineComponent({__name:"LoginForm",props:e.mergeModels({title:{default:"Log in"},submitButtonText:{default:"Log in"},minWidth:{},maxWidth:{},loading:{type:Boolean},usernameLabel:{default:"Username"},passwordLabel:{default:"Password"}},{username:{default:""},usernameModifiers:{},password:{default:""},passwordModifiers:{}}),emits:e.mergeModels(["submit"],["update:username","update:password"]),setup(t,{emit:i}){const r=e.useModel(t,"username"),o=e.useModel(t,"password"),n=i,f=e.ref(!1);return(u,s)=>(e.openBlock(),e.createBlock(e.unref(a.VCard),{title:t.title,"min-width":t.minWidth,"max-width":t.maxWidth},{default:e.withCtx(()=>[e.createVNode(e.unref(a.VForm),{onSubmit:s[2]||(s[2]=e.withModifiers(l=>n("submit",r.value,o.value),["prevent"])),modelValue:f.value,"onUpdate:modelValue":s[3]||(s[3]=l=>f.value=l)},{default:e.withCtx(()=>[e.createVNode(e.unref(a.VCardText),{class:"d-flex flex-column"},{default:e.withCtx(()=>[e.createVNode(e.unref(a.VTextField),{modelValue:r.value,"onUpdate:modelValue":s[0]||(s[0]=l=>r.value=l),label:t.usernameLabel,rules:[l=>!!l||"Username is required"],"persistent-placeholder":"",autofocus:""},null,8,["modelValue","label","rules"]),e.createVNode(e.unref(a.VTextField),{modelValue:o.value,"onUpdate:modelValue":s[1]||(s[1]=l=>o.value=l),label:t.passwordLabel,type:"password",rules:[l=>!!l||"Password is required"],"persistent-placeholder":""},null,8,["modelValue","label","rules"]),e.createVNode(e.unref(a.VBtn),{disabled:!f.value,type:"submit",color:"primary",variant:"flat",text:t.submitButtonText,loading:t.loading,class:"align-self-center"},null,8,["disabled","text","loading"]),e.renderSlot(u.$slots,"beneath")]),_:3})]),_:3},8,["modelValue"])]),_:3},8,["title","min-width","max-width"]))}}),O={class:"text-no-wrap overflow-hidden"},E=e.defineComponent({__name:"NavDrawerLink",props:{to:{},href:{},target:{},icon:{},text:{}},setup(t){return(i,r)=>(e.openBlock(),e.createBlock(e.unref(a.VListItem),{role:"option",to:t.to,href:t.href,target:t.target,slim:""},{prepend:e.withCtx(()=>[e.createVNode(e.unref(a.VIcon),{icon:t.icon},null,8,["icon"])]),default:e.withCtx(()=>[e.createElementVNode("span",O,e.toDisplayString(t.text),1)]),_:1},8,["to","href","target"]))}}),D=e.defineComponent({__name:"OTPForm",props:e.mergeModels({title:{default:"2FA Verification"},subtitle:{default:"Enter the code from your authenticator app"},submitButtonText:{default:"Verify"},minWidth:{},maxWidth:{},loading:{type:Boolean},length:{default:6},autosubmit:{type:Boolean,default:!0}},{otp:{default:""},otpModifiers:{}}),emits:e.mergeModels(["submit"],["update:otp"]),setup(t,{emit:i}){const r=e.useModel(t,"otp"),o=i,n=t,f=e.computed(()=>r.value.length===n.length);return e.watch(r,()=>{n.autosubmit&&r.value.length===n.length&&o("submit",r.value)}),(u,s)=>(e.openBlock(),e.createBlock(e.unref(a.VCard),{title:t.title,subtitle:t.subtitle,"min-width":t.minWidth,"max-width":t.maxWidth},{default:e.withCtx(()=>[e.createVNode(e.unref(a.VForm),{onSubmit:s[1]||(s[1]=e.withModifiers(l=>o("submit",r.value),["prevent"])),"model-value":f.value},{default:e.withCtx(()=>[e.createVNode(e.unref(a.VCardText),{class:"d-flex flex-column"},{default:e.withCtx(()=>[e.createVNode(e.unref(a.VOtpInput),{modelValue:r.value,"onUpdate:modelValue":s[0]||(s[0]=l=>r.value=l),label:"OTP","persistent-placeholder":"",autofocus:"",length:t.length},null,8,["modelValue","length"]),e.createVNode(e.unref(a.VBtn),{disabled:!f.value,type:"submit",color:"primary",variant:"flat",text:t.submitButtonText,loading:t.loading,class:"align-self-center"},null,8,["disabled","text","loading"]),e.renderSlot(u.$slots,"beneath")]),_:3})]),_:3},8,["model-value"])]),_:3},8,["title","subtitle","min-width","max-width"]))}});function P(t){return!t||t.length===0?{}:{filter:JSON.stringify(t)}}const U=Object.freeze(Object.defineProperty({__proto__:null,asParams:P},Symbol.toStringTag,{value:"Module"}));d.AppBase=C,d.DashboardPage=N,d.FooterSection=F,d.LoginForm=L,d.NavDrawerLink=E,d.OTPForm=D,d.filters=U,d.useColorMode=b,d.useFooter=g,d.useNotify=y,Object.defineProperty(d,Symbol.toStringTag,{value:"Module"})}));
package/package.json CHANGED
@@ -1,6 +1,9 @@
1
1
  {
2
2
  "name": "appsalutely",
3
- "version": "0.1.8",
3
+ "version": "0.1.12",
4
+ "repository": {
5
+ "url": "https://github.com/merlinz01/appsalutely"
6
+ },
4
7
  "type": "module",
5
8
  "files": [
6
9
  "dist"
@@ -22,13 +25,13 @@
22
25
  "ci-tasks": "npm run lint && npm run format && npm run type-check"
23
26
  },
24
27
  "peerDependencies": {
25
- "pinia": "^3.0.2",
26
- "vue": "^3.5.13",
27
- "vue-router": "^4.5.1",
28
- "vuetify": "^3.8.6"
28
+ "pinia": "^3.0.3",
29
+ "vue": "^3.5.22",
30
+ "vue-router": "^5.0.3",
31
+ "vuetify": "^3.10.5"
29
32
  },
30
33
  "devDependencies": {
31
- "@types/node": "^22.15.21",
34
+ "@types/node": "^24.10.13",
32
35
  "@vitejs/plugin-vue": "^5.2.3",
33
36
  "@vue/eslint-config-prettier": "^10.2.0",
34
37
  "@vue/eslint-config-typescript": "^14.5.0",
@@ -40,6 +43,5 @@
40
43
  "vite": "^6.3.5",
41
44
  "vite-plugin-css-injected-by-js": "^3.5.2",
42
45
  "vue-tsc": "^2.2.8"
43
- },
44
- "packageManager": "yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e"
46
+ }
45
47
  }