@wishbone-media/spark 0.5.0 → 0.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +253 -241
- package/package.json +1 -1
- package/src/containers/SparkDefaultContainer.vue +36 -24
- package/src/plugins/fontawesome.js +3 -2
- package/src/plugins/index.js +1 -1
- package/src/stores/app.js +6 -0
package/dist/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { computed as y, resolveComponent as
|
|
1
|
+
import { computed as y, resolveComponent as C, createElementBlock as i, openBlock as r, normalizeClass as g, createElementVNode as s, createVNode as u, unref as c, renderSlot as M, Fragment as D, renderList as S, createCommentVNode as x, toDisplayString as h, reactive as k, ref as E, inject as te, provide as se, markRaw as J, createBlock as Y, withCtx as B, resolveDynamicComponent as T, mergeProps as q, toHandlers as F, createTextVNode as Q, withModifiers as P } from "vue";
|
|
2
2
|
import { library as N } from "@fortawesome/fontawesome-svg-core";
|
|
3
3
|
import { FontAwesomeIcon as ne } from "@fortawesome/vue-fontawesome";
|
|
4
|
-
import { faXmark as ae, faTimes as oe, faStreetView as re, faSortUp as le, faSortDown as ie, faSort as ce, faScaleBalanced as Ae, faSatelliteDish as me, faLayerPlus as
|
|
4
|
+
import { faXmark as ae, faTimes as oe, faStreetView as re, faSortUp as le, faSortDown as ie, faSort as ce, faScaleBalanced as Ae, faSatelliteDish as me, faLayerPlus as de, faLaptopMobile as fe, faInfoCircle as ue, faGripDotsVertical as ve, faGearComplex as ge, faFlag as pe, faFaceSmileWink as xe, faFaceSmileRelaxed as ye, faExclamationTriangle as Be, faEllipsisVertical as be, faEllipsis as we, faEdit as he, faComments as Me, faCircleXmark as Ce, faCircleUser as ze, faChevronUp as Ye, faChevronRight as De, faChevronLeft as Pe, faChevronDown as He, faCheckCircle as Se, faCheck as Ee, faBullhorn as ke, faBellRing as Qe, faBarsSort as Ge, faArrowRightToLine as Ze, faArrowLeftToLine as je } from "@fortawesome/pro-regular-svg-icons";
|
|
5
5
|
import { defineStore as I } from "pinia";
|
|
6
6
|
import { TransitionRoot as U, Dialog as R, TransitionChild as G, DialogPanel as X } from "@headlessui/vue";
|
|
7
7
|
import { useRouter as Ie } from "vue-router";
|
|
@@ -19,8 +19,8 @@ const b = {
|
|
|
19
19
|
farChevronUp: Ye,
|
|
20
20
|
farCircleUser: ze,
|
|
21
21
|
farCircleXmark: Ce,
|
|
22
|
-
farComments:
|
|
23
|
-
farEdit:
|
|
22
|
+
farComments: Me,
|
|
23
|
+
farEdit: he,
|
|
24
24
|
farEllipsis: we,
|
|
25
25
|
farEllipsisVertical: be,
|
|
26
26
|
farExclamationTriangle: Be,
|
|
@@ -30,8 +30,8 @@ const b = {
|
|
|
30
30
|
farGearComplex: ge,
|
|
31
31
|
farGripDotsVertical: ve,
|
|
32
32
|
farInfoCircle: ue,
|
|
33
|
-
farLaptopMobile:
|
|
34
|
-
farLayerPlus:
|
|
33
|
+
farLaptopMobile: fe,
|
|
34
|
+
farLayerPlus: de,
|
|
35
35
|
farSatelliteDish: me,
|
|
36
36
|
farScaleBalanced: Ae,
|
|
37
37
|
farSort: ce,
|
|
@@ -41,8 +41,8 @@ const b = {
|
|
|
41
41
|
farTimes: oe,
|
|
42
42
|
farXmark: ae
|
|
43
43
|
};
|
|
44
|
-
function ys() {
|
|
45
|
-
N.add(...Object.values(
|
|
44
|
+
function ys(e) {
|
|
45
|
+
Object.assign(b, e), N.add(...Object.values(e));
|
|
46
46
|
}
|
|
47
47
|
function Bs(e) {
|
|
48
48
|
N.add(...Object.values(b)), e.component("FontAwesomeIcon", ne);
|
|
@@ -63,12 +63,12 @@ const Le = { class: "flex items-center" }, We = { class: "shrink-0 self-start" }
|
|
|
63
63
|
warning: "bg-yellow-50 border-yellow-200 text-yellow-700",
|
|
64
64
|
danger: "bg-red-50 border-red-200 text-red-700",
|
|
65
65
|
info: "bg-blue-50 border-blue-200 text-blue-700"
|
|
66
|
-
})[a.type]),
|
|
66
|
+
})[a.type]), A = y(() => ({
|
|
67
67
|
success: "text-green-400",
|
|
68
68
|
warning: "text-yellow-400",
|
|
69
69
|
danger: "text-red-400",
|
|
70
70
|
info: "text-blue-400"
|
|
71
|
-
})[a.type]),
|
|
71
|
+
})[a.type]), f = y(() => ({
|
|
72
72
|
success: "farCheckCircle",
|
|
73
73
|
warning: "farExclamationTriangle",
|
|
74
74
|
danger: "farCircleXmark",
|
|
@@ -79,30 +79,30 @@ const Le = { class: "flex items-center" }, We = { class: "shrink-0 self-start" }
|
|
|
79
79
|
danger: "text-red-400 hover:bg-red-100",
|
|
80
80
|
info: "text-blue-400 hover:bg-blue-100"
|
|
81
81
|
})[a.type]);
|
|
82
|
-
return (
|
|
83
|
-
const t =
|
|
84
|
-
return r(),
|
|
82
|
+
return (d, l) => {
|
|
83
|
+
const t = C("font-awesome-icon");
|
|
84
|
+
return r(), i("div", {
|
|
85
85
|
class: g(["rounded-md border p-4", n.value])
|
|
86
86
|
}, [
|
|
87
87
|
s("div", Le, [
|
|
88
88
|
s("div", We, [
|
|
89
89
|
u(t, {
|
|
90
|
-
icon:
|
|
91
|
-
class: g(
|
|
90
|
+
icon: c(b)[f.value],
|
|
91
|
+
class: g(A.value)
|
|
92
92
|
}, null, 8, ["icon", "class"])
|
|
93
93
|
]),
|
|
94
94
|
s("div", Oe, [
|
|
95
|
-
|
|
95
|
+
M(d.$slots, "default")
|
|
96
96
|
]),
|
|
97
97
|
s("div", Je, [
|
|
98
98
|
s("div", Te, [
|
|
99
99
|
s("button", {
|
|
100
100
|
type: "button",
|
|
101
101
|
class: g(["inline-flex rounded-md px-2 py-1.5", v.value]),
|
|
102
|
-
onClick:
|
|
102
|
+
onClick: l[0] || (l[0] = (o) => d.$emit("close"))
|
|
103
103
|
}, [
|
|
104
104
|
u(t, {
|
|
105
|
-
icon:
|
|
105
|
+
icon: c(b).farXmark
|
|
106
106
|
}, null, 8, ["icon"])
|
|
107
107
|
], 2)
|
|
108
108
|
])
|
|
@@ -167,49 +167,49 @@ const Le = { class: "flex items-center" }, We = { class: "shrink-0 self-start" }
|
|
|
167
167
|
},
|
|
168
168
|
emits: ["close", "select"],
|
|
169
169
|
setup(e, { emit: a }) {
|
|
170
|
-
const n = e,
|
|
171
|
-
...
|
|
172
|
-
current:
|
|
173
|
-
}))), v = (
|
|
174
|
-
window.open(
|
|
170
|
+
const n = e, A = a, f = y(() => n.appItems.map((d) => ({
|
|
171
|
+
...d,
|
|
172
|
+
current: d.name === n.currentApp
|
|
173
|
+
}))), v = (d) => {
|
|
174
|
+
window.open(d.href, "_blank"), A("select", d);
|
|
175
175
|
};
|
|
176
|
-
return (
|
|
177
|
-
const t =
|
|
178
|
-
return r(),
|
|
176
|
+
return (d, l) => {
|
|
177
|
+
const t = C("font-awesome-icon");
|
|
178
|
+
return r(), i("div", qe, [
|
|
179
179
|
s("div", Fe, [
|
|
180
180
|
s("div", Ne, [
|
|
181
181
|
s("div", Ue, [
|
|
182
|
-
|
|
182
|
+
l[1] || (l[1] = s("div", null, "Mr Group Network", -1)),
|
|
183
183
|
s("div", Re, [
|
|
184
184
|
u(t, {
|
|
185
|
-
icon:
|
|
185
|
+
icon: c(b).farTimes,
|
|
186
186
|
class: "h-[15px] w-[15px] shrink-0 text-gray-400 cursor-pointer",
|
|
187
|
-
onClick:
|
|
187
|
+
onClick: l[0] || (l[0] = (o) => A("close"))
|
|
188
188
|
}, null, 8, ["icon"])
|
|
189
189
|
])
|
|
190
190
|
]),
|
|
191
|
-
(r(!0),
|
|
191
|
+
(r(!0), i(D, null, S(f.value, (o) => (r(), i("div", {
|
|
192
192
|
key: o.name,
|
|
193
193
|
class: g([o.current ? "bg-gray-50" : "hover:bg-gray-50", "flex px-[22px] py-[15px] cursor-pointer"]),
|
|
194
194
|
onClick: (p) => v(o)
|
|
195
195
|
}, [
|
|
196
196
|
s("div", Ke, [
|
|
197
197
|
s("div", Ve, [
|
|
198
|
-
s("div", _e,
|
|
199
|
-
o.current ? (r(),
|
|
198
|
+
s("div", _e, h(o.name), 1),
|
|
199
|
+
o.current ? (r(), i("span", $e, " Active ")) : x("", !0)
|
|
200
200
|
]),
|
|
201
|
-
s("div", et,
|
|
201
|
+
s("div", et, h(o.description), 1)
|
|
202
202
|
]),
|
|
203
203
|
s("div", tt, [
|
|
204
204
|
u(t, {
|
|
205
205
|
class: g([o.current ? "text-gray-700" : "text-gray-400", "h-5 w-5 shrink-0"]),
|
|
206
|
-
icon:
|
|
206
|
+
icon: c(b)[o.icon]
|
|
207
207
|
}, null, 8, ["class", "icon"])
|
|
208
208
|
])
|
|
209
209
|
], 10, Xe))), 128)),
|
|
210
|
-
|
|
210
|
+
l[2] || (l[2] = s("div", null, null, -1))
|
|
211
211
|
]),
|
|
212
|
-
|
|
212
|
+
l[3] || (l[3] = s("div", { class: "mt-auto" }, [
|
|
213
213
|
s("div", { class: "p-6" }, "Learn More"),
|
|
214
214
|
s("div", { class: "bg-gray-50 p-6" }, "Footer")
|
|
215
215
|
], -1))
|
|
@@ -232,49 +232,49 @@ const Le = { class: "flex items-center" }, We = { class: "shrink-0 self-start" }
|
|
|
232
232
|
},
|
|
233
233
|
{ name: "Mr Antenna", logo: ot, current: !0 }
|
|
234
234
|
]
|
|
235
|
-
}), a = y(() => e.brands.find((
|
|
235
|
+
}), a = y(() => e.brands.find((f) => f.current)), n = y(() => e.brands);
|
|
236
236
|
return {
|
|
237
237
|
state: e,
|
|
238
238
|
currentBrand: a,
|
|
239
239
|
allBrands: n,
|
|
240
|
-
toggleBrand: (
|
|
240
|
+
toggleBrand: (f) => {
|
|
241
241
|
e.brands.forEach((v) => {
|
|
242
|
-
v.current = v ===
|
|
242
|
+
v.current = v === f;
|
|
243
243
|
});
|
|
244
244
|
}
|
|
245
245
|
};
|
|
246
|
-
}), rt = { class: "flex grow flex-col gap-y-5 overflow-y-auto bg-white rounded-lg" }, lt = { class: "flex flex-1 flex-col" }, it = { class: "divide-y divide-gray-200" }, ct = { class: "flex px-[22px] py-2.5 text-[12px] items-center" }, At = { class: "ml-auto flex items-center" }, mt = ["onClick"],
|
|
246
|
+
}), rt = { class: "flex grow flex-col gap-y-5 overflow-y-auto bg-white rounded-lg" }, lt = { class: "flex flex-1 flex-col" }, it = { class: "divide-y divide-gray-200" }, ct = { class: "flex px-[22px] py-2.5 text-[12px] items-center" }, At = { class: "ml-auto flex items-center" }, mt = ["onClick"], dt = { class: "gap-y-1 flex" }, ft = { class: "flex items-center mr-4" }, ut = ["src", "alt"], vt = { class: "ml-auto flex flex-col" }, gt = { class: "text-base text-gray-800 flex items-center" }, pt = { class: "font-medium" }, xt = {
|
|
247
247
|
key: 0,
|
|
248
248
|
class: "inline-flex items-center rounded-full bg-green-100 px-1.5 py-0.5 text-xs font-medium text-green-700 ml-1"
|
|
249
249
|
}, yt = { class: "text-sm text-gray-500" }, Bt = {
|
|
250
250
|
__name: "SparkBrandSelector",
|
|
251
251
|
emits: ["close", "select"],
|
|
252
252
|
setup(e, { emit: a }) {
|
|
253
|
-
const n = a,
|
|
253
|
+
const n = a, A = K(), f = (v) => {
|
|
254
254
|
n("select", v);
|
|
255
255
|
};
|
|
256
|
-
return (v,
|
|
257
|
-
const
|
|
258
|
-
return r(),
|
|
256
|
+
return (v, d) => {
|
|
257
|
+
const l = C("font-awesome-icon");
|
|
258
|
+
return r(), i("div", rt, [
|
|
259
259
|
s("div", lt, [
|
|
260
260
|
s("div", it, [
|
|
261
261
|
s("div", ct, [
|
|
262
|
-
|
|
262
|
+
d[1] || (d[1] = s("div", null, "Filter by Brand", -1)),
|
|
263
263
|
s("div", At, [
|
|
264
|
-
u(
|
|
265
|
-
icon:
|
|
264
|
+
u(l, {
|
|
265
|
+
icon: c(b).farTimes,
|
|
266
266
|
class: "size-4 text-gray-400 cursor-pointer",
|
|
267
|
-
onClick:
|
|
267
|
+
onClick: d[0] || (d[0] = (t) => n("close"))
|
|
268
268
|
}, null, 8, ["icon"])
|
|
269
269
|
])
|
|
270
270
|
]),
|
|
271
|
-
(r(!0),
|
|
271
|
+
(r(!0), i(D, null, S(c(A).allBrands, (t) => (r(), i("div", {
|
|
272
272
|
key: t.name,
|
|
273
273
|
class: g([t.current ? "bg-gray-50" : "hover:bg-gray-50", "flex px-[22px] py-[15px] cursor-pointer"]),
|
|
274
|
-
onClick: (o) =>
|
|
274
|
+
onClick: (o) => f(t)
|
|
275
275
|
}, [
|
|
276
|
-
s("div",
|
|
277
|
-
s("div",
|
|
276
|
+
s("div", dt, [
|
|
277
|
+
s("div", ft, [
|
|
278
278
|
s("img", {
|
|
279
279
|
src: t.logo,
|
|
280
280
|
alt: `${t.name} logo`,
|
|
@@ -283,16 +283,16 @@ const Le = { class: "flex items-center" }, We = { class: "shrink-0 self-start" }
|
|
|
283
283
|
]),
|
|
284
284
|
s("div", vt, [
|
|
285
285
|
s("div", gt, [
|
|
286
|
-
s("div", pt,
|
|
287
|
-
t.current ? (r(),
|
|
286
|
+
s("div", pt, h(t.name), 1),
|
|
287
|
+
t.current ? (r(), i("span", xt, " Current ")) : x("", !0)
|
|
288
288
|
]),
|
|
289
|
-
s("div", yt,
|
|
289
|
+
s("div", yt, h(t.current ? "Current Brand" : "Change to"), 1)
|
|
290
290
|
])
|
|
291
291
|
])
|
|
292
292
|
], 10, mt))), 128)),
|
|
293
|
-
|
|
293
|
+
d[2] || (d[2] = s("div", null, null, -1))
|
|
294
294
|
]),
|
|
295
|
-
|
|
295
|
+
d[3] || (d[3] = s("div", { class: "mt-auto" }, null, -1))
|
|
296
296
|
])
|
|
297
297
|
]);
|
|
298
298
|
};
|
|
@@ -319,9 +319,9 @@ const Le = { class: "flex items-center" }, We = { class: "shrink-0 self-start" }
|
|
|
319
319
|
}
|
|
320
320
|
},
|
|
321
321
|
setup(e) {
|
|
322
|
-
const a = e, n = E(null),
|
|
323
|
-
if (!
|
|
324
|
-
const t =
|
|
322
|
+
const a = e, n = E(null), A = te("buttonGroup", null), f = y(() => {
|
|
323
|
+
if (!A?.isInGroup || !n.value) return null;
|
|
324
|
+
const t = A.getButtonIndex(n.value), o = A.getButtonCount();
|
|
325
325
|
return {
|
|
326
326
|
isFirst: t === 0,
|
|
327
327
|
isLast: t === o - 1,
|
|
@@ -338,18 +338,18 @@ const Le = { class: "flex items-center" }, We = { class: "shrink-0 self-start" }
|
|
|
338
338
|
borderRadius: /^rounded-/,
|
|
339
339
|
background: /^bg-/,
|
|
340
340
|
text: /^text-(?!white|black)/
|
|
341
|
-
},
|
|
341
|
+
}, d = (t, o) => {
|
|
342
342
|
if (!o) return t;
|
|
343
|
-
const p = t.split(" ").filter(Boolean),
|
|
344
|
-
return [...p.filter((Z) => !
|
|
343
|
+
const p = t.split(" ").filter(Boolean), m = o.split(" ").filter(Boolean);
|
|
344
|
+
return [...p.filter((Z) => !m.some((_) => {
|
|
345
345
|
const L = Object.entries(v).find(
|
|
346
346
|
([ee, j]) => j.test(Z)
|
|
347
347
|
)?.[0], $ = Object.entries(v).find(
|
|
348
348
|
([ee, j]) => j.test(_)
|
|
349
349
|
)?.[0];
|
|
350
350
|
return L && L === $;
|
|
351
|
-
})), ...
|
|
352
|
-
},
|
|
351
|
+
})), ...m].join(" ");
|
|
352
|
+
}, l = y(() => {
|
|
353
353
|
let t = "", o = "";
|
|
354
354
|
switch (a.size) {
|
|
355
355
|
case "xs":
|
|
@@ -368,9 +368,9 @@ const Le = { class: "flex items-center" }, We = { class: "shrink-0 self-start" }
|
|
|
368
368
|
t += " px-3.5 py-2.5 text-sm", o = "md";
|
|
369
369
|
break;
|
|
370
370
|
}
|
|
371
|
-
if (
|
|
372
|
-
const { isFirst: p, isLast:
|
|
373
|
-
t += " relative inline-flex items-center focus:z-10", p &&
|
|
371
|
+
if (A?.isInGroup && f.value) {
|
|
372
|
+
const { isFirst: p, isLast: m } = f.value;
|
|
373
|
+
t += " relative inline-flex items-center focus:z-10", p && m ? t += ` rounded-${o}` : p ? t += ` rounded-l-${o} rounded-r-none` : m ? t += ` rounded-r-${o} rounded-l-none -ml-px` : t += " rounded-none -ml-px";
|
|
374
374
|
} else
|
|
375
375
|
t += ` shadow-xs rounded-${o}`;
|
|
376
376
|
switch (a.variant) {
|
|
@@ -395,17 +395,17 @@ const Le = { class: "flex items-center" }, We = { class: "shrink-0 self-start" }
|
|
|
395
395
|
default:
|
|
396
396
|
t += ` bg-${a.variant}-600 hover:bg-${a.variant}-500 text-white`;
|
|
397
397
|
}
|
|
398
|
-
return t =
|
|
398
|
+
return t = d(t, a.buttonClass), t;
|
|
399
399
|
});
|
|
400
|
-
return (t, o) => (r(),
|
|
400
|
+
return (t, o) => (r(), i("button", {
|
|
401
401
|
type: "button",
|
|
402
402
|
ref_key: "buttonRef",
|
|
403
403
|
ref: n,
|
|
404
|
-
class: g(
|
|
404
|
+
class: g(l.value),
|
|
405
405
|
disabled: e.disabled,
|
|
406
406
|
onClick: o[0] || (o[0] = (p) => t.$emit("click"))
|
|
407
407
|
}, [
|
|
408
|
-
|
|
408
|
+
M(t.$slots, "default")
|
|
409
409
|
], 10, bt));
|
|
410
410
|
}
|
|
411
411
|
}, ws = {
|
|
@@ -414,23 +414,23 @@ const Le = { class: "flex items-center" }, We = { class: "shrink-0 self-start" }
|
|
|
414
414
|
const a = E(null);
|
|
415
415
|
return se("buttonGroup", {
|
|
416
416
|
isInGroup: !0,
|
|
417
|
-
getButtonIndex: (
|
|
417
|
+
getButtonIndex: (f) => a.value ? Array.from(a.value.children).indexOf(f) : -1,
|
|
418
418
|
getButtonCount: () => a.value?.children.length || 0
|
|
419
|
-
}), (
|
|
419
|
+
}), (f, v) => (r(), i("div", {
|
|
420
420
|
class: "inline-flex rounded-md shadow-xs",
|
|
421
421
|
ref_key: "groupRef",
|
|
422
422
|
ref: a
|
|
423
423
|
}, [
|
|
424
|
-
|
|
424
|
+
M(f.$slots, "default")
|
|
425
425
|
], 512));
|
|
426
426
|
}
|
|
427
|
-
}, wt = { class: "divide-y divide-gray-300 rounded-lg border border-gray-300 text-gray-700 bg-gray-100" },
|
|
427
|
+
}, wt = { class: "divide-y divide-gray-300 rounded-lg border border-gray-300 text-gray-700 bg-gray-100" }, ht = {
|
|
428
428
|
key: 0,
|
|
429
429
|
class: "p-5"
|
|
430
|
-
},
|
|
430
|
+
}, Mt = {
|
|
431
431
|
key: 1,
|
|
432
432
|
class: "p-5"
|
|
433
|
-
},
|
|
433
|
+
}, hs = {
|
|
434
434
|
__name: "SparkCard",
|
|
435
435
|
props: {
|
|
436
436
|
padded: {
|
|
@@ -444,17 +444,17 @@ const Le = { class: "flex items-center" }, We = { class: "shrink-0 self-start" }
|
|
|
444
444
|
},
|
|
445
445
|
setup(e) {
|
|
446
446
|
const a = e;
|
|
447
|
-
return (n,
|
|
448
|
-
n.$slots.header ? (r(),
|
|
449
|
-
|
|
447
|
+
return (n, A) => (r(), i("div", wt, [
|
|
448
|
+
n.$slots.header ? (r(), i("div", ht, [
|
|
449
|
+
M(n.$slots, "header")
|
|
450
450
|
])) : x("", !0),
|
|
451
451
|
s("div", {
|
|
452
452
|
class: g([a.padded ? a.paddedClass : ""])
|
|
453
453
|
}, [
|
|
454
|
-
|
|
454
|
+
M(n.$slots, "default")
|
|
455
455
|
], 2),
|
|
456
|
-
n.$slots.footer ? (r(),
|
|
457
|
-
|
|
456
|
+
n.$slots.footer ? (r(), i("div", Mt, [
|
|
457
|
+
M(n.$slots, "footer")
|
|
458
458
|
])) : x("", !0)
|
|
459
459
|
]));
|
|
460
460
|
}
|
|
@@ -468,8 +468,8 @@ class Ct {
|
|
|
468
468
|
eventHandlers: {}
|
|
469
469
|
});
|
|
470
470
|
}
|
|
471
|
-
show = (a, n = {},
|
|
472
|
-
this.state.content = J(a), this.state.props = n, this.state.eventHandlers =
|
|
471
|
+
show = (a, n = {}, A = {}) => {
|
|
472
|
+
this.state.content = J(a), this.state.props = n, this.state.eventHandlers = A, this.state.isVisible = !0;
|
|
473
473
|
};
|
|
474
474
|
hide = () => {
|
|
475
475
|
this.state.isVisible = !1, this.state.eventHandlers = {};
|
|
@@ -478,17 +478,17 @@ class Ct {
|
|
|
478
478
|
const H = new Ct(), zt = { class: "fixed inset-0 z-10 w-screen overflow-y-auto" }, Yt = { class: "flex min-h-full items-end justify-center p-4 text-center sm:items-center sm:p-0" }, Dt = {
|
|
479
479
|
__name: "SparkModalContainer",
|
|
480
480
|
setup(e) {
|
|
481
|
-
return (a, n) => (r(),
|
|
481
|
+
return (a, n) => (r(), Y(c(U), {
|
|
482
482
|
as: "template",
|
|
483
|
-
show:
|
|
483
|
+
show: c(H).state.isVisible
|
|
484
484
|
}, {
|
|
485
485
|
default: B(() => [
|
|
486
|
-
u(
|
|
486
|
+
u(c(R), {
|
|
487
487
|
class: "relative z-50",
|
|
488
|
-
onClose:
|
|
488
|
+
onClose: c(H).hide
|
|
489
489
|
}, {
|
|
490
490
|
default: B(() => [
|
|
491
|
-
u(
|
|
491
|
+
u(c(G), {
|
|
492
492
|
as: "template",
|
|
493
493
|
enter: "ease-out duration-300",
|
|
494
494
|
"enter-from": "opacity-0",
|
|
@@ -504,7 +504,7 @@ const H = new Ct(), zt = { class: "fixed inset-0 z-10 w-screen overflow-y-auto"
|
|
|
504
504
|
}),
|
|
505
505
|
s("div", zt, [
|
|
506
506
|
s("div", Yt, [
|
|
507
|
-
u(
|
|
507
|
+
u(c(G), {
|
|
508
508
|
as: "template",
|
|
509
509
|
enter: "ease-out duration-300",
|
|
510
510
|
"enter-from": "opacity-0 translate-y-4 sm:translate-y-0 sm:scale-95",
|
|
@@ -514,9 +514,9 @@ const H = new Ct(), zt = { class: "fixed inset-0 z-10 w-screen overflow-y-auto"
|
|
|
514
514
|
"leave-to": "opacity-0 translate-y-4 sm:translate-y-0 sm:scale-95"
|
|
515
515
|
}, {
|
|
516
516
|
default: B(() => [
|
|
517
|
-
u(
|
|
517
|
+
u(c(X), { class: "relative transform overflow-hidden rounded-lg bg-white text-left shadow-xl transition-all sm:my-8 sm:w-full sm:max-w-lg" }, {
|
|
518
518
|
default: B(() => [
|
|
519
|
-
(r(),
|
|
519
|
+
(r(), Y(T(c(H).state.content), q(c(H).state.props, F(c(H).state.eventHandlers)), null, 16))
|
|
520
520
|
]),
|
|
521
521
|
_: 1
|
|
522
522
|
})
|
|
@@ -535,7 +535,7 @@ const H = new Ct(), zt = { class: "fixed inset-0 z-10 w-screen overflow-y-auto"
|
|
|
535
535
|
}, Pt = { class: "px-4 pt-5 pb-4 sm:p-6" }, Ht = {
|
|
536
536
|
key: 0,
|
|
537
537
|
class: "text-lg font-medium text-gray-900"
|
|
538
|
-
},
|
|
538
|
+
}, Ms = {
|
|
539
539
|
__name: "SparkModalDialog",
|
|
540
540
|
props: {
|
|
541
541
|
title: {
|
|
@@ -585,7 +585,7 @@ const H = new Ct(), zt = { class: "fixed inset-0 z-10 w-screen overflow-y-auto"
|
|
|
585
585
|
"input"
|
|
586
586
|
],
|
|
587
587
|
setup(e) {
|
|
588
|
-
const a = e, n = y(() => !a.buttons || a.buttons.length === 0 ? [{ text: "OK", variant: "primary", event: "ok" }] : a.buttons),
|
|
588
|
+
const a = e, n = y(() => !a.buttons || a.buttons.length === 0 ? [{ text: "OK", variant: "primary", event: "ok" }] : a.buttons), A = y(() => {
|
|
589
589
|
switch (n.value.length) {
|
|
590
590
|
case 1:
|
|
591
591
|
return "sm:grid sm:grid-flow-row-dense";
|
|
@@ -596,53 +596,53 @@ const H = new Ct(), zt = { class: "fixed inset-0 z-10 w-screen overflow-y-auto"
|
|
|
596
596
|
default:
|
|
597
597
|
return "flex flex-col gap-3";
|
|
598
598
|
}
|
|
599
|
-
}),
|
|
599
|
+
}), f = {
|
|
600
600
|
info: "farInfoCircle",
|
|
601
601
|
success: "farCheckCircle",
|
|
602
602
|
warning: "farExclamationTriangle",
|
|
603
603
|
danger: "farCircleXmark"
|
|
604
|
-
}, v = y(() => a.icon ||
|
|
604
|
+
}, v = y(() => a.icon || f[a.type]), d = y(() => ({
|
|
605
605
|
info: "bg-blue-100",
|
|
606
606
|
success: "bg-green-100",
|
|
607
607
|
warning: "bg-yellow-100",
|
|
608
608
|
danger: "bg-red-100"
|
|
609
|
-
})[a.type]),
|
|
609
|
+
})[a.type]), l = y(() => ({
|
|
610
610
|
info: "text-blue-400",
|
|
611
611
|
success: "text-green-400",
|
|
612
612
|
warning: "text-yellow-400",
|
|
613
613
|
danger: "text-red-400"
|
|
614
614
|
})[a.type]);
|
|
615
615
|
return (t, o) => {
|
|
616
|
-
const p =
|
|
617
|
-
return r(),
|
|
618
|
-
v.value ? (r(),
|
|
616
|
+
const p = C("font-awesome-icon");
|
|
617
|
+
return r(), i("div", Pt, [
|
|
618
|
+
v.value ? (r(), i("div", {
|
|
619
619
|
key: 0,
|
|
620
|
-
class: g(["mx-auto flex size-12 items-center justify-center rounded-full",
|
|
620
|
+
class: g(["mx-auto flex size-12 items-center justify-center rounded-full", d.value])
|
|
621
621
|
}, [
|
|
622
622
|
u(p, {
|
|
623
|
-
icon:
|
|
624
|
-
class: g(["h-5 w-5",
|
|
623
|
+
icon: c(b)[v.value],
|
|
624
|
+
class: g(["h-5 w-5", l.value])
|
|
625
625
|
}, null, 8, ["icon", "class"])
|
|
626
626
|
], 2)) : x("", !0),
|
|
627
627
|
s("div", {
|
|
628
628
|
class: g(["text-center", { "mt-3 sm:mt-5": v.value }])
|
|
629
629
|
}, [
|
|
630
|
-
e.title ? (r(),
|
|
631
|
-
e.message ? (r(),
|
|
630
|
+
e.title ? (r(), i("h3", Ht, h(e.title), 1)) : x("", !0),
|
|
631
|
+
e.message ? (r(), i("div", {
|
|
632
632
|
key: 1,
|
|
633
633
|
class: g([{ "mt-2": e.title }, "text-sm text-gray-500"])
|
|
634
|
-
},
|
|
634
|
+
}, h(e.message), 3)) : x("", !0)
|
|
635
635
|
], 2),
|
|
636
636
|
s("div", {
|
|
637
|
-
class: g(["mt-5 sm:mt-6",
|
|
637
|
+
class: g(["mt-5 sm:mt-6", A.value])
|
|
638
638
|
}, [
|
|
639
|
-
(r(!0),
|
|
639
|
+
(r(!0), i(D, null, S(n.value, (m, w) => (r(), Y(c(V), {
|
|
640
640
|
key: w,
|
|
641
|
-
variant:
|
|
642
|
-
onClick: (Z) => t.$emit(
|
|
641
|
+
variant: m.variant,
|
|
642
|
+
onClick: (Z) => t.$emit(m.event, m)
|
|
643
643
|
}, {
|
|
644
644
|
default: B(() => [
|
|
645
|
-
Q(
|
|
645
|
+
Q(h(m.text), 1)
|
|
646
646
|
]),
|
|
647
647
|
_: 2
|
|
648
648
|
}, 1032, ["variant", "onClick"]))), 128))
|
|
@@ -665,18 +665,18 @@ const H = new Ct(), zt = { class: "fixed inset-0 z-10 w-screen overflow-y-auto"
|
|
|
665
665
|
},
|
|
666
666
|
setup(e) {
|
|
667
667
|
const a = E(null);
|
|
668
|
-
return (n,
|
|
668
|
+
return (n, A) => (r(), Y(c(U), {
|
|
669
669
|
show: e.overlayInstance.state.isVisible,
|
|
670
670
|
as: "template"
|
|
671
671
|
}, {
|
|
672
672
|
default: B(() => [
|
|
673
|
-
u(
|
|
673
|
+
u(c(R), {
|
|
674
674
|
initialFocus: a.value,
|
|
675
675
|
class: "relative z-200",
|
|
676
676
|
onClose: e.overlayInstance.close
|
|
677
677
|
}, {
|
|
678
678
|
default: B(() => [
|
|
679
|
-
u(
|
|
679
|
+
u(c(G), {
|
|
680
680
|
as: "template",
|
|
681
681
|
enter: "transition-opacity ease-linear duration-150",
|
|
682
682
|
"enter-from": "opacity-0",
|
|
@@ -685,13 +685,13 @@ const H = new Ct(), zt = { class: "fixed inset-0 z-10 w-screen overflow-y-auto"
|
|
|
685
685
|
"leave-from": "opacity-100",
|
|
686
686
|
"leave-to": "opacity-0"
|
|
687
687
|
}, {
|
|
688
|
-
default: B(() => [...
|
|
688
|
+
default: B(() => [...A[0] || (A[0] = [
|
|
689
689
|
s("div", { class: "fixed inset-0 bg-gray-600/30" }, null, -1)
|
|
690
690
|
])]),
|
|
691
691
|
_: 1
|
|
692
692
|
}),
|
|
693
693
|
s("div", St, [
|
|
694
|
-
u(
|
|
694
|
+
u(c(G), {
|
|
695
695
|
as: "template",
|
|
696
696
|
enter: "transition ease-in-out duration-150 transform",
|
|
697
697
|
"enter-from": e.position === "left" ? "-translate-x-full opacity-0" : "translate-x-full opacity-0",
|
|
@@ -701,7 +701,7 @@ const H = new Ct(), zt = { class: "fixed inset-0 z-10 w-screen overflow-y-auto"
|
|
|
701
701
|
"leave-to": e.position === "left" ? "-translate-x-full opacity-0" : "translate-x-full opacity-0"
|
|
702
702
|
}, {
|
|
703
703
|
default: B(() => [
|
|
704
|
-
u(
|
|
704
|
+
u(c(X), {
|
|
705
705
|
ref_key: "panelRef",
|
|
706
706
|
ref: a,
|
|
707
707
|
class: g([
|
|
@@ -710,7 +710,7 @@ const H = new Ct(), zt = { class: "fixed inset-0 z-10 w-screen overflow-y-auto"
|
|
|
710
710
|
])
|
|
711
711
|
}, {
|
|
712
712
|
default: B(() => [
|
|
713
|
-
(r(),
|
|
713
|
+
(r(), Y(T(e.overlayInstance.state.content), q({ ...n.$attrs, ...e.overlayInstance.state.props }, F(e.overlayInstance.state.eventHandlers)), null, 16))
|
|
714
714
|
]),
|
|
715
715
|
_: 1
|
|
716
716
|
}, 8, ["class"])
|
|
@@ -736,19 +736,19 @@ function O() {
|
|
|
736
736
|
e.isVisible = !e.isVisible;
|
|
737
737
|
}, n = () => {
|
|
738
738
|
e.isVisible = !1, e.eventHandlers = {};
|
|
739
|
-
},
|
|
739
|
+
}, A = () => {
|
|
740
740
|
e.isVisible = !0;
|
|
741
|
-
},
|
|
742
|
-
e.content = J(
|
|
741
|
+
}, f = (d, l = {}, t = {}) => {
|
|
742
|
+
e.content = J(d), e.props = l, e.eventHandlers = t;
|
|
743
743
|
};
|
|
744
744
|
return {
|
|
745
745
|
state: e,
|
|
746
746
|
toggle: a,
|
|
747
747
|
close: n,
|
|
748
|
-
open:
|
|
749
|
-
setContent:
|
|
750
|
-
show: (
|
|
751
|
-
|
|
748
|
+
open: A,
|
|
749
|
+
setContent: f,
|
|
750
|
+
show: (d, l = {}, t = {}) => {
|
|
751
|
+
d && f(d, l, t), A();
|
|
752
752
|
}
|
|
753
753
|
};
|
|
754
754
|
}
|
|
@@ -756,11 +756,11 @@ class Et {
|
|
|
756
756
|
constructor() {
|
|
757
757
|
this.left = O(), this.right = O();
|
|
758
758
|
}
|
|
759
|
-
showLeft = (a, n = {},
|
|
760
|
-
this.left.show(a, n,
|
|
759
|
+
showLeft = (a, n = {}, A = {}) => {
|
|
760
|
+
this.left.show(a, n, A);
|
|
761
761
|
};
|
|
762
|
-
showRight = (a, n = {},
|
|
763
|
-
this.right.show(a, n,
|
|
762
|
+
showRight = (a, n = {}, A = {}) => {
|
|
763
|
+
this.right.show(a, n, A);
|
|
764
764
|
};
|
|
765
765
|
closeLeft = () => {
|
|
766
766
|
this.left.close();
|
|
@@ -772,7 +772,7 @@ class Et {
|
|
|
772
772
|
this.left.close(), this.right.close();
|
|
773
773
|
};
|
|
774
774
|
}
|
|
775
|
-
const
|
|
775
|
+
const z = new Et(), kt = { class: "flex grow m-2.5 p-[10px] rounded-lg" }, Qt = { class: "flex flex-1 flex-col" }, Gt = {
|
|
776
776
|
class: "flex flex-1 flex-col gap-y-7",
|
|
777
777
|
role: "list"
|
|
778
778
|
}, Zt = { role: "list" }, jt = { class: "flex items-center pb-8" }, It = ["href", "onClick"], Lt = {
|
|
@@ -797,24 +797,24 @@ const C = new Et(), kt = { class: "flex grow m-2.5 p-[10px] rounded-lg" }, Qt =
|
|
|
797
797
|
}
|
|
798
798
|
},
|
|
799
799
|
setup(e) {
|
|
800
|
-
const a = e, n = K(),
|
|
801
|
-
|
|
800
|
+
const a = e, n = K(), A = () => {
|
|
801
|
+
z.showRight(st, {
|
|
802
802
|
currentApp: a.appStore.state.app
|
|
803
803
|
});
|
|
804
|
-
},
|
|
805
|
-
|
|
804
|
+
}, f = () => {
|
|
805
|
+
z.showLeft(
|
|
806
806
|
Bt,
|
|
807
807
|
{},
|
|
808
808
|
{
|
|
809
|
-
select: (
|
|
810
|
-
n.toggleBrand(
|
|
809
|
+
select: (l) => {
|
|
810
|
+
n.toggleBrand(l), z.closeLeft();
|
|
811
811
|
}
|
|
812
812
|
}
|
|
813
813
|
);
|
|
814
|
-
}, v = y(() => a.mainNavStore.state.hidden ? ["w-0 overflow-hidden"] : [a.mainNavStore.state.collapsed ? "w-[80px]" : "w-[240px]"]),
|
|
815
|
-
return (
|
|
816
|
-
const o =
|
|
817
|
-
return r(),
|
|
814
|
+
}, v = y(() => a.mainNavStore.state.hidden ? ["w-0 overflow-hidden"] : [a.mainNavStore.state.collapsed ? "w-[80px]" : "w-[240px]"]), d = y(() => a.mainNavStore.state.hidden ? ["pl-2.5"] : [a.mainNavStore.state.collapsed ? "pl-[80px]" : "pl-[240px]"]);
|
|
815
|
+
return (l, t) => {
|
|
816
|
+
const o = C("font-awesome-icon"), p = C("router-view");
|
|
817
|
+
return r(), i(D, null, [
|
|
818
818
|
s("div", {
|
|
819
819
|
class: g([v.value, "fixed inset-y-0 flex transition-all z-100"])
|
|
820
820
|
}, [
|
|
@@ -826,52 +826,52 @@ const C = new Et(), kt = { class: "flex grow m-2.5 p-[10px] rounded-lg" }, Qt =
|
|
|
826
826
|
s("li", jt, [
|
|
827
827
|
s("a", {
|
|
828
828
|
class: "grid w-[40px] h-[40px] place-items-center rounded-md bg-primary-600 text-white text-[13px] cursor-pointer",
|
|
829
|
-
onClick: t[0] || (t[0] = P((
|
|
829
|
+
onClick: t[0] || (t[0] = P((m) => e.mainNavStore.goto(e.appStore.state.homeRoute), ["prevent"]))
|
|
830
830
|
}, [
|
|
831
831
|
u(o, {
|
|
832
|
-
icon:
|
|
832
|
+
icon: c(b)[e.appStore.state.icon],
|
|
833
833
|
class: "size-5"
|
|
834
834
|
}, null, 8, ["icon"])
|
|
835
835
|
]),
|
|
836
|
-
e.mainNavStore.state.collapsed ? x("", !0) : (r(),
|
|
836
|
+
e.mainNavStore.state.collapsed ? x("", !0) : (r(), i("a", {
|
|
837
837
|
key: 0,
|
|
838
|
-
onClick: t[1] || (t[1] = P((
|
|
838
|
+
onClick: t[1] || (t[1] = P((m) => e.mainNavStore.goto(e.appStore.state.homeRoute), ["prevent"])),
|
|
839
839
|
class: "font-medium text-gray-800 ml-[10px] cursor-pointer"
|
|
840
|
-
},
|
|
840
|
+
}, h(e.appStore.state.app), 1))
|
|
841
841
|
]),
|
|
842
|
-
(r(!0),
|
|
843
|
-
key:
|
|
842
|
+
(r(!0), i(D, null, S(e.mainNavStore.state.menu, (m) => (r(), i("li", {
|
|
843
|
+
key: m.name,
|
|
844
844
|
class: g({
|
|
845
|
-
"mt-[10px]":
|
|
845
|
+
"mt-[10px]": m.children
|
|
846
846
|
})
|
|
847
847
|
}, [
|
|
848
848
|
s("a", {
|
|
849
849
|
class: g([{
|
|
850
|
-
"bg-gray-100":
|
|
851
|
-
"hover:bg-gray-100":
|
|
850
|
+
"bg-gray-100": m.current,
|
|
851
|
+
"hover:bg-gray-100": m?.href
|
|
852
852
|
}, "h-[37px] sgroup flex items-center gap-x-2 rounded-md p-3 text-gray-800 leading-5 transition-all duration-300 ease-in-out"]),
|
|
853
|
-
href:
|
|
854
|
-
onClick: P((w) => e.mainNavStore.goto(
|
|
853
|
+
href: m?.href,
|
|
854
|
+
onClick: P((w) => e.mainNavStore.goto(m.href), ["prevent"])
|
|
855
855
|
}, [
|
|
856
|
-
|
|
856
|
+
m.icon ? (r(), Y(o, {
|
|
857
857
|
key: 0,
|
|
858
|
-
icon:
|
|
859
|
-
class: g([[(
|
|
858
|
+
icon: c(b)[m.icon],
|
|
859
|
+
class: g([[(m.current, "text-gray-400")], "size-4"])
|
|
860
860
|
}, null, 8, ["icon", "class"])) : x("", !0),
|
|
861
|
-
e.mainNavStore.state.collapsed ?
|
|
861
|
+
e.mainNavStore.state.collapsed ? m?.children ? (r(), i("div", Lt, [...t[4] || (t[4] = [
|
|
862
862
|
s("div", { class: "w-[10px] h-px bg-gray-400" }, null, -1)
|
|
863
|
-
])])) : x("", !0) : (r(),
|
|
863
|
+
])])) : x("", !0) : (r(), i("span", {
|
|
864
864
|
key: 1,
|
|
865
865
|
class: g({
|
|
866
|
-
"text-[11px]":
|
|
867
|
-
"text-[13px]": !
|
|
868
|
-
"font-semibold":
|
|
869
|
-
"text-gray-500":
|
|
866
|
+
"text-[11px]": m?.children,
|
|
867
|
+
"text-[13px]": !m?.children,
|
|
868
|
+
"font-semibold": m?.children,
|
|
869
|
+
"text-gray-500": m?.children
|
|
870
870
|
})
|
|
871
|
-
},
|
|
871
|
+
}, h(m.name), 3))
|
|
872
872
|
], 10, It),
|
|
873
|
-
|
|
874
|
-
(r(!0),
|
|
873
|
+
m.children ? (r(), i("ul", Wt, [
|
|
874
|
+
(r(!0), i(D, null, S(m.children, (w) => (r(), i("li", {
|
|
875
875
|
key: w.name
|
|
876
876
|
}, [
|
|
877
877
|
s("a", {
|
|
@@ -879,12 +879,12 @@ const C = new Et(), kt = { class: "flex grow m-2.5 p-[10px] rounded-lg" }, Qt =
|
|
|
879
879
|
href: w.href,
|
|
880
880
|
onClick: P((Z) => e.mainNavStore.goto(w.href), ["prevent"])
|
|
881
881
|
}, [
|
|
882
|
-
w.icon ? (r(),
|
|
882
|
+
w.icon ? (r(), Y(o, {
|
|
883
883
|
key: 0,
|
|
884
|
-
icon:
|
|
884
|
+
icon: c(b)[w.icon],
|
|
885
885
|
class: g([[(w.current, "text-gray-400")], "size-4"])
|
|
886
886
|
}, null, 8, ["icon", "class"])) : x("", !0),
|
|
887
|
-
e.mainNavStore.state.collapsed ? x("", !0) : (r(),
|
|
887
|
+
e.mainNavStore.state.collapsed ? x("", !0) : (r(), i("span", Jt, h(w.name), 1))
|
|
888
888
|
], 10, Ot)
|
|
889
889
|
]))), 128))
|
|
890
890
|
])) : x("", !0)
|
|
@@ -892,13 +892,14 @@ const C = new Et(), kt = { class: "flex grow m-2.5 p-[10px] rounded-lg" }, Qt =
|
|
|
892
892
|
])
|
|
893
893
|
]),
|
|
894
894
|
s("li", Tt, [
|
|
895
|
+
M(l.$slots, "sidebar-footer"),
|
|
895
896
|
s("a", {
|
|
896
897
|
class: "font-medium grid place-content-center gap-x-3 rounded-md h-10 p-2.5 text-gray-800 text-[13px] hover:bg-gray-100 transition-all duration-300 ease-in-out",
|
|
897
898
|
href: "#",
|
|
898
|
-
onClick: t[2] || (t[2] = P((
|
|
899
|
+
onClick: t[2] || (t[2] = P((m) => e.mainNavStore.toggleCollapsed(), ["prevent"]))
|
|
899
900
|
}, [
|
|
900
901
|
u(o, {
|
|
901
|
-
icon:
|
|
902
|
+
icon: c(b)[e.mainNavStore.state.collapsed ? "farArrowRightToLine" : "farArrowLeftToLine"],
|
|
902
903
|
class: "class-5"
|
|
903
904
|
}, null, 8, ["icon"])
|
|
904
905
|
])
|
|
@@ -908,38 +909,46 @@ const C = new Et(), kt = { class: "flex grow m-2.5 p-[10px] rounded-lg" }, Qt =
|
|
|
908
909
|
])
|
|
909
910
|
], 2),
|
|
910
911
|
s("div", {
|
|
911
|
-
class: g([
|
|
912
|
+
class: g([d.value, "h-full transition-all flex flex-col"])
|
|
912
913
|
}, [
|
|
913
914
|
s("div", qt, [
|
|
914
915
|
s("div", Ft, [
|
|
915
916
|
s("div", Nt, [
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
917
|
+
M(l.$slots, "header-left", {}, () => [
|
|
918
|
+
s("div", Ut, [
|
|
919
|
+
u(o, {
|
|
920
|
+
icon: c(b).farBarsSort,
|
|
921
|
+
class: "size-5",
|
|
922
|
+
onClick: t[3] || (t[3] = (m) => e.mainNavStore.toggleHidden())
|
|
923
|
+
}, null, 8, ["icon"])
|
|
924
|
+
])
|
|
922
925
|
]),
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
onClick: d
|
|
926
|
-
}, [
|
|
927
|
-
l(n).currentBrand ? (r(), c("img", {
|
|
926
|
+
M(l.$slots, "header-center", {}, () => [
|
|
927
|
+
e.appStore.state.showBrandSelector ? (r(), i("div", {
|
|
928
928
|
key: 0,
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
|
|
929
|
+
class: "cursor-pointer h-9 flex items-center",
|
|
930
|
+
onClick: f
|
|
931
|
+
}, [
|
|
932
|
+
c(n).currentBrand ? (r(), i("img", {
|
|
933
|
+
key: 0,
|
|
934
|
+
src: c(n).currentBrand.logo,
|
|
935
|
+
alt: "",
|
|
936
|
+
class: "h-[30px] w-auto"
|
|
937
|
+
}, null, 8, Rt)) : x("", !0)
|
|
938
|
+
])) : x("", !0)
|
|
933
939
|
]),
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
|
|
940
|
+
M(l.$slots, "header-right", {}, () => [
|
|
941
|
+
e.appStore.state.showAppSelector ? (r(), i("button", {
|
|
942
|
+
key: 0,
|
|
943
|
+
class: "rounded-sm bg-white w-[42px] h-[42px] ring-1 ring-inset ring-gray-300",
|
|
944
|
+
type: "button",
|
|
945
|
+
onClick: A
|
|
946
|
+
}, [
|
|
947
|
+
u(o, {
|
|
948
|
+
icon: c(b).farGripDotsVertical,
|
|
949
|
+
class: "size-4 text-gray-400"
|
|
950
|
+
}, null, 8, ["icon"])
|
|
951
|
+
])) : x("", !0)
|
|
943
952
|
])
|
|
944
953
|
])
|
|
945
954
|
])
|
|
@@ -948,41 +957,44 @@ const C = new Et(), kt = { class: "flex grow m-2.5 p-[10px] rounded-lg" }, Qt =
|
|
|
948
957
|
u(p)
|
|
949
958
|
])
|
|
950
959
|
], 2),
|
|
951
|
-
u(
|
|
960
|
+
u(c(W), {
|
|
952
961
|
position: "left",
|
|
953
|
-
"overlay-instance":
|
|
954
|
-
onClose:
|
|
962
|
+
"overlay-instance": c(z).left,
|
|
963
|
+
onClose: c(z).closeLeft
|
|
955
964
|
}, null, 8, ["overlay-instance", "onClose"]),
|
|
956
|
-
u(
|
|
965
|
+
u(c(W), {
|
|
957
966
|
position: "right",
|
|
958
|
-
"overlay-instance":
|
|
959
|
-
onClose:
|
|
967
|
+
"overlay-instance": c(z).right,
|
|
968
|
+
onClose: c(z).closeRight
|
|
960
969
|
}, null, 8, ["overlay-instance", "onClose"]),
|
|
961
|
-
u(
|
|
970
|
+
u(c(Dt))
|
|
962
971
|
], 64);
|
|
963
972
|
};
|
|
964
973
|
}
|
|
965
974
|
}, Kt = (e, a) => {
|
|
966
975
|
const n = e.__vccOpts || e;
|
|
967
|
-
for (const [
|
|
968
|
-
n[
|
|
976
|
+
for (const [A, f] of a)
|
|
977
|
+
n[A] = f;
|
|
969
978
|
return n;
|
|
970
979
|
}, Vt = {}, _t = { class: "h-full" };
|
|
971
980
|
function $t(e, a) {
|
|
972
|
-
const n =
|
|
973
|
-
return r(),
|
|
981
|
+
const n = C("router-view");
|
|
982
|
+
return r(), i("main", _t, [
|
|
974
983
|
u(n)
|
|
975
984
|
]);
|
|
976
985
|
}
|
|
977
986
|
const zs = /* @__PURE__ */ Kt(Vt, [["render", $t]]), Ys = I("sparkApp", () => {
|
|
978
987
|
const e = k({
|
|
979
988
|
app: "",
|
|
980
|
-
icon: ""
|
|
989
|
+
icon: "",
|
|
990
|
+
homeRoute: "dashboard",
|
|
991
|
+
showBrandSelector: !0,
|
|
992
|
+
showAppSelector: !0
|
|
981
993
|
});
|
|
982
994
|
return {
|
|
983
995
|
state: e,
|
|
984
996
|
initialize: (n = {}) => {
|
|
985
|
-
e.app = n.app || "", e.icon = n.icon || "";
|
|
997
|
+
e.app = n.app || "", e.icon = n.icon || "", e.homeRoute = n.homeRoute ?? "dashboard", e.showBrandSelector = n.showBrandSelector ?? !0, e.showAppSelector = n.showAppSelector ?? !0;
|
|
986
998
|
}
|
|
987
999
|
};
|
|
988
1000
|
}), Ds = I("sparkNav", () => {
|
|
@@ -990,13 +1002,13 @@ const zs = /* @__PURE__ */ Kt(Vt, [["render", $t]]), Ys = I("sparkApp", () => {
|
|
|
990
1002
|
menu: [],
|
|
991
1003
|
collapsed: !1,
|
|
992
1004
|
hidden: !1
|
|
993
|
-
}), a = Ie(), n = (
|
|
994
|
-
e.menu =
|
|
995
|
-
},
|
|
996
|
-
for (const o of
|
|
1005
|
+
}), a = Ie(), n = (l = []) => {
|
|
1006
|
+
e.menu = l;
|
|
1007
|
+
}, A = (l, t) => {
|
|
1008
|
+
for (const o of l) {
|
|
997
1009
|
if (o.href === t) return o;
|
|
998
1010
|
if (o.children) {
|
|
999
|
-
const p =
|
|
1011
|
+
const p = A(o.children, t);
|
|
1000
1012
|
if (p) return p;
|
|
1001
1013
|
}
|
|
1002
1014
|
}
|
|
@@ -1005,20 +1017,20 @@ const zs = /* @__PURE__ */ Kt(Vt, [["render", $t]]), Ys = I("sparkApp", () => {
|
|
|
1005
1017
|
return {
|
|
1006
1018
|
state: e,
|
|
1007
1019
|
initialize: n,
|
|
1008
|
-
goto: async (
|
|
1009
|
-
if (
|
|
1020
|
+
goto: async (l) => {
|
|
1021
|
+
if (l) {
|
|
1010
1022
|
const t = (p) => {
|
|
1011
|
-
p.forEach((
|
|
1012
|
-
|
|
1023
|
+
p.forEach((m) => {
|
|
1024
|
+
m.current = m.href === l, m.children && t(m.children);
|
|
1013
1025
|
});
|
|
1014
1026
|
};
|
|
1015
1027
|
t(e.menu);
|
|
1016
|
-
const o =
|
|
1028
|
+
const o = A(e.menu, l);
|
|
1017
1029
|
if (o && typeof o.action == "function") {
|
|
1018
1030
|
o.action();
|
|
1019
1031
|
return;
|
|
1020
1032
|
}
|
|
1021
|
-
await a.push(
|
|
1033
|
+
await a.push(l);
|
|
1022
1034
|
}
|
|
1023
1035
|
},
|
|
1024
1036
|
toggleCollapsed: () => {
|
|
@@ -1067,26 +1079,26 @@ const zs = /* @__PURE__ */ Kt(Vt, [["render", $t]]), Ys = I("sparkApp", () => {
|
|
|
1067
1079
|
},
|
|
1068
1080
|
emits: ["login-success", "login-error"],
|
|
1069
1081
|
setup(e, { emit: a }) {
|
|
1070
|
-
const n = e,
|
|
1071
|
-
|
|
1082
|
+
const n = e, A = a, f = E(!1), v = E(""), d = async (l) => {
|
|
1083
|
+
f.value = !0, v.value = "";
|
|
1072
1084
|
try {
|
|
1073
|
-
await n.onLogin(
|
|
1085
|
+
await n.onLogin(l), A("login-success");
|
|
1074
1086
|
} catch (t) {
|
|
1075
|
-
v.value = t.message || "Login failed. Please try again.",
|
|
1087
|
+
v.value = t.message || "Login failed. Please try again.", A("login-error", t);
|
|
1076
1088
|
} finally {
|
|
1077
|
-
|
|
1089
|
+
f.value = !1;
|
|
1078
1090
|
}
|
|
1079
1091
|
};
|
|
1080
|
-
return (
|
|
1081
|
-
const o =
|
|
1082
|
-
return r(),
|
|
1092
|
+
return (l, t) => {
|
|
1093
|
+
const o = C("FormKit"), p = C("router-link");
|
|
1094
|
+
return r(), i("div", es, [
|
|
1083
1095
|
s("div", ts, [
|
|
1084
|
-
n.logo ? (r(),
|
|
1096
|
+
n.logo ? (r(), i("img", {
|
|
1085
1097
|
key: 0,
|
|
1086
1098
|
src: n.logo,
|
|
1087
1099
|
alt: "Logo",
|
|
1088
1100
|
class: "h-[23px] w-auto"
|
|
1089
|
-
}, null, 8, ss)) : (r(),
|
|
1101
|
+
}, null, 8, ss)) : (r(), i("svg", ns, [...t[0] || (t[0] = [
|
|
1090
1102
|
s("path", {
|
|
1091
1103
|
d: "M49.2029 17.1264V8.03835H44.0829V5.22235H58.0989V8.03835H52.9629V17.1264H49.2029Z",
|
|
1092
1104
|
fill: "#1C64F2"
|
|
@@ -1108,11 +1120,11 @@ const zs = /* @__PURE__ */ Kt(Vt, [["render", $t]]), Ys = I("sparkApp", () => {
|
|
|
1108
1120
|
s("div", as, [
|
|
1109
1121
|
s("div", os, [
|
|
1110
1122
|
t[1] || (t[1] = s("h1", { class: "text-4xl text-gray-900 semibold tracking-tight mb-3" }, "Log in", -1)),
|
|
1111
|
-
s("p", rs, " Welcome back" +
|
|
1123
|
+
s("p", rs, " Welcome back" + h(n.appName ? ` to ${n.appName}` : "") + "! Please enter your details. ", 1)
|
|
1112
1124
|
]),
|
|
1113
1125
|
u(o, {
|
|
1114
1126
|
type: "form",
|
|
1115
|
-
onSubmit:
|
|
1127
|
+
onSubmit: d,
|
|
1116
1128
|
actions: !1
|
|
1117
1129
|
}, {
|
|
1118
1130
|
default: B(() => [
|
|
@@ -1148,22 +1160,22 @@ const zs = /* @__PURE__ */ Kt(Vt, [["render", $t]]), Ys = I("sparkApp", () => {
|
|
|
1148
1160
|
_: 1
|
|
1149
1161
|
}, 8, ["to"])
|
|
1150
1162
|
]),
|
|
1151
|
-
v.value ? (r(),
|
|
1152
|
-
u(
|
|
1163
|
+
v.value ? (r(), i("div", is, h(v.value), 1)) : x("", !0),
|
|
1164
|
+
u(c(V), {
|
|
1153
1165
|
type: "submit",
|
|
1154
1166
|
size: "xl",
|
|
1155
|
-
disabled:
|
|
1167
|
+
disabled: f.value,
|
|
1156
1168
|
"button-class": "w-full"
|
|
1157
1169
|
}, {
|
|
1158
1170
|
default: B(() => [
|
|
1159
|
-
|
|
1171
|
+
f.value ? (r(), i("span", As, "Signing in...")) : (r(), i("span", cs, "Sign in"))
|
|
1160
1172
|
]),
|
|
1161
1173
|
_: 1
|
|
1162
1174
|
}, 8, ["disabled"])
|
|
1163
1175
|
]),
|
|
1164
1176
|
_: 1
|
|
1165
1177
|
}),
|
|
1166
|
-
n.signupRoute ? (r(),
|
|
1178
|
+
n.signupRoute ? (r(), i("div", ms, [
|
|
1167
1179
|
t[4] || (t[4] = Q(" Don't have an account? ", -1)),
|
|
1168
1180
|
u(p, {
|
|
1169
1181
|
to: n.signupRoute,
|
|
@@ -1187,17 +1199,17 @@ export {
|
|
|
1187
1199
|
Bt as SparkBrandSelector,
|
|
1188
1200
|
V as SparkButton,
|
|
1189
1201
|
ws as SparkButtonGroup,
|
|
1190
|
-
|
|
1202
|
+
hs as SparkCard,
|
|
1191
1203
|
Cs as SparkDefaultContainer,
|
|
1192
1204
|
Ps as SparkLoginView,
|
|
1193
1205
|
Dt as SparkModalContainer,
|
|
1194
|
-
|
|
1206
|
+
Ms as SparkModalDialog,
|
|
1195
1207
|
W as SparkOverlay,
|
|
1196
1208
|
zs as SparkPublicContainer,
|
|
1197
|
-
ys as
|
|
1209
|
+
ys as addIcons,
|
|
1198
1210
|
Bs as setupFontAwesome,
|
|
1199
1211
|
H as sparkModalService,
|
|
1200
|
-
|
|
1212
|
+
z as sparkOverlayService,
|
|
1201
1213
|
Ys as useSparkAppStore,
|
|
1202
1214
|
K as useSparkBrandFilterStore,
|
|
1203
1215
|
Ds as useSparkNavStore,
|
package/package.json
CHANGED
|
@@ -8,12 +8,12 @@
|
|
|
8
8
|
<li class="flex items-center pb-8">
|
|
9
9
|
<a
|
|
10
10
|
class="grid w-[40px] h-[40px] place-items-center rounded-md bg-primary-600 text-white text-[13px] cursor-pointer"
|
|
11
|
-
@click.prevent="mainNavStore.goto(
|
|
11
|
+
@click.prevent="mainNavStore.goto(appStore.state.homeRoute)"
|
|
12
12
|
>
|
|
13
13
|
<font-awesome-icon :icon="Icons[appStore.state.icon]" class="size-5" />
|
|
14
14
|
</a>
|
|
15
15
|
<a
|
|
16
|
-
@click.prevent="mainNavStore.goto(
|
|
16
|
+
@click.prevent="mainNavStore.goto(appStore.state.homeRoute)"
|
|
17
17
|
v-if="!mainNavStore.state.collapsed"
|
|
18
18
|
class="font-medium text-gray-800 ml-[10px] cursor-pointer"
|
|
19
19
|
>
|
|
@@ -81,6 +81,7 @@
|
|
|
81
81
|
</ul>
|
|
82
82
|
</li>
|
|
83
83
|
<li class="mt-auto">
|
|
84
|
+
<slot name="sidebar-footer" />
|
|
84
85
|
<a
|
|
85
86
|
class="font-medium grid place-content-center gap-x-3 rounded-md h-10 p-2.5 text-gray-800 text-[13px] hover:bg-gray-100 transition-all duration-300 ease-in-out"
|
|
86
87
|
href="#"
|
|
@@ -103,30 +104,41 @@
|
|
|
103
104
|
<div class="p-[10px] flex-shrink-0">
|
|
104
105
|
<div class="flex flex-1 items-center gap-x-6">
|
|
105
106
|
<div class="relative flex flex-1 items-center justify-between">
|
|
106
|
-
<
|
|
107
|
-
<
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
107
|
+
<slot name="header-left">
|
|
108
|
+
<div class="cursor-pointer">
|
|
109
|
+
<font-awesome-icon
|
|
110
|
+
:icon="Icons.farBarsSort"
|
|
111
|
+
class="size-5"
|
|
112
|
+
@click="mainNavStore.toggleHidden()"
|
|
113
|
+
/>
|
|
114
|
+
</div>
|
|
115
|
+
</slot>
|
|
113
116
|
|
|
114
|
-
<
|
|
115
|
-
<
|
|
116
|
-
v-if="
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
117
|
+
<slot name="header-center">
|
|
118
|
+
<div
|
|
119
|
+
v-if="appStore.state.showBrandSelector"
|
|
120
|
+
class="cursor-pointer h-9 flex items-center"
|
|
121
|
+
@click="toggleBrandSelector"
|
|
122
|
+
>
|
|
123
|
+
<img
|
|
124
|
+
v-if="sparkBrandFilterStore.currentBrand"
|
|
125
|
+
:src="sparkBrandFilterStore.currentBrand.logo"
|
|
126
|
+
alt=""
|
|
127
|
+
class="h-[30px] w-auto"
|
|
128
|
+
/>
|
|
129
|
+
</div>
|
|
130
|
+
</slot>
|
|
122
131
|
|
|
123
|
-
<
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
132
|
+
<slot name="header-right">
|
|
133
|
+
<button
|
|
134
|
+
v-if="appStore.state.showAppSelector"
|
|
135
|
+
class="rounded-sm bg-white w-[42px] h-[42px] ring-1 ring-inset ring-gray-300"
|
|
136
|
+
type="button"
|
|
137
|
+
@click="toggleAppSelector"
|
|
138
|
+
>
|
|
139
|
+
<font-awesome-icon :icon="Icons.farGripDotsVertical" class="size-4 text-gray-400" />
|
|
140
|
+
</button>
|
|
141
|
+
</slot>
|
|
130
142
|
</div>
|
|
131
143
|
</div>
|
|
132
144
|
</div>
|
|
@@ -75,8 +75,9 @@ export const Icons = {
|
|
|
75
75
|
farXmark: faXmark,
|
|
76
76
|
}
|
|
77
77
|
|
|
78
|
-
export function
|
|
79
|
-
|
|
78
|
+
export function addIcons(newIcons) {
|
|
79
|
+
Object.assign(Icons, newIcons)
|
|
80
|
+
library.add(...Object.values(newIcons))
|
|
80
81
|
}
|
|
81
82
|
|
|
82
83
|
export function setupFontAwesome(app) {
|
package/src/plugins/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { Icons,
|
|
1
|
+
export { Icons, addIcons, setupFontAwesome } from './fontawesome.js'
|
package/src/stores/app.js
CHANGED
|
@@ -5,11 +5,17 @@ export const useSparkAppStore = defineStore('sparkApp', () => {
|
|
|
5
5
|
const state = reactive({
|
|
6
6
|
app: '',
|
|
7
7
|
icon: '',
|
|
8
|
+
homeRoute: 'dashboard',
|
|
9
|
+
showBrandSelector: true,
|
|
10
|
+
showAppSelector: true,
|
|
8
11
|
})
|
|
9
12
|
|
|
10
13
|
const initialize = (config = {}) => {
|
|
11
14
|
state.app = config.app || ''
|
|
12
15
|
state.icon = config.icon || ''
|
|
16
|
+
state.homeRoute = config.homeRoute ?? 'dashboard'
|
|
17
|
+
state.showBrandSelector = config.showBrandSelector ?? true
|
|
18
|
+
state.showAppSelector = config.showAppSelector ?? true
|
|
13
19
|
}
|
|
14
20
|
|
|
15
21
|
return {
|