@kupola/kupola 1.2.0 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +330 -286
- package/adapters/axios.d.ts +34 -0
- package/adapters/axios.js +122 -0
- package/adapters/navios-http.d.ts +110 -0
- package/adapters/navios-http.js +151 -0
- package/css/components-ext.css +157 -0
- package/css/components.css +69 -0
- package/css/theme-dark.css +5 -5
- package/css/utilities.css +119 -1
- package/dist/css/accessibility.css +119 -0
- package/dist/css/animations.css +224 -0
- package/dist/css/brand-themes.css +300 -0
- package/dist/css/colors_and_type.css +441 -0
- package/dist/css/components-ext.css +4165 -0
- package/dist/css/components.css +1483 -0
- package/dist/css/kupola.css +1 -12
- package/dist/css/kupola.min.css +1 -0
- package/dist/css/responsive.css +697 -0
- package/dist/css/scaffold.css +145 -0
- package/dist/css/states.css +316 -0
- package/dist/css/theme-dark.css +296 -0
- package/dist/css/theme-light.css +296 -0
- package/dist/css/utilities.css +171 -0
- package/dist/icons.svg +284 -0
- package/dist/kupola.cjs.js +17409 -257
- package/dist/kupola.cjs.js.map +1 -1
- package/dist/kupola.css +9000 -0
- package/dist/kupola.esm.js +17183 -7597
- package/dist/kupola.esm.js.map +1 -1
- package/dist/kupola.min.css +1 -0
- package/dist/kupola.min.js +2 -0
- package/dist/kupola.min.js.map +1 -0
- package/dist/kupola.umd.js +17415 -257
- package/dist/kupola.umd.js.map +1 -1
- package/dist/plugins/vite-plugin-kupola.js +120 -0
- package/dist/types/kupola.d.ts +421 -323
- package/js/calendar.js +334 -25
- package/js/carousel.js +182 -48
- package/js/collapse.js +148 -34
- package/js/color-picker.js +416 -108
- package/js/component.js +8 -19
- package/js/countdown.js +9 -8
- package/js/data-bind.js +73 -16
- package/js/datepicker.js +488 -110
- package/js/depends.js +710 -0
- package/js/dialog.js +4 -2
- package/js/drawer.js +172 -8
- package/js/dropdown.js +272 -17
- package/js/dynamic-tags.js +156 -40
- package/js/fileupload.js +9 -8
- package/js/form.js +280 -254
- package/js/global-events.js +281 -188
- package/js/heatmap.js +10 -7
- package/js/i18n.js +18 -10
- package/js/icons.js +141 -161
- package/js/image-preview.js +146 -2
- package/js/initializer.js +151 -71
- package/js/kupola-core.js +123 -45
- package/js/kupola-lifecycle.js +13 -11
- package/js/message.js +8 -1
- package/js/modal.js +207 -59
- package/js/notification.js +8 -1
- package/js/numberinput.js +9 -8
- package/js/pagination.js +263 -0
- package/js/registry.js +29 -12
- package/js/select.js +482 -27
- package/js/slide-captcha.js +11 -2
- package/js/slider.js +442 -25
- package/js/statcard.js +9 -7
- package/js/table.js +1210 -0
- package/js/tag.js +268 -14
- package/js/theme-standalone.js +88 -0
- package/js/theme.js +14 -43
- package/js/timepicker.js +335 -66
- package/js/tooltip.js +317 -86
- package/js/utils.js +6 -2
- package/js/validation.js +6 -2
- package/js/virtual-list.js +11 -7
- package/js/web-components.js +288 -0
- package/package.json +81 -67
- package/plugins/vite-plugin-kupola.js +120 -0
- package/scripts/build-css.cjs +113 -0
- package/scripts/build-svg-sprite.cjs +107 -0
- package/types/kupola.d.ts +421 -323
- package/CHANGELOG.md +0 -130
- package/INTEGRATION.md +0 -440
- package/PROJECT_SUMMARY.md +0 -312
- package/SKILL.md +0 -572
- package/dist/utils/utils/Kupola.cs +0 -77
- package/dist/utils/utils/Kupola.java +0 -104
- package/dist/utils/utils/kupola.go +0 -120
- package/dist/utils/utils/kupola.js +0 -63
- package/dist/utils/utils/kupola.py +0 -1392
- package/dist/utils/utils/kupola.rb +0 -69
- package/js/composition-api.js +0 -458
- package/js/error-handler.js +0 -181
- package/js/http.js +0 -419
- package/js/kupola-devtools.js +0 -598
- package/js/performance.js +0 -250
- package/js/router.js +0 -396
- package/js/security.js +0 -189
- package/js/test-utils.js +0 -251
- package/templates/base.html +0 -30
- package/templates/base_dashboard.html +0 -99
- package/utils/Kupola.cs +0 -77
- package/utils/Kupola.java +0 -104
- package/utils/kupola.go +0 -120
- package/utils/kupola.js +0 -63
- package/utils/kupola.py +0 -1392
- package/utils/kupola.rb +0 -69
package/PROJECT_SUMMARY.md
DELETED
|
@@ -1,312 +0,0 @@
|
|
|
1
|
-
# Kupola Design System - 项目总结
|
|
2
|
-
|
|
3
|
-
## 一、项目概述
|
|
4
|
-
|
|
5
|
-
Kupola 是一个轻量级设计系统,专为 Python Web 项目(Flask/Django)设计,无需 React/Vue 等重型框架。
|
|
6
|
-
|
|
7
|
-
### 项目历史
|
|
8
|
-
|
|
9
|
-
| 阶段 | 时间 | 事件 |
|
|
10
|
-
|------|------|------|
|
|
11
|
-
| Nimbus | 初始版本 | 项目创建,命名为 Nimbus Design System |
|
|
12
|
-
| 重构 | 2026-07 | 代码重构,修复响应式、HTTP、内存泄漏等问题 |
|
|
13
|
-
| 重命名 | 2026-07-09 | 项目从 Nimbus 重命名为 Kupola |
|
|
14
|
-
| 清理 | 2026-07-09 | 清理无用文件,优化项目结构 |
|
|
15
|
-
| GitHub | 2026-07-09 | 推送到 GitHub 仓库 `github.com/kupola-cn/kupola` |
|
|
16
|
-
|
|
17
|
-
### 核心特性
|
|
18
|
-
|
|
19
|
-
- **50+ 组件**:按钮、输入框、卡片、弹窗、日期选择器、时间选择器、热力图、虚拟列表等
|
|
20
|
-
- **双主题**:深色优先设计,支持浅色主题
|
|
21
|
-
- **11 个品牌色**:可切换的品牌色彩系统
|
|
22
|
-
- **响应式设计**:适配 PC、平板、手机
|
|
23
|
-
- **无障碍**:符合 WCAG AA 标准
|
|
24
|
-
- **表单验证**:内置验证规则,支持自定义规则
|
|
25
|
-
- **数据绑定**:基于 Proxy 的双向数据绑定系统
|
|
26
|
-
- **无依赖**:纯 HTML/CSS/JavaScript
|
|
27
|
-
|
|
28
|
-
---
|
|
29
|
-
|
|
30
|
-
## 二、架构设计
|
|
31
|
-
|
|
32
|
-
### 架构原则
|
|
33
|
-
|
|
34
|
-
```
|
|
35
|
-
┌──────────────────────────────────────────────────────┐
|
|
36
|
-
│ HTML 层(后端渲染) │
|
|
37
|
-
│ Jinja2/Django 模板输出语义化 HTML │
|
|
38
|
-
│ data-bind / data-component / data-validate 属性 │
|
|
39
|
-
├──────────────────────────────────────────────────────┤
|
|
40
|
-
│ CSS 层(视觉增强) │
|
|
41
|
-
│ CSS 变量 + BEM 命名 + 双主题支持 │
|
|
42
|
-
│ 即使 JS 未加载,页面依然可用 │
|
|
43
|
-
├──────────────────────────────────────────────────────┤
|
|
44
|
-
│ JS 层(交互增强) │
|
|
45
|
-
│ IIFE + window 全局挂载,无需打包器 │
|
|
46
|
-
│ MutationObserver 自动检测并初始化组件 │
|
|
47
|
-
│ 响应式系统(Proxy)+ 组合式 API │
|
|
48
|
-
└──────────────────────────────────────────────────────┘
|
|
49
|
-
```
|
|
50
|
-
|
|
51
|
-
### 组件生命周期
|
|
52
|
-
|
|
53
|
-
```
|
|
54
|
-
创建 → init() → 挂载 → 更新 → 销毁 → destroy()
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
通过 `KupolaLifecycle` 和 `GlobalEventManager` 统一管理组件生命周期。
|
|
58
|
-
|
|
59
|
-
### 响应式系统
|
|
60
|
-
|
|
61
|
-
基于 Proxy 实现,支持:
|
|
62
|
-
- `ref()` - 基础响应式引用
|
|
63
|
-
- `reactive()` - 响应式对象
|
|
64
|
-
- `computed()` - 计算属性(自动依赖追踪)
|
|
65
|
-
|
|
66
|
-
---
|
|
67
|
-
|
|
68
|
-
## 三、项目结构
|
|
69
|
-
|
|
70
|
-
```
|
|
71
|
-
kupola/
|
|
72
|
-
├── css/ # CSS 样式表(13个文件)
|
|
73
|
-
│ ├── kupola.css # 主样式入口
|
|
74
|
-
│ ├── components.css # 组件样式
|
|
75
|
-
│ ├── theme-dark.css # 深色主题
|
|
76
|
-
│ ├── theme-light.css # 浅色主题
|
|
77
|
-
│ └── ... # 其他样式
|
|
78
|
-
├── js/ # JavaScript 模块(40+个)
|
|
79
|
-
│ ├── kupola-core.js # 核心框架
|
|
80
|
-
│ ├── kupola-lifecycle.js # 生命周期管理
|
|
81
|
-
│ ├── component.js # 组件基类
|
|
82
|
-
│ ├── data-bind.js # 数据绑定
|
|
83
|
-
│ ├── composition-api.js # 组合式 API
|
|
84
|
-
│ ├── http.js # HTTP 客户端
|
|
85
|
-
│ ├── router.js # 路由系统
|
|
86
|
-
│ ├── theme.js # 主题切换
|
|
87
|
-
│ └── ... # UI 组件
|
|
88
|
-
├── icons/ # SVG 图标(133个)
|
|
89
|
-
├── dist/ # 构建产物
|
|
90
|
-
│ ├── kupola.esm.js # ES Module 格式
|
|
91
|
-
│ ├── kupola.cjs.js # CommonJS 格式
|
|
92
|
-
│ ├── kupola.umd.js # UMD 格式
|
|
93
|
-
│ └── types/kupola.d.ts # TypeScript 类型定义
|
|
94
|
-
├── src/ # 构建入口
|
|
95
|
-
├── utils/ # Python 工具函数
|
|
96
|
-
├── dashboard/ # 仪表盘模板
|
|
97
|
-
├── casepages/ # 组件展示页面
|
|
98
|
-
├── examples/ # 使用示例
|
|
99
|
-
├── test/ # 测试文件
|
|
100
|
-
├── docs/ # 文档
|
|
101
|
-
└── package.json # 构建脚本
|
|
102
|
-
```
|
|
103
|
-
|
|
104
|
-
---
|
|
105
|
-
|
|
106
|
-
## 四、核心功能
|
|
107
|
-
|
|
108
|
-
### 1. 组件系统
|
|
109
|
-
|
|
110
|
-
| 类别 | 组件 |
|
|
111
|
-
|------|------|
|
|
112
|
-
| **基础** | Button, Input, Textarea, Select, Checkbox, Radio, Switch |
|
|
113
|
-
| **数据** | Table, Pagination, VirtualList, DynamicTags |
|
|
114
|
-
| **反馈** | Modal, Dialog, Message, Notification, Tooltip |
|
|
115
|
-
| **导航** | Tabs, Dropdown, Breadcrumb |
|
|
116
|
-
| **表单** | Form, DatePicker, TimePicker, ColorPicker |
|
|
117
|
-
| **数据可视化** | Heatmap, StatCard |
|
|
118
|
-
| **其他** | Carousel, Drawer, Collapse, Upload |
|
|
119
|
-
|
|
120
|
-
### 2. 数据绑定
|
|
121
|
-
|
|
122
|
-
```html
|
|
123
|
-
<input type="text" data-bind="user.name:value">
|
|
124
|
-
<span data-bind="user.name:text"></span>
|
|
125
|
-
<input type="checkbox" data-bind="user.active:checked">
|
|
126
|
-
```
|
|
127
|
-
|
|
128
|
-
```javascript
|
|
129
|
-
kupolaData.data.user = { name: 'John', active: true };
|
|
130
|
-
kupolaData.data.user.name = 'Jane';
|
|
131
|
-
```
|
|
132
|
-
|
|
133
|
-
### 3. 组合式 API
|
|
134
|
-
|
|
135
|
-
```javascript
|
|
136
|
-
setup(() => {
|
|
137
|
-
const count = ref(0);
|
|
138
|
-
const doubled = computed(() => count.value * 2);
|
|
139
|
-
|
|
140
|
-
onMounted(() => {
|
|
141
|
-
console.log('组件挂载');
|
|
142
|
-
});
|
|
143
|
-
|
|
144
|
-
return { count, doubled };
|
|
145
|
-
});
|
|
146
|
-
```
|
|
147
|
-
|
|
148
|
-
### 4. 主题系统
|
|
149
|
-
|
|
150
|
-
```javascript
|
|
151
|
-
setTheme('dark'); // 切换到深色主题
|
|
152
|
-
setTheme('light'); // 切换到浅色主题
|
|
153
|
-
setBrand('zengqing'); // 设置品牌色
|
|
154
|
-
```
|
|
155
|
-
|
|
156
|
-
### 5. HTTP 客户端
|
|
157
|
-
|
|
158
|
-
```javascript
|
|
159
|
-
const http = createHttp({ baseURL: '/api' });
|
|
160
|
-
http.get('/users');
|
|
161
|
-
http.post('/login', { username, password });
|
|
162
|
-
http.cancelRequest('/users');
|
|
163
|
-
http.cancelAllRequests();
|
|
164
|
-
```
|
|
165
|
-
|
|
166
|
-
---
|
|
167
|
-
|
|
168
|
-
## 五、使用方法
|
|
169
|
-
|
|
170
|
-
### 快速开始
|
|
171
|
-
|
|
172
|
-
```html
|
|
173
|
-
<!-- 引入 CSS -->
|
|
174
|
-
<link rel="stylesheet" href="kupola/css/kupola.css">
|
|
175
|
-
|
|
176
|
-
<!-- 引入 JavaScript -->
|
|
177
|
-
<script src="kupola/js/kupola-core.js"></script>
|
|
178
|
-
|
|
179
|
-
<!-- 使用组件 -->
|
|
180
|
-
<button class="ds-btn ds-btn--brand">提交</button>
|
|
181
|
-
<input type="text" class="ds-input" placeholder="输入内容">
|
|
182
|
-
```
|
|
183
|
-
|
|
184
|
-
### ES Module 方式
|
|
185
|
-
|
|
186
|
-
```javascript
|
|
187
|
-
import { KupolaComponent, ref, reactive, createHttp } from 'kupola';
|
|
188
|
-
```
|
|
189
|
-
|
|
190
|
-
### 构建命令
|
|
191
|
-
|
|
192
|
-
```bash
|
|
193
|
-
npm install # 安装依赖
|
|
194
|
-
npm run build # 生产构建(Vite)
|
|
195
|
-
npm run build:rollup # 备选构建(Rollup)
|
|
196
|
-
npm run dev # 开发服务器
|
|
197
|
-
npm run test # 运行测试
|
|
198
|
-
npm run lint # 代码检查
|
|
199
|
-
```
|
|
200
|
-
|
|
201
|
-
---
|
|
202
|
-
|
|
203
|
-
## 六、构建系统
|
|
204
|
-
|
|
205
|
-
### 构建工具
|
|
206
|
-
|
|
207
|
-
- **Vite ^5.4.1**:主要构建工具,生成 ESM/CJS/UMD 格式
|
|
208
|
-
- **Rollup**:备选构建工具,兼容更多场景
|
|
209
|
-
|
|
210
|
-
### 构建产物
|
|
211
|
-
|
|
212
|
-
| 文件 | 大小 | 说明 |
|
|
213
|
-
|------|------|------|
|
|
214
|
-
| `dist/kupola.esm.js` | ~332 kB | ES Module 格式 |
|
|
215
|
-
| `dist/kupola.cjs.js` | ~254 kB | CommonJS 格式 |
|
|
216
|
-
| `dist/kupola.umd.js` | ~254 kB | UMD 格式 |
|
|
217
|
-
|
|
218
|
-
---
|
|
219
|
-
|
|
220
|
-
## 七、分支管理
|
|
221
|
-
|
|
222
|
-
### 分支策略
|
|
223
|
-
|
|
224
|
-
```
|
|
225
|
-
main # 生产分支(稳定版本)
|
|
226
|
-
└── develop # 开发分支(日常开发)
|
|
227
|
-
├── feature/xxx # 功能分支
|
|
228
|
-
├── fix/xxx # 修复分支
|
|
229
|
-
└── release/xxx # 发布分支
|
|
230
|
-
```
|
|
231
|
-
|
|
232
|
-
### 工作流程
|
|
233
|
-
|
|
234
|
-
```bash
|
|
235
|
-
# 切换到开发分支
|
|
236
|
-
git checkout develop
|
|
237
|
-
|
|
238
|
-
# 创建功能分支
|
|
239
|
-
git checkout -b feature/new-component
|
|
240
|
-
|
|
241
|
-
# 开发完成后推送
|
|
242
|
-
git push github feature/new-component
|
|
243
|
-
|
|
244
|
-
# 创建 PR 到 develop
|
|
245
|
-
# 合并后删除分支
|
|
246
|
-
```
|
|
247
|
-
|
|
248
|
-
---
|
|
249
|
-
|
|
250
|
-
## 八、贡献指南
|
|
251
|
-
|
|
252
|
-
### 代码规范
|
|
253
|
-
|
|
254
|
-
- **JavaScript**:使用 ESLint 检查,遵循 Airbnb 规范
|
|
255
|
-
- **CSS**:使用 BEM 命名规范
|
|
256
|
-
- **提交信息**:使用 Conventional Commits 格式
|
|
257
|
-
|
|
258
|
-
### 开发流程
|
|
259
|
-
|
|
260
|
-
1. Fork 仓库
|
|
261
|
-
2. 创建功能分支 `feature/xxx`
|
|
262
|
-
3. 开发并测试
|
|
263
|
-
4. 创建 PR 到 `develop` 分支
|
|
264
|
-
5. 等待审核和合并
|
|
265
|
-
|
|
266
|
-
---
|
|
267
|
-
|
|
268
|
-
## 九、迁移指南(从 Nimbus)
|
|
269
|
-
|
|
270
|
-
### 名称变更
|
|
271
|
-
|
|
272
|
-
| 旧名称 | 新名称 |
|
|
273
|
-
|--------|--------|
|
|
274
|
-
| `NimbusComponent` | `KupolaComponent` |
|
|
275
|
-
| `NimbusHttp` | `KupolaHttp` |
|
|
276
|
-
| `window.nimbusData` | `window.kupolaData` |
|
|
277
|
-
| `nimbus-core.js` | `kupola-core.js` |
|
|
278
|
-
| `nimbus.css` | `kupola.css` |
|
|
279
|
-
|
|
280
|
-
### 引用路径变更
|
|
281
|
-
|
|
282
|
-
| 旧路径 | 新路径 |
|
|
283
|
-
|--------|--------|
|
|
284
|
-
| `/nimbus-js/` | `/kupola-js/` |
|
|
285
|
-
| `/nimbus-css/` | `/kupola-css/` |
|
|
286
|
-
| `/nimbus-dist/` | `/kupola-dist/` |
|
|
287
|
-
|
|
288
|
-
---
|
|
289
|
-
|
|
290
|
-
## 十、版本历史
|
|
291
|
-
|
|
292
|
-
| 版本 | 日期 | 变更 |
|
|
293
|
-
|------|------|------|
|
|
294
|
-
| 1.2.0 | 2026-07-09 | 项目重命名为 Kupola,清理无用文件 |
|
|
295
|
-
| 1.1.0 | 2026-07 | 修复响应式系统、HTTP 取消、内存泄漏 |
|
|
296
|
-
| 1.0.0 | 初始 | Nimbus Design System 发布 |
|
|
297
|
-
|
|
298
|
-
---
|
|
299
|
-
|
|
300
|
-
## 十一、相关链接
|
|
301
|
-
|
|
302
|
-
- **GitHub**:https://github.com/kupola-cn/kupola
|
|
303
|
-
- **Gitee**:https://gitee.com/coln/nimbus
|
|
304
|
-
- **文档**:docs/api.md, docs/kupola-vs-vue-react.md
|
|
305
|
-
- **集成指南**:INTEGRATION.md
|
|
306
|
-
- **组件展示**:dashboard/showcase.html
|
|
307
|
-
|
|
308
|
-
---
|
|
309
|
-
|
|
310
|
-
## 十二、许可证
|
|
311
|
-
|
|
312
|
-
MIT License
|