vlite3 1.4.41 → 1.5.0

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.
@@ -18,22 +18,22 @@ declare const __VLS_component: import('vue').DefineComponent<CategoryManagerProp
18
18
  onDelete: (item: CategoryItem) => any;
19
19
  "update:modelValue": (val: CategoryItem[]) => any;
20
20
  onAdd: (item: CategoryItem) => any;
21
- onEdit: (item: CategoryItem) => any;
22
21
  onReorder: (val: {
23
22
  id: string | number;
24
23
  parentId: string | number | null;
25
24
  position: number;
26
25
  }) => any;
26
+ onEdit: (item: CategoryItem) => any;
27
27
  }, string, import('vue').PublicProps, Readonly<CategoryManagerProps> & Readonly<{
28
28
  onOnDelete?: (item: CategoryItem) => any;
29
29
  "onUpdate:modelValue"?: (val: CategoryItem[]) => any;
30
30
  onOnAdd?: (item: CategoryItem) => any;
31
- onOnEdit?: (item: CategoryItem) => any;
32
31
  onOnReorder?: (val: {
33
32
  id: string | number;
34
33
  parentId: string | number | null;
35
34
  position: number;
36
35
  }) => any;
36
+ onOnEdit?: (item: CategoryItem) => any;
37
37
  }>, {
38
38
  size: "sm" | "md" | "lg";
39
39
  loading: boolean;
@@ -22,7 +22,7 @@ import "@vueuse/core";
22
22
  /* empty css */
23
23
  import qe from "../IconPicker.vue.js";
24
24
  /* empty css */
25
- /* empty css */
25
+ /* empty css */
26
26
  /* empty css */
27
27
  /* empty css */
28
28
  /* empty css */
@@ -4,7 +4,7 @@ import k from "../Icon.vue.js";
4
4
  import { $t as E } from "../../utils/i18n.js";
5
5
  import { useCommandPaletteItems as Y } from "./useCommandPaletteItems.js";
6
6
  import { useCommandPaletteNav as Z } from "./useCommandPaletteNav.js";
7
- import ee from "./CommandPaletteItem.vue2.js";
7
+ import ee from "./CommandPaletteItem.vue.js";
8
8
  const te = { class: "command-palette-content flex flex-col w-full h-full max-h-[70vh]" }, oe = { class: "flex items-center gap-3 px-4 py-3 border-b border-border/80 shrink-0" }, se = ["placeholder"], ne = ["aria-label"], re = {
9
9
  key: 0,
10
10
  class: "flex flex-col items-center justify-center py-14 px-6 text-center select-none",
@@ -1,5 +1,5 @@
1
1
  import t from "./CommandPaletteItem.vue3.js";
2
- /* empty css */
2
+ /* empty css */
3
3
  import o from "../../_virtual/_plugin-vue_export-helper.js";
4
4
  const r = /* @__PURE__ */ o(t, [["__scopeId", "data-v-66b1ae06"]]);
5
5
  export {
@@ -46,6 +46,7 @@ declare const __VLS_component: import('vue').DefineComponent<DataTableProps, {},
46
46
  striped: boolean;
47
47
  rows: any[];
48
48
  headers: TableHeader[];
49
+ sortable: boolean;
49
50
  emptyIcon: string;
50
51
  selectedRows: any[];
51
52
  hideSelectable: boolean;
@@ -57,7 +58,6 @@ declare const __VLS_component: import('vue').DefineComponent<DataTableProps, {},
57
58
  keyField: string;
58
59
  hoverable: boolean;
59
60
  treeIndent: number;
60
- sortable: boolean;
61
61
  headerVariant: "default" | "minimal";
62
62
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
63
63
  declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
@@ -1,5 +1,5 @@
1
1
  import o from "./AccordionView.vue3.js";
2
- /* empty css */
2
+ /* empty css */
3
3
  import r from "../../_virtual/_plugin-vue_export-helper.js";
4
4
  const i = /* @__PURE__ */ r(o, [["__scopeId", "data-v-52660f5b"]]);
5
5
  export {
@@ -1,6 +1,6 @@
1
1
  import { defineComponent as g, computed as d, openBlock as n, createElementBlock as R, createElementVNode as x, createBlock as s, withCtx as k, createTextVNode as B, toDisplayString as I, createCommentVNode as y, unref as l } from "vue";
2
2
  import T from "./TableView.vue.js";
3
- import C from "./AccordionView.vue2.js";
3
+ import C from "./AccordionView.vue.js";
4
4
  import U from "../Label.vue.js";
5
5
  import z from "../Button.vue.js";
6
6
  import { useCustomFieldRows as N } from "./composables/useCustomFieldRows.js";
@@ -3,7 +3,7 @@ import L from "./Icon.vue.js";
3
3
  import v from "./Modal.vue.js";
4
4
  import N from "./CommandPalette/CommandPaletteContent.vue.js";
5
5
  import { $t as U } from "../utils/i18n.js";
6
- /* empty css */
6
+ /* empty css */
7
7
  const V = { class: "block truncate -text-fs-1.5" }, S = { class: "ms-auto inline-flex items-center gap-0.5 px-1.5 py-0.5 rounded text-[10px] font-mono font-medium border border-border/80 bg-background text-muted-foreground ms-1" }, A = /* @__PURE__ */ x({
8
8
  __name: "NavbarCommandPalette",
9
9
  props: {
@@ -21,7 +21,7 @@ import "@vueuse/core";
21
21
  import "iconify-icon-picker";
22
22
  import "iconify-icon-picker/style.css";
23
23
  /* empty css */
24
- /* empty css */
24
+ /* empty css */
25
25
  /* empty css */
26
26
  /* empty css */
27
27
  /* empty css */
@@ -1,4 +1,4 @@
1
- import { TabesMenuSelectPayload, TabesOption, TabesSize, TabesVariant } from './types';
1
+ import { TabesMenuSelectPayload, TabesOption, TabesReorderPayload, TabesSize, TabesVariant } from './types';
2
2
  interface Props {
3
3
  options: TabesOption[];
4
4
  modelValue: string | number;
@@ -18,6 +18,17 @@ interface Props {
18
18
  * — matching Dropdown — instead of pinning LTR.
19
19
  */
20
20
  direction?: 'ltr' | 'rtl' | 'auto';
21
+ /**
22
+ * Opt-in: let the user drag tabs into a new order. Off by default.
23
+ * The new order is persisted to localStorage and restored on reload.
24
+ */
25
+ sortable?: boolean;
26
+ /**
27
+ * localStorage slot for the persisted order (prefixed `builto-tabes-order-`).
28
+ * When omitted, a stable key is derived from the tab value set. Only used
29
+ * when `sortable` is on.
30
+ */
31
+ storageKey?: string;
21
32
  }
22
33
  declare const _default: import('vue').DefineComponent<Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
23
34
  change: (value: string | number) => any;
@@ -25,18 +36,23 @@ declare const _default: import('vue').DefineComponent<Props, {}, {}, {}, {}, imp
25
36
  "menu-select": (payload: TabesMenuSelectPayload) => any;
26
37
  "menu-open": (tab: TabesOption) => any;
27
38
  "menu-close": (tab: TabesOption) => any;
39
+ reorder: (payload: TabesReorderPayload) => any;
40
+ "update:options": (options: TabesOption[]) => any;
28
41
  }, string, import('vue').PublicProps, Readonly<Props> & Readonly<{
29
42
  onChange?: (value: string | number) => any;
30
43
  "onUpdate:modelValue"?: (value: string | number) => any;
31
44
  "onMenu-select"?: (payload: TabesMenuSelectPayload) => any;
32
45
  "onMenu-open"?: (tab: TabesOption) => any;
33
46
  "onMenu-close"?: (tab: TabesOption) => any;
47
+ onReorder?: (payload: TabesReorderPayload) => any;
48
+ "onUpdate:options"?: (options: TabesOption[]) => any;
34
49
  }>, {
35
50
  variant: TabesVariant;
36
51
  size: TabesSize;
37
52
  block: boolean;
38
53
  direction: "ltr" | "rtl" | "auto";
39
54
  wrap: boolean;
55
+ sortable: boolean;
40
56
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
41
57
  rootRef: HTMLDivElement;
42
58
  scrollRef: HTMLDivElement;
@@ -1,7 +1,7 @@
1
1
  import o from "./Tabes.vue2.js";
2
2
  /* empty css */
3
- import t from "../../_virtual/_plugin-vue_export-helper.js";
4
- const e = /* @__PURE__ */ t(o, [["__scopeId", "data-v-7f8e99f2"]]);
3
+ import a from "../../_virtual/_plugin-vue_export-helper.js";
4
+ const f = /* @__PURE__ */ a(o, [["__scopeId", "data-v-de4ab2fa"]]);
5
5
  export {
6
- e as default
6
+ f as default
7
7
  };
@@ -1,13 +1,15 @@
1
- import { defineComponent as Te, ref as f, computed as o, watch as m, onMounted as De, onBeforeUnmount as Ie, openBlock as v, createElementBlock as M, normalizeClass as l, withDirectives as A, createVNode as w, vShow as F, createElementVNode as u, normalizeStyle as je, createCommentVNode as j, Fragment as ee, renderList as qe, unref as te, createBlock as O, withCtx as re, toDisplayString as ne, withMemo as Pe, resolveDynamicComponent as He, mergeProps as Ne, nextTick as We } from "vue";
2
- import { useResizeObserver as ae } from "@vueuse/core";
3
- import { getActiveMarkerKey as Ge, isMenuTab as se, isTabActive as oe, scrollTabesStrip as le, getTabesScrollOverflow as Ke } from "./tabes.utils.js";
4
- import { measureTabesMarkerGeometry as Qe, toTabesLocalScrollDelta as ie } from "./TabesMarkerGeometry.js";
5
- import y from "../Icon.vue.js";
6
- import ce from "../FadeOverlay/FadeOverlay.vue.js";
7
- import Ue from "../Dropdown/Dropdown.vue.js";
8
- import { $t as Je } from "../../utils/i18n.js";
9
- import { useRtl as Xe, resolveDirFromAncestors as Ye } from "../../composables/useRtl.js";
10
- const Ze = ["dir"], _e = ["data-variant"], et = ["aria-selected", "aria-expanded", "disabled"], ue = 200, ut = /* @__PURE__ */ Te({
1
+ import { defineComponent as qe, ref as d, computed as l, watch as b, onMounted as Ke, onBeforeUnmount as Ne, openBlock as h, createElementBlock as M, normalizeClass as i, withDirectives as D, createVNode as C, vShow as A, createElementVNode as g, normalizeStyle as He, createCommentVNode as N, Fragment as ne, renderList as We, unref as se, createBlock as F, withCtx as oe, toDisplayString as le, withMemo as Ge, resolveDynamicComponent as Qe, mergeProps as Ue, nextTick as Je } from "vue";
2
+ import { useResizeObserver as ie } from "@vueuse/core";
3
+ import { useDraggable as Xe } from "vue-draggable-plus";
4
+ import { hashTabesValues as Ye, getActiveMarkerKey as Ze, isMenuTab as ce, isTabActive as ue, scrollTabesStrip as de, getTabesScrollOverflow as _e } from "./tabes.utils.js";
5
+ import { measureTabesMarkerGeometry as et, toTabesLocalScrollDelta as fe } from "./TabesMarkerGeometry.js";
6
+ import S from "../Icon.vue.js";
7
+ import me from "../FadeOverlay/FadeOverlay.vue.js";
8
+ import tt from "../Dropdown/Dropdown.vue.js";
9
+ import { $t as rt } from "../../utils/i18n.js";
10
+ import { useRtl as at, resolveDirFromAncestors as nt } from "../../composables/useRtl.js";
11
+ import { usePersistentState as st } from "../../utils/usePersistentState.js";
12
+ const ot = ["dir"], lt = ["data-variant"], it = ["aria-selected", "aria-expanded", "disabled"], ve = 200, yt = /* @__PURE__ */ qe({
11
13
  __name: "Tabes",
12
14
  props: {
13
15
  options: {},
@@ -18,135 +20,183 @@ const Ze = ["dir"], _e = ["data-variant"], et = ["aria-selected", "aria-expanded
18
20
  textClass: {},
19
21
  wrap: { type: Boolean, default: !1 },
20
22
  tabClass: {},
21
- direction: { default: "auto" }
23
+ direction: { default: "auto" },
24
+ sortable: { type: Boolean, default: !1 },
25
+ storageKey: {}
22
26
  },
23
- emits: ["update:modelValue", "change", "menu-select", "menu-open", "menu-close"],
24
- setup(s, { emit: de }) {
25
- const r = s, b = de, q = f(null), k = f(null), d = f(null), g = /* @__PURE__ */ new Map(), P = Xe(), L = f(null), C = o(() => r.direction === "rtl" ? "rtl" : r.direction === "ltr" ? "ltr" : L.value ? L.value : P.value ? "rtl" : "ltr"), S = o(() => C.value === "rtl"), H = () => {
26
- L.value = Ye(q.value);
27
- }, V = f(!1), z = f(!1);
28
- let E = 0, N = 0, B = !1, $ = !1, T = 0;
29
- const W = () => {
30
- if (!d.value) return;
31
- const { canScrollStart: e, canScrollEnd: n } = Ke(
32
- d.value
27
+ emits: ["update:modelValue", "change", "menu-select", "menu-open", "menu-close", "reorder", "update:options"],
28
+ setup(o, { emit: be }) {
29
+ const r = o, f = be, H = d(null), k = d(null), p = d(null), y = /* @__PURE__ */ new Map(), W = at(), E = d(null), V = l(() => r.direction === "rtl" ? "rtl" : r.direction === "ltr" ? "ltr" : E.value ? E.value : W.value ? "rtl" : "ltr"), z = l(() => V.value === "rtl"), G = () => {
30
+ E.value = nt(H.value);
31
+ }, Q = r.sortable ? st(
32
+ `tabes-order-${r.storageKey ?? `auto-${Ye(r.options)}`}`,
33
+ [],
34
+ { writeDefaults: !1 }
35
+ ) : d([]), L = (e) => {
36
+ if (!r.sortable) return [...e];
37
+ const a = Q.value;
38
+ if (!a?.length) return [...e];
39
+ const t = new Map(e.map((s) => [s.value, s])), n = [];
40
+ for (const s of a) {
41
+ const u = t.get(s);
42
+ u && (n.push(u), t.delete(s));
43
+ }
44
+ for (const s of e) t.has(s.value) && n.push(s);
45
+ return n;
46
+ }, m = d(L(r.options)), ge = () => {
47
+ const e = m.value.map((a) => a.value);
48
+ Q.value = e, f("reorder", { options: [...m.value], order: e }), f("update:options", [...m.value]), c({ ensureVisible: !0 });
49
+ }, pe = (e) => {
50
+ const { item: a, from: t, oldIndex: n, oldDraggableIndex: s, newDraggableIndex: u } = e;
51
+ a.parentNode?.removeChild(a);
52
+ const K = typeof n == "number" ? t.children[n] ?? null : null;
53
+ if (t.insertBefore(a, K), s == null || u == null || s === u)
54
+ return;
55
+ const v = [...m.value], [x] = v.splice(s, 1);
56
+ x && (v.splice(u, 0, x), m.value = v, ge());
57
+ }, B = d(!1), $ = d(!1);
58
+ let T = 0, U = 0, R = !1, O = !1, I = 0;
59
+ const J = () => {
60
+ if (!p.value) return;
61
+ const { canScrollStart: e, canScrollEnd: a } = _e(
62
+ p.value
33
63
  );
34
- V.value !== e && (V.value = e), z.value !== n && (z.value = n);
35
- }, fe = () => {
36
- $ || ($ = !0, N = requestAnimationFrame(() => {
37
- $ = !1, W();
64
+ B.value !== e && (B.value = e), $.value !== a && ($.value = a);
65
+ }, he = () => {
66
+ O || (O = !0, U = requestAnimationFrame(() => {
67
+ O = !1, J();
38
68
  }));
39
- }, me = () => le(d.value, "start", ue), ve = () => le(d.value, "end", ue), G = o(() => Ge(r.options, r.modelValue)), be = () => {
40
- if (!d.value || !k.value) return;
41
- const e = G.value;
69
+ }, xe = () => de(p.value, "start", ve), ye = () => de(p.value, "end", ve), X = l(() => Ze(r.options, r.modelValue)), we = () => {
70
+ if (!p.value || !k.value) return;
71
+ const e = X.value;
42
72
  if (e === void 0) return;
43
- const n = g.get(e);
44
- if (!n) return;
45
- const t = d.value, a = n.getBoundingClientRect(), i = t.getBoundingClientRect(), p = 40;
46
- a.left < i.left + p ? t.scrollBy({
47
- left: ie(
73
+ const a = y.get(e);
74
+ if (!a) return;
75
+ const t = p.value, n = a.getBoundingClientRect(), s = t.getBoundingClientRect(), u = 40;
76
+ n.left < s.left + u ? t.scrollBy({
77
+ left: fe(
48
78
  t,
49
- a.left - i.left - p
79
+ n.left - s.left - u
50
80
  ),
51
81
  behavior: "smooth"
52
- }) : a.right > i.right - p && t.scrollBy({
53
- left: ie(
82
+ }) : n.right > s.right - u && t.scrollBy({
83
+ left: fe(
54
84
  t,
55
- a.right - i.right + p
85
+ n.right - s.right + u
56
86
  ),
57
87
  behavior: "smooth"
58
88
  });
59
- }, K = (e, n) => {
60
- e instanceof HTMLElement ? g.set(n, e) : e && typeof e == "object" && "$el" in e && e.$el instanceof HTMLElement ? g.set(n, e.$el) : g.delete(n);
61
- }, h = f({
89
+ }, Y = (e, a) => {
90
+ e instanceof HTMLElement ? y.set(a, e) : e && typeof e == "object" && "$el" in e && e.$el instanceof HTMLElement ? y.set(a, e.$el) : y.delete(a);
91
+ }, w = d({
62
92
  width: "0px",
63
93
  height: "0px",
64
94
  left: "0px",
65
95
  top: "0px",
66
96
  transform: "translate(0px, 0px)",
67
97
  opacity: 0
68
- }), D = f(!1), Q = () => {
69
- h.value.opacity !== 0 && (h.value = {
70
- ...h.value,
98
+ }), j = d(!1), P = () => {
99
+ w.value.opacity !== 0 && (w.value = {
100
+ ...w.value,
71
101
  opacity: 0
72
102
  });
73
- }, ge = async () => {
74
- await We();
75
- const e = k.value, n = G.value, t = n !== void 0 ? g.get(n) : void 0;
103
+ }, ke = async () => {
104
+ await Je();
105
+ const e = k.value, a = X.value, t = a !== void 0 ? y.get(a) : void 0;
76
106
  if (!e || !t) {
77
- Q();
107
+ P();
78
108
  return;
79
109
  }
80
110
  if (e.offsetWidth <= 0 || t.offsetWidth <= 0) {
81
- Q();
111
+ P();
82
112
  return;
83
113
  }
84
- const { width: a, height: i, left: p, top: Ee } = Qe(e, t), x = {
85
- width: `${a}px`,
86
- height: `${i}px`,
114
+ const { width: n, height: s, left: u, top: K } = et(e, t), v = {
115
+ width: `${n}px`,
116
+ height: `${s}px`,
87
117
  left: "0px",
88
118
  top: "0px",
89
- transform: `translate(${p}px, ${Ee}px)`,
119
+ transform: `translate(${u}px, ${K}px)`,
90
120
  opacity: 1
91
- }, R = h.value;
92
- R.width === x.width && R.height === x.height && R.transform === x.transform && R.opacity === x.opacity || (h.value = x, D.value || (cancelAnimationFrame(T), T = requestAnimationFrame(() => {
93
- D.value = !0;
121
+ }, x = w.value;
122
+ x.width === v.width && x.height === v.height && x.transform === v.transform && x.opacity === v.opacity || (w.value = v, j.value || (cancelAnimationFrame(I), I = requestAnimationFrame(() => {
123
+ j.value = !0;
94
124
  })));
95
125
  };
96
- let I = !1;
97
- const U = async (e) => {
98
- await ge(), W(), e?.ensureVisible && be();
126
+ let q = !1;
127
+ const Z = async (e) => {
128
+ await ke(), J(), e?.ensureVisible && we();
99
129
  }, c = (e) => {
100
- e?.ensureVisible && (I = !0), !B && (B = !0, cancelAnimationFrame(E), E = requestAnimationFrame(() => {
101
- B = !1;
102
- const n = I;
103
- I = !1, U({ ensureVisible: n });
130
+ e?.ensureVisible && (q = !0), !R && (R = !0, cancelAnimationFrame(T), T = requestAnimationFrame(() => {
131
+ R = !1;
132
+ const a = q;
133
+ q = !1, Z({ ensureVisible: a });
104
134
  }));
105
135
  };
106
- ae(d, () => c()), ae(k, () => c()), m(
136
+ ie(p, () => c()), ie(k, () => c()), b(
107
137
  () => r.modelValue,
108
138
  () => c({ ensureVisible: !0 })
109
- ), m(
139
+ ), b(
110
140
  () => r.options,
111
- () => c()
112
- ), m(
141
+ (e) => {
142
+ m.value = L(e), c();
143
+ }
144
+ ), b(
145
+ () => r.sortable,
146
+ () => {
147
+ m.value = L(r.options), c();
148
+ }
149
+ ), b(
113
150
  () => r.size,
114
151
  () => c()
115
- ), m(
152
+ ), b(
116
153
  () => r.block,
117
154
  () => c()
118
- ), m(
155
+ ), b(
119
156
  () => r.wrap,
120
157
  () => c()
121
- ), m(
158
+ ), b(
122
159
  () => r.variant,
123
160
  () => c()
124
- ), m(P, () => H()), m(C, () => c({ ensureVisible: !0 })), De(() => {
125
- H(), U({ ensureVisible: !0 });
126
- }), Ie(() => {
127
- cancelAnimationFrame(E), cancelAnimationFrame(N), cancelAnimationFrame(T), B = !1, $ = !1, g.clear();
161
+ ), b(W, () => G()), b(V, () => c({ ensureVisible: !0 })), r.sortable && Xe(k, m, {
162
+ animation: 150,
163
+ draggable: "[data-tabes-sortable]",
164
+ filter: "[data-tabes-disabled]",
165
+ ghostClass: "tabes-drag-ghost",
166
+ chosenClass: "tabes-drag-chosen",
167
+ dragClass: "tabes-drag-active",
168
+ // Hide the marker while dragging (it can't track a moving target), then
169
+ // re-measure on drop so it lands on the active tab's new position.
170
+ onStart: () => P(),
171
+ onEnd: () => c(),
172
+ // Own the reorder so the marker child can't skew the list indices.
173
+ customUpdate: (e) => pe(e)
174
+ }), Ke(() => {
175
+ G(), Z({ ensureVisible: !0 });
176
+ }), Ne(() => {
177
+ cancelAnimationFrame(T), cancelAnimationFrame(U), cancelAnimationFrame(I), R = !1, O = !1, y.clear();
128
178
  });
129
- const he = o(() => {
179
+ const Ce = l(() => {
130
180
  const e = r.variant === "line";
131
181
  return r.block || e ? "flex w-full relative" : "inline-flex max-w-full relative";
132
- }), J = o(() => [
182
+ }), _ = l(() => [
133
183
  "absolute top-0 bottom-0 z-20 flex items-center pointer-events-none transition-opacity duration-200",
134
184
  r.variant === "line" ? "pb-[10px]" : ""
135
- ]), pe = (e) => {
136
- e.disabled || se(e) || (b("update:modelValue", e.value), b("change", e.value));
137
- }, xe = (e, n) => {
185
+ ]), Se = (e) => {
186
+ e.disabled || ce(e) || (f("update:modelValue", e.value), f("change", e.value));
187
+ }, Ve = (e, a) => {
138
188
  if (e.disabled) return;
139
- const t = n.value;
140
- t != null && (b("update:modelValue", t), b("change", t), b("menu-select", { value: t, option: n.option, tab: e }));
141
- }, we = (e) => {
142
- b("menu-open", e);
143
- }, ye = (e) => {
144
- b("menu-close", e), c();
145
- }, ke = o(() => {
189
+ const t = a.value;
190
+ t != null && (f("update:modelValue", t), f("change", t), f("menu-select", { value: t, option: a.option, tab: e }));
191
+ }, ze = (e) => {
192
+ f("menu-open", e);
193
+ }, Be = (e) => {
194
+ f("menu-close", e), c();
195
+ }, $e = l(() => {
146
196
  const e = r.variant === "line";
147
197
  return (r.block || r.wrap) && !e ? "flex-1 min-w-max" : "shrink-0";
148
- }), Ce = (e) => e.dropdown?.direction ?? C.value, Se = o(() => S.value ? "right" : "left"), Ve = o(() => S.value ? "left" : "right"), ze = o(() => S.value ? "lucide:chevron-right" : "lucide:chevron-left"), Be = o(() => S.value ? "lucide:chevron-left" : "lucide:chevron-right"), $e = o(() => {
149
- const e = r.variant === "line", n = {
198
+ }), Re = (e) => e.dropdown?.direction ?? V.value, Oe = l(() => z.value ? "right" : "left"), Me = l(() => z.value ? "left" : "right"), De = l(() => z.value ? "lucide:chevron-right" : "lucide:chevron-left"), Ae = l(() => z.value ? "lucide:chevron-left" : "lucide:chevron-right"), Fe = l(() => {
199
+ const e = r.variant === "line", a = {
150
200
  surface: "bg-secondary/80 p-1",
151
201
  primary: "bg-secondary p-1",
152
202
  secondary: "bg-secondary p-1",
@@ -155,51 +205,51 @@ const Ze = ["dir"], _e = ["data-variant"], et = ["aria-selected", "aria-expanded
155
205
  outline: "bg-transparent border border-border p-1",
156
206
  line: "bg-transparent gap-6 rounded-none p-0 border-b border-border"
157
207
  }, t = r.wrap && !e ? "flex-wrap" : "";
158
- return [`${r.block || e ? "flex min-w-full w-max" : "inline-flex"} rounded-lg relative isolate ${t}`, n[r.variant]];
159
- }), X = o(() => r.variant === "surface" || r.variant === "primary" || r.variant === "secondary" ? "var(--color-secondary)" : r.variant === "danger" ? "color-mix(in srgb, var(--color-danger) 10%, transparent)" : r.variant === "success" ? "color-mix(in srgb, var(--color-success) 10%, transparent)" : "var(--color-background)"), Y = {
208
+ return [`${r.block || e ? "flex min-w-full w-max" : "inline-flex"} rounded-lg relative isolate ${t}`, a[r.variant], r.sortable ? "is-sortable" : ""];
209
+ }), ee = l(() => r.variant === "surface" || r.variant === "primary" || r.variant === "secondary" ? "var(--color-secondary)" : r.variant === "danger" ? "color-mix(in srgb, var(--color-danger) 10%, transparent)" : r.variant === "success" ? "color-mix(in srgb, var(--color-success) 10%, transparent)" : "var(--color-background)"), te = {
160
210
  sm: "text-xs px-2.5 py-1",
161
211
  md: "-text-fs-2 px-3 py-1",
162
212
  lg: "-text-fs-1 px-4 py-1"
163
- }, Re = o(() => {
164
- const e = r.variant === "line", n = e ? "relative z-10 flex items-center justify-center gap-2 font-medium transition-colors duration-50 ease-out cursor-pointer select-none outline-none pb-3 border-b-2 border-transparent hover:text-foreground shrink-0" : "relative z-10 flex items-center justify-center gap-2 font-medium transition-colors duration-50 ease-out cursor-pointer select-none rounded-md outline-none shrink-0", t = (r.block || r.wrap) && !e ? "flex-1" : "";
165
- return [n, t];
166
- }), Z = (e) => {
167
- const n = oe(e, r.modelValue), t = r.variant === "line";
168
- let a = "";
169
- if (n)
213
+ }, Ee = l(() => {
214
+ const e = r.variant === "line", a = e ? "relative z-10 flex items-center justify-center gap-2 font-medium transition-colors duration-50 ease-out cursor-pointer select-none outline-none pb-3 border-b-2 border-transparent hover:text-foreground shrink-0" : "relative z-10 flex items-center justify-center gap-2 font-medium transition-colors duration-50 ease-out cursor-pointer select-none rounded-md outline-none shrink-0", t = (r.block || r.wrap) && !e ? "flex-1" : "";
215
+ return [a, t];
216
+ }), re = (e) => {
217
+ const a = ue(e, r.modelValue), t = r.variant === "line";
218
+ let n = "";
219
+ if (a)
170
220
  if (t)
171
- a = r.wrap ? "text-primary !border-primary" : "text-primary";
221
+ n = r.wrap ? "text-primary !border-primary" : "text-primary";
172
222
  else
173
223
  switch (r.variant) {
174
224
  case "surface":
175
- a = r.wrap ? "text-foreground bg-[#ffff] dark:bg-[#0B0B0B] shadow-sm" : "text-foreground";
225
+ n = r.wrap ? "text-foreground bg-[#ffff] dark:bg-[#0B0B0B] shadow-sm" : "text-foreground";
176
226
  break;
177
227
  case "primary":
178
- a = r.wrap ? "text-primary-foreground bg-primary" : "text-primary-foreground";
228
+ n = r.wrap ? "text-primary-foreground bg-primary" : "text-primary-foreground";
179
229
  break;
180
230
  case "secondary":
181
- a = r.wrap ? "text-secondary bg-secondary-foreground" : "text-secondary";
231
+ n = r.wrap ? "text-secondary bg-secondary-foreground" : "text-secondary";
182
232
  break;
183
233
  case "danger":
184
- a = r.wrap ? "text-danger-fg bg-danger" : "text-danger-fg";
234
+ n = r.wrap ? "text-danger-fg bg-danger" : "text-danger-fg";
185
235
  break;
186
236
  case "success":
187
- a = r.wrap ? "text-success-fg bg-success" : "text-success-fg";
237
+ n = r.wrap ? "text-success-fg bg-success" : "text-success-fg";
188
238
  break;
189
239
  case "outline":
190
- a = r.wrap ? "text-accent-foreground bg-accent/50 ring-1 ring-border" : "text-accent-foreground";
240
+ n = r.wrap ? "text-accent-foreground bg-accent/50 ring-1 ring-border" : "text-accent-foreground";
191
241
  break;
192
242
  default:
193
- a = "text-foreground";
243
+ n = "text-foreground";
194
244
  }
195
245
  else
196
- a = t ? "text-muted-foreground" : "text-muted-foreground hover:text-foreground/80";
197
- const i = e.disabled ? "opacity-50 cursor-not-allowed" : "";
198
- return [Re.value, a, r?.tabClass, i].join(" ");
199
- }, Me = o(() => {
200
- const n = `absolute z-0 pointer-events-none ${D.value ? "transition-all duration-300 ease-[cubic-bezier(0.25,0.1,0.25,1)]" : ""}`;
201
- return r.variant === "line" ? `${n} !h-[2px] !top-auto bottom-0` : `${n} rounded-md shadow-sm`;
202
- }), Ae = () => ({
246
+ n = t ? "text-muted-foreground" : "text-muted-foreground hover:text-foreground/80";
247
+ const s = e.disabled ? "opacity-50 cursor-not-allowed" : "";
248
+ return [Ee.value, n, r?.tabClass, s].join(" ");
249
+ }, Le = l(() => {
250
+ const a = `absolute z-0 pointer-events-none ${j.value ? "transition-all duration-300 ease-[cubic-bezier(0.25,0.1,0.25,1)]" : ""}`;
251
+ return r.variant === "line" ? `${a} !h-[2px] !top-auto bottom-0` : `${a} rounded-md shadow-sm`;
252
+ }), Te = () => ({
203
253
  surface: "bg-[#ffff] dark:bg-[#0B0B0B]",
204
254
  primary: "bg-primary",
205
255
  secondary: "bg-secondary-foreground",
@@ -207,72 +257,74 @@ const Ze = ["dir"], _e = ["data-variant"], et = ["aria-selected", "aria-expanded
207
257
  success: "bg-success",
208
258
  outline: "bg-accent/50 ring-1 ring-border",
209
259
  line: "bg-primary"
210
- })[r.variant], _ = (e) => e.labelI18n ? Je(e.labelI18n) : e.label, Fe = (e) => e.to ? "router-link" : e.href ? "a" : "button", Oe = (e) => e.to ? { to: e.to } : e.href ? { href: e.href, target: "_blank", rel: "noopener noreferrer" } : { type: "button" }, Le = (e) => [
260
+ })[r.variant], ae = (e) => e.labelI18n ? rt(e.labelI18n) : e.label, Ie = (e) => e.to ? "router-link" : e.href ? "a" : "button", je = (e) => e.to ? { to: e.to } : e.href ? { href: e.href, target: "_blank", rel: "noopener noreferrer" } : { type: "button" }, Pe = (e) => [
211
261
  r.size === "sm" ? "w-3 h-3" : "w-3.5 h-3.5",
212
262
  "opacity-70 shrink-0 transition-transform duration-200",
213
263
  e ? "rotate-180" : ""
214
264
  ].join(" ");
215
- return (e, n) => (v(), M("div", {
265
+ return (e, a) => (h(), M("div", {
216
266
  ref_key: "rootRef",
217
- ref: q,
218
- class: l([he.value, "group"]),
219
- dir: C.value
267
+ ref: H,
268
+ class: i([Ce.value, "group"]),
269
+ dir: V.value
220
270
  }, [
221
- A(w(ce, {
222
- direction: Se.value,
223
- color: X.value,
271
+ D(C(me, {
272
+ direction: Oe.value,
273
+ color: ee.value,
224
274
  coverage: "100px",
225
275
  blur: "40px",
226
276
  easing: "smooth",
227
277
  tintOpacity: 1,
228
- class: l(["z-10 pointer-events-none", r.variant === "line" ? "" : "rounded-s-lg"])
278
+ class: i(["z-10 pointer-events-none", r.variant === "line" ? "" : "rounded-s-lg"])
229
279
  }, null, 8, ["direction", "color", "class"]), [
230
- [F, V.value]
280
+ [A, B.value]
231
281
  ]),
232
- A(u("div", {
233
- class: l(["start-0 ps-1", J.value])
282
+ D(g("div", {
283
+ class: i(["start-0 ps-1", _.value])
234
284
  }, [
235
- u("button", {
236
- onClick: me,
285
+ g("button", {
286
+ onClick: xe,
237
287
  class: "pointer-events-auto h-full px-1 flex items-center justify-center text-muted-foreground hover:text-foreground transition-colors focus:outline-none",
238
288
  "aria-label": "Scroll backward"
239
289
  }, [
240
- w(y, {
241
- icon: ze.value,
290
+ C(S, {
291
+ icon: De.value,
242
292
  class: "w-5 h-5"
243
293
  }, null, 8, ["icon"])
244
294
  ])
245
295
  ], 2), [
246
- [F, V.value]
296
+ [A, B.value]
247
297
  ]),
248
- u("div", {
298
+ g("div", {
249
299
  ref_key: "scrollRef",
250
- ref: d,
300
+ ref: p,
251
301
  class: "tabes-scroll flex-1 min-w-0 max-w-full overflow-x-auto scrollbar-hide scroll-smooth",
252
- onScroll: fe
302
+ onScroll: he
253
303
  }, [
254
- u("div", {
304
+ g("div", {
255
305
  ref_key: "containerRef",
256
306
  ref: k,
257
- class: l([$e.value, "tabes-container"]),
307
+ class: i([Fe.value, "tabes-container"]),
258
308
  role: "tablist",
259
309
  "data-variant": r.variant,
260
310
  "data-tabes": ""
261
311
  }, [
262
- s.modelValue !== void 0 && !s.wrap ? (v(), M("div", {
312
+ o.modelValue !== void 0 && !o.wrap ? (h(), M("div", {
263
313
  key: 0,
264
- class: l(["tabes-marker", [Me.value, Ae()]]),
265
- style: je(h.value)
266
- }, null, 6)) : j("", !0),
267
- (v(!0), M(ee, null, qe(s.options, (t) => (v(), M(ee, {
314
+ class: i(["tabes-marker", [Le.value, Te()]]),
315
+ style: He(w.value)
316
+ }, null, 6)) : N("", !0),
317
+ (h(!0), M(ne, null, We(m.value, (t) => (h(), M(ne, {
268
318
  key: t.value
269
319
  }, [
270
- te(se)(t) ? (v(), O(Ue, {
320
+ se(ce)(t) ? (h(), F(tt, {
271
321
  key: 0,
272
322
  options: t.menu,
273
- selected: s.modelValue,
323
+ selected: o.modelValue,
274
324
  disabled: t.disabled,
275
- direction: Ce(t),
325
+ "data-tabes-sortable": "",
326
+ "data-tabes-disabled": t.disabled || void 0,
327
+ direction: Re(t),
276
328
  position: t.dropdown?.position,
277
329
  offset: t.dropdown?.offset ?? [0, 8],
278
330
  searchable: t.dropdown?.searchable ?? !1,
@@ -286,98 +338,100 @@ const Ze = ["dir"], _e = ["data-variant"], et = ["aria-selected", "aria-expanded
286
338
  "show-selected-icon": !1,
287
339
  "toggle-selection": !1,
288
340
  selectable: !0,
289
- class: l(["tabes-menu", "inline-flex!", ke.value]),
290
- onOnSelect: (a) => xe(t, a),
291
- onOnOpen: () => we(t),
292
- onOnClose: () => ye(t)
341
+ class: i(["tabes-menu", "inline-flex!", $e.value]),
342
+ onOnSelect: (n) => Ve(t, n),
343
+ onOnOpen: () => ze(t),
344
+ onOnClose: () => Be(t)
293
345
  }, {
294
- trigger: re(({ isOpen: a }) => [
295
- u("button", {
346
+ trigger: oe(({ isOpen: n }) => [
347
+ g("button", {
296
348
  ref_for: !0,
297
- ref: (i) => K(i, t.value),
349
+ ref: (s) => Y(s, t.value),
298
350
  type: "button",
299
351
  role: "tab",
300
352
  "data-tabes-item": "",
301
353
  "data-tabes-menu-trigger": "",
302
- "aria-selected": te(oe)(t, s.modelValue),
354
+ "aria-selected": se(ue)(t, o.modelValue),
303
355
  "aria-haspopup": !0,
304
- "aria-expanded": a,
356
+ "aria-expanded": n,
305
357
  disabled: t.disabled,
306
- class: l([Z(t), Y[r.size], "w-full"])
358
+ class: i([re(t), te[r.size], "w-full"])
307
359
  }, [
308
- t.icon ? (v(), O(y, {
360
+ t.icon ? (h(), F(S, {
309
361
  key: 0,
310
362
  icon: t.icon,
311
- class: l(s.size === "sm" ? "w-3.5 h-3.5" : "w-4 h-4")
312
- }, null, 8, ["icon", "class"])) : j("", !0),
313
- u("span", {
314
- class: l(["whitespace-nowrap z-20 relative", s.textClass])
315
- }, ne(_(t)), 3),
316
- w(y, {
363
+ class: i(o.size === "sm" ? "w-3.5 h-3.5" : "w-4 h-4")
364
+ }, null, 8, ["icon", "class"])) : N("", !0),
365
+ g("span", {
366
+ class: i(["whitespace-nowrap z-20 relative", o.textClass])
367
+ }, le(ae(t)), 3),
368
+ C(S, {
317
369
  icon: "lucide:chevron-down",
318
- class: l(Le(a)),
370
+ class: i(Pe(n)),
319
371
  "aria-hidden": "true"
320
372
  }, null, 8, ["class"])
321
- ], 10, et)
373
+ ], 10, it)
322
374
  ]),
323
375
  _: 2
324
- }, 1032, ["options", "selected", "disabled", "direction", "position", "offset", "searchable", "close-on-select", "max-height", "min-width", "width", "menu-id", "teleport", "class", "onOnSelect", "onOnOpen", "onOnClose"])) : Pe([t, s.modelValue === t.value, s.size, s.variant, s.block, s.wrap, s.tabClass, s.textClass], () => (v(), O(He(Fe(t)), Ne({
376
+ }, 1032, ["options", "selected", "disabled", "data-tabes-disabled", "direction", "position", "offset", "searchable", "close-on-select", "max-height", "min-width", "width", "menu-id", "teleport", "class", "onOnSelect", "onOnOpen", "onOnClose"])) : Ge([t, o.modelValue === t.value, o.size, o.variant, o.block, o.wrap, o.tabClass, o.textClass, o.sortable], () => (h(), F(Qe(Ie(t)), Ue({
325
377
  key: 1,
326
378
  ref_for: !0,
327
- ref: (a) => K(a, t.value),
379
+ ref: (n) => Y(n, t.value),
328
380
  role: "tab",
329
381
  "data-tabes-item": "",
330
- "aria-selected": s.modelValue === t.value,
382
+ "data-tabes-sortable": "",
383
+ "data-tabes-disabled": t.disabled || void 0,
384
+ "aria-selected": o.modelValue === t.value,
331
385
  disabled: t.disabled,
332
- class: [Z(t), Y[r.size]]
333
- }, { ref_for: !0 }, Oe(t), {
334
- onClick: (a) => pe(t)
386
+ class: [re(t), te[r.size]]
387
+ }, { ref_for: !0 }, je(t), {
388
+ onClick: (n) => Se(t)
335
389
  }), {
336
- default: re(() => [
337
- t.icon ? (v(), O(y, {
390
+ default: oe(() => [
391
+ t.icon ? (h(), F(S, {
338
392
  key: 0,
339
393
  icon: t.icon,
340
- class: l(s.size === "sm" ? "w-3.5 h-3.5" : "w-4 h-4")
341
- }, null, 8, ["icon", "class"])) : j("", !0),
342
- u("span", {
343
- class: l(["whitespace-nowrap z-20 relative", s.textClass])
344
- }, ne(_(t)), 3)
394
+ class: i(o.size === "sm" ? "w-3.5 h-3.5" : "w-4 h-4")
395
+ }, null, 8, ["icon", "class"])) : N("", !0),
396
+ g("span", {
397
+ class: i(["whitespace-nowrap z-20 relative", o.textClass])
398
+ }, le(ae(t)), 3)
345
399
  ]),
346
400
  _: 2
347
- }, 1040, ["aria-selected", "disabled", "class", "onClick"])), n, 0)
401
+ }, 1040, ["data-tabes-disabled", "aria-selected", "disabled", "class", "onClick"])), a, 0)
348
402
  ], 64))), 128))
349
- ], 10, _e)
403
+ ], 10, lt)
350
404
  ], 544),
351
- A(w(ce, {
352
- direction: Ve.value,
353
- color: X.value,
405
+ D(C(me, {
406
+ direction: Me.value,
407
+ color: ee.value,
354
408
  coverage: "100px",
355
409
  blur: "40",
356
410
  easing: "smooth",
357
411
  tintOpacity: 1,
358
- class: l(["z-10 pointer-events-none", r.variant === "line" ? "" : "rounded-e-lg"])
412
+ class: i(["z-10 pointer-events-none", r.variant === "line" ? "" : "rounded-e-lg"])
359
413
  }, null, 8, ["direction", "color", "class"]), [
360
- [F, z.value]
414
+ [A, $.value]
361
415
  ]),
362
- A(u("div", {
363
- class: l(["end-0 pe-1", J.value])
416
+ D(g("div", {
417
+ class: i(["end-0 pe-1", _.value])
364
418
  }, [
365
- u("button", {
366
- onClick: ve,
419
+ g("button", {
420
+ onClick: ye,
367
421
  class: "pointer-events-auto h-full px-1 flex items-center justify-center text-muted-foreground hover:text-foreground transition-colors focus:outline-none",
368
422
  "aria-label": "Scroll forward"
369
423
  }, [
370
- w(y, {
371
- icon: Be.value,
424
+ C(S, {
425
+ icon: Ae.value,
372
426
  class: "w-5 h-5"
373
427
  }, null, 8, ["icon"])
374
428
  ])
375
429
  ], 2), [
376
- [F, z.value]
430
+ [A, $.value]
377
431
  ])
378
- ], 10, Ze));
432
+ ], 10, ot));
379
433
  }
380
434
  });
381
435
  export {
382
- ut as default
436
+ yt as default
383
437
  };
@@ -12,6 +12,13 @@ export declare function isTabActive(option: TabesOption, modelValue: string | nu
12
12
  * For menu tabs, returns the parent tab's value when a child is selected.
13
13
  */
14
14
  export declare function getActiveMarkerKey(options: TabesOption[], modelValue: string | number): string | number | undefined;
15
+ /**
16
+ * Stable, order-independent signature for a set of tabs (djb2 over the sorted
17
+ * option values). Used to derive a default localStorage slot for persisted
18
+ * ordering when no explicit `storageKey` is supplied — so a given tab set maps
19
+ * to one saved order, and a membership change gets a fresh slot.
20
+ */
21
+ export declare function hashTabesValues(options: TabesOption[]): string;
15
22
  /** Start/end (inline-edge) scroll overflow of a horizontal tab strip. */
16
23
  export interface TabesScrollOverflow {
17
24
  /** More content is hidden past the inline-start edge. */
@@ -1,49 +1,57 @@
1
- function u(r) {
1
+ function c(r) {
2
2
  return Array.isArray(r.menu) && r.menu.length > 0;
3
3
  }
4
- function f(r) {
4
+ function i(r) {
5
5
  return r.value !== void 0 && r.value !== null ? r.value : r.label;
6
6
  }
7
- function a(r, n) {
7
+ function u(r, t) {
8
8
  if (!r?.length) return !1;
9
- for (const t of r)
10
- if (f(t) === n || t.children?.length && a(t.children, n)) return !0;
9
+ for (const n of r)
10
+ if (i(n) === t || n.children?.length && u(n.children, t)) return !0;
11
11
  return !1;
12
12
  }
13
- function i(r, n) {
14
- return u(r) ? r.value === n || a(r.menu, n) : r.value === n;
13
+ function f(r, t) {
14
+ return c(r) ? r.value === t || u(r.menu, t) : r.value === t;
15
15
  }
16
- function o(r, n) {
17
- for (const t of r)
18
- if (i(t, n)) return t.value;
16
+ function o(r, t) {
17
+ for (const n of r)
18
+ if (f(n, t)) return n.value;
19
+ }
20
+ function h(r) {
21
+ const t = r.map((e) => String(e.value)).sort().join("|");
22
+ let n = 5381;
23
+ for (let e = 0; e < t.length; e++)
24
+ n = (n << 5) + n + t.charCodeAt(e) | 0;
25
+ return (n >>> 0).toString(36);
19
26
  }
20
27
  function s(r) {
21
28
  return typeof window > "u" ? !1 : window.getComputedStyle(r).direction === "rtl";
22
29
  }
23
- function S(r, n) {
30
+ function S(r, t) {
24
31
  if (!r) return { canScrollStart: !1, canScrollEnd: !1 };
25
- if (n && r.querySelector(n) === null)
32
+ if (t && r.querySelector(t) === null)
26
33
  return { canScrollStart: !1, canScrollEnd: !1 };
27
- const { scrollLeft: t, scrollWidth: e, clientWidth: l } = r;
34
+ const { scrollLeft: n, scrollWidth: e, clientWidth: l } = r;
28
35
  if (e - l <= 1)
29
36
  return { canScrollStart: !1, canScrollEnd: !1 };
30
- const c = Math.abs(t);
37
+ const a = Math.abs(n);
31
38
  return {
32
- canScrollStart: c > 1,
33
- canScrollEnd: Math.ceil(c + l) < e - 1
39
+ canScrollStart: a > 1,
40
+ canScrollEnd: Math.ceil(a + l) < e - 1
34
41
  };
35
42
  }
36
- function d(r, n, t) {
43
+ function d(r, t, n) {
37
44
  if (!r) return;
38
- const e = n === "start" ? -1 : 1, l = (s(r) ? -e : e) * Math.abs(t);
45
+ const e = t === "start" ? -1 : 1, l = (s(r) ? -e : e) * Math.abs(n);
39
46
  r.scrollBy({ left: l, behavior: "smooth" });
40
47
  }
41
48
  export {
42
49
  o as getActiveMarkerKey,
43
- f as getMenuOptionValue,
50
+ i as getMenuOptionValue,
44
51
  S as getTabesScrollOverflow,
45
- u as isMenuTab,
46
- i as isTabActive,
47
- a as menuContainsValue,
52
+ h as hashTabesValues,
53
+ c as isMenuTab,
54
+ f as isTabActive,
55
+ u as menuContainsValue,
48
56
  d as scrollTabesStrip
49
57
  };
@@ -44,3 +44,10 @@ export type TabesMenuSelectPayload = {
44
44
  option?: IDropdownOption;
45
45
  tab: TabesOption;
46
46
  };
47
+ /** Emitted after the user drags tabs into a new order (`sortable`). */
48
+ export type TabesReorderPayload = {
49
+ /** Tabs in their new order. */
50
+ options: TabesOption[];
51
+ /** New order as a list of option values (the shape persisted to storage). */
52
+ order: (string | number)[];
53
+ };
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.41",
6
+ "version": "1.5.0",
7
7
  "type": "module",
8
8
  "main": "index.js",
9
9
  "module": "index.js",
@@ -18,9 +18,10 @@
18
18
  "postbuild": "node scripts/bundle-css.js",
19
19
  "preview": "vite preview",
20
20
  "prepare:dist": "npm run build && cp package.json README.md dist/",
21
- "release:patch": "npm version patch && npm run prepare:dist && cd dist && npm publish",
22
- "release:minor": "npm version minor && npm run prepare:dist && cd dist && npm publish",
23
- "release:major": "npm version major && npm run prepare:dist && cd dist && npm publish",
21
+ "release:patch": "node scripts/release.js patch",
22
+ "release:minor": "node scripts/release.js minor",
23
+ "release:major": "node scripts/release.js major",
24
+ "release": "node scripts/release.js",
24
25
  "publish:dist": "npm run prepare:dist && cd dist && npm publish"
25
26
  },
26
27
  "exports": {
package/style.css CHANGED
@@ -1896,5 +1896,5 @@ html {
1896
1896
  }
1897
1897
 
1898
1898
  /* --- Vite Generated CSS --- */
1899
- .v-btn-horizontal[data-v-dc9b3674]{flex-direction:row}.chip.scrollbar-hide,.scrollbar-hide{-ms-overflow-style:none;scrollbar-width:none;-webkit-overflow-scrolling:touch}.chip.scrollbar-hide::-webkit-scrollbar,.scrollbar-hide::-webkit-scrollbar{display:none!important;width:0!important;height:0!important;background:transparent!important}input[data-v-3e1eac3e]::-webkit-outer-spin-button,input[data-v-3e1eac3e]::-webkit-inner-spin-button{-webkit-appearance:none;appearance:none;margin:0}input[type=number][data-v-3e1eac3e]{-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}}.badge.scrollbar-hide,.scrollbar-hide{-ms-overflow-style:none;scrollbar-width:none;-webkit-overflow-scrolling:touch}.badge.scrollbar-hide::-webkit-scrollbar,.scrollbar-hide::-webkit-scrollbar{display:none!important;width:0!important;height:0!important;background:transparent!important}[data-v-a8f85730] .date-picker-content.dates{min-height:245px}.IroBox{border-radius:8px!important}.accordion-enter-active[data-v-d1f2e7f8],.accordion-leave-active[data-v-d1f2e7f8]{transition:height .3s ease-in-out;will-change:height}.content-wrapper[data-v-d1f2e7f8],.custom-fields-accordion[data-v-52660f5b],.custom-fields-table[data-v-63b24d19]{will-change:transform;contain:layout style}.custom-fields-table[data-v-63b24d19]:not(.is-stacked) .form-field-item{margin-bottom:0!important;height:100%}.custom-fields-table[data-v-63b24d19]:not(.is-stacked) input,.custom-fields-table[data-v-63b24d19]:not(.is-stacked) textarea{padding-left:1em;padding-right:.5em}.custom-fields-table[data-v-63b24d19]:not(.is-stacked) textarea{resize:none}.custom-fields-table[data-v-63b24d19]:not(.is-stacked) input,.custom-fields-table[data-v-63b24d19]:not(.is-stacked) textarea,.custom-fields-table[data-v-63b24d19]:not(.is-stacked) select,.custom-fields-table[data-v-63b24d19]:not(.is-stacked) .input-wrapper,.custom-fields-table[data-v-63b24d19]:not(.is-stacked) .tooltip-trigger button,.custom-fields-table[data-v-63b24d19]:not(.is-stacked) .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-63b24d19]:not(.is-stacked) input:focus,.custom-fields-table[data-v-63b24d19]:not(.is-stacked) textarea:focus,.custom-fields-table[data-v-63b24d19]:not(.is-stacked) select:focus,.custom-fields-table[data-v-63b24d19]:not(.is-stacked) .input-wrapper:focus-within,.custom-fields-table[data-v-63b24d19]:not(.is-stacked) .tooltip-trigger button:focus,.custom-fields-table[data-v-63b24d19]:not(.is-stacked) .tooltip-trigger>div:focus,.custom-fields-table[data-v-63b24d19]:not(.is-stacked) .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-63b24d19]:not(.is-stacked) .w-full{width:100%;height:100%}.custom-fields-table[data-v-63b24d19]:not(.is-stacked) .vl-file-picker{height:100%!important;min-height:40px;padding:0;min-width:0!important}.custom-fields-table[data-v-63b24d19]:not(.is-stacked) .vl-file-picker--input>.relative{height:100%;min-width:0}.custom-fields-table[data-v-63b24d19]:not(.is-stacked) .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-63b24d19]:not(.is-stacked) .vl-file-picker--input [role=button]:focus,.custom-fields-table[data-v-63b24d19]:not(.is-stacked) .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-63b24d19]:not(.is-stacked) .vl-file-picker__dropzone{min-height:96px;padding:1rem;border-radius:.5rem!important}.custom-fields-table[data-v-63b24d19]:not(.is-stacked) .vl-file-picker__file{min-height:72px;border-radius:.5rem!important;background:hsl(var(--background))!important}.custom-fields-table[data-v-63b24d19]:not(.is-stacked) .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-63b24d19]:not(.is-stacked) .vl-file-picker__file input:hover{border-bottom-color:hsl(var(--border))!important}.custom-fields-table[data-v-63b24d19]:not(.is-stacked) .vl-file-picker__file input:focus{background-color:transparent!important;border-bottom-color:hsl(var(--primary))!important;box-shadow:none!important}.custom-fields-table.is-stacked[data-v-63b24d19] .vl-file-picker{min-width:0!important;width:100%}.list-enter-active[data-v-63b24d19]{transition:all .15s cubic-bezier(.16,1,.3,1)}.list-enter-from[data-v-63b24d19]{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-eef10419]{display:flex;flex-direction:column;min-width:0}.form-field-item[data-v-eef10419]:has([role=checkbox]){flex-direction:row;align-items:center;justify-content:flex-start}.status-chip.scrollbar-hide,.scrollbar-hide{-ms-overflow-style:none;scrollbar-width:none;-webkit-overflow-scrolling:touch}.status-chip.scrollbar-hide::-webkit-scrollbar,.scrollbar-hide::-webkit-scrollbar{display:none!important;width:0!important;height:0!important;background:transparent!important}.form-container[data-v-91b9b05d]{width:100%;will-change:transform;contain:layout style}[data-tabes][data-v-7f8e99f2]:not(.inline-flex):not([class*=gap-6])>:where(button,a,[role=tab],.tabes-menu){flex:1 0 0%;min-width:max-content}[data-v-7f8e99f2] .tabes-menu{display:inline-flex;vertical-align:middle;max-width:100%}.tabes-scroll[data-v-7f8e99f2],.tabes-marker[data-v-7f8e99f2]{will-change:transform;contain:layout style}.scrollbar-hide[data-v-7f8e99f2]{-ms-overflow-style:none;scrollbar-width:none;-webkit-overflow-scrolling:touch}.scrollbar-hide[data-v-7f8e99f2]::-webkit-scrollbar{display:none!important;width:0!important;height:0!important;background:transparent!important}.vlite-line-chart[data-v-044e962d]{position:relative}.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-d505482b]{will-change:transform;contain:layout style}.kanban-board--disabled[data-v-d505482b]{opacity:.75;background-color:color-mix(in srgb,var(--color-card) 85%,var(--color-muted) 15%)}.kanban-lock-badge[data-v-d505482b]{font-size:.75rem;line-height:1;-webkit-user-select:none;user-select:none}.scrollable-container[data-v-2dd0633e]{will-change:transform;contain:layout style}.v-sidepanel-overlay[data-v-10bfdf18]{background-color:#00000069}.slide-right-enter-active[data-v-10bfdf18],.slide-left-enter-active[data-v-10bfdf18]{transition:opacity 80ms ease-out}.slide-right-leave-active[data-v-10bfdf18],.slide-left-leave-active[data-v-10bfdf18]{transition:opacity .12s ease-in}.slide-right-enter-from[data-v-10bfdf18],.slide-right-leave-to[data-v-10bfdf18],.slide-left-enter-from[data-v-10bfdf18],.slide-left-leave-to[data-v-10bfdf18]{opacity:0}.sidepanel-body[data-v-10bfdf18]{will-change:transform,opacity;contain:layout style}.navbar-tabs-edge--start[data-v-b4a2c569]{inset-inline-start:0}.navbar-tabs-edge--end[data-v-b4a2c569]{inset-inline-end:0}.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}@media(min-width:768px){.pagination[data-v-6c562c38]{flex-direction:row}}.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-06de722e]{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}.stacked-cell-value[data-v-af551256],.stacked-cell-value[data-v-af551256] *{white-space:normal!important;overflow:visible!important;text-overflow:unset!important;overflow-wrap:anywhere;word-break:break-word;max-width:100%}.sidebar-manu-item .tooltip-trigger{width:100%!important}.sidebar-menu-tooltip{margin-inline-start: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;inset-inline: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;inset-inline:0}.sidebar-drilldown--rtl .drill-forward-enter-from{transform:translate(-40%)}.sidebar-drilldown--rtl .drill-forward-leave-to,.sidebar-drilldown--rtl .drill-backward-enter-from{transform:translate(40%)}.sidebar-drilldown--rtl .drill-backward-leave-to{transform:translate(-40%)}.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}.button-group[data-v-ae9bcc76]:not(.vertical-group){flex-direction:row}.attached-group[data-v-ae9bcc76] button{position:relative}.attached-group[data-v-ae9bcc76] button:focus-visible,.attached-group[data-v-ae9bcc76] button:hover{z-index:10}.attached-group[data-v-ae9bcc76]:not(.vertical-group) button:not(:first-child){margin-inline-start:-1px}.attached-group[data-v-ae9bcc76]:not(.vertical-group) button:first-child{border-start-end-radius:0!important;border-end-end-radius:0!important}.attached-group[data-v-ae9bcc76]:not(.vertical-group) button:not(:first-child):not(:last-child){border-radius:0!important}.attached-group[data-v-ae9bcc76]:not(.vertical-group) button:last-child{border-start-start-radius:0!important;border-end-start-radius:0!important}.vertical-group[data-v-ae9bcc76] button:not(:first-child){margin-block-start:-1px}.vertical-group[data-v-ae9bcc76] button:first-child{border-end-start-radius:0!important;border-end-end-radius:0!important}.vertical-group[data-v-ae9bcc76] button:not(:first-child):not(:last-child){border-radius:0!important}.vertical-group[data-v-ae9bcc76] button:last-child{border-start-start-radius:0!important;border-start-end-radius:0!important}.attached-group[data-v-ae9bcc76]: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-ae9bcc76] button:not(:first-child):not(.border):before{content:"";position:absolute;inset-inline:0;top: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-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-94a48eeb]{font-family:inherit}.vlite-gantt-toolbar[data-v-94a48eeb]{display:flex;justify-content:flex-end;align-items:center;margin-bottom:8px;gap:6px}.vlite-gantt-legend-blocked[data-v-94a48eeb]{display:inline-flex;align-items:center;gap:4px;margin-right:auto;padding:3px 8px;border-radius:6px;font-size:10px;font-weight:600;color:var(--color-danger);background:color-mix(in srgb,var(--color-danger) 10%,transparent);border:1px dashed color-mix(in srgb,var(--color-danger) 45%,transparent)}.vlite-gantt-tooltip-blocked[data-v-94a48eeb]{display:flex;align-items:center;gap:4px;font-size:10px;font-weight:600;color:var(--color-danger)}.vlite-gantt-btn[data-v-94a48eeb]{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-94a48eeb]:hover:not(:disabled){background:var(--color-accent);color:var(--color-foreground)}.vlite-gantt-btn[data-v-94a48eeb]:disabled{opacity:.5;cursor:not-allowed}.vlite-gantt-zoom-controls[data-v-94a48eeb]{display:flex;gap:6px}.vlite-gantt-wrapper[data-v-94a48eeb]{display:flex;border:1px solid var(--color-border);border-radius:var(--radius-lg);overflow:hidden;background:var(--color-background)}.vlite-gantt-sidebar[data-v-94a48eeb]{flex-shrink:0;border-right:1px solid var(--color-border);background:var(--color-background);z-index:2}.vlite-gantt-sidebar-header[data-v-94a48eeb]{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-94a48eeb]{overflow-y:hidden;overflow-x:hidden}.vlite-gantt-sidebar-row[data-v-94a48eeb]{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-94a48eeb]{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-94a48eeb]:hover{opacity:.8}.vlite-gantt-chevron[data-v-94a48eeb]{transition:transform .2s ease;color:var(--color-muted-foreground);flex-shrink:0}.vlite-gantt-chevron-collapsed[data-v-94a48eeb]{transform:rotate(-90deg)}.vlite-gantt-group-count[data-v-94a48eeb]{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-94a48eeb]{display:flex;align-items:center;gap:8px;cursor:pointer;padding:0 4px;width:100%;transition:all .15s}.vlite-gantt-task-name[data-v-94a48eeb]:hover{opacity:.75}.vlite-gantt-task-name-grouped[data-v-94a48eeb]{padding-left:20px}.vlite-gantt-task-name-dragging[data-v-94a48eeb]{background:color-mix(in oklab,var(--color-primary) 8%,transparent);border-radius:4px}.vlite-gantt-task-dot[data-v-94a48eeb]{width:7px;height:7px;border-radius:2px;flex-shrink:0}.vlite-gantt-progress-badge[data-v-94a48eeb]{font-size:10px;font-weight:700;color:var(--color-muted-foreground);margin-left:auto;flex-shrink:0}.vlite-gantt-timeline[data-v-94a48eeb]{flex:1;overflow-x:auto;overflow-y:auto;position:relative}.vlite-gantt-timeline-header[data-v-94a48eeb]{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-94a48eeb]{position:relative}.vlite-gantt-bar-dragging[data-v-94a48eeb]{filter:drop-shadow(0 2px 8px rgba(0,0,0,.15));z-index:10}.vlite-gantt-dep-group[data-v-94a48eeb]{transition:opacity .15s,filter .15s}.vlite-gantt-dep-group[data-v-94a48eeb]:hover{opacity:1!important}.vlite-gantt-dep-selectable .vlite-gantt-dep-hit[data-v-94a48eeb]{cursor:pointer}.vlite-gantt-dep-hit[data-v-94a48eeb]{outline:none}.vlite-gantt-dep-line[data-v-94a48eeb],.vlite-gantt-dep-arrowhead[data-v-94a48eeb]{transition:stroke .15s,fill .15s,stroke-opacity .15s,fill-opacity .15s}.vlite-gantt-dep-hovered .vlite-gantt-dep-line[data-v-94a48eeb]{stroke:var(--color-foreground);stroke-opacity:.9}.vlite-gantt-dep-hovered .vlite-gantt-dep-arrowhead[data-v-94a48eeb]{fill:var(--color-foreground);fill-opacity:.9}.vlite-gantt-dep-delete[data-v-94a48eeb]{cursor:pointer;outline:none}.vlite-gantt-dep-delete:focus-visible circle[data-v-94a48eeb]:nth-of-type(2){stroke:var(--color-foreground);stroke-width:2}.vlite-gantt-linking[data-v-94a48eeb]{cursor:crosshair}.vlite-gantt-dep-connector[data-v-94a48eeb]{cursor:grab;outline:none}.vlite-gantt-dep-connector:focus-visible .vlite-gantt-dep-connector-disc[data-v-94a48eeb]{stroke:var(--color-primary);stroke-width:2.5;filter:drop-shadow(0 0 0 2px color-mix(in oklab,var(--color-primary) 35%,transparent))}.vlite-gantt-dep-connector-disc[data-v-94a48eeb]{transition:stroke .15s,fill .15s}.vlite-gantt-link-source[data-v-94a48eeb]{filter:drop-shadow(0 0 0 1px color-mix(in oklab,var(--color-primary) 40%,transparent))}.vlite-gantt-link-candidate[data-v-94a48eeb]{opacity:.92}.vlite-gantt-link-target-valid[data-v-94a48eeb]{filter:drop-shadow(0 0 6px color-mix(in oklab,var(--color-success, #16a34a) 55%,transparent))}.vlite-gantt-link-target-invalid[data-v-94a48eeb]{filter:drop-shadow(0 0 6px color-mix(in oklab,var(--color-danger) 55%,transparent))}.vlite-gantt-link-preview[data-v-94a48eeb]{z-index:20}.sr-only[data-v-94a48eeb]{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.vlite-gantt-tooltip-progress-track[data-v-94a48eeb]{width:60px;height:4px;border-radius:2px;background:var(--color-muted);overflow:hidden}.vlite-gantt-tooltip-progress-fill[data-v-94a48eeb]{height:100%;border-radius:2px;transition:width .3s ease}.vlite-gantt-timeline[data-v-94a48eeb]::-webkit-scrollbar{height:6px;width:6px}.vlite-gantt-timeline[data-v-94a48eeb]::-webkit-scrollbar-track{background:transparent}.vlite-gantt-timeline[data-v-94a48eeb]::-webkit-scrollbar-thumb{background:var(--color-scrollbar);border-radius:3px}.vlite-gantt-timeline[data-v-94a48eeb]::-webkit-scrollbar-thumb:hover{background:var(--color-scrollbar-hover)}.vlite-gantt-sidebar-body[data-v-94a48eeb]::-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}.vlite-scale-generator-frame[data-v-eec3ef03]{contain:layout style;will-change:transform}.vlite-scale-generator-content[data-v-eec3ef03]{will-change:transform;contain:layout style}.vlite-pan-zoom-viewport[data-v-9dc36c93]{position:relative;width:100%;height:100%;overflow:hidden;overscroll-behavior:none;will-change:transform;contain:layout style}.vlite-pan-zoom-viewport[data-v-9dc36c93]:focus-visible{outline:2px solid var(--color-primary, currentColor);outline-offset:-2px}.vlite-pan-zoom-viewport-content[data-v-9dc36c93]{position:absolute;top:0;left:0;transform-origin:top left;will-change:transform;contain:layout style;backface-visibility:hidden}.vlite-google-map[data-v-0cfbb6c9]{position:relative;min-height:1px;overflow:hidden;border-radius:var(--radius, .5rem);background:var(--color-muted, #f3f4f6);contain:layout style}.vlite-google-map__canvas[data-v-0cfbb6c9]{width:100%;height:100%;outline:none}.vlite-google-map__canvas[data-v-0cfbb6c9]:focus-visible{box-shadow:inset 0 0 0 3px var(--color-primary, #2563eb)}.vlite-google-map__state[data-v-0cfbb6c9]{position:absolute;inset:0;display:grid;place-items:center;padding:1rem;color:var(--color-muted-foreground, #4b5563);background:var(--color-muted, #f3f4f6);text-align:center}.vlite-google-map__state--error[data-v-0cfbb6c9]{color:var(--color-danger, #b91c1c)}.vlite-google-map__notice[data-v-0cfbb6c9]{position:absolute;right:.5rem;bottom:.5rem;margin:0;padding:.35rem .5rem;border-radius:var(--radius-sm, .25rem);color:var(--color-foreground, #111827);background:var(--color-background, #fff);font-size:.75rem}.toast-item[data-v-b3a7f1a6]{will-change:transform,opacity;contain:layout style}.first-toast-enter-active[data-v-b3a7f1a6]{animation:first-toast-in-b3a7f1a6 .45s cubic-bezier(.23,1,.32,1) forwards}.first-toast-leave-active[data-v-b3a7f1a6]{transition:all .25s ease-in}.first-toast-leave-to[data-v-b3a7f1a6]{opacity:0;transform:scale(.98)}@keyframes first-toast-in-b3a7f1a6{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-b3a7f1a6],.stack-toast-leave-active[data-v-b3a7f1a6]{transition:all .3s cubic-bezier(.16,1,.3,1)}.stack-toast-enter-from[data-v-b3a7f1a6]{opacity:0;transform:scale(.95) translateY(10px)}.stack-toast-leave-to[data-v-b3a7f1a6]{opacity:0;transform:scale(.95)}.stack-toast-move[data-v-b3a7f1a6]{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}
1899
+ .v-btn-horizontal[data-v-dc9b3674]{flex-direction:row}.chip.scrollbar-hide,.scrollbar-hide{-ms-overflow-style:none;scrollbar-width:none;-webkit-overflow-scrolling:touch}.chip.scrollbar-hide::-webkit-scrollbar,.scrollbar-hide::-webkit-scrollbar{display:none!important;width:0!important;height:0!important;background:transparent!important}input[data-v-3e1eac3e]::-webkit-outer-spin-button,input[data-v-3e1eac3e]::-webkit-inner-spin-button{-webkit-appearance:none;appearance:none;margin:0}input[type=number][data-v-3e1eac3e]{-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}}.badge.scrollbar-hide,.scrollbar-hide{-ms-overflow-style:none;scrollbar-width:none;-webkit-overflow-scrolling:touch}.badge.scrollbar-hide::-webkit-scrollbar,.scrollbar-hide::-webkit-scrollbar{display:none!important;width:0!important;height:0!important;background:transparent!important}[data-v-a8f85730] .date-picker-content.dates{min-height:245px}.IroBox{border-radius:8px!important}.accordion-enter-active[data-v-d1f2e7f8],.accordion-leave-active[data-v-d1f2e7f8]{transition:height .3s ease-in-out;will-change:height}.content-wrapper[data-v-d1f2e7f8],.custom-fields-accordion[data-v-52660f5b],.custom-fields-table[data-v-63b24d19]{will-change:transform;contain:layout style}.custom-fields-table[data-v-63b24d19]:not(.is-stacked) .form-field-item{margin-bottom:0!important;height:100%}.custom-fields-table[data-v-63b24d19]:not(.is-stacked) input,.custom-fields-table[data-v-63b24d19]:not(.is-stacked) textarea{padding-left:1em;padding-right:.5em}.custom-fields-table[data-v-63b24d19]:not(.is-stacked) textarea{resize:none}.custom-fields-table[data-v-63b24d19]:not(.is-stacked) input,.custom-fields-table[data-v-63b24d19]:not(.is-stacked) textarea,.custom-fields-table[data-v-63b24d19]:not(.is-stacked) select,.custom-fields-table[data-v-63b24d19]:not(.is-stacked) .input-wrapper,.custom-fields-table[data-v-63b24d19]:not(.is-stacked) .tooltip-trigger button,.custom-fields-table[data-v-63b24d19]:not(.is-stacked) .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-63b24d19]:not(.is-stacked) input:focus,.custom-fields-table[data-v-63b24d19]:not(.is-stacked) textarea:focus,.custom-fields-table[data-v-63b24d19]:not(.is-stacked) select:focus,.custom-fields-table[data-v-63b24d19]:not(.is-stacked) .input-wrapper:focus-within,.custom-fields-table[data-v-63b24d19]:not(.is-stacked) .tooltip-trigger button:focus,.custom-fields-table[data-v-63b24d19]:not(.is-stacked) .tooltip-trigger>div:focus,.custom-fields-table[data-v-63b24d19]:not(.is-stacked) .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-63b24d19]:not(.is-stacked) .w-full{width:100%;height:100%}.custom-fields-table[data-v-63b24d19]:not(.is-stacked) .vl-file-picker{height:100%!important;min-height:40px;padding:0;min-width:0!important}.custom-fields-table[data-v-63b24d19]:not(.is-stacked) .vl-file-picker--input>.relative{height:100%;min-width:0}.custom-fields-table[data-v-63b24d19]:not(.is-stacked) .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-63b24d19]:not(.is-stacked) .vl-file-picker--input [role=button]:focus,.custom-fields-table[data-v-63b24d19]:not(.is-stacked) .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-63b24d19]:not(.is-stacked) .vl-file-picker__dropzone{min-height:96px;padding:1rem;border-radius:.5rem!important}.custom-fields-table[data-v-63b24d19]:not(.is-stacked) .vl-file-picker__file{min-height:72px;border-radius:.5rem!important;background:hsl(var(--background))!important}.custom-fields-table[data-v-63b24d19]:not(.is-stacked) .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-63b24d19]:not(.is-stacked) .vl-file-picker__file input:hover{border-bottom-color:hsl(var(--border))!important}.custom-fields-table[data-v-63b24d19]:not(.is-stacked) .vl-file-picker__file input:focus{background-color:transparent!important;border-bottom-color:hsl(var(--primary))!important;box-shadow:none!important}.custom-fields-table.is-stacked[data-v-63b24d19] .vl-file-picker{min-width:0!important;width:100%}.list-enter-active[data-v-63b24d19]{transition:all .15s cubic-bezier(.16,1,.3,1)}.list-enter-from[data-v-63b24d19]{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-eef10419]{display:flex;flex-direction:column;min-width:0}.form-field-item[data-v-eef10419]:has([role=checkbox]){flex-direction:row;align-items:center;justify-content:flex-start}.status-chip.scrollbar-hide,.scrollbar-hide{-ms-overflow-style:none;scrollbar-width:none;-webkit-overflow-scrolling:touch}.status-chip.scrollbar-hide::-webkit-scrollbar,.scrollbar-hide::-webkit-scrollbar{display:none!important;width:0!important;height:0!important;background:transparent!important}.form-container[data-v-91b9b05d]{width:100%;will-change:transform;contain:layout style}[data-tabes][data-v-de4ab2fa]:not(.inline-flex):not([class*=gap-6])>:where(button,a,[role=tab],.tabes-menu){flex:1 0 0%;min-width:max-content}[data-v-de4ab2fa] .tabes-menu{display:inline-flex;vertical-align:middle;max-width:100%}.tabes-scroll[data-v-de4ab2fa],.tabes-marker[data-v-de4ab2fa]{will-change:transform;contain:layout style}.scrollbar-hide[data-v-de4ab2fa]{-ms-overflow-style:none;scrollbar-width:none;-webkit-overflow-scrolling:touch}.scrollbar-hide[data-v-de4ab2fa]::-webkit-scrollbar{display:none!important;width:0!important;height:0!important;background:transparent!important}.tabes-container.is-sortable [data-tabes-item][data-v-de4ab2fa],.tabes-container.is-sortable[data-v-de4ab2fa] .tabes-menu{cursor:grab}.tabes-container.is-sortable [data-tabes-item][data-v-de4ab2fa]:active,.tabes-container.is-sortable[data-v-de4ab2fa] .tabes-menu:active{cursor:grabbing}.tabes-container.is-sortable [data-tabes-disabled][data-v-de4ab2fa]{cursor:default}.tabes-drag-ghost[data-v-de4ab2fa]{opacity:.5}.tabes-drag-chosen[data-v-de4ab2fa]{cursor:grabbing}.vlite-line-chart[data-v-044e962d]{position:relative}.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-d505482b]{will-change:transform;contain:layout style}.kanban-board--disabled[data-v-d505482b]{opacity:.75;background-color:color-mix(in srgb,var(--color-card) 85%,var(--color-muted) 15%)}.kanban-lock-badge[data-v-d505482b]{font-size:.75rem;line-height:1;-webkit-user-select:none;user-select:none}.scrollable-container[data-v-2dd0633e]{will-change:transform;contain:layout style}.v-sidepanel-overlay[data-v-10bfdf18]{background-color:#00000069}.slide-right-enter-active[data-v-10bfdf18],.slide-left-enter-active[data-v-10bfdf18]{transition:opacity 80ms ease-out}.slide-right-leave-active[data-v-10bfdf18],.slide-left-leave-active[data-v-10bfdf18]{transition:opacity .12s ease-in}.slide-right-enter-from[data-v-10bfdf18],.slide-right-leave-to[data-v-10bfdf18],.slide-left-enter-from[data-v-10bfdf18],.slide-left-leave-to[data-v-10bfdf18]{opacity:0}.sidepanel-body[data-v-10bfdf18]{will-change:transform,opacity;contain:layout style}.navbar-tabs-edge--start[data-v-b4a2c569]{inset-inline-start:0}.navbar-tabs-edge--end[data-v-b4a2c569]{inset-inline-end:0}.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}@media(min-width:768px){.pagination[data-v-6c562c38]{flex-direction:row}}.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-06de722e]{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}.stacked-cell-value[data-v-af551256],.stacked-cell-value[data-v-af551256] *{white-space:normal!important;overflow:visible!important;text-overflow:unset!important;overflow-wrap:anywhere;word-break:break-word;max-width:100%}.sidebar-manu-item .tooltip-trigger{width:100%!important}.sidebar-menu-tooltip{margin-inline-start: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;inset-inline: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;inset-inline:0}.sidebar-drilldown--rtl .drill-forward-enter-from{transform:translate(-40%)}.sidebar-drilldown--rtl .drill-forward-leave-to,.sidebar-drilldown--rtl .drill-backward-enter-from{transform:translate(40%)}.sidebar-drilldown--rtl .drill-backward-leave-to{transform:translate(-40%)}.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}.button-group[data-v-ae9bcc76]:not(.vertical-group){flex-direction:row}.attached-group[data-v-ae9bcc76] button{position:relative}.attached-group[data-v-ae9bcc76] button:focus-visible,.attached-group[data-v-ae9bcc76] button:hover{z-index:10}.attached-group[data-v-ae9bcc76]:not(.vertical-group) button:not(:first-child){margin-inline-start:-1px}.attached-group[data-v-ae9bcc76]:not(.vertical-group) button:first-child{border-start-end-radius:0!important;border-end-end-radius:0!important}.attached-group[data-v-ae9bcc76]:not(.vertical-group) button:not(:first-child):not(:last-child){border-radius:0!important}.attached-group[data-v-ae9bcc76]:not(.vertical-group) button:last-child{border-start-start-radius:0!important;border-end-start-radius:0!important}.vertical-group[data-v-ae9bcc76] button:not(:first-child){margin-block-start:-1px}.vertical-group[data-v-ae9bcc76] button:first-child{border-end-start-radius:0!important;border-end-end-radius:0!important}.vertical-group[data-v-ae9bcc76] button:not(:first-child):not(:last-child){border-radius:0!important}.vertical-group[data-v-ae9bcc76] button:last-child{border-start-start-radius:0!important;border-start-end-radius:0!important}.attached-group[data-v-ae9bcc76]: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-ae9bcc76] button:not(:first-child):not(.border):before{content:"";position:absolute;inset-inline:0;top: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-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-94a48eeb]{font-family:inherit}.vlite-gantt-toolbar[data-v-94a48eeb]{display:flex;justify-content:flex-end;align-items:center;margin-bottom:8px;gap:6px}.vlite-gantt-legend-blocked[data-v-94a48eeb]{display:inline-flex;align-items:center;gap:4px;margin-right:auto;padding:3px 8px;border-radius:6px;font-size:10px;font-weight:600;color:var(--color-danger);background:color-mix(in srgb,var(--color-danger) 10%,transparent);border:1px dashed color-mix(in srgb,var(--color-danger) 45%,transparent)}.vlite-gantt-tooltip-blocked[data-v-94a48eeb]{display:flex;align-items:center;gap:4px;font-size:10px;font-weight:600;color:var(--color-danger)}.vlite-gantt-btn[data-v-94a48eeb]{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-94a48eeb]:hover:not(:disabled){background:var(--color-accent);color:var(--color-foreground)}.vlite-gantt-btn[data-v-94a48eeb]:disabled{opacity:.5;cursor:not-allowed}.vlite-gantt-zoom-controls[data-v-94a48eeb]{display:flex;gap:6px}.vlite-gantt-wrapper[data-v-94a48eeb]{display:flex;border:1px solid var(--color-border);border-radius:var(--radius-lg);overflow:hidden;background:var(--color-background)}.vlite-gantt-sidebar[data-v-94a48eeb]{flex-shrink:0;border-right:1px solid var(--color-border);background:var(--color-background);z-index:2}.vlite-gantt-sidebar-header[data-v-94a48eeb]{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-94a48eeb]{overflow-y:hidden;overflow-x:hidden}.vlite-gantt-sidebar-row[data-v-94a48eeb]{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-94a48eeb]{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-94a48eeb]:hover{opacity:.8}.vlite-gantt-chevron[data-v-94a48eeb]{transition:transform .2s ease;color:var(--color-muted-foreground);flex-shrink:0}.vlite-gantt-chevron-collapsed[data-v-94a48eeb]{transform:rotate(-90deg)}.vlite-gantt-group-count[data-v-94a48eeb]{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-94a48eeb]{display:flex;align-items:center;gap:8px;cursor:pointer;padding:0 4px;width:100%;transition:all .15s}.vlite-gantt-task-name[data-v-94a48eeb]:hover{opacity:.75}.vlite-gantt-task-name-grouped[data-v-94a48eeb]{padding-left:20px}.vlite-gantt-task-name-dragging[data-v-94a48eeb]{background:color-mix(in oklab,var(--color-primary) 8%,transparent);border-radius:4px}.vlite-gantt-task-dot[data-v-94a48eeb]{width:7px;height:7px;border-radius:2px;flex-shrink:0}.vlite-gantt-progress-badge[data-v-94a48eeb]{font-size:10px;font-weight:700;color:var(--color-muted-foreground);margin-left:auto;flex-shrink:0}.vlite-gantt-timeline[data-v-94a48eeb]{flex:1;overflow-x:auto;overflow-y:auto;position:relative}.vlite-gantt-timeline-header[data-v-94a48eeb]{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-94a48eeb]{position:relative}.vlite-gantt-bar-dragging[data-v-94a48eeb]{filter:drop-shadow(0 2px 8px rgba(0,0,0,.15));z-index:10}.vlite-gantt-dep-group[data-v-94a48eeb]{transition:opacity .15s,filter .15s}.vlite-gantt-dep-group[data-v-94a48eeb]:hover{opacity:1!important}.vlite-gantt-dep-selectable .vlite-gantt-dep-hit[data-v-94a48eeb]{cursor:pointer}.vlite-gantt-dep-hit[data-v-94a48eeb]{outline:none}.vlite-gantt-dep-line[data-v-94a48eeb],.vlite-gantt-dep-arrowhead[data-v-94a48eeb]{transition:stroke .15s,fill .15s,stroke-opacity .15s,fill-opacity .15s}.vlite-gantt-dep-hovered .vlite-gantt-dep-line[data-v-94a48eeb]{stroke:var(--color-foreground);stroke-opacity:.9}.vlite-gantt-dep-hovered .vlite-gantt-dep-arrowhead[data-v-94a48eeb]{fill:var(--color-foreground);fill-opacity:.9}.vlite-gantt-dep-delete[data-v-94a48eeb]{cursor:pointer;outline:none}.vlite-gantt-dep-delete:focus-visible circle[data-v-94a48eeb]:nth-of-type(2){stroke:var(--color-foreground);stroke-width:2}.vlite-gantt-linking[data-v-94a48eeb]{cursor:crosshair}.vlite-gantt-dep-connector[data-v-94a48eeb]{cursor:grab;outline:none}.vlite-gantt-dep-connector:focus-visible .vlite-gantt-dep-connector-disc[data-v-94a48eeb]{stroke:var(--color-primary);stroke-width:2.5;filter:drop-shadow(0 0 0 2px color-mix(in oklab,var(--color-primary) 35%,transparent))}.vlite-gantt-dep-connector-disc[data-v-94a48eeb]{transition:stroke .15s,fill .15s}.vlite-gantt-link-source[data-v-94a48eeb]{filter:drop-shadow(0 0 0 1px color-mix(in oklab,var(--color-primary) 40%,transparent))}.vlite-gantt-link-candidate[data-v-94a48eeb]{opacity:.92}.vlite-gantt-link-target-valid[data-v-94a48eeb]{filter:drop-shadow(0 0 6px color-mix(in oklab,var(--color-success, #16a34a) 55%,transparent))}.vlite-gantt-link-target-invalid[data-v-94a48eeb]{filter:drop-shadow(0 0 6px color-mix(in oklab,var(--color-danger) 55%,transparent))}.vlite-gantt-link-preview[data-v-94a48eeb]{z-index:20}.sr-only[data-v-94a48eeb]{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.vlite-gantt-tooltip-progress-track[data-v-94a48eeb]{width:60px;height:4px;border-radius:2px;background:var(--color-muted);overflow:hidden}.vlite-gantt-tooltip-progress-fill[data-v-94a48eeb]{height:100%;border-radius:2px;transition:width .3s ease}.vlite-gantt-timeline[data-v-94a48eeb]::-webkit-scrollbar{height:6px;width:6px}.vlite-gantt-timeline[data-v-94a48eeb]::-webkit-scrollbar-track{background:transparent}.vlite-gantt-timeline[data-v-94a48eeb]::-webkit-scrollbar-thumb{background:var(--color-scrollbar);border-radius:3px}.vlite-gantt-timeline[data-v-94a48eeb]::-webkit-scrollbar-thumb:hover{background:var(--color-scrollbar-hover)}.vlite-gantt-sidebar-body[data-v-94a48eeb]::-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}.vlite-scale-generator-frame[data-v-eec3ef03]{contain:layout style;will-change:transform}.vlite-scale-generator-content[data-v-eec3ef03]{will-change:transform;contain:layout style}.vlite-pan-zoom-viewport[data-v-9dc36c93]{position:relative;width:100%;height:100%;overflow:hidden;overscroll-behavior:none;will-change:transform;contain:layout style}.vlite-pan-zoom-viewport[data-v-9dc36c93]:focus-visible{outline:2px solid var(--color-primary, currentColor);outline-offset:-2px}.vlite-pan-zoom-viewport-content[data-v-9dc36c93]{position:absolute;top:0;left:0;transform-origin:top left;will-change:transform;contain:layout style;backface-visibility:hidden}.vlite-google-map[data-v-0cfbb6c9]{position:relative;min-height:1px;overflow:hidden;border-radius:var(--radius, .5rem);background:var(--color-muted, #f3f4f6);contain:layout style}.vlite-google-map__canvas[data-v-0cfbb6c9]{width:100%;height:100%;outline:none}.vlite-google-map__canvas[data-v-0cfbb6c9]:focus-visible{box-shadow:inset 0 0 0 3px var(--color-primary, #2563eb)}.vlite-google-map__state[data-v-0cfbb6c9]{position:absolute;inset:0;display:grid;place-items:center;padding:1rem;color:var(--color-muted-foreground, #4b5563);background:var(--color-muted, #f3f4f6);text-align:center}.vlite-google-map__state--error[data-v-0cfbb6c9]{color:var(--color-danger, #b91c1c)}.vlite-google-map__notice[data-v-0cfbb6c9]{position:absolute;right:.5rem;bottom:.5rem;margin:0;padding:.35rem .5rem;border-radius:var(--radius-sm, .25rem);color:var(--color-foreground, #111827);background:var(--color-background, #fff);font-size:.75rem}.toast-item[data-v-b3a7f1a6]{will-change:transform,opacity;contain:layout style}.first-toast-enter-active[data-v-b3a7f1a6]{animation:first-toast-in-b3a7f1a6 .45s cubic-bezier(.23,1,.32,1) forwards}.first-toast-leave-active[data-v-b3a7f1a6]{transition:all .25s ease-in}.first-toast-leave-to[data-v-b3a7f1a6]{opacity:0;transform:scale(.98)}@keyframes first-toast-in-b3a7f1a6{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-b3a7f1a6],.stack-toast-leave-active[data-v-b3a7f1a6]{transition:all .3s cubic-bezier(.16,1,.3,1)}.stack-toast-enter-from[data-v-b3a7f1a6]{opacity:0;transform:scale(.95) translateY(10px)}.stack-toast-leave-to[data-v-b3a7f1a6]{opacity:0;transform:scale(.95)}.stack-toast-move[data-v-b3a7f1a6]{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}
1900
1900