@admin-core/design 0.1.0 → 0.2.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/README.md CHANGED
@@ -1,48 +1,46 @@
1
- # @admin-core/design
1
+ # @admin-kit/design
2
2
 
3
- 设计系统(样式、令牌)
3
+ 基于 Tailwind CSS v4 的设计系统,提供完整的样式、令牌和主题管理解决方案。
4
4
 
5
- ## 安装
5
+ ## 功能特性
6
6
 
7
- ```bash
8
- # npm
9
- npm install @admin-core/design
7
+ - ✅ **Tailwind CSS v4** - 使用最新的 Tailwind CSS v4 特性
8
+ - ✅ **主题系统** - 支持浅色/暗色模式,提供 13+ 预设主题
9
+ - **设计令牌** - 基于 CSS 变量的设计令牌系统
10
+ - ✅ **BEM 工具** - SCSS BEM 命名规范 Mixin 工具集
11
+ - ✅ **动画库** - 丰富的 Vue 过渡动画和 CSS 动画
12
+ - ✅ **TypeScript** - 完整的 TypeScript 类型支持
10
13
 
11
- # pnpm
12
- pnpm add @admin-core/design
14
+ ## 安装
13
15
 
14
- # yarn
15
- yarn add @admin-core/design
16
+ ```bash
17
+ pnpm add @admin-kit/design
16
18
  ```
17
19
 
18
20
  ## 使用方式
19
21
 
20
- ### 1. CSS 样式导入
21
-
22
- #### ESM (推荐)
22
+ ### 1. 导入完整样式
23
23
 
24
24
  ```typescript
25
- import '@admin-core/design/css'
26
-
27
- // 使用 CSS 变量
28
- // 在你的组件中直接使用设计令牌
25
+ // 导入所有样式和令牌
26
+ import '@admin-kit/design'
29
27
  ```
30
28
 
31
- #### CommonJS
29
+ ### 2. 按需导入
32
30
 
33
- ```javascript
34
- require('@admin-core/design/css')
35
- ```
31
+ ```typescript
32
+ // 只导入 CSS
33
+ import '@admin-kit/design/css'
36
34
 
37
- ### 2. SCSS BEM 工具
35
+ // 只导入令牌
36
+ import '@admin-kit/design/tokens'
37
+ ```
38
38
 
39
- 如果你的项目使用 SCSS,可以导入 BEM 命名规范工具:
39
+ ### 3. 使用 SCSS BEM 工具
40
40
 
41
41
  ```scss
42
- // 导入 BEM Mixin 工具
43
- @use '@admin-core/design/scss-bem' as *;
42
+ @use '@admin-kit/design/scss-bem' as *;
44
43
 
45
- // 使用 BEM Mixin
46
44
  @include b(button) {
47
45
  padding: 8px 16px;
48
46
 
@@ -53,343 +51,255 @@ require('@admin-core/design/css')
53
51
  @include m(primary) {
54
52
  background: blue;
55
53
  }
56
-
57
- @include is(disabled) {
58
- opacity: 0.5;
59
- }
60
54
  }
61
55
  ```
62
56
 
63
- 详细的 BEM 工具使用文档,请查看 [SCSS BEM 文档](./src/scss-bem/README.md)
57
+ ## Tailwind CSS 配置
64
58
 
65
- ### 3. CDN (UMD)
59
+ 如果你的项目需要扩展 Tailwind 配置,可以继承本包的配置:
66
60
 
67
- #### unpkg
68
-
69
- ```html
70
- <!-- 样式 -->
71
- <link rel="stylesheet" href="https://unpkg.com/@admin-core/design/dist/style.css">
72
-
73
- <!-- JavaScript -->
74
- <script src="https://unpkg.com/@admin-core/design/dist/index.umd.js"></script>
75
- <script>
76
- // 全局变量 AdminKitDesign
77
- console.log(AdminKitDesign)
78
- </script>
61
+ ```typescript
62
+ // tailwind.config.ts
63
+ import designConfig from '@admin-kit/design/tailwind.config'
64
+ import type { Config } from 'tailwindcss'
65
+
66
+ export default {
67
+ ...designConfig,
68
+ content: [
69
+ ...designConfig.content,
70
+ './src/**/*.{vue,js,ts,jsx,tsx}',
71
+ ],
72
+ theme: {
73
+ ...designConfig.theme,
74
+ extend: {
75
+ ...designConfig.theme.extend,
76
+ // 你的自定义扩展
77
+ },
78
+ },
79
+ } satisfies Config
79
80
  ```
80
81
 
81
- #### jsDelivr
82
+ ## 主题系统
83
+
84
+ ### 切换暗色模式
82
85
 
83
86
  ```html
84
- <!-- 样式 -->
85
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@admin-core/design/dist/style.css">
86
-
87
- <!-- JavaScript -->
88
- <script src="https://cdn.jsdelivr.net/npm/@admin-core/design/dist/index.umd.js"></script>
89
- <script>
90
- console.log(AdminKitDesign)
91
- </script>
87
+ <!-- 浅色模式(默认) -->
88
+ <html>
89
+ <body>...</body>
90
+ </html>
91
+
92
+ <!-- 暗色模式 -->
93
+ <html class="dark">
94
+ <body>...</body>
95
+ </html>
92
96
  ```
93
97
 
94
- ## 包含内容
98
+ ### 切换主题变体
95
99
 
96
- ### 样式文件
100
+ ```html
101
+ <!-- 紫色主题 -->
102
+ <html data-theme="violet">
103
+ <body>...</body>
104
+ </html>
97
105
 
98
- - **global.css** - 全局样式、盒模型、滚动条、视图过渡
99
- - **nprogress.css** - 进度条样式和旋转加载动画
100
- - **transition.css** - Vue 过渡动画(滑动、淡入淡出、缩放等)
101
- - **ui.css** - UI 组件样式(侧边内容、面包屑、弹窗层级等)
102
- - **light.css** - 浅色主题 CSS 变量
103
- - **dark.css** - 暗色主题 CSS 变量
106
+ <!-- 暗色 + 紫色主题 -->
107
+ <html class="dark" data-theme="violet">
108
+ <body>...</body>
109
+ </html>
110
+ ```
104
111
 
105
- ---
112
+ ### 可用主题
106
113
 
107
- # 设计令牌(Design Tokens)
114
+ - `violet` - 紫色主题
115
+ - `pink` - 粉色主题
116
+ - `rose` - 玫瑰色主题
117
+ - `sky-blue` - 天蓝色主题
118
+ - `deep-blue` - 深蓝色主题
119
+ - `green` - 绿色主题
120
+ - `deep-green` - 深绿色主题
121
+ - `orange` - 橙色主题
122
+ - `yellow` - 黄色主题
123
+ - `zinc` - 锌色主题
124
+ - `neutral` - 中性色主题
125
+ - `slate` - 石板色主题
126
+ - `gray` - 灰色主题
108
127
 
109
- ## 概述
128
+ ## 设计令牌
110
129
 
111
- 设计令牌是设计系统的基础,定义了应用中所有的颜色、间距、字体等视觉属性。通过 CSS 变量实现,可以轻松切换主题和适配暗色模式。
130
+ 所有颜色都使用 HSL 格式的 CSS 变量定义,支持透明度修饰符:
112
131
 
113
- ## 文件说明
132
+ ```html
133
+ <!-- 使用 Tailwind 工具类 -->
134
+ <div class="bg-primary text-primary-foreground">主色按钮</div>
135
+ <div class="bg-primary/50">50% 透明度的主色背景</div>
114
136
 
115
- ### light.css - 浅色主题
137
+ <!-- 使用 CSS 变量 -->
138
+ <style>
139
+ .my-component {
140
+ background-color: hsl(var(--primary));
141
+ color: hsl(var(--primary-foreground));
142
+ }
143
+ </style>
144
+ ```
116
145
 
117
- **用途:**
118
- - 定义浅色主题下的所有 CSS 变量
119
- - 提供 12 种预设主题变体(default、violet、pink、rose、sky-blue、deep-blue、green、deep-green、orange、yellow、zinc、neutral、slate、gray)
120
- - 作为整个设计系统的颜色基础
146
+ ### 可用的颜色令牌
121
147
 
122
- **核心变量:**
123
- - `--background` - 页面背景色
124
- - `--foreground` - 文字颜色
125
- - `--primary` - 主题色
126
- - `--secondary` - 次要色
127
- - `--accent` - 强调色
128
- - `--destructive` - 危险操作色
129
- - `--success` - 成功提示色
130
- - `--warning` - 警告提示色
131
- - `--border` - 边框色
132
- - `--input` - 输入框边框色
133
- - `--card` - 卡片背景色
134
- - `--popover` - 弹出层背景色
148
+ #### 基础颜色
149
+ - `--background` / `--foreground` - 背景和前景色
150
+ - `--card` / `--card-foreground` - 卡片颜色
151
+ - `--popover` / `--popover-foreground` - 弹出层颜色
135
152
 
136
- **使用示例:**
137
- ```html
138
- <!-- 默认主题 -->
139
- <html>
140
- <body>默认浅色主题</body>
141
- </html>
153
+ #### 语义颜色
154
+ - `--primary` / `--primary-foreground` - 主色
155
+ - `--secondary` / `--secondary-foreground` - 次要色
156
+ - `--muted` / `--muted-foreground` - 柔和色
157
+ - `--accent` / `--accent-foreground` - 强调色
158
+ - `--destructive` / `--destructive-foreground` - 破坏性操作色
142
159
 
143
- <!-- 紫色主题 -->
144
- <html data-theme="violet">
145
- <body>紫色浅色主题</body>
146
- </html>
147
- ```
160
+ #### 状态颜色
161
+ - `--info` / `--info-foreground` - 信息提示色
162
+ - `--success` / `--success-foreground` - 成功提示色
163
+ - `--warning` / `--warning-foreground` - 警告提示色
148
164
 
149
- ### dark.css - 暗色主题
165
+ #### 边框和输入
166
+ - `--border` - 边框颜色
167
+ - `--input` - 输入框边框颜色
168
+ - `--ring` - 焦点环颜色
150
169
 
151
- **用途:**
152
- - 定义暗色模式下的所有 CSS 变量
153
- - 提供护眼的深色配色方案
154
- - 支持与浅色主题相同的 12 种主题变体
155
- - 通过 `.dark` 类名自动应用
170
+ #### 其他
171
+ - `--radius` - 圆角大小
172
+ - `--font-family` - 字体家族
173
+ - `--popup-z-index` - 弹出层层级
156
174
 
157
- **特点:**
158
- - 背景色使用深色调(低亮度值)
159
- - 前景色使用浅色调(高亮度值)
160
- - 优化的对比度,确保文字可读性
161
- - 减少夜间使用时的眼睛疲劳
175
+ ## 动画
162
176
 
163
- **使用示例:**
164
- ```html
165
- <!-- 暗色模式 -->
166
- <html class="dark">
167
- <body>默认暗色主题</body>
168
- </html>
177
+ ### Vue 过渡动画
169
178
 
170
- <!-- 暗色模式 + 紫色主题 -->
171
- <html class="dark" data-theme="violet">
172
- <body>紫色暗色主题</body>
173
- </html>
179
+ ```vue
180
+ <template>
181
+ <Transition name="fade">
182
+ <div v-if="show">内容</div>
183
+ </Transition>
184
+ </template>
174
185
  ```
175
186
 
176
- ## 主题系统
187
+ 可用的过渡动画:
188
+ - `fade` - 淡入淡出
189
+ - `slide-up` - 向上滑动
190
+ - `slide-down` - 向下滑动
191
+ - `slide-left` - 向左滑动
192
+ - `slide-right` - 向右滑动
193
+ - `fade-slide` - 淡入淡出 + 滑动
194
+ - `fade-scale` - 淡入淡出 + 缩放
177
195
 
178
- ### 预设主题列表
179
-
180
- | 主题名称 | data-theme 值 | 描述 |
181
- |---------|--------------|------|
182
- | 默认 | 不设置 | 蓝色系主题 |
183
- | 紫罗兰 | `violet` | 紫色系主题 |
184
- | 粉色 | `pink` | 粉色系主题 |
185
- | 玫瑰 | `rose` | 玫瑰色系主题 |
186
- | 天蓝 | `sky-blue` | 天蓝色系主题 |
187
- | 深蓝 | `deep-blue` | 深蓝色系主题 |
188
- | 绿色 | `green` | 绿色系主题 |
189
- | 深绿 | `deep-green` | 深绿色系主题 |
190
- | 橙色 | `orange` | 橙色系主题 |
191
- | 黄色 | `yellow` | 黄色系主题 |
192
- | 锌灰 | `zinc` | 锌灰色系主题 |
193
- | 中性灰 | `neutral` | 中性灰色系主题 |
194
- | 石板灰 | `slate` | 石板灰色系主题 |
195
- | 灰色 | `gray` | 灰色系主题 |
196
-
197
- ### 主题切换实现
198
-
199
- **JavaScript 切换:**
200
- ```javascript
201
- // 切换到暗色模式
202
- document.documentElement.classList.add('dark')
203
-
204
- // 切换到浅色模式
205
- document.documentElement.classList.remove('dark')
206
-
207
- // 切换主题颜色
208
- document.documentElement.setAttribute('data-theme', 'violet')
196
+ ### Tailwind 动画类
197
+
198
+ ```html
199
+ <div class="animate-slide-down">向下滑入</div>
200
+ <div class="animate-fade-in">淡入</div>
201
+ <div class="animate-shrink">收缩动画</div>
209
202
  ```
210
203
 
211
- **Vue 组合式函数:**
212
- ```typescript
213
- import { ref } from 'vue'
204
+ ## BEM 命名规范
214
205
 
215
- export function useTheme() {
216
- const isDark = ref(false)
217
- const theme = ref('default')
206
+ 使用 SCSS Mixin 快速生成 BEM 类名:
218
207
 
219
- const toggleDark = () => {
220
- isDark.value = !isDark.value
221
- document.documentElement.classList.toggle('dark', isDark.value)
222
- }
208
+ ```scss
209
+ @use '@admin-kit/design/scss-bem' as *;
223
210
 
224
- const setTheme = (newTheme: string) => {
225
- theme.value = newTheme
226
- document.documentElement.setAttribute('data-theme', newTheme)
211
+ @include b(card) {
212
+ // 生成 .admin-card
213
+ padding: 16px;
214
+
215
+ @include e(header) {
216
+ // 生成 .admin-card__header
217
+ font-weight: bold;
218
+ }
219
+
220
+ @include m(primary) {
221
+ // 生成 .admin-card--primary
222
+ border-color: blue;
223
+ }
224
+
225
+ @include is(active) {
226
+ // 生成 .admin-card.is-active
227
+ box-shadow: 0 0 10px blue;
227
228
  }
228
-
229
- return { isDark, theme, toggleDark, setTheme }
230
229
  }
231
230
  ```
232
231
 
233
- ## CSS 变量使用
232
+ 详细文档请查看 [BEM 工具文档](./src/scss-bem/README.md)。
234
233
 
235
- ### 在组件中使用
234
+ ## 工具类
236
235
 
237
- ```css
238
- .my-button {
239
- /* 使用主题色 */
240
- background-color: hsl(var(--primary));
241
- color: hsl(var(--primary-foreground));
242
-
243
- /* 使用边框色 */
244
- border: 1px solid hsl(var(--border));
245
-
246
- /* 使用圆角 */
247
- border-radius: var(--radius);
248
- }
236
+ ### 布局工具类
249
237
 
250
- .my-button:hover {
251
- /* 使用强调色 */
252
- background-color: hsl(var(--accent));
253
- }
238
+ ```html
239
+ <!-- 水平居中 -->
240
+ <div class="flex-center">内容</div>
254
241
 
255
- .my-button.destructive {
256
- /* 使用危险色 */
257
- background-color: hsl(var(--destructive));
258
- color: hsl(var(--destructive-foreground));
259
- }
260
- ```
242
+ <!-- 垂直居中 -->
243
+ <div class="flex-col-center">内容</div>
261
244
 
262
- ### 颜色值格式
245
+ <!-- 卡片容器 -->
246
+ <div class="card-box">卡片内容</div>
263
247
 
264
- 所有颜色变量使用 HSL 格式(色相 饱和度 亮度),需要配合 `hsl()` 函数使用:
248
+ <!-- 轮廓框 -->
249
+ <div class="outline-box">可点击的框</div>
250
+ <div class="outline-box outline-box-active">激活状态</div>
251
+ ```
265
252
 
266
- ```css
267
- /* ✅ 正确 */
268
- background-color: hsl(var(--primary));
253
+ ### 链接样式
269
254
 
270
- /* ❌ 错误 */
271
- background-color: var(--primary);
255
+ ```html
256
+ <a href="#" class="admin-link">链接文本</a>
272
257
  ```
273
258
 
274
- ### 透明度支持
275
-
276
- 可以通过 HSL 的第四个参数添加透明度:
259
+ ## 特殊模式
277
260
 
278
- ```css
279
- /* 50% 透明度的主题色 */
280
- background-color: hsl(var(--primary) / 0.5);
261
+ ### 反色模式
281
262
 
282
- /* 20% 透明度的边框色 */
283
- border-color: hsl(var(--border) / 0.2);
263
+ ```html
264
+ <html class="invert-mode">
265
+ <body>所有颜色反转</body>
266
+ </html>
284
267
  ```
285
268
 
286
- ## 变量分类
287
-
288
- ### 基础颜色
289
- - `--background` / `--background-deep` - 背景色
290
- - `--foreground` - 前景色(文字)
291
- - `--border` - 边框色
292
-
293
- ### 组件颜色
294
- - `--card` - 卡片背景
295
- - `--popover` - 弹出层背景
296
- - `--input` - 输入框边框
297
- - `--muted` - 柔和背景
298
-
299
- ### 语义颜色
300
- - `--primary` - 主题色(品牌色)
301
- - `--secondary` - 次要色
302
- - `--accent` - 强调色(悬停效果)
303
- - `--destructive` - 危险操作(删除、警告)
304
- - `--success` - 成功提示
305
- - `--warning` - 警告提示
306
- - `--info` - 信息提示
307
-
308
- ### 布局组件
309
- - `--sidebar` - 侧边栏背景
310
- - `--header` - 头部背景
311
- - `--menu` - 菜单背景
312
-
313
- ### 其他
314
- - `--radius` - 圆角大小
315
- - `--ring` - 焦点环颜色
316
- - `--overlay` - 遮罩颜色
317
- - `--font-size-base` - 基础字体大小
318
-
319
- ## 最佳实践
320
-
321
- 1. **始终使用语义化变量**
322
- ```css
323
- /* ✅ 推荐 */
324
- color: hsl(var(--foreground));
325
-
326
- /* ❌ 不推荐 */
327
- color: #000000;
328
- ```
329
-
330
- 2. **为不同状态使用对应的颜色**
331
- ```css
332
- .button-primary { background: hsl(var(--primary)); }
333
- .button-danger { background: hsl(var(--destructive)); }
334
- .button-success { background: hsl(var(--success)); }
335
- ```
336
-
337
- 3. **利用前景色变量确保对比度**
338
- ```css
339
- .card {
340
- background: hsl(var(--card));
341
- color: hsl(var(--card-foreground));
342
- }
343
- ```
344
-
345
- 4. **使用 accent 系列实现悬停效果**
346
- ```css
347
- .menu-item {
348
- background: transparent;
349
- }
350
-
351
- .menu-item:hover {
352
- background: hsl(var(--accent));
353
- color: hsl(var(--accent-foreground));
354
- }
355
- ```
356
-
357
- ## 扩展自定义主题
358
-
359
- 如需添加新的主题变体,在对应的 CSS 文件中添加:
360
-
361
- ```css
362
- /* light.css */
363
- [data-theme='my-theme'] {
364
- --primary: 200 100% 50%;
365
- --primary-foreground: 0 0% 100%;
366
- /* ... 其他变量 */
367
- }
269
+ ### 灰度模式
368
270
 
369
- /* dark.css */
370
- .dark[data-theme='my-theme'] {
371
- --primary: 200 80% 40%;
372
- --primary-foreground: 0 0% 100%;
373
- /* ... 其他变量 */
374
- }
271
+ ```html
272
+ <html class="grayscale-mode">
273
+ <body>所有颜色变为灰度</body>
274
+ </html>
375
275
  ```
376
276
 
377
- ---
277
+ ## 浏览器兼容性
378
278
 
379
- ## 构建输出
279
+ - Chrome >= 90
280
+ - Firefox >= 88
281
+ - Safari >= 14
282
+ - Edge >= 90
380
283
 
381
- - `dist/index.js` - ESM 格式(已压缩)
382
- - `dist/index.cjs` - CommonJS 格式(已压缩)
383
- - `dist/index.umd.js` - UMD 格式,用于 CDN(已压缩)
384
- - `dist/index.d.ts` - TypeScript 类型定义
385
- - `dist/style.css` - 合并的样式文件(42.20 kB,gzip: 9.01 kB)
284
+ ## 开发
386
285
 
387
- ## 技术栈
286
+ ```bash
287
+ # 安装依赖
288
+ pnpm install
289
+
290
+ # 开发模式(监听文件变化)
291
+ pnpm dev
388
292
 
389
- - **构建工具**: Vite 7.x
390
- - **样式**: Tailwind CSS v4 + 原生 CSS
391
- - **类型定义**: TypeScript 5.x
293
+ # 构建
294
+ pnpm build
295
+ ```
392
296
 
393
- ## License
297
+ ## 许可证
394
298
 
395
299
  MIT
300
+
301
+ ## 相关链接
302
+
303
+ - [Tailwind CSS v4 文档](https://tailwindcss.com/docs)
304
+ - [BEM 命名规范](http://getbem.com/)
305
+ - [HSL 颜色格式](https://developer.mozilla.org/en-US/docs/Web/CSS/color_value/hsl)