djm-ui 0.0.0-stage → 0.67.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 (242) hide show
  1. package/CHANGELOG.md +715 -0
  2. package/LICENSE +21 -0
  3. package/README.md +183 -2
  4. package/dist/djm-ui.cjs +15521 -0
  5. package/dist/djm-ui.cjs.map +7 -0
  6. package/dist/djm-ui.css +11817 -0
  7. package/dist/djm-ui.esm.js +15371 -0
  8. package/dist/djm-ui.esm.js.map +7 -0
  9. package/dist/djm-ui.esm.min.js +4059 -0
  10. package/dist/djm-ui.min.cjs +4059 -0
  11. package/dist/djm-ui.min.css +2 -0
  12. package/dist/djm-ui.umd.js +15331 -0
  13. package/dist/djm-ui.umd.min.js +4059 -0
  14. package/package.json +90 -4
  15. package/src/components/affix/index.js +98 -0
  16. package/src/components/alert/index.js +43 -0
  17. package/src/components/anchor/index.js +107 -0
  18. package/src/components/approval-flow/index.js +96 -0
  19. package/src/components/attachment-list/index.js +155 -0
  20. package/src/components/autocomplete/index.js +187 -0
  21. package/src/components/avatar/group.js +22 -0
  22. package/src/components/avatar/index.js +47 -0
  23. package/src/components/backtop/index.js +82 -0
  24. package/src/components/badge/index.js +43 -0
  25. package/src/components/batch-bar/index.js +52 -0
  26. package/src/components/breadcrumb/index.js +45 -0
  27. package/src/components/button/index.js +45 -0
  28. package/src/components/calendar/index.js +180 -0
  29. package/src/components/card/index.js +24 -0
  30. package/src/components/carousel/index.js +136 -0
  31. package/src/components/cascader/index.js +157 -0
  32. package/src/components/chat/index.js +157 -0
  33. package/src/components/checkbox/index.js +109 -0
  34. package/src/components/collapse/index.js +55 -0
  35. package/src/components/color-picker/index.js +133 -0
  36. package/src/components/command-palette/index.js +182 -0
  37. package/src/components/comment/index.js +149 -0
  38. package/src/components/config-provider/index.js +41 -0
  39. package/src/components/confirm-dialog/index.js +66 -0
  40. package/src/components/context-menu/index.js +148 -0
  41. package/src/components/date-picker/index.js +448 -0
  42. package/src/components/date-time-picker/index.js +376 -0
  43. package/src/components/descriptions/index.js +47 -0
  44. package/src/components/diff/index.js +172 -0
  45. package/src/components/divider/index.js +25 -0
  46. package/src/components/drawer/index.js +131 -0
  47. package/src/components/dropdown/index.js +236 -0
  48. package/src/components/editable-table/index.js +264 -0
  49. package/src/components/empty/index.js +31 -0
  50. package/src/components/field-list/index.js +221 -0
  51. package/src/components/filter-tags/index.js +33 -0
  52. package/src/components/float-button/index.js +97 -0
  53. package/src/components/floating-window/index.js +171 -0
  54. package/src/components/form/index.js +130 -0
  55. package/src/components/form-item/index.js +71 -0
  56. package/src/components/gantt/index.js +192 -0
  57. package/src/components/grid/col.js +21 -0
  58. package/src/components/grid/row.js +16 -0
  59. package/src/components/icon/index.js +87 -0
  60. package/src/components/image/index.js +110 -0
  61. package/src/components/import-wizard/index.js +306 -0
  62. package/src/components/input/index.js +117 -0
  63. package/src/components/input-number/index.js +106 -0
  64. package/src/components/input-tag/index.js +117 -0
  65. package/src/components/kanban/index.js +223 -0
  66. package/src/components/layout/content.js +5 -0
  67. package/src/components/layout/footer.js +5 -0
  68. package/src/components/layout/header.js +5 -0
  69. package/src/components/layout/index.js +15 -0
  70. package/src/components/layout/sider.js +13 -0
  71. package/src/components/list/index.js +31 -0
  72. package/src/components/media-picker/index.js +206 -0
  73. package/src/components/mentions/index.js +193 -0
  74. package/src/components/menu/index.js +248 -0
  75. package/src/components/message/index.js +56 -0
  76. package/src/components/modal/index.js +132 -0
  77. package/src/components/notification/index.js +140 -0
  78. package/src/components/org-chart/index.js +190 -0
  79. package/src/components/org-picker/index.js +414 -0
  80. package/src/components/page-header/index.js +24 -0
  81. package/src/components/page-tabs/index.js +80 -0
  82. package/src/components/pagination/index.js +124 -0
  83. package/src/components/password/index.js +92 -0
  84. package/src/components/popconfirm/index.js +161 -0
  85. package/src/components/popover/index.js +142 -0
  86. package/src/components/print/index.js +101 -0
  87. package/src/components/progress/index.js +37 -0
  88. package/src/components/qrcode/index.js +75 -0
  89. package/src/components/query-filter/index.js +171 -0
  90. package/src/components/radio/index.js +83 -0
  91. package/src/components/rate/index.js +84 -0
  92. package/src/components/result/index.js +52 -0
  93. package/src/components/rich-editor/index.js +235 -0
  94. package/src/components/schedule/index.js +287 -0
  95. package/src/components/schema-form/index.js +222 -0
  96. package/src/components/segmented/index.js +40 -0
  97. package/src/components/select/index.js +614 -0
  98. package/src/components/signature/index.js +243 -0
  99. package/src/components/skeleton/index.js +35 -0
  100. package/src/components/slider/index.js +166 -0
  101. package/src/components/space/index.js +32 -0
  102. package/src/components/spin/index.js +42 -0
  103. package/src/components/splitter/index.js +110 -0
  104. package/src/components/statistic/index.js +41 -0
  105. package/src/components/status/index.js +31 -0
  106. package/src/components/steps/index.js +49 -0
  107. package/src/components/switch/index.js +40 -0
  108. package/src/components/table/index.js +847 -0
  109. package/src/components/tabs/index.js +136 -0
  110. package/src/components/tag/index.js +56 -0
  111. package/src/components/time-picker/index.js +165 -0
  112. package/src/components/timeline/index.js +24 -0
  113. package/src/components/tooltip/index.js +129 -0
  114. package/src/components/tour/index.js +144 -0
  115. package/src/components/transfer/index.js +145 -0
  116. package/src/components/tree/index.js +485 -0
  117. package/src/components/tree-select/index.js +406 -0
  118. package/src/components/tree-table/index.js +318 -0
  119. package/src/components/upload/index.js +407 -0
  120. package/src/components/virtual-list/index.js +178 -0
  121. package/src/components/watermark/index.js +82 -0
  122. package/src/index.js +356 -0
  123. package/src/locale/en-US.js +254 -0
  124. package/src/locale/index.js +32 -0
  125. package/src/locale/zh-CN.js +254 -0
  126. package/src/styles/base.css +101 -0
  127. package/src/styles/components/account.css +230 -0
  128. package/src/styles/components/affix.css +11 -0
  129. package/src/styles/components/anchor.css +56 -0
  130. package/src/styles/components/approval-flow.css +196 -0
  131. package/src/styles/components/attachment-list.css +172 -0
  132. package/src/styles/components/autocomplete.css +42 -0
  133. package/src/styles/components/avatar.css +42 -0
  134. package/src/styles/components/backtop.css +33 -0
  135. package/src/styles/components/badge.css +72 -0
  136. package/src/styles/components/batch-bar.css +51 -0
  137. package/src/styles/components/breadcrumb.css +74 -0
  138. package/src/styles/components/button.css +237 -0
  139. package/src/styles/components/calendar.css +99 -0
  140. package/src/styles/components/card.css +74 -0
  141. package/src/styles/components/carousel.css +119 -0
  142. package/src/styles/components/cascader.css +118 -0
  143. package/src/styles/components/charts.css +173 -0
  144. package/src/styles/components/chat.css +162 -0
  145. package/src/styles/components/color-picker.css +93 -0
  146. package/src/styles/components/command-palette.css +97 -0
  147. package/src/styles/components/comment.css +164 -0
  148. package/src/styles/components/composite.css +353 -0
  149. package/src/styles/components/console.css +288 -0
  150. package/src/styles/components/context-menu.css +98 -0
  151. package/src/styles/components/dashboard.css +245 -0
  152. package/src/styles/components/date-picker.css +258 -0
  153. package/src/styles/components/date-time-picker.css +239 -0
  154. package/src/styles/components/demo.css +432 -0
  155. package/src/styles/components/descriptions.css +45 -0
  156. package/src/styles/components/diff.css +178 -0
  157. package/src/styles/components/divider.css +32 -0
  158. package/src/styles/components/drawer.css +82 -0
  159. package/src/styles/components/dropdown.css +97 -0
  160. package/src/styles/components/feedback.css +270 -0
  161. package/src/styles/components/field-list.css +132 -0
  162. package/src/styles/components/filter-tags.css +60 -0
  163. package/src/styles/components/float-button.css +80 -0
  164. package/src/styles/components/form.css +688 -0
  165. package/src/styles/components/frame.css +193 -0
  166. package/src/styles/components/gantt.css +241 -0
  167. package/src/styles/components/grid.css +161 -0
  168. package/src/styles/components/image.css +107 -0
  169. package/src/styles/components/import-wizard.css +262 -0
  170. package/src/styles/components/input-number.css +58 -0
  171. package/src/styles/components/input-tag.css +73 -0
  172. package/src/styles/components/kanban.css +181 -0
  173. package/src/styles/components/layout-container.css +59 -0
  174. package/src/styles/components/layout.css +765 -0
  175. package/src/styles/components/list.css +73 -0
  176. package/src/styles/components/lookup.css +142 -0
  177. package/src/styles/components/media-picker.css +154 -0
  178. package/src/styles/components/mentions.css +50 -0
  179. package/src/styles/components/menu.css +200 -0
  180. package/src/styles/components/modal.css +97 -0
  181. package/src/styles/components/motion.css +62 -0
  182. package/src/styles/components/notification.css +179 -0
  183. package/src/styles/components/org-chart.css +131 -0
  184. package/src/styles/components/org-picker.css +341 -0
  185. package/src/styles/components/overlay.css +234 -0
  186. package/src/styles/components/page-tabs.css +101 -0
  187. package/src/styles/components/pagination.css +113 -0
  188. package/src/styles/components/panel.css +99 -0
  189. package/src/styles/components/password.css +74 -0
  190. package/src/styles/components/permission.css +118 -0
  191. package/src/styles/components/placeholder.css +90 -0
  192. package/src/styles/components/popconfirm.css +51 -0
  193. package/src/styles/components/popover.css +134 -0
  194. package/src/styles/components/print.css +20 -0
  195. package/src/styles/components/qrcode.css +23 -0
  196. package/src/styles/components/query-filter.css +82 -0
  197. package/src/styles/components/rate.css +41 -0
  198. package/src/styles/components/responsive.css +599 -0
  199. package/src/styles/components/result.css +62 -0
  200. package/src/styles/components/rich-editor.css +216 -0
  201. package/src/styles/components/schedule.css +243 -0
  202. package/src/styles/components/schema-form.css +18 -0
  203. package/src/styles/components/signature.css +46 -0
  204. package/src/styles/components/skin.css +108 -0
  205. package/src/styles/components/slider.css +77 -0
  206. package/src/styles/components/sort.css +93 -0
  207. package/src/styles/components/space.css +35 -0
  208. package/src/styles/components/spin.css +44 -0
  209. package/src/styles/components/splitter.css +66 -0
  210. package/src/styles/components/statistic.css +53 -0
  211. package/src/styles/components/steps.css +123 -0
  212. package/src/styles/components/table.css +852 -0
  213. package/src/styles/components/tabs.css +192 -0
  214. package/src/styles/components/tag.css +74 -0
  215. package/src/styles/components/template.css +409 -0
  216. package/src/styles/components/time-picker.css +100 -0
  217. package/src/styles/components/timeline.css +78 -0
  218. package/src/styles/components/toast.css +52 -0
  219. package/src/styles/components/tooltip.css +60 -0
  220. package/src/styles/components/tour.css +86 -0
  221. package/src/styles/components/transfer.css +104 -0
  222. package/src/styles/components/tree-table.css +78 -0
  223. package/src/styles/components/tree.css +568 -0
  224. package/src/styles/components/upload.css +274 -0
  225. package/src/styles/components/virtual-list.css +56 -0
  226. package/src/styles/components/watermark.css +13 -0
  227. package/src/styles/index.css +109 -0
  228. package/src/styles/theme-dark.css +78 -0
  229. package/src/styles/tokens.css +110 -0
  230. package/src/theme/index.js +186 -0
  231. package/src/utils/export.js +14 -0
  232. package/src/utils/focus-trap.js +45 -0
  233. package/src/utils/panel.js +73 -0
  234. package/src/utils/permission.js +52 -0
  235. package/src/utils/row-move.js +26 -0
  236. package/src/utils/sanitize-html.js +92 -0
  237. package/src/utils/scroll-lock.js +39 -0
  238. package/src/utils/text-diff.js +62 -0
  239. package/src/utils/tree-move.js +51 -0
  240. package/types/index.d.ts +1714 -0
  241. package/types/usage-check.ts +50 -0
  242. package/vendor/qrcode.esm.js +8 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 DJM UI contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -1,3 +1,184 @@
1
- # Temporary Holding Version
1
+ # DJM UI
2
2
 
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.
3
+ 面向企业级中后台的 Vue 3 组件库:100 个组件、明暗主题与品牌色、中英文文案、按钮权限,自带完整文档与无障碍校验。
4
+
5
+ - 官网与文档:https://ui.duojumi.com
6
+ - npm:https://www.npmjs.com/package/djm-ui
7
+
8
+ ## 环境要求
9
+
10
+ - Vue 3.4+
11
+ - 现代浏览器:Chrome / Edge / Firefox / Safari 最近两个大版本(不支持 IE)
12
+ - 组件在挂载后访问 DOM,SSR 场景需在客户端调用 `initTheme()`,服务端只渲染结构
13
+
14
+ ## 安装
15
+
16
+ ```bash
17
+ npm i djm-ui
18
+ ```
19
+
20
+ ## 使用
21
+
22
+ ### 全量注册
23
+
24
+ ```js
25
+ import { createApp } from 'vue'
26
+ import DjmUI from 'djm-ui'
27
+ import 'djm-ui/styles'
28
+ import App from './App.js'
29
+
30
+ createApp(App)
31
+ .use(DjmUI, { locale: 'zh-CN' })
32
+ .mount('#app')
33
+ ```
34
+
35
+ `.use(DjmUI, options)` 会注册全部组件与 `v-permission` 指令,`options.locale` 可省略,默认中文。
36
+
37
+ ### 按需引入
38
+
39
+ ESM 产物支持 tree-shaking,按名字引入即可,未使用的组件不会进入打包结果:
40
+
41
+ ```js
42
+ import { DjmButton, DjmTable } from 'djm-ui'
43
+ import 'djm-ui/styles'
44
+ ```
45
+
46
+ 只要部分组件样式时,按依赖顺序引入基础样式与组件样式:
47
+
48
+ ```js
49
+ import 'djm-ui/styles/tokens.css' // 设计变量
50
+ import 'djm-ui/styles/theme-dark.css' // 暗色主题
51
+ import 'djm-ui/styles/base.css' // 基础重置与工具类
52
+ import 'djm-ui/styles/components/button.css'
53
+ import 'djm-ui/styles/components/motion.css' // 弹窗、抽屉等过渡动画
54
+ ```
55
+
56
+ 栅格由 Row / Col 两部分组成,按需引入走各自路径:
57
+
58
+ ```js
59
+ import DjmRow from 'djm-ui/components/grid/row'
60
+ import DjmCol from 'djm-ui/components/grid/col'
61
+ ```
62
+
63
+ ### CDN
64
+
65
+ UMD 产物复用全局 Vue,不会重复打包 Vue。Vue 必须先加载:
66
+
67
+ ```html
68
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/djm-ui@0.67.2/dist/djm-ui.min.css" />
69
+ <script src="https://cdn.jsdelivr.net/npm/vue@3/dist/vue.global.prod.js"></script>
70
+ <script src="https://cdn.jsdelivr.net/npm/djm-ui@0.67.2/dist/djm-ui.umd.min.js"></script>
71
+
72
+ <script>
73
+ Vue.createApp({
74
+ template: '<DjmButton variant="primary">按钮</DjmButton>'
75
+ }).use(DjmUI).mount('#app')
76
+ </script>
77
+ ```
78
+
79
+ ## 响应式
80
+
81
+ 组件按容器宽度自适应,不依赖具体业务布局,断点与行为如下:
82
+
83
+ | 断点 | 行为 |
84
+ |---|---|
85
+ | ≤1320px | 顶部菜单布局收起横向菜单,改用侧栏抽屉 |
86
+ | ≤960px | 侧栏改为抽屉;个人资料、修改密码等左右两栏改为上下堆叠 |
87
+ | ≤760px | 栅格强制单列、横向表单标签上移、行内筛选竖排、列表页整页自然滚动;日期范围只显示一个月,日期时间面板改为上下排 |
88
+ | ≤620px | 顶栏搜索收成图标,点开后铺满顶栏 |
89
+ | ≤420px | 隐藏皮肤按钮、分页按钮压缩、日期区间上下排 |
90
+
91
+ 组件自身的窄屏处理:
92
+
93
+ - 表格、周日程、甘特图、看板在容器内横向滚动,不把页面撑宽
94
+ - 下拉、日期、颜色、树选择等浮层按视口自动向上翻转并限制在视口内,超高时面板内部滚动
95
+ - 图标类按钮(清空、关闭、展开)在手机端扩大透明点击区,文字操作按钮补充高度
96
+ - 动态字段、导入向导、批量操作条等复合组件在手机上改为单列排布
97
+
98
+ ## 主题与主色
99
+
100
+ ```js
101
+ import { initTheme, toggleTheme, setPrimaryColor, resetPrimaryColor, PRESET_COLORS } from 'djm-ui'
102
+
103
+ initTheme() // 启动时恢复上次选择
104
+ toggleTheme() // light / dark
105
+ setPrimaryColor('#12855a') // 自定义主色,自动推导整套色阶
106
+ resetPrimaryColor() // 回到默认蓝
107
+ ```
108
+
109
+ ## 国际化
110
+
111
+ ```js
112
+ import { setLocale, localeState, t } from 'djm-ui'
113
+
114
+ setLocale('en-US')
115
+ localeState.code // 当前语言
116
+ t('table.empty') // 取文案,支持 t('diff.expand', { count: 12 })
117
+ ```
118
+
119
+ ## 按钮权限
120
+
121
+ ```js
122
+ import { setPermissions } from 'djm-ui'
123
+
124
+ setPermissions(['user:add', 'user:edit'])
125
+ ```
126
+
127
+ ```html
128
+ <DjmButton v-permission="'user:add'">新增用户</DjmButton>
129
+ <DjmButton v-permission.disable="['user:export']">导出</DjmButton>
130
+ ```
131
+
132
+ 没有权限时元素被移除;加 `.disable` 修饰符则只禁用置灰。界面显隐不能替代服务端校验。
133
+
134
+ ## 构建产物
135
+
136
+ | 文件 | 用途 |
137
+ |---|---|
138
+ | `dist/djm-ui.esm.js` / `.min.js` | 现代打包器入口,Vue 作为 peer 外置 |
139
+ | `dist/djm-ui.cjs` / `.min.cjs` | CommonJS 环境 |
140
+ | `dist/djm-ui.umd.js` / `.min.js` | 浏览器 `<script>`,读取全局 Vue |
141
+ | `dist/djm-ui.css` / `.min.css` | 组件库样式,不含示例应用样式 |
142
+
143
+ ## 本地开发
144
+
145
+ ```bash
146
+ npm run dev # 官网 http://localhost:5180(首页落地页,/app/ 示例应用,/docs/ 文档)
147
+ npm run docs # 文档站 http://localhost:5181
148
+ npm test # 语法 + 类名命名空间 + 组件一致性审计
149
+ npm run typecheck # 类型声明校验
150
+ npm run build # 构建样式与 ESM / CJS / UMD
151
+ npm run visual # 视觉回归
152
+ ```
153
+
154
+ ## 官网部署
155
+
156
+ 官网跑在 `ui.duojumi.com`,宝塔静态站点,目录 `/www/wwwroot/ui.duojumi.com`:
157
+
158
+ | 路径 | 内容 |
159
+ |---|---|
160
+ | `/` | 落地页(仓库根 `index.html`,自带 SEO meta 与 JSON-LD) |
161
+ | `/app/` | 示例应用(`app/index.html`) |
162
+ | `/docs/` | 组件文档(`docs/`) |
163
+ | `/robots.txt`、`/sitemap.xml` | 搜索引擎配置 |
164
+
165
+ 文档页依赖仓库里的 `docs/`、`src/styles`、`vendor/` 保持相对路径,所以整块同步:
166
+
167
+ ```bash
168
+ ./scripts/deploy-docs.sh
169
+ ```
170
+
171
+ 脚本默认走 `root@100.112.203.74` + `~/.ssh/jzjl_deploy`,可用 `DJM_DOCS_HOST` / `DJM_DOCS_KEY` / `DJM_DOCS_PATH` 覆盖。Nginx 配置见 `deploy/nginx/ui.duojumi.com.conf`。
172
+
173
+ ## 发布
174
+
175
+ ```bash
176
+ npm run release -- patch # 或 minor / major / 1.2.3
177
+ npm publish
178
+ ```
179
+
180
+ 发布前需在 `CHANGELOG.md` 顶部补好对应版本段落,脚本会拒绝在没有更新说明时改版本号。
181
+
182
+ ## 许可
183
+
184
+ [MIT](./LICENSE)