@kine-design/crud 0.0.1-beta.1

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 (61) hide show
  1. package/dist/components/layout/KContent.d.ts +2 -0
  2. package/dist/components/layout/KHeader.d.ts +2 -0
  3. package/dist/components/layout/KLayout.d.ts +44 -0
  4. package/dist/components/layout/KSider.d.ts +2 -0
  5. package/dist/components/layout/index.d.ts +13 -0
  6. package/dist/components/login/KLoginPage.d.ts +43 -0
  7. package/dist/components/login/index.d.ts +10 -0
  8. package/dist/components/navMenu/KNavMenu.d.ts +27 -0
  9. package/dist/components/navMenu/index.d.ts +2 -0
  10. package/dist/components/pageHeader/KPageHeader.d.ts +49 -0
  11. package/dist/components/pageHeader/index.d.ts +9 -0
  12. package/dist/components/searchTable/KSearchTable.d.ts +99 -0
  13. package/dist/components/searchTable/index.d.ts +9 -0
  14. package/dist/components/upload/KFileList.d.ts +27 -0
  15. package/dist/components/upload/KImageUpload.d.ts +91 -0
  16. package/dist/components/upload/KUpload.d.ts +82 -0
  17. package/dist/components/upload/index.d.ts +12 -0
  18. package/dist/components/upload/types.d.ts +23 -0
  19. package/dist/composables/auth/authGuard.d.ts +67 -0
  20. package/dist/composables/auth/index.d.ts +14 -0
  21. package/dist/composables/auth/types.d.ts +90 -0
  22. package/dist/composables/auth/useAuth.d.ts +45 -0
  23. package/dist/composables/auth/vCan.d.ts +44 -0
  24. package/dist/composables/defineRepository.d.ts +25 -0
  25. package/dist/composables/error/createErrorHandler.d.ts +22 -0
  26. package/dist/composables/error/defaultFeedbackHandler.d.ts +3 -0
  27. package/dist/composables/error/dispatchError.d.ts +6 -0
  28. package/dist/composables/error/index.d.ts +13 -0
  29. package/dist/composables/error/types.d.ts +28 -0
  30. package/dist/composables/error/useErrorHandler.d.ts +26 -0
  31. package/dist/composables/index.d.ts +15 -0
  32. package/dist/composables/request/composables.d.ts +44 -0
  33. package/dist/composables/request/controlGate.d.ts +21 -0
  34. package/dist/composables/request/createRequest.d.ts +31 -0
  35. package/dist/composables/request/index.d.ts +23 -0
  36. package/dist/composables/request/orchestrator.d.ts +16 -0
  37. package/dist/composables/request/requestBuilder.d.ts +34 -0
  38. package/dist/composables/request/transport/fetchTransport.d.ts +4 -0
  39. package/dist/composables/request/transport/xhrTransport.d.ts +4 -0
  40. package/dist/composables/request/types.d.ts +166 -0
  41. package/dist/composables/request/upload.d.ts +17 -0
  42. package/dist/composables/router/createRouterGuard.d.ts +50 -0
  43. package/dist/composables/router/defineCrudRoutes.d.ts +26 -0
  44. package/dist/composables/router/index.d.ts +14 -0
  45. package/dist/composables/router/types.d.ts +110 -0
  46. package/dist/composables/router/useMenuFromRoutes.d.ts +30 -0
  47. package/dist/composables/router/useTabStore.d.ts +35 -0
  48. package/dist/composables/setupCrud.d.ts +17 -0
  49. package/dist/composables/storage/createStorageAdapter.d.ts +22 -0
  50. package/dist/composables/storage/index.d.ts +12 -0
  51. package/dist/composables/storage/types.d.ts +14 -0
  52. package/dist/composables/storage/useStorage.d.ts +17 -0
  53. package/dist/composables/store/defineUserStore.d.ts +62 -0
  54. package/dist/composables/store/index.d.ts +10 -0
  55. package/dist/composables/types.d.ts +68 -0
  56. package/dist/crud.css +1308 -0
  57. package/dist/crud.js +3046 -0
  58. package/dist/index.d.ts +29 -0
  59. package/dist/setup.d.ts +95 -0
  60. package/dist/vite.config.build.d.ts +2 -0
  61. package/package.json +33 -0
@@ -0,0 +1,2 @@
1
+ declare const _default: import('vue').DefineComponent<{}, () => import("vue/jsx-runtime").JSX.Element, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
2
+ export default _default;
@@ -0,0 +1,2 @@
1
+ declare const _default: import('vue').DefineComponent<{}, () => import("vue/jsx-runtime").JSX.Element, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
2
+ export default _default;
@@ -0,0 +1,44 @@
1
+ export declare const LAYOUT_COLLAPSED_KEY: unique symbol;
2
+ export declare const LAYOUT_TOGGLE_KEY: unique symbol;
3
+ export declare const LAYOUT_SIDER_WIDTH_KEY: unique symbol;
4
+ export declare const LAYOUT_COLLAPSED_WIDTH_KEY: unique symbol;
5
+ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropTypes<{
6
+ /** 受控模式:外部传入 collapsed 状态 */
7
+ collapsed: {
8
+ type: BooleanConstructor;
9
+ default: undefined;
10
+ };
11
+ /** 侧边栏展开宽度 */
12
+ siderWidth: {
13
+ type: StringConstructor;
14
+ default: string;
15
+ };
16
+ /** 侧边栏折叠宽度 */
17
+ collapsedWidth: {
18
+ type: StringConstructor;
19
+ default: string;
20
+ };
21
+ }>, () => import("vue/jsx-runtime").JSX.Element, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, "update:collapsed"[], "update:collapsed", import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
22
+ /** 受控模式:外部传入 collapsed 状态 */
23
+ collapsed: {
24
+ type: BooleanConstructor;
25
+ default: undefined;
26
+ };
27
+ /** 侧边栏展开宽度 */
28
+ siderWidth: {
29
+ type: StringConstructor;
30
+ default: string;
31
+ };
32
+ /** 侧边栏折叠宽度 */
33
+ collapsedWidth: {
34
+ type: StringConstructor;
35
+ default: string;
36
+ };
37
+ }>> & Readonly<{
38
+ "onUpdate:collapsed"?: ((...args: any[]) => any) | undefined;
39
+ }>, {
40
+ collapsed: boolean;
41
+ siderWidth: string;
42
+ collapsedWidth: string;
43
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
44
+ export default _default;
@@ -0,0 +1,2 @@
1
+ declare const _default: import('vue').DefineComponent<{}, () => import("vue/jsx-runtime").JSX.Element, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
2
+ export default _default;
@@ -0,0 +1,13 @@
1
+ /**
2
+ * @description layout 布局组件统一导出
3
+ * @author 阿怪
4
+ * @date 2026/2/26
5
+ * @version v0.0.1
6
+ *
7
+ * 江湖的业务千篇一律,复杂的代码好几百行。
8
+ */
9
+ export { default as KLayout } from './KLayout';
10
+ export { default as KSider } from './KSider';
11
+ export { default as KHeader } from './KHeader';
12
+ export { default as KContent } from './KContent';
13
+ export { LAYOUT_COLLAPSED_KEY, LAYOUT_TOGGLE_KEY, LAYOUT_SIDER_WIDTH_KEY, LAYOUT_COLLAPSED_WIDTH_KEY, } from './KLayout';
@@ -0,0 +1,43 @@
1
+ export type LoginForm = {
2
+ username: string;
3
+ password: string;
4
+ remember: boolean;
5
+ };
6
+ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropTypes<{
7
+ /** 系统名称 */
8
+ title: {
9
+ type: StringConstructor;
10
+ default: string;
11
+ };
12
+ /** 登录中状态 */
13
+ loading: {
14
+ type: BooleanConstructor;
15
+ default: boolean;
16
+ };
17
+ /** 登录提交回调 */
18
+ onSubmit: {
19
+ type: () => (form: LoginForm) => Promise<void> | void;
20
+ default: undefined;
21
+ };
22
+ }>, () => import("vue/jsx-runtime").JSX.Element, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
23
+ /** 系统名称 */
24
+ title: {
25
+ type: StringConstructor;
26
+ default: string;
27
+ };
28
+ /** 登录中状态 */
29
+ loading: {
30
+ type: BooleanConstructor;
31
+ default: boolean;
32
+ };
33
+ /** 登录提交回调 */
34
+ onSubmit: {
35
+ type: () => (form: LoginForm) => Promise<void> | void;
36
+ default: undefined;
37
+ };
38
+ }>> & Readonly<{}>, {
39
+ title: string;
40
+ onSubmit: (form: LoginForm) => Promise<void> | void;
41
+ loading: boolean;
42
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
43
+ export default _default;
@@ -0,0 +1,10 @@
1
+ /**
2
+ * @description login 模块导出
3
+ * @author 阿怪
4
+ * @date 2026/2/26
5
+ * @version v0.0.1
6
+ *
7
+ * 江湖的业务千篇一律,复杂的代码好几百行。
8
+ */
9
+ export { default as KLoginPage } from './KLoginPage';
10
+ export type { LoginForm } from './KLoginPage';
@@ -0,0 +1,27 @@
1
+ import { PropType } from 'vue';
2
+ /**
3
+ * 导航菜单数据项(扩展 MenuData,叶子节点带 path/icon)
4
+ */
5
+ export interface NavMenuData {
6
+ key: string | number;
7
+ label: string;
8
+ path?: string;
9
+ icon?: string;
10
+ children?: NavMenuData[];
11
+ disabled?: boolean;
12
+ [k: string]: unknown;
13
+ }
14
+ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropTypes<{
15
+ data: {
16
+ type: PropType<NavMenuData[]>;
17
+ default: () => never[];
18
+ };
19
+ }>, () => import("vue/jsx-runtime").JSX.Element, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
20
+ data: {
21
+ type: PropType<NavMenuData[]>;
22
+ default: () => never[];
23
+ };
24
+ }>> & Readonly<{}>, {
25
+ data: NavMenuData[];
26
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
27
+ export default _default;
@@ -0,0 +1,2 @@
1
+ export { default as KNavMenu } from './KNavMenu';
2
+ export type { NavMenuData } from './KNavMenu';
@@ -0,0 +1,49 @@
1
+ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropTypes<{
2
+ /** 页面标题 */
3
+ title: {
4
+ type: StringConstructor;
5
+ default: string;
6
+ };
7
+ /** 副标题 */
8
+ subtitle: {
9
+ type: StringConstructor;
10
+ default: string;
11
+ };
12
+ /** 是否显示返回按钮 */
13
+ backable: {
14
+ type: BooleanConstructor;
15
+ default: boolean;
16
+ };
17
+ /** 返回回调 */
18
+ onBack: {
19
+ type: () => () => void;
20
+ default: undefined;
21
+ };
22
+ }>, () => import("vue/jsx-runtime").JSX.Element, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
23
+ /** 页面标题 */
24
+ title: {
25
+ type: StringConstructor;
26
+ default: string;
27
+ };
28
+ /** 副标题 */
29
+ subtitle: {
30
+ type: StringConstructor;
31
+ default: string;
32
+ };
33
+ /** 是否显示返回按钮 */
34
+ backable: {
35
+ type: BooleanConstructor;
36
+ default: boolean;
37
+ };
38
+ /** 返回回调 */
39
+ onBack: {
40
+ type: () => () => void;
41
+ default: undefined;
42
+ };
43
+ }>> & Readonly<{}>, {
44
+ title: string;
45
+ subtitle: string;
46
+ backable: boolean;
47
+ onBack: () => void;
48
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
49
+ export default _default;
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @description pageHeader 模块导出
3
+ * @author 阿怪
4
+ * @date 2026/2/26
5
+ * @version v0.0.1
6
+ *
7
+ * 江湖的业务千篇一律,复杂的代码好几百行。
8
+ */
9
+ export { default as KPageHeader } from './KPageHeader';
@@ -0,0 +1,99 @@
1
+ import { PropType } from 'vue';
2
+ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropTypes<{
3
+ /** 加载状态 */
4
+ loading: {
5
+ type: BooleanConstructor;
6
+ default: boolean;
7
+ };
8
+ /** 表格数据 */
9
+ data: {
10
+ type: PropType<Record<string, unknown>[]>;
11
+ default: () => never[];
12
+ };
13
+ /** 总条数 */
14
+ total: {
15
+ type: NumberConstructor;
16
+ default: number;
17
+ };
18
+ /** 当前页(受控,配合 v-model:page) */
19
+ page: {
20
+ type: NumberConstructor;
21
+ default: number;
22
+ };
23
+ /** 每页条数(受控,配合 v-model:pageSize) */
24
+ pageSize: {
25
+ type: NumberConstructor;
26
+ default: number;
27
+ };
28
+ /** 是否显示搜索区 */
29
+ searchable: {
30
+ type: BooleanConstructor;
31
+ default: boolean;
32
+ };
33
+ /** 是否显示分页 */
34
+ pageable: {
35
+ type: BooleanConstructor;
36
+ default: boolean;
37
+ };
38
+ /** 透传给 KTable 的额外 props */
39
+ tableProps: {
40
+ type: PropType<Record<string, unknown>>;
41
+ default: () => {};
42
+ };
43
+ }>, () => import("vue/jsx-runtime").JSX.Element, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, ("search" | "reset" | "update:page" | "update:pageSize")[], "search" | "reset" | "update:page" | "update:pageSize", import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
44
+ /** 加载状态 */
45
+ loading: {
46
+ type: BooleanConstructor;
47
+ default: boolean;
48
+ };
49
+ /** 表格数据 */
50
+ data: {
51
+ type: PropType<Record<string, unknown>[]>;
52
+ default: () => never[];
53
+ };
54
+ /** 总条数 */
55
+ total: {
56
+ type: NumberConstructor;
57
+ default: number;
58
+ };
59
+ /** 当前页(受控,配合 v-model:page) */
60
+ page: {
61
+ type: NumberConstructor;
62
+ default: number;
63
+ };
64
+ /** 每页条数(受控,配合 v-model:pageSize) */
65
+ pageSize: {
66
+ type: NumberConstructor;
67
+ default: number;
68
+ };
69
+ /** 是否显示搜索区 */
70
+ searchable: {
71
+ type: BooleanConstructor;
72
+ default: boolean;
73
+ };
74
+ /** 是否显示分页 */
75
+ pageable: {
76
+ type: BooleanConstructor;
77
+ default: boolean;
78
+ };
79
+ /** 透传给 KTable 的额外 props */
80
+ tableProps: {
81
+ type: PropType<Record<string, unknown>>;
82
+ default: () => {};
83
+ };
84
+ }>> & Readonly<{
85
+ onReset?: ((...args: any[]) => any) | undefined;
86
+ onSearch?: ((...args: any[]) => any) | undefined;
87
+ "onUpdate:page"?: ((...args: any[]) => any) | undefined;
88
+ "onUpdate:pageSize"?: ((...args: any[]) => any) | undefined;
89
+ }>, {
90
+ data: Record<string, unknown>[];
91
+ loading: boolean;
92
+ total: number;
93
+ pageSize: number;
94
+ page: number;
95
+ searchable: boolean;
96
+ pageable: boolean;
97
+ tableProps: Record<string, unknown>;
98
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
99
+ export default _default;
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @description KSearchTable barrel export
3
+ * @author 阿怪
4
+ * @date 2026/2/26
5
+ * @version v0.0.1
6
+ *
7
+ * 江湖的业务千篇一律,复杂的代码好几百行。
8
+ */
9
+ export { default as KSearchTable } from './KSearchTable';
@@ -0,0 +1,27 @@
1
+ import { PropType } from 'vue';
2
+ import { UploadFile } from './types';
3
+ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropTypes<{
4
+ files: {
5
+ type: PropType<UploadFile[]>;
6
+ default: () => never[];
7
+ };
8
+ removable: {
9
+ type: BooleanConstructor;
10
+ default: boolean;
11
+ };
12
+ }>, () => import("vue/jsx-runtime").JSX.Element | null, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, "remove"[], "remove", import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
13
+ files: {
14
+ type: PropType<UploadFile[]>;
15
+ default: () => never[];
16
+ };
17
+ removable: {
18
+ type: BooleanConstructor;
19
+ default: boolean;
20
+ };
21
+ }>> & Readonly<{
22
+ onRemove?: ((...args: any[]) => any) | undefined;
23
+ }>, {
24
+ files: UploadFile[];
25
+ removable: boolean;
26
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
27
+ export default _default;
@@ -0,0 +1,91 @@
1
+ import { PropType } from 'vue';
2
+ import { UploadFile, UploadRequest } from './types';
3
+ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropTypes<{
4
+ request: {
5
+ type: PropType<UploadRequest>;
6
+ required: true;
7
+ };
8
+ accept: {
9
+ type: StringConstructor;
10
+ default: string;
11
+ };
12
+ multiple: {
13
+ type: BooleanConstructor;
14
+ default: boolean;
15
+ };
16
+ maxCount: {
17
+ type: NumberConstructor;
18
+ default: number;
19
+ };
20
+ maxSize: {
21
+ type: NumberConstructor;
22
+ default: number;
23
+ };
24
+ disabled: {
25
+ type: BooleanConstructor;
26
+ default: boolean;
27
+ };
28
+ fileList: {
29
+ type: PropType<UploadFile[]>;
30
+ default: () => never[];
31
+ };
32
+ drag: {
33
+ type: BooleanConstructor;
34
+ default: boolean;
35
+ };
36
+ previewSize: {
37
+ type: StringConstructor;
38
+ default: string;
39
+ };
40
+ }>, () => import("vue/jsx-runtime").JSX.Element, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, ("change" | "error" | "update:fileList")[], "change" | "error" | "update:fileList", import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
41
+ request: {
42
+ type: PropType<UploadRequest>;
43
+ required: true;
44
+ };
45
+ accept: {
46
+ type: StringConstructor;
47
+ default: string;
48
+ };
49
+ multiple: {
50
+ type: BooleanConstructor;
51
+ default: boolean;
52
+ };
53
+ maxCount: {
54
+ type: NumberConstructor;
55
+ default: number;
56
+ };
57
+ maxSize: {
58
+ type: NumberConstructor;
59
+ default: number;
60
+ };
61
+ disabled: {
62
+ type: BooleanConstructor;
63
+ default: boolean;
64
+ };
65
+ fileList: {
66
+ type: PropType<UploadFile[]>;
67
+ default: () => never[];
68
+ };
69
+ drag: {
70
+ type: BooleanConstructor;
71
+ default: boolean;
72
+ };
73
+ previewSize: {
74
+ type: StringConstructor;
75
+ default: string;
76
+ };
77
+ }>> & Readonly<{
78
+ onChange?: ((...args: any[]) => any) | undefined;
79
+ onError?: ((...args: any[]) => any) | undefined;
80
+ "onUpdate:fileList"?: ((...args: any[]) => any) | undefined;
81
+ }>, {
82
+ disabled: boolean;
83
+ multiple: boolean;
84
+ drag: boolean;
85
+ accept: string;
86
+ maxCount: number;
87
+ maxSize: number;
88
+ fileList: UploadFile[];
89
+ previewSize: string;
90
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
91
+ export default _default;
@@ -0,0 +1,82 @@
1
+ import { PropType } from 'vue';
2
+ import { UploadFile, UploadRequest } from './types';
3
+ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropTypes<{
4
+ request: {
5
+ type: PropType<UploadRequest>;
6
+ required: true;
7
+ };
8
+ accept: {
9
+ type: StringConstructor;
10
+ default: string;
11
+ };
12
+ multiple: {
13
+ type: BooleanConstructor;
14
+ default: boolean;
15
+ };
16
+ maxCount: {
17
+ type: NumberConstructor;
18
+ default: number;
19
+ };
20
+ maxSize: {
21
+ type: NumberConstructor;
22
+ default: number;
23
+ };
24
+ disabled: {
25
+ type: BooleanConstructor;
26
+ default: boolean;
27
+ };
28
+ fileList: {
29
+ type: PropType<UploadFile[]>;
30
+ default: () => never[];
31
+ };
32
+ drag: {
33
+ type: BooleanConstructor;
34
+ default: boolean;
35
+ };
36
+ }>, () => import("vue/jsx-runtime").JSX.Element, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, ("change" | "error" | "update:fileList")[], "change" | "error" | "update:fileList", import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
37
+ request: {
38
+ type: PropType<UploadRequest>;
39
+ required: true;
40
+ };
41
+ accept: {
42
+ type: StringConstructor;
43
+ default: string;
44
+ };
45
+ multiple: {
46
+ type: BooleanConstructor;
47
+ default: boolean;
48
+ };
49
+ maxCount: {
50
+ type: NumberConstructor;
51
+ default: number;
52
+ };
53
+ maxSize: {
54
+ type: NumberConstructor;
55
+ default: number;
56
+ };
57
+ disabled: {
58
+ type: BooleanConstructor;
59
+ default: boolean;
60
+ };
61
+ fileList: {
62
+ type: PropType<UploadFile[]>;
63
+ default: () => never[];
64
+ };
65
+ drag: {
66
+ type: BooleanConstructor;
67
+ default: boolean;
68
+ };
69
+ }>> & Readonly<{
70
+ onChange?: ((...args: any[]) => any) | undefined;
71
+ onError?: ((...args: any[]) => any) | undefined;
72
+ "onUpdate:fileList"?: ((...args: any[]) => any) | undefined;
73
+ }>, {
74
+ disabled: boolean;
75
+ multiple: boolean;
76
+ drag: boolean;
77
+ accept: string;
78
+ maxCount: number;
79
+ maxSize: number;
80
+ fileList: UploadFile[];
81
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
82
+ export default _default;
@@ -0,0 +1,12 @@
1
+ /**
2
+ * @description upload 组件 barrel export
3
+ * @author 阿怪
4
+ * @date 2026/2/26
5
+ * @version v0.0.1
6
+ *
7
+ * 江湖的业务千篇一律,复杂的代码好几百行。
8
+ */
9
+ export { default as KUpload } from './KUpload';
10
+ export { default as KImageUpload } from './KImageUpload';
11
+ export { default as KFileList } from './KFileList';
12
+ export type { UploadFile, UploadRequest } from './types';
@@ -0,0 +1,23 @@
1
+ /**
2
+ * @description 上传组件类型定义
3
+ * @author 阿怪
4
+ * @date 2026/2/26
5
+ * @version v0.0.1
6
+ *
7
+ * 江湖的业务千篇一律,复杂的代码好几百行。
8
+ */
9
+ export interface UploadFile {
10
+ uid: string;
11
+ name: string;
12
+ size: number;
13
+ type: string;
14
+ status: 'pending' | 'uploading' | 'success' | 'error';
15
+ percent: number;
16
+ url?: string;
17
+ thumbUrl?: string;
18
+ raw?: File;
19
+ response?: unknown;
20
+ }
21
+ export type UploadRequest = (file: File, onProgress: (percent: number) => void) => Promise<{
22
+ url: string;
23
+ }>;
@@ -0,0 +1,67 @@
1
+ import { AuthReturn } from './types';
2
+ /** 最小化 RouteLocationNormalized,只声明本文件用到的字段 */
3
+ interface RouteLocation {
4
+ path: string;
5
+ meta: RouteMeta;
6
+ }
7
+ /**
8
+ * 路由 meta 类型扩展。
9
+ * 业务项目可在 vue-router 模块声明中覆盖 RouteMeta 以获得完整类型提示:
10
+ *
11
+ * ```ts
12
+ * declare module 'vue-router' {
13
+ * interface RouteMeta {
14
+ * requiresAuth?: boolean;
15
+ * can?: { resource: string; action: string };
16
+ * }
17
+ * }
18
+ * ```
19
+ */
20
+ interface RouteMeta {
21
+ /** 是否需要登录,默认 true(undefined 视为 true)*/
22
+ requiresAuth?: boolean;
23
+ /** 路由级权限检查,等同于 can(resource, action) */
24
+ can?: {
25
+ resource: string;
26
+ action: string;
27
+ };
28
+ [key: string]: unknown;
29
+ }
30
+ /** 导航结果:undefined 表示放行,string 表示跳转目标路径 */
31
+ type NavigationResult = string | undefined;
32
+ /** beforeEach 守卫函数签名(与 vue-router NavigationGuardWithThis 兼容) */
33
+ export type BeforeEachGuard = (to: RouteLocation, from: RouteLocation) => NavigationResult | Promise<NavigationResult>;
34
+ export interface AuthGuardOptions {
35
+ /**
36
+ * 未登录时跳转路径,默认 '/login'。
37
+ * 设为 false 时完全交由 onUnauthorized 处理,不执行跳转。
38
+ */
39
+ loginPath?: string | false;
40
+ /**
41
+ * 权限不足时跳转路径,默认 '/403'。
42
+ * 设为 false 时阻止导航但不跳转(返回 false)。
43
+ */
44
+ forbiddenPath?: string | false;
45
+ }
46
+ /**
47
+ * 创建路由守卫函数,由业务项目自行注册到 vue-router。
48
+ *
49
+ * 守卫逻辑顺序:
50
+ * 1. 若路由声明了 meta.can,检查权限;无权限跳 forbiddenPath
51
+ * 2. 若路由 meta.requiresAuth !== false 且未登录,执行 onUnauthorized 并跳 loginPath
52
+ *
53
+ * @example
54
+ * ```ts
55
+ * // router/index.ts
56
+ * import { useAuth, createAuthGuard } from '@kine-design/crud';
57
+ *
58
+ * // 注意:必须在 Vue App 已 provide auth 后调用 useAuth()
59
+ * const guard = createAuthGuard(useAuth(), { loginPath: '/login' });
60
+ * router.beforeEach(guard);
61
+ * ```
62
+ *
63
+ * @param auth useAuth() 返回值
64
+ * @param options 守卫选项
65
+ */
66
+ export declare function createAuthGuard(auth: AuthReturn, options?: AuthGuardOptions): BeforeEachGuard;
67
+ export {};
@@ -0,0 +1,14 @@
1
+ /**
2
+ * @description auth 模块 barrel export
3
+ * @author 阿怪
4
+ * @date 2026/2/26
5
+ * @version v0.0.1
6
+ *
7
+ * 江湖的业务千篇一律,复杂的代码好几百行。
8
+ */
9
+ export { createAuth, useAuth } from './useAuth';
10
+ export { createAuthGuard } from './authGuard';
11
+ export { createVCan } from './vCan';
12
+ export type { Permission, PermissionScope, UserInfo, AuthState, AuthOptions, AuthReturn, } from './types';
13
+ export type { AuthGuardOptions, BeforeEachGuard } from './authGuard';
14
+ export type { CanBinding, CanBindingObject } from './vCan';