vlite3 1.1.11 → 1.2.2

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 (52) hide show
  1. package/components/AppShell/AppShell.vue.js +76 -0
  2. package/components/AppShell/AppShell.vue2.js +4 -0
  3. package/components/AppShell/AppShellLayoutClassic.vue.js +279 -0
  4. package/components/AppShell/AppShellLayoutClassic.vue2.js +4 -0
  5. package/components/AppShell/AppShellLayoutDashboard.vue.js +171 -0
  6. package/components/AppShell/AppShellLayoutDashboard.vue2.js +4 -0
  7. package/components/AppShell/AppShellLayoutDock.vue.js +165 -0
  8. package/components/AppShell/AppShellLayoutDock.vue2.js +4 -0
  9. package/components/AppShell/AppShellLayoutHeaderShell.vue.js +173 -0
  10. package/components/AppShell/AppShellLayoutHeaderShell.vue2.js +4 -0
  11. package/components/AppShell/AppShellLayoutSidebarFirst.vue.js +166 -0
  12. package/components/AppShell/AppShellLayoutSidebarFirst.vue2.js +4 -0
  13. package/components/AppShell/useAppShell.js +134 -0
  14. package/components/CommandPalette/CommandPaletteContent.vue2.js +1 -1
  15. package/components/CommandPalette/{CommandPaletteItem.vue2.js → CommandPaletteItem.vue.js} +1 -1
  16. package/components/DataTable/DataTable.vue.d.ts +3 -3
  17. package/components/DataTable/DataTableRow.vue.d.ts +1 -1
  18. package/components/Dropdown/Dropdown.vue.js +11 -11
  19. package/components/Form/CustomFields.vue.js +2 -2
  20. package/components/Form/CustomFields.vue2.js +15 -2
  21. package/components/Invoice/InvoiceVariant1.vue.js +225 -176
  22. package/components/Invoice/InvoiceVariant2.vue.js +174 -125
  23. package/components/Invoice/InvoiceVariant3.vue.js +186 -157
  24. package/components/Invoice/InvoiceVariant4.vue.js +200 -156
  25. package/components/Invoice/types.d.ts +10 -1
  26. package/components/List/ListFieldRow.vue.js +16 -16
  27. package/components/List/utils.d.ts +2 -2
  28. package/components/List/utils.js +6 -9
  29. package/components/NavbarCommandPalette.vue.js +2 -2
  30. package/components/Price/Price.vue.d.ts +2 -0
  31. package/components/Price/Price.vue.js +15 -12
  32. package/components/Screen/Screen.vue.d.ts +36 -10
  33. package/components/Screen/Screen.vue.js +398 -304
  34. package/components/Screen/components/ScreenToolbar.vue.d.ts +62 -0
  35. package/components/Screen/components/ScreenToolbar.vue.js +116 -0
  36. package/components/Screen/components/ScreenToolbar.vue2.js +4 -0
  37. package/components/Screen/types.d.ts +9 -0
  38. package/components/Stats/StatItem.vue.js +88 -87
  39. package/components/Stats/Stats.vue.js +20 -20
  40. package/components/Stats/types.d.ts +3 -1
  41. package/composables/useBreadcrumb.js +27 -0
  42. package/core/config.d.ts +10 -0
  43. package/core/config.js +11 -9
  44. package/index.d.ts +1 -0
  45. package/index.js +215 -213
  46. package/package.json +1 -1
  47. package/style.css +1 -1
  48. package/types/appshell.type.d.ts +1 -1
  49. package/types/config.type.d.ts +2 -0
  50. package/types/list.type.d.ts +4 -0
  51. package/utils/functions.d.ts +9 -10
  52. package/utils/functions.js +78 -63
@@ -0,0 +1,165 @@
1
+ import { defineComponent as V, inject as _, openBlock as a, createElementBlock as o, createVNode as m, Transition as z, withCtx as h, withDirectives as N, createElementVNode as n, normalizeClass as b, unref as e, renderSlot as r, createCommentVNode as t, vShow as R, isRef as v, createTextVNode as B } from "vue";
2
+ import E from "../SidePanel.vue.js";
3
+ import L from "../Navbar/NavbarTabs.vue.js";
4
+ /* empty css */
5
+ import M from "../Breadcrumb/Breadcrumb.vue.js";
6
+ import "@iconify/vue";
7
+ /* empty css */
8
+ import { APPSHELL_LAYOUT_KEY as P } from "./useAppShell.js";
9
+ const A = { class: "vlite-app-layout flex flex-row w-full h-full bg-background p-0 sm:p-2 gap-0 sm:gap-2 overflow-hidden items-stretch" }, D = {
10
+ key: 0,
11
+ class: "flex items-center justify-center w-full"
12
+ }, O = { class: "flex flex-col flex-1 min-w-0 h-full overflow-hidden bg-background rounded-xl max-sm:rounded-none border border-border max-sm:border-0 shadow-sm" }, U = {
13
+ key: 0,
14
+ class: "w-full shrink-0 z-20 bg-background border-b border-border"
15
+ }, j = {
16
+ key: 0,
17
+ class: "shrink-0 w-full border-b border-border"
18
+ }, H = { class: "flex flex-col h-full" }, I = {
19
+ class: "flex-1 overflow-y-auto px-3.5 pt-4 scrollbar-thin scrollbar-stable",
20
+ style: { "will-change": "transform", contain: "layout style" }
21
+ }, Y = {
22
+ key: 0,
23
+ class: "mt-auto pt-2 border-t border-border px-3 py-2"
24
+ }, ee = /* @__PURE__ */ V({
25
+ __name: "AppShellLayoutDock",
26
+ setup(K) {
27
+ const y = _(P), {
28
+ props: l,
29
+ sidebarHidden: w,
30
+ isMobileMenuOpen: i,
31
+ isSidebarVisible: k,
32
+ toggleSidebar: x,
33
+ pageTitle: $,
34
+ breadcrumbData: u,
35
+ breakpointClasses: c,
36
+ nestedTabsItems: g,
37
+ activeNestedTab: f,
38
+ handleNestedTabClick: C,
39
+ mainScrollRef: S,
40
+ layoutMainRef: T
41
+ } = y;
42
+ return (s, d) => (a(), o("div", A, [
43
+ m(z, {
44
+ "enter-active-class": "transition-all duration-300 ease-in-out",
45
+ "leave-active-class": "transition-all duration-300 ease-in-out",
46
+ "enter-from-class": "opacity-0 -translate-x-2 scale-95",
47
+ "enter-to-class": "opacity-100 translate-x-0 scale-100",
48
+ "leave-from-class": "opacity-100 translate-x-0 scale-100",
49
+ "leave-to-class": "opacity-0 -translate-x-2 scale-95"
50
+ }, {
51
+ default: h(() => [
52
+ N(n("nav", {
53
+ class: b([
54
+ "shrink-0 self-center flex flex-col items-center bg-background rounded-2xl max-sm:rounded-none border border-border max-sm:border-0 shadow-sm overflow-hidden z-30 py-3 px-2 gap-0.5",
55
+ e(c).mobileTrigger === "md:hidden" ? "max-md:hidden" : "",
56
+ e(l).class
57
+ ]),
58
+ role: "navigation",
59
+ "aria-label": "Sidebar dock"
60
+ }, [
61
+ s.$slots["sidebar-header"] ? (a(), o("div", D, [
62
+ r(s.$slots, "sidebar-header")
63
+ ])) : t("", !0),
64
+ n("div", {
65
+ class: b(["flex flex-col items-center gap-0.5 w-full", e(l).contentClass])
66
+ }, [
67
+ r(s.$slots, "sidebar")
68
+ ], 2),
69
+ s.$slots["sidebar-footer"] ? (a(), o("div", {
70
+ key: 1,
71
+ class: b(["flex flex-col items-center w-full", e(l).rightClass])
72
+ }, [
73
+ r(s.$slots, "sidebar-footer")
74
+ ], 2)) : t("", !0)
75
+ ], 2), [
76
+ [R, !e(w)]
77
+ ])
78
+ ]),
79
+ _: 3
80
+ }),
81
+ n("div", O, [
82
+ s.$slots.header ? (a(), o("header", U, [
83
+ r(s.$slots, "header", {
84
+ isOpen: e(i),
85
+ toggle: () => i.value = !e(i),
86
+ sidebarVisible: e(k),
87
+ toggleSidebar: e(x),
88
+ breadcrumbItems: e(u).items.value,
89
+ pageTitle: e($)
90
+ })
91
+ ])) : t("", !0),
92
+ s.$slots.main ? (a(), o("main", {
93
+ key: 1,
94
+ ref_key: "layoutMainRef",
95
+ ref: T,
96
+ class: "flex-1 overflow-y-auto w-full relative h-full flex flex-col min-h-0 scrollbar-thin scrollbar-stable"
97
+ }, [
98
+ e(l).renderNestedTabs && e(g).length > 0 ? (a(), o("div", j, [
99
+ m(L, {
100
+ modelValue: e(f),
101
+ "onUpdate:modelValue": d[0] || (d[0] = (p) => v(f) ? f.value = p : null),
102
+ onChange: e(C),
103
+ items: e(g)
104
+ }, null, 8, ["modelValue", "onChange", "items"])
105
+ ])) : t("", !0),
106
+ e(l).breadcrumb && e(l).breadcrumbPosition === "main" && e(u).items.value.length > 1 ? (a(), o("div", {
107
+ key: 1,
108
+ class: b(["shrink-0 w-full px-6 py-2 border-b border-border", e(l).breadcrumbClass])
109
+ }, [
110
+ m(e(M), {
111
+ items: e(u).items.value,
112
+ variant: e(l).breadcrumbVariant,
113
+ separator: e(l).breadcrumbSeparator,
114
+ size: e(l).breadcrumbSize
115
+ }, null, 8, ["items", "variant", "separator", "size"])
116
+ ], 2)) : t("", !0),
117
+ n("div", {
118
+ ref_key: "mainScrollRef",
119
+ ref: S,
120
+ style: { "will-change": "transform", contain: "layout style" },
121
+ class: "flex-1 overflow-y-auto w-full relative h-full scrollbar-thin scrollbar-stable"
122
+ }, [
123
+ r(s.$slots, "main")
124
+ ], 512)
125
+ ], 512)) : t("", !0)
126
+ ]),
127
+ m(E, {
128
+ show: e(i),
129
+ "onUpdate:show": d[1] || (d[1] = (p) => v(i) ? i.value = p : null),
130
+ position: "left",
131
+ size: "sm",
132
+ triggerClass: e(c).mobileTrigger,
133
+ class: b(["z-60", e(c).mobileTrigger]),
134
+ headerClass: "pl-3! pr-4.5! py-3!",
135
+ bodyClass: "p-0!"
136
+ }, {
137
+ header: h(() => [
138
+ r(s.$slots, "mobile-sidebar-header", {}, () => [
139
+ r(s.$slots, "sidebar-header", {}, () => [
140
+ d[2] || (d[2] = B("Brand", -1))
141
+ ])
142
+ ])
143
+ ]),
144
+ default: h(() => [
145
+ n("div", H, [
146
+ n("div", I, [
147
+ r(s.$slots, "mobile-sidebar", {}, () => [
148
+ r(s.$slots, "sidebar")
149
+ ])
150
+ ]),
151
+ s.$slots["mobile-sidebar-footer"] || s.$slots["sidebar-footer"] ? (a(), o("div", Y, [
152
+ r(s.$slots, "mobile-sidebar-footer", {}, () => [
153
+ r(s.$slots, "sidebar-footer")
154
+ ])
155
+ ])) : t("", !0)
156
+ ])
157
+ ]),
158
+ _: 3
159
+ }, 8, ["show", "triggerClass", "class"])
160
+ ]));
161
+ }
162
+ });
163
+ export {
164
+ ee as default
165
+ };
@@ -0,0 +1,4 @@
1
+ import f from "./AppShellLayoutDock.vue.js";
2
+ export {
3
+ f as default
4
+ };
@@ -0,0 +1,173 @@
1
+ import { defineComponent as V, inject as z, openBlock as a, createElementBlock as o, createVNode as m, Transition as _, withCtx as p, withDirectives as N, createElementVNode as t, normalizeClass as b, unref as e, renderSlot as l, createCommentVNode as i, vShow as R, isRef as g, createSlots as B, createTextVNode as E } from "vue";
2
+ import L from "../SidePanel.vue.js";
3
+ import M from "../Navbar/NavbarTabs.vue.js";
4
+ /* empty css */
5
+ import P from "../Breadcrumb/Breadcrumb.vue.js";
6
+ import "@iconify/vue";
7
+ /* empty css */
8
+ import { APPSHELL_LAYOUT_KEY as A } from "./useAppShell.js";
9
+ const H = { class: "vlite-app-layout flex flex-row w-full h-full bg-background overflow-hidden" }, O = {
10
+ key: 0,
11
+ class: "flex items-center"
12
+ }, U = { class: "flex flex-col flex-1 min-w-0 h-full overflow-hidden gap-2 max-sm:p-0 max-sm:gap-0" }, D = {
13
+ key: 0,
14
+ class: "w-full shrink-0 z-20 px-5 pt-2 border-hidden"
15
+ }, I = { class: "w-full shrink-0 z-20 bg-background overflow-hidden rounded-xl max-sm:rounded-none border border-border max-sm:border-0" }, Y = {
16
+ key: 0,
17
+ class: "shrink-0 w-full px-6"
18
+ }, j = { class: "flex flex-col h-full" }, K = {
19
+ class: "flex-1 overflow-y-auto scrollbar-thin scrollbar-stable",
20
+ style: { "will-change": "transform", contain: "layout style" }
21
+ }, q = {
22
+ key: 0,
23
+ class: "mt-auto"
24
+ }, le = /* @__PURE__ */ V({
25
+ __name: "AppShellLayoutHeaderShell",
26
+ setup(F) {
27
+ const y = z(A), {
28
+ props: r,
29
+ sidebarHidden: w,
30
+ isMobileMenuOpen: d,
31
+ isSidebarVisible: k,
32
+ toggleSidebar: $,
33
+ pageTitle: x,
34
+ breadcrumbData: f,
35
+ breakpointClasses: u,
36
+ nestedTabsItems: v,
37
+ activeNestedTab: c,
38
+ handleNestedTabClick: C,
39
+ mainScrollRef: S,
40
+ layoutMainRef: T
41
+ } = y;
42
+ return (s, n) => (a(), o("div", H, [
43
+ m(_, {
44
+ "enter-active-class": "transition-all duration-300 ease-in-out",
45
+ "leave-active-class": "transition-all duration-300 ease-in-out",
46
+ "enter-from-class": "opacity-0 -translate-x-2",
47
+ "enter-to-class": "opacity-100 translate-x-0",
48
+ "leave-from-class": "opacity-100 translate-x-0",
49
+ "leave-to-class": "opacity-0 -translate-x-2"
50
+ }, {
51
+ default: p(() => [
52
+ N(t("nav", {
53
+ class: b([
54
+ "shrink-0 h-full flex flex-col bg-background border-r border-border overflow-hidden z-30",
55
+ e(u).mobileTrigger === "md:hidden" ? "max-md:hidden" : "",
56
+ e(r).class
57
+ ]),
58
+ role: "navigation",
59
+ "aria-label": "Sidebar"
60
+ }, [
61
+ s.$slots["sidebar-header"] ? (a(), o("div", O, [
62
+ l(s.$slots, "sidebar-header")
63
+ ])) : i("", !0),
64
+ t("div", {
65
+ class: b(["flex-1 overflow-y-auto overflow-x-hidden scrollbar-thin scrollbar-stable", e(r).contentClass]),
66
+ style: { "will-change": "transform", contain: "layout style" }
67
+ }, [
68
+ l(s.$slots, "sidebar")
69
+ ], 2),
70
+ s.$slots["sidebar-footer"] ? (a(), o("div", {
71
+ key: 1,
72
+ class: b(["shrink-0", e(r).rightClass])
73
+ }, [
74
+ l(s.$slots, "sidebar-footer")
75
+ ], 2)) : i("", !0)
76
+ ], 2), [
77
+ [R, !e(w)]
78
+ ])
79
+ ]),
80
+ _: 3
81
+ }),
82
+ t("div", U, [
83
+ s.$slots.header ? (a(), o("header", D, [
84
+ t("div", I, [
85
+ l(s.$slots, "header", {
86
+ isOpen: e(d),
87
+ toggle: () => d.value = !e(d),
88
+ sidebarVisible: e(k),
89
+ toggleSidebar: e($),
90
+ breadcrumbItems: e(f).items.value,
91
+ pageTitle: e(x)
92
+ })
93
+ ])
94
+ ])) : i("", !0),
95
+ s.$slots.main ? (a(), o("main", {
96
+ key: 1,
97
+ ref_key: "layoutMainRef",
98
+ ref: T,
99
+ class: "flex-1 overflow-hidden w-full relative flex flex-col min-h-0 bg-background"
100
+ }, [
101
+ e(r).renderNestedTabs && e(v).length > 0 ? (a(), o("div", Y, [
102
+ m(M, {
103
+ modelValue: e(c),
104
+ "onUpdate:modelValue": n[0] || (n[0] = (h) => g(c) ? c.value = h : null),
105
+ onChange: e(C),
106
+ items: e(v)
107
+ }, null, 8, ["modelValue", "onChange", "items"])
108
+ ])) : i("", !0),
109
+ e(r).breadcrumb && e(r).breadcrumbPosition === "main" && e(f).items.value.length > 1 ? (a(), o("div", {
110
+ key: 1,
111
+ class: b(["shrink-0 w-full border-b border-border px-6 py-2", e(r).breadcrumbClass])
112
+ }, [
113
+ m(e(P), {
114
+ items: e(f).items.value,
115
+ variant: e(r).breadcrumbVariant,
116
+ separator: e(r).breadcrumbSeparator,
117
+ size: e(r).breadcrumbSize
118
+ }, null, 8, ["items", "variant", "separator", "size"])
119
+ ], 2)) : i("", !0),
120
+ t("div", {
121
+ ref_key: "mainScrollRef",
122
+ ref: S,
123
+ style: { "will-change": "transform", contain: "layout style" },
124
+ class: "flex-1 overflow-y-auto w-full relative h-full scrollbar-thin scrollbar-stable px-6 pb-4 mt-4"
125
+ }, [
126
+ l(s.$slots, "main")
127
+ ], 512)
128
+ ], 512)) : i("", !0)
129
+ ]),
130
+ m(L, {
131
+ show: e(d),
132
+ "onUpdate:show": n[1] || (n[1] = (h) => g(d) ? d.value = h : null),
133
+ position: "left",
134
+ size: "sm",
135
+ triggerClass: e(u).mobileTrigger,
136
+ class: b(["z-60", e(u).mobileTrigger]),
137
+ headerClass: "pl-3! pr-4.5! py-3!",
138
+ bodyClass: "p-0!"
139
+ }, B({
140
+ default: p(() => [
141
+ t("div", j, [
142
+ t("div", K, [
143
+ l(s.$slots, "mobile-sidebar", {}, () => [
144
+ l(s.$slots, "sidebar")
145
+ ])
146
+ ]),
147
+ s.$slots["mobile-sidebar-footer"] || s.$slots["sidebar-footer"] ? (a(), o("div", q, [
148
+ l(s.$slots, "mobile-sidebar-footer", {}, () => [
149
+ l(s.$slots, "sidebar-footer")
150
+ ])
151
+ ])) : i("", !0)
152
+ ])
153
+ ]),
154
+ _: 2
155
+ }, [
156
+ s.$slots["mobile-sidebar-header"] || s.$slots["sidebar-header"] ? {
157
+ name: "header",
158
+ fn: p(() => [
159
+ l(s.$slots, "mobile-sidebar-header", {}, () => [
160
+ l(s.$slots, "sidebar-header", {}, () => [
161
+ n[2] || (n[2] = E("Brand", -1))
162
+ ])
163
+ ])
164
+ ]),
165
+ key: "0"
166
+ } : void 0
167
+ ]), 1032, ["show", "triggerClass", "class"])
168
+ ]));
169
+ }
170
+ });
171
+ export {
172
+ le as default
173
+ };
@@ -0,0 +1,4 @@
1
+ import f from "./AppShellLayoutHeaderShell.vue.js";
2
+ export {
3
+ f as default
4
+ };
@@ -0,0 +1,166 @@
1
+ import { defineComponent as x, inject as z, openBlock as r, createElementBlock as o, createVNode as m, Transition as N, withCtx as p, withDirectives as R, createElementVNode as d, normalizeClass as b, unref as e, renderSlot as s, createCommentVNode as t, vShow as _, isRef as y, createSlots as B, createTextVNode as E } from "vue";
2
+ import L from "../SidePanel.vue.js";
3
+ import M from "../Navbar/NavbarTabs.vue.js";
4
+ /* empty css */
5
+ import P from "../Breadcrumb/Breadcrumb.vue.js";
6
+ import "@iconify/vue";
7
+ /* empty css */
8
+ import { APPSHELL_LAYOUT_KEY as A } from "./useAppShell.js";
9
+ const O = { class: "vlite-app-layout flex flex-row w-full h-full bg-body overflow-hidden" }, U = { class: "flex flex-col flex-1 min-w-0 h-full overflow-hidden" }, D = {
10
+ key: 0,
11
+ class: "w-full shrink-0 z-20 border-b bg-background"
12
+ }, H = {
13
+ key: 0,
14
+ class: "shrink-0 w-full"
15
+ }, I = { class: "flex flex-col h-full" }, Y = {
16
+ class: "flex-1 overflow-y-auto px-3.5 pt-4 scrollbar-thin scrollbar-stable",
17
+ style: { "will-change": "transform", contain: "layout style" }
18
+ }, j = {
19
+ key: 0,
20
+ class: "mt-auto"
21
+ }, ee = /* @__PURE__ */ x({
22
+ __name: "AppShellLayoutSidebarFirst",
23
+ setup(F) {
24
+ const g = z(A), {
25
+ props: a,
26
+ sidebarHidden: w,
27
+ isMobileMenuOpen: i,
28
+ isSidebarVisible: k,
29
+ toggleSidebar: $,
30
+ pageTitle: C,
31
+ breadcrumbData: f,
32
+ breakpointClasses: u,
33
+ nestedTabsItems: v,
34
+ activeNestedTab: c,
35
+ handleNestedTabClick: S,
36
+ mainScrollRef: T,
37
+ layoutMainRef: V
38
+ } = g;
39
+ return (l, n) => (r(), o("div", O, [
40
+ m(N, {
41
+ "enter-active-class": "transition-all duration-300 ease-in-out",
42
+ "leave-active-class": "transition-all duration-300 ease-in-out",
43
+ "enter-from-class": "opacity-0 -translate-x-2",
44
+ "enter-to-class": "opacity-100 translate-x-0",
45
+ "leave-from-class": "opacity-100 translate-x-0",
46
+ "leave-to-class": "opacity-0 -translate-x-2"
47
+ }, {
48
+ default: p(() => [
49
+ R(d("nav", {
50
+ class: b([
51
+ "shrink-0 h-full flex flex-col bg-background border-r border-border overflow-hidden z-30",
52
+ e(u).mobileTrigger === "md:hidden" ? "max-md:hidden" : "",
53
+ e(a).class
54
+ ]),
55
+ role: "navigation",
56
+ "aria-label": "Sidebar"
57
+ }, [
58
+ l.$slots["sidebar-header"] ? s(l.$slots, "sidebar-header", { key: 0 }) : t("", !0),
59
+ d("div", {
60
+ class: b(["flex-1 overflow-y-auto overflow-x-hidden scrollbar-thin scrollbar-stable", e(a).contentClass]),
61
+ style: { "will-change": "transform", contain: "layout style" }
62
+ }, [
63
+ s(l.$slots, "sidebar")
64
+ ], 2),
65
+ l.$slots["sidebar-footer"] ? (r(), o("div", {
66
+ key: 1,
67
+ class: b(["shrink-0", e(a).rightClass])
68
+ }, [
69
+ s(l.$slots, "sidebar-footer")
70
+ ], 2)) : t("", !0)
71
+ ], 2), [
72
+ [_, !e(w)]
73
+ ])
74
+ ]),
75
+ _: 3
76
+ }),
77
+ d("div", U, [
78
+ l.$slots.header ? (r(), o("header", D, [
79
+ s(l.$slots, "header", {
80
+ isOpen: e(i),
81
+ toggle: () => i.value = !e(i),
82
+ sidebarVisible: e(k),
83
+ toggleSidebar: e($),
84
+ breadcrumbItems: e(f).items.value,
85
+ pageTitle: e(C)
86
+ })
87
+ ])) : t("", !0),
88
+ l.$slots.main ? (r(), o("main", {
89
+ key: 1,
90
+ ref_key: "layoutMainRef",
91
+ ref: V,
92
+ class: "flex-1 overflow-y-auto w-full relative h-full flex flex-col min-h-0 scrollbar-thin scrollbar-stable"
93
+ }, [
94
+ e(a).renderNestedTabs && e(v).length > 0 ? (r(), o("div", H, [
95
+ m(M, {
96
+ modelValue: e(c),
97
+ "onUpdate:modelValue": n[0] || (n[0] = (h) => y(c) ? c.value = h : null),
98
+ onChange: e(S),
99
+ items: e(v)
100
+ }, null, 8, ["modelValue", "onChange", "items"])
101
+ ])) : t("", !0),
102
+ e(a).breadcrumb && e(a).breadcrumbPosition === "main" && e(f).items.value.length > 1 ? (r(), o("div", {
103
+ key: 1,
104
+ class: b(["shrink-0 w-full border-b border-border px-6 py-2", e(a).breadcrumbClass])
105
+ }, [
106
+ m(e(P), {
107
+ items: e(f).items.value,
108
+ variant: e(a).breadcrumbVariant,
109
+ separator: e(a).breadcrumbSeparator,
110
+ size: e(a).breadcrumbSize
111
+ }, null, 8, ["items", "variant", "separator", "size"])
112
+ ], 2)) : t("", !0),
113
+ d("div", {
114
+ ref_key: "mainScrollRef",
115
+ ref: T,
116
+ style: { "will-change": "transform", contain: "layout style" },
117
+ class: "flex-1 overflow-y-auto w-full relative h-full scrollbar-thin scrollbar-stable"
118
+ }, [
119
+ s(l.$slots, "main")
120
+ ], 512)
121
+ ], 512)) : t("", !0)
122
+ ]),
123
+ m(L, {
124
+ show: e(i),
125
+ "onUpdate:show": n[1] || (n[1] = (h) => y(i) ? i.value = h : null),
126
+ position: "left",
127
+ size: "sm",
128
+ triggerClass: e(u).mobileTrigger,
129
+ class: b(["z-60", e(u).mobileTrigger]),
130
+ headerClass: "pl-3! pr-4.5! py-3!",
131
+ bodyClass: "p-0!"
132
+ }, B({
133
+ default: p(() => [
134
+ d("div", I, [
135
+ d("div", Y, [
136
+ s(l.$slots, "mobile-sidebar", {}, () => [
137
+ s(l.$slots, "sidebar")
138
+ ])
139
+ ]),
140
+ l.$slots["mobile-sidebar-footer"] || l.$slots["sidebar-footer"] ? (r(), o("div", j, [
141
+ s(l.$slots, "mobile-sidebar-footer", {}, () => [
142
+ s(l.$slots, "sidebar-footer")
143
+ ])
144
+ ])) : t("", !0)
145
+ ])
146
+ ]),
147
+ _: 2
148
+ }, [
149
+ l.$slots["mobile-sidebar-header"] || l.$slots["sidebar-header"] ? {
150
+ name: "header",
151
+ fn: p(() => [
152
+ s(l.$slots, "mobile-sidebar-header", {}, () => [
153
+ s(l.$slots, "sidebar-header", {}, () => [
154
+ n[2] || (n[2] = E("Brand", -1))
155
+ ])
156
+ ])
157
+ ]),
158
+ key: "0"
159
+ } : void 0
160
+ ]), 1032, ["show", "triggerClass", "class"])
161
+ ]));
162
+ }
163
+ });
164
+ export {
165
+ ee as default
166
+ };
@@ -0,0 +1,4 @@
1
+ import f from "./AppShellLayoutSidebarFirst.vue.js";
2
+ export {
3
+ f as default
4
+ };
@@ -0,0 +1,134 @@
1
+ import { computed as t, shallowRef as $, ref as i, provide as C, onMounted as z, onUnmounted as R, watch as S, nextTick as A } from "vue";
2
+ import { useRoute as I } from "vue-router";
3
+ import { useLocalStorage as P, useBreakpoints as Y, breakpointsTailwind as D } from "@vueuse/core";
4
+ import { useBreadcrumb as U } from "../../composables/useBreadcrumb.js";
5
+ const _ = /* @__PURE__ */ Symbol("appshell-layout-ctx");
6
+ function G(e, v) {
7
+ const p = e.breadcrumb ? U({
8
+ homeIcon: e.breadcrumbHomeIcon,
9
+ labelMap: e.breadcrumbLabels || {}
10
+ }) : { items: t(() => []) }, c = $([]), m = i("");
11
+ C("navbar-context", {
12
+ compact: t(() => e.compact),
13
+ renderNestedTabs: t(() => e.renderNestedTabs),
14
+ setNestedTabs: (l, n) => {
15
+ c.value = l, m.value = n;
16
+ }
17
+ });
18
+ const u = i(!1), o = i(!1), a = i(null), f = i(null), d = P("vlite-appshell-sidebar-visible", !0), L = t(() => e.sidebarToggle && v), E = () => {
19
+ d.value = !d.value;
20
+ }, N = t(() => L.value && !d.value), j = (l) => {
21
+ c.value.find((s) => s.value === l) && (typeof l == "string" && l.startsWith("/") ? import("vue-router").then(({ useRouter: s }) => {
22
+ s().push(l).catch(() => {
23
+ });
24
+ }) : m.value = l);
25
+ }, w = () => {
26
+ o.value = window.scrollY > 10;
27
+ };
28
+ z(() => {
29
+ window.addEventListener("scroll", w, { passive: !0 });
30
+ }), R(() => {
31
+ window.removeEventListener("scroll", w);
32
+ });
33
+ const k = t(() => {
34
+ const l = e.mobileBreakpoint || "md", n = {
35
+ sm: "sm:hidden",
36
+ md: "md:hidden",
37
+ lg: "lg:hidden",
38
+ xl: "xl:hidden"
39
+ }, s = {
40
+ sm: "hidden sm:flex",
41
+ md: "hidden md:flex",
42
+ lg: "hidden lg:flex",
43
+ xl: "hidden xl:flex"
44
+ }, r = {
45
+ sm: `flex flex-col max-sm:w-full ${e.compact ? "w-20" : ""} h-auto sm:h-full sm:max-h-screen shrink-0`,
46
+ md: `flex flex-col max-md:w-full ${e.compact ? "w-20" : ""} h-auto md:h-full md:max-h-screen shrink-0`,
47
+ lg: `flex flex-col max-lg:w-full ${e.compact ? "w-20" : ""} h-auto lg:h-full lg:max-h-screen shrink-0`,
48
+ xl: `flex flex-col max-xl:w-full ${e.compact ? "w-20" : ""} h-auto xl:h-full xl:max-h-screen shrink-0`
49
+ }, h = {
50
+ sm: "sm:hidden flex items-center justify-between px-4 py-3 shrink-0 bg-background",
51
+ md: "md:hidden flex items-center justify-between px-4 py-3 shrink-0 bg-background",
52
+ lg: "lg:hidden flex items-center justify-between px-4 py-3 shrink-0 bg-background",
53
+ xl: "xl:hidden flex items-center justify-between px-4 py-3 shrink-0 bg-background"
54
+ }, T = {
55
+ sm: "hidden sm:flex flex-col h-full w-full overflow-hidden",
56
+ md: "hidden md:flex flex-col h-full w-full overflow-hidden",
57
+ lg: "hidden lg:flex flex-col h-full w-full overflow-hidden",
58
+ xl: "hidden xl:flex flex-col h-full w-full overflow-hidden"
59
+ }, x = {
60
+ sm: "hidden sm:flex",
61
+ md: "hidden md:flex",
62
+ lg: "hidden lg:flex",
63
+ xl: "hidden xl:flex"
64
+ };
65
+ return {
66
+ mobileTrigger: n[l],
67
+ desktopContent: s[l],
68
+ sidebarLayout: r[l],
69
+ mobileHeader: h[l],
70
+ desktopSidebar: T[l],
71
+ desktopOnly: x[l]
72
+ };
73
+ }), B = t(() => {
74
+ const l = e.variant === "sidebar", n = {
75
+ fixed: "relative z-40",
76
+ sticky: "relative z-40",
77
+ relative: "relative z-10",
78
+ absolute: "relative z-40"
79
+ }, s = "bg-body", r = [
80
+ e.glass && (o.value || l || e.floating) ? "bg-background/95" : "bg-background",
81
+ e.border && !e.floating ? l ? "border-r border-border" : "border-b border-border" : "",
82
+ e.floating ? "m-4 rounded shadow-lg border border-border/50" : "",
83
+ o.value && !e.floating && !l && e.position === "sticky" ? "shadow-sm" : ""
84
+ ], h = e.mobileBreakpoint || "md", x = l ? {
85
+ sm: "max-sm:hidden",
86
+ md: "max-md:hidden",
87
+ lg: "max-lg:hidden",
88
+ xl: "max-xl:hidden"
89
+ }[h] : "";
90
+ let g = "";
91
+ return l ? g = k.value.sidebarLayout : g = `flex items-center gap-4 w-full px-4 sm:px-6 lg:px-8 ${e.height}`, [s, n[e.position], ...r, g, x, e.class].filter(Boolean).join(" ");
92
+ }), H = t(() => {
93
+ if (e.variant === "sidebar")
94
+ return "flex-1 py-4 overflow-y-auto scrollbar-thin scrollbar-stable";
95
+ if (e.centerPosition === "left")
96
+ return "flex items-center justify-start";
97
+ }), b = I();
98
+ S(
99
+ () => b.path,
100
+ () => {
101
+ u.value = !1, A(() => {
102
+ a.value && (a.value.scrollTop = 0, a.value.firstElementChild && (a.value.firstElementChild.scrollTop = 0)), f.value && (f.value.scrollTop = 0);
103
+ });
104
+ }
105
+ );
106
+ const M = Y(D).greater(e.mobileBreakpoint);
107
+ S(M, (l) => {
108
+ l && (u.value = !1);
109
+ });
110
+ const O = t(() => b.meta?.title || b.name || ""), y = {
111
+ props: e,
112
+ isLayoutMode: v,
113
+ isMobileMenuOpen: u,
114
+ isSidebarVisible: d,
115
+ sidebarHidden: N,
116
+ pageTitle: O,
117
+ isScrolled: o,
118
+ mainScrollRef: a,
119
+ layoutMainRef: f,
120
+ toggleSidebar: E,
121
+ handleNestedTabClick: j,
122
+ breakpointClasses: k,
123
+ containerClasses: B,
124
+ centerClasses: H,
125
+ breadcrumbData: p,
126
+ nestedTabsItems: c,
127
+ activeNestedTab: m
128
+ };
129
+ return C(_, y), y;
130
+ }
131
+ export {
132
+ _ as APPSHELL_LAYOUT_KEY,
133
+ G as useAppShell
134
+ };
@@ -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 {