vlite3 1.4.18 → 1.4.19

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.
@@ -25,6 +25,8 @@ export interface BarChartProps {
25
25
  gridOpacity?: number;
26
26
  /** Opacity of axis border lines (0–1) */
27
27
  axisOpacity?: number;
28
+ /** Fixed width for Y-axis labels (horizontal mode) */
29
+ yLabelWidth?: number;
28
30
  }
29
31
  declare const _default: import('vue').DefineComponent<BarChartProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<BarChartProps> & Readonly<{}>, {
30
32
  animate: boolean;
@@ -1,12 +1,12 @@
1
- import { defineComponent as se, ref as A, computed as f, onMounted as ie, watch as ce, onUnmounted as ve, openBlock as n, createElementBlock as u, Fragment as d, renderList as h, createElementVNode as w, normalizeStyle as U, createTextVNode as de, toDisplayString as p, createCommentVNode as m, unref as k, withDirectives as he, vShow as fe, createBlock as me, Teleport as ye } from "vue";
2
- import { CHART_COLORS as xe, getColor as J, formatNumber as R, niceYTicks as ge, animateProgress as $e } from "./utils.js";
3
- const be = {
1
+ import { defineComponent as ie, ref as S, computed as f, onMounted as ce, watch as ve, onUnmounted as de, openBlock as n, createElementBlock as u, Fragment as d, renderList as h, createElementVNode as w, normalizeStyle as U, createTextVNode as he, toDisplayString as k, createCommentVNode as m, unref as M, withDirectives as fe, vShow as me, createBlock as ye, Teleport as xe } from "vue";
2
+ import { CHART_COLORS as ge, getColor as J, formatNumber as X, niceYTicks as $e, animateProgress as be } from "./utils.js";
3
+ const pe = {
4
4
  key: 0,
5
5
  class: "flex flex-wrap gap-x-4 gap-y-1 mb-3 pl-14"
6
- }, pe = ["width", "height"], ke = ["id"], we = ["stop-color"], Le = ["stop-color"], Me = ["id"], Ve = ["stop-color"], Ce = ["stop-color"], Be = ["transform"], Ye = ["y1", "x2", "y2", "stroke-opacity"], Re = ["y"], Xe = ["d", "fill"], Oe = ["x", "y"], ze = ["x", "y", "text-anchor", "transform"], Se = ["y1", "x2", "y2", "stroke-opacity"], Ae = ["y2", "stroke-opacity"], Ge = ["transform"], Te = ["x1", "x2", "y2", "stroke-opacity"], We = ["x"], Pe = ["y"], He = ["d", "fill"], Ne = ["x", "y"], Qe = ["y2", "stroke-opacity"], Ze = ["y1", "x2", "y2", "stroke-opacity"], De = { class: "font-medium text-xs mb-1.5" }, Ee = {
6
+ }, ke = ["width", "height"], Me = ["id"], Le = ["stop-color"], we = ["stop-color"], Ve = ["id"], Ce = ["stop-color"], Be = ["stop-color"], Re = ["transform"], Xe = ["y1", "x2", "y2", "stroke-opacity"], Ye = ["y"], ze = ["d", "fill"], Oe = ["x", "y"], Se = ["x", "y", "text-anchor", "transform"], Ae = ["y1", "x2", "y2", "stroke-opacity"], We = ["y2", "stroke-opacity"], Ge = ["transform"], Te = ["x1", "x2", "y2", "stroke-opacity"], Pe = ["x"], He = ["x", "y"], Ne = ["d", "fill"], Qe = ["x", "y"], Ze = ["y2", "stroke-opacity"], De = ["y1", "x2", "y2", "stroke-opacity"], Ee = { class: "font-medium text-xs mb-1.5" }, Fe = {
7
7
  key: 0,
8
8
  class: "text-muted-foreground"
9
- }, Fe = { class: "font-semibold" }, _e = /* @__PURE__ */ se({
9
+ }, Ie = { class: "font-semibold" }, je = /* @__PURE__ */ ie({
10
10
  __name: "BarChart",
11
11
  props: {
12
12
  data: {},
@@ -19,7 +19,7 @@ const be = {
19
19
  showLegend: { type: Boolean, default: !0 },
20
20
  showTooltip: { type: Boolean, default: !0 },
21
21
  showValues: { type: Boolean, default: !1 },
22
- colors: { default: () => xe },
22
+ colors: { default: () => ge },
23
23
  animate: { type: Boolean, default: !0 },
24
24
  formatValue: {},
25
25
  showXAxis: { type: Boolean, default: !0 },
@@ -27,10 +27,11 @@ const be = {
27
27
  showXLabels: { type: Boolean, default: !0 },
28
28
  showYLabels: { type: Boolean, default: !0 },
29
29
  gridOpacity: { default: 0.07 },
30
- axisOpacity: { default: 0.1 }
30
+ axisOpacity: { default: 0.1 },
31
+ yLabelWidth: {}
31
32
  },
32
33
  setup(i) {
33
- const s = i, G = A(), O = A(600), g = f(() => s.datasets?.length ? s.datasets.map((l, e) => ({
34
+ const s = i, A = S(), C = S(600), b = f(() => s.datasets?.length ? s.datasets.map((l, e) => ({
34
35
  label: l.label,
35
36
  color: l.color ?? J(s.colors, e),
36
37
  values: l.data
@@ -41,123 +42,137 @@ const be = {
41
42
  // will use per-bar color from data
42
43
  values: (s.data ?? []).map((l) => l.value)
43
44
  }
44
- ]), $ = f(() => g.value.length > 1 || !!s.datasets?.length), v = f(() => s.labels?.length ? s.labels : s.datasets?.length ? g.value[0]?.values.map((t, l) => String(l + 1)) ?? [] : (s.data ?? []).map((t) => t.label)), z = f(() => {
45
+ ]), p = f(() => b.value.length > 1 || !!s.datasets?.length), v = f(() => s.labels?.length ? s.labels : s.datasets?.length ? b.value[0]?.values.map((t, l) => String(l + 1)) ?? [] : (s.data ?? []).map((t) => t.label)), z = f(() => {
45
46
  if (s.orientation !== "vertical" || !s.showXLabels || v.value.length === 0) return !1;
46
- const t = Math.max(2, Math.floor(O.value / 65));
47
+ const t = Math.max(2, Math.floor(C.value / 65));
47
48
  return v.value.length > t;
48
- }), b = f(() => {
49
- const t = (o) => String(o).length;
49
+ }), K = (t, l) => {
50
+ if (!t) return "";
51
+ const e = Math.max(1, Math.floor(l / 6));
52
+ return t.length > e ? t.slice(0, Math.max(1, e - 2)) + "..." : t;
53
+ }, g = f(() => {
54
+ const t = (a) => String(a).length;
50
55
  if (s.orientation === "horizontal") {
51
- const o = s.showYLabels ? Math.max(2, ...v.value.map((y) => t(y))) * 6.5 : 0, r = s.showYLabels ? Math.max(24, o + 12) : 8;
52
- let M = 16;
56
+ let a = 8;
57
+ if (s.showYLabels)
58
+ if (s.yLabelWidth !== void 0)
59
+ a = s.yLabelWidth;
60
+ else {
61
+ const L = Math.max(2, ...v.value.map((x) => t(x))) * 6, y = Math.max(40, C.value * 0.4);
62
+ a = Math.min(y, Math.max(24, L + 16));
63
+ }
64
+ let r = 16;
53
65
  if (s.showValues) {
54
- const y = g.value.flatMap((C) => C.values), V = Math.max(2, ...y.map((C) => t(s.formatValue ? s.formatValue(C) : R(C)))) * 6.5;
55
- M = Math.max(16, V + 8);
66
+ const L = b.value.flatMap((x) => x.values), y = Math.max(2, ...L.map((x) => t(s.formatValue ? s.formatValue(x) : X(x)))) * 6.5;
67
+ r = Math.max(16, y + 8);
56
68
  }
57
69
  return {
58
70
  // top holds the value-tick labels that float above; collapse when hidden
59
71
  top: s.showXLabels ? 16 : 4,
60
- right: M,
72
+ right: r,
61
73
  bottom: 0,
62
- left: r
74
+ left: a
63
75
  };
64
76
  }
65
- const l = s.showYLabels ? Math.max(2, ...B.value.map((o) => t(s.formatValue ? s.formatValue(o) : R(o)))) * 6.5 : 0, e = s.showYLabels ? Math.max(24, l + 12) : 8;
66
- let a = s.showXLabels ? 24 : 6;
67
- return s.showXLabels && z.value && (a = Math.max(2, ...v.value.map((r) => String(r).length)) * 6.5 * 0.7 + 16), {
77
+ const l = s.showYLabels ? Math.max(2, ...B.value.map((a) => t(s.formatValue ? s.formatValue(a) : X(a)))) * 6.5 : 0, e = s.showYLabels ? Math.max(24, l + 12) : 8;
78
+ let o = s.showXLabels ? 24 : 6;
79
+ return s.showXLabels && z.value && (o = Math.max(2, ...v.value.map((r) => String(r).length)) * 6.5 * 0.7 + 16), {
68
80
  top: 24,
69
81
  right: 0,
70
- bottom: a,
82
+ bottom: o,
71
83
  left: e
72
84
  };
73
- }), x = f(() => Math.max(0, O.value - b.value.left - b.value.right)), c = f(() => Math.max(0, s.height - b.value.top - b.value.bottom)), Q = f(() => {
85
+ }), $ = f(() => Math.max(0, C.value - g.value.left - g.value.right)), c = f(() => Math.max(0, s.height - g.value.top - g.value.bottom)), N = f(() => {
74
86
  if (s.orientation !== "vertical") return 1;
75
- const t = z.value ? 25 : 65, l = Math.max(2, Math.floor(x.value / t));
87
+ const t = z.value ? 25 : 65, l = Math.max(2, Math.floor($.value / t));
76
88
  return Math.ceil(v.value.length / l);
77
- }), K = (t) => {
89
+ }), ee = (t) => {
78
90
  if (s.orientation !== "vertical") return !0;
79
91
  const l = v.value.length;
80
- return Q.value <= 1 || t === 0 || t === l - 1 ? !0 : l - 1 - t < Q.value * 0.7 ? !1 : t % Q.value === 0;
81
- }, T = f(
92
+ return N.value <= 1 || t === 0 || t === l - 1 ? !0 : l - 1 - t < N.value * 0.7 ? !1 : t % N.value === 0;
93
+ }, W = f(
82
94
  () => (s.data ?? []).map((t, l) => t.color ?? J(s.colors, l))
83
- ), ee = f(() => g.value.flatMap((t) => t.values)), _ = f(() => Math.max(...ee.value) || 1), B = f(() => ge(0, _.value, 5)), L = f(() => B.value[B.value.length - 1] || _.value), W = A(s.animate ? 0 : 1);
84
- let Z = null;
95
+ ), te = f(() => b.value.flatMap((t) => t.values)), _ = f(() => Math.max(...te.value) || 1), B = f(() => {
96
+ const t = s.orientation === "vertical" ? s.height : C.value, l = Math.max(2, Math.floor(t / 80));
97
+ return $e(0, _.value, Math.min(5, l));
98
+ }), V = f(() => B.value[B.value.length - 1] || _.value), G = S(s.animate ? 0 : 1);
99
+ let Q = null;
85
100
  function j() {
86
- Z?.(), W.value = 0, Z = $e(800, (t) => W.value = t);
101
+ Q?.(), G.value = 0, Q = be(800, (t) => G.value = t);
87
102
  }
88
- ie(() => {
89
- te(), s.animate && j();
90
- }), ce(() => [s.data, s.datasets], () => {
103
+ ce(() => {
104
+ le(), s.animate && j();
105
+ }), ve(() => [s.data, s.datasets], () => {
91
106
  s.animate && j();
92
- }, { deep: !0 }), ve(() => {
93
- Z?.(), D?.disconnect();
107
+ }, { deep: !0 }), de(() => {
108
+ Q?.(), Z?.disconnect();
94
109
  });
95
- let D = null;
96
- function te() {
97
- G.value && (D = new ResizeObserver((t) => {
98
- O.value = t[0].contentRect.width || 600;
99
- }), D.observe(G.value), O.value = G.value.clientWidth || 600);
110
+ let Z = null;
111
+ function le() {
112
+ A.value && (Z = new ResizeObserver((t) => {
113
+ C.value = t[0].contentRect.width || 600;
114
+ }), Z.observe(A.value), C.value = A.value.clientWidth || 600);
100
115
  }
101
- const le = f(() => {
116
+ const ae = f(() => {
102
117
  const t = v.value.length;
103
118
  if (t === 0) return [];
104
- const l = x.value / t, e = g.value.length, a = l * 0.2, o = l - a * 2, r = $.value ? o / e : o;
105
- return v.value.map((M, y) => {
106
- const V = y * l + a, C = g.value.map((P, H) => {
107
- const N = P.values[y] ?? 0, S = N / L.value * c.value * W.value, E = V + H * r, F = c.value - S, I = $.value ? P.color : T.value[y];
108
- return { val: N, bh: S, x: E, y: F, w: r - ($.value ? 2 : 0), color: I };
119
+ const l = $.value / t, e = b.value.length, o = l * 0.2, a = l - o * 2, r = p.value ? a / e : a;
120
+ return v.value.map((L, y) => {
121
+ const x = y * l + o, D = b.value.map((T, P) => {
122
+ const H = T.values[y] ?? 0, O = H / V.value * c.value * G.value, E = x + P * r, F = c.value - O, I = p.value ? T.color : W.value[y];
123
+ return { val: H, bh: O, x: E, y: F, w: r - (p.value ? 2 : 0), color: I };
109
124
  });
110
- return { label: M, bars: C };
125
+ return { label: L, bars: D };
111
126
  });
112
- }), ae = f(() => {
127
+ }), oe = f(() => {
113
128
  const t = v.value.length;
114
129
  if (t === 0) return [];
115
- const l = c.value / t, e = g.value.length, a = l * 0.2, o = l - a * 2, r = $.value ? o / e : o, M = L.value;
116
- return v.value.map((y, V) => {
117
- const C = V * l + a, P = g.value.map((H, N) => {
118
- const S = H.values[V] ?? 0, E = S / M * x.value * W.value, F = C + N * r, I = $.value ? H.color : T.value[V];
119
- return { val: S, bw: E, x: 0, y: F, h: r - ($.value ? 2 : 0), color: I };
130
+ const l = c.value / t, e = b.value.length, o = l * 0.2, a = l - o * 2, r = p.value ? a / e : a, L = V.value;
131
+ return v.value.map((y, x) => {
132
+ const D = x * l + o, T = b.value.map((P, H) => {
133
+ const O = P.values[x] ?? 0, E = O / L * $.value * G.value, F = D + H * r, I = p.value ? P.color : W.value[x];
134
+ return { val: O, bw: E, x: 0, y: F, h: r - (p.value ? 2 : 0), color: I };
120
135
  });
121
- return { label: y, bars: P };
136
+ return { label: y, bars: T };
122
137
  });
123
- }), Y = A(null), q = A(null);
124
- function oe(t) {
138
+ }), R = S(null), q = S(null);
139
+ function ne(t) {
125
140
  if (!s.showTooltip) return;
126
- const l = t.currentTarget.getBoundingClientRect(), e = t.clientX - l.left - b.value.left, a = t.clientY - l.top - b.value.top, o = v.value.length;
127
- if (o === 0) return;
141
+ const l = t.currentTarget.getBoundingClientRect(), e = t.clientX - l.left - g.value.left, o = t.clientY - l.top - g.value.top, a = v.value.length;
142
+ if (a === 0) return;
128
143
  let r;
129
- s.orientation === "vertical" ? r = Math.floor(e / x.value * o) : r = Math.floor(a / c.value * o), r = Math.max(0, Math.min(o - 1, r)), q.value = r;
130
- const M = g.value.map((y, V) => ({
131
- color: $.value ? y.color : T.value[r],
144
+ s.orientation === "vertical" ? r = Math.floor(e / $.value * a) : r = Math.floor(o / c.value * a), r = Math.max(0, Math.min(a - 1, r)), q.value = r;
145
+ const L = b.value.map((y, x) => ({
146
+ color: p.value ? y.color : W.value[r],
132
147
  label: y.label,
133
- value: s.formatValue ? s.formatValue(y.values[r]) : R(y.values[r])
148
+ value: s.formatValue ? s.formatValue(y.values[r]) : X(y.values[r])
134
149
  }));
135
- Y.value = {
150
+ R.value = {
136
151
  x: t.clientX,
137
152
  y: t.clientY,
138
153
  label: v.value[r],
139
- items: M
154
+ items: L
140
155
  };
141
156
  }
142
- function ne() {
143
- Y.value = null, q.value = null;
157
+ function ue() {
158
+ R.value = null, q.value = null;
144
159
  }
145
- function ue(t, l, e, a, o) {
146
- const r = Math.min(o, e / 2, a / 2);
147
- return r <= 0 || a <= 0 ? `M${t},${l + a} L${t},${l} L${t + e},${l} L${t + e},${l + a} Z` : `M${t},${l + a} L${t},${l + r} Q${t},${l} ${t + r},${l} L${t + e - r},${l} Q${t + e},${l} ${t + e},${l + r} L${t + e},${l + a} Z`;
160
+ function re(t, l, e, o, a) {
161
+ const r = Math.min(a, e / 2, o / 2);
162
+ return r <= 0 || o <= 0 ? `M${t},${l + o} L${t},${l} L${t + e},${l} L${t + e},${l + o} Z` : `M${t},${l + o} L${t},${l + r} Q${t},${l} ${t + r},${l} L${t + e - r},${l} Q${t + e},${l} ${t + e},${l + r} L${t + e},${l + o} Z`;
148
163
  }
149
- function re(t, l, e, a, o) {
150
- const r = Math.min(o, e / 2, a / 2);
151
- return r <= 0 || e <= 0 ? `M${t},${l} L${t + e},${l} L${t + e},${l + a} L${t},${l + a} Z` : `M${t},${l} L${t + e - r},${l} Q${t + e},${l} ${t + e},${l + r} L${t + e},${l + a - r} Q${t + e},${l + a} ${t + e - r},${l + a} L${t},${l + a} Z`;
164
+ function se(t, l, e, o, a) {
165
+ const r = Math.min(a, e / 2, o / 2);
166
+ return r <= 0 || e <= 0 ? `M${t},${l} L${t + e},${l} L${t + e},${l + o} L${t},${l + o} Z` : `M${t},${l} L${t + e - r},${l} Q${t + e},${l} ${t + e},${l + r} L${t + e},${l + o - r} Q${t + e},${l + o} ${t + e - r},${l + o} L${t},${l + o} Z`;
152
167
  }
153
- const X = Math.random().toString(36).slice(2, 7);
168
+ const Y = Math.random().toString(36).slice(2, 7);
154
169
  return (t, l) => (n(), u("div", {
155
170
  ref_key: "containerRef",
156
- ref: G,
171
+ ref: A,
157
172
  class: "vlite-bar-chart w-full select-none"
158
173
  }, [
159
- i.showLegend && $.value ? (n(), u("div", be, [
160
- (n(!0), u(d, null, h(g.value, (e) => (n(), u("div", {
174
+ i.showLegend && p.value ? (n(), u("div", pe, [
175
+ (n(!0), u(d, null, h(b.value, (e) => (n(), u("div", {
161
176
  key: e.label,
162
177
  class: "flex items-center gap-1.5 text-xs text-muted-foreground"
163
178
  }, [
@@ -165,22 +180,22 @@ const be = {
165
180
  class: "w-2.5 h-2.5 rounded-sm inline-block",
166
181
  style: U({ backgroundColor: e.color })
167
182
  }, null, 4),
168
- de(" " + p(e.label), 1)
183
+ he(" " + k(e.label), 1)
169
184
  ]))), 128))
170
185
  ])) : m("", !0),
171
186
  (n(), u("svg", {
172
- width: O.value,
187
+ width: C.value,
173
188
  height: i.height,
174
189
  role: "img",
175
190
  "aria-label": "Bar chart",
176
191
  class: "overflow-visible",
177
- onMousemove: oe,
178
- onMouseleave: ne
192
+ onMousemove: ne,
193
+ onMouseleave: ue
179
194
  }, [
180
195
  w("defs", null, [
181
- (n(!0), u(d, null, h(g.value, (e, a) => (n(), u("linearGradient", {
182
- key: a,
183
- id: `bgrad-${k(X)}-${a}`,
196
+ (n(!0), u(d, null, h(b.value, (e, o) => (n(), u("linearGradient", {
197
+ key: o,
198
+ id: `bgrad-${M(Y)}-${o}`,
184
199
  x1: "0",
185
200
  y1: "0",
186
201
  x2: "0",
@@ -190,16 +205,16 @@ const be = {
190
205
  offset: "0%",
191
206
  "stop-color": e.color,
192
207
  "stop-opacity": "1"
193
- }, null, 8, we),
208
+ }, null, 8, Le),
194
209
  w("stop", {
195
210
  offset: "100%",
196
211
  "stop-color": e.color,
197
212
  "stop-opacity": "0.7"
198
- }, null, 8, Le)
199
- ], 8, ke))), 128)),
200
- (n(!0), u(d, null, h(T.value, (e, a) => (n(), u("linearGradient", {
201
- key: `sc-${a}`,
202
- id: `bgrad-single-${k(X)}-${a}`,
213
+ }, null, 8, we)
214
+ ], 8, Me))), 128)),
215
+ (n(!0), u(d, null, h(W.value, (e, o) => (n(), u("linearGradient", {
216
+ key: `sc-${o}`,
217
+ id: `bgrad-single-${M(Y)}-${o}`,
203
218
  x1: "0",
204
219
  y1: "0",
205
220
  x2: "0",
@@ -209,74 +224,74 @@ const be = {
209
224
  offset: "0%",
210
225
  "stop-color": e,
211
226
  "stop-opacity": "1"
212
- }, null, 8, Ve),
227
+ }, null, 8, Ce),
213
228
  w("stop", {
214
229
  offset: "100%",
215
230
  "stop-color": e,
216
231
  "stop-opacity": "0.7"
217
- }, null, 8, Ce)
218
- ], 8, Me))), 128))
232
+ }, null, 8, Be)
233
+ ], 8, Ve))), 128))
219
234
  ]),
220
235
  i.orientation === "vertical" ? (n(), u("g", {
221
236
  key: 0,
222
- transform: `translate(${b.value.left},${b.value.top})`
237
+ transform: `translate(${g.value.left},${g.value.top})`
223
238
  }, [
224
239
  i.showGrid ? (n(!0), u(d, { key: 0 }, h(B.value, (e) => (n(), u("line", {
225
240
  key: e,
226
241
  x1: 0,
227
- y1: c.value - e / L.value * c.value,
228
- x2: x.value,
229
- y2: c.value - e / L.value * c.value,
242
+ y1: c.value - e / V.value * c.value,
243
+ x2: $.value,
244
+ y2: c.value - e / V.value * c.value,
230
245
  stroke: "currentColor",
231
246
  "stroke-opacity": i.gridOpacity,
232
247
  "stroke-width": "1"
233
- }, null, 8, Ye))), 128)) : m("", !0),
248
+ }, null, 8, Xe))), 128)) : m("", !0),
234
249
  i.showYLabels ? (n(!0), u(d, { key: 1 }, h(B.value, (e) => (n(), u("text", {
235
250
  key: `yt-${e}`,
236
251
  x: -10,
237
- y: c.value - e / L.value * c.value,
252
+ y: c.value - e / V.value * c.value,
238
253
  "text-anchor": "end",
239
254
  "dominant-baseline": "middle",
240
255
  "font-size": "11",
241
256
  class: "fill-muted-foreground"
242
- }, p(i.formatValue ? i.formatValue(e) : k(R)(e)), 9, Re))), 128)) : m("", !0),
243
- (n(!0), u(d, null, h(le.value, (e, a) => (n(), u("g", { key: a }, [
244
- (n(!0), u(d, null, h(e.bars, (o, r) => (n(), u("path", {
257
+ }, k(i.formatValue ? i.formatValue(e) : M(X)(e)), 9, Ye))), 128)) : m("", !0),
258
+ (n(!0), u(d, null, h(ae.value, (e, o) => (n(), u("g", { key: o }, [
259
+ (n(!0), u(d, null, h(e.bars, (a, r) => (n(), u("path", {
245
260
  key: r,
246
- d: ue(o.x, o.y, o.w, o.bh, i.barRadius),
247
- fill: $.value ? `url(#bgrad-${k(X)}-${r})` : `url(#bgrad-single-${k(X)}-${a})`,
261
+ d: re(a.x, a.y, a.w, a.bh, i.barRadius),
262
+ fill: p.value ? `url(#bgrad-${M(Y)}-${r})` : `url(#bgrad-single-${M(Y)}-${o})`,
248
263
  class: "transition-opacity duration-150"
249
- }, null, 8, Xe))), 128)),
250
- i.showValues ? (n(!0), u(d, { key: 0 }, h(e.bars, (o, r) => (n(), u("text", {
264
+ }, null, 8, ze))), 128)),
265
+ i.showValues ? (n(!0), u(d, { key: 0 }, h(e.bars, (a, r) => (n(), u("text", {
251
266
  key: `vl-${r}`,
252
- x: o.x + o.w / 2,
253
- y: o.y - 6,
267
+ x: a.x + a.w / 2,
268
+ y: a.y - 6,
254
269
  "text-anchor": "middle",
255
270
  "font-size": "10",
256
271
  "font-weight": "600",
257
272
  class: "fill-foreground"
258
- }, p(i.formatValue ? i.formatValue(o.val) : k(R)(o.val)), 9, Oe))), 128)) : m("", !0)
273
+ }, k(i.formatValue ? i.formatValue(a.val) : M(X)(a.val)), 9, Oe))), 128)) : m("", !0)
259
274
  ]))), 128)),
260
- i.showXLabels ? (n(!0), u(d, { key: 2 }, h(v.value, (e, a) => he((n(), u("text", {
261
- key: `xl-${a}`,
262
- x: (a + 0.5) * (x.value / v.value.length),
275
+ i.showXLabels ? (n(!0), u(d, { key: 2 }, h(v.value, (e, o) => fe((n(), u("text", {
276
+ key: `xl-${o}`,
277
+ x: (o + 0.5) * ($.value / v.value.length),
263
278
  y: c.value + (z.value ? 12 : 16),
264
279
  "text-anchor": z.value ? "end" : "middle",
265
- transform: z.value ? `rotate(-45, ${(a + 0.5) * (x.value / v.value.length)}, ${c.value + 12})` : void 0,
280
+ transform: z.value ? `rotate(-45, ${(o + 0.5) * ($.value / v.value.length)}, ${c.value + 12})` : void 0,
266
281
  "font-size": "11",
267
282
  class: "fill-muted-foreground"
268
- }, p(e), 9, ze)), [
269
- [fe, K(a)]
283
+ }, k(e), 9, Se)), [
284
+ [me, ee(o)]
270
285
  ])), 128)) : m("", !0),
271
286
  i.showXAxis ? (n(), u("line", {
272
287
  key: 3,
273
288
  x1: 0,
274
289
  y1: c.value,
275
- x2: x.value,
290
+ x2: $.value,
276
291
  y2: c.value,
277
292
  stroke: "currentColor",
278
293
  "stroke-opacity": i.axisOpacity
279
- }, null, 8, Se)) : m("", !0),
294
+ }, null, 8, Ae)) : m("", !0),
280
295
  i.showYAxis ? (n(), u("line", {
281
296
  key: 4,
282
297
  x1: 0,
@@ -285,16 +300,16 @@ const be = {
285
300
  y2: c.value,
286
301
  stroke: "currentColor",
287
302
  "stroke-opacity": i.axisOpacity
288
- }, null, 8, Ae)) : m("", !0)
289
- ], 8, Be)) : (n(), u("g", {
303
+ }, null, 8, We)) : m("", !0)
304
+ ], 8, Re)) : (n(), u("g", {
290
305
  key: 1,
291
- transform: `translate(${b.value.left},${b.value.top})`
306
+ transform: `translate(${g.value.left},${g.value.top})`
292
307
  }, [
293
308
  i.showGrid ? (n(!0), u(d, { key: 0 }, h(B.value, (e) => (n(), u("line", {
294
309
  key: e,
295
- x1: e / L.value * x.value,
310
+ x1: e / V.value * $.value,
296
311
  y1: 0,
297
- x2: e / L.value * x.value,
312
+ x2: e / V.value * $.value,
298
313
  y2: c.value,
299
314
  stroke: "currentColor",
300
315
  "stroke-opacity": i.gridOpacity,
@@ -302,37 +317,37 @@ const be = {
302
317
  }, null, 8, Te))), 128)) : m("", !0),
303
318
  i.showXLabels ? (n(!0), u(d, { key: 1 }, h(B.value, (e) => (n(), u("text", {
304
319
  key: `xt-${e}`,
305
- x: e / L.value * x.value,
320
+ x: e / V.value * $.value,
306
321
  y: -8,
307
322
  "text-anchor": "middle",
308
323
  "font-size": "11",
309
324
  class: "fill-muted-foreground"
310
- }, p(i.formatValue ? i.formatValue(e) : k(R)(e)), 9, We))), 128)) : m("", !0),
311
- i.showYLabels ? (n(!0), u(d, { key: 2 }, h(v.value, (e, a) => (n(), u("text", {
312
- key: `yl-${a}`,
313
- x: -12,
314
- y: (a + 0.5) * (c.value / v.value.length),
315
- "text-anchor": "end",
325
+ }, k(i.formatValue ? i.formatValue(e) : M(X)(e)), 9, Pe))), 128)) : m("", !0),
326
+ i.showYLabels ? (n(!0), u(d, { key: 2 }, h(v.value, (e, o) => (n(), u("text", {
327
+ key: `yl-${o}`,
328
+ x: -g.value.left + 4,
329
+ y: (o + 0.5) * (c.value / v.value.length),
330
+ "text-anchor": "start",
316
331
  "dominant-baseline": "middle",
317
332
  "font-size": "11",
318
333
  class: "fill-muted-foreground"
319
- }, p(e), 9, Pe))), 128)) : m("", !0),
320
- (n(!0), u(d, null, h(ae.value, (e, a) => (n(), u("g", { key: a }, [
321
- (n(!0), u(d, null, h(e.bars, (o, r) => (n(), u("path", {
334
+ }, k(K(String(e), g.value.left - 12)), 9, He))), 128)) : m("", !0),
335
+ (n(!0), u(d, null, h(oe.value, (e, o) => (n(), u("g", { key: o }, [
336
+ (n(!0), u(d, null, h(e.bars, (a, r) => (n(), u("path", {
322
337
  key: r,
323
- d: re(o.x, o.y, o.bw, o.h, i.barRadius),
324
- fill: $.value ? `url(#bgrad-${k(X)}-${r})` : `url(#bgrad-single-${k(X)}-${a})`,
338
+ d: se(a.x, a.y, a.bw, a.h, i.barRadius),
339
+ fill: p.value ? `url(#bgrad-${M(Y)}-${r})` : `url(#bgrad-single-${M(Y)}-${o})`,
325
340
  class: "transition-opacity duration-150"
326
- }, null, 8, He))), 128)),
327
- i.showValues ? (n(!0), u(d, { key: 0 }, h(e.bars, (o, r) => (n(), u("text", {
341
+ }, null, 8, Ne))), 128)),
342
+ i.showValues ? (n(!0), u(d, { key: 0 }, h(e.bars, (a, r) => (n(), u("text", {
328
343
  key: `hvl-${r}`,
329
- x: o.bw + 6,
330
- y: o.y + o.h / 2,
344
+ x: a.bw + 6,
345
+ y: a.y + a.h / 2,
331
346
  "dominant-baseline": "middle",
332
347
  "font-size": "10",
333
348
  "font-weight": "600",
334
349
  class: "fill-foreground"
335
- }, p(i.formatValue ? i.formatValue(o.val) : k(R)(o.val)), 9, Ne))), 128)) : m("", !0)
350
+ }, k(i.formatValue ? i.formatValue(a.val) : M(X)(a.val)), 9, Qe))), 128)) : m("", !0)
336
351
  ]))), 128)),
337
352
  i.showYAxis ? (n(), u("line", {
338
353
  key: 3,
@@ -342,26 +357,26 @@ const be = {
342
357
  y2: c.value,
343
358
  stroke: "currentColor",
344
359
  "stroke-opacity": i.axisOpacity
345
- }, null, 8, Qe)) : m("", !0),
360
+ }, null, 8, Ze)) : m("", !0),
346
361
  i.showXAxis ? (n(), u("line", {
347
362
  key: 4,
348
363
  x1: 0,
349
364
  y1: c.value,
350
- x2: x.value,
365
+ x2: $.value,
351
366
  y2: c.value,
352
367
  stroke: "currentColor",
353
368
  "stroke-opacity": i.axisOpacity
354
- }, null, 8, Ze)) : m("", !0)
369
+ }, null, 8, De)) : m("", !0)
355
370
  ], 8, Ge))
356
- ], 40, pe)),
357
- (n(), me(ye, { to: "body" }, [
358
- Y.value ? (n(), u("div", {
371
+ ], 40, ke)),
372
+ (n(), ye(xe, { to: "body" }, [
373
+ R.value ? (n(), u("div", {
359
374
  key: 0,
360
375
  class: "vlite-chart-tooltip",
361
- style: U({ left: `${Y.value.x + 12}px`, top: `${Y.value.y - 10}px` })
376
+ style: U({ left: `${R.value.x + 12}px`, top: `${R.value.y - 10}px` })
362
377
  }, [
363
- w("div", De, p(Y.value.label), 1),
364
- (n(!0), u(d, null, h(Y.value.items, (e) => (n(), u("div", {
378
+ w("div", Ee, k(R.value.label), 1),
379
+ (n(!0), u(d, null, h(R.value.items, (e) => (n(), u("div", {
365
380
  key: e.label,
366
381
  class: "flex items-center gap-1.5 text-xs"
367
382
  }, [
@@ -369,8 +384,8 @@ const be = {
369
384
  class: "w-2 h-2 rounded-sm shrink-0",
370
385
  style: U({ backgroundColor: e.color })
371
386
  }, null, 4),
372
- e.label ? (n(), u("span", Ee, p(e.label) + ":", 1)) : m("", !0),
373
- w("span", Fe, p(e.value), 1)
387
+ e.label ? (n(), u("span", Fe, k(e.label) + ":", 1)) : m("", !0),
388
+ w("span", Ie, k(e.value), 1)
374
389
  ]))), 128))
375
390
  ], 4)) : m("", !0)
376
391
  ]))
@@ -378,5 +393,5 @@ const be = {
378
393
  }
379
394
  });
380
395
  export {
381
- _e as default
396
+ je as default
382
397
  };
@@ -73,6 +73,8 @@ export interface BarChartProps {
73
73
  animate?: boolean;
74
74
  /** Custom value formatter */
75
75
  formatValue?: (v: number) => string;
76
+ /** Fixed width for Y-axis labels (horizontal mode) */
77
+ yLabelWidth?: number;
76
78
  }
77
79
  export type PieLabelMode = 'percent' | 'value' | 'label' | 'none' | 'outside';
78
80
  export type LegendPosition = 'right' | 'bottom';
@@ -6,7 +6,7 @@ const d = [
6
6
  "var(--color-chart-5)",
7
7
  "var(--color-chart-6)"
8
8
  ];
9
- function x(t) {
9
+ function F(t) {
10
10
  return {
11
11
  primary: "var(--color-primary)",
12
12
  success: "var(--color-success)",
@@ -20,72 +20,76 @@ function x(t) {
20
20
  cyan: "#06b6d4"
21
21
  }[t] ?? t;
22
22
  }
23
- function F(t, a) {
24
- return t[a % t.length];
23
+ function C(t, r) {
24
+ return t[r % t.length];
25
25
  }
26
- function C(t) {
26
+ function k(t) {
27
27
  return Math.abs(t) >= 1e6 ? (t / 1e6).toFixed(1).replace(/\.0$/, "") + "M" : Math.abs(t) >= 1e3 ? (t / 1e3).toFixed(1).replace(/\.0$/, "") + "k" : String(t);
28
28
  }
29
- function k(t, a, o) {
30
- return Math.max(a, Math.min(o, t));
29
+ function M(t, r, a) {
30
+ return Math.max(r, Math.min(a, t));
31
31
  }
32
32
  function w(t) {
33
33
  if (t.length < 2) return "";
34
34
  if (t.length === 2)
35
35
  return `M ${t[0][0]},${t[0][1]} L ${t[1][0]},${t[1][1]}`;
36
- const a = [`M ${t[0][0]},${t[0][1]}`];
37
- for (let o = 0; o < t.length - 1; o++) {
38
- const n = t[Math.max(0, o - 1)], c = t[o], r = t[o + 1], h = t[Math.min(t.length - 1, o + 2)], e = c[0] + (r[0] - n[0]) / 6, s = c[1] + (r[1] - n[1]) / 6, i = r[0] - (h[0] - c[0]) / 6, u = r[1] - (h[1] - c[1]) / 6;
39
- a.push(`C ${e},${s} ${i},${u} ${r[0]},${r[1]}`);
36
+ const r = [`M ${t[0][0]},${t[0][1]}`];
37
+ for (let a = 0; a < t.length - 1; a++) {
38
+ const c = t[Math.max(0, a - 1)], n = t[a], o = t[a + 1], i = t[Math.min(t.length - 1, a + 2)], e = n[0] + (o[0] - c[0]) / 6;
39
+ let s = n[1] + (o[1] - c[1]) / 6;
40
+ const u = o[0] - (i[0] - n[0]) / 6;
41
+ let h = o[1] - (i[1] - n[1]) / 6;
42
+ const $ = Math.min(n[1], o[1]), l = Math.max(n[1], o[1]);
43
+ s = M(s, $, l), h = M(h, $, l), r.push(`C ${e},${s} ${u},${h} ${o[0]},${o[1]}`);
40
44
  }
41
- return a.join(" ");
45
+ return r.join(" ");
42
46
  }
43
47
  function y(t) {
44
- return t.length === 0 ? "" : t.map(([a, o], n) => `${n === 0 ? "M" : "L"} ${a},${o}`).join(" ");
48
+ return t.length === 0 ? "" : t.map(([r, a], c) => `${c === 0 ? "M" : "L"} ${r},${a}`).join(" ");
45
49
  }
46
- function L(t, a, o, n, c, r = 0) {
47
- Math.abs(c - n) >= 360 && (c -= 0.01);
48
- const h = (v) => v * Math.PI / 180, e = h(n), s = h(c), i = c - n > 180 ? 1 : 0, u = t + o * Math.cos(e), $ = a + o * Math.sin(e), l = t + o * Math.cos(s), f = a + o * Math.sin(s);
49
- if (r <= 0)
50
- return `M ${t},${a} L ${u},${$} A ${o},${o} 0 ${i} 1 ${l},${f} Z`;
51
- const M = t + r * Math.cos(s), m = a + r * Math.sin(s), g = t + r * Math.cos(e), p = a + r * Math.sin(e);
50
+ function L(t, r, a, c, n, o = 0) {
51
+ Math.abs(n - c) >= 360 && (n -= 0.01);
52
+ const i = (b) => b * Math.PI / 180, e = i(c), s = i(n), u = n - c > 180 ? 1 : 0, h = t + a * Math.cos(e), $ = r + a * Math.sin(e), l = t + a * Math.cos(s), f = r + a * Math.sin(s);
53
+ if (o <= 0)
54
+ return `M ${t},${r} L ${h},${$} A ${a},${a} 0 ${u} 1 ${l},${f} Z`;
55
+ const m = t + o * Math.cos(s), g = r + o * Math.sin(s), p = t + o * Math.cos(e), v = r + o * Math.sin(e);
52
56
  return [
53
- `M ${u},${$}`,
54
- `A ${o},${o} 0 ${i} 1 ${l},${f}`,
55
- `L ${M},${m}`,
56
- `A ${r},${r} 0 ${i} 0 ${g},${p}`,
57
+ `M ${h},${$}`,
58
+ `A ${a},${a} 0 ${u} 1 ${l},${f}`,
59
+ `L ${m},${g}`,
60
+ `A ${o},${o} 0 ${u} 0 ${p},${v}`,
57
61
  "Z"
58
62
  ].join(" ");
59
63
  }
60
- function P(t, a, o = 5) {
61
- const c = (a - t || 1) / (o - 1), r = Math.pow(10, Math.floor(Math.log10(c))), e = ([1, 2, 2.5, 5, 10].find(($) => $ * r >= c) ?? 10) * r, s = Math.floor(t / e) * e, i = [];
62
- let u = s;
63
- for (; i.push(parseFloat(u.toFixed(10))), !(u >= a); )
64
- u += e;
65
- return i;
64
+ function P(t, r, a = 5) {
65
+ const n = (r - t || 1) / (a - 1), o = Math.pow(10, Math.floor(Math.log10(n))), e = ([1, 2, 2.5, 5, 10].find(($) => $ * o >= n) ?? 10) * o, s = Math.floor(t / e) * e, u = [];
66
+ let h = s;
67
+ for (; u.push(parseFloat(h.toFixed(10))), !(h >= r); )
68
+ h += e;
69
+ return u;
66
70
  }
67
- function b(t) {
71
+ function x(t) {
68
72
  return 1 - Math.pow(1 - t, 3);
69
73
  }
70
- function j(t, a, o) {
71
- let n = null, c;
72
- const r = (h) => {
73
- n === null && (n = h);
74
- const e = h - n, s = b(Math.min(e / t, 1));
75
- a(s), e < t && (c = requestAnimationFrame(r));
74
+ function j(t, r, a) {
75
+ let c = null, n;
76
+ const o = (i) => {
77
+ c === null && (c = i);
78
+ const e = i - c, s = x(Math.min(e / t, 1));
79
+ r(s), e < t && (n = requestAnimationFrame(o));
76
80
  };
77
- return c = requestAnimationFrame(r), () => cancelAnimationFrame(c);
81
+ return n = requestAnimationFrame(o), () => cancelAnimationFrame(n);
78
82
  }
79
83
  export {
80
84
  d as CHART_COLORS,
81
85
  j as animateProgress,
82
86
  L as arcPath,
83
- k as clamp,
84
- b as easeOutCubic,
85
- C as formatNumber,
86
- F as getColor,
87
+ M as clamp,
88
+ x as easeOutCubic,
89
+ k as formatNumber,
90
+ C as getColor,
87
91
  y as linearPath,
88
92
  P as niceYTicks,
89
- x as resolveColor,
93
+ F as resolveColor,
90
94
  w as smoothPath
91
95
  };
@@ -1,4 +1,4 @@
1
- import o from "./DropdownMenu.vue2.js";
1
+ import o from "./DropdownMenu.vue3.js";
2
2
  /* empty css */
3
3
  import r from "../../_virtual/_plugin-vue_export-helper.js";
4
4
  const m = /* @__PURE__ */ r(o, [["__scopeId", "data-v-173c7a02"]]);
@@ -1,7 +1,7 @@
1
1
  import o from "./Tabes.vue2.js";
2
2
  /* empty css */
3
3
  import t from "../../_virtual/_plugin-vue_export-helper.js";
4
- const m = /* @__PURE__ */ t(o, [["__scopeId", "data-v-b32d2e32"]]);
4
+ const m = /* @__PURE__ */ t(o, [["__scopeId", "data-v-2e086e79"]]);
5
5
  export {
6
6
  m as default
7
7
  };
@@ -1,9 +1,9 @@
1
- import { defineComponent as Y, ref as d, watch as m, onMounted as Z, computed as v, openBlock as g, createElementBlock as z, normalizeClass as l, withDirectives as h, createVNode as x, vShow as y, createElementVNode as f, normalizeStyle as ee, createCommentVNode as j, Fragment as te, renderList as re, createBlock as M, resolveDynamicComponent as ae, mergeProps as ne, withCtx as oe, toDisplayString as se, nextTick as le } from "vue";
1
+ import { defineComponent as Y, ref as d, watch as g, onMounted as Z, computed as v, openBlock as m, createElementBlock as z, normalizeClass as l, withDirectives as x, createVNode as y, vShow as h, createElementVNode as f, normalizeStyle as ee, createCommentVNode as j, Fragment as te, renderList as re, createBlock as M, resolveDynamicComponent as ae, mergeProps as ne, withCtx as oe, toDisplayString as se, nextTick as le } from "vue";
2
2
  import { useResizeObserver as T } from "@vueuse/core";
3
3
  import R from "../Icon.vue.js";
4
4
  import A from "../FadeOverlay/FadeOverlay.vue.js";
5
5
  import { $t as ie } from "../../utils/i18n.js";
6
- const ce = ["data-variant"], ge = /* @__PURE__ */ Y({
6
+ const ce = ["data-variant"], me = /* @__PURE__ */ Y({
7
7
  __name: "Tabes",
8
8
  props: {
9
9
  options: {},
@@ -63,28 +63,28 @@ const ce = ["data-variant"], ge = /* @__PURE__ */ Y({
63
63
  };
64
64
  T(b, () => {
65
65
  u(), o();
66
- }), m(
66
+ }), g(
67
67
  () => t.modelValue,
68
68
  async () => {
69
69
  await u(), V();
70
70
  }
71
- ), m(
71
+ ), g(
72
72
  () => t.options,
73
73
  async () => {
74
74
  await u(), o();
75
75
  },
76
76
  { deep: !0 }
77
- ), m(
77
+ ), g(
78
78
  () => t.size,
79
79
  async () => {
80
80
  await u(), o();
81
81
  }
82
- ), m(
82
+ ), g(
83
83
  () => t.block,
84
84
  async () => {
85
85
  await u(), o();
86
86
  }
87
- ), m(
87
+ ), g(
88
88
  () => t.wrap,
89
89
  async () => {
90
90
  await u(), o();
@@ -123,26 +123,26 @@ const ce = ["data-variant"], ge = /* @__PURE__ */ Y({
123
123
  let n = "";
124
124
  if (a)
125
125
  if (r)
126
- n = "text-primary";
126
+ n = t.wrap ? "text-primary !border-primary" : "text-primary";
127
127
  else
128
128
  switch (t.variant) {
129
129
  case "surface":
130
- n = "text-foreground";
130
+ n = t.wrap ? "text-foreground bg-[#ffff] dark:bg-[#0B0B0B] shadow-sm" : "text-foreground";
131
131
  break;
132
132
  case "primary":
133
- n = "text-primary-foreground";
133
+ n = t.wrap ? "text-primary-foreground bg-primary" : "text-primary-foreground";
134
134
  break;
135
135
  case "secondary":
136
- n = "text-secondary";
136
+ n = t.wrap ? "text-secondary bg-secondary-foreground" : "text-secondary";
137
137
  break;
138
138
  case "danger":
139
- n = "text-danger-fg";
139
+ n = t.wrap ? "text-danger-fg bg-danger" : "text-danger-fg";
140
140
  break;
141
141
  case "success":
142
- n = "text-success-fg";
142
+ n = t.wrap ? "text-success-fg bg-success" : "text-success-fg";
143
143
  break;
144
144
  case "outline":
145
- n = "text-accent-foreground";
145
+ n = t.wrap ? "text-accent-foreground bg-accent/50 ring-1 ring-border" : "text-accent-foreground";
146
146
  break;
147
147
  default:
148
148
  n = "text-foreground";
@@ -163,10 +163,10 @@ const ce = ["data-variant"], ge = /* @__PURE__ */ Y({
163
163
  outline: "bg-accent/50 ring-1 ring-border",
164
164
  line: "bg-primary"
165
165
  })[t.variant], H = (e) => e.labelI18n ? ie(e.labelI18n) : e.label, J = (e) => e.to ? "router-link" : e.href ? "a" : "button", K = (e) => e.to ? { to: e.to } : e.href ? { href: e.href, target: "_blank", rel: "noopener noreferrer" } : { type: "button" };
166
- return (e, a) => (g(), z("div", {
166
+ return (e, a) => (m(), z("div", {
167
167
  class: l([D.value, "group"])
168
168
  }, [
169
- h(x(A, {
169
+ x(y(A, {
170
170
  direction: "left",
171
171
  color: I.value,
172
172
  coverage: "100px",
@@ -175,9 +175,9 @@ const ce = ["data-variant"], ge = /* @__PURE__ */ Y({
175
175
  tintOpacity: 1,
176
176
  class: l(["z-10 pointer-events-none", t.variant === "line" ? "" : "rounded-l-lg"])
177
177
  }, null, 8, ["color", "class"]), [
178
- [y, w.value]
178
+ [h, w.value]
179
179
  ]),
180
- h(f("div", {
180
+ x(f("div", {
181
181
  class: l(["left-0 pl-1", L.value])
182
182
  }, [
183
183
  f("button", {
@@ -185,13 +185,13 @@ const ce = ["data-variant"], ge = /* @__PURE__ */ Y({
185
185
  class: "pointer-events-auto h-full px-1 flex items-center justify-center text-muted-foreground hover:text-foreground transition-colors focus:outline-none",
186
186
  "aria-label": "Scroll left"
187
187
  }, [
188
- x(R, {
188
+ y(R, {
189
189
  icon: "lucide:chevron-left",
190
190
  class: "w-5 h-5"
191
191
  })
192
192
  ])
193
193
  ], 2), [
194
- [y, w.value]
194
+ [h, w.value]
195
195
  ]),
196
196
  f("div", {
197
197
  ref_key: "scrollRef",
@@ -207,12 +207,12 @@ const ce = ["data-variant"], ge = /* @__PURE__ */ Y({
207
207
  "data-variant": t.variant,
208
208
  "data-tabes": ""
209
209
  }, [
210
- c.modelValue !== void 0 && !c.wrap ? (g(), z("div", {
210
+ c.modelValue !== void 0 && !c.wrap ? (m(), z("div", {
211
211
  key: 0,
212
212
  class: l([q.value, G()]),
213
213
  style: ee(k.value)
214
214
  }, null, 6)) : j("", !0),
215
- (g(!0), z(te, null, re(c.options, (r) => (g(), M(ae(J(r)), ne({
215
+ (m(!0), z(te, null, re(c.options, (r) => (m(), M(ae(J(r)), ne({
216
216
  key: r.value,
217
217
  ref_for: !0,
218
218
  ref: (n) => O(n?.$el || n, r.value),
@@ -225,7 +225,7 @@ const ce = ["data-variant"], ge = /* @__PURE__ */ Y({
225
225
  onClick: (n) => N(r)
226
226
  }), {
227
227
  default: oe(() => [
228
- r.icon ? (g(), M(R, {
228
+ r.icon ? (m(), M(R, {
229
229
  key: 0,
230
230
  icon: r.icon,
231
231
  class: l(c.size === "sm" ? "w-3.5 h-3.5" : "w-4 h-4")
@@ -238,7 +238,7 @@ const ce = ["data-variant"], ge = /* @__PURE__ */ Y({
238
238
  }, 1040, ["aria-selected", "disabled", "class", "onClick"]))), 128))
239
239
  ], 10, ce)
240
240
  ], 544),
241
- h(x(A, {
241
+ x(y(A, {
242
242
  direction: "right",
243
243
  color: I.value,
244
244
  coverage: "100px",
@@ -247,9 +247,9 @@ const ce = ["data-variant"], ge = /* @__PURE__ */ Y({
247
247
  tintOpacity: 1,
248
248
  class: l(["z-10 pointer-events-none", t.variant === "line" ? "" : "rounded-r-lg"])
249
249
  }, null, 8, ["color", "class"]), [
250
- [y, C.value]
250
+ [h, C.value]
251
251
  ]),
252
- h(f("div", {
252
+ x(f("div", {
253
253
  class: l(["right-0 pr-1", L.value])
254
254
  }, [
255
255
  f("button", {
@@ -257,17 +257,17 @@ const ce = ["data-variant"], ge = /* @__PURE__ */ Y({
257
257
  class: "pointer-events-auto h-full px-1 flex items-center justify-center text-muted-foreground hover:text-foreground transition-colors focus:outline-none",
258
258
  "aria-label": "Scroll right"
259
259
  }, [
260
- x(R, {
260
+ y(R, {
261
261
  icon: "lucide:chevron-right",
262
262
  class: "w-5 h-5"
263
263
  })
264
264
  ])
265
265
  ], 2), [
266
- [y, C.value]
266
+ [h, C.value]
267
267
  ])
268
268
  ], 2));
269
269
  }
270
270
  });
271
271
  export {
272
- ge as default
272
+ me as default
273
273
  };
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": "1.4.18",
6
+ "version": "1.4.19",
7
7
  "type": "module",
8
8
  "main": "index.js",
9
9
  "module": "index.js",
package/style.css CHANGED
@@ -1797,5 +1797,5 @@ html {
1797
1797
  }
1798
1798
 
1799
1799
  /* --- Vite Generated CSS --- */
1800
- input[data-v-ea76c92c]::-webkit-outer-spin-button,input[data-v-ea76c92c]::-webkit-inner-spin-button{-webkit-appearance:none;appearance:none;margin:0}input[type=number][data-v-ea76c92c]{-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}.vl-thumbnail-selector__filepicker-inline[data-v-470fec5b]{display:contents}.vl-thumbnail-selector__card:hover .vl-thumbnail-selector__delete[data-v-470fec5b],.vl-thumbnail-selector__card:hover .vl-thumbnail-selector__drag-handle[data-v-470fec5b]{opacity:1}.vl-thumbnail-selector__card[data-v-470fec5b]:not(.border-primary):hover{border-color:color-mix(in sRGB,var(--color-primary, currentColor) 40%,transparent)}.mega-menu-grid[data-v-512aa158]{display:grid;grid-template-columns:repeat(var(--mega-cols, 3),minmax(0,1fr))}@media(max-width:768px){.mega-menu-grid[data-v-512aa158]{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:480px){.mega-menu-grid[data-v-512aa158]{grid-template-columns:1fr}}.dropdown-menu[data-v-173c7a02]{will-change:transform;contain:layout style}.v-modal-overlay[data-v-208854bc]{background-color:#00000085}.v-modal-backdrop[data-v-208854bc]{transform:translateZ(0)}.modal-dialog-enter-active[data-v-208854bc]{transition:opacity 80ms ease-out}.modal-dialog-leave-active[data-v-208854bc]{transition:opacity .12s ease-in}.modal-dialog-enter-from[data-v-208854bc],.modal-dialog-leave-to[data-v-208854bc]{opacity:0}.modal-body[data-v-208854bc]{will-change:opacity;contain:layout style}.blink-bg[data-v-208854bc]{animation:blink-animation-208854bc 1s infinite}@keyframes blink-animation-208854bc{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}.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}.custom-fields-table[data-v-27f884e3]{will-change:transform;contain:layout style}.custom-fields-table[data-v-27f884e3] .form-field-item{margin-bottom:0!important;height:100%}.custom-fields-table[data-v-27f884e3] input,.custom-fields-table[data-v-27f884e3] textarea{padding-left:1em;padding-right:.5em}.custom-fields-table[data-v-27f884e3] input,.custom-fields-table[data-v-27f884e3] textarea,.custom-fields-table[data-v-27f884e3] select,.custom-fields-table[data-v-27f884e3] .input-wrapper,.custom-fields-table[data-v-27f884e3] .tooltip-trigger button,.custom-fields-table[data-v-27f884e3] .tooltip-trigger>div{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-27f884e3] input:focus,.custom-fields-table[data-v-27f884e3] textarea:focus,.custom-fields-table[data-v-27f884e3] select:focus,.custom-fields-table[data-v-27f884e3] .input-wrapper:focus-within,.custom-fields-table[data-v-27f884e3] .tooltip-trigger button:focus,.custom-fields-table[data-v-27f884e3] .tooltip-trigger>div:focus,.custom-fields-table[data-v-27f884e3] .tooltip-trigger>div: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-27f884e3] .w-full{width:100%;height:100%}.custom-fields-table[data-v-27f884e3] .vl-file-picker{height:100%!important;min-height:40px;padding:0;min-width:0!important}.custom-fields-table[data-v-27f884e3] .vl-file-picker--input>.relative{height:100%;min-width:0}.custom-fields-table[data-v-27f884e3] .vl-file-picker--input [role=button]{height:100%!important;min-height:40px!important;border:none!important;border-radius:0!important;background:transparent!important;box-shadow:none!important;padding-left:.75rem!important;padding-right:2.5rem!important;min-width:0!important}.custom-fields-table[data-v-27f884e3] .vl-file-picker--input [role=button]:focus,.custom-fields-table[data-v-27f884e3] .vl-file-picker--input [role=button]:focus-visible{background-color:hsla(var(--primary) / .03)!important;box-shadow:inset 0 0 0 2px hsla(var(--primary) / .1)!important;outline:none!important}.custom-fields-table[data-v-27f884e3] .vl-file-picker__dropzone{min-height:96px;padding:1rem;border-radius:.5rem!important}.custom-fields-table[data-v-27f884e3] .vl-file-picker__file{min-height:72px;border-radius:.5rem!important;background:hsl(var(--background))!important}.custom-fields-table[data-v-27f884e3] .vl-file-picker__file input{height:auto!important;min-height:0;padding:.125rem .25rem!important;border-bottom:1px solid transparent!important}.custom-fields-table[data-v-27f884e3] .vl-file-picker__file input:hover{border-bottom-color:hsl(var(--border))!important}.custom-fields-table[data-v-27f884e3] .vl-file-picker__file input:focus{background-color:transparent!important;border-bottom-color:hsl(var(--primary))!important;box-shadow:none!important}.list-enter-active[data-v-27f884e3]{transition:all .15s cubic-bezier(.16,1,.3,1)}.list-enter-from[data-v-27f884e3]{opacity:0;transform:translateY(-5px)}:where(.rte-editor,.rte-reader) h1{display:block;font-size:1.5rem!important;font-weight:700!important;margin:.5em 0 .2em!important;line-height:1.3}:where(.rte-editor,.rte-reader) h2{display:block;font-size:1.2rem!important;font-weight:600!important;margin:.45em 0 .2em!important;line-height:1.35}:where(.rte-editor,.rte-reader) p{display:block;margin:.2em 0!important}:where(.rte-editor,.rte-reader) div{margin:.1em 0}:where(.rte-editor,.rte-reader) blockquote{display:block;border-left:3px solid var(--color-primary);margin:.6em 0!important;padding:.35em 1em!important;color:var(--color-muted-foreground);font-style:italic;background:color-mix(in oklab,var(--color-primary) 6%,transparent);border-radius:0 var(--radius-sm) var(--radius-sm) 0}:where(.rte-editor,.rte-reader) ul{display:block!important;list-style-type:disc!important;list-style-position:inside!important;padding-left:1.6em!important;margin:.35em 0!important}:where(.rte-editor,.rte-reader) ol{display:block!important;list-style-type:decimal!important;list-style-position:inside!important;padding-left:1.6em!important;margin:.35em 0!important}:where(.rte-editor,.rte-reader) li{display:list-item!important;margin:.15em 0!important;padding-left:.15em}:where(.rte-editor,.rte-reader) ul ul,:where(.rte-editor,.rte-reader) ol ul{list-style-type:circle!important}:where(.rte-editor,.rte-reader) ul ul ul,:where(.rte-editor,.rte-reader) ol ol ul{list-style-type:square!important}:where(.rte-editor,.rte-reader) ol ol{list-style-type:lower-alpha!important}:where(.rte-editor,.rte-reader) ol ol ol{list-style-type:lower-roman!important}:where(.rte-editor,.rte-reader) hr{display:block!important;border:0!important;border-top:1px solid var(--color-border)!important;margin:1.5em 0!important}:where(.rte-editor,.rte-reader) a{color:var(--color-info);text-decoration:underline;text-underline-offset:2px;cursor:pointer;transition:color .12s ease}:where(.rte-editor,.rte-reader) a:hover{color:var(--color-info-dark, var(--color-info));text-decoration-thickness:2px}:where(.rte-editor,.rte-reader) code{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:.85em;background:var(--color-muted);color:var(--color-foreground);padding:.2em .4em;border-radius:var(--radius-sm);border:none}:where(.rte-editor,.rte-reader) img{max-width:100%;height:auto;border-radius:var(--radius-sm);margin:1em 0;display:block;box-shadow:0 0 0 1px var(--color-border);transition:filter .2s,opacity .2s}.rte-editor img.rte-image-uploading{opacity:.6;filter:grayscale(100%) blur(2px);cursor:wait}:where(.rte-editor,.rte-reader) strong,:where(.rte-editor,.rte-reader) b{font-weight:700!important}:where(.rte-editor,.rte-reader) em,:where(.rte-editor,.rte-reader) i{font-style:italic!important}:where(.rte-editor,.rte-reader) u{text-decoration:underline!important;text-decoration-thickness:1.5px;text-underline-offset:2px}:where(.rte-editor,.rte-reader) s,:where(.rte-editor,.rte-reader) strike{text-decoration:line-through!important}.rte-editor ::selection{background:color-mix(in oklab,var(--color-primary) 22%,transparent)}.rte-toolbar{display:flex;flex-wrap:wrap;padding:6px 8px;gap:2px;border-bottom:1px solid var(--color-border);background:var(--color-background);border-radius:calc(var(--radius) - 1px) calc(var(--radius) - 1px) 0 0;align-items:center}.rte-btn{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:var(--radius-sm);border:none;background:transparent;color:var(--color-muted-foreground);cursor:pointer;transition:all .1s ease;-webkit-tap-highlight-color:transparent;touch-action:manipulation}.rte-btn:hover:not(:disabled){background:var(--color-accent);color:var(--color-foreground)}.rte-btn--active{background:var(--color-accent);color:var(--color-foreground)}.rte-btn--text{font-size:.75rem;font-weight:700;width:auto;min-width:28px;padding:0 6px}.rte-icon{width:1.1rem;height:1.1rem;stroke-width:2.5}.rte-btn:disabled{opacity:.38;cursor:not-allowed;pointer-events:none}.rte-btn:focus-visible{outline:2px solid var(--color-primary);outline-offset:1px}.rte-sep{width:1px;height:18px;background:var(--color-border);margin:0 3px;flex-shrink:0}.rte-link-popover{position:absolute;top:0;left:0;z-index:60;width:300px;max-width:min(300px,calc(100vw - 24px));background:var(--color-background);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:0 2px 4px #0000000f,0 8px 24px #0000001a;padding:8px;display:flex;flex-direction:column;gap:6px;will-change:transform,opacity}.rte-link-input-row{display:flex;align-items:center;gap:6px;background:var(--color-muted);border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:0 8px;transition:border-color .15s ease,box-shadow .15s ease}.rte-link-input-row:focus-within{border-color:var(--color-primary);box-shadow:0 0 0 2px color-mix(in oklab,var(--color-primary) 12%,transparent)}.rte-link-icon-prefix{width:.875rem;height:.875rem;color:var(--color-muted-foreground);flex-shrink:0}.rte-link-input{flex:1;background:transparent;border:none;outline:none;font-size:.8rem;color:var(--color-foreground);padding:7px 0;min-width:0;font-family:JetBrains Mono,Fira Code,ui-monospace,monospace}.rte-link-input::placeholder{color:var(--color-muted-foreground);font-family:inherit}.rte-link-actions-row{display:flex;align-items:center;gap:3px}.rte-link-action-btn{display:inline-flex;align-items:center;gap:4px;padding:4px 8px;border:none;border-radius:var(--radius-sm);background:transparent;font-size:.75rem;font-weight:500;cursor:pointer;color:var(--color-muted-foreground);transition:background .12s ease,color .12s ease}.rte-link-action-btn:hover{background:var(--color-accent);color:var(--color-foreground)}.rte-link-action-btn--danger{color:var(--color-destructive)}.rte-link-action-btn--danger:hover{background:color-mix(in oklab,var(--color-destructive) 10%,transparent);color:var(--color-destructive)}.rte-link-apply-btn{background:var(--color-primary);color:var(--color-primary-foreground);width:24px;height:24px;padding:4px;cursor:pointer}.rte-link-apply-btn:disabled{opacity:.5;cursor:not-allowed}.rte-link-apply-btn:hover:not(:disabled){background:color-mix(in oklab,var(--color-primary) 88%,var(--color-primary-foreground));color:var(--color-primary-foreground)}.rte-root{display:flex;flex-direction:column;gap:6px;width:100%}.rte-label{font-size:.825rem;font-weight:500;color:var(--color-foreground);margin-bottom:2px}.rte-wrapper{background:var(--color-background);border:1px solid var(--color-border);border-radius:var(--radius);position:relative;transition:border-color .15s ease,box-shadow .15s ease;display:flex;flex-direction:column}.rte-root.rte-focused .rte-wrapper{border-color:var(--color-primary);box-shadow:0 0 0 2px color-mix(in oklab,var(--color-primary) 12%,transparent)}.rte-root.rte-disabled .rte-wrapper{background:var(--color-muted);opacity:.6}.rte-root.rte-error .rte-wrapper{border-color:var(--color-destructive)}.rte-root.rte-error.rte-focused .rte-wrapper{box-shadow:0 0 0 2px color-mix(in oklab,var(--color-destructive) 15%,transparent)}.rte-body-wrap{position:relative;overflow:visible}.rte-editor{outline:none;padding:14px 16px;color:var(--color-foreground);font-size:.9rem;line-height:1.7;width:100%;box-sizing:border-box;overflow-y:auto;border-radius:0 0 var(--radius) var(--radius);word-break:break-word;overflow-wrap:break-word;will-change:transform;contain:layout style}.rte-editor[contenteditable=true]{caret-color:var(--color-primary)}.rte-placeholder{position:absolute;top:14px;left:16px;color:var(--color-muted-foreground);font-size:.9rem;pointer-events:none;-webkit-user-select:none;user-select:none;line-height:1.7}.rte-error-msg{font-size:.78rem;color:var(--color-destructive);margin:0;line-height:1.4}.form-field-item[data-v-539d8be7]{display:flex;flex-direction:column;min-width:0}.form-field-item[data-v-539d8be7]:has([role=checkbox]){flex-direction:row;align-items:center;justify-content:flex-start}.form-container[data-v-db13df10]{width:100%}[data-tabes][data-v-b32d2e32]:not(.inline-flex):not([class*=gap-6])>:where(button,a,[role=tab]){flex:1 0 0%;min-width:max-content}.scrollbar-hide[data-v-b32d2e32]{-ms-overflow-style:none;scrollbar-width:none;-webkit-overflow-scrolling:touch}.scrollbar-hide[data-v-b32d2e32]::-webkit-scrollbar{display:none!important;width:0!important;height:0!important;background:transparent!important}.scrollbar-hide{-ms-overflow-style:none;scrollbar-width:none;-webkit-overflow-scrolling:touch}.scrollbar-hide::-webkit-scrollbar{display:none!important;width:0!important;height:0!important;background:transparent!important}.scrollable-container[data-v-38015ba3]{will-change:transform;contain:layout style}.kanban-board--disabled[data-v-38015ba3]{opacity:.75;background-color:color-mix(in srgb,var(--color-card) 85%,var(--color-muted) 15%)}.kanban-lock-badge[data-v-38015ba3]{font-size:.75rem;line-height:1;-webkit-user-select:none;user-select:none}.scrollable-container[data-v-52c07c6d]{will-change:transform;contain:layout style}.v-sidepanel-overlay[data-v-69e4da90]{background-color:#00000069}.slide-right-enter-active[data-v-69e4da90],.slide-left-enter-active[data-v-69e4da90]{transition:opacity 80ms ease-out}.slide-right-leave-active[data-v-69e4da90],.slide-left-leave-active[data-v-69e4da90]{transition:opacity .12s ease-in}.slide-right-enter-from[data-v-69e4da90],.slide-right-leave-to[data-v-69e4da90],.slide-left-enter-from[data-v-69e4da90],.slide-left-leave-to[data-v-69e4da90]{opacity:0}.sidepanel-body[data-v-69e4da90]{will-change:transform,opacity;contain:layout style}.fade-x-enter-active,.fade-x-leave-active{transition:opacity .15s ease}.fade-x-enter-from,.fade-x-leave-to{opacity:0}.navbar-tabs-no-scrollbar{-ms-overflow-style:none;scrollbar-width:none}.navbar-tabs-no-scrollbar::-webkit-scrollbar{display:none!important;width:0!important;height:0!important;background:transparent!important}.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-4d544a95]{width:100%;position:relative;will-change:transform;contain:layout style}.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}.file-tree-container[data-v-62b1cddc]{will-change:transform;contain:layout style}.rte-reader[data-v-55b9fd8b]{font-family:inherit;color:var(--color-foreground);font-size:.9rem;line-height:1.7;word-break:break-word;overflow-wrap:break-word;padding:0;margin:0}.sheet-container[data-v-e674bcbc]{will-change:transform;contain:layout style}.vl-comment-actions[data-v-446c60ad]{opacity:0;transition:opacity .15s ease}.vl-comment:hover:not(:has(.vl-comment:hover))>div>.vl-comment-header>.vl-comment-actions[data-v-446c60ad]{opacity:1}.vl-comment-actions[data-v-446c60ad]:focus-within{opacity:1}.vl-comment:has(.vl-comment-actions button[aria-label="Confirm delete"]) .vl-comment-actions[data-v-446c60ad]{opacity:1}.sidebar-manu-item .tooltip-trigger{width:100%!important}.sidebar-menu-tooltip{margin-left:4px!important}[dir=rtl] .sidebar-menu-tooltip{margin-right:4px!important}.drill-forward-enter-active,.drill-forward-leave-active{transition:all .28s cubic-bezier(.4,0,.2,1)}.drill-forward-enter-from{opacity:0;transform:translate(40%)}.drill-forward-enter-to,.drill-forward-leave-from{opacity:1;transform:translate(0)}.drill-forward-leave-to{opacity:0;transform:translate(-40%)}.drill-forward-leave-active{position:absolute;top:0;left:0;right:0}.drill-backward-enter-active,.drill-backward-leave-active{transition:all .28s cubic-bezier(.4,0,.2,1)}.drill-backward-enter-from{opacity:0;transform:translate(-40%)}.drill-backward-enter-to,.drill-backward-leave-from{opacity:1;transform:translate(0)}.drill-backward-leave-to{opacity:0;transform:translate(40%)}.drill-backward-leave-active{position:absolute;top:0;left:0;right:0}.sidebar-drilldown-container{min-height:0}.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-f4695eed]{max-height:70vh;will-change:transform;contain:layout style}.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-e8bfdc18]{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}.custom-table[data-v-e8bfdc18]{width:100%;border-collapse:collapse}.custom-sticky-header th[data-v-e8bfdc18]{position:sticky;top:0;z-index:20;box-shadow:0 1px 0 var(--color-border)}.custom-th[data-v-e8bfdc18]{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-e8bfdc18]{border-bottom:1px solid var(--color-border)}.custom-th.text-center[data-v-e8bfdc18]{text-align:center;min-width:100px}.custom-th[data-v-e8bfdc18]:first-child{border-left:none}.custom-td[data-v-e8bfdc18]{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-e8bfdc18]{text-align:center}.custom-td[data-v-e8bfdc18]:first-child{border-left:none}.custom-group-row td[data-v-e8bfdc18]{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-e8bfdc18]{background-color:var(--color-background);transition:background-color .1s ease}.custom-entity-row[data-v-e8bfdc18]:hover{background-color:var(--color-gray-50)}.custom-entity-row:last-child td[data-v-e8bfdc18]{border-bottom:none}.custom-active-cell[data-v-e8bfdc18]{cursor:pointer}.custom-active-cell[data-v-e8bfdc18]:hover{background-color:var(--color-accent)}.category-manager--loading[data-v-0e426dc4]{pointer-events:none;-webkit-user-select:none;user-select:none}.cm-fade-enter-active[data-v-0e426dc4],.cm-fade-leave-active[data-v-0e426dc4]{transition:opacity .2s ease}.cm-fade-enter-from[data-v-0e426dc4],.cm-fade-leave-to[data-v-0e426dc4]{opacity:0}.category-tabs-no-scrollbar[data-v-4d803b88]{-ms-overflow-style:none;scrollbar-width:none}.category-tabs-no-scrollbar[data-v-4d803b88]::-webkit-scrollbar{display:none!important;width:0!important;height:0!important;background:transparent!important}.fade-x-enter-active[data-v-4d803b88],.fade-x-leave-active[data-v-4d803b88]{transition:opacity .15s ease}.fade-x-enter-from[data-v-4d803b88],.fade-x-leave-to[data-v-4d803b88]{opacity:0}.category-mega-no-scrollbar[data-v-5a117002]{-ms-overflow-style:none;scrollbar-width:none}.category-mega-no-scrollbar[data-v-5a117002]::-webkit-scrollbar{display:none!important;width:0!important;height:0!important;background:transparent!important}.fade-x-enter-active[data-v-5a117002],.fade-x-leave-active[data-v-5a117002]{transition:opacity .15s ease}.fade-x-enter-from[data-v-5a117002],.fade-x-leave-to[data-v-5a117002]{opacity:0}.attached-group[data-v-298c3d8a] button{position:relative}.attached-group[data-v-298c3d8a] button:focus-visible,.attached-group[data-v-298c3d8a] button:hover{z-index:10}.attached-group[data-v-298c3d8a]:not(.vertical-group) button:not(:first-child){margin-inline-start:-1px}.attached-group[data-v-298c3d8a]:not(.vertical-group) button:first-child{border-start-end-radius:0!important;border-end-end-radius:0!important}.attached-group[data-v-298c3d8a]:not(.vertical-group) button:not(:first-child):not(:last-child){border-radius:0!important}.attached-group[data-v-298c3d8a]:not(.vertical-group) button:last-child{border-start-start-radius:0!important;border-end-start-radius:0!important}.vertical-group[data-v-298c3d8a] button:not(:first-child){margin-block-start:-1px}.vertical-group[data-v-298c3d8a] button:first-child{border-end-start-radius:0!important;border-end-end-radius:0!important}.vertical-group[data-v-298c3d8a] button:not(:first-child):not(:last-child){border-radius:0!important}.vertical-group[data-v-298c3d8a] button:last-child{border-start-start-radius:0!important;border-start-end-radius:0!important}.attached-group[data-v-298c3d8a]:not(.vertical-group) button:not(:first-child):not(.border):before{content:"";position:absolute;inset-inline-start:0;top:0;bottom:0;width:1px;background-color:currentColor;opacity:.15;z-index:5;pointer-events:none;height:100%}.vertical-group[data-v-298c3d8a] 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}[data-v-63e46f6b] .calendar-view{--calendar-primary-color: var(--color-primary);--calendar-bg-color: transparent !important;--calendar-border-color: var(--color-border);--calendar-text-color: var(--color-foreground);--calendar-hover-color: var(--color-accent)}[data-v-63e46f6b] .v-event-calendar .add-event-icon,[data-v-63e46f6b] .v-event-calendar .add-event-icon svg{color:var(--color-primary-fg)!important}.vlite-line-chart[data-v-07c9fb47]{position:relative}.vlite-scc-grid[data-v-e6172e07]{display:flex;width:100%}.vlite-scc-card[data-v-e6172e07]{flex:1;position:relative;display:flex;align-items:stretch}.vlite-scc-separator[data-v-e6172e07]{width:1px;align-self:stretch;background:var(--color-border, #e4e4e7);opacity:.3;margin:8px 0;flex-shrink:0;background-image:repeating-linear-gradient(to bottom,var(--color-border, #e4e4e7) 0px,var(--color-border, #e4e4e7) 4px,transparent 4px,transparent 8px);background-color:transparent}.vlite-scc-content[data-v-e6172e07]{display:flex;flex-direction:column;align-items:flex-start;padding:16px 20px;flex:1;min-height:200px}.vlite-scc-label[data-v-e6172e07]{font-size:13px;font-weight:500;color:var(--color-muted-foreground, #71717a);margin:0 0 6px}.vlite-scc-pct[data-v-e6172e07]{font-size:36px;font-weight:800;color:var(--color-foreground, #09090b);margin:0;line-height:1.1;letter-spacing:-.02em;font-variant-numeric:tabular-nums}.vlite-scc-spacer[data-v-e6172e07]{flex:1}.vlite-scc-indicator[data-v-e6172e07]{border-radius:10px;margin-bottom:14px;transition:width .6s ease,height .6s ease}.vlite-scc-footer[data-v-e6172e07]{display:flex;align-items:center;gap:8px}.vlite-scc-value[data-v-e6172e07]{font-size:14px;font-weight:600;color:var(--color-foreground, #09090b);font-variant-numeric:tabular-nums}.vlite-scc-trend-icon[data-v-e6172e07]{width:14px;height:14px}.vlite-scc-trend-up[data-v-e6172e07]{color:var(--color-success, #22c55e);transform:rotate(25deg)}.vlite-scc-trend-down[data-v-e6172e07]{color:var(--color-danger, #ef4444);transform:rotate(-25deg)}.vlite-gantt-chart[data-v-91cc2885]{font-family:inherit}.vlite-gantt-toolbar[data-v-91cc2885]{display:flex;justify-content:flex-end;margin-bottom:8px;gap:6px}.vlite-gantt-btn[data-v-91cc2885]{display:inline-flex;align-items:center;gap:5px;padding:5px 12px;font-size:11px;font-weight:600;color:var(--color-muted-foreground);background:var(--color-muted);border:1px solid var(--color-border);border-radius:var(--radius);cursor:pointer;transition:all .15s}.vlite-gantt-btn[data-v-91cc2885]:hover:not(:disabled){background:var(--color-accent);color:var(--color-foreground)}.vlite-gantt-btn[data-v-91cc2885]:disabled{opacity:.5;cursor:not-allowed}.vlite-gantt-zoom-controls[data-v-91cc2885]{display:flex;gap:6px}.vlite-gantt-wrapper[data-v-91cc2885]{display:flex;border:1px solid var(--color-border);border-radius:var(--radius-lg);overflow:hidden;background:var(--color-background)}.vlite-gantt-sidebar[data-v-91cc2885]{flex-shrink:0;border-right:1px solid var(--color-border);background:var(--color-background);z-index:2}.vlite-gantt-sidebar-header[data-v-91cc2885]{display:flex;align-items:center;padding:0 16px;border-bottom:1px solid var(--color-border);background:color-mix(in oklab,var(--color-background) 97%,var(--color-foreground))}.vlite-gantt-sidebar-body[data-v-91cc2885]{overflow-y:hidden;overflow-x:hidden}.vlite-gantt-sidebar-row[data-v-91cc2885]{display:flex;align-items:center;padding:0 12px;border-bottom:1px solid color-mix(in oklab,var(--color-border) 50%,transparent)}.vlite-gantt-group-toggle[data-v-91cc2885]{display:flex;align-items:center;gap:6px;width:100%;padding:0 4px;background:none;border:none;cursor:pointer;color:inherit;text-align:left}.vlite-gantt-group-toggle[data-v-91cc2885]:hover{opacity:.8}.vlite-gantt-chevron[data-v-91cc2885]{transition:transform .2s ease;color:var(--color-muted-foreground);flex-shrink:0}.vlite-gantt-chevron-collapsed[data-v-91cc2885]{transform:rotate(-90deg)}.vlite-gantt-group-count[data-v-91cc2885]{font-size:10px;font-weight:600;color:var(--color-muted-foreground);background:var(--color-muted);padding:1px 6px;border-radius:99px;margin-left:auto}.vlite-gantt-task-name[data-v-91cc2885]{display:flex;align-items:center;gap:8px;cursor:pointer;padding:0 4px;width:100%;transition:all .15s}.vlite-gantt-task-name[data-v-91cc2885]:hover{opacity:.75}.vlite-gantt-task-name-grouped[data-v-91cc2885]{padding-left:20px}.vlite-gantt-task-name-dragging[data-v-91cc2885]{background:color-mix(in oklab,var(--color-primary) 8%,transparent);border-radius:4px}.vlite-gantt-task-dot[data-v-91cc2885]{width:7px;height:7px;border-radius:2px;flex-shrink:0}.vlite-gantt-progress-badge[data-v-91cc2885]{font-size:10px;font-weight:700;color:var(--color-muted-foreground);margin-left:auto;flex-shrink:0}.vlite-gantt-timeline[data-v-91cc2885]{flex:1;overflow-x:auto;overflow-y:auto;position:relative}.vlite-gantt-timeline-header[data-v-91cc2885]{position:sticky;top:0;z-index:1;border-bottom:1px solid var(--color-border);background:color-mix(in oklab,var(--color-background) 97%,var(--color-foreground))}.vlite-gantt-timeline-body[data-v-91cc2885]{position:relative}.vlite-gantt-bar-dragging[data-v-91cc2885]{filter:drop-shadow(0 2px 8px rgba(0,0,0,.15));z-index:10}.vlite-gantt-dep-group[data-v-91cc2885]{transition:opacity .2s}.vlite-gantt-dep-group[data-v-91cc2885]:hover{opacity:1!important}.vlite-gantt-tooltip-progress-track[data-v-91cc2885]{width:60px;height:4px;border-radius:2px;background:var(--color-muted);overflow:hidden}.vlite-gantt-tooltip-progress-fill[data-v-91cc2885]{height:100%;border-radius:2px;transition:width .3s ease}.vlite-gantt-timeline[data-v-91cc2885]::-webkit-scrollbar{height:6px;width:6px}.vlite-gantt-timeline[data-v-91cc2885]::-webkit-scrollbar-track{background:transparent}.vlite-gantt-timeline[data-v-91cc2885]::-webkit-scrollbar-thumb{background:var(--color-scrollbar);border-radius:3px}.vlite-gantt-timeline[data-v-91cc2885]::-webkit-scrollbar-thumb:hover{background:var(--color-scrollbar-hover)}.vlite-gantt-sidebar-body[data-v-91cc2885]::-webkit-scrollbar{width:0;display:none}.is-solid[data-v-33afc5cb] path,.is-solid[data-v-33afc5cb] polygon,.is-solid[data-v-33afc5cb] circle,.is-solid[data-v-33afc5cb] rect{fill:currentColor!important}.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-aa0dbb48] ::-webkit-scrollbar{width:4px}.command-palette-content[data-v-aa0dbb48] ::-webkit-scrollbar-track{background:transparent}.command-palette-content[data-v-aa0dbb48] ::-webkit-scrollbar-thumb{background:var(--border);border-radius:9999px}.cp-scroll-container[data-v-aa0dbb48]{transform:translateZ(0);will-change:transform;touch-action:pan-y;backface-visibility:hidden}
1800
+ input[data-v-ea76c92c]::-webkit-outer-spin-button,input[data-v-ea76c92c]::-webkit-inner-spin-button{-webkit-appearance:none;appearance:none;margin:0}input[type=number][data-v-ea76c92c]{-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}.vl-thumbnail-selector__filepicker-inline[data-v-470fec5b]{display:contents}.vl-thumbnail-selector__card:hover .vl-thumbnail-selector__delete[data-v-470fec5b],.vl-thumbnail-selector__card:hover .vl-thumbnail-selector__drag-handle[data-v-470fec5b]{opacity:1}.vl-thumbnail-selector__card[data-v-470fec5b]:not(.border-primary):hover{border-color:color-mix(in sRGB,var(--color-primary, currentColor) 40%,transparent)}.mega-menu-grid[data-v-512aa158]{display:grid;grid-template-columns:repeat(var(--mega-cols, 3),minmax(0,1fr))}@media(max-width:768px){.mega-menu-grid[data-v-512aa158]{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:480px){.mega-menu-grid[data-v-512aa158]{grid-template-columns:1fr}}.dropdown-menu[data-v-173c7a02]{will-change:transform;contain:layout style}.v-modal-overlay[data-v-208854bc]{background-color:#00000085}.v-modal-backdrop[data-v-208854bc]{transform:translateZ(0)}.modal-dialog-enter-active[data-v-208854bc]{transition:opacity 80ms ease-out}.modal-dialog-leave-active[data-v-208854bc]{transition:opacity .12s ease-in}.modal-dialog-enter-from[data-v-208854bc],.modal-dialog-leave-to[data-v-208854bc]{opacity:0}.modal-body[data-v-208854bc]{will-change:opacity;contain:layout style}.blink-bg[data-v-208854bc]{animation:blink-animation-208854bc 1s infinite}@keyframes blink-animation-208854bc{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}.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}.custom-fields-table[data-v-27f884e3]{will-change:transform;contain:layout style}.custom-fields-table[data-v-27f884e3] .form-field-item{margin-bottom:0!important;height:100%}.custom-fields-table[data-v-27f884e3] input,.custom-fields-table[data-v-27f884e3] textarea{padding-left:1em;padding-right:.5em}.custom-fields-table[data-v-27f884e3] input,.custom-fields-table[data-v-27f884e3] textarea,.custom-fields-table[data-v-27f884e3] select,.custom-fields-table[data-v-27f884e3] .input-wrapper,.custom-fields-table[data-v-27f884e3] .tooltip-trigger button,.custom-fields-table[data-v-27f884e3] .tooltip-trigger>div{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-27f884e3] input:focus,.custom-fields-table[data-v-27f884e3] textarea:focus,.custom-fields-table[data-v-27f884e3] select:focus,.custom-fields-table[data-v-27f884e3] .input-wrapper:focus-within,.custom-fields-table[data-v-27f884e3] .tooltip-trigger button:focus,.custom-fields-table[data-v-27f884e3] .tooltip-trigger>div:focus,.custom-fields-table[data-v-27f884e3] .tooltip-trigger>div: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-27f884e3] .w-full{width:100%;height:100%}.custom-fields-table[data-v-27f884e3] .vl-file-picker{height:100%!important;min-height:40px;padding:0;min-width:0!important}.custom-fields-table[data-v-27f884e3] .vl-file-picker--input>.relative{height:100%;min-width:0}.custom-fields-table[data-v-27f884e3] .vl-file-picker--input [role=button]{height:100%!important;min-height:40px!important;border:none!important;border-radius:0!important;background:transparent!important;box-shadow:none!important;padding-left:.75rem!important;padding-right:2.5rem!important;min-width:0!important}.custom-fields-table[data-v-27f884e3] .vl-file-picker--input [role=button]:focus,.custom-fields-table[data-v-27f884e3] .vl-file-picker--input [role=button]:focus-visible{background-color:hsla(var(--primary) / .03)!important;box-shadow:inset 0 0 0 2px hsla(var(--primary) / .1)!important;outline:none!important}.custom-fields-table[data-v-27f884e3] .vl-file-picker__dropzone{min-height:96px;padding:1rem;border-radius:.5rem!important}.custom-fields-table[data-v-27f884e3] .vl-file-picker__file{min-height:72px;border-radius:.5rem!important;background:hsl(var(--background))!important}.custom-fields-table[data-v-27f884e3] .vl-file-picker__file input{height:auto!important;min-height:0;padding:.125rem .25rem!important;border-bottom:1px solid transparent!important}.custom-fields-table[data-v-27f884e3] .vl-file-picker__file input:hover{border-bottom-color:hsl(var(--border))!important}.custom-fields-table[data-v-27f884e3] .vl-file-picker__file input:focus{background-color:transparent!important;border-bottom-color:hsl(var(--primary))!important;box-shadow:none!important}.list-enter-active[data-v-27f884e3]{transition:all .15s cubic-bezier(.16,1,.3,1)}.list-enter-from[data-v-27f884e3]{opacity:0;transform:translateY(-5px)}:where(.rte-editor,.rte-reader) h1{display:block;font-size:1.5rem!important;font-weight:700!important;margin:.5em 0 .2em!important;line-height:1.3}:where(.rte-editor,.rte-reader) h2{display:block;font-size:1.2rem!important;font-weight:600!important;margin:.45em 0 .2em!important;line-height:1.35}:where(.rte-editor,.rte-reader) p{display:block;margin:.2em 0!important}:where(.rte-editor,.rte-reader) div{margin:.1em 0}:where(.rte-editor,.rte-reader) blockquote{display:block;border-left:3px solid var(--color-primary);margin:.6em 0!important;padding:.35em 1em!important;color:var(--color-muted-foreground);font-style:italic;background:color-mix(in oklab,var(--color-primary) 6%,transparent);border-radius:0 var(--radius-sm) var(--radius-sm) 0}:where(.rte-editor,.rte-reader) ul{display:block!important;list-style-type:disc!important;list-style-position:inside!important;padding-left:1.6em!important;margin:.35em 0!important}:where(.rte-editor,.rte-reader) ol{display:block!important;list-style-type:decimal!important;list-style-position:inside!important;padding-left:1.6em!important;margin:.35em 0!important}:where(.rte-editor,.rte-reader) li{display:list-item!important;margin:.15em 0!important;padding-left:.15em}:where(.rte-editor,.rte-reader) ul ul,:where(.rte-editor,.rte-reader) ol ul{list-style-type:circle!important}:where(.rte-editor,.rte-reader) ul ul ul,:where(.rte-editor,.rte-reader) ol ol ul{list-style-type:square!important}:where(.rte-editor,.rte-reader) ol ol{list-style-type:lower-alpha!important}:where(.rte-editor,.rte-reader) ol ol ol{list-style-type:lower-roman!important}:where(.rte-editor,.rte-reader) hr{display:block!important;border:0!important;border-top:1px solid var(--color-border)!important;margin:1.5em 0!important}:where(.rte-editor,.rte-reader) a{color:var(--color-info);text-decoration:underline;text-underline-offset:2px;cursor:pointer;transition:color .12s ease}:where(.rte-editor,.rte-reader) a:hover{color:var(--color-info-dark, var(--color-info));text-decoration-thickness:2px}:where(.rte-editor,.rte-reader) code{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:.85em;background:var(--color-muted);color:var(--color-foreground);padding:.2em .4em;border-radius:var(--radius-sm);border:none}:where(.rte-editor,.rte-reader) img{max-width:100%;height:auto;border-radius:var(--radius-sm);margin:1em 0;display:block;box-shadow:0 0 0 1px var(--color-border);transition:filter .2s,opacity .2s}.rte-editor img.rte-image-uploading{opacity:.6;filter:grayscale(100%) blur(2px);cursor:wait}:where(.rte-editor,.rte-reader) strong,:where(.rte-editor,.rte-reader) b{font-weight:700!important}:where(.rte-editor,.rte-reader) em,:where(.rte-editor,.rte-reader) i{font-style:italic!important}:where(.rte-editor,.rte-reader) u{text-decoration:underline!important;text-decoration-thickness:1.5px;text-underline-offset:2px}:where(.rte-editor,.rte-reader) s,:where(.rte-editor,.rte-reader) strike{text-decoration:line-through!important}.rte-editor ::selection{background:color-mix(in oklab,var(--color-primary) 22%,transparent)}.rte-toolbar{display:flex;flex-wrap:wrap;padding:6px 8px;gap:2px;border-bottom:1px solid var(--color-border);background:var(--color-background);border-radius:calc(var(--radius) - 1px) calc(var(--radius) - 1px) 0 0;align-items:center}.rte-btn{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:var(--radius-sm);border:none;background:transparent;color:var(--color-muted-foreground);cursor:pointer;transition:all .1s ease;-webkit-tap-highlight-color:transparent;touch-action:manipulation}.rte-btn:hover:not(:disabled){background:var(--color-accent);color:var(--color-foreground)}.rte-btn--active{background:var(--color-accent);color:var(--color-foreground)}.rte-btn--text{font-size:.75rem;font-weight:700;width:auto;min-width:28px;padding:0 6px}.rte-icon{width:1.1rem;height:1.1rem;stroke-width:2.5}.rte-btn:disabled{opacity:.38;cursor:not-allowed;pointer-events:none}.rte-btn:focus-visible{outline:2px solid var(--color-primary);outline-offset:1px}.rte-sep{width:1px;height:18px;background:var(--color-border);margin:0 3px;flex-shrink:0}.rte-link-popover{position:absolute;top:0;left:0;z-index:60;width:300px;max-width:min(300px,calc(100vw - 24px));background:var(--color-background);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:0 2px 4px #0000000f,0 8px 24px #0000001a;padding:8px;display:flex;flex-direction:column;gap:6px;will-change:transform,opacity}.rte-link-input-row{display:flex;align-items:center;gap:6px;background:var(--color-muted);border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:0 8px;transition:border-color .15s ease,box-shadow .15s ease}.rte-link-input-row:focus-within{border-color:var(--color-primary);box-shadow:0 0 0 2px color-mix(in oklab,var(--color-primary) 12%,transparent)}.rte-link-icon-prefix{width:.875rem;height:.875rem;color:var(--color-muted-foreground);flex-shrink:0}.rte-link-input{flex:1;background:transparent;border:none;outline:none;font-size:.8rem;color:var(--color-foreground);padding:7px 0;min-width:0;font-family:JetBrains Mono,Fira Code,ui-monospace,monospace}.rte-link-input::placeholder{color:var(--color-muted-foreground);font-family:inherit}.rte-link-actions-row{display:flex;align-items:center;gap:3px}.rte-link-action-btn{display:inline-flex;align-items:center;gap:4px;padding:4px 8px;border:none;border-radius:var(--radius-sm);background:transparent;font-size:.75rem;font-weight:500;cursor:pointer;color:var(--color-muted-foreground);transition:background .12s ease,color .12s ease}.rte-link-action-btn:hover{background:var(--color-accent);color:var(--color-foreground)}.rte-link-action-btn--danger{color:var(--color-destructive)}.rte-link-action-btn--danger:hover{background:color-mix(in oklab,var(--color-destructive) 10%,transparent);color:var(--color-destructive)}.rte-link-apply-btn{background:var(--color-primary);color:var(--color-primary-foreground);width:24px;height:24px;padding:4px;cursor:pointer}.rte-link-apply-btn:disabled{opacity:.5;cursor:not-allowed}.rte-link-apply-btn:hover:not(:disabled){background:color-mix(in oklab,var(--color-primary) 88%,var(--color-primary-foreground));color:var(--color-primary-foreground)}.rte-root{display:flex;flex-direction:column;gap:6px;width:100%}.rte-label{font-size:.825rem;font-weight:500;color:var(--color-foreground);margin-bottom:2px}.rte-wrapper{background:var(--color-background);border:1px solid var(--color-border);border-radius:var(--radius);position:relative;transition:border-color .15s ease,box-shadow .15s ease;display:flex;flex-direction:column}.rte-root.rte-focused .rte-wrapper{border-color:var(--color-primary);box-shadow:0 0 0 2px color-mix(in oklab,var(--color-primary) 12%,transparent)}.rte-root.rte-disabled .rte-wrapper{background:var(--color-muted);opacity:.6}.rte-root.rte-error .rte-wrapper{border-color:var(--color-destructive)}.rte-root.rte-error.rte-focused .rte-wrapper{box-shadow:0 0 0 2px color-mix(in oklab,var(--color-destructive) 15%,transparent)}.rte-body-wrap{position:relative;overflow:visible}.rte-editor{outline:none;padding:14px 16px;color:var(--color-foreground);font-size:.9rem;line-height:1.7;width:100%;box-sizing:border-box;overflow-y:auto;border-radius:0 0 var(--radius) var(--radius);word-break:break-word;overflow-wrap:break-word;will-change:transform;contain:layout style}.rte-editor[contenteditable=true]{caret-color:var(--color-primary)}.rte-placeholder{position:absolute;top:14px;left:16px;color:var(--color-muted-foreground);font-size:.9rem;pointer-events:none;-webkit-user-select:none;user-select:none;line-height:1.7}.rte-error-msg{font-size:.78rem;color:var(--color-destructive);margin:0;line-height:1.4}.form-field-item[data-v-539d8be7]{display:flex;flex-direction:column;min-width:0}.form-field-item[data-v-539d8be7]:has([role=checkbox]){flex-direction:row;align-items:center;justify-content:flex-start}.form-container[data-v-db13df10]{width:100%}[data-tabes][data-v-2e086e79]:not(.inline-flex):not([class*=gap-6])>:where(button,a,[role=tab]){flex:1 0 0%;min-width:max-content}.scrollbar-hide[data-v-2e086e79]{-ms-overflow-style:none;scrollbar-width:none;-webkit-overflow-scrolling:touch}.scrollbar-hide[data-v-2e086e79]::-webkit-scrollbar{display:none!important;width:0!important;height:0!important;background:transparent!important}.scrollbar-hide{-ms-overflow-style:none;scrollbar-width:none;-webkit-overflow-scrolling:touch}.scrollbar-hide::-webkit-scrollbar{display:none!important;width:0!important;height:0!important;background:transparent!important}.scrollable-container[data-v-38015ba3]{will-change:transform;contain:layout style}.kanban-board--disabled[data-v-38015ba3]{opacity:.75;background-color:color-mix(in srgb,var(--color-card) 85%,var(--color-muted) 15%)}.kanban-lock-badge[data-v-38015ba3]{font-size:.75rem;line-height:1;-webkit-user-select:none;user-select:none}.scrollable-container[data-v-52c07c6d]{will-change:transform;contain:layout style}.v-sidepanel-overlay[data-v-69e4da90]{background-color:#00000069}.slide-right-enter-active[data-v-69e4da90],.slide-left-enter-active[data-v-69e4da90]{transition:opacity 80ms ease-out}.slide-right-leave-active[data-v-69e4da90],.slide-left-leave-active[data-v-69e4da90]{transition:opacity .12s ease-in}.slide-right-enter-from[data-v-69e4da90],.slide-right-leave-to[data-v-69e4da90],.slide-left-enter-from[data-v-69e4da90],.slide-left-leave-to[data-v-69e4da90]{opacity:0}.sidepanel-body[data-v-69e4da90]{will-change:transform,opacity;contain:layout style}.fade-x-enter-active,.fade-x-leave-active{transition:opacity .15s ease}.fade-x-enter-from,.fade-x-leave-to{opacity:0}.navbar-tabs-no-scrollbar{-ms-overflow-style:none;scrollbar-width:none}.navbar-tabs-no-scrollbar::-webkit-scrollbar{display:none!important;width:0!important;height:0!important;background:transparent!important}.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-4d544a95]{width:100%;position:relative;will-change:transform;contain:layout style}.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}.file-tree-container[data-v-62b1cddc]{will-change:transform;contain:layout style}.rte-reader[data-v-55b9fd8b]{font-family:inherit;color:var(--color-foreground);font-size:.9rem;line-height:1.7;word-break:break-word;overflow-wrap:break-word;padding:0;margin:0}.sheet-container[data-v-e674bcbc]{will-change:transform;contain:layout style}.vl-comment-actions[data-v-446c60ad]{opacity:0;transition:opacity .15s ease}.vl-comment:hover:not(:has(.vl-comment:hover))>div>.vl-comment-header>.vl-comment-actions[data-v-446c60ad]{opacity:1}.vl-comment-actions[data-v-446c60ad]:focus-within{opacity:1}.vl-comment:has(.vl-comment-actions button[aria-label="Confirm delete"]) .vl-comment-actions[data-v-446c60ad]{opacity:1}.sidebar-manu-item .tooltip-trigger{width:100%!important}.sidebar-menu-tooltip{margin-left:4px!important}[dir=rtl] .sidebar-menu-tooltip{margin-right:4px!important}.drill-forward-enter-active,.drill-forward-leave-active{transition:all .28s cubic-bezier(.4,0,.2,1)}.drill-forward-enter-from{opacity:0;transform:translate(40%)}.drill-forward-enter-to,.drill-forward-leave-from{opacity:1;transform:translate(0)}.drill-forward-leave-to{opacity:0;transform:translate(-40%)}.drill-forward-leave-active{position:absolute;top:0;left:0;right:0}.drill-backward-enter-active,.drill-backward-leave-active{transition:all .28s cubic-bezier(.4,0,.2,1)}.drill-backward-enter-from{opacity:0;transform:translate(-40%)}.drill-backward-enter-to,.drill-backward-leave-from{opacity:1;transform:translate(0)}.drill-backward-leave-to{opacity:0;transform:translate(40%)}.drill-backward-leave-active{position:absolute;top:0;left:0;right:0}.sidebar-drilldown-container{min-height:0}.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-f4695eed]{max-height:70vh;will-change:transform;contain:layout style}.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-e8bfdc18]{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}.custom-table[data-v-e8bfdc18]{width:100%;border-collapse:collapse}.custom-sticky-header th[data-v-e8bfdc18]{position:sticky;top:0;z-index:20;box-shadow:0 1px 0 var(--color-border)}.custom-th[data-v-e8bfdc18]{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-e8bfdc18]{border-bottom:1px solid var(--color-border)}.custom-th.text-center[data-v-e8bfdc18]{text-align:center;min-width:100px}.custom-th[data-v-e8bfdc18]:first-child{border-left:none}.custom-td[data-v-e8bfdc18]{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-e8bfdc18]{text-align:center}.custom-td[data-v-e8bfdc18]:first-child{border-left:none}.custom-group-row td[data-v-e8bfdc18]{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-e8bfdc18]{background-color:var(--color-background);transition:background-color .1s ease}.custom-entity-row[data-v-e8bfdc18]:hover{background-color:var(--color-gray-50)}.custom-entity-row:last-child td[data-v-e8bfdc18]{border-bottom:none}.custom-active-cell[data-v-e8bfdc18]{cursor:pointer}.custom-active-cell[data-v-e8bfdc18]:hover{background-color:var(--color-accent)}.category-manager--loading[data-v-0e426dc4]{pointer-events:none;-webkit-user-select:none;user-select:none}.cm-fade-enter-active[data-v-0e426dc4],.cm-fade-leave-active[data-v-0e426dc4]{transition:opacity .2s ease}.cm-fade-enter-from[data-v-0e426dc4],.cm-fade-leave-to[data-v-0e426dc4]{opacity:0}.category-tabs-no-scrollbar[data-v-4d803b88]{-ms-overflow-style:none;scrollbar-width:none}.category-tabs-no-scrollbar[data-v-4d803b88]::-webkit-scrollbar{display:none!important;width:0!important;height:0!important;background:transparent!important}.fade-x-enter-active[data-v-4d803b88],.fade-x-leave-active[data-v-4d803b88]{transition:opacity .15s ease}.fade-x-enter-from[data-v-4d803b88],.fade-x-leave-to[data-v-4d803b88]{opacity:0}.category-mega-no-scrollbar[data-v-5a117002]{-ms-overflow-style:none;scrollbar-width:none}.category-mega-no-scrollbar[data-v-5a117002]::-webkit-scrollbar{display:none!important;width:0!important;height:0!important;background:transparent!important}.fade-x-enter-active[data-v-5a117002],.fade-x-leave-active[data-v-5a117002]{transition:opacity .15s ease}.fade-x-enter-from[data-v-5a117002],.fade-x-leave-to[data-v-5a117002]{opacity:0}.attached-group[data-v-298c3d8a] button{position:relative}.attached-group[data-v-298c3d8a] button:focus-visible,.attached-group[data-v-298c3d8a] button:hover{z-index:10}.attached-group[data-v-298c3d8a]:not(.vertical-group) button:not(:first-child){margin-inline-start:-1px}.attached-group[data-v-298c3d8a]:not(.vertical-group) button:first-child{border-start-end-radius:0!important;border-end-end-radius:0!important}.attached-group[data-v-298c3d8a]:not(.vertical-group) button:not(:first-child):not(:last-child){border-radius:0!important}.attached-group[data-v-298c3d8a]:not(.vertical-group) button:last-child{border-start-start-radius:0!important;border-end-start-radius:0!important}.vertical-group[data-v-298c3d8a] button:not(:first-child){margin-block-start:-1px}.vertical-group[data-v-298c3d8a] button:first-child{border-end-start-radius:0!important;border-end-end-radius:0!important}.vertical-group[data-v-298c3d8a] button:not(:first-child):not(:last-child){border-radius:0!important}.vertical-group[data-v-298c3d8a] button:last-child{border-start-start-radius:0!important;border-start-end-radius:0!important}.attached-group[data-v-298c3d8a]:not(.vertical-group) button:not(:first-child):not(.border):before{content:"";position:absolute;inset-inline-start:0;top:0;bottom:0;width:1px;background-color:currentColor;opacity:.15;z-index:5;pointer-events:none;height:100%}.vertical-group[data-v-298c3d8a] 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}[data-v-63e46f6b] .calendar-view{--calendar-primary-color: var(--color-primary);--calendar-bg-color: transparent !important;--calendar-border-color: var(--color-border);--calendar-text-color: var(--color-foreground);--calendar-hover-color: var(--color-accent)}[data-v-63e46f6b] .v-event-calendar .add-event-icon,[data-v-63e46f6b] .v-event-calendar .add-event-icon svg{color:var(--color-primary-fg)!important}.vlite-line-chart[data-v-07c9fb47]{position:relative}.vlite-scc-grid[data-v-e6172e07]{display:flex;width:100%}.vlite-scc-card[data-v-e6172e07]{flex:1;position:relative;display:flex;align-items:stretch}.vlite-scc-separator[data-v-e6172e07]{width:1px;align-self:stretch;background:var(--color-border, #e4e4e7);opacity:.3;margin:8px 0;flex-shrink:0;background-image:repeating-linear-gradient(to bottom,var(--color-border, #e4e4e7) 0px,var(--color-border, #e4e4e7) 4px,transparent 4px,transparent 8px);background-color:transparent}.vlite-scc-content[data-v-e6172e07]{display:flex;flex-direction:column;align-items:flex-start;padding:16px 20px;flex:1;min-height:200px}.vlite-scc-label[data-v-e6172e07]{font-size:13px;font-weight:500;color:var(--color-muted-foreground, #71717a);margin:0 0 6px}.vlite-scc-pct[data-v-e6172e07]{font-size:36px;font-weight:800;color:var(--color-foreground, #09090b);margin:0;line-height:1.1;letter-spacing:-.02em;font-variant-numeric:tabular-nums}.vlite-scc-spacer[data-v-e6172e07]{flex:1}.vlite-scc-indicator[data-v-e6172e07]{border-radius:10px;margin-bottom:14px;transition:width .6s ease,height .6s ease}.vlite-scc-footer[data-v-e6172e07]{display:flex;align-items:center;gap:8px}.vlite-scc-value[data-v-e6172e07]{font-size:14px;font-weight:600;color:var(--color-foreground, #09090b);font-variant-numeric:tabular-nums}.vlite-scc-trend-icon[data-v-e6172e07]{width:14px;height:14px}.vlite-scc-trend-up[data-v-e6172e07]{color:var(--color-success, #22c55e);transform:rotate(25deg)}.vlite-scc-trend-down[data-v-e6172e07]{color:var(--color-danger, #ef4444);transform:rotate(-25deg)}.vlite-gantt-chart[data-v-91cc2885]{font-family:inherit}.vlite-gantt-toolbar[data-v-91cc2885]{display:flex;justify-content:flex-end;margin-bottom:8px;gap:6px}.vlite-gantt-btn[data-v-91cc2885]{display:inline-flex;align-items:center;gap:5px;padding:5px 12px;font-size:11px;font-weight:600;color:var(--color-muted-foreground);background:var(--color-muted);border:1px solid var(--color-border);border-radius:var(--radius);cursor:pointer;transition:all .15s}.vlite-gantt-btn[data-v-91cc2885]:hover:not(:disabled){background:var(--color-accent);color:var(--color-foreground)}.vlite-gantt-btn[data-v-91cc2885]:disabled{opacity:.5;cursor:not-allowed}.vlite-gantt-zoom-controls[data-v-91cc2885]{display:flex;gap:6px}.vlite-gantt-wrapper[data-v-91cc2885]{display:flex;border:1px solid var(--color-border);border-radius:var(--radius-lg);overflow:hidden;background:var(--color-background)}.vlite-gantt-sidebar[data-v-91cc2885]{flex-shrink:0;border-right:1px solid var(--color-border);background:var(--color-background);z-index:2}.vlite-gantt-sidebar-header[data-v-91cc2885]{display:flex;align-items:center;padding:0 16px;border-bottom:1px solid var(--color-border);background:color-mix(in oklab,var(--color-background) 97%,var(--color-foreground))}.vlite-gantt-sidebar-body[data-v-91cc2885]{overflow-y:hidden;overflow-x:hidden}.vlite-gantt-sidebar-row[data-v-91cc2885]{display:flex;align-items:center;padding:0 12px;border-bottom:1px solid color-mix(in oklab,var(--color-border) 50%,transparent)}.vlite-gantt-group-toggle[data-v-91cc2885]{display:flex;align-items:center;gap:6px;width:100%;padding:0 4px;background:none;border:none;cursor:pointer;color:inherit;text-align:left}.vlite-gantt-group-toggle[data-v-91cc2885]:hover{opacity:.8}.vlite-gantt-chevron[data-v-91cc2885]{transition:transform .2s ease;color:var(--color-muted-foreground);flex-shrink:0}.vlite-gantt-chevron-collapsed[data-v-91cc2885]{transform:rotate(-90deg)}.vlite-gantt-group-count[data-v-91cc2885]{font-size:10px;font-weight:600;color:var(--color-muted-foreground);background:var(--color-muted);padding:1px 6px;border-radius:99px;margin-left:auto}.vlite-gantt-task-name[data-v-91cc2885]{display:flex;align-items:center;gap:8px;cursor:pointer;padding:0 4px;width:100%;transition:all .15s}.vlite-gantt-task-name[data-v-91cc2885]:hover{opacity:.75}.vlite-gantt-task-name-grouped[data-v-91cc2885]{padding-left:20px}.vlite-gantt-task-name-dragging[data-v-91cc2885]{background:color-mix(in oklab,var(--color-primary) 8%,transparent);border-radius:4px}.vlite-gantt-task-dot[data-v-91cc2885]{width:7px;height:7px;border-radius:2px;flex-shrink:0}.vlite-gantt-progress-badge[data-v-91cc2885]{font-size:10px;font-weight:700;color:var(--color-muted-foreground);margin-left:auto;flex-shrink:0}.vlite-gantt-timeline[data-v-91cc2885]{flex:1;overflow-x:auto;overflow-y:auto;position:relative}.vlite-gantt-timeline-header[data-v-91cc2885]{position:sticky;top:0;z-index:1;border-bottom:1px solid var(--color-border);background:color-mix(in oklab,var(--color-background) 97%,var(--color-foreground))}.vlite-gantt-timeline-body[data-v-91cc2885]{position:relative}.vlite-gantt-bar-dragging[data-v-91cc2885]{filter:drop-shadow(0 2px 8px rgba(0,0,0,.15));z-index:10}.vlite-gantt-dep-group[data-v-91cc2885]{transition:opacity .2s}.vlite-gantt-dep-group[data-v-91cc2885]:hover{opacity:1!important}.vlite-gantt-tooltip-progress-track[data-v-91cc2885]{width:60px;height:4px;border-radius:2px;background:var(--color-muted);overflow:hidden}.vlite-gantt-tooltip-progress-fill[data-v-91cc2885]{height:100%;border-radius:2px;transition:width .3s ease}.vlite-gantt-timeline[data-v-91cc2885]::-webkit-scrollbar{height:6px;width:6px}.vlite-gantt-timeline[data-v-91cc2885]::-webkit-scrollbar-track{background:transparent}.vlite-gantt-timeline[data-v-91cc2885]::-webkit-scrollbar-thumb{background:var(--color-scrollbar);border-radius:3px}.vlite-gantt-timeline[data-v-91cc2885]::-webkit-scrollbar-thumb:hover{background:var(--color-scrollbar-hover)}.vlite-gantt-sidebar-body[data-v-91cc2885]::-webkit-scrollbar{width:0;display:none}.is-solid[data-v-33afc5cb] path,.is-solid[data-v-33afc5cb] polygon,.is-solid[data-v-33afc5cb] circle,.is-solid[data-v-33afc5cb] rect{fill:currentColor!important}.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-aa0dbb48] ::-webkit-scrollbar{width:4px}.command-palette-content[data-v-aa0dbb48] ::-webkit-scrollbar-track{background:transparent}.command-palette-content[data-v-aa0dbb48] ::-webkit-scrollbar-thumb{background:var(--border);border-radius:9999px}.cp-scroll-container[data-v-aa0dbb48]{transform:translateZ(0);will-change:transform;touch-action:pan-y;backface-visibility:hidden}
1801
1801