@a2simcode/ui 0.0.126 → 0.0.127

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 (339) hide show
  1. package/.cursor/skills/ui-component-helper/README.md +86 -86
  2. package/.cursor/skills/ui-component-helper/SKILL.md +115 -115
  3. package/LICENSE +53 -53
  4. package/README.md +156 -156
  5. package/dist/components/decorated-title/index.d.ts +46 -0
  6. package/dist/components/decorated-title/src/decorated-title.vue.d.ts +62 -0
  7. package/dist/components/index.d.ts +2 -1
  8. package/dist/components/slider-captcha/index.d.ts +5 -5
  9. package/dist/components/slider-captcha/src/slider-captcha-content.vue.d.ts +1 -1
  10. package/dist/components/slider-captcha/src/slider-captcha.vue.d.ts +3 -3
  11. package/dist/simcode-ui.es.js +3126 -2958
  12. package/dist/simcode-ui.umd.js +2 -2
  13. package/dist/stats.html +1 -1
  14. package/dist/ui.css +1 -1
  15. package/docs/components/autocomplete.md +89 -89
  16. package/docs/components/barcode.md +101 -101
  17. package/docs/components/button-select.md +24 -24
  18. package/docs/components/button.md +117 -117
  19. package/docs/components/buttons.md +119 -119
  20. package/docs/components/cascader-select.md +114 -114
  21. package/docs/components/checkbox.md +114 -114
  22. package/docs/components/code-mirror.md +85 -85
  23. package/docs/components/collapse.md +26 -26
  24. package/docs/components/comp.md +71 -71
  25. package/docs/components/count-up.md +24 -24
  26. package/docs/components/count.md +24 -24
  27. package/docs/components/data-panel.md +24 -24
  28. package/docs/components/date.md +76 -76
  29. package/docs/components/decorated-title.md +24 -0
  30. package/docs/components/dialog-full.md +112 -112
  31. package/docs/components/dialog.md +127 -127
  32. package/docs/components/divider.md +24 -24
  33. package/docs/components/drawer.md +127 -127
  34. package/docs/components/dynamic-layer.md +118 -118
  35. package/docs/components/echarts.md +72 -72
  36. package/docs/components/editor.md +24 -24
  37. package/docs/components/form.md +27 -27
  38. package/docs/components/guid.md +39 -39
  39. package/docs/components/hpanel.md +24 -24
  40. package/docs/components/icon.md +56 -56
  41. package/docs/components/input-button.md +24 -24
  42. package/docs/components/input-code.md +24 -24
  43. package/docs/components/input-color.md +114 -114
  44. package/docs/components/input-layer.md +26 -26
  45. package/docs/components/input-rows.md +370 -370
  46. package/docs/components/input-tag.md +50 -50
  47. package/docs/components/input.md +129 -129
  48. package/docs/components/layer-form.md +61 -61
  49. package/docs/components/layer.md +127 -127
  50. package/docs/components/layout.md +132 -132
  51. package/docs/components/map.md +24 -24
  52. package/docs/components/menu.md +121 -121
  53. package/docs/components/meta/buttons.ts +76 -76
  54. package/docs/components/meta/comp.ts +236 -236
  55. package/docs/components/meta/date.ts +267 -267
  56. package/docs/components/meta/decorated-title.ts +74 -0
  57. package/docs/components/meta/echarts.ts +64 -64
  58. package/docs/components/meta/form.ts +165 -165
  59. package/docs/components/meta/input-cards.ts +112 -112
  60. package/docs/components/meta/input-color.ts +243 -243
  61. package/docs/components/meta/input-rows.ts +113 -113
  62. package/docs/components/meta/layer-form.ts +56 -56
  63. package/docs/components/meta/map.ts +68 -68
  64. package/docs/components/meta/panel.ts +152 -152
  65. package/docs/components/meta/slider.ts +270 -270
  66. package/docs/components/meta/table-panel.ts +232 -232
  67. package/docs/components/meta/table.ts +391 -391
  68. package/docs/components/meta/tabs.ts +146 -146
  69. package/docs/components/meta/tree-select.ts +199 -199
  70. package/docs/components/meta/workflow-viewer.ts +55 -55
  71. package/docs/components/number.md +124 -124
  72. package/docs/components/page.md +87 -87
  73. package/docs/components/panel.md +37 -37
  74. package/docs/components/radio.md +87 -87
  75. package/docs/components/rate.md +71 -71
  76. package/docs/components/select.md +133 -133
  77. package/docs/components/slider-captcha.md +41 -41
  78. package/docs/components/slider.md +101 -101
  79. package/docs/components/switch.md +90 -90
  80. package/docs/components/table-panel.md +236 -236
  81. package/docs/components/table.md +391 -391
  82. package/docs/components/tabs.md +26 -26
  83. package/docs/components/title.md +24 -24
  84. package/docs/components/tree.md +207 -207
  85. package/docs/components/upload.md +117 -117
  86. package/docs/components/workflow-viewer.md +21 -21
  87. package/docs/components/workflow.md +21 -21
  88. package/docs/examples/autocomplete/advanced.vue +35 -35
  89. package/docs/examples/autocomplete/basic.vue +32 -32
  90. package/docs/examples/autocomplete/clearable.vue +33 -33
  91. package/docs/examples/autocomplete/custom-template.vue +49 -49
  92. package/docs/examples/autocomplete/disabled.vue +33 -33
  93. package/docs/examples/autocomplete/icon.vue +37 -37
  94. package/docs/examples/barcode/all-types.vue +380 -380
  95. package/docs/examples/barcode/basic.vue +14 -14
  96. package/docs/examples/barcode/props-appearance.vue +243 -243
  97. package/docs/examples/barcode/props-geometry.vue +143 -143
  98. package/docs/examples/barcode/props-logic.vue +216 -216
  99. package/docs/examples/barcode/props-symbology.vue +199 -199
  100. package/docs/examples/barcode/props-text.vue +268 -268
  101. package/docs/examples/button/basic.vue +7 -7
  102. package/docs/examples/button/danger-ghost.vue +17 -17
  103. package/docs/examples/button/disabled.vue +10 -10
  104. package/docs/examples/button/loading.vue +6 -6
  105. package/docs/examples/button/shape.vue +7 -7
  106. package/docs/examples/button/size.vue +14 -14
  107. package/docs/examples/button/type.vue +9 -9
  108. package/docs/examples/button-select/basic.vue +19 -19
  109. package/docs/examples/buttons/basic.vue +45 -45
  110. package/docs/examples/buttons/disabled.vue +36 -36
  111. package/docs/examples/buttons/dropdown.vue +63 -63
  112. package/docs/examples/buttons/group.vue +52 -52
  113. package/docs/examples/buttons/link.vue +47 -47
  114. package/docs/examples/buttons/popup.vue +39 -39
  115. package/docs/examples/buttons/size.vue +45 -45
  116. package/docs/examples/cascader-select/basic.vue +28 -28
  117. package/docs/examples/cascader-select/clearable.vue +34 -34
  118. package/docs/examples/cascader-select/disabled.vue +43 -43
  119. package/docs/examples/cascader-select/filterable.vue +37 -37
  120. package/docs/examples/cascader-select/methods.vue +84 -84
  121. package/docs/examples/cascader-select/multiple.vue +38 -38
  122. package/docs/examples/cascader-select/slot.vue +45 -45
  123. package/docs/examples/checkbox/basic.vue +18 -18
  124. package/docs/examples/checkbox/button.vue +19 -19
  125. package/docs/examples/checkbox/color.vue +25 -25
  126. package/docs/examples/checkbox/disabled.vue +17 -17
  127. package/docs/examples/checkbox/min-max.vue +20 -20
  128. package/docs/examples/checkbox/mixed.vue +56 -56
  129. package/docs/examples/checkbox/size.vue +28 -28
  130. package/docs/examples/code-mirror/basic.vue +11 -11
  131. package/docs/examples/code-mirror/events.vue +42 -42
  132. package/docs/examples/code-mirror/height.vue +25 -25
  133. package/docs/examples/code-mirror/mode.vue +33 -33
  134. package/docs/examples/code-mirror/readonly.vue +14 -14
  135. package/docs/examples/collapse/basic.vue +82 -82
  136. package/docs/examples/comp/basic.vue +7 -7
  137. package/docs/examples/comp/collapse.vue +38 -38
  138. package/docs/examples/comp/tabs.vue +38 -38
  139. package/docs/examples/count/basic.vue +101 -101
  140. package/docs/examples/count-up/basic.vue +89 -89
  141. package/docs/examples/data-panel/basic.vue +110 -110
  142. package/docs/examples/date/basic.vue +73 -73
  143. package/docs/examples/date/default-value.vue +59 -59
  144. package/docs/examples/date/format.vue +75 -75
  145. package/docs/examples/date/range.vue +66 -66
  146. package/docs/examples/date/types.vue +79 -79
  147. package/docs/examples/decorated-title/basic.vue +31 -0
  148. package/docs/examples/dialog/basic.vue +36 -36
  149. package/docs/examples/dialog/custom-buttons.vue +44 -44
  150. package/docs/examples/dialog/fullscreen.vue +23 -23
  151. package/docs/examples/dialog/no-mask.vue +17 -17
  152. package/docs/examples/dialog/size.vue +44 -44
  153. package/docs/examples/dialog/steps.vue +57 -57
  154. package/docs/examples/dialog-full/basic.vue +29 -29
  155. package/docs/examples/dialog-full/custom-buttons.vue +45 -45
  156. package/docs/examples/dialog-full/no-buttons.vue +18 -18
  157. package/docs/examples/dialog-full/no-header.vue +27 -27
  158. package/docs/examples/dialog-full/steps.vue +71 -71
  159. package/docs/examples/divider/basic.vue +52 -52
  160. package/docs/examples/drawer/basic.vue +35 -35
  161. package/docs/examples/drawer/custom-buttons.vue +34 -34
  162. package/docs/examples/drawer/direction.vue +47 -47
  163. package/docs/examples/drawer/mask.vue +36 -36
  164. package/docs/examples/drawer/no-buttons.vue +20 -20
  165. package/docs/examples/drawer/size.vue +28 -28
  166. package/docs/examples/dynamic-layer/basic.vue +33 -33
  167. package/docs/examples/dynamic-layer/custom-buttons.vue +43 -43
  168. package/docs/examples/dynamic-layer/form.vue +73 -73
  169. package/docs/examples/dynamic-layer/steps.vue +52 -52
  170. package/docs/examples/dynamic-layer/types.vue +40 -40
  171. package/docs/examples/echarts/basic.vue +31 -31
  172. package/docs/examples/echarts/dynamic.vue +43 -43
  173. package/docs/examples/echarts/line.vue +46 -46
  174. package/docs/examples/echarts/pie.vue +44 -44
  175. package/docs/examples/editor/basic.vue +15 -15
  176. package/docs/examples/form/basic.vue +502 -502
  177. package/docs/examples/guid/basic.vue +10 -10
  178. package/docs/examples/guid/size.vue +13 -13
  179. package/docs/examples/hpanel/basic.vue +79 -79
  180. package/docs/examples/icon/basic.vue +9 -9
  181. package/docs/examples/icon/rotate-flip.vue +9 -9
  182. package/docs/examples/icon/size.vue +7 -7
  183. package/docs/examples/input/basic.vue +10 -10
  184. package/docs/examples/input/clearable.vue +12 -12
  185. package/docs/examples/input/disabled.vue +6 -6
  186. package/docs/examples/input/icon.vue +23 -23
  187. package/docs/examples/input/password.vue +18 -18
  188. package/docs/examples/input/size.vue +13 -13
  189. package/docs/examples/input/textarea.vue +25 -25
  190. package/docs/examples/input/word-limit.vue +28 -28
  191. package/docs/examples/input-button/basic.vue +33 -33
  192. package/docs/examples/input-code/basic.vue +29 -29
  193. package/docs/examples/input-color/basic.vue +10 -10
  194. package/docs/examples/input-color/disabled.vue +13 -13
  195. package/docs/examples/input-color/format.vue +17 -17
  196. package/docs/examples/input-color/no-alpha.vue +13 -13
  197. package/docs/examples/input-color/only-button.vue +15 -15
  198. package/docs/examples/input-color/predefine.vue +31 -31
  199. package/docs/examples/input-color/size.vue +15 -15
  200. package/docs/examples/input-layer/basic.vue +69 -69
  201. package/docs/examples/input-rows/basic.vue +73 -73
  202. package/docs/examples/input-rows/drag.vue +48 -48
  203. package/docs/examples/input-rows/layer-form.vue +85 -85
  204. package/docs/examples/input-rows/nested.vue +91 -91
  205. package/docs/examples/input-tag/basic.vue +27 -27
  206. package/docs/examples/input-tag/colors.vue +23 -23
  207. package/docs/examples/input-tag/readonly.vue +17 -17
  208. package/docs/examples/layer/basic.vue +43 -43
  209. package/docs/examples/layer/custom-buttons.vue +61 -61
  210. package/docs/examples/layer/drawer.vue +37 -37
  211. package/docs/examples/layer/full.vue +38 -38
  212. package/docs/examples/layer/modal.vue +34 -34
  213. package/docs/examples/layer/steps.vue +46 -46
  214. package/docs/examples/layer-form/basic.vue +76 -76
  215. package/docs/examples/layer-form/config.vue +82 -82
  216. package/docs/examples/layer-form/size.vue +72 -72
  217. package/docs/examples/layout/basic.vue +36 -36
  218. package/docs/examples/layout/custom-size.vue +50 -50
  219. package/docs/examples/layout/disable-move.vue +37 -37
  220. package/docs/examples/layout/hide-mid-when-narrow.vue +96 -96
  221. package/docs/examples/layout/min-size.vue +73 -73
  222. package/docs/examples/layout/percent-size.vue +80 -80
  223. package/docs/examples/layout/simple.vue +22 -22
  224. package/docs/examples/layout/top-side.vue +34 -34
  225. package/docs/examples/map/basic.vue +22 -22
  226. package/docs/examples/menu/basic.vue +58 -58
  227. package/docs/examples/menu/collapsed.vue +49 -49
  228. package/docs/examples/menu/horizontal.vue +44 -44
  229. package/docs/examples/menu/selection-test.vue +104 -104
  230. package/docs/examples/menu/theme.vue +46 -46
  231. package/docs/examples/menu/vertical.vue +46 -46
  232. package/docs/examples/number/advanced.vue +143 -143
  233. package/docs/examples/number/basic.vue +63 -63
  234. package/docs/examples/number/disabled.vue +49 -49
  235. package/docs/examples/number/size.vue +42 -42
  236. package/docs/examples/number/slots.vue +123 -123
  237. package/docs/examples/number/step-strictly.vue +41 -41
  238. package/docs/examples/number/step.vue +47 -47
  239. package/docs/examples/page/basic.vue +41 -41
  240. package/docs/examples/page/dept-user-management.vue +211 -211
  241. package/docs/examples/page/init.vue +87 -87
  242. package/docs/examples/page/log.vue +453 -453
  243. package/docs/examples/page/user-management.vue +313 -313
  244. package/docs/examples/panel/tool-buttons.vue +18 -18
  245. package/docs/examples/radio/basic.vue +17 -17
  246. package/docs/examples/radio/button.vue +17 -17
  247. package/docs/examples/radio/color.vue +18 -18
  248. package/docs/examples/radio/disabled.vue +17 -17
  249. package/docs/examples/radio/size.vue +29 -29
  250. package/docs/examples/rate/basic.vue +24 -24
  251. package/docs/examples/rate/half.vue +24 -24
  252. package/docs/examples/rate/readonly.vue +11 -11
  253. package/docs/examples/rate/text.vue +32 -32
  254. package/docs/examples/select/basic.vue +16 -16
  255. package/docs/examples/select/clearable.vue +22 -22
  256. package/docs/examples/select/disabled.vue +31 -31
  257. package/docs/examples/select/filterable.vue +24 -24
  258. package/docs/examples/select/group.vue +23 -23
  259. package/docs/examples/select/icon.vue +16 -16
  260. package/docs/examples/select/multiple.vue +18 -18
  261. package/docs/examples/select/size.vue +39 -39
  262. package/docs/examples/slider/basic.vue +42 -42
  263. package/docs/examples/slider/disabled.vue +17 -17
  264. package/docs/examples/slider/marks.vue +30 -30
  265. package/docs/examples/slider/size.vue +37 -37
  266. package/docs/examples/slider/tooltip.vue +36 -36
  267. package/docs/examples/slider/vertical.vue +26 -26
  268. package/docs/examples/slider-captcha/basic.vue +44 -44
  269. package/docs/examples/slider-captcha/custom.vue +48 -48
  270. package/docs/examples/switch/basic.vue +16 -16
  271. package/docs/examples/switch/disabled.vue +13 -13
  272. package/docs/examples/switch/loading.vue +13 -13
  273. package/docs/examples/switch/size.vue +15 -15
  274. package/docs/examples/switch/text.vue +13 -13
  275. package/docs/examples/table/action-filter.vue +126 -126
  276. package/docs/examples/table/actions.vue +116 -116
  277. package/docs/examples/table/add-row.vue +103 -103
  278. package/docs/examples/table/basic.vue +168 -168
  279. package/docs/examples/table/checkbox-layout.vue +68 -68
  280. package/docs/examples/table/custom-layout.vue +115 -115
  281. package/docs/examples/table/dynamic-type.vue +73 -73
  282. package/docs/examples/table/editable.vue +262 -262
  283. package/docs/examples/table/field-selection.vue +87 -87
  284. package/docs/examples/table/frozen-column.vue +140 -140
  285. package/docs/examples/table/height-mode.vue +99 -99
  286. package/docs/examples/table/icon.vue +85 -85
  287. package/docs/examples/table/link.vue +66 -66
  288. package/docs/examples/table/multiple.vue +188 -188
  289. package/docs/examples/table/pagination.vue +151 -151
  290. package/docs/examples/table/single-selection.vue +64 -64
  291. package/docs/examples/table/sub-table-lazy.vue +97 -97
  292. package/docs/examples/table/sub-table.vue +103 -103
  293. package/docs/examples/table/tag.vue +43 -43
  294. package/docs/examples/table/tree-column.vue +119 -119
  295. package/docs/examples/table/tree-data.vue +141 -141
  296. package/docs/examples/table/tree-default-expand-all.vue +60 -60
  297. package/docs/examples/table/tree-lazy.vue +80 -80
  298. package/docs/examples/table/tree-set-selection.vue +75 -75
  299. package/docs/examples/table-panel/basic.vue +228 -228
  300. package/docs/examples/table-panel/batch-operations.vue +285 -285
  301. package/docs/examples/table-panel/button-visibility.vue +88 -88
  302. package/docs/examples/table-panel/filter.vue +219 -219
  303. package/docs/examples/table-panel/get-selection.vue +111 -111
  304. package/docs/examples/table-panel/multiple-selection.vue +243 -243
  305. package/docs/examples/table-panel/pagination.vue +133 -133
  306. package/docs/examples/table-panel/sub-table-lazy.vue +118 -118
  307. package/docs/examples/table-panel/tree-parent-key.vue +67 -67
  308. package/docs/examples/tabs/basic.vue +98 -98
  309. package/docs/examples/time/base.vue +67 -67
  310. package/docs/examples/title/basic.vue +80 -80
  311. package/docs/examples/tree/accordion.vue +46 -46
  312. package/docs/examples/tree/basic.vue +50 -50
  313. package/docs/examples/tree/buttons.vue +53 -53
  314. package/docs/examples/tree/checkable.vue +52 -52
  315. package/docs/examples/tree/custom-keys.vue +39 -39
  316. package/docs/examples/tree/default-expanded.vue +52 -52
  317. package/docs/examples/tree/draggable.vue +29 -29
  318. package/docs/examples/tree/expand-on-click.vue +39 -39
  319. package/docs/examples/tree/flat-data.vue +20 -20
  320. package/docs/examples/tree/icon.vue +40 -40
  321. package/docs/examples/tree/load-data.vue +37 -37
  322. package/docs/examples/tree/methods.vue +74 -74
  323. package/docs/examples/tree/theme.vue +33 -33
  324. package/docs/examples/tree-select/basic.vue +47 -47
  325. package/docs/examples/upload/accept.vue +31 -31
  326. package/docs/examples/upload/basic.vue +12 -12
  327. package/docs/examples/upload/drag.vue +11 -11
  328. package/docs/examples/upload/image.vue +17 -17
  329. package/docs/examples/upload/limit.vue +20 -20
  330. package/docs/examples/upload/multiple.vue +17 -17
  331. package/docs/examples/upload/readonly.vue +17 -17
  332. package/docs/examples/utils/cipher.vue +160 -160
  333. package/docs/examples/utils/common.vue +153 -153
  334. package/docs/examples/utils/date.vue +56 -56
  335. package/docs/examples/utils/dom.vue +52 -52
  336. package/docs/examples/utils/is.vue +70 -70
  337. package/docs/examples/workflow/basic.vue +265 -265
  338. package/docs/examples/workflow-viewer/basic.vue +248 -248
  339. package/package.json +23 -23
package/README.md CHANGED
@@ -1,156 +1,156 @@
1
- # SimCode UI
2
-
3
- <div align="center">
4
- <h1>SimCode UI</h1>
5
- <p>基于 Vue 3 + TypeScript 的现代化 UI 组件库</p>
6
- </div>
7
-
8
- ## ✨ 特性
9
-
10
- - 🚀 **现代化技术栈**: 基于 Vue 3 + TypeScript + Vite
11
- - 📦 **开箱即用**: 提供完善的类型定义和文档
12
- - 🎨 **精美设计**: 现代化的设计风格
13
- - 🔧 **易于定制**: 支持主题定制
14
- - ⚡️ **按需加载**: 支持 Tree Shaking
15
- - 🧪 **完善测试**: 单元测试覆盖
16
-
17
- ## 📦 安装
18
-
19
- 使用 pnpm:
20
-
21
- ```bash
22
- pnpm add @a2simcode/ui
23
- ```
24
-
25
- 使用 npm:
26
-
27
- ```bash
28
- npm install @a2simcode/ui
29
- ```
30
-
31
- 使用 yarn:
32
-
33
- ```bash
34
- yarn add @a2simcode/ui
35
- ```
36
-
37
- ### 安装 Peer Dependencies
38
-
39
- `@a2simcode/ui` 使用 peer dependencies 来避免重复打包依赖。**必须安装**以下依赖:
40
-
41
- ```bash
42
- pnpm add vue element-plus
43
- ```
44
-
45
- 根据你使用的组件,可能还需要安装以下**可选依赖**:
46
-
47
- ```bash
48
- # 如果使用表格组件
49
- pnpm add @visactor/vtable @visactor/vtable-editors
50
-
51
- # 如果使用图表组件
52
- pnpm add echarts
53
-
54
- # 如果使用代码编辑器组件
55
- pnpm add codemirror @codemirror/autocomplete @codemirror/commands @codemirror/lang-javascript @codemirror/lang-json @codemirror/lang-sql @codemirror/lang-python @codemirror/lang-java @codemirror/lang-css @codemirror/lang-html @codemirror/lang-xml @codemirror/lang-markdown @codemirror/language @codemirror/state @codemirror/view
56
-
57
- # 如果使用其他功能组件
58
- pnpm add @iconify/vue @vueuse/core dayjs async-validator crypto-js sortablejs sql-formatter countup.js @bwip-js/browser @wangeditor/editor diagram-js diagram-js-direct-editing min-dom inherits tiny-svg min-dash
59
- ```
60
-
61
- > **注意**: 由于 `@a2simcode/ui` 输出的是预打包的单文件,使用方的打包器可能无法自动识别 peer dependencies。请确保在使用相关组件前,已安装对应的 peer dependencies。
62
-
63
- ## 🔨 快速开始
64
-
65
- ### 完整引入
66
-
67
- ```typescript
68
- import { createApp } from 'vue'
69
- import App from './App.vue'
70
- import SimCodeUI from '@a2simcode/ui'
71
- import '@a2simcode/ui/dist/style.css'
72
-
73
- const app = createApp(App)
74
- app.use(SimCodeUI)
75
- app.mount('#app')
76
- ```
77
-
78
- ### 按需引入
79
-
80
- ```vue
81
- <template>
82
- <j-button type="primary">按钮</j-button>
83
- </template>
84
-
85
- <script setup lang="ts">
86
- import { JButton } from '@a2simcode/ui'
87
- import '@a2simcode/ui/dist/style.css'
88
- </script>
89
- ```
90
-
91
- ## 🎯 组件列表
92
-
93
- - ✅ Button 按钮
94
- - ✅ Input 输入框
95
- - ✅ Radio 单选框
96
- - 🚧 更多组件开发中...
97
-
98
- ## 💻 本地开发
99
-
100
- ```bash
101
- # 进入项目目录
102
- cd simcode-ui
103
-
104
- # 安装依赖
105
- pnpm install
106
-
107
- # 启动开发服务器
108
- pnpm dev
109
-
110
- # 构建组件库
111
- pnpm build
112
-
113
- # 运行测试
114
- pnpm test
115
-
116
- # 启动文档站点
117
- pnpm docs:dev
118
- ```
119
-
120
- ## 📁 项目结构
121
-
122
- ```
123
- simcode-ui/
124
- ├── packages/ # 组件源码
125
- │ ├── components/ # 组件
126
- │ │ ├── button/ # 按钮组件
127
- │ │ ├── input/ # 输入框组件
128
- │ │ └── index.ts # 组件入口
129
- │ └── theme/ # 主题样式
130
- │ └── src/ # 样式源码 (Less)
131
- ├── examples/ # 组件预览
132
- │ ├── App.vue # 预览应用
133
- │ └── main.ts # 入口文件
134
- ├── docs/ # 文档
135
- │ ├── .vitepress/ # VitePress 配置
136
- │ ├── guide/ # 指南
137
- │ └── components/ # 组件文档
138
- ├── __tests__/ # 测试文件
139
- ├── vite.config.ts # Vite 配置
140
- ├── vitest.config.ts # Vitest 配置
141
- └── package.json # 项目配置
142
- ```
143
-
144
- ## 🤝 贡献
145
-
146
- 欢迎提交 Issue 和 Pull Request!
147
-
148
- ## 📄 版权声明
149
-
150
- Copyright © 2024 苏州极简搭信息技术有限公司. All rights reserved.
151
-
152
- 本软件及其相关文档为专有软件,受版权法保护。未经版权所有者明确书面许可,不得以任何形式或方式(电子、机械、复印、录制或其他方式)复制、分发、传播或使用本软件的任何部分。
153
-
154
- ## 🙏 致谢
155
-
156
- 感谢所有为这个项目做出贡献的开发者!
1
+ # SimCode UI
2
+
3
+ <div align="center">
4
+ <h1>SimCode UI</h1>
5
+ <p>基于 Vue 3 + TypeScript 的现代化 UI 组件库</p>
6
+ </div>
7
+
8
+ ## ✨ 特性
9
+
10
+ - 🚀 **现代化技术栈**: 基于 Vue 3 + TypeScript + Vite
11
+ - 📦 **开箱即用**: 提供完善的类型定义和文档
12
+ - 🎨 **精美设计**: 现代化的设计风格
13
+ - 🔧 **易于定制**: 支持主题定制
14
+ - ⚡️ **按需加载**: 支持 Tree Shaking
15
+ - 🧪 **完善测试**: 单元测试覆盖
16
+
17
+ ## 📦 安装
18
+
19
+ 使用 pnpm:
20
+
21
+ ```bash
22
+ pnpm add @a2simcode/ui
23
+ ```
24
+
25
+ 使用 npm:
26
+
27
+ ```bash
28
+ npm install @a2simcode/ui
29
+ ```
30
+
31
+ 使用 yarn:
32
+
33
+ ```bash
34
+ yarn add @a2simcode/ui
35
+ ```
36
+
37
+ ### 安装 Peer Dependencies
38
+
39
+ `@a2simcode/ui` 使用 peer dependencies 来避免重复打包依赖。**必须安装**以下依赖:
40
+
41
+ ```bash
42
+ pnpm add vue element-plus
43
+ ```
44
+
45
+ 根据你使用的组件,可能还需要安装以下**可选依赖**:
46
+
47
+ ```bash
48
+ # 如果使用表格组件
49
+ pnpm add @visactor/vtable @visactor/vtable-editors
50
+
51
+ # 如果使用图表组件
52
+ pnpm add echarts
53
+
54
+ # 如果使用代码编辑器组件
55
+ pnpm add codemirror @codemirror/autocomplete @codemirror/commands @codemirror/lang-javascript @codemirror/lang-json @codemirror/lang-sql @codemirror/lang-python @codemirror/lang-java @codemirror/lang-css @codemirror/lang-html @codemirror/lang-xml @codemirror/lang-markdown @codemirror/language @codemirror/state @codemirror/view
56
+
57
+ # 如果使用其他功能组件
58
+ pnpm add @iconify/vue @vueuse/core dayjs async-validator crypto-js sortablejs sql-formatter countup.js @bwip-js/browser @wangeditor/editor diagram-js diagram-js-direct-editing min-dom inherits tiny-svg min-dash
59
+ ```
60
+
61
+ > **注意**: 由于 `@a2simcode/ui` 输出的是预打包的单文件,使用方的打包器可能无法自动识别 peer dependencies。请确保在使用相关组件前,已安装对应的 peer dependencies。
62
+
63
+ ## 🔨 快速开始
64
+
65
+ ### 完整引入
66
+
67
+ ```typescript
68
+ import { createApp } from 'vue'
69
+ import App from './App.vue'
70
+ import SimCodeUI from '@a2simcode/ui'
71
+ import '@a2simcode/ui/dist/style.css'
72
+
73
+ const app = createApp(App)
74
+ app.use(SimCodeUI)
75
+ app.mount('#app')
76
+ ```
77
+
78
+ ### 按需引入
79
+
80
+ ```vue
81
+ <template>
82
+ <j-button type="primary">按钮</j-button>
83
+ </template>
84
+
85
+ <script setup lang="ts">
86
+ import { JButton } from '@a2simcode/ui'
87
+ import '@a2simcode/ui/dist/style.css'
88
+ </script>
89
+ ```
90
+
91
+ ## 🎯 组件列表
92
+
93
+ - ✅ Button 按钮
94
+ - ✅ Input 输入框
95
+ - ✅ Radio 单选框
96
+ - 🚧 更多组件开发中...
97
+
98
+ ## 💻 本地开发
99
+
100
+ ```bash
101
+ # 进入项目目录
102
+ cd simcode-ui
103
+
104
+ # 安装依赖
105
+ pnpm install
106
+
107
+ # 启动开发服务器
108
+ pnpm dev
109
+
110
+ # 构建组件库
111
+ pnpm build
112
+
113
+ # 运行测试
114
+ pnpm test
115
+
116
+ # 启动文档站点
117
+ pnpm docs:dev
118
+ ```
119
+
120
+ ## 📁 项目结构
121
+
122
+ ```
123
+ simcode-ui/
124
+ ├── packages/ # 组件源码
125
+ │ ├── components/ # 组件
126
+ │ │ ├── button/ # 按钮组件
127
+ │ │ ├── input/ # 输入框组件
128
+ │ │ └── index.ts # 组件入口
129
+ │ └── theme/ # 主题样式
130
+ │ └── src/ # 样式源码 (Less)
131
+ ├── examples/ # 组件预览
132
+ │ ├── App.vue # 预览应用
133
+ │ └── main.ts # 入口文件
134
+ ├── docs/ # 文档
135
+ │ ├── .vitepress/ # VitePress 配置
136
+ │ ├── guide/ # 指南
137
+ │ └── components/ # 组件文档
138
+ ├── __tests__/ # 测试文件
139
+ ├── vite.config.ts # Vite 配置
140
+ ├── vitest.config.ts # Vitest 配置
141
+ └── package.json # 项目配置
142
+ ```
143
+
144
+ ## 🤝 贡献
145
+
146
+ 欢迎提交 Issue 和 Pull Request!
147
+
148
+ ## 📄 版权声明
149
+
150
+ Copyright © 2024 苏州极简搭信息技术有限公司. All rights reserved.
151
+
152
+ 本软件及其相关文档为专有软件,受版权法保护。未经版权所有者明确书面许可,不得以任何形式或方式(电子、机械、复印、录制或其他方式)复制、分发、传播或使用本软件的任何部分。
153
+
154
+ ## 🙏 致谢
155
+
156
+ 感谢所有为这个项目做出贡献的开发者!
@@ -0,0 +1,46 @@
1
+ declare const JDecoratedTitle: {
2
+ new (...args: any[]): import('vue').CreateComponentPublicInstanceWithMixins<Readonly<import('./src/decorated-title.vue').TitleProps> & Readonly<{}>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, import('vue').PublicProps, {
3
+ size: number | string;
4
+ color: string;
5
+ style: Record<string, any>;
6
+ title: string;
7
+ class: string;
8
+ align: string;
9
+ weight: string | number;
10
+ contentSize: number;
11
+ titleType: string;
12
+ }, false, {}, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, {}, HTMLDivElement, import('vue').ComponentProvideOptions, {
13
+ P: {};
14
+ B: {};
15
+ D: {};
16
+ C: {};
17
+ M: {};
18
+ Defaults: {};
19
+ }, Readonly<import('./src/decorated-title.vue').TitleProps> & Readonly<{}>, {}, {}, {}, {}, {
20
+ size: number | string;
21
+ color: string;
22
+ style: Record<string, any>;
23
+ title: string;
24
+ class: string;
25
+ align: string;
26
+ weight: string | number;
27
+ contentSize: number;
28
+ titleType: string;
29
+ }>;
30
+ __isFragment?: never;
31
+ __isTeleport?: never;
32
+ __isSuspense?: never;
33
+ } & import('vue').ComponentOptionsBase<Readonly<import('./src/decorated-title.vue').TitleProps> & Readonly<{}>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, {
34
+ size: number | string;
35
+ color: string;
36
+ style: Record<string, any>;
37
+ title: string;
38
+ class: string;
39
+ align: string;
40
+ weight: string | number;
41
+ contentSize: number;
42
+ titleType: string;
43
+ }, {}, string, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, import('vue').ComponentProvideOptions> & import('vue').VNodeProps & import('vue').AllowedComponentProps & import('vue').ComponentCustomProps & {
44
+ install: (app: import('vue').App) => void;
45
+ };
46
+ export default JDecoratedTitle;
@@ -0,0 +1,62 @@
1
+ export interface TitleProps {
2
+ /**
3
+ * 标题
4
+ */
5
+ title?: string;
6
+ /**
7
+ * 描述
8
+ */
9
+ content?: string;
10
+ /**
11
+ * 自定义样式对象
12
+ */
13
+ style?: Record<string, any>;
14
+ /**
15
+ * 自定义类名
16
+ */
17
+ class?: string;
18
+ /**
19
+ * 标题颜色
20
+ */
21
+ color?: string;
22
+ /**
23
+ * 描述颜色
24
+ */
25
+ contentColor?: string;
26
+ /**
27
+ * 配色
28
+ */
29
+ backgroundColor?: string;
30
+ /**
31
+ * 字体大小,支持数字(px)或字符串
32
+ */
33
+ size?: number | string;
34
+ /**
35
+ * @zh 描述字体大小
36
+ */
37
+ contentSize?: number;
38
+ /**
39
+ * 文本对齐方式 (left | center | right)
40
+ */
41
+ align?: string;
42
+ /**
43
+ * 字体粗细 (normal | bold | bolder | lighter | 100-900)
44
+ */
45
+ weight?: string | number;
46
+ /**
47
+ * 标题样式title1: 'title2', 'title3'...
48
+ */
49
+ titleType?: string;
50
+ }
51
+ declare const _default: import('vue').DefineComponent<TitleProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<TitleProps> & Readonly<{}>, {
52
+ size: number | string;
53
+ color: string;
54
+ style: Record<string, any>;
55
+ title: string;
56
+ class: string;
57
+ align: string;
58
+ weight: string | number;
59
+ contentSize: number;
60
+ titleType: string;
61
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
62
+ export default _default;
@@ -35,6 +35,7 @@ import { default as JInputButton } from './input-button';
35
35
  import { default as JInputCode } from './input-code';
36
36
  import { default as JInputColor } from './input-color';
37
37
  import { default as JTitle } from './title';
38
+ import { default as JDecoratedTitle } from './decorated-title';
38
39
  import { default as JCodeMirror } from './code-mirror';
39
40
  import { default as JSliderCaptcha } from './slider-captcha';
40
41
  import { default as JMenu } from './menu';
@@ -57,7 +58,7 @@ import { default as JCollapse } from './collapse';
57
58
  import { default as JEditor } from './editor';
58
59
  import { default as JWorkflowViewer, JWorkflow } from './workflow-viewer';
59
60
  import { default as JInputCards } from './input-cards';
60
- export { JButton, JButtons, JInput, JDate, JTime, JNowTime, JIcon, JRadio, JSelect, JCascaderSelect, JCheckbox, JNumber, JAutoComplete, JLayout, JTable, JDialog, JDialogFull, JDrawer, JLayer, JDynamicLayer, JInputTag, JRate, JSlider, JUpload, JEcharts, JBarcode, JCodeMirror, JCount, JInputCount, JCountUp, JDataPanel, JDivider, JHpanel, JGuid, JInputButton, JInputCode, JInputColor, JTitle, JButtonSelect, JTree, JTreeSelect, JComp, JForm, JFormItem, JPage, JSliderCaptcha, JMenu, JTablePanel, JInputRows, JInputLayer, JLayerForm, JSwitch, JTabs, JCollapse, JEditor, JWorkflowViewer, JWorkflow, JPanel, JInputCards, };
61
+ export { JButton, JButtons, JInput, JDate, JTime, JNowTime, JIcon, JRadio, JSelect, JCascaderSelect, JCheckbox, JNumber, JAutoComplete, JLayout, JTable, JDialog, JDialogFull, JDrawer, JLayer, JDynamicLayer, JInputTag, JRate, JSlider, JUpload, JEcharts, JBarcode, JCodeMirror, JCount, JInputCount, JCountUp, JDataPanel, JDivider, JHpanel, JGuid, JInputButton, JInputCode, JInputColor, JTitle, JDecoratedTitle, JButtonSelect, JTree, JTreeSelect, JComp, JForm, JFormItem, JPage, JSliderCaptcha, JMenu, JTablePanel, JInputRows, JInputLayer, JLayerForm, JSwitch, JTabs, JCollapse, JEditor, JWorkflowViewer, JWorkflow, JPanel, JInputCards, };
61
62
  export * from '../core';
62
63
  export type { ButtonProps } from './button/src/button.vue';
63
64
  export type { DateProps } from './date/src/date.vue';
@@ -15,9 +15,9 @@ export declare const JSliderCaptcha: {
15
15
  end: (args_0: MouseEvent | TouchEvent) => any;
16
16
  }, import('vue').PublicProps, {
17
17
  text: string;
18
+ contentStyle: import('vue').CSSProperties;
18
19
  actionStyle: import('vue').CSSProperties;
19
20
  barStyle: import('vue').CSSProperties;
20
- contentStyle: import('vue').CSSProperties;
21
21
  wrapperStyle: import('vue').CSSProperties;
22
22
  successText: string;
23
23
  }, false, {}, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, {
@@ -64,10 +64,10 @@ export declare const JSliderCaptcha: {
64
64
  }>> & Readonly<{}>, {
65
65
  getEl: () => HTMLDivElement | null;
66
66
  }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, import('vue').PublicProps, {
67
+ contentStyle: Record<string, any>;
67
68
  isPassing: boolean;
68
69
  animationDuration: string | number;
69
70
  animationIterationCount: string | number;
70
- contentStyle: Record<string, any>;
71
71
  }, true, {}, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, {
72
72
  contentRef: HTMLDivElement;
73
73
  }, HTMLDivElement, import('vue').ComponentProvideOptions, {
@@ -97,10 +97,10 @@ export declare const JSliderCaptcha: {
97
97
  }>> & Readonly<{}>, {
98
98
  getEl: () => HTMLDivElement | null;
99
99
  }, {}, {}, {}, {
100
+ contentStyle: Record<string, any>;
100
101
  isPassing: boolean;
101
102
  animationDuration: string | number;
102
103
  animationIterationCount: string | number;
103
- contentStyle: Record<string, any>;
104
104
  }> | null;
105
105
  actionRef: import('vue').CreateComponentPublicInstanceWithMixins<Readonly<{
106
106
  actionStyle: import('vue').CSSProperties;
@@ -145,9 +145,9 @@ export declare const JSliderCaptcha: {
145
145
  onEnd?: ((args_0: MouseEvent | TouchEvent) => any) | undefined;
146
146
  }>, {}, {}, {}, {}, {
147
147
  text: string;
148
+ contentStyle: import('vue').CSSProperties;
148
149
  actionStyle: import('vue').CSSProperties;
149
150
  barStyle: import('vue').CSSProperties;
150
- contentStyle: import('vue').CSSProperties;
151
151
  wrapperStyle: import('vue').CSSProperties;
152
152
  successText: string;
153
153
  }>;
@@ -170,9 +170,9 @@ export declare const JSliderCaptcha: {
170
170
  end: (args_0: MouseEvent | TouchEvent) => any;
171
171
  }, string, {
172
172
  text: string;
173
+ contentStyle: import('vue').CSSProperties;
173
174
  actionStyle: import('vue').CSSProperties;
174
175
  barStyle: import('vue').CSSProperties;
175
- contentStyle: import('vue').CSSProperties;
176
176
  wrapperStyle: import('vue').CSSProperties;
177
177
  successText: string;
178
178
  }, {}, string, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, import('vue').ComponentProvideOptions> & import('vue').VNodeProps & import('vue').AllowedComponentProps & import('vue').ComponentCustomProps & {
@@ -35,10 +35,10 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
35
35
  default: string;
36
36
  };
37
37
  }>> & Readonly<{}>, {
38
+ contentStyle: Record<string, any>;
38
39
  isPassing: boolean;
39
40
  animationDuration: string | number;
40
41
  animationIterationCount: string | number;
41
- contentStyle: Record<string, any>;
42
42
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {
43
43
  contentRef: HTMLDivElement;
44
44
  }, HTMLDivElement>;
@@ -17,9 +17,9 @@ declare const _default: import('vue').DefineComponent<__VLS_PublicProps, {}, {},
17
17
  onEnd?: ((args_0: MouseEvent | TouchEvent) => any) | undefined;
18
18
  }>, {
19
19
  text: string;
20
+ contentStyle: import('vue').CSSProperties;
20
21
  actionStyle: import('vue').CSSProperties;
21
22
  barStyle: import('vue').CSSProperties;
22
- contentStyle: import('vue').CSSProperties;
23
23
  wrapperStyle: import('vue').CSSProperties;
24
24
  successText: string;
25
25
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
@@ -66,10 +66,10 @@ declare const _default: import('vue').DefineComponent<__VLS_PublicProps, {}, {},
66
66
  }>> & Readonly<{}>, {
67
67
  getEl: () => HTMLDivElement | null;
68
68
  }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, import('vue').PublicProps, {
69
+ contentStyle: Record<string, any>;
69
70
  isPassing: boolean;
70
71
  animationDuration: string | number;
71
72
  animationIterationCount: string | number;
72
- contentStyle: Record<string, any>;
73
73
  }, true, {}, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, {
74
74
  contentRef: HTMLDivElement;
75
75
  }, HTMLDivElement, import('vue').ComponentProvideOptions, {
@@ -99,10 +99,10 @@ declare const _default: import('vue').DefineComponent<__VLS_PublicProps, {}, {},
99
99
  }>> & Readonly<{}>, {
100
100
  getEl: () => HTMLDivElement | null;
101
101
  }, {}, {}, {}, {
102
+ contentStyle: Record<string, any>;
102
103
  isPassing: boolean;
103
104
  animationDuration: string | number;
104
105
  animationIterationCount: string | number;
105
- contentStyle: Record<string, any>;
106
106
  }> | null;
107
107
  actionRef: import('vue').CreateComponentPublicInstanceWithMixins<Readonly<{
108
108
  actionStyle: import('vue').CSSProperties;