vlite3 1.0.4 → 1.0.6

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.
Files changed (49) hide show
  1. package/components/AttachmentsList/AttachmentsList.vue.d.ts +19 -3
  2. package/components/AttachmentsList/AttachmentsList.vue.js +274 -111
  3. package/components/AttachmentsList/fileTypeIcon.d.ts +16 -0
  4. package/components/AttachmentsList/fileTypeIcon.js +127 -0
  5. package/components/AttachmentsList/index.d.ts +1 -0
  6. package/components/AttachmentsList/types.d.ts +74 -2
  7. package/components/Avatar.vue.js +2 -2
  8. package/components/Badge.vue.js +7 -7
  9. package/components/Button.vue.js +36 -43
  10. package/components/ButtonGroup.vue.js +2 -2
  11. package/components/ButtonGroup.vue2.js +8 -8
  12. package/components/CategoryManager/CategoryManager.vue.d.ts +36 -0
  13. package/components/CategoryManager/CategoryNode.vue.d.ts +15 -0
  14. package/components/CategoryManager/index.d.ts +2 -0
  15. package/components/CategoryManager/types.d.ts +43 -0
  16. package/components/Chat/ChatBubble.vue.js +70 -56
  17. package/components/Chat/ChatInterface.vue.js +182 -142
  18. package/components/CommandPalette/CommandPaletteContent.vue2.js +1 -1
  19. package/components/CommandPalette/{CommandPaletteItem.vue2.js → CommandPaletteItem.vue.js} +1 -1
  20. package/components/Dropdown/DropdownMenu.vue.js +2 -2
  21. package/components/Dropdown/DropdownMenu.vue2.js +1 -0
  22. package/components/FilePicker/FilePicker.vue.js +117 -122
  23. package/components/Input.vue.js +28 -26
  24. package/components/Kanban/Kanban.vue.d.ts +7 -16
  25. package/components/Kanban/Kanban.vue.js +1 -1
  26. package/components/Kanban/Kanban.vue2.js +79 -47
  27. package/components/Kanban/KanbanBoard.vue.js +2 -2
  28. package/components/Kanban/KanbanBoard.vue2.js +21 -21
  29. package/components/Kanban/types.d.ts +3 -0
  30. package/components/List/List.vue.js +89 -85
  31. package/components/Navbar/Navbar.vue.d.ts +4 -0
  32. package/components/Navbar/Navbar.vue.js +196 -173
  33. package/components/Navbar/NavbarTabs.vue.js +72 -66
  34. package/components/NavbarCommandPalette.vue.js +11 -11
  35. package/components/NumberInput.vue.js +2 -2
  36. package/components/NumberInput.vue2.js +144 -104
  37. package/components/Screen/Screen.vue.d.ts +12 -29
  38. package/components/Screen/Screen.vue.js +228 -195
  39. package/components/Screen/components/ScreenViewToggle.vue.d.ts +6 -3
  40. package/components/Screen/components/ScreenViewToggle.vue.js +29 -34
  41. package/components/Screen/types.d.ts +59 -7
  42. package/components/Stats/Stats.vue.d.ts +1 -0
  43. package/components/Stats/Stats.vue.js +184 -156
  44. package/components/Stats/types.d.ts +1 -0
  45. package/components/Workbook/Sheet.vue.d.ts +1 -1
  46. package/directives/vRipple.js +28 -9
  47. package/index.js +87 -85
  48. package/package.json +1 -1
  49. package/style.css +1 -1
@@ -1,59 +1,59 @@
1
- import { defineComponent as _, computed as m, ref as w, provide as ee, useSlots as le, onMounted as se, onUnmounted as oe, watch as A, openBlock as r, createElementBlock as i, createVNode as f, Transition as W, withCtx as g, withDirectives as Y, createElementVNode as t, normalizeClass as n, renderSlot as s, createCommentVNode as u, vShow as q, unref as c, createTextVNode as P, normalizeStyle as te, Fragment as x, createBlock as G } from "vue";
2
- import { useRoute as ae } from "vue-router";
3
- import { useLocalStorage as re, onClickOutside as ie, useBreakpoints as ne, breakpointsTailwind as de } from "@vueuse/core";
4
- import z from "../Icon.vue.js";
5
- import L from "../SidePanel.vue.js";
6
- import J from "./NavbarTabs.vue.js";
1
+ import { defineComponent as le, computed as m, shallowRef as se, ref as p, provide as oe, useSlots as te, onMounted as ae, onUnmounted as re, watch as Y, nextTick as ie, openBlock as r, createElementBlock as i, createVNode as b, Transition as q, withCtx as g, withDirectives as G, createElementVNode as t, normalizeClass as n, renderSlot as s, createCommentVNode as u, vShow as J, unref as c, createTextVNode as L, normalizeStyle as ne, Fragment as $, createBlock as K } from "vue";
2
+ import { useRoute as de } from "vue-router";
3
+ import { useLocalStorage as ue, onClickOutside as fe, useBreakpoints as be, breakpointsTailwind as me } from "@vueuse/core";
4
+ import B from "../Icon.vue.js";
5
+ import E from "../SidePanel.vue.js";
6
+ import Q from "./NavbarTabs.vue.js";
7
7
  /* empty css */
8
- import K from "../Breadcrumb/Breadcrumb.vue.js";
8
+ import X from "../Breadcrumb/Breadcrumb.vue.js";
9
9
  /* empty css */
10
- import { useBreadcrumb as ue } from "../../composables/useBreadcrumb.js";
11
- const be = {
10
+ import { useBreadcrumb as ce } from "../../composables/useBreadcrumb.js";
11
+ const ve = {
12
12
  key: 0,
13
13
  class: "vlite-app-layout flex flex-row w-full h-full bg-body overflow-hidden"
14
- }, fe = { class: "flex flex-col flex-1 min-w-0 h-full overflow-hidden" }, me = {
14
+ }, ge = { class: "flex flex-col flex-1 min-w-0 h-full overflow-hidden" }, he = {
15
15
  key: 0,
16
16
  class: "w-full shrink-0 z-20 bg-background"
17
- }, ce = {
18
- key: 1,
19
- class: "flex-1 overflow-y-auto w-full relative h-full flex flex-col min-h-0 scrollbar-thin scrollbar-stable"
20
- }, ve = {
17
+ }, pe = {
21
18
  key: 0,
22
19
  class: "shrink-0 w-full"
23
- }, ge = { class: "flex-1 overflow-y-auto w-full relative h-full scrollbar-thin scrollbar-stable" }, he = { class: "flex flex-col h-full" }, pe = { class: "flex-1 overflow-y-auto px-3.5 pt-4 scrollbar-thin scrollbar-stable" }, ye = {
20
+ }, ye = { class: "flex flex-col h-full" }, ke = { class: "flex-1 overflow-y-auto px-3.5 pt-4 scrollbar-thin scrollbar-stable" }, we = {
24
21
  key: 0,
25
22
  class: "mt-auto pt-2 border-t border-border px-3 py-2"
26
- }, ke = {
23
+ }, xe = {
27
24
  key: 1,
28
25
  class: "vlite-app-layout flex flex-col w-full h-full bg-body overflow-hidden"
29
- }, we = {
26
+ }, $e = {
30
27
  key: 0,
31
28
  class: "w-full shrink-0 z-50 flex flex-col relative"
32
- }, xe = { class: "flex flex-1 w-full overflow-hidden relative" }, $e = { class: "flex items-center gap-4 shrink-0 z-10" }, Ce = {
33
- key: 0,
34
- class: "flex-1 overflow-y-auto w-full relative h-full flex flex-col scrollbar-thin scrollbar-stable"
35
- }, Te = {
29
+ }, Ce = { class: "flex flex-1 w-full overflow-hidden relative" }, Te = { class: "flex items-center gap-4 shrink-0 z-10" }, ze = {
36
30
  key: 0,
37
31
  class: "shrink-0 w-full"
38
- }, ze = { class: "flex-1 overflow-y-auto w-full relative h-full scrollbar-thin scrollbar-stable" }, Se = { class: "flex flex-col max-h-[80vh] overflow-y-auto scrollbar-thin" }, Be = { class: "space-y-1 p-2" }, Ve = { class: "space-y-1 p-2" }, Me = { class: "flex flex-col space-y-6 pt-4 h-full" }, Oe = {
32
+ }, Se = {
33
+ class: "flex flex-col max-h-[80vh] overflow-y-auto scrollbar-thin",
34
+ style: { "will-change": "transform", contain: "layout style" }
35
+ }, Be = { class: "space-y-1 p-2" }, Me = { class: "space-y-1 p-2" }, Ve = { class: "flex flex-col space-y-6 pt-4 h-full" }, Re = {
39
36
  key: 0,
40
37
  class: "flex flex-col space-y-1"
41
- }, Ne = {
38
+ }, Oe = {
42
39
  key: 1,
43
40
  class: "flex flex-col space-y-4 flex-1 overflow-y-auto px-3.5! scrollbar-thin scrollbar-stable"
44
- }, Pe = {
41
+ }, Ne = {
45
42
  key: 2,
46
43
  class: "mt-auto pt-2 border-t border-border px-3! py-2!"
47
- }, Le = { class: "flex items-center gap-4 shrink-0 z-10" }, Re = { class: "flex flex-col max-h-[80vh] overflow-y-auto scrollbar-thin" }, He = { class: "space-y-1 p-2" }, je = { class: "space-y-1 p-2" }, Ie = { class: "flex flex-col space-y-6 pt-4 h-full" }, Ue = {
44
+ }, Pe = { class: "flex items-center gap-4 shrink-0 z-10" }, Le = {
45
+ class: "flex flex-col max-h-[80vh] overflow-y-auto scrollbar-thin",
46
+ style: { "will-change": "transform", contain: "layout style" }
47
+ }, Ee = { class: "space-y-1 p-2" }, He = { class: "space-y-1 p-2" }, je = { class: "flex flex-col space-y-6 pt-4 h-full" }, Ie = {
48
48
  key: 0,
49
49
  class: "flex flex-col space-y-1"
50
- }, Ee = {
50
+ }, Ue = {
51
51
  key: 1,
52
52
  class: "flex flex-col space-y-4 flex-1 overflow-y-auto px-3.5! scrollbar-thin scrollbar-stable"
53
53
  }, De = {
54
54
  key: 2,
55
55
  class: "mt-auto pt-2 border-t border-border px-3! py-2!"
56
- }, el = /* @__PURE__ */ _({
56
+ }, el = /* @__PURE__ */ le({
57
57
  __name: "Navbar",
58
58
  props: {
59
59
  variant: { default: "header" },
@@ -88,60 +88,60 @@ const be = {
88
88
  },
89
89
  emits: ["toggle-mobile"],
90
90
  setup(v, { emit: Fe }) {
91
- const l = v, p = l.breadcrumb ? ue({
91
+ const l = v, y = l.breadcrumb ? ce({
92
92
  homeIcon: l.breadcrumbHomeIcon,
93
93
  labelMap: l.breadcrumbLabels || {}
94
- }) : { items: m(() => []) }, y = w([]), k = w("");
95
- ee("navbar-context", {
94
+ }) : { items: m(() => []) }, k = se([]), w = p("");
95
+ oe("navbar-context", {
96
96
  compact: m(() => l.compact),
97
97
  renderNestedTabs: m(() => l.renderNestedTabs),
98
98
  setNestedTabs: (e, o) => {
99
- y.value = e, k.value = o;
99
+ k.value = e, w.value = o;
100
100
  }
101
101
  });
102
- const a = w(!1), S = w(!1), R = le(), B = w(null), $ = w(null), C = re("vlite-navbar-sidebar-visible", !0), H = (e) => {
103
- y.value.find((d) => d.value === e) && (typeof e == "string" && e.startsWith("/") ? import("vue-router").then(({ useRouter: d }) => {
102
+ const a = p(!1), M = p(!1), H = te(), V = p(null), C = p(null), x = p(null), z = p(null), T = ue("vlite-navbar-sidebar-visible", !0), j = (e) => {
103
+ k.value.find((d) => d.value === e) && (typeof e == "string" && e.startsWith("/") ? import("vue-router").then(({ useRouter: d }) => {
104
104
  d().push(e).catch(() => {
105
105
  });
106
- }) : k.value = e);
107
- }, h = m(() => !!(R.header || R.main)), j = m(() => l.sidebarToggle && h.value), I = () => {
108
- C.value = !C.value;
106
+ }) : w.value = e);
107
+ }, h = m(() => !!(H.header || H.main)), I = m(() => l.sidebarToggle && h.value), U = () => {
108
+ T.value = !T.value;
109
109
  };
110
- ie(
111
- B,
110
+ fe(
111
+ V,
112
112
  () => {
113
113
  a.value = !1;
114
114
  },
115
- { ignore: [$] }
115
+ { ignore: [C] }
116
116
  );
117
- const U = () => {
118
- S.value = window.scrollY > 10;
117
+ const D = () => {
118
+ M.value = window.scrollY > 10;
119
119
  };
120
- se(() => {
121
- window.addEventListener("scroll", U, { passive: !0 });
122
- }), oe(() => {
123
- window.removeEventListener("scroll", U);
120
+ ae(() => {
121
+ window.addEventListener("scroll", D, { passive: !0 });
122
+ }), re(() => {
123
+ window.removeEventListener("scroll", D);
124
124
  });
125
- const E = m(() => {
125
+ const F = m(() => {
126
126
  const e = l.variant === "sidebar", o = {
127
127
  fixed: h.value ? "relative z-40" : "fixed top-0 left-0 z-40",
128
128
  sticky: h.value ? "relative z-40" : "sticky top-0 z-40",
129
129
  relative: "relative z-10",
130
130
  absolute: h.value ? "relative z-40" : "absolute top-0 left-0 w-full z-40"
131
- }, d = "bg-body", T = [
132
- l.glass && (S.value || e || l.floating) ? "backdrop-blur-md bg-background/80 supports-[backdrop-filter]:bg-background/60" : "bg-background",
131
+ }, d = "bg-body", S = [
132
+ l.glass && (M.value || e || l.floating) ? "bg-background/95" : "bg-background",
133
133
  l.border && !l.floating ? e ? "border-r border-border" : "border-b border-border" : "",
134
134
  l.floating ? "m-4 rounded shadow-lg border border-border/50" : "",
135
- S.value && !l.floating && !e && l.position === "sticky" ? "shadow-sm" : ""
136
- ], V = l.mobileBreakpoint || "md", M = {
135
+ M.value && !l.floating && !e && l.position === "sticky" ? "shadow-sm" : ""
136
+ ], R = l.mobileBreakpoint || "md", O = {
137
137
  sm: "max-sm:hidden",
138
138
  md: "max-md:hidden",
139
139
  lg: "max-lg:hidden",
140
140
  xl: "max-xl:hidden"
141
- }, O = h.value && e ? M[V] : "";
142
- let N = "";
143
- return e ? N = b.value.sidebarLayout : N = `flex items-center gap-4 w-full px-4 sm:px-6 lg:px-8 ${l.height}`, [d, o[l.position], ...T, N, O, l.class].filter(Boolean).join(" ");
144
- }), b = m(() => {
141
+ }, N = h.value && e ? O[R] : "";
142
+ let P = "";
143
+ return e ? P = f.value.sidebarLayout : P = `flex items-center gap-4 w-full px-4 sm:px-6 lg:px-8 ${l.height}`, [d, o[l.position], ...S, P, N, l.class].filter(Boolean).join(" ");
144
+ }), f = m(() => {
145
145
  const e = l.mobileBreakpoint || "md", o = {
146
146
  sm: "sm:hidden",
147
147
  md: "md:hidden",
@@ -152,22 +152,22 @@ const be = {
152
152
  md: "hidden md:flex",
153
153
  lg: "hidden lg:flex",
154
154
  xl: "hidden xl:flex"
155
- }, T = {
155
+ }, S = {
156
156
  sm: `flex flex-col max-sm:w-full ${l.compact ? "w-20" : ""} h-auto sm:h-full sm:max-h-screen shrink-0`,
157
157
  md: `flex flex-col max-md:w-full ${l.compact ? "w-20" : ""} h-auto md:h-full md:max-h-screen shrink-0`,
158
158
  lg: `flex flex-col max-lg:w-full ${l.compact ? "w-20" : ""} h-auto lg:h-full lg:max-h-screen shrink-0`,
159
159
  xl: `flex flex-col max-xl:w-full ${l.compact ? "w-20" : ""} h-auto xl:h-full xl:max-h-screen shrink-0`
160
- }, V = {
160
+ }, R = {
161
161
  sm: "sm:hidden flex items-center justify-between px-4 py-3 shrink-0 bg-background",
162
162
  md: "md:hidden flex items-center justify-between px-4 py-3 shrink-0 bg-background",
163
163
  lg: "lg:hidden flex items-center justify-between px-4 py-3 shrink-0 bg-background",
164
164
  xl: "xl:hidden flex items-center justify-between px-4 py-3 shrink-0 bg-background"
165
- }, M = {
165
+ }, O = {
166
166
  sm: "hidden sm:flex flex-col h-full w-full overflow-hidden",
167
167
  md: "hidden md:flex flex-col h-full w-full overflow-hidden",
168
168
  lg: "hidden lg:flex flex-col h-full w-full overflow-hidden",
169
169
  xl: "hidden xl:flex flex-col h-full w-full overflow-hidden"
170
- }, O = {
170
+ }, N = {
171
171
  sm: "hidden sm:flex",
172
172
  md: "hidden md:flex",
173
173
  lg: "hidden lg:flex",
@@ -176,30 +176,32 @@ const be = {
176
176
  return {
177
177
  mobileTrigger: o[e],
178
178
  desktopContent: d[e],
179
- sidebarLayout: T[e],
180
- mobileHeader: V[e],
181
- desktopSidebar: M[e],
182
- desktopOnly: O[e]
179
+ sidebarLayout: S[e],
180
+ mobileHeader: R[e],
181
+ desktopSidebar: O[e],
182
+ desktopOnly: N[e]
183
183
  };
184
- }), D = m(() => {
184
+ }), A = m(() => {
185
185
  if (l.variant === "sidebar")
186
186
  return "flex-1 py-4 overflow-y-auto scrollbar-thin scrollbar-stable";
187
187
  if (l.centerPosition === "left")
188
188
  return "flex items-center justify-start";
189
- }), Q = ae();
190
- A(
191
- () => Q.path,
189
+ }), Z = de();
190
+ Y(
191
+ () => Z.path,
192
192
  () => {
193
- a.value = !1;
193
+ a.value = !1, ie(() => {
194
+ x.value && (x.value.scrollTop = 0, x.value.firstElementChild && (x.value.firstElementChild.scrollTop = 0)), z.value && (z.value.scrollTop = 0);
195
+ });
194
196
  }
195
197
  );
196
- const X = ne(de).greater(l.mobileBreakpoint);
197
- A(X, (e) => {
198
+ const _ = be(me).greater(l.mobileBreakpoint);
199
+ Y(_, (e) => {
198
200
  e && (a.value = !1);
199
201
  });
200
- const F = m(() => j.value && !C.value), Z = m(() => h.value && l.variant === "sidebar" && l.layoutMode === "sidebar-first");
201
- return (e, o) => Z.value ? (r(), i("div", be, [
202
- f(W, {
202
+ const W = m(() => I.value && !T.value), ee = m(() => h.value && l.variant === "sidebar" && l.layoutMode === "sidebar-first");
203
+ return (e, o) => ee.value ? (r(), i("div", ve, [
204
+ b(q, {
203
205
  "enter-active-class": "transition-all duration-300 ease-in-out",
204
206
  "leave-active-class": "transition-all duration-300 ease-in-out",
205
207
  "enter-from-class": "opacity-0 -translate-x-2",
@@ -208,17 +210,18 @@ const be = {
208
210
  "leave-to-class": "opacity-0 -translate-x-2"
209
211
  }, {
210
212
  default: g(() => [
211
- Y(t("nav", {
213
+ G(t("nav", {
212
214
  class: n([
213
215
  "shrink-0 h-full flex flex-col bg-background border-r border-border overflow-hidden z-30",
214
- b.value.mobileTrigger === "md:hidden" ? "max-md:hidden" : "",
216
+ f.value.mobileTrigger === "md:hidden" ? "max-md:hidden" : "",
215
217
  l.class
216
218
  ]),
217
219
  role: "navigation",
218
220
  "aria-label": "Sidebar"
219
221
  }, [
220
222
  t("div", {
221
- class: n(["flex-1 overflow-y-auto overflow-x-hidden scrollbar-thin scrollbar-stable", l.contentClass])
223
+ class: n(["flex-1 overflow-y-auto overflow-x-hidden scrollbar-thin scrollbar-stable", l.contentClass]),
224
+ style: { "will-change": "transform", contain: "layout style" }
222
225
  }, [
223
226
  s(e.$slots, "default")
224
227
  ], 2),
@@ -229,85 +232,95 @@ const be = {
229
232
  s(e.$slots, "right")
230
233
  ], 2)) : u("", !0)
231
234
  ], 2), [
232
- [q, !F.value]
235
+ [J, !W.value]
233
236
  ])
234
237
  ]),
235
238
  _: 3
236
239
  }),
237
- t("div", fe, [
238
- e.$slots.header ? (r(), i("header", me, [
240
+ t("div", ge, [
241
+ e.$slots.header ? (r(), i("header", he, [
239
242
  s(e.$slots, "header", {
240
243
  isOpen: a.value,
241
244
  toggle: () => a.value = !a.value,
242
- sidebarVisible: c(C),
243
- toggleSidebar: I,
244
- breadcrumbItems: c(p).items.value
245
+ sidebarVisible: c(T),
246
+ toggleSidebar: U,
247
+ breadcrumbItems: c(y).items.value
245
248
  })
246
249
  ])) : u("", !0),
247
- e.$slots.main ? (r(), i("main", ce, [
248
- l.renderNestedTabs && y.value.length > 0 ? (r(), i("div", ve, [
249
- f(J, {
250
- modelValue: k.value,
251
- "onUpdate:modelValue": o[0] || (o[0] = (d) => k.value = d),
252
- onChange: H,
253
- items: y.value
250
+ e.$slots.main ? (r(), i("main", {
251
+ key: 1,
252
+ ref_key: "layoutMainRef",
253
+ ref: z,
254
+ class: "flex-1 overflow-y-auto w-full relative h-full flex flex-col min-h-0 scrollbar-thin scrollbar-stable"
255
+ }, [
256
+ l.renderNestedTabs && k.value.length > 0 ? (r(), i("div", pe, [
257
+ b(Q, {
258
+ modelValue: w.value,
259
+ "onUpdate:modelValue": o[0] || (o[0] = (d) => w.value = d),
260
+ onChange: j,
261
+ items: k.value
254
262
  }, null, 8, ["modelValue", "items"])
255
263
  ])) : u("", !0),
256
- l.breadcrumb && l.breadcrumbPosition === "main" && c(p).items.value.length > 1 ? (r(), i("div", {
264
+ l.breadcrumb && l.breadcrumbPosition === "main" && c(y).items.value.length > 1 ? (r(), i("div", {
257
265
  key: 1,
258
266
  class: n(["shrink-0 w-full border-b border-border px-6 py-2", l.breadcrumbClass])
259
267
  }, [
260
- f(c(K), {
261
- items: c(p).items.value,
268
+ b(c(X), {
269
+ items: c(y).items.value,
262
270
  variant: l.breadcrumbVariant,
263
271
  separator: l.breadcrumbSeparator,
264
272
  size: l.breadcrumbSize
265
273
  }, null, 8, ["items", "variant", "separator", "size"])
266
274
  ], 2)) : u("", !0),
267
- t("div", ge, [
275
+ t("div", {
276
+ ref_key: "mainScrollRef",
277
+ ref: x,
278
+ style: { "will-change": "transform", contain: "layout style" },
279
+ class: "flex-1 overflow-y-auto w-full relative h-full scrollbar-thin scrollbar-stable"
280
+ }, [
268
281
  s(e.$slots, "main")
269
- ])
270
- ])) : u("", !0)
282
+ ], 512)
283
+ ], 512)) : u("", !0)
271
284
  ]),
272
- f(L, {
285
+ b(E, {
273
286
  show: a.value,
274
287
  "onUpdate:show": o[1] || (o[1] = (d) => a.value = d),
275
288
  position: "left",
276
289
  size: "sm",
277
- triggerClass: b.value.mobileTrigger,
278
- class: n(["z-60", b.value.mobileTrigger]),
290
+ triggerClass: f.value.mobileTrigger,
291
+ class: n(["z-60", f.value.mobileTrigger]),
279
292
  headerClass: "pl-3! pr-4.5! py-3!",
280
293
  bodyClass: "p-0!"
281
294
  }, {
282
295
  header: g(() => [
283
296
  s(e.$slots, "logo", {}, () => [
284
- o[9] || (o[9] = P("Brand", -1))
297
+ o[9] || (o[9] = L("Brand", -1))
285
298
  ])
286
299
  ]),
287
300
  default: g(() => [
288
- t("div", he, [
289
- t("div", pe, [
301
+ t("div", ye, [
302
+ t("div", ke, [
290
303
  s(e.$slots, "default")
291
304
  ]),
292
- e.$slots.right ? (r(), i("div", ye, [
305
+ e.$slots.right ? (r(), i("div", we, [
293
306
  s(e.$slots, "right")
294
307
  ])) : u("", !0)
295
308
  ])
296
309
  ]),
297
310
  _: 3
298
311
  }, 8, ["show", "triggerClass", "class"])
299
- ])) : h.value ? (r(), i("div", ke, [
300
- e.$slots.header ? (r(), i("header", we, [
312
+ ])) : h.value ? (r(), i("div", xe, [
313
+ e.$slots.header ? (r(), i("header", $e, [
301
314
  s(e.$slots, "header", {
302
315
  isOpen: a.value,
303
316
  toggle: () => a.value = !a.value,
304
- sidebarVisible: c(C),
305
- toggleSidebar: I,
306
- breadcrumbItems: c(p).items.value
317
+ sidebarVisible: c(T),
318
+ toggleSidebar: U,
319
+ breadcrumbItems: c(y).items.value
307
320
  })
308
321
  ])) : u("", !0),
309
- t("div", xe, [
310
- f(W, {
322
+ t("div", Ce, [
323
+ b(q, {
311
324
  "enter-active-class": "transition-all duration-300 ease-in-out overflow-hidden",
312
325
  "leave-active-class": "transition-all duration-300 ease-in-out overflow-hidden",
313
326
  "enter-from-class": "opacity-0",
@@ -316,13 +329,13 @@ const be = {
316
329
  "leave-to-class": "opacity-0"
317
330
  }, {
318
331
  default: g(() => [
319
- Y(t("nav", {
320
- class: n(E.value),
332
+ G(t("nav", {
333
+ class: n(F.value),
321
334
  role: "navigation",
322
- style: te(j.value ? "transition: width 0.3s ease, opacity 0.3s ease;" : "")
335
+ style: ne(I.value ? "transition: width 0.3s ease, opacity 0.3s ease;" : "")
323
336
  }, [
324
- v.variant === "header" ? (r(), i(x, { key: 0 }, [
325
- t("div", $e, [
337
+ v.variant === "header" ? (r(), i($, { key: 0 }, [
338
+ t("div", Te, [
326
339
  s(e.$slots, "mobile-trigger", {
327
340
  isOpen: a.value,
328
341
  toggle: () => a.value = !a.value
@@ -330,11 +343,11 @@ const be = {
330
343
  t("button", {
331
344
  type: "button",
332
345
  ref_key: "mobileTriggerRef",
333
- ref: $,
334
- class: n(["p-2 -ml-2 text-muted-foreground hover:bg-accent rounded-md shrink-0", [b.value.mobileTrigger, l.mobileTriggerClass]]),
346
+ ref: C,
347
+ class: n(["p-2 -ml-2 text-muted-foreground hover:bg-accent rounded-md shrink-0", [f.value.mobileTrigger, l.mobileTriggerClass]]),
335
348
  onClick: o[2] || (o[2] = (d) => a.value = !a.value)
336
349
  }, [
337
- f(z, {
350
+ b(B, {
338
351
  icon: "lucide:menu",
339
352
  class: "w-5 h-5"
340
353
  }),
@@ -343,14 +356,14 @@ const be = {
343
356
  ]),
344
357
  e.$slots?.left ? (r(), i("div", {
345
358
  key: 0,
346
- class: n(["items-center gap-1 overflow-x-auto no-scrollbar mask-gradient", b.value.desktopContent])
359
+ class: n(["items-center gap-1 overflow-x-auto no-scrollbar mask-gradient", f.value.desktopContent])
347
360
  }, [
348
361
  s(e.$slots, "left")
349
362
  ], 2)) : u("", !0)
350
363
  ]),
351
364
  e.$slots?.center ? (r(), i("div", {
352
365
  key: 0,
353
- class: n([D.value, "max-w-full", l.contentClass])
366
+ class: n([A.value, "max-w-full", l.contentClass])
354
367
  }, [
355
368
  s(e.$slots, "center")
356
369
  ], 2)) : u("", !0),
@@ -362,10 +375,10 @@ const be = {
362
375
  }, [
363
376
  s(e.$slots, "right")
364
377
  ], 2)
365
- ], 64)) : (r(), i(x, { key: 1 }, [
378
+ ], 64)) : (r(), i($, { key: 1 }, [
366
379
  e.$slots.header ? u("", !0) : (r(), i("div", {
367
380
  key: 0,
368
- class: n(b.value.mobileHeader)
381
+ class: n(f.value.mobileHeader)
369
382
  }, [
370
383
  s(e.$slots, "mobile-trigger", {
371
384
  isOpen: a.value,
@@ -374,11 +387,11 @@ const be = {
374
387
  t("button", {
375
388
  type: "button",
376
389
  ref_key: "mobileTriggerRef",
377
- ref: $,
390
+ ref: C,
378
391
  class: n(["p-2 -mr-2 text-muted-foreground hover:bg-accent rounded-md", l.mobileTriggerClass]),
379
392
  onClick: o[3] || (o[3] = (d) => a.value = !a.value)
380
393
  }, [
381
- f(z, {
394
+ b(B, {
382
395
  icon: "lucide:menu",
383
396
  class: "w-5 h-5"
384
397
  }),
@@ -387,7 +400,7 @@ const be = {
387
400
  ])
388
401
  ], 2)),
389
402
  t("div", {
390
- class: n(b.value.desktopSidebar)
403
+ class: n(f.value.desktopSidebar)
391
404
  }, [
392
405
  t("div", {
393
406
  class: n(["flex-1 px-2.5 pt-0 pb-4 overflow-y-auto space-y-4 scrollbar-thin scrollbar-stable", l.contentClass])
@@ -405,40 +418,50 @@ const be = {
405
418
  ], 2)
406
419
  ], 64))
407
420
  ], 6), [
408
- [q, !F.value]
421
+ [J, !W.value]
409
422
  ])
410
423
  ]),
411
424
  _: 3
412
425
  }),
413
- e.$slots.main ? (r(), i("main", Ce, [
414
- l.renderNestedTabs && y.value.length > 0 ? (r(), i("div", Te, [
415
- f(J, {
416
- modelValue: k.value,
417
- "onUpdate:modelValue": o[4] || (o[4] = (d) => k.value = d),
418
- onChange: H,
419
- items: y.value
426
+ e.$slots.main ? (r(), i("main", {
427
+ key: 0,
428
+ ref_key: "layoutMainRef",
429
+ ref: z,
430
+ class: "flex-1 overflow-y-auto w-full relative h-full flex flex-col scrollbar-thin scrollbar-stable"
431
+ }, [
432
+ l.renderNestedTabs && k.value.length > 0 ? (r(), i("div", ze, [
433
+ b(Q, {
434
+ modelValue: w.value,
435
+ "onUpdate:modelValue": o[4] || (o[4] = (d) => w.value = d),
436
+ onChange: j,
437
+ items: k.value
420
438
  }, null, 8, ["modelValue", "items"])
421
439
  ])) : u("", !0),
422
- l.breadcrumb && l.breadcrumbPosition === "main" && c(p).items.value.length > 1 ? (r(), i("div", {
440
+ l.breadcrumb && l.breadcrumbPosition === "main" && c(y).items.value.length > 1 ? (r(), i("div", {
423
441
  key: 1,
424
442
  class: n(["shrink-0 w-full border-b border-border px-6 py-2", l.breadcrumbClass])
425
443
  }, [
426
- f(c(K), {
427
- items: c(p).items.value,
444
+ b(c(X), {
445
+ items: c(y).items.value,
428
446
  variant: l.breadcrumbVariant,
429
447
  separator: l.breadcrumbSeparator,
430
448
  size: l.breadcrumbSize
431
449
  }, null, 8, ["items", "variant", "separator", "size"])
432
450
  ], 2)) : u("", !0),
433
- t("div", ze, [
451
+ t("div", {
452
+ ref_key: "mainScrollRef",
453
+ ref: x,
454
+ style: { "will-change": "transform", contain: "layout style" },
455
+ class: "flex-1 overflow-y-auto w-full relative h-full scrollbar-thin scrollbar-stable"
456
+ }, [
434
457
  s(e.$slots, "main")
435
- ])
436
- ])) : u("", !0),
437
- l.mobileMenuVariant === "dropdown" ? (r(), i(x, { key: 1 }, [
458
+ ], 512)
459
+ ], 512)) : u("", !0),
460
+ l.mobileMenuVariant === "dropdown" ? (r(), i($, { key: 1 }, [
438
461
  a.value ? (r(), i("div", {
439
462
  key: 0,
440
463
  ref_key: "mobileMenuRef",
441
- ref: B,
464
+ ref: V,
442
465
  class: n(["absolute top-[calc(100%_+_1px)] left-0 w-full bg-body border border-border/50 shadow-xl z-50 flex flex-col transition-all duration-300 origin-top overflow-hidden will-change-transform", l.menuClass])
443
466
  }, [
444
467
  t("div", Se, [
@@ -447,42 +470,42 @@ const be = {
447
470
  s(e.$slots, "left")
448
471
  ]),
449
472
  o[12] || (o[12] = t("div", { class: "h-px bg-border/50 my-1 mx-2" }, null, -1)),
450
- t("div", Ve, [
473
+ t("div", Me, [
451
474
  s(e.$slots, "center")
452
475
  ])
453
476
  ])
454
477
  ])
455
478
  ], 2)) : u("", !0)
456
- ], 64)) : (r(), G(L, {
479
+ ], 64)) : (r(), K(E, {
457
480
  key: 2,
458
481
  show: a.value,
459
482
  "onUpdate:show": o[5] || (o[5] = (d) => a.value = d),
460
483
  position: "left",
461
484
  size: "sm",
462
- triggerClass: b.value.mobileTrigger,
463
- class: n(["z-60", b.value.mobileTrigger]),
485
+ triggerClass: f.value.mobileTrigger,
486
+ class: n(["z-60", f.value.mobileTrigger]),
464
487
  headerClass: "pl-3! pr-4.5! py-3!",
465
488
  bodyClass: "p-0!"
466
489
  }, {
467
490
  header: g(() => [
468
491
  s(e.$slots, "logo", {}, () => [
469
- o[13] || (o[13] = P("Brand", -1))
492
+ o[13] || (o[13] = L("Brand", -1))
470
493
  ])
471
494
  ]),
472
495
  default: g(() => [
473
- t("div", Me, [
474
- v.variant === "header" ? (r(), i("div", Oe, [
496
+ t("div", Ve, [
497
+ v.variant === "header" ? (r(), i("div", Re, [
475
498
  s(e.$slots, "mobile-menu", {}, () => [
476
499
  s(e.$slots, "left"),
477
500
  o[14] || (o[14] = t("div", { class: "h-px bg-border my-2" }, null, -1)),
478
501
  s(e.$slots, "center")
479
502
  ])
480
- ])) : (r(), i("div", Ne, [
503
+ ])) : (r(), i("div", Oe, [
481
504
  s(e.$slots, "left"),
482
505
  s(e.$slots, "default"),
483
506
  s(e.$slots, "center")
484
507
  ])),
485
- e.$slots?.right ? (r(), i("div", Pe, [
508
+ e.$slots?.right ? (r(), i("div", Ne, [
486
509
  s(e.$slots, "right")
487
510
  ])) : u("", !0)
488
511
  ])
@@ -492,11 +515,11 @@ const be = {
492
515
  ])
493
516
  ])) : (r(), i("nav", {
494
517
  key: 2,
495
- class: n(E.value),
518
+ class: n(F.value),
496
519
  role: "navigation"
497
520
  }, [
498
- v.variant === "header" ? (r(), i(x, { key: 0 }, [
499
- t("div", Le, [
521
+ v.variant === "header" ? (r(), i($, { key: 0 }, [
522
+ t("div", Pe, [
500
523
  s(e.$slots, "mobile-trigger", {
501
524
  isOpen: a.value,
502
525
  toggle: () => a.value = !a.value
@@ -504,11 +527,11 @@ const be = {
504
527
  t("button", {
505
528
  type: "button",
506
529
  ref_key: "mobileTriggerRef",
507
- ref: $,
508
- class: n(["p-2 -ml-2 text-muted-foreground hover:bg-accent rounded-md shrink-0", [b.value.mobileTrigger, l.mobileTriggerClass]]),
530
+ ref: C,
531
+ class: n(["p-2 -ml-2 text-muted-foreground hover:bg-accent rounded-md shrink-0", [f.value.mobileTrigger, l.mobileTriggerClass]]),
509
532
  onClick: o[6] || (o[6] = (d) => a.value = !a.value)
510
533
  }, [
511
- f(z, {
534
+ b(B, {
512
535
  icon: "lucide:menu",
513
536
  class: "w-5 h-5"
514
537
  }),
@@ -517,14 +540,14 @@ const be = {
517
540
  ]),
518
541
  e.$slots?.left ? (r(), i("div", {
519
542
  key: 0,
520
- class: n(["items-center gap-1 overflow-x-auto no-scrollbar mask-gradient", b.value.desktopContent])
543
+ class: n(["items-center gap-1 overflow-x-auto no-scrollbar mask-gradient", f.value.desktopContent])
521
544
  }, [
522
545
  s(e.$slots, "left")
523
546
  ], 2)) : u("", !0)
524
547
  ]),
525
548
  e.$slots?.center ? (r(), i("div", {
526
549
  key: 0,
527
- class: n([D.value, "max-w-full", l.contentClass])
550
+ class: n([A.value, "max-w-full", l.contentClass])
528
551
  }, [
529
552
  s(e.$slots, "center")
530
553
  ], 2)) : u("", !0),
@@ -536,9 +559,9 @@ const be = {
536
559
  }, [
537
560
  s(e.$slots, "right")
538
561
  ], 2)
539
- ], 64)) : (r(), i(x, { key: 1 }, [
562
+ ], 64)) : (r(), i($, { key: 1 }, [
540
563
  t("div", {
541
- class: n(b.value.mobileHeader)
564
+ class: n(f.value.mobileHeader)
542
565
  }, [
543
566
  s(e.$slots, "mobile-trigger", {
544
567
  isOpen: a.value,
@@ -547,11 +570,11 @@ const be = {
547
570
  t("button", {
548
571
  type: "button",
549
572
  ref_key: "mobileTriggerRef",
550
- ref: $,
573
+ ref: C,
551
574
  class: n(["p-2 -mr-2 text-muted-foreground hover:bg-accent rounded-md", l.mobileTriggerClass]),
552
575
  onClick: o[7] || (o[7] = (d) => a.value = !a.value)
553
576
  }, [
554
- f(z, {
577
+ b(B, {
555
578
  icon: "lucide:menu",
556
579
  class: "w-5 h-5"
557
580
  }),
@@ -560,7 +583,7 @@ const be = {
560
583
  ])
561
584
  ], 2),
562
585
  t("div", {
563
- class: n(b.value.desktopSidebar)
586
+ class: n(f.value.desktopSidebar)
564
587
  }, [
565
588
  t("div", {
566
589
  class: n(["flex-1 px-2.5 pt-0 pb-4 overflow-y-auto space-y-4 scrollbar-thin scrollbar-stable", l.contentClass])
@@ -577,50 +600,50 @@ const be = {
577
600
  ], 2)) : u("", !0)
578
601
  ], 2)
579
602
  ], 64)),
580
- l.mobileMenuVariant === "dropdown" ? (r(), i(x, { key: 2 }, [
603
+ l.mobileMenuVariant === "dropdown" ? (r(), i($, { key: 2 }, [
581
604
  a.value ? (r(), i("div", {
582
605
  key: 0,
583
606
  ref_key: "mobileMenuRef",
584
- ref: B,
607
+ ref: V,
585
608
  class: n(["absolute top-[calc(100%_+_1px)] left-0 w-full bg-body border border-border/50 shadow-xl z-50 flex flex-col transition-all duration-300 origin-top overflow-hidden will-change-transform", l.menuClass])
586
609
  }, [
587
- t("div", Re, [
610
+ t("div", Le, [
588
611
  s(e.$slots, "mobile-menu", {}, () => [
589
- t("div", He, [
612
+ t("div", Ee, [
590
613
  s(e.$slots, "left")
591
614
  ]),
592
615
  o[17] || (o[17] = t("div", { class: "h-px bg-border/50 my-1 mx-2" }, null, -1)),
593
- t("div", je, [
616
+ t("div", He, [
594
617
  s(e.$slots, "center")
595
618
  ])
596
619
  ])
597
620
  ])
598
621
  ], 2)) : u("", !0)
599
- ], 64)) : (r(), G(L, {
622
+ ], 64)) : (r(), K(E, {
600
623
  key: 3,
601
624
  show: a.value,
602
625
  "onUpdate:show": o[8] || (o[8] = (d) => a.value = d),
603
626
  position: "left",
604
627
  size: "sm",
605
- triggerClass: b.value.mobileTrigger,
606
- class: n(["z-60", b.value.mobileTrigger]),
628
+ triggerClass: f.value.mobileTrigger,
629
+ class: n(["z-60", f.value.mobileTrigger]),
607
630
  headerClass: "pl-3! pr-4.5! py-3!",
608
631
  bodyClass: "p-0!"
609
632
  }, {
610
633
  header: g(() => [
611
634
  s(e.$slots, "logo", {}, () => [
612
- o[18] || (o[18] = P("Brand", -1))
635
+ o[18] || (o[18] = L("Brand", -1))
613
636
  ])
614
637
  ]),
615
638
  default: g(() => [
616
- t("div", Ie, [
617
- v.variant === "header" ? (r(), i("div", Ue, [
639
+ t("div", je, [
640
+ v.variant === "header" ? (r(), i("div", Ie, [
618
641
  s(e.$slots, "mobile-menu", {}, () => [
619
642
  s(e.$slots, "left"),
620
643
  o[19] || (o[19] = t("div", { class: "h-px bg-border my-2" }, null, -1)),
621
644
  s(e.$slots, "center")
622
645
  ])
623
- ])) : (r(), i("div", Ee, [
646
+ ])) : (r(), i("div", Ue, [
624
647
  s(e.$slots, "left"),
625
648
  s(e.$slots, "default"),
626
649
  s(e.$slots, "center")