spicykatsu 0.0.38 → 0.0.40

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,822 +1,726 @@
1
- import { ref as w, watch as Y, openBlock as n, createBlock as R, Transition as E, withCtx as z, createElementBlock as s, normalizeClass as k, withKeys as A, toDisplayString as h, createCommentVNode as v, renderSlot as b, computed as C, normalizeStyle as I, onMounted as q, onUnmounted as G, createElementVNode as f, createVNode as J, Fragment as D, renderList as F, withDirectives as _, vModelCheckbox as Q, createTextVNode as U, vModelText as W, mergeProps as Z, withModifiers as N, reactive as ee, nextTick as te } from "vue";
2
- const le = ["aria-label"], oe = {
1
+ import { defineComponent as b, ref as k, watch as Y, openBlock as r, createBlock as X, Transition as P, withCtx as A, createElementBlock as c, normalizeClass as C, withKeys as M, toDisplayString as v, createCommentVNode as f, renderSlot as m, computed as g, resolveDirective as q, withDirectives as D, normalizeStyle as S, createElementVNode as h, onMounted as G, onUnmounted as J, createVNode as Q, Fragment as z, renderList as E, vModelText as x, createTextVNode as Z, mergeProps as ee, withModifiers as L, reactive as te, nextTick as oe } from "vue";
2
+ const le = ["aria-label"], ae = {
3
3
  key: 0,
4
4
  class: "spicyAlertIcon"
5
- }, ae = {
5
+ }, se = {
6
6
  key: 1,
7
7
  class: "spicyAlertText"
8
- }, ne = {
8
+ }, ne = /* @__PURE__ */ b({
9
9
  __name: "SpicyAlert",
10
10
  props: {
11
- variant: {
12
- type: String,
13
- default: "info",
14
- validator: (e) => ["info", "success", "warning", "error", "custom"].includes(e)
15
- },
16
- text: { type: String, default: "" },
17
- icon: String,
18
- iconOnly: Boolean,
19
- closable: { type: Boolean, default: !1 },
20
- autoClose: { type: Number, default: 0 }
11
+ variant: { default: "info" },
12
+ text: { default: "" },
13
+ icon: { default: "" },
14
+ iconOnly: { type: Boolean, default: !1 },
15
+ closable: { type: Boolean, default: !0 },
16
+ autoClose: { default: 0 }
21
17
  },
22
18
  setup(e) {
23
- const t = e, l = w(!0), a = () => {
24
- l.value = !1;
19
+ const t = e, o = k(!0), a = () => {
20
+ o.value = !1;
25
21
  };
26
22
  return Y(
27
23
  () => t.autoClose,
28
- (o) => {
29
- o > 0 && setTimeout(() => {
30
- l.value = !1;
31
- }, o);
24
+ (l) => {
25
+ l && l > 0 && setTimeout(() => {
26
+ a();
27
+ }, l);
32
28
  }
33
- ), (o, r) => (n(), R(E, { name: "fade" }, {
34
- default: z(() => [
35
- l.value ? (n(), s("div", {
29
+ ), (l, s) => (r(), X(P, { name: "fade" }, {
30
+ default: A(() => [
31
+ o.value ? (r(), c("div", {
36
32
  key: 0,
37
- class: k(["spicyAlert", e.variant]),
33
+ class: C(["spicyAlert", l.variant]),
38
34
  "aria-atomic": "true",
39
- "aria-label": e.text,
35
+ "aria-label": l.text,
40
36
  role: "alert",
41
- onKeydown: A(a, ["enter"])
37
+ onKeydown: M(a, ["enter"])
42
38
  }, [
43
- e.iconOnly || e.text ? (n(), s("span", oe, h(e.icon), 1)) : v("", !0),
44
- !e.iconOnly && e.text ? (n(), s("span", ae, h(e.text), 1)) : v("", !0),
45
- e.closable ? (n(), s("button", {
39
+ l.iconOnly || l.text ? (r(), c("span", ae, v(l.icon), 1)) : f("", !0),
40
+ !l.iconOnly && l.text ? (r(), c("span", se, v(l.text), 1)) : f("", !0),
41
+ l.closable ? (r(), c("button", {
46
42
  key: 2,
47
43
  class: "spicyAlertCloseBtn",
48
44
  onClick: a,
49
45
  "aria-label": "Close alert"
50
- }, " X ")) : v("", !0),
51
- b(o.$slots, "default")
52
- ], 42, le)) : v("", !0)
46
+ }, " X ")) : f("", !0),
47
+ m(l.$slots, "default")
48
+ ], 42, le)) : f("", !0)
53
49
  ]),
54
50
  _: 3
55
51
  }));
56
52
  }
57
- }, se = ["disabled", "aria-label", "aria-disabled", "tabindex"], ie = {
53
+ }), ie = ["disabled", "aria-label", "aria-disabled", "tabindex"], re = {
58
54
  key: 0,
59
- class: "spicyBtnIcon"
60
- }, re = {
55
+ class: "spicyBtnIcon spicyMDI",
56
+ viewBox: "0 0 24 24",
57
+ xmlns: "http://www.w3.org/2000/svg"
58
+ }, ce = ["d"], ue = {
61
59
  key: 1,
60
+ class: "spicyBtnIcon"
61
+ }, de = {
62
+ key: 2,
62
63
  class: "spicyBtnText"
63
- }, ce = {
64
+ }, pe = /* @__PURE__ */ b({
64
65
  __name: "SpicyBtn",
65
66
  props: {
66
- variant: {
67
- type: String,
68
- default: "filled",
69
- validator: (e) => ["outlined", "filled"].includes(e)
70
- },
67
+ variant: { default: "filled" },
71
68
  disabled: { type: Boolean, default: !1 },
72
- text: { type: String, default: "Button" },
73
- icon: String,
74
- bgColor: String,
75
- textColor: String,
76
- hoverColor: String,
77
- borderColor: String,
78
- // Custom color (if outlined variant)
79
- fontSize: { type: [Number, String], default: 16 },
80
- fontWeight: { type: [Number, String], default: 500 }
69
+ text: { default: "" },
70
+ icon: { default: "" },
71
+ mdi: { default: "" },
72
+ bgColor: { default: "" },
73
+ textColor: { default: "#ddd" },
74
+ hoverColor: { default: "" },
75
+ borderColor: { default: "" },
76
+ fontSize: { default: 16 },
77
+ fontWeight: { default: 500 }
81
78
  },
82
79
  emits: ["click"],
83
80
  setup(e, { emit: t }) {
84
- const l = e, a = C(() => ({
85
- "--skFontSize": typeof l.fontSize == "number" ? `${l.fontSize}px` : l.fontSize,
86
- "--skFontWeight": l.fontWeight,
87
- "--skBgColor": l.bgColor,
88
- "--skTextColor": l.textColor,
89
- "--skBorderColor": l.borderColor,
90
- "--hoverColor": l.hoverColor
91
- }));
92
- return (o, r) => (n(), s("button", {
93
- class: k(["spicyBtn", { outlined: e.variant === "outlined", disabled: e.disabled }]),
94
- style: I({ ...a.value }),
95
- disabled: e.disabled,
96
- onClick: r[0] || (r[0] = (d) => o.$emit("click")),
97
- role: "button",
98
- "aria-label": e.text,
99
- "aria-disabled": e.disabled,
100
- tabindex: e.disabled ? -1 : 0
101
- }, [
102
- e.icon ? (n(), s("span", ie, h(e.icon), 1)) : v("", !0),
103
- e.text ? (n(), s("span", re, h(e.text), 1)) : v("", !0),
104
- b(o.$slots, "default")
105
- ], 14, se));
81
+ const o = e, a = g(() => ({
82
+ "--skFontSize": typeof o.fontSize == "number" ? `${o.fontSize}px` : o.fontSize,
83
+ "--skFontWeight": o.fontWeight,
84
+ "--skBgColor": o.bgColor,
85
+ "--skTextColor": o.textColor,
86
+ "--skBorderColor": o.borderColor,
87
+ "--hoverColor": o.hoverColor
88
+ })), l = g(() => !o.text && (o.icon || o.mdi));
89
+ return (s, u) => {
90
+ const i = q("spicyRipple");
91
+ return D((r(), c("button", {
92
+ class: C(["spicyBtn", { outlined: s.variant === "outlined", disabled: s.disabled, isRound: l.value }]),
93
+ style: S({ ...a.value }),
94
+ disabled: s.disabled,
95
+ onClick: u[0] || (u[0] = (d) => s.$emit("click")),
96
+ role: "button",
97
+ "aria-label": s.text,
98
+ "aria-disabled": s.disabled,
99
+ tabindex: s.disabled ? -1 : 0
100
+ }, [
101
+ s.mdi ? (r(), c("svg", re, [
102
+ h("path", {
103
+ fill: "currentColor",
104
+ class: "mdi-icon",
105
+ d: s.mdi
106
+ }, null, 8, ce)
107
+ ])) : f("", !0),
108
+ s.icon && !s.mdi ? (r(), c("span", ue, v(s.icon), 1)) : f("", !0),
109
+ s.text ? (r(), c("span", de, v(s.text), 1)) : f("", !0),
110
+ m(s.$slots, "default")
111
+ ], 14, ie)), [
112
+ [i]
113
+ ]);
114
+ };
106
115
  }
107
- }, ue = { class: "spicyCarouselWrapper" }, de = ["aria-label"], ye = { class: "spicyCarouselInfoText" }, pe = { class: "spicyCarouselTitle" }, fe = { key: 0 }, ve = {
116
+ }), fe = ["aria-label"], ye = { class: "spicyCarouselInfoText" }, he = { class: "spicyCarouselTitle" }, ve = { key: 0 }, me = {
108
117
  key: 0,
109
118
  class: "spicyCarouselNavControls"
110
- }, he = /* @__PURE__ */ f("span", { class: "spicyCarouselPrevBtnIcon" }, "<", -1), ge = [
111
- he
112
- ], me = /* @__PURE__ */ f("span", { class: "spicyCarouselNextBtnIcon" }, ">", -1), be = [
113
- me
119
+ }, ge = /* @__PURE__ */ h("span", { class: "spicyCarouselPrevBtnIcon" }, "<", -1), be = [
120
+ ge
121
+ ], Ce = /* @__PURE__ */ h("span", { class: "spicyCarouselNextBtnIcon" }, ">", -1), ke = [
122
+ Ce
114
123
  ], Se = {
115
124
  key: 1,
116
125
  class: "spicyCarouselPagination"
117
- }, Ce = ["onClick"], ke = { class: "spicyCarouselPage" }, we = {
126
+ }, we = ["onClick"], $e = { class: "spicyCarouselPage" }, _e = /* @__PURE__ */ b({
118
127
  __name: "SpicyCarousel",
119
128
  props: {
120
129
  autoplay: { type: Boolean, default: !1 },
121
- autoplaySpeed: { type: Number, default: 5e3 },
130
+ autoplaySpeed: { default: 5e3 },
122
131
  showNavigation: { type: Boolean, default: !0 },
123
132
  showPagination: { type: Boolean, default: !0 },
124
- activeColor: { type: String, default: "#00ffea80" },
133
+ activeColor: { default: "var(--skPrimaryColor)" },
125
134
  loop: { type: Boolean, default: !0 },
126
- initialSlide: { type: Number, default: 0 },
127
- slides: { type: Array, required: !0 },
128
- width: { type: String, default: "580px" },
129
- height: { type: String, default: "360px" },
135
+ initialSlide: { default: 0 },
136
+ slides: { default: () => [] },
137
+ width: { default: "580px" },
138
+ height: { default: "360px" },
130
139
  fullScreen: { type: Boolean, default: !1 },
131
140
  enableImageClick: { type: Boolean, default: !1 }
132
141
  },
133
142
  setup(e) {
134
- let t, l, a = !1;
135
- const o = e, r = C(() => ({
136
- "--width": o.width,
137
- "--height": o.height,
138
- "--activeColor": o.activeColor
139
- })), d = C(() => o.slides[u.value].title), y = C(() => i.value.fullScreen === !1 ? !1 : o.fullScreen), u = w(o.initialSlide), i = C(() => o.slides[u.value]);
140
- let c;
141
- const p = () => {
142
- u.value = (u.value - 1 + o.slides.length) % o.slides.length;
143
- }, $ = () => {
144
- u.value = (u.value + 1) % o.slides.length;
145
- }, g = (S) => {
146
- u.value = S;
147
- }, B = () => {
148
- clearInterval(c);
149
- }, T = () => {
150
- o.autoplay && (c = setInterval($, o.autoplaySpeed));
151
- }, x = () => {
152
- window.open(i.value.img);
153
- }, m = () => {
154
- o.enableImageClick && x();
155
- }, O = (S) => {
156
- t = S.touches[0].clientX, l = S.touches[0].clientY, a = !1;
157
- }, X = (S) => {
143
+ let t, o, a = !1;
144
+ const l = e, s = g(() => ({
145
+ "--width": l.width,
146
+ "--height": l.height,
147
+ "--activeColor": l.activeColor
148
+ })), u = g(() => {
149
+ var y;
150
+ return (y = l.slides[d.value]) == null ? void 0 : y.title;
151
+ }), i = g(() => n.value.fullScreen === !1 ? !1 : l.fullScreen), d = k(l.initialSlide), n = g(() => l.slides[d.value]);
152
+ let p;
153
+ const $ = () => {
154
+ d.value = (d.value - 1 + l.slides.length) % l.slides.length;
155
+ }, _ = () => {
156
+ d.value = (d.value + 1) % l.slides.length;
157
+ }, U = (y) => {
158
+ d.value = y;
159
+ }, O = () => {
160
+ p && clearInterval(p);
161
+ }, V = () => {
162
+ l.autoplay && (p = window.setInterval(_, l.autoplaySpeed));
163
+ }, W = () => {
164
+ window.open(n.value.img);
165
+ }, H = () => {
166
+ l.enableImageClick && W();
167
+ }, j = (y) => {
168
+ t = y.touches[0].clientX, o = y.touches[0].clientY, a = !1;
169
+ }, K = (y) => {
158
170
  if (!a) {
159
- const P = S.touches[0].clientX - t, L = S.touches[0].clientY - l;
160
- Math.abs(P) > Math.abs(L) && (P > 40 ? (p(), a = !0) : P < -40 && ($(), a = !0));
171
+ const B = y.touches[0].clientX - t, F = y.touches[0].clientY - o;
172
+ Math.abs(B) > Math.abs(F) && (B > 40 ? ($(), a = !0) : B < -40 && (_(), a = !0));
161
173
  }
162
174
  };
163
- return q(() => {
164
- o.autoplay && (c = setInterval($, o.autoplaySpeed));
165
- }), G(() => {
166
- clearInterval(c);
167
- }), (S, P) => (n(), s("div", ue, [
168
- f("div", {
175
+ return G(() => {
176
+ V();
177
+ }), J(() => {
178
+ O();
179
+ }), (y, B) => (r(), c("div", {
180
+ class: "spicyCarouselWrapper",
181
+ style: S({ ...s.value })
182
+ }, [
183
+ h("div", {
169
184
  class: "spicyCarouselContainer",
170
- style: I({ ...r.value }),
171
- onMouseenter: B,
172
- onMouseleave: T,
173
- onTouchstart: O,
174
- onTouchmove: X
185
+ onMouseenter: O,
186
+ onMouseleave: V,
187
+ onTouchstart: j,
188
+ onTouchmove: K
175
189
  }, [
176
- J(E, {
190
+ Q(P, {
177
191
  name: "slide",
178
192
  mode: "out-in"
179
193
  }, {
180
- default: z(() => [
181
- (n(), s("div", {
182
- class: k(["spicyCarouselSlide", { pointCursor: o.enableImageClick }]),
183
- key: u.value,
184
- style: I({ backgroundImage: `url(${i.value.img})` }),
185
- onClick: m
194
+ default: A(() => [
195
+ (r(), c("div", {
196
+ class: C(["spicyCarouselSlide", { pointCursor: l.enableImageClick }]),
197
+ key: d.value,
198
+ style: S({ backgroundImage: `url(${n.value.img})` }),
199
+ onClick: H
186
200
  }, [
187
- e.slides[u.value].text ? (n(), s("div", {
201
+ y.slides[d.value].text ? (r(), c("div", {
188
202
  key: 0,
189
- class: k(["spicyCarouselTextOverlay", { fullScreen: y.value }]),
190
- "aria-label": e.slides[u.value].text
203
+ class: C(["spicyCarouselTextOverlay", { fullScreen: i.value }]),
204
+ "aria-label": y.slides[d.value].text
191
205
  }, [
192
- f("span", ye, h(e.slides[u.value].text), 1)
193
- ], 10, de)) : v("", !0),
194
- b(S.$slots, "default")
206
+ h("span", ye, v(y.slides[d.value].text), 1)
207
+ ], 10, fe)) : f("", !0),
208
+ m(y.$slots, "default")
195
209
  ], 6))
196
210
  ]),
197
211
  _: 3
198
212
  })
199
- ], 36),
200
- f("div", pe, [
201
- d.value ? (n(), s("h2", fe, h(i.value.title), 1)) : v("", !0)
213
+ ], 32),
214
+ h("div", he, [
215
+ u.value ? (r(), c("h2", ve, v(n.value.title), 1)) : f("", !0)
202
216
  ]),
203
- e.showNavigation ? (n(), s("div", ve, [
204
- f("button", {
217
+ y.showNavigation ? (r(), c("div", me, [
218
+ h("button", {
205
219
  class: "spicyCarouselPrevBtn",
206
- onClick: p
207
- }, ge),
208
- f("button", {
209
- class: "spicyCarouselNextBtn",
210
220
  onClick: $
211
- }, be)
212
- ])) : v("", !0),
213
- e.showPagination ? (n(), s("div", Se, [
214
- (n(!0), s(D, null, F(e.slides, (L, V) => (n(), s("button", {
215
- key: V,
216
- onClick: (ht) => g(V),
217
- class: k(["spicyCarouselPageBtn", { active: V === u.value }])
221
+ }, be),
222
+ h("button", {
223
+ class: "spicyCarouselNextBtn",
224
+ onClick: _
225
+ }, ke)
226
+ ])) : f("", !0),
227
+ y.showPagination ? (r(), c("div", Se, [
228
+ (r(!0), c(z, null, E(y.slides, (F, T) => (r(), c("button", {
229
+ key: T,
230
+ onClick: (ft) => U(T),
231
+ class: C(["spicyCarouselPageBtn", { active: T === d.value }])
218
232
  }, [
219
- f("span", ke, h(V + 1), 1)
220
- ], 10, Ce))), 128))
221
- ])) : v("", !0)
222
- ]));
233
+ h("span", $e, v(T + 1), 1)
234
+ ], 10, we))), 128))
235
+ ])) : f("", !0)
236
+ ], 4));
223
237
  }
224
- }, $e = {
238
+ }), Be = /* @__PURE__ */ b({
225
239
  __name: "SpicyDivider",
226
240
  props: {
227
- variant: { type: String, default: "solid", validator: (e) => ["solid", "dashed"].includes(e) },
228
- width: { type: String, default: "100%" },
229
- height: { type: String, default: "1px" },
230
- bgColor: { type: String, default: "var(--skBgColor)" }
241
+ variant: { default: "solid" },
242
+ width: { default: "100%" },
243
+ height: { default: "1px" },
244
+ bgColor: { default: "#5f5f5f" }
231
245
  },
232
246
  setup(e) {
233
- const t = e, l = C(() => ({
247
+ const t = e, o = g(() => ({
234
248
  width: t.width,
235
- height: t.height,
236
249
  borderBottom: `${t.height} ${t.variant} ${t.bgColor}`
237
250
  }));
238
- return (a, o) => (n(), s("div", {
251
+ return (a, l) => (r(), c("div", {
239
252
  class: "spicyDivider",
240
- style: I(l.value),
253
+ style: S(o.value),
241
254
  role: "separator",
242
255
  "aria-orientation": "horizontal"
243
256
  }, [
244
- b(a.$slots, "default")
257
+ m(a.$slots, "default")
245
258
  ], 4));
246
259
  }
247
- }, xe = { class: "kbContainer" }, Be = { class: "kbSidebar" }, Te = ["onUpdate:modelValue"], Me = { class: "spicyKB" }, De = ["onMousedown", "onTouchstart", "onClick"], Fe = { class: "keyText" }, Ie = {
248
- __name: "SpicyKeyboard",
249
- emits: ["input"],
250
- setup(e, { emit: t }) {
251
- const l = w(null), a = w([
252
- {
253
- label: "Function Keys",
254
- visible: !1,
255
- layout: [
256
- [
257
- "Esc",
258
- "F1",
259
- "F2",
260
- "F3",
261
- "F4",
262
- "F5",
263
- "F6",
264
- "F7",
265
- "F8",
266
- "F9",
267
- "F10",
268
- "F11",
269
- "F12",
270
- "PrtScr",
271
- "ScrLk",
272
- "Pause"
273
- ]
274
- // ['PrtScr', 'ScrLk', 'Pause'],
275
- ]
276
- },
277
- {
278
- label: "Main Keys",
279
- visible: !0,
280
- layout: [
281
- ["`", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "-", "=", "Backspace"],
282
- ["Tab", "Q", "W", "E", "R", "T", "Y", "U", "I", "O", "P", "[", "]", "\\"],
283
- ["Caps", "A", "S", "D", "F", "G", "H", "J", "K", "L", ";", "'", "Enter"],
284
- ["Shift", "Z", "X", "C", "V", "B", "N", "M", ",", ".", "/", "Shift"],
285
- ["Ctrl", "Win", "Alt", "Space", "Alt", "Fn", "Ctrl"]
286
- ]
287
- },
288
- {
289
- label: "Arrow Keys",
290
- visible: !0,
291
- layout: [
292
- ["Ins", "Home", "PgUp"],
293
- ["Del", "End", "PgDn"],
294
- ["&uarr;", "&larr;", "&darr;", "&rarr;"]
295
- ]
296
- },
297
- {
298
- label: "Numpad",
299
- visible: !0,
300
- layout: [
301
- ["NumLock", "/", "*", "-"],
302
- ["7", "8", "9", "+"],
303
- ["4", "5", "6"],
304
- ["1", "2", "3", "Enter"],
305
- ["0", "."]
306
- ]
307
- }
308
- ]), o = C(
309
- () => a.value.filter((p) => p.visible).map((p) => p)
310
- ), r = t, d = (p) => {
311
- l.value = p;
312
- }, y = () => {
313
- l.value = null;
314
- }, u = (p) => {
315
- r("input", p);
316
- }, i = (p) => [
317
- "Backspace",
318
- "Tab",
319
- "Caps",
320
- "Enter",
321
- "Shift",
322
- "Ctrl",
323
- "Win",
324
- "Alt",
325
- "Space",
326
- "Fn",
327
- "Ins",
328
- "Del",
329
- "Home",
330
- "End",
331
- "PgUp",
332
- "PgDn",
333
- "NumLock"
334
- ].includes(p) ? `key-${p.toLowerCase()}` : "", c = (p, $, g) => {
335
- const B = (x) => ["Backspace", "Tab", "Caps", "Enter", "Shift", "Space"].includes(x), T = (x) => ["Ctrl", "Win", "Alt", "Fn"].includes(x);
336
- return B(p) ? "key-wide" : T(p) ? "key-small" : $[g].length === 1 ? "key-fullwidth" : "";
337
- };
338
- return (p, $) => (n(), s("div", xe, [
339
- f("div", Be, [
340
- (n(!0), s(D, null, F(a.value, (g, B) => (n(), s("div", {
341
- class: "sidebar",
342
- key: B
343
- }, [
344
- f("label", null, [
345
- _(f("input", {
346
- type: "checkbox",
347
- "onUpdate:modelValue": (T) => g.visible = T
348
- }, null, 8, Te), [
349
- [Q, g.visible]
350
- ]),
351
- U(" " + h(g.label), 1)
352
- ])
353
- ]))), 128))
354
- ]),
355
- f("div", Me, [
356
- (n(!0), s(D, null, F(o.value, (g, B) => (n(), s("div", {
357
- class: k(["kbSection", { [g.label.toLowerCase().replace(/\s+/g, "")]: !0 }]),
358
- key: B
359
- }, [
360
- (n(!0), s(D, null, F(g.layout, (T, x) => (n(), s("div", {
361
- class: "spicyKBRow",
362
- key: x
363
- }, [
364
- (n(!0), s(D, null, F(T, (m) => (n(), s("button", {
365
- key: m,
366
- class: k(["spicyKBKey", [
367
- { "is-active": l.value === m },
368
- i(m),
369
- c(m, g.layout, x)
370
- ]]),
371
- onMousedown: (O) => d(m),
372
- onMouseup: y,
373
- onTouchstart: (O) => d(m),
374
- onTouchend: y,
375
- onClick: (O) => u(m)
376
- }, [
377
- f("span", Fe, h(m), 1)
378
- ], 42, De))), 128))
379
- ]))), 128))
380
- ], 2))), 128))
381
- ])
382
- ]));
383
- }
384
- }, Oe = { class: "spicyInputLabel" }, Pe = ["placeholder", "aria-label"], Ve = {
260
+ }), Te = ["aria-label"], Me = ["placeholder", "aria-label"], De = {
385
261
  key: 0,
386
262
  class: "spicyInputError"
387
- }, Ae = {
263
+ }, Ie = /* @__PURE__ */ b({
388
264
  __name: "SpicyLabel",
389
265
  props: {
390
- value: { type: String, default: "" },
391
- placeholder: { type: String, default: "" },
392
- label: { type: String, default: "" },
393
- error: { type: String, default: "" },
394
- variant: {
395
- type: String,
396
- default: "filled",
397
- validator: (e) => ["outlined", "filled"].includes(e)
398
- }
266
+ value: { default: "" },
267
+ placeholder: { default: "" },
268
+ label: { default: "" },
269
+ error: { default: "" },
270
+ variant: { default: "filled" }
399
271
  },
400
272
  setup(e) {
401
- const l = w(e.value), a = w(!1), o = (y) => {
402
- l.value = y.target.value;
403
- }, r = () => {
273
+ const o = k(e.value), a = k(!1), l = (i) => {
274
+ const d = i.target;
275
+ o.value = d.value;
276
+ }, s = () => {
404
277
  a.value = !1;
405
- }, d = () => {
278
+ }, u = () => {
406
279
  a.value = !0;
407
280
  };
408
- return (y, u) => (n(), s("div", {
409
- class: k(["spicyInputWrapper", [e.variant, { hasValue: l.value || e.value, hasFocus: a.value, hasError: e.error }]])
281
+ return (i, d) => (r(), c("div", {
282
+ class: C(["spicyInputWrapper", [i.variant, { hasValue: o.value || i.value, hasFocus: a.value, hasError: i.error }]])
410
283
  }, [
411
- f("label", Oe, h(e.label), 1),
412
- _(f("input", {
413
- class: k(["spicyInput", e.variant]),
414
- "onUpdate:modelValue": u[0] || (u[0] = (i) => l.value = i),
415
- placeholder: e.placeholder,
416
- onInput: o,
417
- onBlur: r,
418
- onFocus: d,
419
- "aria-label": e.label
420
- }, null, 42, Pe), [
421
- [W, l.value]
284
+ h("label", {
285
+ class: "spicyInputLabel",
286
+ "aria-label": i.label
287
+ }, v(i.label), 9, Te),
288
+ D(h("input", {
289
+ type: "text",
290
+ name: "spicyInput",
291
+ class: C(["spicyInput", i.variant]),
292
+ "onUpdate:modelValue": d[0] || (d[0] = (n) => o.value = n),
293
+ placeholder: i.placeholder,
294
+ onInput: l,
295
+ onBlur: s,
296
+ onFocus: u,
297
+ "aria-label": i.label
298
+ }, null, 42, Me), [
299
+ [x, o.value]
422
300
  ]),
423
- b(y.$slots, "default"),
424
- e.error ? (n(), s("span", Ve, h(e.error), 1)) : v("", !0)
301
+ m(i.$slots, "default"),
302
+ i.error ? (r(), c("span", De, v(i.error), 1)) : f("", !0)
425
303
  ], 2));
426
304
  }
427
- }, _e = { class: "spicyModalHeader" }, Ke = { class: "spicyModalActions" }, Le = ["onClick"], Ne = {
305
+ }), Oe = { class: "spicyModalHeader" }, Ve = { class: "spicyModalActions" }, Fe = ["onClick"], Le = /* @__PURE__ */ b({
428
306
  __name: "SpicyModal",
429
307
  props: {
430
- width: { type: String, default: "50%" },
431
- height: { type: String, default: "auto" },
432
- borderRadius: { type: String, default: "8px" },
433
- bgColor: { type: String, default: "#2b2b2b" },
308
+ width: { default: "400px" },
309
+ height: { default: "auto" },
310
+ borderRadius: { default: "6px" },
311
+ bgColor: { default: "" },
434
312
  visible: { type: Boolean, default: !1 },
435
- closeBtn: { type: Boolean, default: !1 },
436
- actions: { type: Array, default: () => [] },
313
+ closeBtn: { type: Boolean, default: !0 },
314
+ actions: { default: () => [] },
437
315
  closeOnClick: { type: Boolean, default: !0 },
438
- modalTitle: { type: String, default: "" }
316
+ modalTitle: { default: "" },
317
+ textColor: { default: "" }
439
318
  },
440
319
  emits: ["update:visible"],
441
320
  setup(e, { emit: t }) {
442
- const l = e, a = C(() => ({
443
- "--width": l.width,
444
- "--height": l.height,
445
- "--skBorderRadius": l.borderRadius,
446
- "--skBgColor": l.bgColor
447
- })), o = t, r = () => {
448
- o("update:visible", !1);
449
- }, d = (y) => {
450
- l.closeOnClick && y.target.classList.contains("spicyModalOverlay") && r();
321
+ const o = e, a = g(() => ({
322
+ "--width": o.width,
323
+ "--height": o.height,
324
+ "--skBorderRadius": o.borderRadius,
325
+ "--skBgColor": o.bgColor,
326
+ "--skTextColor": o.textColor
327
+ })), l = t, s = () => {
328
+ l("update:visible", !1);
329
+ }, u = (i) => {
330
+ const d = i.target;
331
+ o.closeOnClick && d.classList.contains("spicyModalOverlay") && s();
451
332
  };
452
- return (y, u) => e.visible ? (n(), s("div", {
333
+ return (i, d) => i.visible ? (r(), c("div", {
453
334
  key: 0,
454
335
  class: "spicyModalOverlay",
455
- onClick: d
336
+ onClick: u
456
337
  }, [
457
- f("div", {
338
+ h("div", {
458
339
  class: "spicyModal",
459
- style: I({ ...a.value })
340
+ style: S({ ...a.value })
460
341
  }, [
461
- f("header", _e, [
462
- b(y.$slots, "spicyModalHeader", { title: e.modalTitle }, () => [
463
- U(h(e.modalTitle), 1)
342
+ h("header", Oe, [
343
+ m(i.$slots, "spicyModalHeader", {
344
+ title: i.modalTitle,
345
+ ariaLabel: i.modalTitle
346
+ }, () => [
347
+ Z(v(i.modalTitle), 1)
464
348
  ])
465
349
  ]),
466
- b(y.$slots, "default"),
467
- f("div", Ke, [
468
- b(y.$slots, "spicyModalActions"),
469
- e.actions.length === 0 && e.closeBtn ? (n(), s("button", {
350
+ m(i.$slots, "default"),
351
+ h("div", Ve, [
352
+ m(i.$slots, "spicyModalActions"),
353
+ i.actions.length === 0 && i.closeBtn ? (r(), c("button", {
470
354
  key: 0,
471
355
  class: "spicyModalCloseBtn spicyModalActionBtn",
472
- onClick: r
473
- }, " Close ")) : v("", !0),
474
- (n(!0), s(D, null, F(e.actions, (i) => (n(), s("button", {
356
+ onClick: s
357
+ }, " Close ")) : f("", !0),
358
+ (r(!0), c(z, null, E(i.actions, (n) => (r(), c("button", {
475
359
  class: "spicyModalExtraBtn spicyModalActionBtn",
476
- key: i.label,
477
- onClick: i.handler
478
- }, h(i.label), 9, Le))), 128))
360
+ key: n.label,
361
+ onClick: n.handler
362
+ }, v(n.label), 9, Fe))), 128))
479
363
  ])
480
364
  ], 4)
481
- ])) : v("", !0);
365
+ ])) : f("", !0);
482
366
  }
483
- }, Ye = { class: "spicySlider" }, Ee = {
484
- key: 0,
485
- class: "spicySliderLabel"
486
- }, ze = ["min", "max", "step"], Ue = {
367
+ }), Ye = /* @__PURE__ */ b({
368
+ __name: "SpicySheet",
369
+ props: {
370
+ isRounded: { type: Boolean, default: !1 },
371
+ color: { default: "" }
372
+ },
373
+ setup(e) {
374
+ const t = e, o = g(() => ({
375
+ "--color": t.color || "transparent"
376
+ }));
377
+ return (a, l) => (r(), c("div", {
378
+ class: C(["spicySheet", { isRound: a.isRounded }]),
379
+ style: S({ ...o.value })
380
+ }, [
381
+ m(a.$slots, "default")
382
+ ], 6));
383
+ }
384
+ }), Pe = { class: "spicySlider" }, Ae = ["aria-label"], ze = ["min", "max", "step"], Ee = /* @__PURE__ */ b({
487
385
  __name: "SpicySlider",
488
386
  props: {
489
- min: { type: Number, default: 0 },
490
- max: { type: Number, default: 100 },
491
- step: { type: Number, default: 1 },
492
- label: { type: String, default: "" },
493
- modelValue: { type: Number, default: 0 }
387
+ min: { default: 0 },
388
+ max: { default: 100 },
389
+ step: { default: 1 },
390
+ label: { default: "" },
391
+ modelValue: { default: 0 }
494
392
  },
495
393
  emits: ["update:modelValue"],
496
394
  setup(e, { emit: t }) {
497
- const l = e, a = t, o = w(l.modelValue);
498
- Y(
499
- () => l.modelValue,
500
- (d) => {
501
- o.value = d;
502
- }
503
- );
504
- const r = (d) => {
505
- a("update:modelValue", Number(d.target.value));
395
+ const o = e, a = t, l = k(o.modelValue);
396
+ Y(() => o.modelValue, (u) => {
397
+ l.value = u;
398
+ });
399
+ const s = (u) => {
400
+ const i = u.target;
401
+ a("update:modelValue", Number(i.value));
506
402
  };
507
- return (d, y) => (n(), s("div", Ye, [
508
- e.label ? (n(), s("label", Ee, h(e.label), 1)) : v("", !0),
509
- _(f("input", {
403
+ return (u, i) => (r(), c("div", Pe, [
404
+ u.label ? (r(), c("label", {
405
+ key: 0,
406
+ class: "spicySliderLabel",
407
+ "aria-label": u.label
408
+ }, v(u.label), 9, Ae)) : f("", !0),
409
+ D(h("input", {
410
+ name: "spicySliderInput",
510
411
  class: "spicySliderInput",
511
412
  type: "range",
512
- min: e.min,
513
- max: e.max,
514
- step: e.step,
515
- "onUpdate:modelValue": y[0] || (y[0] = (u) => o.value = u),
516
- onInput: r
413
+ min: u.min,
414
+ max: u.max,
415
+ step: u.step,
416
+ "onUpdate:modelValue": i[0] || (i[0] = (d) => l.value = d),
417
+ onInput: s
517
418
  }, null, 40, ze), [
518
- [W, o.value]
419
+ [x, l.value]
519
420
  ]),
520
- b(d.$slots, "default")
421
+ m(u.$slots, "default")
521
422
  ]));
522
423
  }
523
- }, We = ["tabindex", "aria-label", "aria-checked", "onKeydown"], He = /* @__PURE__ */ f("div", { class: "spicyToggleKnob" }, null, -1), je = [
524
- He
525
- ], Xe = {
424
+ }), xe = ["tabindex", "aria-label", "aria-checked", "onKeydown"], Re = /* @__PURE__ */ h("div", { class: "spicyToggleKnob" }, null, -1), Ne = [
425
+ Re
426
+ ], Ue = /* @__PURE__ */ b({
526
427
  __name: "SpicyToggle",
527
428
  props: {
528
- modelValue: Boolean,
529
- label: {
530
- type: String,
531
- default: "Toggle"
532
- },
533
- variant: {
534
- type: String,
535
- default: "filled",
536
- validator: (e) => ["outlined", "filled"].includes(e)
537
- },
538
- borderColor: String,
539
- activeColor: {
540
- type: String,
541
- default: "var(--skPrimaryColor)"
542
- }
429
+ modelValue: { type: Boolean, default: !1 },
430
+ label: { default: "" },
431
+ variant: { default: "outlined" },
432
+ borderColor: { default: "" },
433
+ activeColor: { default: "" },
434
+ disabled: { type: Boolean, default: !1 }
543
435
  },
544
436
  emits: ["update:modelValue"],
545
437
  setup(e, { emit: t }) {
546
- const l = e, a = C(() => ({
547
- "--skBorderColor": l.borderColor,
548
- "--activeColor": l.activeColor
549
- })), o = t, r = () => {
550
- o("update:modelValue", !l.modelValue);
438
+ const o = e, a = g(() => ({
439
+ "--skBorderColor": o.borderColor,
440
+ "--activeColor": o.activeColor
441
+ })), l = t, s = () => {
442
+ l("update:modelValue", !o.modelValue);
551
443
  };
552
- return (d, y) => (n(), s("div", Z({
553
- class: ["spicyToggle", { outlined: e.variant === "outlined", "is-active": e.modelValue }],
554
- tabindex: d.disabled ? -1 : 0,
444
+ return (u, i) => (r(), c("div", ee({
445
+ class: ["spicyToggle", { outlined: u.variant === "outlined", "is-active": u.modelValue }],
446
+ tabindex: u.disabled ? -1 : 0,
555
447
  role: "switch",
556
448
  style: { ...a.value },
557
- "aria-label": e.label,
558
- "aria-checked": e.modelValue.toString(),
559
- onClick: r,
449
+ "aria-label": u.label,
450
+ "aria-checked": u.modelValue,
451
+ onClick: s,
560
452
  onKeydown: [
561
- A(N(r, ["prevent"]), ["space"]),
562
- A(N(r, ["prevent"]), ["enter"])
453
+ M(L(s, ["prevent"]), ["space"]),
454
+ M(L(s, ["prevent"]), ["enter"])
563
455
  ]
564
- }, d.$attrs), je, 16, We));
456
+ }, u.$attrs), Ne, 16, xe));
565
457
  }
566
- }, Re = ["aria-hidden"], qe = {
458
+ }), We = ["aria-hidden"], He = {
567
459
  key: 0,
568
460
  class: "spicyTooltipIcon"
569
- }, Ge = ["aria-label"], Je = {
461
+ }, je = ["aria-label"], Ke = {
570
462
  key: 2,
571
463
  class: "spicyTooltipIcon"
572
- }, Qe = {
464
+ }, Xe = /* @__PURE__ */ b({
573
465
  __name: "SpicyTooltip",
574
466
  props: {
575
- text: String,
576
- prependIcon: String,
577
- appendIcon: String,
578
- position: {
579
- type: String,
580
- default: "top",
581
- validator: (e) => ["top", "bottom", "left", "right"].includes(e)
582
- }
467
+ text: { default: "" },
468
+ prependIcon: { default: "" },
469
+ appendIcon: { default: "" },
470
+ position: { default: "top" }
583
471
  },
584
472
  setup(e) {
585
- const t = e, l = w(!1), a = w(null), o = ee({
473
+ const t = e, o = k(!1), a = k(null), l = te({
586
474
  position: "absolute",
587
475
  top: "0px",
588
476
  left: "0px",
589
477
  maxWidth: "175px"
590
- }), r = (i) => {
591
- const c = i.right - window.innerWidth;
592
- c > 0 && (o.left = `${parseInt(o.left) - c - 5}px`), i.left < 0 && (o.left = "5px");
593
- }, d = {
594
- top: (i, c) => {
595
- o.left = `${i.left + (i.width - c.width) / 2}px`, o.top = `${i.top - c.height - 5}px`;
478
+ }), s = (n) => {
479
+ const p = n.right - window.innerWidth;
480
+ p > 0 && (l.left = `${parseInt(l.left) - p - 5}px`), n.left < 0 && (l.left = "5px");
481
+ }, u = {
482
+ top: (n, p) => {
483
+ l.left = `${n.left + (n.width - p.width) / 2}px`, l.top = `${n.top - p.height - 5}px`;
596
484
  },
597
- bottom: (i, c) => {
598
- o.left = `${i.left + (i.width - c.width) / 2}px`, o.top = `${i.bottom + 5}px`;
485
+ bottom: (n, p) => {
486
+ l.left = `${n.left + (n.width - p.width) / 2}px`, l.top = `${n.bottom + 5}px`;
599
487
  },
600
- left: (i, c) => {
601
- o.left = `${i.left - c.width - 5}px`, o.top = `${i.top + (i.height - c.height) / 2}px`;
488
+ left: (n, p) => {
489
+ l.left = `${n.left - p.width - 5}px`, l.top = `${n.top + (n.height - p.height) / 2}px`;
602
490
  },
603
- right: (i, c) => {
604
- o.left = `${i.right + 5}px`, o.top = `${i.top + (i.height - c.height) / 2}px`;
491
+ right: (n, p) => {
492
+ l.left = `${n.right + 5}px`, l.top = `${n.top + (n.height - p.height) / 2}px`;
605
493
  }
606
- }, y = () => {
607
- l.value = !0, te(() => {
608
- if (a.value && l.value) {
609
- const i = a.value.getBoundingClientRect(), c = a.value.querySelector(".spicyTooltip").getBoundingClientRect(), p = d[t.position];
610
- p(i, c), r(c);
494
+ }, i = () => {
495
+ o.value = !0, oe(() => {
496
+ if (a.value && o.value) {
497
+ const n = a.value.getBoundingClientRect(), p = a.value.querySelector(".spicyTooltip");
498
+ if (p) {
499
+ const $ = p.getBoundingClientRect(), _ = u[t.position];
500
+ _(n, $), s($);
501
+ }
611
502
  }
612
503
  });
613
- }, u = () => {
614
- l.value = !1;
504
+ }, d = () => {
505
+ o.value = !1;
615
506
  };
616
- return (i, c) => (n(), s("div", {
617
- onMouseover: y,
618
- onMouseleave: u,
507
+ return (n, p) => (r(), c("div", {
508
+ onMouseover: i,
509
+ onMouseleave: d,
619
510
  ref_key: "host",
620
511
  ref: a
621
512
  }, [
622
- b(i.$slots, "default"),
623
- l.value ? (n(), s("div", {
513
+ m(n.$slots, "default"),
514
+ o.value ? (r(), c("div", {
624
515
  key: 0,
625
516
  class: "spicyTooltip",
626
- style: I(o),
517
+ style: S(l),
627
518
  role: "tooltip",
628
- "aria-hidden": !l.value
519
+ "aria-hidden": !o.value
629
520
  }, [
630
- e.prependIcon ? (n(), s("span", qe, h(e.prependIcon), 1)) : v("", !0),
631
- e.text ? (n(), s("span", {
521
+ n.prependIcon ? (r(), c("span", He, v(n.prependIcon), 1)) : f("", !0),
522
+ n.text ? (r(), c("span", {
632
523
  key: 1,
633
524
  class: "spicyTooltipText",
634
- "aria-label": e.text
635
- }, h(e.text), 9, Ge)) : v("", !0),
636
- e.appendIcon ? (n(), s("span", Je, h(e.appendIcon), 1)) : v("", !0)
637
- ], 12, Re)) : v("", !0)
525
+ "aria-label": n.text
526
+ }, v(n.text), 9, je)) : f("", !0),
527
+ n.appendIcon ? (r(), c("span", Ke, v(n.appendIcon), 1)) : f("", !0)
528
+ ], 12, We)) : f("", !0)
638
529
  ], 544));
639
530
  }
640
- };
641
- function H(e, t) {
642
- const l = {
531
+ });
532
+ function R(e, t) {
533
+ const o = {
643
534
  YYYY: () => e.getFullYear().toString(),
644
535
  MM: () => (e.getMonth() + 1).toString().padStart(2, "0"),
645
536
  DD: () => e.getDate().toString().padStart(2, "0")
646
537
  };
647
- return t.replace(/YYYY|MM|DD/g, (a) => l[a]());
538
+ return t.replace(/YYYY|MM|DD/g, (a) => o[a]());
648
539
  }
649
- function Ze(e) {
650
- const [t, l, a] = e.split("-");
651
- return new Date(Number(t), Number(l) - 1, Number(a));
540
+ function qe(e) {
541
+ const [t, o, a] = e.split("-");
542
+ return new Date(Number(t), Number(o) - 1, Number(a));
652
543
  }
653
- function et(e, t) {
654
- const l = Math.abs(t.getTime() - e.getTime());
655
- return Math.ceil(l / (1e3 * 60 * 60 * 24));
544
+ function Ge(e, t) {
545
+ const o = Math.abs(t.getTime() - e.getTime());
546
+ return Math.ceil(o / (1e3 * 60 * 60 * 24));
656
547
  }
657
- function tt(e, t) {
658
- const l = new Date(e);
659
- return l.setDate(e.getDate() + t), l;
548
+ function Je(e, t) {
549
+ const o = new Date(e);
550
+ return o.setDate(e.getDate() + t), o;
660
551
  }
661
- function lt(e, t) {
662
- const l = new Date(e);
663
- return l.setDate(e.getDate() - t), l;
552
+ function Qe(e, t) {
553
+ const o = new Date(e);
554
+ return o.setDate(e.getDate() - t), o;
664
555
  }
665
- function ot(e) {
556
+ function Ze(e) {
666
557
  const t = /* @__PURE__ */ new Date();
667
558
  return e.getDate() === t.getDate() && e.getMonth() === t.getMonth() && e.getFullYear() === t.getFullYear();
668
559
  }
669
- function at(e) {
560
+ function et(e) {
670
561
  const t = /* @__PURE__ */ new Date();
671
562
  return t.setDate(t.getDate() - 1), e.getDate() === t.getDate() && e.getMonth() === t.getMonth() && e.getFullYear() === t.getFullYear();
672
563
  }
673
- function nt(e) {
564
+ function tt(e) {
674
565
  const t = /* @__PURE__ */ new Date();
675
566
  return t.setDate(t.getDate() + 1), e.getDate() === t.getDate() && e.getMonth() === t.getMonth() && e.getFullYear() === t.getFullYear();
676
567
  }
677
- function st(e = "YYYY-MM-DD", t = { show: !0, separator: "-" }) {
568
+ function ot(e = "YYYY-MM-DD", t = { show: !0, separator: "-" }) {
678
569
  if (typeof e != "string" || typeof t != "object" || !t.hasOwnProperty("show") || typeof t.show != "boolean")
679
570
  throw new Error(
680
571
  'Invalid parameters: Please provide a valid format string and options object with a boolean "show" property.'
681
572
  );
682
- let a = H(/* @__PURE__ */ new Date(), e);
573
+ let a = R(/* @__PURE__ */ new Date(), e);
683
574
  return t.separator && t.separator !== "-" && (a = a.replace(/-/g, t.separator)), t.show ? { value: a, isVisible: !0 } : { value: a, isVisible: !1 };
684
575
  }
685
- const mt = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
576
+ const ht = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
686
577
  __proto__: null,
687
- currentDate: st,
688
- dateAdd: tt,
689
- dateDiff: et,
690
- dateIsToday: ot,
691
- dateIsTomorrow: nt,
692
- dateIsYesterday: at,
693
- dateSubtract: lt,
694
- formatDate: H,
695
- parseDate: Ze
578
+ currentDate: ot,
579
+ dateAdd: Je,
580
+ dateDiff: Ge,
581
+ dateIsToday: Ze,
582
+ dateIsTomorrow: tt,
583
+ dateIsYesterday: et,
584
+ dateSubtract: Qe,
585
+ formatDate: R,
586
+ parseDate: qe
696
587
  }, Symbol.toStringTag, { value: "Module" }));
697
- function it(e) {
588
+ function lt(e) {
698
589
  const t = /* @__PURE__ */ new WeakMap();
699
- function l(a) {
700
- if (M(a) || typeof a != "object")
590
+ function o(a) {
591
+ if (w(a) || typeof a != "object")
701
592
  return a;
702
593
  if (t.has(a))
703
594
  return t.get(a);
704
- const o = Array.isArray(a) ? [] : {};
705
- t.set(a, o);
706
- for (const r in a)
707
- Object.prototype.hasOwnProperty.call(a, r) && (o[r] = l(a[r]));
708
- return o;
595
+ const l = Array.isArray(a) ? [] : {};
596
+ t.set(a, l);
597
+ for (const s in a)
598
+ Object.prototype.hasOwnProperty.call(a, s) && (l[s] = o(a[s]));
599
+ return l;
709
600
  }
710
- return l(e);
601
+ return o(e);
711
602
  }
712
- function j(...e) {
603
+ function N(...e) {
713
604
  const t = {};
714
- return e.forEach((l) => {
715
- if (!M(l)) {
716
- for (const a in l)
717
- if (Object.prototype.hasOwnProperty.call(l, a)) {
718
- const o = l[a];
719
- o !== void 0 && (typeof o == "object" && o !== null && !Array.isArray(o) ? t[a] = j(t[a] || {}, o) : t[a] = o);
605
+ return e.forEach((o) => {
606
+ if (!w(o)) {
607
+ for (const a in o)
608
+ if (Object.prototype.hasOwnProperty.call(o, a)) {
609
+ const l = o[a];
610
+ l !== void 0 && (typeof l == "object" && l !== null && !Array.isArray(l) ? t[a] = N(t[a] || {}, l) : t[a] = l);
720
611
  }
721
612
  }
722
613
  }), t;
723
614
  }
724
- function rt(...e) {
725
- return M(e[0]) ? e[0] : Object.assign({}, ...e);
615
+ function at(...e) {
616
+ return w(e[0]) ? e[0] : Object.assign({}, ...e);
726
617
  }
727
- function ct(e) {
728
- return M(e) ? [] : Object.keys(e);
618
+ function st(e) {
619
+ return w(e) ? [] : Object.keys(e);
729
620
  }
730
- function ut(e) {
731
- return M(e) ? [] : Object.values(e);
621
+ function nt(e) {
622
+ return w(e) ? [] : Object.values(e);
732
623
  }
733
- function dt(e) {
734
- return M(e) ? [] : Object.entries(e);
624
+ function it(e) {
625
+ return w(e) ? [] : Object.entries(e);
735
626
  }
736
- function M(e) {
627
+ function w(e) {
737
628
  return e === null || typeof e != "object" ? !1 : Array.isArray(e) ? e.length === 0 : Object.keys(e).length === 0;
738
629
  }
739
- const bt = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
630
+ const vt = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
740
631
  __proto__: null,
741
- deepClone: it,
742
- deepMerge: j,
743
- getObjectEntries: dt,
744
- getObjectKeys: ct,
745
- getObjectValues: ut,
746
- isObjectEmpty: M,
747
- mergeObjects: rt
632
+ deepClone: lt,
633
+ deepMerge: N,
634
+ getObjectEntries: it,
635
+ getObjectKeys: st,
636
+ getObjectValues: nt,
637
+ isObjectEmpty: w,
638
+ mergeObjects: at
748
639
  }, Symbol.toStringTag, { value: "Module" }));
749
- function K(e) {
640
+ function I(e) {
750
641
  try {
751
642
  return new URL(e), !0;
752
643
  } catch (t) {
753
644
  return console.error("Invalid URL:", t), !1;
754
645
  }
755
646
  }
756
- function yt(e) {
757
- return K(e) ? new URL(e).hostname : null;
647
+ function rt(e) {
648
+ return I(e) ? new URL(e).hostname : null;
758
649
  }
759
- function pt(e, t) {
760
- if (!K(e)) return e;
761
- const l = new URL(e);
762
- return Object.keys(t).forEach((a) => l.searchParams.append(a, t[a])), l.toString();
650
+ function ct(e, t) {
651
+ if (!I(e)) return e;
652
+ const o = new URL(e);
653
+ return Object.keys(t).forEach((a) => o.searchParams.append(a, t[a])), o.toString();
763
654
  }
764
- function ft(e, t, l = "https") {
765
- if (!["http", "https", "ftp", "sftp", "ftps", "ssh"].includes(l.toLowerCase()))
766
- throw new Error("Invalid protocol: " + l);
655
+ function ut(e, t, o = "https") {
656
+ if (!["http", "https", "ftp", "sftp", "ftps", "ssh"].includes(o.toLowerCase()))
657
+ throw new Error("Invalid protocol: " + o);
767
658
  if (!/^(?!:\/\/)([a-z0-9-]+\.)*[a-z0-9-]+$/i.test(e))
768
659
  throw new Error("Invalid hostname: " + e);
769
- return t.startsWith("/") || (t = "/" + t), t.endsWith("/") && t.length > 1 && (t = t.slice(0, -1)), t === "/" && (t = ""), `${l.toLowerCase()}://${e}${t}`;
660
+ return t.startsWith("/") || (t = "/" + t), t.endsWith("/") && t.length > 1 && (t = t.slice(0, -1)), t === "/" && (t = ""), `${o.toLowerCase()}://${e}${t}`;
770
661
  }
771
- const St = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
662
+ const mt = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
772
663
  __proto__: null,
773
- appendParamsToUrl: pt,
774
- generateUrl: ft,
775
- getHostname: yt,
776
- isUrlValid: K
777
- }, Symbol.toStringTag, { value: "Module" })), vt = ':root{--skBgColor: #28292a;--skBgSecondaryColor: #424344;--skBorderColor: #515353;--skPrimaryColor: #811faf;--skSecondaryColor: #0066b3;--skAccentColor: #004a77;--skHoverColor: #656769;--skTextColor: #ddd;--disabledOpacity: .5;--skLabelFocus: var(--skPrimaryColor);--skFontFamily: "Helvetica Neue", Helvetica, Arial, sans-serif;--skFontSize: 14px;--skFontWeight: 500;--skBorderWidth: 2px;--skBorderRadius: 4px}.spicyText{color:var(--skTextColor);font-family:var(--skFontFamily);font-size:var(--skFontSize)}.spicyHeader{color:var(--skTextColor);font-family:var(--skFontFamily);font-size:24px;font-weight:700}.spicyLink:hover{color:var(--skHoverColor)}.spicyLink:active{color:var(--skPrimaryColor)}.spicyLink:focus{color:var(--skLabelFocus)}.spicyLink:disabled{opacity:var(--disabledOpacity)}', Ct = {
664
+ appendParamsToUrl: ct,
665
+ generateUrl: ut,
666
+ getHostname: rt,
667
+ isUrlValid: I
668
+ }, Symbol.toStringTag, { value: "Module" })), dt = ':root{--skBgColor: #28292a;--skBgSecondaryColor: #424344;--skBorderColor: #515353;--skPrimaryColor: #811faf;--skSecondaryColor: #0066b3;--skAccentColor: #004a77;--skHoverColor: #656769;--skTextColor: #ddd;--disabledOpacity: .5;--skLabelFocus: var(--skPrimaryColor);--skFontFamily: "Helvetica Neue", Helvetica, Arial, sans-serif;--skFontSize: 14px;--skFontWeight: 500;--skBorderWidth: 2px;--skBorderRadius: 4px}.spicyText{color:var(--skTextColor);font-family:var(--skFontFamily);font-size:var(--skFontSize)}.spicyHeader{color:var(--skTextColor);font-family:var(--skFontFamily);font-size:24px;font-weight:700}.spicyLink:hover{color:var(--skHoverColor)}.spicyLink:active{color:var(--skPrimaryColor)}.spicyLink:focus{color:var(--skLabelFocus)}.spicyLink:disabled{opacity:var(--disabledOpacity)}.spicyRipple{position:absolute;border-radius:50%;background:currentColor;transform:scale(0);animation:spicy-ripple-animation .6s linear;pointer-events:none;z-index:1}@keyframes spicy-ripple-animation{to{transform:scale(4);opacity:0}}', pt = {
669
+ beforeMount(e) {
670
+ e.style.position = "relative", e.style.overflow = "hidden", e.addEventListener("click", (t) => {
671
+ const o = document.createElement("span"), a = Math.max(e.clientWidth, e.clientHeight), l = a / 2;
672
+ o.style.width = o.style.height = `${a}px`, o.style.left = `${t.clientX - e.getBoundingClientRect().left - l}px`, o.style.top = `${t.clientY - e.getBoundingClientRect().top - l}px`, o.classList.add("spicyRipple");
673
+ const s = e.querySelector(".spicyRipple");
674
+ s && s.remove(), e.appendChild(o), o.addEventListener("animationend", () => {
675
+ o.remove();
676
+ });
677
+ });
678
+ }
679
+ }, gt = {
778
680
  install(e, t = {}) {
779
- const { useComponents: l = !0, useStyles: a = !0 } = t;
780
- if (l && (e.component("SpicyAlert", ne), e.component("SpicyBtn", ce), e.component("SpicyCarousel", we), e.component("SpicyDivider", $e), e.component("SpicyKeyboard", Ie), e.component("SpicyLabel", Ae), e.component("SpicyModal", Ne), e.component("SpicySlider", Ue), e.component("SpicyToggle", Xe), e.component("SpicyTooltip", Qe)), a) {
781
- const o = document.createElement("style");
782
- o.textContent = vt, document.head.appendChild(o);
681
+ const { useComponents: o = !0, useStyles: a = !0, useDirectives: l = !0 } = t;
682
+ if (o && (e.component("SpicyAlert", ne), e.component("SpicyBtn", pe), e.component("SpicyCarousel", _e), e.component("SpicyDivider", Be), e.component("SpicyLabel", Ie), e.component("SpicyModal", Le), e.component("SpicySheet", Ye), e.component("SpicySlider", Ee), e.component("SpicyToggle", Ue), e.component("SpicyTooltip", Xe)), a) {
683
+ const s = document.createElement("style");
684
+ s.textContent = dt, document.head.appendChild(s);
783
685
  }
686
+ l && e.directive("spicyRipple", pt);
784
687
  }
785
688
  };
786
689
  export {
787
690
  ne as SpicyAlert,
788
- ce as SpicyBtn,
789
- we as SpicyCarousel,
790
- $e as SpicyDivider,
791
- Ct as SpicyKatsu,
792
- Ie as SpicyKeyboard,
793
- Ae as SpicyLabel,
794
- Ne as SpicyModal,
795
- Ue as SpicySlider,
796
- Xe as SpicyToggle,
797
- Qe as SpicyTooltip,
798
- pt as appendParamsToUrl,
799
- st as currentDate,
800
- tt as dateAdd,
801
- et as dateDiff,
802
- ot as dateIsToday,
803
- nt as dateIsTomorrow,
804
- at as dateIsYesterday,
805
- lt as dateSubtract,
806
- mt as dateUtils,
807
- it as deepClone,
808
- j as deepMerge,
809
- H as formatDate,
810
- ft as generateUrl,
811
- yt as getHostname,
812
- dt as getObjectEntries,
813
- ct as getObjectKeys,
814
- ut as getObjectValues,
815
- M as isObjectEmpty,
816
- K as isUrlValid,
817
- rt as mergeObjects,
818
- bt as objUtils,
819
- Ze as parseDate,
820
- vt as spicyStyles,
821
- St as urlUtils
691
+ pe as SpicyBtn,
692
+ _e as SpicyCarousel,
693
+ Be as SpicyDivider,
694
+ gt as SpicyKatsu,
695
+ Ie as SpicyLabel,
696
+ Le as SpicyModal,
697
+ Ye as SpicySheet,
698
+ Ee as SpicySlider,
699
+ Ue as SpicyToggle,
700
+ Xe as SpicyTooltip,
701
+ ct as appendParamsToUrl,
702
+ ot as currentDate,
703
+ Je as dateAdd,
704
+ Ge as dateDiff,
705
+ Ze as dateIsToday,
706
+ tt as dateIsTomorrow,
707
+ et as dateIsYesterday,
708
+ Qe as dateSubtract,
709
+ ht as dateUtils,
710
+ lt as deepClone,
711
+ N as deepMerge,
712
+ R as formatDate,
713
+ ut as generateUrl,
714
+ rt as getHostname,
715
+ it as getObjectEntries,
716
+ st as getObjectKeys,
717
+ nt as getObjectValues,
718
+ w as isObjectEmpty,
719
+ I as isUrlValid,
720
+ at as mergeObjects,
721
+ vt as objUtils,
722
+ qe as parseDate,
723
+ pt as ripple,
724
+ dt as spicyStyles,
725
+ mt as urlUtils
822
726
  };