vlite3 0.2.9 → 0.2.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -59,7 +59,7 @@ const E = { class: "inline-block" }, $ = ["onClick"], I = /* @__PURE__ */ x({
59
59
  }, [
60
60
  e.loading || k ? (n(), o("div", {
61
61
  key: 0,
62
- class: l(["absolute inset-0 flex items-center justify-center bg-[#00000051] text-white", e.rounded === "full" ? "rounded-full" : "rounded-md"])
62
+ class: l(["absolute inset-0 flex items-center justify-center bg-[#7878783b] text-white", e.rounded === "full" ? "rounded-full" : "rounded-md"])
63
63
  }, [
64
64
  d(u, {
65
65
  icon: "lucide:loader-2",
@@ -286,7 +286,7 @@ const fe = { class: "space-y-4" }, he = { class: "overflow-x-auto w-full" }, ve
286
286
  ], 2)
287
287
  ])
288
288
  ], 2),
289
- a.showPagination && a.pageInfo && a.pageInfo.totalItems > 0 ? (n(), i("div", $e, [
289
+ a.showPagination && a.pageInfo && a.pageInfo.totalPages > 1 ? (n(), i("div", $e, [
290
290
  C(se(de), {
291
291
  "current-page": h.value,
292
292
  "total-pages": a.pageInfo.totalPages,
@@ -1,7 +1,7 @@
1
1
  import o from "./CustomFields.vue2.js";
2
2
  /* empty css */
3
3
  import t from "../../_virtual/_plugin-vue_export-helper.js";
4
- const d = /* @__PURE__ */ t(o, [["__scopeId", "data-v-79b7dd60"]]);
4
+ const r = /* @__PURE__ */ t(o, [["__scopeId", "data-v-ed01b0e1"]]);
5
5
  export {
6
- d as default
6
+ r as default
7
7
  };
@@ -1,15 +1,20 @@
1
- import { defineComponent as T, defineAsyncComponent as f, computed as n, markRaw as j, openBlock as r, createBlock as u, mergeProps as s, toHandlers as C, createSlots as E, unref as L, withCtx as o, createVNode as S, createTextVNode as m, toDisplayString as p, createCommentVNode as A, resolveDynamicComponent as H } from "vue";
2
- import { isComponent as g, isAddonObject as v } from "./utils/form.utils.js";
3
- import M from "../NumberInput.vue.js";
4
- import h from "../Button.vue.js";
5
- import y from "../Input.vue.js";
6
- import q from "../Switch.vue.js";
7
- import G from "../CheckBox.vue.js";
8
- import J from "../Textarea.vue.js";
9
- import K from "../FilePicker/FilePicker.vue.js";
10
- import Q from "../AvatarUploader/AvatarUploader.vue.js";
11
- import k from "../Dropdown/Dropdown.vue.js";
12
- const oe = /* @__PURE__ */ T({
1
+ import { defineComponent as N, computed as n, markRaw as P, openBlock as r, createBlock as u, mergeProps as f, toHandlers as R, createSlots as B, unref as C, withCtx as o, createVNode as L, createTextVNode as c, toDisplayString as m, createCommentVNode as $, resolveDynamicComponent as O } from "vue";
2
+ import { isComponent as h, isAddonObject as p } from "./utils/form.utils.js";
3
+ import I from "../NumberInput.vue.js";
4
+ import v from "../Button.vue.js";
5
+ import g from "../Input.vue.js";
6
+ import T from "../Switch.vue.js";
7
+ import j from "../CheckBox.vue.js";
8
+ import D from "../Textarea.vue.js";
9
+ import E from "../FilePicker/FilePicker.vue.js";
10
+ import H from "../AvatarUploader/AvatarUploader.vue.js";
11
+ import y from "../Dropdown/Dropdown.vue.js";
12
+ import q from "../MultiSelect/MultiSelect.vue.js";
13
+ import G from "../DatePicker.vue.js";
14
+ import J from "../ColorPicker/ColorPicker.vue.js";
15
+ import K from "../IconPicker.vue.js";
16
+ import M from "./CustomFields.vue.js";
17
+ const fe = /* @__PURE__ */ N({
13
18
  __name: "FormField",
14
19
  props: {
15
20
  field: {},
@@ -24,15 +29,15 @@ const oe = /* @__PURE__ */ T({
24
29
  isUpdate: { type: Boolean, default: !1 }
25
30
  },
26
31
  emits: ["change", "addonChange", "addonAction"],
27
- setup(a, { emit: w }) {
28
- const z = f(() => import("../MultiSelect/MultiSelect.vue2.js")), $ = f(() => import("../DatePicker.vue2.js")), P = f(() => import("../ColorPicker/ColorPicker.vue2.js")), U = f(() => import("../IconPicker.vue2.js")), F = f(() => import("./CustomFields.vue.js")), e = a, c = w, d = (t, l) => {
29
- c("change", { value: t, data: l });
30
- }, N = (t) => {
31
- c("change", { value: t });
32
- }, B = n(() => {
32
+ setup(l, { emit: S }) {
33
+ const e = l, s = S, d = (t, a) => {
34
+ s("change", { value: t, data: a });
35
+ }, w = (t) => {
36
+ s("change", { value: t });
37
+ }, A = n(() => {
33
38
  const t = e.field.type;
34
- if (g(t))
35
- return j(t);
39
+ if (h(t))
40
+ return P(t);
36
41
  switch (t) {
37
42
  case "text":
38
43
  case "email":
@@ -40,43 +45,43 @@ const oe = /* @__PURE__ */ T({
40
45
  case "tel":
41
46
  case "url":
42
47
  case "search":
43
- return y;
48
+ return g;
44
49
  case "number":
45
- return M;
50
+ return I;
46
51
  case "textarea":
47
- return J;
52
+ return D;
48
53
  case "switch":
49
- return q;
54
+ return T;
50
55
  case "check":
51
- return G;
56
+ return j;
52
57
  case "select":
53
- return k;
58
+ return y;
54
59
  case "multiSelect":
55
- return z;
60
+ return q;
56
61
  case "date":
57
62
  case "time":
58
- return $;
63
+ return G;
59
64
  case "file":
60
65
  case "fileUploader":
61
- return K;
66
+ return E;
62
67
  case "avatarUpload":
63
- return Q;
68
+ return H;
64
69
  case "color":
65
- return P;
70
+ return J;
66
71
  case "iconPicker":
67
- return U;
72
+ return K;
68
73
  case "customFields":
69
- return F;
74
+ return M;
70
75
  default:
71
- return y;
76
+ return g;
72
77
  }
73
78
  }), V = n(() => {
74
- const t = e.field.type, l = {
79
+ const t = e.field.type, a = {
75
80
  disabled: e.disabled || e.field.disabled === !0,
76
81
  ...e.field.props || {}
77
82
  };
78
83
  return t === "text" || t === "email" || t === "password" || t === "tel" || t === "url" || t === "search" || !t ? {
79
- ...l,
84
+ ...a,
80
85
  modelValue: e.value ?? "",
81
86
  type: t || "text",
82
87
  placeholder: e.field.placeholder,
@@ -94,7 +99,7 @@ const oe = /* @__PURE__ */ T({
94
99
  max: e.field.max,
95
100
  class: e.field.className
96
101
  } : t === "number" ? {
97
- ...l,
102
+ ...a,
98
103
  modelValue: e.value ?? void 0,
99
104
  min: e.field.min,
100
105
  max: e.field.max,
@@ -106,40 +111,40 @@ const oe = /* @__PURE__ */ T({
106
111
  placeholder: e.field.placeholder,
107
112
  class: e.field.className
108
113
  } : t === "textarea" ? {
109
- ...l,
114
+ ...a,
110
115
  modelValue: e.value ?? "",
111
116
  placeholder: e.field.placeholder,
112
117
  rows: e.field.props?.rows || 3,
113
118
  class: e.field.className
114
119
  } : t === "switch" ? {
115
- ...l,
120
+ ...a,
116
121
  modelValue: !!e.value,
117
122
  label: ""
118
123
  // Label handled externally
119
124
  } : t === "check" ? {
120
- ...l,
125
+ ...a,
121
126
  modelValue: !!e.value,
122
127
  label: ""
123
128
  // Label handled externally
124
129
  } : t === "select" ? {
125
- ...l,
130
+ ...a,
126
131
  modelValue: e.value,
127
132
  options: e.field.options || [],
128
133
  placeholder: e.field.placeholder,
129
134
  selectable: !0,
130
135
  closeOnSelect: !0
131
136
  } : t === "multiSelect" ? {
132
- ...l,
137
+ ...a,
133
138
  modelValue: Array.isArray(e.value) ? e.value : [],
134
139
  options: e.field.options || [],
135
140
  placeholder: e.field.placeholder
136
141
  } : t === "date" || t === "time" ? {
137
- ...l,
142
+ ...a,
138
143
  modelValue: e.value,
139
144
  mode: t === "time" ? "time" : "date",
140
145
  placeholder: e.field.placeholder
141
146
  } : t === "fileUploader" || t === "file" ? {
142
- ...l,
147
+ ...a,
143
148
  modelValue: e.value,
144
149
  multiSelect: e.field.props?.multiple || !1,
145
150
  fileTypes: e.field.props?.accept ? e.field.props.accept.split(",") : [],
@@ -149,17 +154,17 @@ const oe = /* @__PURE__ */ T({
149
154
  size: e.size,
150
155
  rounded: e.rounded
151
156
  } : t === "avatarUpload" ? {
152
- ...l,
157
+ ...a,
153
158
  modelValue: e.value,
154
159
  editable: !e.readonly
155
160
  } : t === "color" ? {
156
- ...l,
161
+ ...a,
157
162
  modelValue: e.value || "#000000"
158
163
  } : t === "iconPicker" ? {
159
- ...l,
164
+ ...a,
160
165
  value: e.value || "lucide:smile"
161
166
  } : t === "customFields" ? {
162
- ...l,
167
+ ...a,
163
168
  modelValue: Array.isArray(e.value) ? e.value : [],
164
169
  schema: e.field.props?.schema || [],
165
170
  headers: e.field.props?.headers || [],
@@ -168,132 +173,132 @@ const oe = /* @__PURE__ */ T({
168
173
  size: e.size,
169
174
  rounded: e.rounded,
170
175
  isUpdate: e.isUpdate
171
- } : g(t) ? {
172
- ...l,
176
+ } : h(t) ? {
177
+ ...a,
173
178
  value: e.value,
174
179
  values: e.values
175
- } : l;
180
+ } : a;
176
181
  }), b = n(() => {
177
182
  const t = e.field.type;
178
183
  return t === "text" || t === "email" || t === "password" || t === "tel" || t === "url" || t === "search" || t === "textarea" || t === "switch" || t === "check" || t === "number" || !t ? {
179
- "update:modelValue": N
184
+ "update:modelValue": w
180
185
  } : t === "select" ? {
181
- onSelect: (l) => {
182
- d(l.value, l.data);
186
+ onSelect: (a) => {
187
+ d(a.value, a.data);
183
188
  }
184
189
  } : t === "multiSelect" ? {
185
- change: (l) => d(l)
190
+ change: (a) => d(a)
186
191
  } : t === "date" || t === "time" ? {
187
- change: (l) => d(l)
192
+ change: (a) => d(a)
188
193
  } : t === "fileUploader" || t === "file" ? {
189
- change: (l) => {
190
- d(l);
194
+ change: (a) => {
195
+ d(a);
191
196
  },
192
- "update:modelValue": (l) => {
193
- d(l);
197
+ "update:modelValue": (a) => {
198
+ d(a);
194
199
  }
195
200
  } : t === "avatarUpload" ? {
196
- change: (l) => {
197
- d(l);
201
+ change: (a) => {
202
+ d(a);
198
203
  },
199
- "update:modelValue": (l) => {
200
- d(l);
204
+ "update:modelValue": (a) => {
205
+ d(a);
201
206
  }
202
207
  } : t === "color" ? {
203
- change: (l) => d(l)
208
+ change: (a) => d(a)
204
209
  } : t === "iconPicker" ? {
205
- onSelect: (l) => d(l)
210
+ onSelect: (a) => d(a)
206
211
  } : t === "customFields" ? {
207
- change: (l) => d(l)
208
- } : g(t) ? {
209
- onChange: (l) => {
210
- d(l.value, l.data);
212
+ change: (a) => d(a)
213
+ } : h(t) ? {
214
+ onChange: (a) => {
215
+ d(a.value, a.data);
211
216
  }
212
217
  } : {};
213
- }), O = n(() => v(e.field.addonLeft) || v(e.field.addonRight)), I = n(() => {
218
+ }), z = n(() => p(e.field.addonLeft) || p(e.field.addonRight)), U = n(() => {
214
219
  const t = e.field.type;
215
220
  return t === "text" || t === "email" || t === "password" || t === "tel" || t === "url" || t === "search" || !t;
216
- }), D = n(() => O.value && I.value), x = (t, l) => {
217
- c("addonChange", t.name, { value: l.value });
218
- }, R = (t) => {
219
- t.action && c("addonAction", t.action);
221
+ }), F = n(() => z.value && U.value), k = (t, a) => {
222
+ s("addonChange", t.name, { value: a.value });
223
+ }, x = (t) => {
224
+ t.action && s("addonAction", t.action);
220
225
  };
221
- return (t, l) => D.value ? (r(), u(y, s({ key: 0 }, {
226
+ return (t, a) => F.value ? (r(), u(g, f({ key: 0 }, {
222
227
  ...V.value,
223
- ...a.field?.props || {}
224
- }, C(b.value)), E({ _: 2 }, [
225
- L(v)(a.field.addonLeft) ? {
228
+ ...l.field?.props || {}
229
+ }, R(b.value)), B({ _: 2 }, [
230
+ C(p)(l.field.addonLeft) ? {
226
231
  name: "addon-left",
227
232
  fn: o(() => [
228
- a.field.addonLeft.type === "select" ? (r(), u(k, s({
233
+ l.field.addonLeft.type === "select" ? (r(), u(y, f({
229
234
  key: 0,
230
- modelValue: a.values[a.field.addonLeft.name],
231
- options: a.field.addonLeft.options || []
232
- }, a.field.addonLeft.props || {}, {
233
- onOnSelect: l[0] || (l[0] = (i) => x(a.field.addonLeft, i))
235
+ modelValue: l.values[l.field.addonLeft.name],
236
+ options: l.field.addonLeft.options || []
237
+ }, l.field.addonLeft.props || {}, {
238
+ onOnSelect: a[0] || (a[0] = (i) => k(l.field.addonLeft, i))
234
239
  }), {
235
240
  trigger: o(({ selectedLabel: i }) => [
236
- S(h, { variant: "outline" }, {
241
+ L(v, { variant: "outline" }, {
237
242
  default: o(() => [
238
- m(p(i), 1)
243
+ c(m(i), 1)
239
244
  ]),
240
245
  _: 2
241
246
  }, 1024)
242
247
  ]),
243
248
  _: 1
244
- }, 16, ["modelValue", "options"])) : a.field.addonLeft.type === "button" ? (r(), u(h, s({
249
+ }, 16, ["modelValue", "options"])) : l.field.addonLeft.type === "button" ? (r(), u(v, f({
245
250
  key: 1,
246
251
  variant: "outline"
247
- }, a.field.addonLeft.props || {}, {
248
- onClick: l[1] || (l[1] = (i) => R(a.field.addonLeft))
252
+ }, l.field.addonLeft.props || {}, {
253
+ onClick: a[1] || (a[1] = (i) => x(l.field.addonLeft))
249
254
  }), {
250
255
  default: o(() => [
251
- m(p(a.field.addonLeft.text), 1)
256
+ c(m(l.field.addonLeft.text), 1)
252
257
  ]),
253
258
  _: 1
254
- }, 16)) : A("", !0)
259
+ }, 16)) : $("", !0)
255
260
  ]),
256
261
  key: "0"
257
262
  } : void 0,
258
- L(v)(a.field.addonRight) ? {
263
+ C(p)(l.field.addonRight) ? {
259
264
  name: "addon-right",
260
265
  fn: o(() => [
261
- a.field.addonRight.type === "select" ? (r(), u(k, s({
266
+ l.field.addonRight.type === "select" ? (r(), u(y, f({
262
267
  key: 0,
263
- modelValue: a.values[a.field.addonRight.name],
264
- options: a.field.addonRight.options || []
265
- }, a.field.addonRight.props || {}, {
266
- onOnSelect: l[2] || (l[2] = (i) => x(a.field.addonRight, i))
268
+ modelValue: l.values[l.field.addonRight.name],
269
+ options: l.field.addonRight.options || []
270
+ }, l.field.addonRight.props || {}, {
271
+ onOnSelect: a[2] || (a[2] = (i) => k(l.field.addonRight, i))
267
272
  }), {
268
273
  trigger: o(({ selectedLabel: i }) => [
269
- S(h, { variant: "outline" }, {
274
+ L(v, { variant: "outline" }, {
270
275
  default: o(() => [
271
- m(p(i), 1)
276
+ c(m(i), 1)
272
277
  ]),
273
278
  _: 2
274
279
  }, 1024)
275
280
  ]),
276
281
  _: 1
277
- }, 16, ["modelValue", "options"])) : a.field.addonRight.type === "button" ? (r(), u(h, s({
282
+ }, 16, ["modelValue", "options"])) : l.field.addonRight.type === "button" ? (r(), u(v, f({
278
283
  key: 1,
279
284
  variant: "outline"
280
- }, a.field.addonRight.props || {}, {
281
- onClick: l[3] || (l[3] = (i) => R(a.field.addonRight))
285
+ }, l.field.addonRight.props || {}, {
286
+ onClick: a[3] || (a[3] = (i) => x(l.field.addonRight))
282
287
  }), {
283
288
  default: o(() => [
284
- m(p(a.field.addonRight.text), 1)
289
+ c(m(l.field.addonRight.text), 1)
285
290
  ]),
286
291
  _: 1
287
- }, 16)) : A("", !0)
292
+ }, 16)) : $("", !0)
288
293
  ]),
289
294
  key: "1"
290
295
  } : void 0
291
- ]), 1040)) : (r(), u(H(B.value), s({ key: 1 }, {
296
+ ]), 1040)) : (r(), u(O(A.value), f({ key: 1 }, {
292
297
  ...V.value,
293
- ...a.field?.props || {}
294
- }, C(b.value)), null, 16));
298
+ ...l.field?.props || {}
299
+ }, R(b.value)), null, 16));
295
300
  }
296
301
  });
297
302
  export {
298
- oe as default
303
+ fe as default
299
304
  };
@@ -1,5 +1,5 @@
1
- import { defineComponent as z, ref as j, computed as i, openBlock as n, createBlock as m, unref as y, withCtx as f, createVNode as v, createElementVNode as d, normalizeClass as V, createElementBlock as p, toDisplayString as b, Fragment as w, renderList as E, withModifiers as k, createCommentVNode as h, createTextVNode as L } from "vue";
2
- import g from "../Icon.vue.js";
1
+ import { defineComponent as z, ref as j, computed as i, openBlock as n, createBlock as m, unref as y, withCtx as f, createVNode as v, createElementVNode as d, normalizeClass as V, createElementBlock as p, toDisplayString as b, Fragment as w, renderList as E, withModifiers as k, createCommentVNode as g, createTextVNode as L } from "vue";
2
+ import h from "../Icon.vue.js";
3
3
  import A from "../Dropdown/Dropdown.vue.js";
4
4
  import D from "../Dropdown/DropdownMenu.vue.js";
5
5
  import C from "../Badge.vue.js";
@@ -37,9 +37,9 @@ const F = { class: "flex flex-wrap gap-1.5 items-center flex-1 min-w-0 py-0.5" }
37
37
  s("update:modelValue", []), s("change", []);
38
38
  }, N = i(() => [
39
39
  "flex items-center justify-between w-full min-h-[40px] px-3 py-1.5 rounded-md border text-sm transition-colors cursor-pointer",
40
- o.disabled ? "opacity-50 cursor-not-allowed bg-muted" : "bg-background hover:bg-accent",
40
+ o.disabled ? "opacity-50 cursor-not-allowed bg-muted" : "bg-background hover:bg-gray-50/70",
41
41
  o.variant === "outline" ? "border-input" : "border-transparent bg-muted",
42
- u.value ? "border-primary" : ""
42
+ u.value ? "border-primary/20" : ""
43
43
  ].join(" "));
44
44
  return i(() => o.size === "sm" ? "xs" : "sm"), (a, e) => (n(), m(y(A), {
45
45
  isOpen: u.value,
@@ -61,12 +61,13 @@ const F = { class: "flex flex-wrap gap-1.5 items-center flex-1 min-w-0 py-0.5" }
61
61
  }, {
62
62
  default: f(() => [
63
63
  d("span", U, b(r.label), 1),
64
- l.disabled ? h("", !0) : (n(), p("button", {
64
+ l.disabled ? g("", !0) : (n(), p("button", {
65
65
  key: 0,
66
+ type: "button",
66
67
  onClick: k((H) => M(r.value), ["stop"]),
67
68
  class: "hover:bg-destructive/10 hover:text-destructive rounded-full p-0.5 transition-colors"
68
69
  }, [
69
- v(g, {
70
+ v(h, {
70
71
  icon: "lucide:x",
71
72
  class: "w-3 h-3"
72
73
  })
@@ -83,18 +84,18 @@ const F = { class: "flex flex-wrap gap-1.5 items-center flex-1 min-w-0 py-0.5" }
83
84
  L(" +" + b(x.value), 1)
84
85
  ]),
85
86
  _: 1
86
- })) : h("", !0)
87
+ })) : g("", !0)
87
88
  ], 64))
88
89
  ]),
89
90
  d("div", G, [
90
- c.value.length > 0 && !l.disabled ? (n(), m(g, {
91
+ c.value.length > 0 && !l.disabled ? (n(), m(h, {
91
92
  key: 0,
92
93
  icon: "lucide:x",
93
94
  class: "w-4 h-4 hover:text-foreground transition-colors",
94
95
  onClick: k(S, ["stop"])
95
- })) : h("", !0),
96
+ })) : g("", !0),
96
97
  e[4] || (e[4] = d("div", { class: "w-px h-4 bg-border mx-0.5" }, null, -1)),
97
- v(g, {
98
+ v(h, {
98
99
  icon: "lucide:chevron-down",
99
100
  class: V(["w-4 h-4 transition-transform duration-200", { "rotate-180": t }])
100
101
  }, null, 8, ["class"])
@@ -13,6 +13,7 @@ interface Props {
13
13
  bodyClass?: string;
14
14
  headerClass?: string;
15
15
  triggerClass?: string;
16
+ footerClass?: string;
16
17
  backdrop?: boolean;
17
18
  body?: Component;
18
19
  bodyProps?: Record<string, any>;
@@ -50,10 +51,13 @@ declare const __VLS_component: import('vue').DefineComponent<Props, {}, {}, {},
50
51
  class: string;
51
52
  size: SidePanelSize;
52
53
  triggerClass: string;
54
+ headerClass: string;
53
55
  position: SidePanelPosition;
54
56
  show: boolean;
55
57
  closeOutside: boolean;
56
58
  backdrop: boolean;
59
+ bodyClass: string;
60
+ footerClass: string;
57
61
  hideCloseButton: boolean;
58
62
  overlayClass: string;
59
63
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
@@ -1,7 +1,7 @@
1
1
  import o from "./SidePanel.vue2.js";
2
2
  /* empty css */
3
- import t from "../_virtual/_plugin-vue_export-helper.js";
4
- const f = /* @__PURE__ */ t(o, [["__scopeId", "data-v-016e19f6"]]);
3
+ import a from "../_virtual/_plugin-vue_export-helper.js";
4
+ const f = /* @__PURE__ */ a(o, [["__scopeId", "data-v-495f8aa0"]]);
5
5
  export {
6
6
  f as default
7
7
  };
@@ -1,13 +1,10 @@
1
- import { defineComponent as S, ref as E, watch as y, onUnmounted as N, computed as b, openBlock as o, createElementBlock as r, Fragment as P, createElementVNode as u, mergeProps as v, withModifiers as V, renderSlot as i, createCommentVNode as s, createBlock as m, Teleport as D, createVNode as p, Transition as h, withCtx as C, normalizeClass as f, toDisplayString as g, resolveDynamicComponent as K } from "vue";
1
+ import { defineComponent as S, ref as E, watch as y, onUnmounted as N, computed as v, openBlock as o, createElementBlock as r, Fragment as P, createElementVNode as f, mergeProps as b, withModifiers as V, renderSlot as i, createCommentVNode as s, createBlock as m, Teleport as D, createVNode as p, Transition as C, withCtx as h, normalizeClass as d, toDisplayString as k, resolveDynamicComponent as K } from "vue";
2
2
  import T from "./Button.vue.js";
3
3
  import { useKeyStroke as j } from "../composables/useKeyStroke.js";
4
4
  const F = { class: "text-lg font-bold text-foreground" }, L = {
5
5
  key: 0,
6
6
  class: "mt-1 text-sm text-muted-foreground"
7
- }, M = {
8
- key: 1,
9
- class: "flex-none px-6 py-4 border-t border-border bg-muted-light"
10
- }, H = /* @__PURE__ */ S({
7
+ }, G = /* @__PURE__ */ S({
11
8
  inheritAttrs: !1,
12
9
  __name: "SidePanel",
13
10
  props: {
@@ -20,16 +17,17 @@ const F = { class: "text-lg font-bold text-foreground" }, L = {
20
17
  hideCloseButton: { type: Boolean, default: !1 },
21
18
  class: { default: "" },
22
19
  overlayClass: { default: "" },
23
- bodyClass: {},
24
- headerClass: {},
20
+ bodyClass: { default: "" },
21
+ headerClass: { default: "" },
25
22
  triggerClass: { default: "" },
23
+ footerClass: { default: "" },
26
24
  backdrop: { type: Boolean, default: !0 },
27
25
  body: {},
28
26
  bodyProps: {}
29
27
  },
30
28
  emits: ["close", "update:show", "onOpen", "onAfterOpen", "onAfterClose"],
31
- setup(e, { emit: k }) {
32
- const l = e, c = k, a = E(l.show);
29
+ setup(e, { emit: g }) {
30
+ const l = e, c = g, a = E(l.show);
33
31
  y(
34
32
  () => l.show,
35
33
  (t) => {
@@ -54,9 +52,9 @@ const F = { class: "text-lg font-bold text-foreground" }, L = {
54
52
  lg: "max-w-lg",
55
53
  xl: "max-w-xl",
56
54
  full: "max-w-full"
57
- }, z = b(() => l.position === "left" ? "left-0" : "right-0"), A = b(() => l.position === "left" ? "slide-left" : "slide-right");
58
- return (t, d) => (o(), r(P, null, [
59
- u("span", v({
55
+ }, z = v(() => l.position === "left" ? "left-0" : "right-0"), A = v(() => l.position === "left" ? "slide-left" : "slide-right");
56
+ return (t, u) => (o(), r(P, null, [
57
+ f("span", b({
60
58
  onClick: V(w, ["stop"]),
61
59
  class: `${e.triggerClass}`
62
60
  }, t.$attrs), [
@@ -65,7 +63,7 @@ const F = { class: "text-lg font-bold text-foreground" }, L = {
65
63
  ], !0)
66
64
  ], 16),
67
65
  (o(), m(D, { to: "body" }, [
68
- p(h, {
66
+ p(C, {
69
67
  "enter-active-class": "transition-opacity duration-300 ease-out",
70
68
  "enter-from-class": "opacity-0",
71
69
  "enter-to-class": "opacity-100",
@@ -73,33 +71,33 @@ const F = { class: "text-lg font-bold text-foreground" }, L = {
73
71
  "leave-from-class": "opacity-100",
74
72
  "leave-to-class": "opacity-0"
75
73
  }, {
76
- default: C(() => [
74
+ default: h(() => [
77
75
  a.value ? (o(), r("div", {
78
76
  key: 0,
79
- class: f(["fixed inset-0 z-50 bg-[#00000033]", [e.overlayClass, { "backdrop-blur-[2px]": e.backdrop }]]),
77
+ class: d(["fixed inset-0 z-50 bg-[#00000033]", [e.overlayClass, { "backdrop-blur-[2px]": e.backdrop }]]),
80
78
  onClick: x
81
79
  }, null, 2)) : s("", !0)
82
80
  ]),
83
81
  _: 1
84
82
  }),
85
- p(h, {
83
+ p(C, {
86
84
  name: A.value,
87
- onAfterEnter: d[0] || (d[0] = (O) => t.$emit("onAfterOpen")),
88
- onAfterLeave: d[1] || (d[1] = (O) => t.$emit("onAfterClose"))
85
+ onAfterEnter: u[0] || (u[0] = (O) => t.$emit("onAfterOpen")),
86
+ onAfterLeave: u[1] || (u[1] = (O) => t.$emit("onAfterClose"))
89
87
  }, {
90
- default: C(() => [
88
+ default: h(() => [
91
89
  a.value ? (o(), r("div", {
92
90
  key: 0,
93
- class: f(["sidepanel-body fixed inset-y-0 z-50 flex flex-col bg-body shadow-sm border transition-transform duration-300 ease-in-out w-full", [B[e.size], z.value, l.class]])
91
+ class: d(["sidepanel-body fixed inset-y-0 z-50 flex flex-col bg-body shadow-sm border transition-transform duration-300 ease-in-out w-full", [B[e.size], z.value, l.class]])
94
92
  }, [
95
93
  e.title || t.$slots.header ? (o(), r("div", {
96
94
  key: 0,
97
- class: f([e.headerClass, "flex-none flex items-center justify-between px-6 py-2 border-b border-border"])
95
+ class: d([e.headerClass, "flex-none flex items-center justify-between px-6 py-2 border-b border-border"])
98
96
  }, [
99
97
  i(t.$slots, "header", {}, () => [
100
- u("div", null, [
101
- u("h3", F, g(e.title), 1),
102
- e.description ? (o(), r("p", L, g(e.description), 1)) : s("", !0)
98
+ f("div", null, [
99
+ f("h3", F, k(e.title), 1),
100
+ e.description ? (o(), r("p", L, k(e.description), 1)) : s("", !0)
103
101
  ])
104
102
  ], !0),
105
103
  e.hideCloseButton ? s("", !0) : (o(), m(T, {
@@ -112,17 +110,20 @@ const F = { class: "text-lg font-bold text-foreground" }, L = {
112
110
  class: "-mr-2"
113
111
  }))
114
112
  ], 2)) : s("", !0),
115
- u("div", {
116
- class: f(["flex-1 overflow-y-auto px-6 py-4", e.bodyClass])
113
+ f("div", {
114
+ class: d(["flex-1 overflow-y-auto px-6 py-4", e.bodyClass])
117
115
  }, [
118
- e.body ? (o(), m(K(e.body), v({ key: 0 }, { ...e.bodyProps, ...t.$attrs }, { close: n }), null, 16)) : i(t.$slots, "default", {
116
+ e.body ? (o(), m(K(e.body), b({ key: 0 }, { ...e.bodyProps, ...t.$attrs }, { close: n }), null, 16)) : i(t.$slots, "default", {
119
117
  key: 1,
120
118
  close: n
121
119
  }, void 0, !0)
122
120
  ], 2),
123
- t.$slots.footer ? (o(), r("div", M, [
121
+ t.$slots.footer ? (o(), r("div", {
122
+ key: 1,
123
+ class: d(["flex-none px-6 py-3 border-t border-border", e.footerClass])
124
+ }, [
124
125
  i(t.$slots, "footer", { close: n }, void 0, !0)
125
- ])) : s("", !0)
126
+ ], 2)) : s("", !0)
126
127
  ], 2)) : s("", !0)
127
128
  ]),
128
129
  _: 3
@@ -132,5 +133,5 @@ const F = { class: "text-lg font-bold text-foreground" }, L = {
132
133
  }
133
134
  });
134
135
  export {
135
- H as default
136
+ G as default
136
137
  };
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "private": false,
4
4
  "description": "A Vue 3 UI component library built with Tailwind CSS.",
5
5
  "license": "MIT",
6
- "version": "0.2.9",
6
+ "version": "0.2.12",
7
7
  "type": "module",
8
8
  "main": "index.js",
9
9
  "module": "index.js",
package/style.css CHANGED
@@ -355,6 +355,10 @@
355
355
  --color-mixture-2: #ffffff !important;
356
356
  }
357
357
 
358
+ .dark .hover\:bg-card:hover {
359
+ background-color: var(--color-gray-50);
360
+ }
361
+
358
362
  .bg-card {
359
363
  --color-mixture-1: #FAFAFA !important;
360
364
  --color-mixture-2: #000000 !important;
@@ -418,6 +422,10 @@
418
422
  color: var(--color-gray-600) !important;
419
423
  }
420
424
 
425
+ .dark .text-destructive {
426
+ color: rgb(187, 1, 1) !important
427
+ }
428
+
421
429
  /* --- base.css --- */
422
430
  *,
423
431
  *::before,
@@ -672,5 +680,5 @@ textarea::-webkit-scrollbar-thumb {
672
680
  }
673
681
 
674
682
  /* --- Vite Generated CSS --- */
675
- .accordion-enter-active[data-v-aa189e08],.accordion-leave-active[data-v-aa189e08]{transition:height .3s ease-in-out}.attached-group[data-v-8c9add3e]:not(.vertical-group) button{border-radius:0}.attached-group[data-v-8c9add3e] button{position:relative;--radius: .375rem}.attached-group[data-v-8c9add3e] button:focus-visible,.attached-group[data-v-8c9add3e] button:hover{z-index:10}.attached-group[data-v-8c9add3e]:not(.vertical-group) button:not(:first-child){margin-left:-1px}.attached-group[data-v-8c9add3e]:not(.vertical-group) button:first-child{border-top-left-radius:var(--radius);border-bottom-left-radius:var(--radius);border-top-right-radius:0;border-bottom-right-radius:0}.attached-group[data-v-8c9add3e]:not(.vertical-group) button:not(:first-child):not(:last-child){border-radius:0}.attached-group[data-v-8c9add3e]:not(.vertical-group) button:last-child{border-top-right-radius:var(--radius);border-bottom-right-radius:var(--radius);border-top-left-radius:0;border-bottom-left-radius:0}.vertical-group[data-v-8c9add3e] button:not(:first-child){margin-top:-1px}.vertical-group[data-v-8c9add3e] button:first-child{border-top-left-radius:var(--radius);border-top-right-radius:var(--radius);border-bottom-left-radius:0;border-bottom-right-radius:0}.vertical-group[data-v-8c9add3e] button:not(:first-child):not(:last-child){border-radius:0}.vertical-group[data-v-8c9add3e] button:last-child{border-bottom-left-radius:var(--radius);border-bottom-right-radius:var(--radius);border-top-left-radius:0;border-top-right-radius:0}.attached-group[data-v-8c9add3e]:not(.vertical-group) button:not(:first-child):not(.border):before{content:"";position:absolute;left:0;top:0;bottom:0;width:1px;background-color:currentColor;opacity:.15;z-index:5;pointer-events:none}.vertical-group[data-v-8c9add3e] button:not(:first-child):not(.border):before{content:"";position:absolute;top:0;left:0;right:0;height:1px;background-color:currentColor;opacity:.15;z-index:5;pointer-events:none;width:auto}.vertical-group[data-v-8c9add3e] button:not(:first-child):not(.border):before{width:100%}.attached-group[data-v-8c9add3e]:not(.vertical-group) button:not(:first-child):not(.border):before{height:100%}.carousel-wrapper[data-v-655a78c8]{width:100%;position:relative}.IroBox{border-radius:8px!important}input[data-v-e7171c4f]::-webkit-outer-spin-button,input[data-v-e7171c4f]::-webkit-inner-spin-button{-webkit-appearance:none;appearance:none;margin:0}input[type=number][data-v-e7171c4f]{-moz-appearance:textfield;appearance:textfield}.form-field-item[data-v-47af145c]{display:flex;flex-direction:column}.form-field-item[data-v-47af145c]:has([role=switch]),.form-field-item[data-v-47af145c]:has([role=checkbox]){flex-direction:row;align-items:center}.form-container[data-v-67eb0c47]{width:100%}.custom-fields-table[data-v-79b7dd60] .form-field-item{margin-bottom:0!important;height:100%}.custom-fields-table[data-v-79b7dd60] input,.custom-fields-table[data-v-79b7dd60] textarea{padding-left:1em;padding-right:.5em}.custom-fields-table[data-v-79b7dd60] input,.custom-fields-table[data-v-79b7dd60] textarea,.custom-fields-table[data-v-79b7dd60] select,.custom-fields-table[data-v-79b7dd60] .input-wrapper,.custom-fields-table[data-v-79b7dd60] .tooltip-trigger button{border:none!important;background:transparent!important;box-shadow:none!important;border-radius:0!important;height:100%!important;min-height:40px}.custom-fields-table[data-v-79b7dd60] .tooltip-trigger button{justify-content:space-between!important}.custom-fields-table[data-v-79b7dd60] input:focus,.custom-fields-table[data-v-79b7dd60] textarea:focus,.custom-fields-table[data-v-79b7dd60] select:focus,.custom-fields-table[data-v-79b7dd60] .input-wrapper:focus-within{background-color:hsla(var(--primary) / .03)!important;box-shadow:inset 0 0 0 2px hsla(var(--primary) / .1)!important}.custom-fields-table[data-v-79b7dd60] .w-full{width:100%;height:100%}.list-move[data-v-79b7dd60],.list-enter-active[data-v-79b7dd60],.list-leave-active[data-v-79b7dd60]{transition:all .3s cubic-bezier(.16,1,.3,1)}.list-enter-from[data-v-79b7dd60],.list-leave-to[data-v-79b7dd60]{opacity:0;transform:translateY(-10px)}.list-leave-active[data-v-79b7dd60]{position:absolute;width:100%;z-index:0}.heatmap-container[data-v-00476f00]{width:100%;height:100%;display:flex;flex-direction:column;min-height:0}.heatmap-wrapper[data-v-00476f00]{width:100%;height:100%;overflow:auto;flex:1;min-height:0;display:flex;align-items:center;justify-content:center;padding:16px;box-sizing:border-box;position:relative}.heatmap-grid[data-v-00476f00]{width:fit-content;height:fit-content;transition:all .2s ease-in-out}.heatmap-cell[data-v-00476f00]{aspect-ratio:1 / 1;border-radius:2px;transition:all .15s ease-in-out;border:1px solid transparent;box-sizing:border-box}.heatmap-cell-interactive[data-v-00476f00]{cursor:pointer}.heatmap-cell-interactive[data-v-00476f00]:hover{transform:scale(1.1);border-color:var(--border);box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a;z-index:10;position:relative}.heatmap-cell-empty[data-v-00476f00]{opacity:.6}.heatmap-cell-hovered[data-v-00476f00]{outline:2px solid var(--primary);outline-offset:1px}.heatmap-cell-label[data-v-00476f00]{font-size:8px;font-weight:500;color:var(--foreground);opacity:.8;display:flex;align-items:center;justify-content:center;height:100%;width:100%;pointer-events:none}.heatmap-legend[data-v-00476f00]{display:flex;align-items:center;gap:.5rem;margin-top:1rem;font-size:.75rem;color:var(--muted-foreground);flex-shrink:0}.heatmap-legend-label[data-v-00476f00]{font-weight:500}.heatmap-legend-colors[data-v-00476f00]{display:flex;gap:.125rem}.heatmap-legend-item[data-v-00476f00]{width:.75rem;height:.75rem;border-radius:.375rem;border:1px solid var(--border)}@media(max-width:640px){.heatmap-wrapper[data-v-00476f00]{padding:12px}.heatmap-cell[data-v-00476f00]{border-radius:2px}.heatmap-cell-label[data-v-00476f00]{font-size:7px}}@media(min-width:641px)and (max-width:1023px){.heatmap-wrapper[data-v-00476f00]{padding:14px}.heatmap-cell[data-v-00476f00]{border-radius:2px}}@media(min-width:1024px){.heatmap-wrapper[data-v-00476f00]{padding:16px}.heatmap-cell[data-v-00476f00]{border-radius:3px}}.custom-scrollbar[data-v-9ac38977]::-webkit-scrollbar{width:0px}.custom-scrollbar[data-v-9ac38977]::-webkit-scrollbar-track{background:transparent}.custom-scrollbar[data-v-9ac38977]::-webkit-scrollbar-thumb{background-color:var(--color-border);border-radius:10px}.custom-scrollbar-x[data-v-11bc76c9]::-webkit-scrollbar{height:8px}.custom-scrollbar-x[data-v-11bc76c9]::-webkit-scrollbar-track{background:transparent}.custom-scrollbar-x[data-v-11bc76c9]::-webkit-scrollbar-thumb{background-color:var(--color-border);border-radius:10px}.masonry-item[data-v-c29d0159]{content-visibility:auto;contain-intrinsic-size:1px 200px}.slide-right-enter-active[data-v-016e19f6],.slide-right-leave-active[data-v-016e19f6],.slide-left-enter-active[data-v-016e19f6],.slide-left-leave-active[data-v-016e19f6]{transition:transform .3s ease-in-out}.slide-right-enter-from[data-v-016e19f6],.slide-right-leave-to[data-v-016e19f6]{transform:translate(100%)}.slide-left-enter-from[data-v-016e19f6],.slide-left-leave-to[data-v-016e19f6]{transform:translate(-100%)}.sidebar-manu-item .tooltip-trigger{width:100%!important}.sidebar-menu-tooltip{margin-left:4px!important}[dir=rtl] .sidebar-menu-tooltip{margin-right:4px!important}.first-toast-enter-active[data-v-6b631840]{animation:first-toast-in-6b631840 .45s cubic-bezier(.23,1,.32,1) forwards}.first-toast-leave-active[data-v-6b631840]{transition:all .25s ease-in}.first-toast-leave-to[data-v-6b631840]{opacity:0;transform:scale(.98)}@keyframes first-toast-in-6b631840{0%{opacity:var(--entrance-opacity, .6);transform:translateY(var(--entrance-offset, 25px)) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.stack-toast-enter-active[data-v-6b631840],.stack-toast-leave-active[data-v-6b631840]{transition:all .3s cubic-bezier(.16,1,.3,1)}.stack-toast-enter-from[data-v-6b631840]{opacity:0;transform:scale(.95) translateY(10px)}.stack-toast-leave-to[data-v-6b631840]{opacity:0;transform:scale(.95)}.stack-toast-move[data-v-6b631840]{transition:transform .4s cubic-bezier(.16,1,.3,1)}.bg-stripe[data-v-454a1505]{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:1rem 1rem}.animate-progress-stripe[data-v-454a1505]{animation:progress-stripe-454a1505 1s linear infinite}@keyframes progress-stripe-454a1505{0%{background-position:1rem 0}to{background-position:0 0}}.animate-progress-indeterminate[data-v-454a1505]{animation:progress-indeterminate-454a1505 1.5s infinite cubic-bezier(.65,.815,.735,.395)}@keyframes progress-indeterminate-454a1505{0%{transform:translate(-100%) scaleX(.2)}50%{transform:translate(0) scaleX(.5)}to{transform:translate(100%) scaleX(.2)}}
683
+ .accordion-enter-active[data-v-aa189e08],.accordion-leave-active[data-v-aa189e08]{transition:height .3s ease-in-out}.attached-group[data-v-8c9add3e]:not(.vertical-group) button{border-radius:0}.attached-group[data-v-8c9add3e] button{position:relative;--radius: .375rem}.attached-group[data-v-8c9add3e] button:focus-visible,.attached-group[data-v-8c9add3e] button:hover{z-index:10}.attached-group[data-v-8c9add3e]:not(.vertical-group) button:not(:first-child){margin-left:-1px}.attached-group[data-v-8c9add3e]:not(.vertical-group) button:first-child{border-top-left-radius:var(--radius);border-bottom-left-radius:var(--radius);border-top-right-radius:0;border-bottom-right-radius:0}.attached-group[data-v-8c9add3e]:not(.vertical-group) button:not(:first-child):not(:last-child){border-radius:0}.attached-group[data-v-8c9add3e]:not(.vertical-group) button:last-child{border-top-right-radius:var(--radius);border-bottom-right-radius:var(--radius);border-top-left-radius:0;border-bottom-left-radius:0}.vertical-group[data-v-8c9add3e] button:not(:first-child){margin-top:-1px}.vertical-group[data-v-8c9add3e] button:first-child{border-top-left-radius:var(--radius);border-top-right-radius:var(--radius);border-bottom-left-radius:0;border-bottom-right-radius:0}.vertical-group[data-v-8c9add3e] button:not(:first-child):not(:last-child){border-radius:0}.vertical-group[data-v-8c9add3e] button:last-child{border-bottom-left-radius:var(--radius);border-bottom-right-radius:var(--radius);border-top-left-radius:0;border-top-right-radius:0}.attached-group[data-v-8c9add3e]:not(.vertical-group) button:not(:first-child):not(.border):before{content:"";position:absolute;left:0;top:0;bottom:0;width:1px;background-color:currentColor;opacity:.15;z-index:5;pointer-events:none}.vertical-group[data-v-8c9add3e] button:not(:first-child):not(.border):before{content:"";position:absolute;top:0;left:0;right:0;height:1px;background-color:currentColor;opacity:.15;z-index:5;pointer-events:none;width:auto}.vertical-group[data-v-8c9add3e] button:not(:first-child):not(.border):before{width:100%}.attached-group[data-v-8c9add3e]:not(.vertical-group) button:not(:first-child):not(.border):before{height:100%}.carousel-wrapper[data-v-655a78c8]{width:100%;position:relative}.IroBox{border-radius:8px!important}input[data-v-e7171c4f]::-webkit-outer-spin-button,input[data-v-e7171c4f]::-webkit-inner-spin-button{-webkit-appearance:none;appearance:none;margin:0}input[type=number][data-v-e7171c4f]{-moz-appearance:textfield;appearance:textfield}.custom-fields-table[data-v-ed01b0e1] .form-field-item{margin-bottom:0!important;height:100%}.custom-fields-table[data-v-ed01b0e1] input,.custom-fields-table[data-v-ed01b0e1] textarea{padding-left:1em;padding-right:.5em}.custom-fields-table[data-v-ed01b0e1] input,.custom-fields-table[data-v-ed01b0e1] textarea,.custom-fields-table[data-v-ed01b0e1] select,.custom-fields-table[data-v-ed01b0e1] .input-wrapper,.custom-fields-table[data-v-ed01b0e1] .tooltip-trigger button{border:none!important;background:transparent!important;box-shadow:none!important;border-radius:0!important;height:100%!important;min-height:40px}.custom-fields-table[data-v-ed01b0e1] .tooltip-trigger button{justify-content:space-between!important}.custom-fields-table[data-v-ed01b0e1] input:focus,.custom-fields-table[data-v-ed01b0e1] textarea:focus,.custom-fields-table[data-v-ed01b0e1] select:focus,.custom-fields-table[data-v-ed01b0e1] .input-wrapper:focus-within{background-color:hsla(var(--primary) / .03)!important;box-shadow:inset 0 0 0 2px hsla(var(--primary) / .1)!important}.custom-fields-table[data-v-ed01b0e1] .w-full{width:100%;height:100%}.list-move[data-v-ed01b0e1],.list-enter-active[data-v-ed01b0e1],.list-leave-active[data-v-ed01b0e1]{transition:all .1s cubic-bezier(.16,1,.3,1)}.list-enter-from[data-v-ed01b0e1],.list-leave-to[data-v-ed01b0e1]{opacity:0;transform:translateY(-10px)}.list-leave-active[data-v-ed01b0e1]{position:absolute;width:100%;z-index:0}.form-field-item[data-v-47af145c]{display:flex;flex-direction:column}.form-field-item[data-v-47af145c]:has([role=switch]),.form-field-item[data-v-47af145c]:has([role=checkbox]){flex-direction:row;align-items:center}.form-container[data-v-67eb0c47]{width:100%}.heatmap-container[data-v-00476f00]{width:100%;height:100%;display:flex;flex-direction:column;min-height:0}.heatmap-wrapper[data-v-00476f00]{width:100%;height:100%;overflow:auto;flex:1;min-height:0;display:flex;align-items:center;justify-content:center;padding:16px;box-sizing:border-box;position:relative}.heatmap-grid[data-v-00476f00]{width:fit-content;height:fit-content;transition:all .2s ease-in-out}.heatmap-cell[data-v-00476f00]{aspect-ratio:1 / 1;border-radius:2px;transition:all .15s ease-in-out;border:1px solid transparent;box-sizing:border-box}.heatmap-cell-interactive[data-v-00476f00]{cursor:pointer}.heatmap-cell-interactive[data-v-00476f00]:hover{transform:scale(1.1);border-color:var(--border);box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a;z-index:10;position:relative}.heatmap-cell-empty[data-v-00476f00]{opacity:.6}.heatmap-cell-hovered[data-v-00476f00]{outline:2px solid var(--primary);outline-offset:1px}.heatmap-cell-label[data-v-00476f00]{font-size:8px;font-weight:500;color:var(--foreground);opacity:.8;display:flex;align-items:center;justify-content:center;height:100%;width:100%;pointer-events:none}.heatmap-legend[data-v-00476f00]{display:flex;align-items:center;gap:.5rem;margin-top:1rem;font-size:.75rem;color:var(--muted-foreground);flex-shrink:0}.heatmap-legend-label[data-v-00476f00]{font-weight:500}.heatmap-legend-colors[data-v-00476f00]{display:flex;gap:.125rem}.heatmap-legend-item[data-v-00476f00]{width:.75rem;height:.75rem;border-radius:.375rem;border:1px solid var(--border)}@media(max-width:640px){.heatmap-wrapper[data-v-00476f00]{padding:12px}.heatmap-cell[data-v-00476f00]{border-radius:2px}.heatmap-cell-label[data-v-00476f00]{font-size:7px}}@media(min-width:641px)and (max-width:1023px){.heatmap-wrapper[data-v-00476f00]{padding:14px}.heatmap-cell[data-v-00476f00]{border-radius:2px}}@media(min-width:1024px){.heatmap-wrapper[data-v-00476f00]{padding:16px}.heatmap-cell[data-v-00476f00]{border-radius:3px}}.custom-scrollbar[data-v-9ac38977]::-webkit-scrollbar{width:0px}.custom-scrollbar[data-v-9ac38977]::-webkit-scrollbar-track{background:transparent}.custom-scrollbar[data-v-9ac38977]::-webkit-scrollbar-thumb{background-color:var(--color-border);border-radius:10px}.custom-scrollbar-x[data-v-11bc76c9]::-webkit-scrollbar{height:8px}.custom-scrollbar-x[data-v-11bc76c9]::-webkit-scrollbar-track{background:transparent}.custom-scrollbar-x[data-v-11bc76c9]::-webkit-scrollbar-thumb{background-color:var(--color-border);border-radius:10px}.masonry-item[data-v-c29d0159]{content-visibility:auto;contain-intrinsic-size:1px 200px}.slide-right-enter-active[data-v-495f8aa0],.slide-right-leave-active[data-v-495f8aa0],.slide-left-enter-active[data-v-495f8aa0],.slide-left-leave-active[data-v-495f8aa0]{transition:transform .3s ease-in-out}.slide-right-enter-from[data-v-495f8aa0],.slide-right-leave-to[data-v-495f8aa0]{transform:translate(100%)}.slide-left-enter-from[data-v-495f8aa0],.slide-left-leave-to[data-v-495f8aa0]{transform:translate(-100%)}.sidebar-manu-item .tooltip-trigger{width:100%!important}.sidebar-menu-tooltip{margin-left:4px!important}[dir=rtl] .sidebar-menu-tooltip{margin-right:4px!important}.first-toast-enter-active[data-v-6b631840]{animation:first-toast-in-6b631840 .45s cubic-bezier(.23,1,.32,1) forwards}.first-toast-leave-active[data-v-6b631840]{transition:all .25s ease-in}.first-toast-leave-to[data-v-6b631840]{opacity:0;transform:scale(.98)}@keyframes first-toast-in-6b631840{0%{opacity:var(--entrance-opacity, .6);transform:translateY(var(--entrance-offset, 25px)) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.stack-toast-enter-active[data-v-6b631840],.stack-toast-leave-active[data-v-6b631840]{transition:all .3s cubic-bezier(.16,1,.3,1)}.stack-toast-enter-from[data-v-6b631840]{opacity:0;transform:scale(.95) translateY(10px)}.stack-toast-leave-to[data-v-6b631840]{opacity:0;transform:scale(.95)}.stack-toast-move[data-v-6b631840]{transition:transform .4s cubic-bezier(.16,1,.3,1)}.bg-stripe[data-v-454a1505]{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:1rem 1rem}.animate-progress-stripe[data-v-454a1505]{animation:progress-stripe-454a1505 1s linear infinite}@keyframes progress-stripe-454a1505{0%{background-position:1rem 0}to{background-position:0 0}}.animate-progress-indeterminate[data-v-454a1505]{animation:progress-indeterminate-454a1505 1.5s infinite cubic-bezier(.65,.815,.735,.395)}@keyframes progress-indeterminate-454a1505{0%{transform:translate(-100%) scaleX(.2)}50%{transform:translate(0) scaleX(.5)}to{transform:translate(100%) scaleX(.2)}}
676
684