@keyblade/pro-components 0.0.2 → 0.0.4

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.
package/es/index.d.ts CHANGED
@@ -1,11 +1,10 @@
1
- import { App } from 'vue';
1
+ import type { App } from 'vue';
2
2
  declare const _default: {
3
3
  install(app: App): void;
4
4
  };
5
5
  export default _default;
6
6
  export { default as ProBreadcrumb } from './pro-breadcrumb';
7
7
  export { default as ProLayout } from './pro-layout';
8
- export type { EProLayoutTheme } from './pro-layout';
9
8
  export { default as ProMenu } from './pro-menu';
10
9
  export type { IProMenuItem } from './pro-menu';
11
10
  export { default as ProPageWrapper } from './pro-page-wrapper';
package/es/index.js CHANGED
@@ -1,13 +1,13 @@
1
1
  import { ProBreadcrumb } from "./pro-breadcrumb/index.js";
2
- import { ProBreadcrumb as ProBreadcrumb2 } from "./pro-breadcrumb/index.js";
2
+ import { default as default2 } from "./pro-breadcrumb/index.js";
3
3
  import { ProMenu } from "./pro-menu/index.js";
4
- import { ProMenu as ProMenu2 } from "./pro-menu/index.js";
4
+ import { default as default3 } from "./pro-menu/index.js";
5
5
  import { ProPageWrapper } from "./pro-page-wrapper/index.js";
6
- import { ProPageWrapper as ProPageWrapper2 } from "./pro-page-wrapper/index.js";
6
+ import { default as default4 } from "./pro-page-wrapper/index.js";
7
7
  import { ProReuseTabs } from "./pro-reuse-tabs/index.js";
8
- import { ProReuseTabs as ProReuseTabs2 } from "./pro-reuse-tabs/index.js";
8
+ import { default as default5 } from "./pro-reuse-tabs/index.js";
9
9
  import { ProLayout } from "./pro-layout/index.js";
10
- import { ProLayout as ProLayout2 } from "./pro-layout/index.js";
10
+ import { default as default6 } from "./pro-layout/index.js";
11
11
  const index = {
12
12
  install(app) {
13
13
  app.use(ProBreadcrumb);
@@ -18,10 +18,10 @@ const index = {
18
18
  }
19
19
  };
20
20
  export {
21
- ProBreadcrumb2 as ProBreadcrumb,
22
- ProLayout2 as ProLayout,
23
- ProMenu2 as ProMenu,
24
- ProPageWrapper2 as ProPageWrapper,
25
- ProReuseTabs2 as ProReuseTabs,
21
+ default2 as ProBreadcrumb,
22
+ default6 as ProLayout,
23
+ default3 as ProMenu,
24
+ default4 as ProPageWrapper,
25
+ default5 as ProReuseTabs,
26
26
  index as default
27
27
  };
@@ -6,7 +6,8 @@ const ProBreadcrumb = Object.assign(_sfc_main, {
6
6
  app.component("KbProBreadcrumb", _sfc_main);
7
7
  }
8
8
  });
9
+ const ProBreadcrumb$1 = ProBreadcrumb;
9
10
  export {
10
11
  ProBreadcrumb,
11
- ProBreadcrumb as default
12
+ ProBreadcrumb$1 as default
12
13
  };
@@ -1,5 +1,5 @@
1
1
  import { type Ref } from 'vue';
2
- import type { IProMenuItem } from '../../pro-menu';
2
+ import type { IProMenuItem } from '../pro-menu';
3
3
  export declare function useHooks(menuItems: Ref<IProMenuItem[]>, options: {
4
4
  tabsMode: boolean;
5
5
  }): {
File without changes
@@ -1,4 +1,3 @@
1
- import type { EProLayoutTheme } from './enum';
2
1
  import type { IProMenuItem } from '../pro-menu';
3
2
  import type { ComponentInternalInstance, ExtractPropTypes, PropType, VNodeProps, AllowedComponentProps, ComponentCustomProps, Slot, ComponentPublicInstance, ComponentOptionsBase, Ref, ComputedRef, ComponentOptionsMixin, DebuggerEvent, nextTick, WatchOptions, WatchStopHandle, ShallowUnwrapRef, ComponentCustomProperties, App } from 'vue';
4
3
  declare const ProLayout: {
@@ -9,15 +8,9 @@ declare const ProLayout: {
9
8
  menuItems: IProMenuItem[];
10
9
  headerTitle: string;
11
10
  headerLogo: string;
12
- headerRightItemSlotNames: string[];
13
- hideThemeItem: boolean;
11
+ theme: "light" | "dark";
14
12
  footerTitle: string;
15
- theme: EProLayoutTheme;
16
13
  tabsMode: boolean;
17
- user: {
18
- name: string;
19
- avatar?: string | undefined;
20
- };
21
14
  }> & Omit<Readonly<ExtractPropTypes<{
22
15
  menuItems: {
23
16
  type: PropType<IProMenuItem[]>;
@@ -34,40 +27,24 @@ declare const ProLayout: {
34
27
  required: false;
35
28
  default: string;
36
29
  };
37
- headerRightItemSlotNames: {
38
- type: PropType<string[]>;
39
- required: false;
40
- default: () => never[];
41
- };
42
- hideThemeItem: {
43
- type: PropType<boolean>;
30
+ theme: {
31
+ type: PropType<"light" | "dark">;
44
32
  required: false;
45
- default: boolean;
33
+ default: string;
46
34
  };
47
35
  footerTitle: {
48
36
  type: PropType<string>;
49
37
  required: false;
50
38
  default: string;
51
39
  };
52
- theme: {
53
- type: PropType<EProLayoutTheme>;
54
- required: false;
55
- default: EProLayoutTheme;
56
- };
57
40
  tabsMode: {
58
41
  type: PropType<boolean>;
59
42
  required: false;
60
43
  default: boolean;
61
44
  };
62
- user: {
63
- type: PropType<{
64
- name: string;
65
- avatar?: string | undefined;
66
- }>;
67
- required: false;
68
- default: undefined;
69
- };
70
- }>> & VNodeProps & AllowedComponentProps & ComponentCustomProps, "menuItems" | "headerTitle" | "headerLogo" | "headerRightItemSlotNames" | "hideThemeItem" | "footerTitle" | "theme" | "tabsMode" | "user">;
45
+ }>> & {
46
+ onCollapse?: ((collapsed: boolean) => any) | undefined;
47
+ } & VNodeProps & AllowedComponentProps & ComponentCustomProps, "menuItems" | "headerTitle" | "headerLogo" | "theme" | "footerTitle" | "tabsMode">;
71
48
  $attrs: {
72
49
  [x: string]: unknown;
73
50
  };
@@ -79,7 +56,7 @@ declare const ProLayout: {
79
56
  }>;
80
57
  $root: ComponentPublicInstance<{}, {}, {}, {}, {}, {}, {}, {}, false, ComponentOptionsBase<any, any, any, any, any, any, any, any, any, {}, {}, string>, {}> | null;
81
58
  $parent: ComponentPublicInstance<{}, {}, {}, {}, {}, {}, {}, {}, false, ComponentOptionsBase<any, any, any, any, any, any, any, any, any, {}, {}, string>, {}> | null;
82
- $emit: (event: string, ...args: any[]) => void;
59
+ $emit: (event: "collapse", collapsed: boolean) => void;
83
60
  $el: any;
84
61
  $options: ComponentOptionsBase<Readonly<ExtractPropTypes<{
85
62
  menuItems: {
@@ -97,48 +74,31 @@ declare const ProLayout: {
97
74
  required: false;
98
75
  default: string;
99
76
  };
100
- headerRightItemSlotNames: {
101
- type: PropType<string[]>;
102
- required: false;
103
- default: () => never[];
104
- };
105
- hideThemeItem: {
106
- type: PropType<boolean>;
77
+ theme: {
78
+ type: PropType<"light" | "dark">;
107
79
  required: false;
108
- default: boolean;
80
+ default: string;
109
81
  };
110
82
  footerTitle: {
111
83
  type: PropType<string>;
112
84
  required: false;
113
85
  default: string;
114
86
  };
115
- theme: {
116
- type: PropType<EProLayoutTheme>;
117
- required: false;
118
- default: EProLayoutTheme;
119
- };
120
87
  tabsMode: {
121
88
  type: PropType<boolean>;
122
89
  required: false;
123
90
  default: boolean;
124
91
  };
125
- user: {
126
- type: PropType<{
127
- name: string;
128
- avatar?: string | undefined;
129
- }>;
130
- required: false;
131
- default: undefined;
132
- };
133
- }>>, {
92
+ }>> & {
93
+ onCollapse?: ((collapsed: boolean) => any) | undefined;
94
+ }, {
134
95
  prefixClsName: string;
135
96
  props: any;
97
+ emit: (event: "collapse", collapsed: boolean) => void;
136
98
  menuItems: Ref<IProMenuItem[]>;
137
99
  slots: Readonly<{
138
100
  [name: string]: Slot | undefined;
139
101
  }>;
140
- currentTheme: Readonly<Ref<EProLayoutTheme>>;
141
- onToggleCurrentTheme: () => void;
142
102
  menuSelectedKeys: Ref<string[]>;
143
103
  menuOpenKeys: Ref<string[]>;
144
104
  onMenuItemClick: (key: string) => void;
@@ -160,20 +120,15 @@ declare const ProLayout: {
160
120
  siderCollapsedWidthPx: string;
161
121
  siderCollapsed: Ref<boolean>;
162
122
  onSiderCollapse: (val: boolean) => void;
163
- readonly EProLayoutTheme: typeof EProLayoutTheme;
164
- }, unknown, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, {
123
+ }, unknown, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
124
+ collapse: (collapsed: boolean) => true;
125
+ }, string, {
165
126
  menuItems: IProMenuItem[];
166
127
  headerTitle: string;
167
128
  headerLogo: string;
168
- headerRightItemSlotNames: string[];
169
- hideThemeItem: boolean;
129
+ theme: "light" | "dark";
170
130
  footerTitle: string;
171
- theme: EProLayoutTheme;
172
131
  tabsMode: boolean;
173
- user: {
174
- name: string;
175
- avatar?: string | undefined;
176
- };
177
132
  }, {}, string> & {
178
133
  beforeCreate?: ((() => void) | (() => void)[]) | undefined;
179
134
  created?: ((() => void) | (() => void)[]) | undefined;
@@ -210,48 +165,31 @@ declare const ProLayout: {
210
165
  required: false;
211
166
  default: string;
212
167
  };
213
- headerRightItemSlotNames: {
214
- type: PropType<string[]>;
215
- required: false;
216
- default: () => never[];
217
- };
218
- hideThemeItem: {
219
- type: PropType<boolean>;
168
+ theme: {
169
+ type: PropType<"light" | "dark">;
220
170
  required: false;
221
- default: boolean;
171
+ default: string;
222
172
  };
223
173
  footerTitle: {
224
174
  type: PropType<string>;
225
175
  required: false;
226
176
  default: string;
227
177
  };
228
- theme: {
229
- type: PropType<EProLayoutTheme>;
230
- required: false;
231
- default: EProLayoutTheme;
232
- };
233
178
  tabsMode: {
234
179
  type: PropType<boolean>;
235
180
  required: false;
236
181
  default: boolean;
237
182
  };
238
- user: {
239
- type: PropType<{
240
- name: string;
241
- avatar?: string | undefined;
242
- }>;
243
- required: false;
244
- default: undefined;
245
- };
246
- }>> & ShallowUnwrapRef<{
183
+ }>> & {
184
+ onCollapse?: ((collapsed: boolean) => any) | undefined;
185
+ } & ShallowUnwrapRef<{
247
186
  prefixClsName: string;
248
187
  props: any;
188
+ emit: (event: "collapse", collapsed: boolean) => void;
249
189
  menuItems: Ref<IProMenuItem[]>;
250
190
  slots: Readonly<{
251
191
  [name: string]: Slot | undefined;
252
192
  }>;
253
- currentTheme: Readonly<Ref<EProLayoutTheme>>;
254
- onToggleCurrentTheme: () => void;
255
193
  menuSelectedKeys: Ref<string[]>;
256
194
  menuOpenKeys: Ref<string[]>;
257
195
  onMenuItemClick: (key: string) => void;
@@ -273,7 +211,6 @@ declare const ProLayout: {
273
211
  siderCollapsedWidthPx: string;
274
212
  siderCollapsed: Ref<boolean>;
275
213
  onSiderCollapse: (val: boolean) => void;
276
- readonly EProLayoutTheme: typeof EProLayoutTheme;
277
214
  }> & {} & ComponentCustomProperties & {};
278
215
  __isFragment?: undefined;
279
216
  __isTeleport?: undefined;
@@ -294,48 +231,31 @@ declare const ProLayout: {
294
231
  required: false;
295
232
  default: string;
296
233
  };
297
- headerRightItemSlotNames: {
298
- type: PropType<string[]>;
299
- required: false;
300
- default: () => never[];
301
- };
302
- hideThemeItem: {
303
- type: PropType<boolean>;
234
+ theme: {
235
+ type: PropType<"light" | "dark">;
304
236
  required: false;
305
- default: boolean;
237
+ default: string;
306
238
  };
307
239
  footerTitle: {
308
240
  type: PropType<string>;
309
241
  required: false;
310
242
  default: string;
311
243
  };
312
- theme: {
313
- type: PropType<EProLayoutTheme>;
314
- required: false;
315
- default: EProLayoutTheme;
316
- };
317
244
  tabsMode: {
318
245
  type: PropType<boolean>;
319
246
  required: false;
320
247
  default: boolean;
321
248
  };
322
- user: {
323
- type: PropType<{
324
- name: string;
325
- avatar?: string | undefined;
326
- }>;
327
- required: false;
328
- default: undefined;
329
- };
330
- }>>, {
249
+ }>> & {
250
+ onCollapse?: ((collapsed: boolean) => any) | undefined;
251
+ }, {
331
252
  prefixClsName: string;
332
253
  props: any;
254
+ emit: (event: "collapse", collapsed: boolean) => void;
333
255
  menuItems: Ref<IProMenuItem[]>;
334
256
  slots: Readonly<{
335
257
  [name: string]: Slot | undefined;
336
258
  }>;
337
- currentTheme: Readonly<Ref<EProLayoutTheme>>;
338
- onToggleCurrentTheme: () => void;
339
259
  menuSelectedKeys: Ref<string[]>;
340
260
  menuOpenKeys: Ref<string[]>;
341
261
  onMenuItemClick: (key: string) => void;
@@ -357,23 +277,17 @@ declare const ProLayout: {
357
277
  siderCollapsedWidthPx: string;
358
278
  siderCollapsed: Ref<boolean>;
359
279
  onSiderCollapse: (val: boolean) => void;
360
- readonly EProLayoutTheme: typeof EProLayoutTheme;
361
- }, unknown, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, {
280
+ }, unknown, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
281
+ collapse: (collapsed: boolean) => true;
282
+ }, string, {
362
283
  menuItems: IProMenuItem[];
363
284
  headerTitle: string;
364
285
  headerLogo: string;
365
- headerRightItemSlotNames: string[];
366
- hideThemeItem: boolean;
286
+ theme: "light" | "dark";
367
287
  footerTitle: string;
368
- theme: EProLayoutTheme;
369
288
  tabsMode: boolean;
370
- user: {
371
- name: string;
372
- avatar?: string | undefined;
373
- };
374
289
  }, {}, string> & VNodeProps & AllowedComponentProps & ComponentCustomProps & {
375
290
  install: (app: App) => void;
376
291
  };
377
- export * from './enum';
378
292
  export { ProLayout };
379
293
  export default ProLayout;
@@ -19,7 +19,8 @@ const ProLayout = Object.assign(_sfc_main, {
19
19
  app.component("KbProLayout", _sfc_main);
20
20
  }
21
21
  });
22
+ const ProLayout$1 = ProLayout;
22
23
  export {
23
24
  ProLayout,
24
- ProLayout as default
25
+ ProLayout$1 as default
25
26
  };
@@ -1,6 +1,5 @@
1
1
  import type { DefineComponent, Ref, Slot, ComputedRef, ComponentOptionsMixin, VNodeProps, AllowedComponentProps, ComponentCustomProps, ExtractPropTypes, type PropType } from 'vue';
2
2
  import type { IProMenuItem } from '../pro-menu';
3
- import { EProLayoutTheme } from './enum';
4
3
  declare const _sfc_main: DefineComponent<{
5
4
  menuItems: {
6
5
  type: PropType<IProMenuItem[]>;
@@ -17,48 +16,29 @@ declare const _sfc_main: DefineComponent<{
17
16
  required: false;
18
17
  default: string;
19
18
  };
20
- headerRightItemSlotNames: {
21
- type: PropType<string[]>;
22
- required: false;
23
- default: () => never[];
24
- };
25
- hideThemeItem: {
26
- type: PropType<boolean>;
19
+ theme: {
20
+ type: PropType<"light" | "dark">;
27
21
  required: false;
28
- default: boolean;
22
+ default: string;
29
23
  };
30
24
  footerTitle: {
31
25
  type: PropType<string>;
32
26
  required: false;
33
27
  default: string;
34
28
  };
35
- theme: {
36
- type: PropType<EProLayoutTheme>;
37
- required: false;
38
- default: EProLayoutTheme;
39
- };
40
29
  tabsMode: {
41
30
  type: PropType<boolean>;
42
31
  required: false;
43
32
  default: boolean;
44
33
  };
45
- user: {
46
- type: PropType<{
47
- name: string;
48
- avatar?: string | undefined;
49
- }>;
50
- required: false;
51
- default: undefined;
52
- };
53
34
  }, {
54
35
  prefixClsName: string;
55
36
  props: any;
37
+ emit: (event: "collapse", collapsed: boolean) => void;
56
38
  menuItems: Ref<IProMenuItem[]>;
57
39
  slots: Readonly<{
58
40
  [name: string]: Slot | undefined;
59
41
  }>;
60
- currentTheme: Readonly<Ref<EProLayoutTheme>>;
61
- onToggleCurrentTheme: () => void;
62
42
  menuSelectedKeys: Ref<string[]>;
63
43
  menuOpenKeys: Ref<string[]>;
64
44
  onMenuItemClick: (key: string) => void;
@@ -80,8 +60,9 @@ declare const _sfc_main: DefineComponent<{
80
60
  siderCollapsedWidthPx: string;
81
61
  siderCollapsed: Ref<boolean>;
82
62
  onSiderCollapse: (val: boolean) => void;
83
- readonly EProLayoutTheme: typeof EProLayoutTheme;
84
- }, unknown, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, VNodeProps & AllowedComponentProps & ComponentCustomProps, Readonly<ExtractPropTypes<{
63
+ }, unknown, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
64
+ collapse: (collapsed: boolean) => true;
65
+ }, string, VNodeProps & AllowedComponentProps & ComponentCustomProps, Readonly<ExtractPropTypes<{
85
66
  menuItems: {
86
67
  type: PropType<IProMenuItem[]>;
87
68
  required: false;
@@ -97,51 +78,29 @@ declare const _sfc_main: DefineComponent<{
97
78
  required: false;
98
79
  default: string;
99
80
  };
100
- headerRightItemSlotNames: {
101
- type: PropType<string[]>;
102
- required: false;
103
- default: () => never[];
104
- };
105
- hideThemeItem: {
106
- type: PropType<boolean>;
81
+ theme: {
82
+ type: PropType<"light" | "dark">;
107
83
  required: false;
108
- default: boolean;
84
+ default: string;
109
85
  };
110
86
  footerTitle: {
111
87
  type: PropType<string>;
112
88
  required: false;
113
89
  default: string;
114
90
  };
115
- theme: {
116
- type: PropType<EProLayoutTheme>;
117
- required: false;
118
- default: EProLayoutTheme;
119
- };
120
91
  tabsMode: {
121
92
  type: PropType<boolean>;
122
93
  required: false;
123
94
  default: boolean;
124
95
  };
125
- user: {
126
- type: PropType<{
127
- name: string;
128
- avatar?: string | undefined;
129
- }>;
130
- required: false;
131
- default: undefined;
132
- };
133
- }>>, {
96
+ }>> & {
97
+ onCollapse?: ((collapsed: boolean) => any) | undefined;
98
+ }, {
134
99
  menuItems: IProMenuItem[];
135
100
  headerTitle: string;
136
101
  headerLogo: string;
137
- headerRightItemSlotNames: string[];
138
- hideThemeItem: boolean;
102
+ theme: "light" | "dark";
139
103
  footerTitle: string;
140
- theme: EProLayoutTheme;
141
104
  tabsMode: boolean;
142
- user: {
143
- name: string;
144
- avatar?: string | undefined;
145
- };
146
105
  }>;
147
106
  export default _sfc_main;
@@ -1,11 +1,6 @@
1
- import { defineComponent, useCssVars, toRefs, useSlots, provide, computed, ref, resolveComponent, openBlock, createBlock, normalizeClass, withCtx, createVNode, createElementVNode, createTextVNode, toDisplayString, createCommentVNode, createElementBlock, Fragment, renderList, unref, renderSlot, resolveDynamicComponent, KeepAlive } from "vue";
2
- import { useHooks } from "./hooks/index.js";
3
- import { EProLayoutTheme } from "./enum.js";
4
- import { useThemeHooks } from "./hooks/theme.js";
1
+ import { defineComponent, useCssVars, toRefs, useSlots, provide, computed, ref, watch, resolveComponent, openBlock, createBlock, normalizeClass, withCtx, createVNode, createElementVNode, unref, renderSlot, createTextVNode, toDisplayString, createCommentVNode, resolveDynamicComponent, KeepAlive } from "vue";
2
+ import { useHooks } from "./hooks.js";
5
3
  const _hoisted_1 = ["src"];
6
- const _hoisted_2 = { key: 0 };
7
- const _hoisted_3 = { key: 0 };
8
- const _hoisted_4 = ["src"];
9
4
  const _sfc_main = /* @__PURE__ */ defineComponent({
10
5
  __name: "pro-layout",
11
6
  props: {
@@ -24,47 +19,34 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
24
19
  required: false,
25
20
  default: "http://p3-armor.byteimg.com/tos-cn-i-49unhts6dw/dfdba5317c0c20ce20e64fac803d52bc.svg~tplv-49unhts6dw-image.image"
26
21
  },
27
- headerRightItemSlotNames: {
28
- type: Array,
29
- required: false,
30
- default: () => []
31
- },
32
- hideThemeItem: {
33
- type: Boolean,
22
+ theme: {
23
+ type: String,
34
24
  required: false,
35
- default: false
25
+ default: "light"
36
26
  },
37
27
  footerTitle: {
38
28
  type: String,
39
29
  required: false,
40
30
  default: "KeyBlade Pro"
41
31
  },
42
- theme: {
43
- type: String,
44
- required: false,
45
- default: EProLayoutTheme.light
46
- },
47
32
  tabsMode: {
48
33
  type: Boolean,
49
34
  required: false,
50
35
  default: true
51
- },
52
- user: {
53
- type: Object,
54
- required: false,
55
- default: void 0
56
36
  }
57
37
  },
58
- setup(__props) {
38
+ emits: {
39
+ "collapse": (collapsed) => true
40
+ },
41
+ setup(__props, { emit }) {
59
42
  const props = __props;
60
43
  useCssVars((_ctx) => ({
61
- "9d934a56": siderWidthPx,
62
- "473aa8e0": siderCollapsedWidthPx
44
+ "499b6380": siderWidthPx,
45
+ "5e353345": siderCollapsedWidthPx
63
46
  }));
64
47
  const prefixClsName = "keyblade-pro-layout";
65
48
  const { menuItems } = toRefs(props);
66
49
  const slots = useSlots();
67
- const { currentTheme, onToggleCurrentTheme } = useThemeHooks(props.theme);
68
50
  const {
69
51
  menuSelectedKeys,
70
52
  menuOpenKeys,
@@ -97,17 +79,21 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
97
79
  const siderCollapsed = ref(false);
98
80
  const onSiderCollapse = (val) => {
99
81
  siderCollapsed.value = val;
82
+ emit("collapse", val);
100
83
  };
84
+ watch(() => props.theme, () => {
85
+ switch (props.theme) {
86
+ case "light":
87
+ document.body.removeAttribute("arco-theme");
88
+ break;
89
+ case "dark":
90
+ document.body.setAttribute("arco-theme", "dark");
91
+ break;
92
+ }
93
+ }, { immediate: true });
101
94
  return (_ctx, _cache) => {
102
95
  const _component_a_typography_title = resolveComponent("a-typography-title");
103
96
  const _component_a_space = resolveComponent("a-space");
104
- const _component_icon_sun_fill = resolveComponent("icon-sun-fill");
105
- const _component_icon_moon_fill = resolveComponent("icon-moon-fill");
106
- const _component_a_button = resolveComponent("a-button");
107
- const _component_a_tooltip = resolveComponent("a-tooltip");
108
- const _component_icon_user = resolveComponent("icon-user");
109
- const _component_a_avatar = resolveComponent("a-avatar");
110
- const _component_a_dropdown = resolveComponent("a-dropdown");
111
97
  const _component_a_layout_header = resolveComponent("a-layout-header");
112
98
  const _component_kb_pro_menu = resolveComponent("kb-pro-menu");
113
99
  const _component_a_layout_sider = resolveComponent("a-layout-sider");
@@ -128,83 +114,31 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
128
114
  createElementVNode("div", {
129
115
  class: normalizeClass(`${prefixClsName}-header-left`)
130
116
  }, [
131
- createVNode(_component_a_space, null, {
117
+ unref(slots)["header-left"] ? renderSlot(_ctx.$slots, "header-left", { key: 0 }) : (openBlock(), createBlock(_component_a_space, { key: 1 }, {
132
118
  default: withCtx(() => [
133
119
  createElementVNode("img", {
120
+ class: normalizeClass(`${prefixClsName}-header-left-logo`),
134
121
  alt: "logo",
135
- src: __props.headerLogo,
136
- style: { "height": "28px" }
137
- }, null, 8, _hoisted_1),
122
+ src: __props.headerLogo
123
+ }, null, 10, _hoisted_1),
138
124
  !siderCollapsed.value ? (openBlock(), createBlock(_component_a_typography_title, {
139
125
  key: 0,
140
- heading: 5,
141
- style: { "margin": "0", "font-size": "18px" }
126
+ class: normalizeClass(`${prefixClsName}-header-left-title`),
127
+ heading: 5
142
128
  }, {
143
129
  default: withCtx(() => [
144
130
  createTextVNode(toDisplayString(__props.headerTitle), 1)
145
131
  ]),
146
132
  _: 1
147
- })) : createCommentVNode("", true)
133
+ }, 8, ["class"])) : createCommentVNode("", true)
148
134
  ]),
149
135
  _: 1
150
- })
136
+ }))
151
137
  ], 2),
152
- createElementVNode("ul", {
138
+ createElementVNode("div", {
153
139
  class: normalizeClass(`${prefixClsName}-header-right`)
154
140
  }, [
155
- (openBlock(true), createElementBlock(Fragment, null, renderList(__props.headerRightItemSlotNames, (slotName) => {
156
- return openBlock(), createElementBlock(Fragment, { key: slotName }, [
157
- unref(slots)[slotName] ? (openBlock(), createElementBlock("li", _hoisted_2, [
158
- renderSlot(_ctx.$slots, slotName)
159
- ])) : createCommentVNode("", true)
160
- ], 64);
161
- }), 128)),
162
- !__props.hideThemeItem ? (openBlock(), createElementBlock("li", _hoisted_3, [
163
- createVNode(_component_a_tooltip, { content: "切换主题" }, {
164
- default: withCtx(() => [
165
- createVNode(_component_a_button, {
166
- class: normalizeClass(`${prefixClsName}-header-right-btn`),
167
- type: "outline",
168
- size: "medium",
169
- shape: "circle",
170
- onClick: unref(onToggleCurrentTheme)
171
- }, {
172
- icon: withCtx(() => [
173
- unref(currentTheme) === unref(EProLayoutTheme).light ? (openBlock(), createBlock(_component_icon_sun_fill, { key: 0 })) : createCommentVNode("", true),
174
- unref(currentTheme) === unref(EProLayoutTheme).dark ? (openBlock(), createBlock(_component_icon_moon_fill, { key: 1 })) : createCommentVNode("", true)
175
- ]),
176
- _: 1
177
- }, 8, ["class", "onClick"])
178
- ]),
179
- _: 1
180
- })
181
- ])) : createCommentVNode("", true),
182
- createElementVNode("li", null, [
183
- createVNode(_component_a_dropdown, { trigger: "hover" }, {
184
- content: withCtx(() => [
185
- renderSlot(_ctx.$slots, "avatar-dropdown-content")
186
- ]),
187
- default: withCtx(() => [
188
- createVNode(_component_a_avatar, {
189
- size: 32,
190
- style: { marginRight: "8px", cursor: "pointer" }
191
- }, {
192
- default: withCtx(() => {
193
- var _a, _b;
194
- return [
195
- ((_a = __props.user) == null ? void 0 : _a.avatar) ? (openBlock(), createElementBlock("img", {
196
- key: 0,
197
- alt: "avatar",
198
- src: (_b = __props.user) == null ? void 0 : _b.avatar
199
- }, null, 8, _hoisted_4)) : (openBlock(), createBlock(_component_icon_user, { key: 1 }))
200
- ];
201
- }),
202
- _: 1
203
- })
204
- ]),
205
- _: 3
206
- })
207
- ])
141
+ renderSlot(_ctx.$slots, "header-right")
208
142
  ], 2)
209
143
  ]),
210
144
  _: 3
@@ -221,17 +155,23 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
221
155
  onCollapse: onSiderCollapse
222
156
  }, {
223
157
  default: withCtx(() => [
224
- createVNode(_component_kb_pro_menu, {
225
- collapsed: siderCollapsed.value,
226
- "selected-keys": unref(menuSelectedKeys),
227
- "open-keys": unref(menuOpenKeys),
228
- items: unref(menuItems),
229
- onCollapse: onSiderCollapse,
230
- onMenuItemClick: unref(onMenuItemClick),
231
- onSubMenuClick: unref(onSubMenuClick)
232
- }, null, 8, ["collapsed", "selected-keys", "open-keys", "items", "onMenuItemClick", "onSubMenuClick"])
158
+ createElementVNode("div", {
159
+ class: normalizeClass(`${prefixClsName}-sider-content`)
160
+ }, [
161
+ renderSlot(_ctx.$slots, "sider-top"),
162
+ createVNode(_component_kb_pro_menu, {
163
+ style: { "flex": "1" },
164
+ collapsed: siderCollapsed.value,
165
+ "selected-keys": unref(menuSelectedKeys),
166
+ "open-keys": unref(menuOpenKeys),
167
+ items: unref(menuItems),
168
+ onCollapse: onSiderCollapse,
169
+ onMenuItemClick: unref(onMenuItemClick),
170
+ onSubMenuClick: unref(onSubMenuClick)
171
+ }, null, 8, ["collapsed", "selected-keys", "open-keys", "items", "onMenuItemClick", "onSubMenuClick"])
172
+ ], 2)
233
173
  ]),
234
- _: 1
174
+ _: 3
235
175
  }, 8, ["class", "collapsed"]),
236
176
  createVNode(_component_a_layout, {
237
177
  class: normalizeClass(`${prefixClsName}-body` + (siderCollapsed.value ? ` ${prefixClsName}-body-collapsed` : ""))
@@ -6,7 +6,8 @@ const ProMenu = Object.assign(_sfc_main, {
6
6
  app.component("KbProMenu", _sfc_main);
7
7
  }
8
8
  });
9
+ const ProMenu$1 = ProMenu;
9
10
  export {
10
11
  ProMenu,
11
- ProMenu as default
12
+ ProMenu$1 as default
12
13
  };
@@ -31,7 +31,6 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
31
31
  const _component_a_menu = resolveComponent("a-menu");
32
32
  return openBlock(), createBlock(_component_a_menu, {
33
33
  class: normalizeClass(prefixClsName),
34
- style: { width: "100%", height: "100%" },
35
34
  collapsed: __props.collapsed,
36
35
  "open-keys": __props.openKeys,
37
36
  "selected-keys": __props.selectedKeys,
@@ -7,7 +7,8 @@ const ProPageWrapper = Object.assign(_sfc_main, {
7
7
  app.component("KbProPageWrapper", _sfc_main);
8
8
  }
9
9
  });
10
+ const ProPageWrapper$1 = ProPageWrapper;
10
11
  export {
11
12
  ProPageWrapper,
12
- ProPageWrapper as default
13
+ ProPageWrapper$1 as default
13
14
  };
@@ -7,7 +7,8 @@ const ProReuseTabs = Object.assign(_sfc_main, {
7
7
  app.component("KbProReuseTabs", _sfc_main);
8
8
  }
9
9
  });
10
+ const ProReuseTabs$1 = ProReuseTabs;
10
11
  export {
11
12
  ProReuseTabs,
12
- ProReuseTabs as default
13
+ ProReuseTabs$1 as default
13
14
  };
@@ -1,5 +1,5 @@
1
1
  import type { DefineComponent, ComputedRef, ComponentOptionsMixin, VNodeProps, AllowedComponentProps, ComponentCustomProps, ExtractPropTypes, type PropType } from 'vue';
2
- import { IProTab } from './interface';
2
+ import type { IProTab } from './interface';
3
3
  declare const _sfc_main: DefineComponent<{
4
4
  tabs: {
5
5
  type: PropType<IProTab[]>;
package/es/style.css CHANGED
@@ -1,6 +1,11 @@
1
1
  .keyblade-pro-page-wrapper {
2
2
  padding: 0 20px 20px 20px;
3
3
  }
4
+ .keyblade-pro-reuse-tabs {
5
+ position: relative;
6
+ background-color: var(--color-bg-2);
7
+ padding: 4px 20px;
8
+ }
4
9
  .keyblade-pro-layout {
5
10
  width: 100%;
6
11
  height: 100%;
@@ -27,20 +32,12 @@
27
32
  display: flex;
28
33
  align-items: center;
29
34
  }
30
- .keyblade-pro-layout-header-right {
31
- display: flex;
32
- list-style: none;
33
- }
34
- .keyblade-pro-layout-header-right li {
35
- display: flex;
36
- align-items: center;
37
- padding: 0 10px;
35
+ .keyblade-pro-layout-header-left-logo {
36
+ height: 28px;
38
37
  }
39
- .keyblade-pro-layout-header-right .arco-btn-outline,
40
- .keyblade-pro-layout-header-right-btn {
41
- border-color: rgb(var(--gray-2));
42
- color: rgb(var(--gray-8));
43
- font-size: 16px;
38
+ .keyblade-pro-layout-header-left-title.arco-typography {
39
+ margin: 0;
40
+ font-size: 18px;
44
41
  }
45
42
  .keyblade-pro-layout-sider {
46
43
  padding-top: 60px;
@@ -51,9 +48,15 @@
51
48
  height: 100%;
52
49
  transition: all 0.2s cubic-bezier(0.34, 0.69, 0.1, 1);
53
50
  }
51
+ .keyblade-pro-layout-sider-content {
52
+ display: flex;
53
+ flex-direction: column;
54
+ min-height: 100%;
55
+ overflow: auto;
56
+ }
54
57
  .keyblade-pro-layout-body {
55
58
  padding-top: 60px;
56
- padding-left: var(--9d934a56);
59
+ padding-left: var(--499b6380);
57
60
  min-height: 100vh;
58
61
  overflow-y: hidden;
59
62
  background-color: var(--color-fill-2);
@@ -73,10 +76,5 @@
73
76
  text-align: center;
74
77
  }
75
78
  .keyblade-pro-layout-body-collapsed {
76
- padding-left: var(--473aa8e0);
77
- }
78
- .keyblade-pro-reuse-tabs {
79
- position: relative;
80
- background-color: var(--color-bg-2);
81
- padding: 4px 20px;
79
+ padding-left: var(--5e353345);
82
80
  }
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@keyblade/pro-components",
3
3
  "description": "KeyBlade Pro Components",
4
4
  "author": "yangshuai <704807396@qq.com>",
5
- "version": "0.0.2",
5
+ "version": "0.0.4",
6
6
  "private": false,
7
7
  "type": "module",
8
8
  "main": "es/index.js",
package/src/index.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { App } from 'vue'
1
+ import type { App } from 'vue'
2
2
  import { ProBreadcrumb } from './pro-breadcrumb'
3
3
  import { ProMenu } from './pro-menu'
4
4
  import { ProPageWrapper } from './pro-page-wrapper'
@@ -19,7 +19,6 @@ export default {
19
19
  export { default as ProBreadcrumb } from './pro-breadcrumb'
20
20
 
21
21
  export { default as ProLayout } from './pro-layout'
22
- export type { EProLayoutTheme } from './pro-layout'
23
22
 
24
23
  export { default as ProMenu } from './pro-menu'
25
24
  export type { IProMenuItem } from './pro-menu'
@@ -1,5 +0,0 @@
1
- /** 主题 */
2
- export declare enum EProLayoutTheme {
3
- light = "light",
4
- dark = "dark"
5
- }
@@ -1,8 +0,0 @@
1
- var EProLayoutTheme = /* @__PURE__ */ ((EProLayoutTheme2) => {
2
- EProLayoutTheme2["light"] = "light";
3
- EProLayoutTheme2["dark"] = "dark";
4
- return EProLayoutTheme2;
5
- })(EProLayoutTheme || {});
6
- export {
7
- EProLayoutTheme
8
- };
@@ -1,6 +0,0 @@
1
- import type { Ref } from 'vue';
2
- import { EProLayoutTheme } from '../enum';
3
- export declare function useThemeHooks(initValue: EProLayoutTheme): {
4
- currentTheme: Readonly<Ref<EProLayoutTheme>>;
5
- onToggleCurrentTheme: () => void;
6
- };
@@ -1,41 +0,0 @@
1
- import { ref, watch, readonly } from "vue";
2
- import { EProLayoutTheme } from "../enum.js";
3
- function useThemeHooks(initValue) {
4
- const themeStorageKey = "theme";
5
- const theme = ref(localStorage.getItem(themeStorageKey) ?? initValue);
6
- const setTheme = (_theme) => {
7
- switch (_theme) {
8
- case EProLayoutTheme.light:
9
- document.body.removeAttribute("arco-theme");
10
- break;
11
- case EProLayoutTheme.dark:
12
- document.body.setAttribute("arco-theme", "dark");
13
- break;
14
- }
15
- theme.value = _theme;
16
- localStorage.setItem(themeStorageKey, theme.value);
17
- };
18
- const onToggleTheme = () => {
19
- switch (theme.value) {
20
- case EProLayoutTheme.light:
21
- setTheme(EProLayoutTheme.dark);
22
- break;
23
- case EProLayoutTheme.dark:
24
- setTheme(EProLayoutTheme.light);
25
- break;
26
- }
27
- };
28
- watch(theme, () => {
29
- setTheme(theme.value);
30
- }, { immediate: true });
31
- watch(() => initValue, () => {
32
- setTheme(initValue);
33
- });
34
- return {
35
- currentTheme: readonly(theme),
36
- onToggleCurrentTheme: onToggleTheme
37
- };
38
- }
39
- export {
40
- useThemeHooks
41
- };