@owocow/saber-ui 0.1.11 → 0.1.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- import { _ as f } from "../SaberAppSidebar.vue_vue_type_script_setup_true_lang-CEWQTjEi.js";
1
+ import { _ as f } from "../SaberAppSidebar.vue_vue_type_script_setup_true_lang-Cwuj9VNi.js";
2
2
  export {
3
3
  f as default
4
4
  };
@@ -0,0 +1,51 @@
1
+ import { ButtonProps } from '@nuxt/ui/components/Button.vue';
2
+ import { DrawerProps } from '@nuxt/ui/components/Drawer.vue';
3
+ import { SaberNavigationSearchGroup, SaberNavigationSearchUI } from '../navigation/SaberAppSidebar.types';
4
+ export type SaberAppLayoutMode = 'phone' | 'pad' | 'desktop';
5
+ export type SaberAppLayoutMaxWidth = number | string | 'full' | false;
6
+ export interface SaberAppLayoutProps {
7
+ title?: string;
8
+ description?: string;
9
+ maxWidth?: SaberAppLayoutMaxWidth;
10
+ navigationKey?: string | number;
11
+ sidebarWidth?: number | string;
12
+ phoneBreakpoint?: number;
13
+ padBreakpoint?: number;
14
+ searchGroups?: SaberNavigationSearchGroup[];
15
+ searchShortcut?: string;
16
+ searchLabel?: string;
17
+ menuOpenLabel?: string;
18
+ menuCloseLabel?: string;
19
+ menuOpenIcon?: string;
20
+ menuCloseIcon?: string;
21
+ ui?: SaberAppLayoutUI;
22
+ }
23
+ export interface SaberAppLayoutNavigationSlotContext {
24
+ mode: SaberAppLayoutMode;
25
+ drawerOpen: boolean;
26
+ openDrawer: () => void;
27
+ closeDrawer: () => void;
28
+ toggleDrawer: () => void;
29
+ }
30
+ export interface SaberAppLayoutUI {
31
+ root?: string;
32
+ desktopSidebar?: string;
33
+ main?: string;
34
+ header?: string;
35
+ headerHeading?: string;
36
+ title?: string;
37
+ description?: string;
38
+ headerSuffix?: string;
39
+ pageHeaderSuffixTarget?: string;
40
+ content?: string;
41
+ phoneDrawer?: DrawerProps['ui'];
42
+ phoneDrawerContent?: string;
43
+ phoneSidebarFrame?: string;
44
+ padDrawer?: DrawerProps['ui'];
45
+ padDrawerContent?: string;
46
+ padSidebarFrame?: string;
47
+ overlay?: string;
48
+ dock?: string;
49
+ search?: SaberNavigationSearchUI;
50
+ menuButton?: ButtonProps['ui'];
51
+ }
@@ -0,0 +1,78 @@
1
+ import { SaberNavigationSelectPayload } from '../navigation/SaberAppSidebar.types';
2
+ import { SaberAppLayoutNavigationSlotContext, SaberAppLayoutProps } from './SaberAppLayout.types';
3
+ type __VLS_Props = SaberAppLayoutProps;
4
+ type __VLS_PublicProps = {
5
+ 'drawerOpen'?: boolean;
6
+ 'searchOpen'?: boolean;
7
+ } & __VLS_Props;
8
+ declare function __VLS_template(): {
9
+ attrs: Partial<{}>;
10
+ slots: Readonly<{
11
+ default?: () => unknown;
12
+ sidebar?: (props: SaberAppLayoutNavigationSlotContext) => unknown;
13
+ 'phone-sidebar'?: (props: SaberAppLayoutNavigationSlotContext) => unknown;
14
+ 'pad-sidebar'?: (props: SaberAppLayoutNavigationSlotContext) => unknown;
15
+ 'header-title'?: (props: {
16
+ title?: string;
17
+ }) => unknown;
18
+ 'header-description'?: (props: {
19
+ description?: string;
20
+ }) => unknown;
21
+ 'header-suffix'?: () => unknown;
22
+ dock?: (props: SaberAppLayoutNavigationSlotContext) => unknown;
23
+ }> & {
24
+ default?: () => unknown;
25
+ sidebar?: (props: SaberAppLayoutNavigationSlotContext) => unknown;
26
+ 'phone-sidebar'?: (props: SaberAppLayoutNavigationSlotContext) => unknown;
27
+ 'pad-sidebar'?: (props: SaberAppLayoutNavigationSlotContext) => unknown;
28
+ 'header-title'?: (props: {
29
+ title?: string;
30
+ }) => unknown;
31
+ 'header-description'?: (props: {
32
+ description?: string;
33
+ }) => unknown;
34
+ 'header-suffix'?: () => unknown;
35
+ dock?: (props: SaberAppLayoutNavigationSlotContext) => unknown;
36
+ };
37
+ refs: {
38
+ suffixTarget: HTMLDivElement;
39
+ menuButton: unknown;
40
+ };
41
+ rootEl: HTMLDivElement;
42
+ };
43
+ type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
44
+ declare const __VLS_component: import('vue').DefineComponent<__VLS_PublicProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
45
+ searchSelect: (payload: SaberNavigationSelectPayload) => any;
46
+ "update:drawerOpen": (value: boolean) => any;
47
+ "update:searchOpen": (value: boolean) => any;
48
+ }, string, import('vue').PublicProps, Readonly<__VLS_PublicProps> & Readonly<{
49
+ onSearchSelect?: ((payload: SaberNavigationSelectPayload) => any) | undefined;
50
+ "onUpdate:drawerOpen"?: ((value: boolean) => any) | undefined;
51
+ "onUpdate:searchOpen"?: ((value: boolean) => any) | undefined;
52
+ }>, {
53
+ title: string;
54
+ description: string;
55
+ ui: import('./SaberAppLayout.types').SaberAppLayoutUI;
56
+ maxWidth: import('./SaberAppLayout.types').SaberAppLayoutMaxWidth;
57
+ navigationKey: string | number;
58
+ sidebarWidth: number | string;
59
+ phoneBreakpoint: number;
60
+ padBreakpoint: number;
61
+ searchGroups: import('../..').SaberNavigationSearchGroup[];
62
+ searchShortcut: string;
63
+ searchLabel: string;
64
+ menuOpenLabel: string;
65
+ menuCloseLabel: string;
66
+ menuOpenIcon: string;
67
+ menuCloseIcon: string;
68
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
69
+ suffixTarget: HTMLDivElement;
70
+ menuButton: unknown;
71
+ }, HTMLDivElement>;
72
+ declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
73
+ export default _default;
74
+ type __VLS_WithTemplateSlots<T, S> = T & {
75
+ new (): {
76
+ $slots: S;
77
+ };
78
+ };
@@ -49,6 +49,7 @@ export interface SaberAppSidebarUI {
49
49
  viewport?: string;
50
50
  panel?: string;
51
51
  sectionList?: string;
52
+ rootFooter?: string;
52
53
  group?: string;
53
54
  groupLabel?: string;
54
55
  childList?: string;
@@ -16,6 +16,7 @@ declare function __VLS_template(): {
16
16
  'search-empty'?(_: {
17
17
  searchTerm: string;
18
18
  }): any;
19
+ 'root-footer'?(_: {}): any;
19
20
  footer?(_: {}): any;
20
21
  };
21
22
  refs: {};
@@ -1,19 +1,21 @@
1
- import { reactive as c, provide as i, inject as o, watchEffect as d, toValue as r, onBeforeUnmount as s, ref as u } from "vue";
2
- const n = Symbol("saber-page-header-state"), a = Symbol("saber-page-header-suffix-target");
1
+ import { reactive as c, provide as o, inject as r, watchEffect as u, toValue as i, onBeforeUnmount as d, ref as f } from "vue";
2
+ const n = Symbol.for("@owocow/saber-ui:page-header-state"), a = Symbol.for(
3
+ "@owocow/saber-ui:page-header-suffix-target"
4
+ );
3
5
  function l(t) {
4
6
  const e = c({ title: void 0, description: void 0 });
5
- return i(n, e), i(a, t), e;
7
+ return o(n, e), o(a, t), e;
6
8
  }
7
9
  function E(t) {
8
- const e = o(n, null);
9
- e && (d(() => {
10
- e.title = r(t.title), e.description = r(t.description);
11
- }), s(() => {
10
+ const e = r(n, null);
11
+ e && (u(() => {
12
+ e.title = i(t.title), e.description = i(t.description);
13
+ }), d(() => {
12
14
  e.title = void 0, e.description = void 0;
13
15
  }));
14
16
  }
15
17
  function p() {
16
- return o(a, u(null));
18
+ return r(a, f(null));
17
19
  }
18
20
  export {
19
21
  l as providePageHeader,
@@ -17,8 +17,8 @@ declare const _default: import('vue').DefineComponent<__VLS_PublicProps, {}, {},
17
17
  "onUpdate:modelValue"?: ((value: any) => any) | undefined;
18
18
  }>, {
19
19
  placeholder: string;
20
- multiple: boolean;
21
20
  disabled: boolean;
21
+ multiple: boolean;
22
22
  clearable: boolean;
23
23
  items: PopSelectOption[];
24
24
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
@@ -102,9 +102,9 @@ declare const _default: import('vue').DefineComponent<__VLS_PublicProps, {
102
102
  "onUpdate:modelValue"?: ((value: any) => any) | undefined;
103
103
  onRemoveError?: ((error: Error, value: any) => any) | undefined;
104
104
  }>, {
105
- multiple: boolean;
106
- disabled: boolean;
107
105
  size: string;
106
+ disabled: boolean;
107
+ multiple: boolean;
108
108
  dataSource: UploadImageDataSource<any>;
109
109
  max: number;
110
110
  maxSize: number;
package/dist/index.d.ts CHANGED
@@ -8,6 +8,7 @@ import { default as SaberInfoProvider } from './components/SaberInfoProvider.vue
8
8
  import { default as SaberModalWithMobile } from './components/SaberModalWithMobile.vue';
9
9
  import { default as SaberStatus } from './components/SaberStatus.vue';
10
10
  import { default as SaberSwitchBar } from './components/SaberSwitchBar.vue';
11
+ import { default as SaberAppLayout } from './components/layout/SaberAppLayout.vue';
11
12
  import { default as SaberAppSidebar } from './components/navigation/SaberAppSidebar.vue';
12
13
  import { default as SaberNavigationSearch } from './components/navigation/SaberNavigationSearch.vue';
13
14
  import { default as SaberFilterBar } from './forms/components/SaberFilterBar.vue';
@@ -33,10 +34,11 @@ export { BadgeStatus as SaberBadgeStatus };
33
34
  export type { BadgeStatusProps } from './BadgeStatus.types';
34
35
  export { SaberNoData };
35
36
  export type { SaberNoDataProps } from './SaberNoData.types';
36
- export { SaberConfirmModal, SaberConfirmProvider, SaberInfo, SaberInfoProvider, SaberModalWithMobile, SaberAppSidebar, SaberNavigationSearch, SaberStatus, SaberSwitchBar, };
37
+ export { SaberConfirmModal, SaberConfirmProvider, SaberInfo, SaberInfoProvider, SaberModalWithMobile, SaberAppLayout, SaberAppSidebar, SaberNavigationSearch, SaberStatus, SaberSwitchBar, };
37
38
  export type { SaberInfoContext, SaberInfoMode, SaberInfoProps, SaberInfoVariant } from './components/SaberInfo.types';
38
39
  export type { SaberStatusType } from './components/SaberStatus.types';
39
40
  export type { SaberSwitchBarItem, SaberSwitchBarUI, SaberSwitchBarValue } from './components/SaberSwitchBar.types';
41
+ export type { SaberAppLayoutMaxWidth, SaberAppLayoutMode, SaberAppLayoutNavigationSlotContext, SaberAppLayoutProps, SaberAppLayoutUI, } from './components/layout/SaberAppLayout.types';
40
42
  export type { SaberAppSidebarUI, SaberNavigationGroup, SaberNavigationItem, SaberNavigationSearchGroup, SaberNavigationSearchUI, SaberNavigationSection, SaberNavigationSelectPayload, SaberNavigationSelectSource, } from './components/navigation/SaberAppSidebar.types';
41
43
  export { SaberFilterBar, SaberFormModal, SaberDictCheckbox, SaberDictRadio, SaberDictSelect, SaberDistrictSelect, SaberInput, SaberInputNumber, SaberModal, SaberPopSelect, SaberRadioGroup, SaberSelect, SaberTextarea, };
42
44
  export { installSaberForms, type SaberFormsOptions } from './forms/plugin';
@@ -55,6 +57,7 @@ declare module 'vue' {
55
57
  SaberSwitchBar: typeof SaberSwitchBar;
56
58
  SaberAppSidebar: typeof SaberAppSidebar;
57
59
  SaberNavigationSearch: typeof SaberNavigationSearch;
60
+ SaberAppLayout: typeof SaberAppLayout;
58
61
  SaberFilterBar: typeof SaberFilterBar;
59
62
  SaberFormModal: typeof SaberFormModal;
60
63
  SaberModal: typeof SaberModal;
package/dist/index.mjs CHANGED
@@ -1,25 +1,26 @@
1
1
  import h from "@nuxt/ui/vue-plugin";
2
2
  import y from "@nuxt/ui/components/Badge.vue";
3
- import { defineComponent as _, computed as f, openBlock as s, createBlock as $, normalizeStyle as v, withCtx as C, createTextVNode as k, toDisplayString as d, createElementBlock as i, normalizeClass as B, createElementVNode as l, createVNode as I, createCommentVNode as m, renderSlot as u } from "vue";
3
+ import { defineComponent as _, computed as f, openBlock as s, createBlock as $, normalizeStyle as v, withCtx as C, createTextVNode as k, toDisplayString as b, createElementBlock as i, normalizeClass as B, createElementVNode as l, createVNode as I, createCommentVNode as m, renderSlot as u } from "vue";
4
4
  import N from "@nuxt/ui/runtime/vue/components/Icon.vue";
5
5
  import { _ as D } from "./SaberConfirmModal.vue_vue_type_script_setup_true_lang-Cqp9krYl.js";
6
6
  import { _ as M } from "./SaberConfirmProvider.vue_vue_type_script_setup_true_lang-DUJ6ftNJ.js";
7
7
  import { _ as w } from "./SaberInfo.vue_vue_type_script_setup_true_lang-B3W5VsGR.js";
8
- import { _ as P } from "./SaberInfoProvider.vue_vue_type_script_setup_true_lang-3rF6bSCn.js";
9
- import { _ as z } from "./SaberModalWithMobile.vue_vue_type_script_setup_true_lang-aQlToncY.js";
10
- import { _ as A } from "./SaberStatus.vue_vue_type_script_setup_true_lang-D9aRVCow.js";
8
+ import { _ as A } from "./SaberInfoProvider.vue_vue_type_script_setup_true_lang-3rF6bSCn.js";
9
+ import { _ as P } from "./SaberModalWithMobile.vue_vue_type_script_setup_true_lang-aQlToncY.js";
10
+ import { _ as z } from "./SaberStatus.vue_vue_type_script_setup_true_lang-D9aRVCow.js";
11
11
  import { _ as F } from "./SaberSwitchBar.vue_vue_type_script_setup_true_lang-CDx3Dcas.js";
12
- import { _ as U } from "./SaberAppSidebar.vue_vue_type_script_setup_true_lang-CEWQTjEi.js";
12
+ import { _ as L } from "./SaberAppLayout.vue_vue_type_script_setup_true_lang-R7F5K7kj.js";
13
+ import { _ as U } from "./SaberAppSidebar.vue_vue_type_script_setup_true_lang-Cwuj9VNi.js";
13
14
  import { _ as V } from "./SaberNavigationSearch.vue_vue_type_script_setup_true_lang-Bj96kMla.js";
14
15
  import { k as W } from "./plugin-Dr3z0YFg.js";
15
- import { _ as be, a as fe, b as ue, c as Se, d as _e, e as pe } from "./plugin-Dr3z0YFg.js";
16
- import { _ as xe } from "./SaberModal.vue_vue_type_script_setup_true_lang-DJno3jA3.js";
17
- import { _ as ye } from "./SaberDictCheckbox.vue_vue_type_script_setup_true_lang-DUbzy_C6.js";
18
- import { _ as ve, a as Ce } from "./SaberDictRadio.vue_vue_type_script_setup_true_lang-DR6-jSID.js";
19
- import { _ as Be } from "./SaberDictSelect.vue_vue_type_script_setup_true_lang-B8PTKNKX.js";
20
- import { _ as Ne } from "./SaberDistrictSelect.vue_vue_type_script_setup_true_lang-BX8nLC35.js";
21
- import { _ as Me } from "./SaberPopSelect.vue_vue_type_script_setup_true_lang-BcS27NXI.js";
22
- const b = {
16
+ import { _ as ue, a as Se, b as _e, c as pe, d as ge, e as xe } from "./plugin-Dr3z0YFg.js";
17
+ import { _ as ye } from "./SaberModal.vue_vue_type_script_setup_true_lang-DJno3jA3.js";
18
+ import { _ as ve } from "./SaberDictCheckbox.vue_vue_type_script_setup_true_lang-DUbzy_C6.js";
19
+ import { _ as ke, a as Be } from "./SaberDictRadio.vue_vue_type_script_setup_true_lang-DR6-jSID.js";
20
+ import { _ as Ne } from "./SaberDictSelect.vue_vue_type_script_setup_true_lang-B8PTKNKX.js";
21
+ import { _ as Me } from "./SaberDistrictSelect.vue_vue_type_script_setup_true_lang-BX8nLC35.js";
22
+ import { _ as Ae } from "./SaberPopSelect.vue_vue_type_script_setup_true_lang-BcS27NXI.js";
23
+ const d = {
23
24
  red: { 500: "#ef4444", 600: "#dc2626" },
24
25
  orange: { 500: "#f97316", 600: "#ea580c" },
25
26
  amber: { 500: "#f59e0b", 600: "#d97706" },
@@ -42,10 +43,10 @@ const b = {
42
43
  zinc: { 500: "#71717a", 600: "#52525b" },
43
44
  neutral: { 500: "#737373", 600: "#525252" },
44
45
  stone: { 500: "#78716c", 600: "#57534e" }
45
- }, H = b.gray;
46
+ }, H = d.gray;
46
47
  function S(e, t) {
47
48
  var o, a;
48
- return ((o = b[e]) == null ? void 0 : o[t]) ?? ((a = b[e]) == null ? void 0 : a[500]) ?? H[500];
49
+ return ((o = d[e]) == null ? void 0 : o[t]) ?? ((a = d[e]) == null ? void 0 : a[500]) ?? H[500];
49
50
  }
50
51
  function R(e, t) {
51
52
  const o = parseInt(e.slice(1, 3), 16), a = parseInt(e.slice(3, 5), 16), r = parseInt(e.slice(5, 7), 16);
@@ -84,16 +85,16 @@ const T = /* @__PURE__ */ _({
84
85
  class: "inline-flex items-center rounded-full border-0 pt-0.75 pb-0.75 px-2 text-xs font-medium"
85
86
  }, {
86
87
  default: C(() => [
87
- k(d(o.value.label), 1)
88
+ k(b(o.value.label), 1)
88
89
  ]),
89
90
  _: 1
90
91
  }, 8, ["style"]);
91
92
  };
92
93
  }
93
- }), E = { class: "rounded-md border border-accented p-3" }, L = { class: "flex flex-col gap-1" }, O = { class: "text-base font-semibold mb-2 text-highlighted w-60" }, j = {
94
+ }), E = { class: "rounded-md border border-accented p-3" }, O = { class: "flex flex-col gap-1" }, j = { class: "text-base font-semibold mb-2 text-highlighted w-60" }, G = {
94
95
  key: 0,
95
96
  class: "text-sm text-muted w-60"
96
- }, G = { key: 0 }, K = { key: 1 }, q = /* @__PURE__ */ _({
97
+ }, K = { key: 0 }, q = { key: 1 }, J = /* @__PURE__ */ _({
97
98
  name: "SaberNoData",
98
99
  __name: "SaberNoData",
99
100
  props: {
@@ -119,49 +120,50 @@ const T = /* @__PURE__ */ _({
119
120
  class: "size-5"
120
121
  }, null, 8, ["name"])
121
122
  ]),
122
- l("div", L, [
123
- l("h4", O, d(e.title), 1),
124
- e.description ? (s(), i("p", j, d(e.description), 1)) : m("", !0)
123
+ l("div", O, [
124
+ l("h4", j, b(e.title), 1),
125
+ e.description ? (s(), i("p", G, b(e.description), 1)) : m("", !0)
125
126
  ]),
126
- t.$slots.default ? (s(), i("div", G, [
127
+ t.$slots.default ? (s(), i("div", K, [
127
128
  u(t.$slots, "default")
128
129
  ])) : m("", !0),
129
- t.$slots.extra ? (s(), i("p", K, [
130
+ t.$slots.extra ? (s(), i("p", q, [
130
131
  u(t.$slots, "extra")
131
132
  ])) : m("", !0)
132
133
  ], 2);
133
134
  };
134
135
  }
135
- }), le = {
136
+ }), be = {
136
137
  install(e, t = {}) {
137
- e.use(h), e.component("SaberBadgeStatus", T), e.component("SaberNoData", q), e.component("SaberConfirmModal", D), e.component("SaberConfirmProvider", M), e.component("SaberInfo", w), e.component("SaberInfoProvider", P), e.component("SaberModalWithMobile", z), e.component("SaberStatus", A), e.component("SaberSwitchBar", F), e.component("SaberAppSidebar", U), e.component("SaberNavigationSearch", V), W(e, t.forms);
138
+ e.use(h), e.component("SaberBadgeStatus", T), e.component("SaberNoData", J), e.component("SaberConfirmModal", D), e.component("SaberConfirmProvider", M), e.component("SaberInfo", w), e.component("SaberInfoProvider", A), e.component("SaberModalWithMobile", P), e.component("SaberStatus", z), e.component("SaberSwitchBar", F), e.component("SaberAppSidebar", U), e.component("SaberNavigationSearch", V), e.component("SaberAppLayout", L), W(e, t.forms);
138
139
  }
139
140
  };
140
141
  export {
142
+ L as SaberAppLayout,
141
143
  U as SaberAppSidebar,
142
144
  T as SaberBadgeStatus,
143
145
  D as SaberConfirmModal,
144
146
  M as SaberConfirmProvider,
145
- ye as SaberDictCheckbox,
146
- ve as SaberDictRadio,
147
- Be as SaberDictSelect,
148
- Ne as SaberDistrictSelect,
149
- be as SaberFilterBar,
150
- fe as SaberFormModal,
147
+ ve as SaberDictCheckbox,
148
+ ke as SaberDictRadio,
149
+ Ne as SaberDictSelect,
150
+ Me as SaberDistrictSelect,
151
+ ue as SaberFilterBar,
152
+ Se as SaberFormModal,
151
153
  w as SaberInfo,
152
- P as SaberInfoProvider,
153
- ue as SaberInput,
154
- Se as SaberInputNumber,
155
- xe as SaberModal,
156
- z as SaberModalWithMobile,
154
+ A as SaberInfoProvider,
155
+ _e as SaberInput,
156
+ pe as SaberInputNumber,
157
+ ye as SaberModal,
158
+ P as SaberModalWithMobile,
157
159
  V as SaberNavigationSearch,
158
- q as SaberNoData,
159
- Me as SaberPopSelect,
160
- Ce as SaberRadioGroup,
161
- _e as SaberSelect,
162
- A as SaberStatus,
160
+ J as SaberNoData,
161
+ Ae as SaberPopSelect,
162
+ Be as SaberRadioGroup,
163
+ ge as SaberSelect,
164
+ z as SaberStatus,
163
165
  F as SaberSwitchBar,
164
- pe as SaberTextarea,
165
- le as default,
166
+ xe as SaberTextarea,
167
+ be as default,
166
168
  W as installSaberForms
167
169
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@owocow/saber-ui",
3
- "version": "0.1.11",
3
+ "version": "0.1.13",
4
4
  "description": "Saber application foundation for Vue 3 projects built on Nuxt UI",
5
5
  "type": "module",
6
6
  "sideEffects": false,
@@ -100,6 +100,10 @@
100
100
  "types": "./dist/components/SaberSwitchBar.vue.d.ts",
101
101
  "import": "./dist/components/SaberSwitchBar.mjs"
102
102
  },
103
+ "./components/SaberAppLayout": {
104
+ "types": "./dist/components/layout/SaberAppLayout.vue.d.ts",
105
+ "import": "./dist/components/SaberAppLayout.mjs"
106
+ },
103
107
  "./components/SaberAppSidebar": {
104
108
  "types": "./dist/components/navigation/SaberAppSidebar.vue.d.ts",
105
109
  "import": "./dist/components/SaberAppSidebar.mjs"
@@ -195,6 +199,7 @@
195
199
  "prepublishOnly": "npm run build"
196
200
  },
197
201
  "dependencies": {
202
+ "@vueuse/core": "^14.2.1",
198
203
  "crypto-js": "^4.2.0",
199
204
  "jsencrypt": "^3.5.4",
200
205
  "klona": "^2.0.6",
@@ -207,7 +212,7 @@
207
212
  "vue": "^3"
208
213
  },
209
214
  "devDependencies": {
210
- "@nuxt/ui": "4.8.0",
215
+ "@nuxt/ui": "4.11.0",
211
216
  "@tailwindcss/vite": "^4.3.3",
212
217
  "@types/crypto-js": "^4.2.2",
213
218
  "@types/node": "^26.1.2",