@keyblade/pro-components 0.0.2 → 0.0.3

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