vlite3 0.9.8 → 0.9.9

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,13 +1,13 @@
1
- import { defineComponent as I, computed as d, openBlock as g, createBlock as D, unref as o, withCtx as u, createElementVNode as N, createVNode as m, renderSlot as T, mergeProps as x } from "vue";
2
- import w from "./Button.vue.js";
3
- import z from "./Dropdown/Dropdown.vue.js";
1
+ import { defineComponent as T, computed as d, openBlock as x, createBlock as w, unref as o, withCtx as u, createElementVNode as z, createVNode as m, renderSlot as $, mergeProps as k } from "vue";
2
+ import P from "./Button.vue.js";
3
+ import B from "./Dropdown/Dropdown.vue.js";
4
4
  import "@iconify/vue";
5
- import { $t as k } from "../utils/i18n.js";
5
+ import { $t as S } from "../utils/i18n.js";
6
6
  /* empty css */
7
7
  /* empty css */
8
- import $, { TimePicker as B } from "v-datepicker-lite";
8
+ import j, { TimePicker as C } from "v-datepicker-lite";
9
9
  import "v-datepicker-lite/style.css";
10
- const j = { class: "overflow-hidden min-w-[300px]" }, q = /* @__PURE__ */ I({
10
+ const U = { class: "overflow-hidden min-w-[300px]" }, G = /* @__PURE__ */ T({
11
11
  __name: "DatePicker",
12
12
  props: {
13
13
  placeholder: {},
@@ -29,22 +29,26 @@ const j = { class: "overflow-hidden min-w-[300px]" }, q = /* @__PURE__ */ I({
29
29
  readonly: { type: Boolean }
30
30
  },
31
31
  emits: ["update:modelValue", "change"],
32
- setup(t, { emit: P }) {
33
- const l = t, s = P, a = d({
32
+ setup(t, { emit: V }) {
33
+ const l = t, s = V, a = d({
34
34
  get: () => l.modelValue ?? l.value,
35
35
  set: (e) => {
36
36
  s("update:modelValue", e), s("change", e);
37
37
  }
38
- }), S = (e) => e instanceof Date ? e.getHours() !== 0 || e.getMinutes() !== 0 : typeof e == "string" ? e.includes("T") || /\d{2}:\d{2}/.test(e) : !1, c = (e) => {
38
+ }), I = (e) => e instanceof Date ? e.getHours() !== 0 || e.getMinutes() !== 0 : typeof e == "string" ? e.includes("T") || /\d{2}:\d{2}/.test(e) : !1, c = (e) => {
39
39
  try {
40
- if (e && typeof e == "object" && e.start && e.end) {
41
- const b = new Date(e.start), y = new Date(e.end);
42
- if (!isNaN(b.getTime()) && !isNaN(y.getTime())) return { start: b, end: y };
40
+ if (e && typeof e == "object") {
41
+ const h = e.startDate || e.start, b = e.endDate || e.end;
42
+ if (h && b) {
43
+ const y = new Date(h), g = new Date(b);
44
+ if (!isNaN(y.getTime()) && !isNaN(g.getTime()))
45
+ return { startDate: y, endDate: g };
46
+ }
43
47
  }
44
48
  const n = new Date(e);
45
49
  if (isNaN(n.getTime())) return null;
46
- const i = new Date(n), h = new Date(n);
47
- return h.setDate(i.getDate() + 6), { start: i, end: h };
50
+ const i = new Date(n), D = new Date(n);
51
+ return D.setDate(i.getDate() + 6), { startDate: i, endDate: D };
48
52
  } catch {
49
53
  return null;
50
54
  }
@@ -54,13 +58,21 @@ const j = { class: "overflow-hidden min-w-[300px]" }, q = /* @__PURE__ */ I({
54
58
  if (l.mode === "week") {
55
59
  const e = c(a.value);
56
60
  if (!e) return "";
57
- const n = e.start.toLocaleDateString("en-US", { month: "short", day: "numeric", year: "numeric" }), i = e.end.toLocaleDateString("en-US", { month: "short", day: "numeric", year: "numeric" });
61
+ const n = e.startDate.toLocaleDateString("en-US", {
62
+ month: "short",
63
+ day: "numeric",
64
+ year: "numeric"
65
+ }), i = e.endDate.toLocaleDateString("en-US", {
66
+ month: "short",
67
+ day: "numeric",
68
+ year: "numeric"
69
+ });
58
70
  return `${n} - ${i}`;
59
71
  }
60
72
  try {
61
73
  const e = new Date(a.value);
62
74
  if (isNaN(e.getTime())) return String(a.value);
63
- const n = l.mode === "dateTime" && S(a.value);
75
+ const n = l.mode === "dateTime" && I(a.value);
64
76
  return e.toLocaleDateString("en-US", {
65
77
  month: "short",
66
78
  day: "numeric",
@@ -71,21 +83,21 @@ const j = { class: "overflow-hidden min-w-[300px]" }, q = /* @__PURE__ */ I({
71
83
  return String(a.value);
72
84
  }
73
85
  }), f = d(() => {
74
- if (l.placeholderI18n) return k(l.placeholderI18n);
86
+ if (l.placeholderI18n) return S(l.placeholderI18n);
75
87
  if (l.placeholder !== void 0) return l.placeholder;
76
- const e = k("vlite.datePicker.placeholder");
88
+ const e = S("vlite.datePicker.placeholder");
77
89
  return e !== "vlite.datePicker.placeholder" ? e : "Select date";
78
90
  }), v = (e) => {
79
91
  if (l.mode === "week") {
80
92
  const n = c(e);
81
93
  if (n) {
82
- a.value = { start: n.start, end: n.end };
94
+ a.value = { startDate: n.startDate, endDate: n.endDate };
83
95
  return;
84
96
  }
85
97
  }
86
98
  a.value = e;
87
- }, V = d(() => l.mode === "week" && a.value && typeof a.value == "object" && a.value.start ? a.value.start : a.value);
88
- return (e, n) => t.mode !== "time" ? (g(), D(o(z), {
99
+ }, N = d(() => l.mode === "week" && a.value && typeof a.value == "object" && (a.value.startDate || a.value.start) || a.value);
100
+ return (e, n) => t.mode !== "time" ? (x(), w(o(B), {
89
101
  key: 0,
90
102
  position: "bottom-start",
91
103
  class: "w-full",
@@ -94,12 +106,12 @@ const j = { class: "overflow-hidden min-w-[300px]" }, q = /* @__PURE__ */ I({
94
106
  disabled: t.disabled || t.readonly
95
107
  }, {
96
108
  trigger: u(() => [
97
- T(e.$slots, "default", {
109
+ $(e.$slots, "default", {
98
110
  value: a.value,
99
111
  displayValue: r.value
100
112
  }, () => [
101
- m(w, x({
102
- text: r.value || f.value,
113
+ m(P, k({
114
+ text: r.value?.replace("-", "—") || f.value,
103
115
  variant: t.variant || "outline",
104
116
  size: t.size || "md",
105
117
  icon: t.icon || "lucide:calendar",
@@ -108,9 +120,9 @@ const j = { class: "overflow-hidden min-w-[300px]" }, q = /* @__PURE__ */ I({
108
120
  ])
109
121
  ]),
110
122
  default: u(() => [
111
- N("div", j, [
112
- m(o($), {
113
- value: V.value,
123
+ z("div", U, [
124
+ m(o(j), {
125
+ value: N.value,
114
126
  mode: t.mode,
115
127
  "min-date": t.minDate,
116
128
  "max-date": t.maxDate,
@@ -125,7 +137,7 @@ const j = { class: "overflow-hidden min-w-[300px]" }, q = /* @__PURE__ */ I({
125
137
  ])
126
138
  ]),
127
139
  _: 3
128
- }, 8, ["teleport", "disabled"])) : (g(), D(o(B), {
140
+ }, 8, ["teleport", "disabled"])) : (x(), w(o(C), {
129
141
  key: 1,
130
142
  "model-value": a.value,
131
143
  "onUpdate:modelValue": [
@@ -143,7 +155,7 @@ const j = { class: "overflow-hidden min-w-[300px]" }, q = /* @__PURE__ */ I({
143
155
  readonly: t.readonly
144
156
  }, {
145
157
  default: u(() => [
146
- m(w, x({
158
+ m(P, k({
147
159
  text: r.value || f.value,
148
160
  variant: t.variant || "outline",
149
161
  size: t.size || "md",
@@ -156,5 +168,5 @@ const j = { class: "overflow-hidden min-w-[300px]" }, q = /* @__PURE__ */ I({
156
168
  }
157
169
  });
158
170
  export {
159
- q as default
171
+ G as default
160
172
  };
@@ -1,7 +1,7 @@
1
1
  import { ButtonSize, ButtonVariant } from '../types';
2
2
  export interface DateRange {
3
- start: any;
4
- end: any;
3
+ startDate: any;
4
+ endDate: any;
5
5
  }
6
6
  type __VLS_Props = {
7
7
  modelValue?: DateRange | null;
@@ -1,16 +1,16 @@
1
- import { defineComponent as V, ref as w, watch as L, computed as u, openBlock as d, createBlock as m, unref as h, withCtx as y, createElementVNode as r, createElementBlock as x, Fragment as z, renderList as B, createCommentVNode as E, createVNode as g, normalizeClass as k, toDisplayString as R } from "vue";
2
- import T from "./Dropdown/Dropdown.vue.js";
3
- import f from "./Icon.vue.js";
1
+ import { defineComponent as F, ref as b, watch as L, computed as u, openBlock as d, createBlock as m, unref as v, withCtx as D, createElementVNode as i, createElementBlock as w, Fragment as T, renderList as z, createCommentVNode as B, createVNode as h, normalizeClass as y, toDisplayString as x, createTextVNode as E } from "vue";
2
+ import $ from "./Dropdown/Dropdown.vue.js";
3
+ import R from "./Icon.vue.js";
4
4
  import { $t as l } from "../utils/i18n.js";
5
5
  /* empty css */
6
6
  /* empty css */
7
7
  import P from "./Button.vue.js";
8
8
  import p from "v-datepicker-lite";
9
9
  import "v-datepicker-lite/style.css";
10
- const $ = { class: "flex items-center justify-between gap-2 w-full" }, j = { class: "flex flex-col sm:flex-row bg-background rounded-md" }, H = {
10
+ const j = { class: "flex items-center justify-start gap-2 w-full" }, H = { class: "flex flex-col sm:flex-row bg-background rounded-md" }, Q = {
11
11
  key: 0,
12
12
  class: "flex flex-col gap-1 sm:pr-3 py-2 sm:border-r border-border max-h-[280px]"
13
- }, Q = { class: "flex flex-col sm:flex-row items-center gap-4 py-2 p-3" }, O = { class: "border border-border rounded-md overflow-hidden bg-background" }, I = { class: "flex items-center justify-center shrink-0" }, U = { class: "border border-border rounded-md overflow-hidden bg-background" }, ae = /* @__PURE__ */ V({
13
+ }, O = { class: "flex flex-col sm:flex-row items-center gap-4 py-2 p-3" }, I = { class: "border border-border rounded-md overflow-hidden bg-background" }, U = { class: "flex items-center justify-center shrink-0" }, q = { class: "border border-border rounded-md overflow-hidden bg-background" }, te = /* @__PURE__ */ F({
14
14
  __name: "DateRangePicker",
15
15
  props: {
16
16
  modelValue: {},
@@ -27,35 +27,41 @@ const $ = { class: "flex items-center justify-between gap-2 w-full" }, j = { cla
27
27
  },
28
28
  emits: ["update:modelValue", "change"],
29
29
  setup(s, { emit: M }) {
30
- const v = s, b = M, o = w(!1), c = w(0);
31
- L(o, (t) => {
32
- t && c.value++;
30
+ const g = s, k = M, o = b(!1), c = b(0);
31
+ L(o, (a) => {
32
+ a && c.value++;
33
33
  });
34
34
  const n = u({
35
- get: () => v.modelValue || { start: null, end: null },
36
- set: (t) => {
37
- b("update:modelValue", t), b("change", t);
35
+ get: () => {
36
+ const a = g.modelValue;
37
+ return a ? {
38
+ startDate: a.startDate !== void 0 ? a.startDate : a.start,
39
+ endDate: a.endDate !== void 0 ? a.endDate : a.end
40
+ } : { startDate: null, endDate: null };
41
+ },
42
+ set: (a) => {
43
+ k("update:modelValue", a), k("change", a);
38
44
  }
39
- }), Y = (t) => {
40
- n.value = { ...n.value, start: t };
41
- }, _ = (t) => {
42
- n.value = { ...n.value, end: t };
43
- }, S = u(() => {
44
- if (n.value.end) {
45
- const t = new Date(n.value.end);
46
- if (!isNaN(t.getTime())) return t.toISOString();
45
+ }), Y = (a) => {
46
+ n.value = { ...n.value, startDate: a };
47
+ }, S = (a) => {
48
+ n.value = { ...n.value, endDate: a };
49
+ }, _ = u(() => {
50
+ if (n.value.endDate) {
51
+ const a = new Date(n.value.endDate);
52
+ if (!isNaN(a.getTime())) return a.toISOString();
47
53
  }
48
- return v.maxDate;
54
+ return g.maxDate;
49
55
  }), C = u(() => {
50
- if (n.value.start) {
51
- const t = new Date(n.value.start);
52
- if (!isNaN(t.getTime())) return t.toISOString();
56
+ if (n.value.startDate) {
57
+ const a = new Date(n.value.startDate);
58
+ if (!isNaN(a.getTime())) return a.toISOString();
53
59
  }
54
- return v.minDate;
55
- }), D = (t) => {
56
- if (!t) return "";
60
+ return g.minDate;
61
+ }), f = (a) => {
62
+ if (!a) return "";
57
63
  try {
58
- const e = new Date(t);
64
+ const e = new Date(a);
59
65
  return isNaN(e.getTime()) ? "" : e.toLocaleDateString("en-US", { month: "short", day: "numeric", year: "numeric" });
60
66
  } catch {
61
67
  return "";
@@ -106,116 +112,113 @@ const $ = { class: "flex items-center justify-between gap-2 w-full" }, j = { cla
106
112
  value: "last_year",
107
113
  icon: "lucide:history"
108
114
  }
109
- ]), F = (t) => {
115
+ ]), V = (a) => {
110
116
  const e = /* @__PURE__ */ new Date();
111
- let a = /* @__PURE__ */ new Date(), i = /* @__PURE__ */ new Date();
112
- switch (e.setHours(0, 0, 0, 0), a.setHours(0, 0, 0, 0), i.setHours(0, 0, 0, 0), t.value) {
117
+ let t = /* @__PURE__ */ new Date(), r = /* @__PURE__ */ new Date();
118
+ switch (e.setHours(0, 0, 0, 0), t.setHours(0, 0, 0, 0), r.setHours(0, 0, 0, 0), a.value) {
113
119
  case "today":
114
- a = new Date(e), i = new Date(e);
120
+ t = new Date(e), r = new Date(e);
115
121
  break;
116
122
  case "yesterday":
117
- a = new Date(e), a.setDate(a.getDate() - 1), i = new Date(a);
123
+ t = new Date(e), t.setDate(t.getDate() - 1), r = new Date(t);
118
124
  break;
119
125
  case "last_7_days":
120
- a = new Date(e), a.setDate(a.getDate() - 6), i = new Date(e);
126
+ t = new Date(e), t.setDate(t.getDate() - 6), r = new Date(e);
121
127
  break;
122
128
  case "last_30_days":
123
- a = new Date(e), a.setDate(a.getDate() - 29), i = new Date(e);
129
+ t = new Date(e), t.setDate(t.getDate() - 29), r = new Date(e);
124
130
  break;
125
131
  case "this_month":
126
- a = new Date(e.getFullYear(), e.getMonth(), 1), i = new Date(e);
132
+ t = new Date(e.getFullYear(), e.getMonth(), 1), r = new Date(e);
127
133
  break;
128
134
  case "last_month":
129
- a = new Date(e.getFullYear(), e.getMonth() - 1, 1), i = new Date(e.getFullYear(), e.getMonth(), 0);
135
+ t = new Date(e.getFullYear(), e.getMonth() - 1, 1), r = new Date(e.getFullYear(), e.getMonth(), 0);
130
136
  break;
131
137
  case "last_6_months":
132
- a = new Date(e.getFullYear(), e.getMonth() - 5, 1), i = new Date(e);
138
+ t = new Date(e.getFullYear(), e.getMonth() - 5, 1), r = new Date(e);
133
139
  break;
134
140
  case "this_year":
135
- a = new Date(e.getFullYear(), 0, 1), i = new Date(e);
141
+ t = new Date(e.getFullYear(), 0, 1), r = new Date(e);
136
142
  break;
137
143
  case "last_year":
138
- a = new Date(e.getFullYear() - 1, 0, 1), i = new Date(e.getFullYear() - 1, 11, 31);
144
+ t = new Date(e.getFullYear() - 1, 0, 1), r = new Date(e.getFullYear() - 1, 11, 31);
139
145
  break;
140
146
  }
141
- n.value = { start: a, end: i }, c.value++, o.value = !1;
147
+ n.value = { startDate: t, endDate: r }, c.value++, o.value = !1;
142
148
  };
143
- return (t, e) => (d(), m(h(T), {
149
+ return (a, e) => (d(), m(v($), {
144
150
  isOpen: o.value,
145
- "onUpdate:isOpen": e[0] || (e[0] = (a) => o.value = a),
151
+ "onUpdate:isOpen": e[0] || (e[0] = (t) => o.value = t),
146
152
  position: "bottom-start",
147
153
  disabled: s.disabled || s.readonly,
148
154
  class: "w-full sm:w-auto inline-block",
149
155
  maxHeight: "none"
150
156
  }, {
151
- trigger: y(({ isOpen: a }) => [
152
- g(P, {
157
+ trigger: D(({ isOpen: t }) => [
158
+ h(P, {
153
159
  icon: "lucide:calendar",
154
160
  variant: s.variant || "outline",
155
161
  size: s.size || "md",
156
162
  disabled: s.disabled,
157
- class: k(["w-max justify-between text-left font-normal", [s.triggerClass, { "ring-1 ring-ring ring-offset-[1]": a }]])
163
+ class: y(["w-full justify-between text-left font-normal", [s.triggerClass, { "ring-1 ring-ring ring-offset-[1]": t }]])
158
164
  }, {
159
- default: y(() => [
160
- r("div", $, [
161
- r("span", {
162
- class: k({ "text-muted-foreground": !n.value.start })
163
- }, R(n.value.start ? D(n.value.start) : s.placeholderStart), 3),
164
- g(f, {
165
- icon: "lucide:arrow-right",
166
- class: "w-4 h-4 text-muted-foreground opacity-60 shrink-0"
167
- }),
168
- r("span", {
169
- class: k({ "text-muted-foreground": !n.value.end })
170
- }, R(n.value.end ? D(n.value.end) : s.placeholderEnd), 3)
165
+ default: D(() => [
166
+ i("div", j, [
167
+ i("span", {
168
+ class: y({ "text-muted-foreground": !n.value.startDate })
169
+ }, x(n.value.startDate ? f(n.value.startDate) : s.placeholderStart), 3),
170
+ e[1] || (e[1] = E(" — ", -1)),
171
+ i("span", {
172
+ class: y({ "text-muted-foreground": !n.value.endDate })
173
+ }, x(n.value.endDate ? f(n.value.endDate) : s.placeholderEnd), 3)
171
174
  ])
172
175
  ]),
173
176
  _: 1
174
177
  }, 8, ["variant", "size", "disabled", "class"])
175
178
  ]),
176
- menu: y(() => [
177
- r("div", j, [
178
- s.showQuickRanges ? (d(), x("div", H, [
179
- e[1] || (e[1] = r("div", { class: "text-xs pl-2 pb-2 font-semibold text-muted-foreground uppercase tracking-wider" }, " Quick Ranges ", -1)),
180
- (d(!0), x(z, null, B(N.value, (a) => (d(), m(P, {
181
- key: a.value,
182
- text: a.label,
183
- icon: a.icon,
179
+ menu: D(() => [
180
+ i("div", H, [
181
+ s.showQuickRanges ? (d(), w("div", Q, [
182
+ e[2] || (e[2] = i("div", { class: "text-xs pl-2 pb-2 font-semibold text-muted-foreground uppercase tracking-wider" }, " Quick Ranges ", -1)),
183
+ (d(!0), w(T, null, z(N.value, (t) => (d(), m(P, {
184
+ key: t.value,
185
+ text: t.label,
186
+ icon: t.icon,
184
187
  variant: "ghost",
185
188
  size: "sm",
186
189
  class: "justify-start w-full font-normal",
187
- onClick: (i) => F(a)
190
+ onClick: (r) => V(t)
188
191
  }, null, 8, ["text", "icon", "onClick"]))), 128))
189
- ])) : E("", !0),
190
- r("div", Q, [
191
- r("div", O, [
192
- (d(), m(h(p), {
192
+ ])) : B("", !0),
193
+ i("div", O, [
194
+ i("div", I, [
195
+ (d(), m(v(p), {
193
196
  key: "start-" + c.value,
194
- value: n.value.start,
197
+ value: n.value.startDate,
195
198
  onChange: Y,
196
199
  mode: "date",
197
- "max-date": S.value,
200
+ "max-date": _.value,
198
201
  "min-date": s.minDate,
199
202
  disabled: s.disabled,
200
203
  class: "min-w-[270px]",
201
204
  readonly: s.readonly
202
205
  }, null, 8, ["value", "max-date", "min-date", "disabled", "readonly"]))
203
206
  ]),
204
- r("div", I, [
205
- g(f, {
207
+ i("div", U, [
208
+ h(R, {
206
209
  icon: "lucide:arrow-right",
207
210
  class: "w-5 h-5 text-muted-foreground hidden sm:block opacity-50"
208
211
  }),
209
- g(f, {
212
+ h(R, {
210
213
  icon: "lucide:arrow-down",
211
214
  class: "w-5 h-5 text-muted-foreground sm:hidden opacity-50"
212
215
  })
213
216
  ]),
214
- r("div", U, [
215
- (d(), m(h(p), {
217
+ i("div", q, [
218
+ (d(), m(v(p), {
216
219
  key: "end-" + c.value,
217
- value: n.value.end,
218
- onChange: _,
220
+ value: n.value.endDate,
221
+ onChange: S,
219
222
  mode: "date",
220
223
  "min-date": C.value,
221
224
  "max-date": s.maxDate,
@@ -232,5 +235,5 @@ const $ = { class: "flex items-center justify-between gap-2 w-full" }, j = { cla
232
235
  }
233
236
  });
234
237
  export {
235
- ae as default
238
+ te as default
236
239
  };
@@ -1,4 +1,4 @@
1
- import { defineComponent as T, computed as r, markRaw as j, openBlock as u, createBlock as f, mergeProps as c, toHandlers as L, createSlots as E, unref as $, withCtx as o, createVNode as A, createTextVNode as p, toDisplayString as v, createCommentVNode as N, resolveDynamicComponent as H } from "vue";
1
+ import { defineComponent as T, computed as r, markRaw as j, openBlock as u, createBlock as f, mergeProps as c, toHandlers as C, createSlots as E, unref as L, withCtx as o, createVNode as A, createTextVNode as p, toDisplayString as v, createCommentVNode as P, resolveDynamicComponent as H } from "vue";
2
2
  import { isComponent as z, isAddonObject as h } from "./utils/form.utils.js";
3
3
  import q from "../NumberInput.vue.js";
4
4
  import g from "../Button.vue.js";
@@ -12,10 +12,11 @@ import Q from "../AvatarUploader/AvatarUploader.vue.js";
12
12
  import V from "../Dropdown/Dropdown.vue.js";
13
13
  import W from "../MultiSelect/MultiSelect.vue.js";
14
14
  import X from "../DatePicker.vue.js";
15
- import Y from "../ColorPicker/ColorPicker.vue.js";
16
- import Z from "../IconPicker.vue.js";
17
- import _ from "./CustomFields.vue.js";
18
- const ge = /* @__PURE__ */ T({
15
+ import Y from "../DateRangePicker.vue.js";
16
+ import Z from "../ColorPicker/ColorPicker.vue.js";
17
+ import _ from "../IconPicker.vue.js";
18
+ import ee from "./CustomFields.vue.js";
19
+ const be = /* @__PURE__ */ T({
19
20
  __name: "FormField",
20
21
  props: {
21
22
  field: {},
@@ -34,10 +35,10 @@ const ge = /* @__PURE__ */ T({
34
35
  loading: { type: Boolean, default: !1 }
35
36
  },
36
37
  emits: ["change", "addonChange", "addonAction"],
37
- setup(t, { emit: P }) {
38
- const e = t, m = P, n = (a, l) => {
38
+ setup(t, { emit: N }) {
39
+ const e = t, m = N, n = (a, l) => {
39
40
  m("change", { value: a, data: l });
40
- }, S = (a) => {
41
+ }, k = (a) => {
41
42
  m("change", { value: a });
42
43
  }, b = r(
43
44
  () => e.field.type === "number" && e.field.isSensitiveField === !0
@@ -67,21 +68,23 @@ const ge = /* @__PURE__ */ T({
67
68
  case "date":
68
69
  case "time":
69
70
  return X;
71
+ case "dateRangePicker":
72
+ return Y;
70
73
  case "file":
71
74
  case "fileUploader":
72
75
  return M;
73
76
  case "avatarUpload":
74
77
  return Q;
75
78
  case "color":
76
- return Y;
77
- case "iconPicker":
78
79
  return Z;
79
- case "customFields":
80
+ case "iconPicker":
80
81
  return _;
82
+ case "customFields":
83
+ return ee;
81
84
  default:
82
85
  return y;
83
86
  }
84
- }), k = r(() => {
87
+ }), R = r(() => {
85
88
  const a = e.field.type, { disabled: l, readonly: d, ...D } = e.field, i = {
86
89
  ...D,
87
90
  disabled: e.disabled || l === !0,
@@ -89,7 +92,7 @@ const ge = /* @__PURE__ */ T({
89
92
  ...e.field.props || {},
90
93
  label: "",
91
94
  labelI18n: ""
92
- }, C = e.field.placeholderI18n ? G(e.field.placeholderI18n) : e.field.placeholder, x = e.variant === "floating" && e.label && !e.floatingActive, s = x ? "" : C;
95
+ }, $ = e.field.placeholderI18n ? G(e.field.placeholderI18n) : e.field.placeholder, x = e.variant === "floating" && e.label && !e.floatingActive, s = x ? "" : $;
93
96
  return a === "text" || a === "email" || a === "password" || a === "tel" || a === "url" || a === "search" || a === "textarea" || !a ? {
94
97
  ...i,
95
98
  modelValue: e.value ?? "",
@@ -163,7 +166,7 @@ const ge = /* @__PURE__ */ T({
163
166
  ...i,
164
167
  modelValue: Array.isArray(e.value) ? e.value : [],
165
168
  options: e.field.options || [],
166
- placeholder: C,
169
+ placeholder: $,
167
170
  variant: e.variant,
168
171
  size: e.size,
169
172
  rounded: e.rounded
@@ -178,6 +181,11 @@ const ge = /* @__PURE__ */ T({
178
181
  class: "px-3!",
179
182
  ...x ? { text: "​" } : {}
180
183
  }
184
+ } : a === "dateRangePicker" ? {
185
+ ...i,
186
+ modelValue: e.value,
187
+ variant: e.variant === "floating" ? "outline-floating" : e.variant || "outline",
188
+ size: e.size
181
189
  } : a === "fileUploader" || a === "file" ? {
182
190
  ...i,
183
191
  modelValue: e.value,
@@ -225,24 +233,24 @@ const ge = /* @__PURE__ */ T({
225
233
  value: e.value,
226
234
  values: e.values
227
235
  } : i;
228
- }), R = r(() => {
236
+ }), S = r(() => {
229
237
  const a = e.field.type;
230
238
  return a === "text" || a === "email" || a === "password" || a === "tel" || a === "url" || a === "search" || a === "textarea" || a === "switch" || a === "check" || !a ? {
231
- "update:modelValue": S
239
+ "update:modelValue": k
232
240
  } : a === "number" && b.value ? {
233
241
  "update:modelValue": (l) => {
234
242
  const d = l === "" ? void 0 : Number(l);
235
243
  m("change", { value: isNaN(d) ? void 0 : d });
236
244
  }
237
245
  } : a === "number" ? {
238
- "update:modelValue": S
246
+ "update:modelValue": k
239
247
  } : a === "select" ? {
240
248
  onSelect: (l) => {
241
249
  n(l.value, l.data);
242
250
  }
243
251
  } : a === "multiSelect" ? {
244
252
  change: (l) => n(l)
245
- } : a === "date" || a === "time" ? {
253
+ } : a === "date" || a === "time" || a === "dateRangePicker" ? {
246
254
  change: (l) => n(l)
247
255
  } : a === "fileUploader" || a === "file" ? {
248
256
  change: (l) => {
@@ -278,10 +286,10 @@ const ge = /* @__PURE__ */ T({
278
286
  a.action && m("addonAction", a.action);
279
287
  };
280
288
  return (a, l) => O.value ? (u(), f(y, c({ key: 0 }, {
281
- ...k.value,
289
+ ...R.value,
282
290
  ...t.field?.props || {}
283
- }, L(R.value)), E({ _: 2 }, [
284
- $(h)(t.field.addonLeft) ? {
291
+ }, C(S.value)), E({ _: 2 }, [
292
+ L(h)(t.field.addonLeft) ? {
285
293
  name: "addon-left",
286
294
  fn: o(() => [
287
295
  t.field.addonLeft.type === "select" ? (u(), f(V, c({
@@ -310,11 +318,11 @@ const ge = /* @__PURE__ */ T({
310
318
  p(v(t.field.addonLeft.text), 1)
311
319
  ]),
312
320
  _: 1
313
- }, 16)) : N("", !0)
321
+ }, 16)) : P("", !0)
314
322
  ]),
315
323
  key: "0"
316
324
  } : void 0,
317
- $(h)(t.field.addonRight) ? {
325
+ L(h)(t.field.addonRight) ? {
318
326
  name: "addon-right",
319
327
  fn: o(() => [
320
328
  t.field.addonRight.type === "select" ? (u(), f(V, c({
@@ -343,7 +351,7 @@ const ge = /* @__PURE__ */ T({
343
351
  p(v(t.field.addonRight.text), 1)
344
352
  ]),
345
353
  _: 1
346
- }, 16)) : N("", !0)
354
+ }, 16)) : P("", !0)
347
355
  ]),
348
356
  key: "1"
349
357
  } : void 0
@@ -351,11 +359,11 @@ const ge = /* @__PURE__ */ T({
351
359
  key: 1,
352
360
  class: ["switch", "check"].includes(t.field?.type) ? "" : "w-full"
353
361
  }, {
354
- ...k.value,
362
+ ...R.value,
355
363
  ...t.field?.props || {}
356
- }, L(R.value)), null, 16, ["class"]));
364
+ }, C(S.value)), null, 16, ["class"]));
357
365
  }
358
366
  });
359
367
  export {
360
- ge as default
368
+ be as default
361
369
  };
@@ -1,7 +1,7 @@
1
1
  import o from "./FormFields.vue2.js";
2
2
  /* empty css */
3
3
  import r from "../../_virtual/_plugin-vue_export-helper.js";
4
- const f = /* @__PURE__ */ r(o, [["__scopeId", "data-v-e60dfb65"]]);
4
+ const a = /* @__PURE__ */ r(o, [["__scopeId", "data-v-f2f7a787"]]);
5
5
  export {
6
- f as default
6
+ a as default
7
7
  };
@@ -1,6 +1,6 @@
1
- import { defineComponent as M, computed as O, ref as j, openBlock as s, createElementBlock as o, normalizeClass as m, Fragment as y, renderList as G, withMemo as J, createBlock as h, withCtx as L, unref as R, resolveDynamicComponent as z, createTextVNode as k, toDisplayString as v, createCommentVNode as c, createElementVNode as K, createVNode as P, markRaw as Q } from "vue";
2
- import { isComponent as p, getNestedValue as W } from "./utils/form.utils.js";
3
- import U from "../Label.vue.js";
1
+ import { defineComponent as j, computed as H, ref as M, openBlock as s, createElementBlock as o, normalizeClass as m, Fragment as y, renderList as O, withMemo as G, createBlock as p, withCtx as L, unref as R, resolveDynamicComponent as D, createTextVNode as F, toDisplayString as h, createCommentVNode as c, createElementVNode as J, createVNode as K, markRaw as Q } from "vue";
2
+ import { isComponent as v, getNestedValue as W } from "./utils/form.utils.js";
3
+ import z from "../Label.vue.js";
4
4
  import X from "./FormField.vue.js";
5
5
  import { $t as Y } from "../../utils/i18n.js";
6
6
  const Z = {
@@ -15,7 +15,7 @@ const Z = {
15
15
  }, ae = {
16
16
  key: 2,
17
17
  class: "mt-1 -text-fs-2.5 text-destructive"
18
- }, ie = /* @__PURE__ */ M({
18
+ }, ie = /* @__PURE__ */ j({
19
19
  __name: "FormFields",
20
20
  props: {
21
21
  schema: {},
@@ -33,29 +33,31 @@ const Z = {
33
33
  isFieldReadonly: {}
34
34
  },
35
35
  emits: ["change", "addonAction"],
36
- setup(a, { emit: f }) {
37
- const r = a, g = f, q = O(() => {
36
+ setup(a, { emit: U }) {
37
+ const r = a, g = U, f = H(() => {
38
38
  if (r.className) return r.className;
39
- }), F = (t) => W(r.values, t.name), l = (t) => r.errors[t.name] || "", D = (t) => r.isFieldVisible ? r.isFieldVisible(t) : !0, x = (t) => r.isFieldDisabled ? r.isFieldDisabled(t) : t.disabled === !0, A = (t) => r.isFieldReadonly ? r.isFieldReadonly(t) : t.readonly === !0, u = (t) => t.labelI18n ? Y(t.labelI18n) : t.label, w = (t) => {
39
+ }), k = (t) => W(r.values, t.name), l = (t) => r.errors[t.name] || "", q = (t) => r.isFieldVisible ? r.isFieldVisible(t) : !0, x = (t) => r.isFieldDisabled ? r.isFieldDisabled(t) : t.disabled === !0, A = (t) => r.isFieldReadonly ? r.isFieldReadonly(t) : t.readonly === !0, u = (t) => t.labelI18n ? Y(t.labelI18n) : t.label, w = (t) => {
40
40
  if (t)
41
- return p(t) ? Q(t) : t;
41
+ return v(t) ? Q(t) : t;
42
42
  }, $ = (t, n) => {
43
43
  g("change", t.name, n);
44
44
  }, B = (t) => t.itemClass || "", I = (t, n) => {
45
45
  g("change", t, n);
46
46
  }, E = (t) => {
47
47
  g("addonAction", t);
48
- }, d = j({}), T = (t) => {
48
+ }, d = M({}), T = (t) => {
49
49
  d.value[t] = !0;
50
- }, S = (t) => {
50
+ }, P = (t) => {
51
51
  d.value[t] = !1;
52
52
  }, C = (t) => {
53
- const n = F(t), e = n != null && n !== "" && !(Array.isArray(n) && n.length === 0), i = typeof n == "number" && !isNaN(n);
54
- return V(t) || t.type === "number" ? d.value[t.name] || e || i : e || i;
53
+ const n = k(t);
54
+ let e = n != null && n !== "" && !(Array.isArray(n) && n.length === 0);
55
+ const i = typeof n == "number" && !isNaN(n);
56
+ return t.type === "dateRangePicker" && n && typeof n == "object" && (e = !!(n.startDate || n.endDate || n.start || n.end)), V(t) || t.type === "number" ? d.value[t.name] || e || i : e || i;
55
57
  }, V = (t) => {
56
58
  const n = t.type || "text";
57
59
  return ["text", "email", "password", "tel", "url", "search", "textarea"].includes(n);
58
- }, H = (t) => t.type === "number" ? (t.props?.variant ?? "split") === "split" ? "left-4" : "left-3" : t.type === "date" || t.type === "time" || t.type === "color" ? "left-10" : "left-3", b = (t) => {
60
+ }, S = (t) => t.type === "number" ? (t.props?.variant ?? "split") === "split" ? "left-4" : "left-3" : t.type === "date" || t.type === "time" || t.type === "color" || t.type === "dateRangePicker" ? "left-10" : "left-3", b = (t) => {
59
61
  if (r.variant !== "floating") return !1;
60
62
  const n = t.type || "text";
61
63
  return ![
@@ -68,18 +70,18 @@ const Z = {
68
70
  ].includes(n);
69
71
  }, N = (t) => {
70
72
  const n = u(t);
71
- if (!(!n || p(n)))
73
+ if (!(!n || v(n)))
72
74
  return n;
73
75
  };
74
76
  return (t, n) => (s(), o("div", {
75
- class: m(["grid", a.variant === "floating" ? "gap-5 mt-1" : "gap-4", q.value])
77
+ class: m(["grid", a.variant === "floating" ? "gap-5 mt-1" : "gap-4", f.value])
76
78
  }, [
77
- (s(!0), o(y, null, G(a.schema, (e) => (s(), o(y, {
79
+ (s(!0), o(y, null, O(a.schema, (e) => (s(), o(y, {
78
80
  key: e.name
79
81
  }, [
80
- D(e) ? J([
82
+ q(e) ? G([
81
83
  e,
82
- F(e),
84
+ k(e),
83
85
  l(e),
84
86
  x(e),
85
87
  A(e),
@@ -94,45 +96,45 @@ const Z = {
94
96
  key: 0,
95
97
  class: m(["max-md:col-span-full! form-field-item", B(e)])
96
98
  }, [
97
- u(e) && e.type !== "switch" && e.type !== "check" && e.type !== "customFields" && !b(e) ? (s(), h(U, {
99
+ u(e) && e.type !== "switch" && e.type !== "check" && e.type !== "customFields" && !b(e) ? (s(), p(z, {
98
100
  key: 0,
99
101
  for: e.name,
100
102
  class: "mb-2 block -text-fs-2! font-medium"
101
103
  }, {
102
104
  default: L(() => [
103
- R(p)(u(e)) ? (s(), h(z(w(u(e))), { key: 0 })) : (s(), o(y, { key: 1 }, [
104
- k(v(u(e)) + " ", 1),
105
+ R(v)(u(e)) ? (s(), p(D(w(u(e))), { key: 0 })) : (s(), o(y, { key: 1 }, [
106
+ F(h(u(e)) + " ", 1),
105
107
  e.required && a.showRequiredAsterisk ? (s(), o("span", Z, "*")) : c("", !0)
106
108
  ], 64))
107
109
  ]),
108
110
  _: 2
109
111
  }, 1032, ["for"])) : c("", !0),
110
- K("div", {
112
+ J("div", {
111
113
  class: m(["relative", ["switch", "check"].includes(e.type) ? "w-auto" : "w-full"]),
112
114
  onFocusin: (i) => T(e.name),
113
- onFocusout: (i) => S(e.name)
115
+ onFocusout: (i) => P(e.name)
114
116
  }, [
115
117
  b(e) && N(e) && !V(e) ? (s(), o("label", {
116
118
  key: 0,
117
119
  for: e.name,
118
120
  class: m([
119
121
  "absolute transition-all duration-200 ease-in-out pointer-events-none z-20",
120
- C(e) ? "-top-2.5 left-3 text-xs bg-background px-1 text-black shadow-[0_4px_4px_-4px_bg-background]" : `top-1/2 -translate-y-1/2 text-sm text-muted-foreground/70 ${H(e)}`
122
+ C(e) ? "-top-2.5 left-3 text-xs bg-background px-1 text-black shadow-[0_4px_4px_-4px_bg-background]" : `top-1/2 -translate-y-1/2 text-sm text-muted-foreground/70 ${S(e)}`
121
123
  ])
122
124
  }, [
123
- R(p)(u(e)) ? (s(), h(z(w(u(e))), { key: 0 })) : (s(), o(y, { key: 1 }, [
124
- k(v(u(e)) + " ", 1),
125
+ R(v)(u(e)) ? (s(), p(D(w(u(e))), { key: 0 })) : (s(), o(y, { key: 1 }, [
126
+ F(h(u(e)) + " ", 1),
125
127
  e.required ? (s(), o("span", te, "*")) : c("", !0)
126
128
  ], 64))
127
129
  ], 10, ee)) : c("", !0),
128
- P(X, {
130
+ K(X, {
129
131
  field: r.variant === "floating" ? {
130
132
  ...e,
131
133
  placeholder: void 0,
132
134
  placeholderI18n: void 0,
133
135
  props: { ...e.props || {}, id: e.name }
134
136
  } : { ...e, props: { ...e.props || {}, id: e.name } },
135
- value: F(e),
137
+ value: k(e),
136
138
  floatingActive: C(e),
137
139
  label: e.type === "customFields" ? void 0 : b(e) ? N(e) : void 0,
138
140
  values: a.values,
@@ -150,18 +152,18 @@ const Z = {
150
152
  onAddonAction: E
151
153
  }, null, 8, ["field", "value", "floatingActive", "label", "values", "errors", "variant", "size", "rounded", "disabled", "readonly", "error", "isUpdate", "loading", "onChange"])
152
154
  ], 42, _),
153
- u(e) && (e.type === "switch" || e.type === "check") ? (s(), h(U, {
155
+ u(e) && (e.type === "switch" || e.type === "check") ? (s(), p(z, {
154
156
  key: 1,
155
157
  for: e.name,
156
158
  class: "ml-2 text-sm font-medium cursor-pointer"
157
159
  }, {
158
160
  default: L(() => [
159
- k(v(u(e)) + " ", 1),
161
+ F(h(u(e)) + " ", 1),
160
162
  e.required ? (s(), o("span", ne, "*")) : c("", !0)
161
163
  ]),
162
164
  _: 2
163
165
  }, 1032, ["for"])) : c("", !0),
164
- l(e) ? (s(), o("p", ae, v(l(e)), 1)) : c("", !0)
166
+ l(e) ? (s(), o("p", ae, h(l(e)), 1)) : c("", !0)
165
167
  ], 2)), n, 0) : c("", !0)
166
168
  ], 64))), 128))
167
169
  ], 2));
@@ -23,7 +23,7 @@ export interface IFormAddon {
23
23
  /**
24
24
  * Form field types - maps to corresponding UI components
25
25
  */
26
- export type IFormFieldType = 'text' | 'email' | 'password' | 'number' | 'file' | 'fileUploader' | 'tel' | 'url' | 'search' | 'date' | 'textarea' | 'time' | 'iconPicker' | 'color' | 'switch' | 'check' | 'customFields' | 'select' | 'multiSelect' | 'avatarUpload' | Component;
26
+ export type IFormFieldType = 'text' | 'email' | 'password' | 'number' | 'file' | 'fileUploader' | 'tel' | 'url' | 'search' | 'date' | 'dateRangePicker' | 'textarea' | 'time' | 'iconPicker' | 'color' | 'switch' | 'check' | 'customFields' | 'select' | 'multiSelect' | 'avatarUpload' | Component;
27
27
  /**
28
28
  * Context passed to conditional functions
29
29
  */
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.9.8",
6
+ "version": "0.9.9",
7
7
  "type": "module",
8
8
  "main": "index.js",
9
9
  "module": "index.js",
@@ -47,7 +47,7 @@
47
47
  "qrcode": "^1.5.4",
48
48
  "scrollreveal": "^4.0.9",
49
49
  "tailwindcss": "^4.1.18",
50
- "v-datepicker-lite": "^0.1.9",
50
+ "v-datepicker-lite": "^0.1.10",
51
51
  "v-file-preview": "^0.1.3",
52
52
  "v-tooltip-lite": "^0.2.8",
53
53
  "vue-carousel-lite": "^0.2.7",
package/style.css CHANGED
@@ -973,5 +973,5 @@ textarea::-webkit-scrollbar-thumb:hover {
973
973
  }
974
974
 
975
975
  /* --- Vite Generated CSS --- */
976
- input[data-v-9a771336]::-webkit-outer-spin-button,input[data-v-9a771336]::-webkit-inner-spin-button{-webkit-appearance:none;appearance:none;margin:0}input[type=number][data-v-9a771336]{-moz-appearance:textfield;appearance:textfield}@keyframes onAutoFillStart{0%{opacity:1}to{opacity:1}}@keyframes onAutoFillCancel{0%{opacity:1}to{opacity:1}}input.autofill-detect:-webkit-autofill{animation-name:onAutoFillStart;animation-duration:1ms;animation-fill-mode:both}input.autofill-detect:not(:-webkit-autofill){animation-name:onAutoFillCancel;animation-duration:1ms;animation-fill-mode:both}.dropdown-menu[data-v-c4c5d9e4]{will-change:transform;contain:layout style}.v-modal-overlay[data-v-7c958115]{background-color:#00000052}.v-modal-backdrop[data-v-7c958115]{transform:translateZ(0);will-change:opacity}.modal-body[data-v-7c958115]{will-change:transform;contain:layout style}.blink-bg[data-v-7c958115]{animation:blink-animation-7c958115 1s infinite}@keyframes blink-animation-7c958115{0%{background-color:inherit}15%{background-color:var(--color-gray-250)}35%{background-color:inherit}75%{background-color:var(--color-gray-250)}to{background-color:inherit}}.IroBox{border-radius:8px!important}.custom-fields-table[data-v-3674ca13]{will-change:transform;contain:layout style}.custom-fields-table[data-v-3674ca13] .form-field-item{margin-bottom:0!important;height:100%}.custom-fields-table[data-v-3674ca13] input,.custom-fields-table[data-v-3674ca13] textarea{padding-left:1em;padding-right:.5em}.custom-fields-table[data-v-3674ca13] input,.custom-fields-table[data-v-3674ca13] textarea,.custom-fields-table[data-v-3674ca13] select,.custom-fields-table[data-v-3674ca13] .input-wrapper,.custom-fields-table[data-v-3674ca13] .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-3674ca13] .tooltip-trigger button{justify-content:space-between!important}.custom-fields-table[data-v-3674ca13] input:focus,.custom-fields-table[data-v-3674ca13] textarea:focus,.custom-fields-table[data-v-3674ca13] select:focus,.custom-fields-table[data-v-3674ca13] .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-3674ca13] .w-full{width:100%;height:100%}.list-enter-active[data-v-3674ca13]{transition:all .15s cubic-bezier(.16,1,.3,1)}.list-enter-from[data-v-3674ca13]{opacity:0;transform:translateY(-5px)}.form-field-item[data-v-e60dfb65]{display:flex;flex-direction:column}.form-field-item[data-v-e60dfb65]:has([role=switch]),.form-field-item[data-v-e60dfb65]:has([role=checkbox]){flex-direction:row;align-items:center;justify-content:flex-start}.form-container[data-v-06b1158f]{width:100%}[data-tabes][data-v-262d5698]:not(.inline-flex):not([class*=gap-6])>:where(button,a,[role=tab]){flex:1 1 0%;min-width:0}[data-tabes].inline-flex[data-v-262d5698]{overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}[data-tabes].inline-flex[data-v-262d5698]::-webkit-scrollbar{display:none}@media(max-width:480px){[data-tabes][data-v-262d5698]:not([class*=flex-wrap]){overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}[data-tabes][data-v-262d5698]:not([class*=flex-wrap])::-webkit-scrollbar{display:none}}.custom-scrollbar[data-v-3a733454]::-webkit-scrollbar{width:0px}.custom-scrollbar[data-v-3a733454]::-webkit-scrollbar-track{background:transparent}.custom-scrollbar[data-v-3a733454]::-webkit-scrollbar-thumb{background-color:var(--color-border);border-radius:10px}.scrollable-container[data-v-3a733454]{will-change:transform;contain:layout style}.custom-scrollbar-x[data-v-1285df4f]::-webkit-scrollbar{height:8px}.custom-scrollbar-x[data-v-1285df4f]::-webkit-scrollbar-track{background:transparent}.custom-scrollbar-x[data-v-1285df4f]::-webkit-scrollbar-thumb{background-color:var(--color-border);border-radius:10px}.scrollable-container[data-v-1285df4f]{will-change:transform;contain:layout style}.v-sidepanel-overlay[data-v-ff2923de]{background-color:#0003}.sidepanel-body[data-v-ff2923de]{will-change:transform;contain:layout style}.navbar-tabs-no-scrollbar{scrollbar-width:none;-ms-overflow-style:none}.navbar-tabs-no-scrollbar::-webkit-scrollbar{display:none}.fade-x-enter-active,.fade-x-leave-active{transition:opacity .15s ease}.fade-x-enter-from,.fade-x-leave-to{opacity:0}.breadcrumb-item[data-v-ecb5df7c]{display:inline-flex;align-items:center;cursor:pointer}.breadcrumb-link[data-v-ecb5df7c]{display:inline-flex;align-items:center;gap:.35em;color:var(--color-muted-foreground);text-decoration:none;transition:color .15s ease,background-color .15s ease;border-radius:var(--radius-sm)}.breadcrumb-link[data-v-ecb5df7c]:not(.current):not(.disabled):hover{color:var(--color-foreground)}.breadcrumb-link.current[data-v-ecb5df7c]{color:var(--color-foreground);font-weight:600;cursor:default}.breadcrumb-link.disabled[data-v-ecb5df7c]{opacity:.45;cursor:not-allowed;pointer-events:none}.breadcrumb-icon[data-v-ecb5df7c]{flex-shrink:0}.breadcrumb-list[data-v-d1e90135]{display:flex;flex-wrap:wrap;align-items:center;list-style:none;margin:0;padding:0;gap:.38em}.breadcrumb--sm[data-v-d1e90135]{font-size:var(--text--fs-2)}.breadcrumb--md[data-v-d1e90135]{font-size:var(--text-fs-0.5, 1em)}.breadcrumb--lg[data-v-d1e90135]{font-size:var(--text-fs-2)}.breadcrumb-separator[data-v-d1e90135]{display:inline-flex;align-items:center;color:var(--color-gray-500);-webkit-user-select:none;user-select:none;font-size:.9em;line-height:1;padding:0 .1em}.breadcrumb-ellipsis[data-v-d1e90135]{display:inline-flex;align-items:center}.breadcrumb-ellipsis-btn[data-v-d1e90135]{display:inline-flex;align-items:center;justify-content:center;width:1.6em;height:1.6em;border-radius:var(--radius-sm);border:1px solid var(--color-border);background:transparent;color:var(--color-muted-foreground);cursor:pointer;font-size:.9em;line-height:1;letter-spacing:.05em;transition:all .15s ease}.breadcrumb-ellipsis-btn[data-v-d1e90135]:hover{background:var(--color-accent);color:var(--color-foreground);border-color:var(--color-gray-350)}.breadcrumb--contained[data-v-d1e90135]{background:var(--color-secondary);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:.45em 1em}.breadcrumb--pills[data-v-d1e90135] .breadcrumb-link{padding:.2em .7em;border-radius:9999px;background:var(--color-secondary);border:1px solid var(--color-border)}.breadcrumb--pills[data-v-d1e90135] .breadcrumb-link:not(.current):not(.disabled):hover{background:var(--color-accent);border-color:var(--color-gray-350)}.breadcrumb--pills[data-v-d1e90135] .breadcrumb-link.current{background:var(--color-primary);color:var(--color-primary-foreground);border-color:var(--color-primary)}.breadcrumb--arrow .breadcrumb-list[data-v-d1e90135]{gap:0}.breadcrumb--arrow[data-v-d1e90135] .breadcrumb-link{padding:.35em .9em .35em 1.4em;background:var(--color-secondary);clip-path:polygon(0 0,calc(100% - .6em) 0,100% 50%,calc(100% - .6em) 100%,0 100%,.6em 50%);border:none;margin-left:-.3em}.breadcrumb--arrow[data-v-d1e90135] .breadcrumb-item:first-child .breadcrumb-link{padding-left:.9em;clip-path:polygon(0 0,calc(100% - .6em) 0,100% 50%,calc(100% - .6em) 100%,0 100%);border-radius:var(--radius-sm) 0 0 var(--radius-sm);margin-left:0}.breadcrumb--arrow[data-v-d1e90135] .breadcrumb-link:not(.current):not(.disabled):hover{background:var(--color-accent)}.breadcrumb--arrow[data-v-d1e90135] .breadcrumb-link.current{background:var(--color-primary);color:var(--color-primary-foreground)}.breadcrumb--arrow .breadcrumb-separator[data-v-d1e90135]{display:none}.import-table[data-v-cfd99cc9]{width:100%;font-size:.875rem;text-align:left;border-collapse:collapse}.import-thead[data-v-cfd99cc9]{font-size:.75rem;color:var(--color-muted-foreground, #6b7280);text-transform:uppercase;background-color:var(--color-muted, #f3f4f6);position:sticky;top:0;z-index:10}.import-th[data-v-cfd99cc9]{padding:.75rem 1rem;font-weight:500}.import-th-center[data-v-cfd99cc9]{text-align:center;width:4rem}.import-tbody .import-tr[data-v-cfd99cc9]{border-bottom:1px solid var(--color-border, #e5e7eb)}.import-tbody .import-tr[data-v-cfd99cc9]:last-child{border-bottom:none}.import-tr-active[data-v-cfd99cc9]{transition:background-color .2s ease-in-out}.import-tr-active[data-v-cfd99cc9]:hover{background-color:var(--color-muted, #f3f4f6);opacity:.85}.import-tr-ignored[data-v-cfd99cc9]{background-color:var(--color-muted, #f3f4f6);opacity:.6}.import-td-header[data-v-cfd99cc9]{padding:.75rem 1rem;font-weight:500;color:var(--color-foreground, #111827);white-space:nowrap}.import-td-dropdown[data-v-cfd99cc9]{padding:.5rem 1rem;min-width:200px}.import-td-preview[data-v-cfd99cc9]{padding:.75rem 1rem;color:var(--color-muted-foreground, #6b7280);min-width:200px;max-width:300px}.import-td-action[data-v-cfd99cc9]{padding:.75rem 1rem;text-align:center;vertical-align:middle}.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}}.masonry-item[data-v-c29d0159]{content-visibility:auto;contain-intrinsic-size:1px 200px}.carousel-wrapper[data-v-e8fba320]{width:100%;position:relative;will-change:transform;contain:layout style}.file-tree-container[data-v-91337be9],.sheet-container[data-v-a5e9ca6f]{will-change:transform;contain:layout style}.accordion-enter-active[data-v-0075dffb],.accordion-leave-active[data-v-0075dffb]{transition:height .3s ease-in-out;will-change:height}.content-wrapper[data-v-0075dffb]{contain:paint}.sidebar-manu-item .tooltip-trigger{width:100%!important}.sidebar-menu-tooltip{margin-left:4px!important}[dir=rtl] .sidebar-menu-tooltip{margin-right:4px!important}.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)}}.permission-matrix-wrapper[data-v-ba68e64a]{max-height:70vh;will-change:transform;contain:layout style}.permission-matrix-wrapper[data-v-ba68e64a]::-webkit-scrollbar{width:6px;height:6px}.permission-matrix-wrapper[data-v-ba68e64a]::-webkit-scrollbar-track{background:transparent}.permission-matrix-wrapper[data-v-ba68e64a]::-webkit-scrollbar-thumb{background:var(--color-gray-350);border-radius:3px}.permission-matrix-wrapper[data-v-ba68e64a]::-webkit-scrollbar-thumb:hover{background:var(--color-gray-400)}.permission-list-wrapper[data-v-a42b2fb0]{border:1px solid var(--color-border);border-radius:.5rem;overflow:hidden;background-color:var(--color-background);will-change:transform;contain:layout style}.custom-list-header[data-v-a42b2fb0]{background-color:var(--color-muted);border-bottom:1px solid var(--color-border);padding:var(--cell-py) var(--cell-px)}.custom-list-group-content .custom-list-item[data-v-a42b2fb0]{border-bottom:1px solid var(--color-border);padding:var(--cell-py) var(--cell-px);background-color:var(--color-background)}.custom-list-group-content .custom-list-item[data-v-a42b2fb0]:hover{background-color:var(--color-accent)}.custom-list-group-content .custom-list-item[data-v-a42b2fb0]:last-child{border-bottom:none}.custom-list-group-content+.custom-list-header[data-v-a42b2fb0],.custom-list-header+.custom-list-header[data-v-a42b2fb0]{border-top:1px solid var(--color-border)}.permission-list-wrapper>.custom-list-header[data-v-a42b2fb0]:last-child{border-bottom:none}.permission-matrix-wrapper[data-v-0b1ab970]{border:1px solid var(--color-border);background-color:var(--color-gray-100);border-radius:.5rem;overflow:auto;max-height:65vh;position:relative;will-change:transform;contain:layout style}.permission-matrix-wrapper[data-v-0b1ab970]::-webkit-scrollbar{width:6px;height:6px}.permission-matrix-wrapper[data-v-0b1ab970]::-webkit-scrollbar-track{background:transparent}.permission-matrix-wrapper[data-v-0b1ab970]::-webkit-scrollbar-thumb{background:var(--color-gray-350);border-radius:3px}.permission-matrix-wrapper[data-v-0b1ab970]::-webkit-scrollbar-thumb:hover{background:var(--color-gray-400)}.custom-table[data-v-0b1ab970]{width:100%;border-collapse:collapse}.custom-sticky-header th[data-v-0b1ab970]{position:sticky;top:0;z-index:20;box-shadow:0 1px 0 var(--color-border)}.custom-th[data-v-0b1ab970]{background-color:var(--color-gray-150);color:var(--color-foreground);background-clip:padding-box;border-bottom:none;border-left:1px solid var(--color-border);padding:var(--cell-py) var(--cell-px);text-align:left;font-weight:600;min-width:200px}thead:not(.custom-sticky-header) .custom-th[data-v-0b1ab970]{border-bottom:1px solid var(--color-border)}.custom-th.text-center[data-v-0b1ab970]{text-align:center;min-width:100px}.custom-th[data-v-0b1ab970]:first-child{border-left:none}.custom-td[data-v-0b1ab970]{border-bottom:1px solid var(--color-border);border-left:1px solid var(--color-border);padding:var(--cell-py) var(--cell-px)}.custom-td.text-center[data-v-0b1ab970]{text-align:center}.custom-td[data-v-0b1ab970]:first-child{border-left:none}.custom-group-row td[data-v-0b1ab970]{background-color:var(--color-gray-100);border-top:1px solid var(--color-border);border-bottom:1px solid var(--color-border)}.custom-entity-row[data-v-0b1ab970]{background-color:var(--color-background);transition:background-color .1s ease}.custom-entity-row[data-v-0b1ab970]:hover{background-color:var(--color-gray-50)}.custom-entity-row:last-child td[data-v-0b1ab970]{border-bottom:none}.custom-active-cell[data-v-0b1ab970]{cursor:pointer}.custom-active-cell[data-v-0b1ab970]:hover{background-color:var(--color-accent)}.button-group[data-v-ba735fac] button{align-self:stretch;height:auto!important;min-height:unset!important;min-width:unset!important;width:auto!important}.button-group[data-v-ba735fac]:not(.vertical-group) button{aspect-ratio:unset}.attached-group[data-v-ba735fac] button{position:relative;--radius: .375rem}.attached-group[data-v-ba735fac] button:focus-visible,.attached-group[data-v-ba735fac] button:hover{z-index:10}.attached-group[data-v-ba735fac]:not(.vertical-group) button:not(:first-child){margin-left:-1px}.attached-group[data-v-ba735fac]: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-ba735fac]:not(.vertical-group) button:not(:first-child):not(:last-child){border-radius:0}.attached-group[data-v-ba735fac]: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-ba735fac] button:not(:first-child){margin-top:-1px}.vertical-group[data-v-ba735fac] 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-ba735fac] button:not(:first-child):not(:last-child){border-radius:0}.vertical-group[data-v-ba735fac] 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-ba735fac]: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;height:100%}.vertical-group[data-v-ba735fac] button:not(:first-child):not(.border):before{content:"";position:absolute;top:0;left:0;right:0;height:1px;width:100%;background-color:currentColor;opacity:.15;z-index:5;pointer-events:none}.toast-item[data-v-9c775c23]{will-change:transform,opacity;contain:layout style}.first-toast-enter-active[data-v-9c775c23]{animation:first-toast-in-9c775c23 .45s cubic-bezier(.23,1,.32,1) forwards}.first-toast-leave-active[data-v-9c775c23]{transition:all .25s ease-in}.first-toast-leave-to[data-v-9c775c23]{opacity:0;transform:scale(.98)}@keyframes first-toast-in-9c775c23{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-9c775c23],.stack-toast-leave-active[data-v-9c775c23]{transition:all .3s cubic-bezier(.16,1,.3,1)}.stack-toast-enter-from[data-v-9c775c23]{opacity:0;transform:scale(.95) translateY(10px)}.stack-toast-leave-to[data-v-9c775c23]{opacity:0;transform:scale(.95)}.stack-toast-move[data-v-9c775c23]{transition:transform .4s cubic-bezier(.16,1,.3,1)}.cp-item-transition[data-v-66b1ae06]{transition:background-color 80ms ease,color 80ms ease}.command-palette-content[data-v-1bae4c0f] ::-webkit-scrollbar{width:4px}.command-palette-content[data-v-1bae4c0f] ::-webkit-scrollbar-track{background:transparent}.command-palette-content[data-v-1bae4c0f] ::-webkit-scrollbar-thumb{background:var(--border);border-radius:9999px}.cp-scroll-container[data-v-1bae4c0f]{transform:translateZ(0);will-change:transform;touch-action:pan-y;backface-visibility:hidden}
976
+ input[data-v-9a771336]::-webkit-outer-spin-button,input[data-v-9a771336]::-webkit-inner-spin-button{-webkit-appearance:none;appearance:none;margin:0}input[type=number][data-v-9a771336]{-moz-appearance:textfield;appearance:textfield}@keyframes onAutoFillStart{0%{opacity:1}to{opacity:1}}@keyframes onAutoFillCancel{0%{opacity:1}to{opacity:1}}input.autofill-detect:-webkit-autofill{animation-name:onAutoFillStart;animation-duration:1ms;animation-fill-mode:both}input.autofill-detect:not(:-webkit-autofill){animation-name:onAutoFillCancel;animation-duration:1ms;animation-fill-mode:both}.dropdown-menu[data-v-c4c5d9e4]{will-change:transform;contain:layout style}.v-modal-overlay[data-v-7c958115]{background-color:#00000052}.v-modal-backdrop[data-v-7c958115]{transform:translateZ(0);will-change:opacity}.modal-body[data-v-7c958115]{will-change:transform;contain:layout style}.blink-bg[data-v-7c958115]{animation:blink-animation-7c958115 1s infinite}@keyframes blink-animation-7c958115{0%{background-color:inherit}15%{background-color:var(--color-gray-250)}35%{background-color:inherit}75%{background-color:var(--color-gray-250)}to{background-color:inherit}}.IroBox{border-radius:8px!important}.custom-fields-table[data-v-3674ca13]{will-change:transform;contain:layout style}.custom-fields-table[data-v-3674ca13] .form-field-item{margin-bottom:0!important;height:100%}.custom-fields-table[data-v-3674ca13] input,.custom-fields-table[data-v-3674ca13] textarea{padding-left:1em;padding-right:.5em}.custom-fields-table[data-v-3674ca13] input,.custom-fields-table[data-v-3674ca13] textarea,.custom-fields-table[data-v-3674ca13] select,.custom-fields-table[data-v-3674ca13] .input-wrapper,.custom-fields-table[data-v-3674ca13] .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-3674ca13] .tooltip-trigger button{justify-content:space-between!important}.custom-fields-table[data-v-3674ca13] input:focus,.custom-fields-table[data-v-3674ca13] textarea:focus,.custom-fields-table[data-v-3674ca13] select:focus,.custom-fields-table[data-v-3674ca13] .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-3674ca13] .w-full{width:100%;height:100%}.list-enter-active[data-v-3674ca13]{transition:all .15s cubic-bezier(.16,1,.3,1)}.list-enter-from[data-v-3674ca13]{opacity:0;transform:translateY(-5px)}.form-field-item[data-v-f2f7a787]{display:flex;flex-direction:column}.form-field-item[data-v-f2f7a787]:has([role=switch]),.form-field-item[data-v-f2f7a787]:has([role=checkbox]){flex-direction:row;align-items:center;justify-content:flex-start}.form-container[data-v-06b1158f]{width:100%}[data-tabes][data-v-262d5698]:not(.inline-flex):not([class*=gap-6])>:where(button,a,[role=tab]){flex:1 1 0%;min-width:0}[data-tabes].inline-flex[data-v-262d5698]{overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}[data-tabes].inline-flex[data-v-262d5698]::-webkit-scrollbar{display:none}@media(max-width:480px){[data-tabes][data-v-262d5698]:not([class*=flex-wrap]){overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}[data-tabes][data-v-262d5698]:not([class*=flex-wrap])::-webkit-scrollbar{display:none}}.custom-scrollbar[data-v-3a733454]::-webkit-scrollbar{width:0px}.custom-scrollbar[data-v-3a733454]::-webkit-scrollbar-track{background:transparent}.custom-scrollbar[data-v-3a733454]::-webkit-scrollbar-thumb{background-color:var(--color-border);border-radius:10px}.scrollable-container[data-v-3a733454]{will-change:transform;contain:layout style}.custom-scrollbar-x[data-v-1285df4f]::-webkit-scrollbar{height:8px}.custom-scrollbar-x[data-v-1285df4f]::-webkit-scrollbar-track{background:transparent}.custom-scrollbar-x[data-v-1285df4f]::-webkit-scrollbar-thumb{background-color:var(--color-border);border-radius:10px}.scrollable-container[data-v-1285df4f]{will-change:transform;contain:layout style}.v-sidepanel-overlay[data-v-ff2923de]{background-color:#0003}.sidepanel-body[data-v-ff2923de]{will-change:transform;contain:layout style}.navbar-tabs-no-scrollbar{scrollbar-width:none;-ms-overflow-style:none}.navbar-tabs-no-scrollbar::-webkit-scrollbar{display:none}.fade-x-enter-active,.fade-x-leave-active{transition:opacity .15s ease}.fade-x-enter-from,.fade-x-leave-to{opacity:0}.breadcrumb-item[data-v-ecb5df7c]{display:inline-flex;align-items:center;cursor:pointer}.breadcrumb-link[data-v-ecb5df7c]{display:inline-flex;align-items:center;gap:.35em;color:var(--color-muted-foreground);text-decoration:none;transition:color .15s ease,background-color .15s ease;border-radius:var(--radius-sm)}.breadcrumb-link[data-v-ecb5df7c]:not(.current):not(.disabled):hover{color:var(--color-foreground)}.breadcrumb-link.current[data-v-ecb5df7c]{color:var(--color-foreground);font-weight:600;cursor:default}.breadcrumb-link.disabled[data-v-ecb5df7c]{opacity:.45;cursor:not-allowed;pointer-events:none}.breadcrumb-icon[data-v-ecb5df7c]{flex-shrink:0}.breadcrumb-list[data-v-d1e90135]{display:flex;flex-wrap:wrap;align-items:center;list-style:none;margin:0;padding:0;gap:.38em}.breadcrumb--sm[data-v-d1e90135]{font-size:var(--text--fs-2)}.breadcrumb--md[data-v-d1e90135]{font-size:var(--text-fs-0.5, 1em)}.breadcrumb--lg[data-v-d1e90135]{font-size:var(--text-fs-2)}.breadcrumb-separator[data-v-d1e90135]{display:inline-flex;align-items:center;color:var(--color-gray-500);-webkit-user-select:none;user-select:none;font-size:.9em;line-height:1;padding:0 .1em}.breadcrumb-ellipsis[data-v-d1e90135]{display:inline-flex;align-items:center}.breadcrumb-ellipsis-btn[data-v-d1e90135]{display:inline-flex;align-items:center;justify-content:center;width:1.6em;height:1.6em;border-radius:var(--radius-sm);border:1px solid var(--color-border);background:transparent;color:var(--color-muted-foreground);cursor:pointer;font-size:.9em;line-height:1;letter-spacing:.05em;transition:all .15s ease}.breadcrumb-ellipsis-btn[data-v-d1e90135]:hover{background:var(--color-accent);color:var(--color-foreground);border-color:var(--color-gray-350)}.breadcrumb--contained[data-v-d1e90135]{background:var(--color-secondary);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:.45em 1em}.breadcrumb--pills[data-v-d1e90135] .breadcrumb-link{padding:.2em .7em;border-radius:9999px;background:var(--color-secondary);border:1px solid var(--color-border)}.breadcrumb--pills[data-v-d1e90135] .breadcrumb-link:not(.current):not(.disabled):hover{background:var(--color-accent);border-color:var(--color-gray-350)}.breadcrumb--pills[data-v-d1e90135] .breadcrumb-link.current{background:var(--color-primary);color:var(--color-primary-foreground);border-color:var(--color-primary)}.breadcrumb--arrow .breadcrumb-list[data-v-d1e90135]{gap:0}.breadcrumb--arrow[data-v-d1e90135] .breadcrumb-link{padding:.35em .9em .35em 1.4em;background:var(--color-secondary);clip-path:polygon(0 0,calc(100% - .6em) 0,100% 50%,calc(100% - .6em) 100%,0 100%,.6em 50%);border:none;margin-left:-.3em}.breadcrumb--arrow[data-v-d1e90135] .breadcrumb-item:first-child .breadcrumb-link{padding-left:.9em;clip-path:polygon(0 0,calc(100% - .6em) 0,100% 50%,calc(100% - .6em) 100%,0 100%);border-radius:var(--radius-sm) 0 0 var(--radius-sm);margin-left:0}.breadcrumb--arrow[data-v-d1e90135] .breadcrumb-link:not(.current):not(.disabled):hover{background:var(--color-accent)}.breadcrumb--arrow[data-v-d1e90135] .breadcrumb-link.current{background:var(--color-primary);color:var(--color-primary-foreground)}.breadcrumb--arrow .breadcrumb-separator[data-v-d1e90135]{display:none}.import-table[data-v-cfd99cc9]{width:100%;font-size:.875rem;text-align:left;border-collapse:collapse}.import-thead[data-v-cfd99cc9]{font-size:.75rem;color:var(--color-muted-foreground, #6b7280);text-transform:uppercase;background-color:var(--color-muted, #f3f4f6);position:sticky;top:0;z-index:10}.import-th[data-v-cfd99cc9]{padding:.75rem 1rem;font-weight:500}.import-th-center[data-v-cfd99cc9]{text-align:center;width:4rem}.import-tbody .import-tr[data-v-cfd99cc9]{border-bottom:1px solid var(--color-border, #e5e7eb)}.import-tbody .import-tr[data-v-cfd99cc9]:last-child{border-bottom:none}.import-tr-active[data-v-cfd99cc9]{transition:background-color .2s ease-in-out}.import-tr-active[data-v-cfd99cc9]:hover{background-color:var(--color-muted, #f3f4f6);opacity:.85}.import-tr-ignored[data-v-cfd99cc9]{background-color:var(--color-muted, #f3f4f6);opacity:.6}.import-td-header[data-v-cfd99cc9]{padding:.75rem 1rem;font-weight:500;color:var(--color-foreground, #111827);white-space:nowrap}.import-td-dropdown[data-v-cfd99cc9]{padding:.5rem 1rem;min-width:200px}.import-td-preview[data-v-cfd99cc9]{padding:.75rem 1rem;color:var(--color-muted-foreground, #6b7280);min-width:200px;max-width:300px}.import-td-action[data-v-cfd99cc9]{padding:.75rem 1rem;text-align:center;vertical-align:middle}.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}}.masonry-item[data-v-c29d0159]{content-visibility:auto;contain-intrinsic-size:1px 200px}.carousel-wrapper[data-v-e8fba320]{width:100%;position:relative;will-change:transform;contain:layout style}.file-tree-container[data-v-91337be9],.sheet-container[data-v-a5e9ca6f]{will-change:transform;contain:layout style}.accordion-enter-active[data-v-0075dffb],.accordion-leave-active[data-v-0075dffb]{transition:height .3s ease-in-out;will-change:height}.content-wrapper[data-v-0075dffb]{contain:paint}.sidebar-manu-item .tooltip-trigger{width:100%!important}.sidebar-menu-tooltip{margin-left:4px!important}[dir=rtl] .sidebar-menu-tooltip{margin-right:4px!important}.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)}}.permission-matrix-wrapper[data-v-ba68e64a]{max-height:70vh;will-change:transform;contain:layout style}.permission-matrix-wrapper[data-v-ba68e64a]::-webkit-scrollbar{width:6px;height:6px}.permission-matrix-wrapper[data-v-ba68e64a]::-webkit-scrollbar-track{background:transparent}.permission-matrix-wrapper[data-v-ba68e64a]::-webkit-scrollbar-thumb{background:var(--color-gray-350);border-radius:3px}.permission-matrix-wrapper[data-v-ba68e64a]::-webkit-scrollbar-thumb:hover{background:var(--color-gray-400)}.permission-list-wrapper[data-v-a42b2fb0]{border:1px solid var(--color-border);border-radius:.5rem;overflow:hidden;background-color:var(--color-background);will-change:transform;contain:layout style}.custom-list-header[data-v-a42b2fb0]{background-color:var(--color-muted);border-bottom:1px solid var(--color-border);padding:var(--cell-py) var(--cell-px)}.custom-list-group-content .custom-list-item[data-v-a42b2fb0]{border-bottom:1px solid var(--color-border);padding:var(--cell-py) var(--cell-px);background-color:var(--color-background)}.custom-list-group-content .custom-list-item[data-v-a42b2fb0]:hover{background-color:var(--color-accent)}.custom-list-group-content .custom-list-item[data-v-a42b2fb0]:last-child{border-bottom:none}.custom-list-group-content+.custom-list-header[data-v-a42b2fb0],.custom-list-header+.custom-list-header[data-v-a42b2fb0]{border-top:1px solid var(--color-border)}.permission-list-wrapper>.custom-list-header[data-v-a42b2fb0]:last-child{border-bottom:none}.permission-matrix-wrapper[data-v-0b1ab970]{border:1px solid var(--color-border);background-color:var(--color-gray-100);border-radius:.5rem;overflow:auto;max-height:65vh;position:relative;will-change:transform;contain:layout style}.permission-matrix-wrapper[data-v-0b1ab970]::-webkit-scrollbar{width:6px;height:6px}.permission-matrix-wrapper[data-v-0b1ab970]::-webkit-scrollbar-track{background:transparent}.permission-matrix-wrapper[data-v-0b1ab970]::-webkit-scrollbar-thumb{background:var(--color-gray-350);border-radius:3px}.permission-matrix-wrapper[data-v-0b1ab970]::-webkit-scrollbar-thumb:hover{background:var(--color-gray-400)}.custom-table[data-v-0b1ab970]{width:100%;border-collapse:collapse}.custom-sticky-header th[data-v-0b1ab970]{position:sticky;top:0;z-index:20;box-shadow:0 1px 0 var(--color-border)}.custom-th[data-v-0b1ab970]{background-color:var(--color-gray-150);color:var(--color-foreground);background-clip:padding-box;border-bottom:none;border-left:1px solid var(--color-border);padding:var(--cell-py) var(--cell-px);text-align:left;font-weight:600;min-width:200px}thead:not(.custom-sticky-header) .custom-th[data-v-0b1ab970]{border-bottom:1px solid var(--color-border)}.custom-th.text-center[data-v-0b1ab970]{text-align:center;min-width:100px}.custom-th[data-v-0b1ab970]:first-child{border-left:none}.custom-td[data-v-0b1ab970]{border-bottom:1px solid var(--color-border);border-left:1px solid var(--color-border);padding:var(--cell-py) var(--cell-px)}.custom-td.text-center[data-v-0b1ab970]{text-align:center}.custom-td[data-v-0b1ab970]:first-child{border-left:none}.custom-group-row td[data-v-0b1ab970]{background-color:var(--color-gray-100);border-top:1px solid var(--color-border);border-bottom:1px solid var(--color-border)}.custom-entity-row[data-v-0b1ab970]{background-color:var(--color-background);transition:background-color .1s ease}.custom-entity-row[data-v-0b1ab970]:hover{background-color:var(--color-gray-50)}.custom-entity-row:last-child td[data-v-0b1ab970]{border-bottom:none}.custom-active-cell[data-v-0b1ab970]{cursor:pointer}.custom-active-cell[data-v-0b1ab970]:hover{background-color:var(--color-accent)}.button-group[data-v-ba735fac] button{align-self:stretch;height:auto!important;min-height:unset!important;min-width:unset!important;width:auto!important}.button-group[data-v-ba735fac]:not(.vertical-group) button{aspect-ratio:unset}.attached-group[data-v-ba735fac] button{position:relative;--radius: .375rem}.attached-group[data-v-ba735fac] button:focus-visible,.attached-group[data-v-ba735fac] button:hover{z-index:10}.attached-group[data-v-ba735fac]:not(.vertical-group) button:not(:first-child){margin-left:-1px}.attached-group[data-v-ba735fac]: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-ba735fac]:not(.vertical-group) button:not(:first-child):not(:last-child){border-radius:0}.attached-group[data-v-ba735fac]: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-ba735fac] button:not(:first-child){margin-top:-1px}.vertical-group[data-v-ba735fac] 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-ba735fac] button:not(:first-child):not(:last-child){border-radius:0}.vertical-group[data-v-ba735fac] 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-ba735fac]: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;height:100%}.vertical-group[data-v-ba735fac] button:not(:first-child):not(.border):before{content:"";position:absolute;top:0;left:0;right:0;height:1px;width:100%;background-color:currentColor;opacity:.15;z-index:5;pointer-events:none}.toast-item[data-v-9c775c23]{will-change:transform,opacity;contain:layout style}.first-toast-enter-active[data-v-9c775c23]{animation:first-toast-in-9c775c23 .45s cubic-bezier(.23,1,.32,1) forwards}.first-toast-leave-active[data-v-9c775c23]{transition:all .25s ease-in}.first-toast-leave-to[data-v-9c775c23]{opacity:0;transform:scale(.98)}@keyframes first-toast-in-9c775c23{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-9c775c23],.stack-toast-leave-active[data-v-9c775c23]{transition:all .3s cubic-bezier(.16,1,.3,1)}.stack-toast-enter-from[data-v-9c775c23]{opacity:0;transform:scale(.95) translateY(10px)}.stack-toast-leave-to[data-v-9c775c23]{opacity:0;transform:scale(.95)}.stack-toast-move[data-v-9c775c23]{transition:transform .4s cubic-bezier(.16,1,.3,1)}.cp-item-transition[data-v-66b1ae06]{transition:background-color 80ms ease,color 80ms ease}.command-palette-content[data-v-1bae4c0f] ::-webkit-scrollbar{width:4px}.command-palette-content[data-v-1bae4c0f] ::-webkit-scrollbar-track{background:transparent}.command-palette-content[data-v-1bae4c0f] ::-webkit-scrollbar-thumb{background:var(--border);border-radius:9999px}.cp-scroll-container[data-v-1bae4c0f]{transform:translateZ(0);will-change:transform;touch-action:pan-y;backface-visibility:hidden}
977
977
 
@@ -117,7 +117,5 @@ export type DateRangeMode = 'week' | 'month' | '3-months' | '6-months' | 'year'
117
117
  export interface DateRangeResult {
118
118
  startDate: string;
119
119
  endDate: string;
120
- startDayjs: Dayjs;
121
- endDayjs: Dayjs;
122
120
  }
123
121
  export declare const getDefaultDateRange: (mode?: DateRangeMode, maxDate?: Dayjs | string | Date, anchorDate?: Dayjs) => DateRangeResult;
@@ -1,6 +1,6 @@
1
1
  import { configState as f } from "../core/config.js";
2
2
  import c from "dayjs";
3
- const p = (t, r) => {
3
+ const y = (t, r) => {
4
4
  let e;
5
5
  return (...n) => {
6
6
  clearTimeout(e), e = setTimeout(() => {
@@ -44,14 +44,14 @@ function A(t, r) {
44
44
  e ? (n = s, o = this) : (t.apply(this, s), e = setTimeout(a, r));
45
45
  };
46
46
  }
47
- const M = (t) => typeof t != "string" ? "" : t.normalize("NFD").replace(/[\u0300-\u036f]/g, "").toLowerCase().trim().replace(/[^a-z0-9\s-]/g, "").replace(/[\s-]+/g, "-").replace(/^-+|-+$/g, ""), j = (t, r) => {
47
+ const M = (t) => typeof t != "string" ? "" : t.normalize("NFD").replace(/[\u0300-\u036f]/g, "").toLowerCase().trim().replace(/[^a-z0-9\s-]/g, "").replace(/[\s-]+/g, "-").replace(/^-+|-+$/g, ""), k = (t, r) => {
48
48
  if (!Number.isFinite(t) || !Number.isFinite(r))
49
49
  throw new TypeError("Both min and max must be finite numbers");
50
50
  if (t > r)
51
51
  throw new RangeError(`min (${t}) must not be greater than max (${r})`);
52
52
  const e = Math.ceil(t), n = Math.floor(r);
53
53
  return Math.floor(Math.random() * (n - e + 1)) + e;
54
- }, k = (t, r, e = "...") => {
54
+ }, j = (t, r, e = "...") => {
55
55
  if (typeof t != "string") return "";
56
56
  if (!Number.isFinite(r) || r < 0 || t.length <= r) return t;
57
57
  const n = r - e.length;
@@ -111,16 +111,14 @@ const M = (t) => typeof t != "string" ? "" : t.normalize("NFD").replace(/[\u0300
111
111
  }
112
112
  return {
113
113
  startDate: o.format("YYYY-MM-DD"),
114
- endDate: n.format("YYYY-MM-DD"),
115
- startDayjs: o,
116
- endDayjs: n
114
+ endDate: n.format("YYYY-MM-DD")
117
115
  };
118
116
  };
119
117
  export {
120
118
  O as camelCase,
121
119
  w as capitalize,
122
120
  N as copyToClipboard,
123
- p as debounce,
121
+ y as debounce,
124
122
  S as delay,
125
123
  g as downloadFile,
126
124
  l as flattenArray,
@@ -129,9 +127,9 @@ export {
129
127
  b as getUniqueId,
130
128
  h as isAppleDevice,
131
129
  m as isEmpty,
132
- j as randomNumber,
130
+ k as randomNumber,
133
131
  u as removeExtraProperties,
134
132
  M as slugify,
135
133
  A as throttle,
136
- k as truncate
134
+ j as truncate
137
135
  };