@kine-design/core 0.0.1-beta.1 → 0.0.1-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (300) hide show
  1. package/assets/style/global.css +1 -0
  2. package/assets/style/var/Wuxing.css +71 -0
  3. package/assets/style/var.css +23 -0
  4. package/components/base/affix/api.ts +16 -0
  5. package/components/base/affix/index.ts +15 -0
  6. package/components/base/affix/props.d.ts +34 -0
  7. package/components/base/affix/useAffix.ts +123 -0
  8. package/components/base/alert/api.ts +18 -0
  9. package/components/base/alert/index.ts +15 -0
  10. package/components/base/alert/props.d.ts +50 -0
  11. package/components/base/anchor/api.ts +20 -0
  12. package/components/base/anchor/index.ts +16 -0
  13. package/components/base/anchor/props.d.ts +46 -0
  14. package/components/base/anchor/useAnchor.ts +83 -0
  15. package/components/base/autoComplete/api.ts +24 -0
  16. package/components/base/autoComplete/index.ts +17 -0
  17. package/components/base/autoComplete/props.d.ts +75 -0
  18. package/components/base/autoComplete/useAutoComplete.ts +149 -0
  19. package/components/base/avatar/api.ts +17 -0
  20. package/components/base/avatar/avatar.css +61 -0
  21. package/components/base/avatar/index.ts +14 -0
  22. package/components/base/avatar/props.d.ts +37 -0
  23. package/components/base/backTop/api.ts +17 -0
  24. package/components/base/backTop/index.ts +15 -0
  25. package/components/base/backTop/props.d.ts +38 -0
  26. package/components/base/backTop/useBackTop.ts +62 -0
  27. package/components/base/badge/api.ts +22 -0
  28. package/components/base/badge/index.ts +15 -0
  29. package/components/base/badge/props.d.ts +50 -0
  30. package/components/base/button/api.ts +28 -0
  31. package/components/base/button/button.css +34 -0
  32. package/components/base/button/index.ts +16 -0
  33. package/components/base/button/props.d.ts +64 -0
  34. package/components/base/button/useButton.ts +37 -0
  35. package/components/base/card/api.ts +17 -0
  36. package/components/base/card/index.ts +15 -0
  37. package/components/base/card/props.d.ts +37 -0
  38. package/components/base/carousel/api.ts +28 -0
  39. package/components/base/carousel/index.ts +17 -0
  40. package/components/base/carousel/props.d.ts +72 -0
  41. package/components/base/carousel/useCarousel.ts +151 -0
  42. package/components/base/cascader/api.ts +23 -0
  43. package/components/base/cascader/index.ts +18 -0
  44. package/components/base/cascader/props.d.ts +103 -0
  45. package/components/base/cascader/useCascader.ts +334 -0
  46. package/components/base/checkbox/api.ts +24 -0
  47. package/components/base/checkbox/checkbox.css +0 -0
  48. package/components/base/checkbox/index.ts +16 -0
  49. package/components/base/checkbox/props.d.ts +77 -0
  50. package/components/base/checkbox/useCheckbox.ts +42 -0
  51. package/components/base/collapse/api.ts +21 -0
  52. package/components/base/collapse/index.ts +16 -0
  53. package/components/base/collapse/props.d.ts +45 -0
  54. package/components/base/collapse/useCollapse.ts +80 -0
  55. package/components/base/datePicker/api.ts +18 -0
  56. package/components/base/datePicker/index.ts +19 -0
  57. package/components/base/datePicker/props.d.ts +60 -0
  58. package/components/base/datePicker/useDatePicker.ts +392 -0
  59. package/components/base/divider/api.ts +15 -0
  60. package/components/base/divider/divider.css +11 -0
  61. package/components/base/divider/index.ts +15 -0
  62. package/components/base/divider/props.d.ts +30 -0
  63. package/components/base/dropdown/api.ts +33 -0
  64. package/components/base/dropdown/index.ts +16 -0
  65. package/components/base/dropdown/props.d.ts +60 -0
  66. package/components/base/dropdown/useDropdown.ts +123 -0
  67. package/components/base/empty/api.ts +15 -0
  68. package/components/base/empty/index.ts +15 -0
  69. package/components/base/empty/props.d.ts +26 -0
  70. package/components/base/image/api.ts +25 -0
  71. package/components/base/image/index.ts +18 -0
  72. package/components/base/image/props.d.ts +67 -0
  73. package/components/base/image/useImage.ts +119 -0
  74. package/components/base/input/api.ts +19 -0
  75. package/components/base/input/index.ts +16 -0
  76. package/components/base/input/input.css +19 -0
  77. package/components/base/input/props.d.ts +60 -0
  78. package/components/base/input/useInput.ts +53 -0
  79. package/components/base/inputNumber/api.ts +21 -0
  80. package/components/base/inputNumber/index.ts +15 -0
  81. package/components/base/inputNumber/props.d.ts +64 -0
  82. package/components/base/inputNumber/useInputNumber.ts +140 -0
  83. package/components/base/li/api.ts +15 -0
  84. package/components/base/li/index.ts +13 -0
  85. package/components/base/li/props.d.ts +30 -0
  86. package/components/base/list/api.ts +16 -0
  87. package/components/base/list/index.ts +15 -0
  88. package/components/base/list/props.d.ts +33 -0
  89. package/components/base/list/useList.ts +36 -0
  90. package/components/base/loading/api.ts +17 -0
  91. package/components/base/loading/index.ts +15 -0
  92. package/components/base/loading/props.d.ts +38 -0
  93. package/components/base/popover/api.ts +28 -0
  94. package/components/base/popover/index.ts +15 -0
  95. package/components/base/popover/props.d.ts +73 -0
  96. package/components/base/popover/usePopover.ts +188 -0
  97. package/components/base/progress/api.ts +18 -0
  98. package/components/base/progress/index.ts +15 -0
  99. package/components/base/progress/props.d.ts +53 -0
  100. package/components/base/progress/useProgress.ts +28 -0
  101. package/components/base/radio/api.ts +19 -0
  102. package/components/base/radio/index.ts +19 -0
  103. package/components/base/radio/props.d.ts +59 -0
  104. package/components/base/radio/useRadio.ts +11 -0
  105. package/components/base/rate/api.ts +18 -0
  106. package/components/base/rate/index.ts +15 -0
  107. package/components/base/rate/props.d.ts +49 -0
  108. package/components/base/rate/useRate.ts +75 -0
  109. package/components/base/result/api.ts +20 -0
  110. package/components/base/result/index.ts +15 -0
  111. package/components/base/result/props.d.ts +36 -0
  112. package/components/base/select/api.ts +31 -0
  113. package/components/base/select/index.ts +18 -0
  114. package/components/base/select/props.d.ts +132 -0
  115. package/components/base/select/select.css +7 -0
  116. package/components/base/select/useSelect.ts +280 -0
  117. package/components/base/select/useSelectTools.ts +60 -0
  118. package/components/base/skeleton/api.ts +18 -0
  119. package/components/base/skeleton/index.ts +15 -0
  120. package/components/base/skeleton/props.d.ts +41 -0
  121. package/components/base/slider/api.ts +20 -0
  122. package/components/base/slider/index.ts +15 -0
  123. package/components/base/slider/props.d.ts +65 -0
  124. package/components/base/slider/useSlider.ts +83 -0
  125. package/components/base/space/api.ts +17 -0
  126. package/components/base/space/index.ts +15 -0
  127. package/components/base/space/props.d.ts +39 -0
  128. package/components/base/steps/api.ts +30 -0
  129. package/components/base/steps/index.ts +22 -0
  130. package/components/base/steps/props.d.ts +88 -0
  131. package/components/base/steps/useSteps.ts +101 -0
  132. package/components/base/switch/api.ts +22 -0
  133. package/components/base/switch/index.ts +17 -0
  134. package/components/base/switch/props.d.ts +66 -0
  135. package/components/base/switch/useSwitch.tsx +79 -0
  136. package/components/base/tabs/api.ts +23 -0
  137. package/components/base/tabs/index.ts +18 -0
  138. package/components/base/tabs/props.d.ts +41 -0
  139. package/components/base/tabs/useTabs.ts +66 -0
  140. package/components/base/tag/api.ts +17 -0
  141. package/components/base/tag/index.ts +13 -0
  142. package/components/base/tag/props.d.ts +49 -0
  143. package/components/base/timePicker/api.ts +21 -0
  144. package/components/base/timePicker/index.ts +18 -0
  145. package/components/base/timePicker/props.d.ts +66 -0
  146. package/components/base/timePicker/useTimePicker.ts +161 -0
  147. package/components/base/timeline/api.ts +24 -0
  148. package/components/base/timeline/index.ts +16 -0
  149. package/components/base/timeline/props.d.ts +60 -0
  150. package/components/base/tooltip/api.ts +19 -0
  151. package/components/base/tooltip/index.ts +17 -0
  152. package/components/base/tooltip/props.d.ts +34 -0
  153. package/components/base/tooltip/useTooltip.ts +89 -0
  154. package/components/base/transfer/api.ts +18 -0
  155. package/components/base/transfer/index.ts +17 -0
  156. package/components/base/transfer/props.d.ts +63 -0
  157. package/components/base/transfer/useTransfer.ts +207 -0
  158. package/components/base/tree/api.ts +47 -0
  159. package/components/base/tree/index.ts +29 -0
  160. package/components/base/tree/props.d.ts +108 -0
  161. package/components/base/tree/tree.ts +263 -0
  162. package/components/base/tree/useTree.ts +114 -0
  163. package/components/message/confirm/api.ts +21 -0
  164. package/components/message/confirm/index.ts +15 -0
  165. package/components/message/confirm/props.d.ts +69 -0
  166. package/components/message/dialog/api.ts +19 -0
  167. package/components/message/dialog/index.ts +15 -0
  168. package/components/message/dialog/props.d.ts +55 -0
  169. package/components/message/drawer/api.ts +32 -0
  170. package/components/message/drawer/index.ts +15 -0
  171. package/components/message/drawer/props.d.ts +73 -0
  172. package/components/message/message/api.ts +27 -0
  173. package/components/message/message/index.ts +20 -0
  174. package/components/message/message/props.d.ts +54 -0
  175. package/components/message/message/useMessage.ts +61 -0
  176. package/components/message/notification/api.ts +23 -0
  177. package/components/message/notification/index.ts +19 -0
  178. package/components/message/notification/props.d.ts +64 -0
  179. package/components/message/notification/useNotification.ts +79 -0
  180. package/components/message/popover/MPopover.tsx +94 -0
  181. package/components/message/popover/api.ts +54 -0
  182. package/components/message/popover/index.ts +17 -0
  183. package/components/message/popover/popover.css +21 -0
  184. package/components/message/popover/props.d.ts +76 -0
  185. package/components/message/popover/usePopover.ts +230 -0
  186. package/components/other/darkMode/api.ts +17 -0
  187. package/components/other/darkMode/index.ts +17 -0
  188. package/components/other/darkMode/props.d.ts +37 -0
  189. package/components/other/darkMode/useDarkMode.ts +129 -0
  190. package/components/template/border/api.ts +18 -0
  191. package/components/template/border/index.ts +15 -0
  192. package/components/template/border/props.d.ts +41 -0
  193. package/components/template/breadcrumb/api.ts +15 -0
  194. package/components/template/breadcrumb/index.ts +15 -0
  195. package/components/template/breadcrumb/props.d.ts +45 -0
  196. package/components/template/descriptions/api.ts +23 -0
  197. package/components/template/descriptions/index.ts +16 -0
  198. package/components/template/descriptions/props.d.ts +54 -0
  199. package/components/template/form/api.ts +23 -0
  200. package/components/template/form/index.ts +20 -0
  201. package/components/template/form/props.d.ts +60 -0
  202. package/components/template/grid/api.ts +20 -0
  203. package/components/template/grid/index.ts +15 -0
  204. package/components/template/grid/props.d.ts +48 -0
  205. package/components/template/menu/api.ts +26 -0
  206. package/components/template/menu/index.ts +19 -0
  207. package/components/template/menu/props.d.ts +93 -0
  208. package/components/template/menu/useMenu.ts +155 -0
  209. package/components/template/pagination/api.ts +22 -0
  210. package/components/template/pagination/index.ts +18 -0
  211. package/components/template/pagination/props.d.ts +65 -0
  212. package/components/template/pagination/usePagination.ts +186 -0
  213. package/components/template/table/api.ts +18 -0
  214. package/components/template/table/index.ts +18 -0
  215. package/components/template/table/props.d.ts +36 -0
  216. package/components/template/table/useTable.ts +138 -0
  217. package/components/template/tableColumn/api.ts +17 -0
  218. package/components/template/tableColumn/index.ts +15 -0
  219. package/components/template/tableColumn/props.d.ts +32 -0
  220. package/components/template/virtualList/api.ts +16 -0
  221. package/components/template/virtualList/index.ts +18 -0
  222. package/components/template/virtualList/props.d.ts +25 -0
  223. package/components/template/virtualList/useVirtualList.ts +237 -0
  224. package/components/types/hook.d.ts +13 -0
  225. package/components/types/props.d.ts +52 -0
  226. package/components/types/template.d.ts +59 -0
  227. package/compositions/common/defineCore.ts +55 -0
  228. package/compositions/common/useDebounceFn.ts +27 -0
  229. package/compositions/common/useDrag.ts +65 -0
  230. package/compositions/common/useElementSize.ts +37 -0
  231. package/compositions/common/useEventListener.ts +48 -0
  232. package/compositions/common/usePopover.ts +45 -0
  233. package/compositions/common/useResizeObserver.ts +43 -0
  234. package/compositions/common/useTeleport.ts +24 -0
  235. package/compositions/input/useBooleanInput.ts +52 -0
  236. package/compositions/modal/useModal.ts +72 -0
  237. package/compositions/popper/useClickAway.ts +41 -0
  238. package/compositions/popper/usePopper.ts +63 -0
  239. package/compositions/utils/filters.ts +135 -0
  240. package/compositions/virtualList/enums.ts +52 -0
  241. package/compositions/virtualList/useContainerObserver.ts +82 -0
  242. package/compositions/virtualList/useEntries.ts +248 -0
  243. package/compositions/virtualList/useHeightCache.ts +83 -0
  244. package/compositions/virtualList/useSentinelObserver.ts +81 -0
  245. package/dist/components/base/affix/useAffix.d.ts +5 -4
  246. package/dist/components/base/anchor/useAnchor.d.ts +1 -1
  247. package/dist/components/base/autoComplete/useAutoComplete.d.ts +12 -4
  248. package/dist/components/base/backTop/useBackTop.d.ts +1 -1
  249. package/dist/components/base/button/index.d.ts +11 -2
  250. package/dist/components/base/button/useButton.d.ts +11 -2
  251. package/dist/components/base/carousel/useCarousel.d.ts +6 -3
  252. package/dist/components/base/cascader/useCascader.d.ts +23 -11
  253. package/dist/components/base/checkbox/useCheckbox.d.ts +4 -3
  254. package/dist/components/base/collapse/useCollapse.d.ts +2 -2
  255. package/dist/components/base/datePicker/useDatePicker.d.ts +140 -8
  256. package/dist/components/base/dropdown/useDropdown.d.ts +11 -5
  257. package/dist/components/base/image/useImage.d.ts +5 -5
  258. package/dist/components/base/input/useInput.d.ts +1 -2
  259. package/dist/components/base/inputNumber/useInputNumber.d.ts +2 -2
  260. package/dist/components/base/popover/usePopover.d.ts +8 -8
  261. package/dist/components/base/progress/useProgress.d.ts +1 -1
  262. package/dist/components/base/rate/useRate.d.ts +1 -1
  263. package/dist/components/base/select/useSelect.d.ts +8 -8
  264. package/dist/components/base/slider/useSlider.d.ts +3 -3
  265. package/dist/components/base/steps/index.d.ts +1 -1
  266. package/dist/components/base/steps/useSteps.d.ts +5 -5
  267. package/dist/components/base/switch/useSwitch.d.ts +8 -3
  268. package/dist/components/base/tabs/useTabs.d.ts +2 -2
  269. package/dist/components/base/timePicker/useTimePicker.d.ts +14 -6
  270. package/dist/components/base/tooltip/useTooltip.d.ts +14 -4
  271. package/dist/components/base/transfer/useTransfer.d.ts +15 -15
  272. package/dist/components/base/tree/index.d.ts +1 -1
  273. package/dist/components/base/tree/useTree.d.ts +2 -1
  274. package/dist/components/message/message/useMessage.d.ts +11 -1
  275. package/dist/components/message/notification/useNotification.d.ts +17 -1
  276. package/dist/components/message/popover/MPopover.d.ts +6 -1
  277. package/dist/components/message/popover/usePopover.d.ts +6 -6
  278. package/dist/components/other/darkMode/useDarkMode.d.ts +1 -1
  279. package/dist/components/template/menu/useMenu.d.ts +1 -0
  280. package/dist/components/template/virtualList/useVirtualList.d.ts +10 -7
  281. package/dist/compositions/common/useDrag.d.ts +1 -1
  282. package/dist/compositions/common/useElementSize.d.ts +2 -2
  283. package/dist/compositions/common/useTeleport.d.ts +4 -2
  284. package/dist/compositions/modal/useModal.d.ts +1 -1
  285. package/dist/core.js +6137 -4186
  286. package/dist/runtime/defineHook.d.ts +1 -1
  287. package/index.css +1 -0
  288. package/index.ts +71 -0
  289. package/package.json +19 -16
  290. package/runtime/defineHook.ts +21 -0
  291. package/tools/empty.ts +81 -0
  292. package/tools/index.ts +15 -0
  293. package/tools/types.ts +11 -0
  294. package/tsconfig.json +8 -0
  295. package/types/common/common.d.ts +25 -0
  296. package/types/common/model.d.ts +25 -0
  297. package/types/index.d.ts +11 -0
  298. package/types/props.d.ts +13 -0
  299. package/vite.config.build.ts +41 -0
  300. package/dist/vite.config.build.d.ts +0 -2
@@ -0,0 +1,37 @@
1
+ /**
2
+ * @description dark mode api type
3
+ * @author 阿怪
4
+ * @date 2026/2/25
5
+ * @version v1.1.0
6
+ *
7
+ * @name m-dark-mode
8
+ * @docDescription Headless dark mode component.
9
+ * 无样式暗色模式组件,用于切换日夜间模式。
10
+ *
11
+ * 江湖的业务千篇一律,复杂的代码好几百行。
12
+ */
13
+
14
+ export declare type DarkModeProps = {
15
+ /**
16
+ * @description 开关绑定值(true = 暗色)
17
+ * @type boolean
18
+ * @default false
19
+ */
20
+ modelValue?: boolean;
21
+ /**
22
+ * @description 自动初始化模式,跟随系统媒体查询
23
+ * @type boolean
24
+ * @default false
25
+ */
26
+ autoMode?: boolean;
27
+ /**
28
+ * @description 初始化事件,返回 true 则执行自动初始化
29
+ * @type function
30
+ */
31
+ initHandler?: () => boolean;
32
+ /**
33
+ * @description localStorage 持久化 key,传入则启用持久化
34
+ * @type string
35
+ */
36
+ storageKey?: string;
37
+ };
@@ -0,0 +1,129 @@
1
+ /**
2
+ * @description dark mode composable
3
+ * @author 阿怪
4
+ * @date 2026/2/25
5
+ * @version v1.1.0
6
+ *
7
+ * 江湖的业务千篇一律,复杂的代码好几百行。
8
+ *
9
+ * 核心约定:
10
+ * - 暗色模式通过 html[dark] attribute 标记(与 lib 层保持一致)
11
+ * - 传入 storageKey 时启用 localStorage 持久化
12
+ * - autoMode 时监听系统媒体查询变化,并在卸载时清理监听器
13
+ */
14
+ import { ref, watch, onMounted, onUnmounted } from 'vue';
15
+ import { DarkModeProps } from './props';
16
+
17
+ /** 将暗色状态同步到 html[dark] attribute */
18
+ function applyDarkAttr(isDark: boolean) {
19
+ if (typeof document === 'undefined') return;
20
+ const html = document.querySelector('html');
21
+ if (!html) return;
22
+ if (isDark) {
23
+ html.setAttribute('dark', '');
24
+ } else {
25
+ html.removeAttribute('dark');
26
+ }
27
+ }
28
+
29
+ /** 从 localStorage 读取持久化的暗色模式偏好,未找到返回 null */
30
+ function readStorage(storageKey: string): boolean | null {
31
+ if (typeof window === 'undefined') return null;
32
+ const stored = localStorage.getItem(storageKey);
33
+ if (stored === null) return null;
34
+ return stored === 'true';
35
+ }
36
+
37
+ /** 将暗色模式偏好写入 localStorage */
38
+ function writeStorage(storageKey: string, isDark: boolean) {
39
+ if (typeof window === 'undefined') return;
40
+ localStorage.setItem(storageKey, isDark.toString());
41
+ }
42
+
43
+ export function useDarkMode(
44
+ props: DarkModeProps,
45
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
46
+ ctx: { emit: (event: string, ...args: any[]) => void },
47
+ ) {
48
+ const isDark = ref(props.modelValue ?? false);
49
+
50
+ /** 切换暗色模式,同步 DOM 并触发事件 */
51
+ const toggle = () => {
52
+ isDark.value = !isDark.value;
53
+ ctx.emit('update:modelValue', isDark.value);
54
+ ctx.emit('change', isDark.value);
55
+ };
56
+
57
+ // 监听外部 modelValue 变化,同步到内部状态
58
+ watch(
59
+ () => props.modelValue,
60
+ (val) => {
61
+ if (val !== undefined && val !== isDark.value) {
62
+ isDark.value = val;
63
+ }
64
+ },
65
+ );
66
+
67
+ // 内部状态变化时同步 DOM 及 localStorage
68
+ watch(isDark, (val) => {
69
+ applyDarkAttr(val);
70
+ if (props.storageKey) {
71
+ writeStorage(props.storageKey, val);
72
+ }
73
+ });
74
+
75
+ // 系统媒体查询变化回调
76
+ let mediaQuery: MediaQueryList | null = null;
77
+ const onSystemChange = (event: MediaQueryListEvent) => {
78
+ isDark.value = event.matches;
79
+ ctx.emit('update:modelValue', isDark.value);
80
+ ctx.emit('change', isDark.value);
81
+ };
82
+
83
+ onMounted(() => {
84
+ // 1. 若有 initHandler,优先交由外部决定是否自动初始化
85
+ if (props.initHandler) {
86
+ const shouldAutoInit = props.initHandler();
87
+ if (!shouldAutoInit) {
88
+ // initHandler 已处理好初始状态,只需同步 DOM
89
+ applyDarkAttr(isDark.value);
90
+ return;
91
+ }
92
+ } else if (props.storageKey) {
93
+ // 2. 无 initHandler 但有 storageKey,尝试从 localStorage 读取
94
+ const stored = readStorage(props.storageKey);
95
+ if (stored !== null) {
96
+ isDark.value = stored;
97
+ applyDarkAttr(isDark.value);
98
+ // 有存储值则不再跟随系统
99
+ return;
100
+ }
101
+ }
102
+
103
+ // 3. autoMode:跟随系统媒体查询
104
+ if (props.autoMode && typeof window !== 'undefined') {
105
+ mediaQuery = window.matchMedia('(prefers-color-scheme: dark)');
106
+ isDark.value = mediaQuery.matches;
107
+ ctx.emit('update:modelValue', isDark.value);
108
+ ctx.emit('change', isDark.value);
109
+ mediaQuery.addEventListener('change', onSystemChange);
110
+ }
111
+
112
+ // 挂载时应用当前状态
113
+ applyDarkAttr(isDark.value);
114
+ });
115
+
116
+ onUnmounted(() => {
117
+ // 清理媒体查询监听器,防止内存泄漏
118
+ if (mediaQuery) {
119
+ mediaQuery.removeEventListener('change', onSystemChange);
120
+ mediaQuery = null;
121
+ }
122
+ });
123
+
124
+ return {
125
+ isDark,
126
+ toggle,
127
+ applyDarkAttr,
128
+ };
129
+ }
@@ -0,0 +1,18 @@
1
+ /**
2
+ * @description border 运行时 props
3
+ * @author 阿怪
4
+ * @date 2026/2/25
5
+ * @version v1.0.0
6
+ *
7
+ * 江湖的业务千篇一律,复杂的代码好几百行。
8
+ */
9
+ import { MCOPO } from '../../types/props';
10
+ import { BorderProps } from './props';
11
+
12
+ export const props: MCOPO<BorderProps> = {
13
+ top: { type: [Boolean, String], default: true },
14
+ right: { type: [Boolean, String], default: true },
15
+ bottom: { type: [Boolean, String], default: true },
16
+ left: { type: [Boolean, String], default: true },
17
+ insteadMain: { type: [Boolean, String], default: false },
18
+ };
@@ -0,0 +1,15 @@
1
+ /**
2
+ * @description border core 导出
3
+ * @author 阿怪
4
+ * @date 2026/2/25
5
+ * @version v1.0.0
6
+ *
7
+ * 江湖的业务千篇一律,复杂的代码好几百行。
8
+ */
9
+ import { props } from './api';
10
+
11
+ export const BorderCore = {
12
+ props,
13
+ };
14
+
15
+ export type { BorderProps } from './props';
@@ -0,0 +1,41 @@
1
+ /**
2
+ * @description border props 类型定义
3
+ * @author 阿怪
4
+ * @date 2026/2/25
5
+ * @version v1.0.0
6
+ *
7
+ * 江湖的业务千篇一律,复杂的代码好几百行。
8
+ */
9
+
10
+ export declare type BorderProps = {
11
+ /**
12
+ * @description 顶部边框是否显示
13
+ * @default true
14
+ * @type boolean | string
15
+ */
16
+ top?: boolean | string;
17
+ /**
18
+ * @description 右侧边框是否显示
19
+ * @default true
20
+ * @type boolean | string
21
+ */
22
+ right?: boolean | string;
23
+ /**
24
+ * @description 底部边框是否显示
25
+ * @default true
26
+ * @type boolean | string
27
+ */
28
+ bottom?: boolean | string;
29
+ /**
30
+ * @description 左侧边框是否显示
31
+ * @default true
32
+ * @type boolean | string
33
+ */
34
+ left?: boolean | string;
35
+ /**
36
+ * @description 是否用 slot 替换主容器 div
37
+ * @default false
38
+ * @type boolean | string
39
+ */
40
+ insteadMain?: boolean | string;
41
+ };
@@ -0,0 +1,15 @@
1
+ /**
2
+ * @description breadcrumb 运行时 props
3
+ * @author 阿怪
4
+ * @date 2026/2/25
5
+ * @version v1.0.0
6
+ *
7
+ * 江湖的业务千篇一律,复杂的代码好几百行。
8
+ */
9
+ import { MCOPO } from '../../types/props';
10
+ import { BreadcrumbProps } from './props';
11
+
12
+ export const props: MCOPO<BreadcrumbProps> = {
13
+ separator: { type: String, default: '/' },
14
+ items: { type: Array, default: () => [] },
15
+ };
@@ -0,0 +1,15 @@
1
+ /**
2
+ * @description breadcrumb core 导出
3
+ * @author 阿怪
4
+ * @date 2026/2/25
5
+ * @version v1.0.0
6
+ *
7
+ * 江湖的业务千篇一律,复杂的代码好几百行。
8
+ */
9
+ import { props } from './api';
10
+
11
+ export const BreadcrumbCore = {
12
+ props,
13
+ };
14
+
15
+ export type { BreadcrumbProps, BreadcrumbItemOption } from './props';
@@ -0,0 +1,45 @@
1
+ /**
2
+ * @description breadcrumb props 类型定义
3
+ * @author 阿怪
4
+ * @date 2026/2/25
5
+ * @version v1.0.0
6
+ *
7
+ * 江湖的业务千篇一律,复杂的代码好几百行。
8
+ */
9
+
10
+ /**
11
+ * 面包屑单项数据结构
12
+ */
13
+ export declare type BreadcrumbItemOption = {
14
+ /**
15
+ * @description 显示文本
16
+ * @type string
17
+ */
18
+ label: string;
19
+ /**
20
+ * @description 跳转链接,有值时渲染为 <a> 标签
21
+ * @type string
22
+ */
23
+ href?: string;
24
+ /**
25
+ * @description 是否禁用
26
+ * @default false
27
+ * @type boolean
28
+ */
29
+ disabled?: boolean;
30
+ };
31
+
32
+ export declare type BreadcrumbProps = {
33
+ /**
34
+ * @description 分隔符
35
+ * @default '/'
36
+ * @type string
37
+ */
38
+ separator?: string;
39
+ /**
40
+ * @description 面包屑数据项列表
41
+ * @default []
42
+ * @type BreadcrumbItemOption[]
43
+ */
44
+ items?: BreadcrumbItemOption[];
45
+ };
@@ -0,0 +1,23 @@
1
+ /**
2
+ * @description descriptions api
3
+ * @author 阿怪
4
+ * @date 2026/2/26
5
+ * @version v1.0.0
6
+ *
7
+ * 江湖的业务千篇一律,复杂的代码好几百行。
8
+ */
9
+ import { MCOPO, MPropType } from '../../types/props';
10
+ import { DescriptionsProps, DescriptionsItemProps } from './props';
11
+
12
+ export const descriptionsProps: MCOPO<DescriptionsProps> = {
13
+ title: { type: String, default: '' },
14
+ column: { type: Number, default: 3 },
15
+ direction: { type: String as MPropType<'horizontal' | 'vertical'>, default: 'horizontal' },
16
+ border: { type: Boolean, default: false },
17
+ size: { type: String as MPropType<'small' | 'medium' | 'large'>, default: 'medium' },
18
+ };
19
+
20
+ export const descriptionsItemProps: MCOPO<DescriptionsItemProps> = {
21
+ label: { type: String, required: true },
22
+ span: { type: Number, default: 1 },
23
+ };
@@ -0,0 +1,16 @@
1
+ /**
2
+ * @description descriptions core 导出
3
+ * @author 阿怪
4
+ * @date 2026/2/26
5
+ * @version v1.0.0
6
+ *
7
+ * 江湖的业务千篇一律,复杂的代码好几百行。
8
+ */
9
+ import { descriptionsProps, descriptionsItemProps } from './api';
10
+
11
+ export const DescriptionsCore = {
12
+ descriptionsProps,
13
+ descriptionsItemProps,
14
+ };
15
+
16
+ export type { DescriptionsProps, DescriptionsItemProps } from './props';
@@ -0,0 +1,54 @@
1
+ /**
2
+ * @description descriptions api type
3
+ * @author 阿怪
4
+ * @date 2026/2/26
5
+ * @version v1.0.0
6
+ *
7
+ * 江湖的业务千篇一律,复杂的代码好几百行。
8
+ */
9
+
10
+ export declare type DescriptionsProps = {
11
+ /**
12
+ * @description 标题文本
13
+ * @type string
14
+ */
15
+ title?: string,
16
+ /**
17
+ * @description 每行列数
18
+ * @type number
19
+ * @default 3
20
+ */
21
+ column?: number,
22
+ /**
23
+ * @description 标签与值的布局方向
24
+ * @type 'horizontal' | 'vertical'
25
+ * @default 'horizontal'
26
+ */
27
+ direction?: 'horizontal' | 'vertical',
28
+ /**
29
+ * @description 是否显示边框
30
+ * @type boolean
31
+ * @default false
32
+ */
33
+ border?: boolean,
34
+ /**
35
+ * @description 尺寸,影响内边距
36
+ * @type 'small' | 'medium' | 'large'
37
+ * @default 'medium'
38
+ */
39
+ size?: 'small' | 'medium' | 'large',
40
+ };
41
+
42
+ export declare type DescriptionsItemProps = {
43
+ /**
44
+ * @description 标签文本
45
+ * @type string
46
+ */
47
+ label: string,
48
+ /**
49
+ * @description 列跨度
50
+ * @type number
51
+ * @default 1
52
+ */
53
+ span?: number,
54
+ };
@@ -0,0 +1,23 @@
1
+ /**
2
+ * @description form 运行时 props
3
+ * @author 阿怪
4
+ * @date 2026/2/25
5
+ * @version v1.0.0
6
+ *
7
+ * 江湖的业务千篇一律,复杂的代码好几百行。
8
+ */
9
+ import { MCOPO } from '../../types/props';
10
+ import { FormProps, FormItemProps } from './props';
11
+
12
+ export const formProps: MCOPO<FormProps> = {
13
+ inline: { type: Boolean, default: false },
14
+ submit: { type: Boolean, default: false },
15
+ model: { type: Object, default: undefined },
16
+ labelWidth: { type: String, default: undefined },
17
+ };
18
+
19
+ export const formItemProps: MCOPO<FormItemProps> = {
20
+ label: { type: String, default: '' },
21
+ prop: { type: String, default: '' },
22
+ required: { type: Boolean, default: false },
23
+ };
@@ -0,0 +1,20 @@
1
+ /**
2
+ * @description form core 导出
3
+ * @author 阿怪
4
+ * @date 2026/2/25
5
+ * @version v1.0.0
6
+ *
7
+ * 江湖的业务千篇一律,复杂的代码好几百行。
8
+ */
9
+ import { formProps, formItemProps } from './api';
10
+
11
+ /**
12
+ * FormCore 使用包装对象导出,避免 formProps / formItemProps 两个 props 名称与其他组件冲突。
13
+ * headless / lib 均通过解构 FormCore 取用。
14
+ */
15
+ export const FormCore = {
16
+ props: formProps,
17
+ formItemProps,
18
+ };
19
+
20
+ export type { FormProps, FormItemProps } from './props';
@@ -0,0 +1,60 @@
1
+ /**
2
+ * @description form 组件类型定义
3
+ * @author 阿怪
4
+ * @date 2026/2/25
5
+ * @version v1.0.0
6
+ *
7
+ * 江湖的业务千篇一律,复杂的代码好几百行。
8
+ */
9
+
10
+ /**
11
+ * Form 组件 Props 类型
12
+ */
13
+ export declare type FormProps = {
14
+ /**
15
+ * @description form 是否行内显示
16
+ * @type boolean
17
+ * @default false
18
+ */
19
+ inline?: boolean;
20
+ /**
21
+ * @description form 是否允许默认提交行为
22
+ * @type boolean
23
+ * @default false
24
+ */
25
+ submit?: boolean;
26
+ /**
27
+ * @description 表单数据对象
28
+ * @type Record<string, any>
29
+ */
30
+ model?: Record<string, unknown>;
31
+ /**
32
+ * @description 标签宽度,如 '80px'
33
+ * @type string
34
+ */
35
+ labelWidth?: string;
36
+ };
37
+
38
+ /**
39
+ * FormItem 组件 Props 类型
40
+ */
41
+ export declare type FormItemProps = {
42
+ /**
43
+ * @description 表单项标题
44
+ * @type string
45
+ * @default ''
46
+ */
47
+ label?: string;
48
+ /**
49
+ * @description 表单内置 label 的原生 for/prop 属性
50
+ * @type string
51
+ * @default ''
52
+ */
53
+ prop?: string;
54
+ /**
55
+ * @description 是否必填,显示红色星号
56
+ * @type boolean
57
+ * @default false
58
+ */
59
+ required?: boolean;
60
+ };
@@ -0,0 +1,20 @@
1
+ /**
2
+ * @description grid 运行时 props
3
+ * @author 阿怪
4
+ * @date 2026/2/25
5
+ * @version v1.0.0
6
+ *
7
+ * 江湖的业务千篇一律,复杂的代码好几百行。
8
+ */
9
+ import { MCOPO, MPropType } from '../../types/props';
10
+ import { GridProps } from './props';
11
+
12
+ export const props: MCOPO<GridProps> = {
13
+ h: { type: Number, default: undefined },
14
+ w: { type: Number, default: undefined },
15
+ gap: { type: [Number, String], default: 0 },
16
+ colGap: { type: [Number, String], default: undefined },
17
+ rowGap: { type: [Number, String], default: undefined },
18
+ direction: { type: String as MPropType<'column' | 'row'>, default: 'row' },
19
+ cols: { type: Number, default: undefined },
20
+ };
@@ -0,0 +1,15 @@
1
+ /**
2
+ * @description grid core 导出
3
+ * @author 阿怪
4
+ * @date 2026/2/25
5
+ * @version v1.0.0
6
+ *
7
+ * 江湖的业务千篇一律,复杂的代码好几百行。
8
+ */
9
+ import { props } from './api';
10
+
11
+ export const GridCore = {
12
+ props,
13
+ };
14
+
15
+ export type { GridProps } from './props';
@@ -0,0 +1,48 @@
1
+ /**
2
+ * @description grid props 类型定义
3
+ * @author 阿怪
4
+ * @date 2026/2/25
5
+ * @version v1.0.0
6
+ *
7
+ * 江湖的业务千篇一律,复杂的代码好几百行。
8
+ */
9
+
10
+ export declare type GridProps = {
11
+ /**
12
+ * @description 网格高度
13
+ * @type number
14
+ */
15
+ h?: number;
16
+ /**
17
+ * @description 网格宽度
18
+ * @type number
19
+ */
20
+ w?: number;
21
+ /**
22
+ * @description 通用间距,同时作用于行列
23
+ * @default 0
24
+ * @type number | string
25
+ */
26
+ gap?: number | string;
27
+ /**
28
+ * @description 列间距,优先级高于 gap
29
+ * @type number | string
30
+ */
31
+ colGap?: number | string;
32
+ /**
33
+ * @description 行间距,优先级高于 gap
34
+ * @type number | string
35
+ */
36
+ rowGap?: number | string;
37
+ /**
38
+ * @description 子元素排列方向
39
+ * @default 'row'
40
+ * @type 'column' | 'row'
41
+ */
42
+ direction?: 'column' | 'row';
43
+ /**
44
+ * @description 列数,设置后使用 CSS grid 布局,grid-template-columns: repeat(cols, 1fr)
45
+ * @type number
46
+ */
47
+ cols?: number;
48
+ };
@@ -0,0 +1,26 @@
1
+ /**
2
+ * @description menu 运行时 props
3
+ * @author 阿怪
4
+ * @date 2026/2/25
5
+ * @version v1.0.0
6
+ *
7
+ * 江湖的业务千篇一律,复杂的代码好几百行。
8
+ */
9
+ import { MCOPO, MPropType } from '../../types/props';
10
+ import { MenuProps } from './props';
11
+
12
+ export const DEFAULT_MENU_CONFIG = {
13
+ key: 'key',
14
+ label: 'label',
15
+ children: 'children',
16
+ };
17
+
18
+ export const props: MCOPO<MenuProps> = {
19
+ data: { type: Array, default: () => [] },
20
+ config: { type: Object, default: () => ({ ...DEFAULT_MENU_CONFIG }) },
21
+ checkbox: { type: Boolean, default: false },
22
+ defaultExpandAll: { type: Boolean, default: false },
23
+ checkedKeys: { type: Array, default: () => [] },
24
+ mode: { type: String as MPropType<'vertical' | 'horizontal'>, default: 'vertical' },
25
+ active: { type: [String, Number], default: undefined },
26
+ };
@@ -0,0 +1,19 @@
1
+ /**
2
+ * @description menu core 导出
3
+ * @author 阿怪
4
+ * @date 2026/2/25
5
+ * @version v1.0.0
6
+ *
7
+ * 江湖的业务千篇一律,复杂的代码好几百行。
8
+ */
9
+ import { props, DEFAULT_MENU_CONFIG } from './api';
10
+ import { useMenu } from './useMenu';
11
+
12
+ export const MenuCore = {
13
+ props,
14
+ useMenu,
15
+ };
16
+
17
+ export { DEFAULT_MENU_CONFIG };
18
+ export { useMenu } from './useMenu';
19
+ export type { MenuProps, MenuData, MenuNodeData, MenuConfig } from './props';