djm-ui 0.72.0 → 0.73.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/CHANGELOG.md +13 -0
- package/README.md +2 -2
- package/dist/djm-ui.cjs +624 -487
- package/dist/djm-ui.cjs.map +3 -3
- package/dist/djm-ui.css +272 -5
- package/dist/djm-ui.esm.js +447 -312
- package/dist/djm-ui.esm.js.map +3 -3
- package/dist/djm-ui.esm.min.js +167 -121
- package/dist/djm-ui.min.cjs +172 -126
- package/dist/djm-ui.min.css +2 -2
- package/dist/djm-ui.umd.js +162 -28
- package/dist/djm-ui.umd.min.js +166 -120
- package/dist/mcp/manifest.json +121 -16
- package/package.json +1 -1
- package/src/components/drawer/index.js +4 -2
- package/src/components/modal/index.js +4 -2
- package/src/components/progress/index.js +72 -3
- package/src/components/spin/index.js +69 -22
- package/src/index.js +2 -1
- package/src/styles/components/feedback.css +46 -0
- package/src/styles/components/glass.css +58 -0
- package/src/styles/components/spin.css +156 -4
- package/src/styles/index.css +1 -0
- package/src/styles/theme-dark.css +3 -0
- package/src/styles/tokens.css +5 -0
- package/src/theme/index.js +22 -0
- package/types/index.d.ts +9 -0
package/dist/djm-ui.css
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! DJM UI v0.
|
|
1
|
+
/*! DJM UI v0.73.0 · MIT · 2026-10-26 */
|
|
2
2
|
|
|
3
3
|
/* ---- tokens.css ---- */
|
|
4
4
|
|
|
@@ -43,6 +43,11 @@
|
|
|
43
43
|
--djm-hover: #eef3f9;
|
|
44
44
|
--djm-brand-soft: #eaf3fd;
|
|
45
45
|
--djm-glass: rgba(248, 250, 253, 0.96);
|
|
46
|
+
/* 毛玻璃:默认关闭,data-djm-glass="on" 或 .djm-glass 时生效 */
|
|
47
|
+
--djm-glass-bg: rgba(255, 255, 255, 0.72);
|
|
48
|
+
--djm-glass-border: rgba(255, 255, 255, 0.6);
|
|
49
|
+
--djm-glass-blur: 16px;
|
|
50
|
+
--djm-glass-shadow: 0 10px 30px -12px rgba(16, 40, 70, 0.28);
|
|
46
51
|
--djm-loading-mask: rgba(255, 255, 255, 0.74);
|
|
47
52
|
--djm-border: #dde6f0;
|
|
48
53
|
--djm-border-strong: #cbd7e5;
|
|
@@ -154,6 +159,9 @@
|
|
|
154
159
|
--djm-hover: #262e38;
|
|
155
160
|
--djm-brand-soft: #1a3049;
|
|
156
161
|
--djm-glass: rgba(20, 25, 31, 0.94);
|
|
162
|
+
--djm-glass-bg: rgba(25, 31, 38, 0.72);
|
|
163
|
+
--djm-glass-border: rgba(255, 255, 255, 0.12);
|
|
164
|
+
--djm-glass-shadow: 0 12px 30px -10px rgba(0, 0, 0, 0.6);
|
|
157
165
|
--djm-loading-mask: rgba(25, 31, 38, 0.78);
|
|
158
166
|
--djm-border: #2b333d;
|
|
159
167
|
--djm-border-strong: #3c4652;
|
|
@@ -3252,12 +3260,19 @@ button.djm-breadcrumb-text {
|
|
|
3252
3260
|
|
|
3253
3261
|
/* DJM UI · 加载中 */
|
|
3254
3262
|
|
|
3263
|
+
.djm-spin {
|
|
3264
|
+
display: inline-flex;
|
|
3265
|
+
align-items: center;
|
|
3266
|
+
color: var(--djm-brand-600);
|
|
3267
|
+
}
|
|
3268
|
+
|
|
3269
|
+
/* 包裹模式:内容上方盖一层遮罩 */
|
|
3255
3270
|
.djm-spin-wrap {
|
|
3256
3271
|
position: relative;
|
|
3272
|
+
display: block;
|
|
3257
3273
|
min-height: 60px;
|
|
3258
3274
|
}
|
|
3259
3275
|
|
|
3260
|
-
/* 遮罩铺满被包裹内容,圆角跟随容器 */
|
|
3261
3276
|
.djm-spin-mask {
|
|
3262
3277
|
position: absolute;
|
|
3263
3278
|
inset: 0;
|
|
@@ -3269,13 +3284,35 @@ button.djm-breadcrumb-text {
|
|
|
3269
3284
|
gap: 8px;
|
|
3270
3285
|
border-radius: inherit;
|
|
3271
3286
|
background: var(--djm-loading-mask);
|
|
3272
|
-
backdrop-filter: blur(
|
|
3287
|
+
-webkit-backdrop-filter: blur(2px);
|
|
3288
|
+
backdrop-filter: blur(2px);
|
|
3289
|
+
}
|
|
3290
|
+
|
|
3291
|
+
/* 内联模式:指示器与文字并排,不铺底 */
|
|
3292
|
+
.djm-spin-inline .djm-spin-mask {
|
|
3293
|
+
position: static;
|
|
3294
|
+
flex-direction: row;
|
|
3295
|
+
gap: 8px;
|
|
3296
|
+
border-radius: 0;
|
|
3297
|
+
background: none;
|
|
3298
|
+
-webkit-backdrop-filter: none;
|
|
3299
|
+
backdrop-filter: none;
|
|
3300
|
+
}
|
|
3301
|
+
|
|
3302
|
+
/* 全屏模式:遮罩铺满视口 */
|
|
3303
|
+
.djm-spin-fullscreen {
|
|
3304
|
+
position: fixed;
|
|
3305
|
+
inset: 0;
|
|
3306
|
+
z-index: var(--djm-z-toast);
|
|
3307
|
+
display: flex;
|
|
3273
3308
|
}
|
|
3274
3309
|
|
|
3275
|
-
.djm-spin-
|
|
3310
|
+
.djm-spin-indicator {
|
|
3276
3311
|
display: inline-flex;
|
|
3277
3312
|
align-items: center;
|
|
3278
|
-
|
|
3313
|
+
justify-content: center;
|
|
3314
|
+
gap: 4px;
|
|
3315
|
+
color: inherit;
|
|
3279
3316
|
}
|
|
3280
3317
|
|
|
3281
3318
|
.djm-spin-tip {
|
|
@@ -3283,6 +3320,8 @@ button.djm-breadcrumb-text {
|
|
|
3283
3320
|
color: var(--djm-text-2);
|
|
3284
3321
|
}
|
|
3285
3322
|
|
|
3323
|
+
/* ---------------- 尺寸 ---------------- */
|
|
3324
|
+
|
|
3286
3325
|
.djm-spin-sm .djm-spinner {
|
|
3287
3326
|
width: 11px;
|
|
3288
3327
|
height: 11px;
|
|
@@ -3295,6 +3334,127 @@ button.djm-breadcrumb-text {
|
|
|
3295
3334
|
border-width: 2.5px;
|
|
3296
3335
|
}
|
|
3297
3336
|
|
|
3337
|
+
/* ---------------- 形态 ---------------- */
|
|
3338
|
+
|
|
3339
|
+
/* 环形:颜色跟随 color 属性 */
|
|
3340
|
+
.djm-spin-ring .djm-spinner {
|
|
3341
|
+
border-top-color: currentColor;
|
|
3342
|
+
}
|
|
3343
|
+
|
|
3344
|
+
/* 点状:三点依次弹起 */
|
|
3345
|
+
.djm-spin-dots i {
|
|
3346
|
+
width: 6px;
|
|
3347
|
+
height: 6px;
|
|
3348
|
+
border-radius: 50%;
|
|
3349
|
+
background: currentColor;
|
|
3350
|
+
animation: djm-spin-dot 1s ease-in-out infinite;
|
|
3351
|
+
}
|
|
3352
|
+
|
|
3353
|
+
.djm-spin-dots i:nth-child(2) {
|
|
3354
|
+
animation-delay: 0.15s;
|
|
3355
|
+
}
|
|
3356
|
+
|
|
3357
|
+
.djm-spin-dots i:nth-child(3) {
|
|
3358
|
+
animation-delay: 0.3s;
|
|
3359
|
+
}
|
|
3360
|
+
|
|
3361
|
+
.djm-spin-sm .djm-spin-dots i {
|
|
3362
|
+
width: 4px;
|
|
3363
|
+
height: 4px;
|
|
3364
|
+
}
|
|
3365
|
+
|
|
3366
|
+
.djm-spin-lg .djm-spin-dots i {
|
|
3367
|
+
width: 8px;
|
|
3368
|
+
height: 8px;
|
|
3369
|
+
}
|
|
3370
|
+
|
|
3371
|
+
@keyframes djm-spin-dot {
|
|
3372
|
+
0%,
|
|
3373
|
+
80%,
|
|
3374
|
+
100% {
|
|
3375
|
+
transform: scale(0.55);
|
|
3376
|
+
opacity: 0.45;
|
|
3377
|
+
}
|
|
3378
|
+
40% {
|
|
3379
|
+
transform: scale(1);
|
|
3380
|
+
opacity: 1;
|
|
3381
|
+
}
|
|
3382
|
+
}
|
|
3383
|
+
|
|
3384
|
+
/* 柱状:四根竖条错峰伸缩 */
|
|
3385
|
+
.djm-spin-bars i {
|
|
3386
|
+
width: 3px;
|
|
3387
|
+
height: 14px;
|
|
3388
|
+
border-radius: 2px;
|
|
3389
|
+
background: currentColor;
|
|
3390
|
+
animation: djm-spin-bar 1s ease-in-out infinite;
|
|
3391
|
+
}
|
|
3392
|
+
|
|
3393
|
+
.djm-spin-bars i:nth-child(2) {
|
|
3394
|
+
animation-delay: 0.12s;
|
|
3395
|
+
}
|
|
3396
|
+
|
|
3397
|
+
.djm-spin-bars i:nth-child(3) {
|
|
3398
|
+
animation-delay: 0.24s;
|
|
3399
|
+
}
|
|
3400
|
+
|
|
3401
|
+
.djm-spin-bars i:nth-child(4) {
|
|
3402
|
+
animation-delay: 0.36s;
|
|
3403
|
+
}
|
|
3404
|
+
|
|
3405
|
+
.djm-spin-sm .djm-spin-bars i {
|
|
3406
|
+
width: 2.5px;
|
|
3407
|
+
height: 10px;
|
|
3408
|
+
}
|
|
3409
|
+
|
|
3410
|
+
.djm-spin-lg .djm-spin-bars i {
|
|
3411
|
+
width: 4px;
|
|
3412
|
+
height: 18px;
|
|
3413
|
+
}
|
|
3414
|
+
|
|
3415
|
+
@keyframes djm-spin-bar {
|
|
3416
|
+
0%,
|
|
3417
|
+
100% {
|
|
3418
|
+
transform: scaleY(0.45);
|
|
3419
|
+
opacity: 0.5;
|
|
3420
|
+
}
|
|
3421
|
+
50% {
|
|
3422
|
+
transform: scaleY(1);
|
|
3423
|
+
opacity: 1;
|
|
3424
|
+
}
|
|
3425
|
+
}
|
|
3426
|
+
|
|
3427
|
+
/* 脉冲:实心圆呼吸 */
|
|
3428
|
+
.djm-spin-pulse .djm-spin-core {
|
|
3429
|
+
width: 16px;
|
|
3430
|
+
height: 16px;
|
|
3431
|
+
border-radius: 50%;
|
|
3432
|
+
background: currentColor;
|
|
3433
|
+
animation: djm-spin-pulse 1.2s ease-in-out infinite;
|
|
3434
|
+
}
|
|
3435
|
+
|
|
3436
|
+
.djm-spin-sm .djm-spin-pulse .djm-spin-core {
|
|
3437
|
+
width: 12px;
|
|
3438
|
+
height: 12px;
|
|
3439
|
+
}
|
|
3440
|
+
|
|
3441
|
+
.djm-spin-lg .djm-spin-pulse .djm-spin-core {
|
|
3442
|
+
width: 22px;
|
|
3443
|
+
height: 22px;
|
|
3444
|
+
}
|
|
3445
|
+
|
|
3446
|
+
@keyframes djm-spin-pulse {
|
|
3447
|
+
0%,
|
|
3448
|
+
100% {
|
|
3449
|
+
transform: scale(0.65);
|
|
3450
|
+
opacity: 0.45;
|
|
3451
|
+
}
|
|
3452
|
+
50% {
|
|
3453
|
+
transform: scale(1);
|
|
3454
|
+
opacity: 1;
|
|
3455
|
+
}
|
|
3456
|
+
}
|
|
3457
|
+
|
|
3298
3458
|
/* ---- components/popconfirm.css ---- */
|
|
3299
3459
|
|
|
3300
3460
|
/* DJM UI · 气泡确认 */
|
|
@@ -5971,6 +6131,52 @@ input[type="date"] {
|
|
|
5971
6131
|
background: var(--djm-amber);
|
|
5972
6132
|
}
|
|
5973
6133
|
|
|
6134
|
+
/* 环形进度:SVG 逆时针起点在顶部,进度用 dashoffset 控制 */
|
|
6135
|
+
.djm-progress-circle {
|
|
6136
|
+
position: relative;
|
|
6137
|
+
display: inline-flex;
|
|
6138
|
+
align-items: center;
|
|
6139
|
+
justify-content: center;
|
|
6140
|
+
}
|
|
6141
|
+
|
|
6142
|
+
.djm-progress-circle svg {
|
|
6143
|
+
width: 100%;
|
|
6144
|
+
height: 100%;
|
|
6145
|
+
transform: rotate(-90deg);
|
|
6146
|
+
}
|
|
6147
|
+
|
|
6148
|
+
.djm-progress-circle-track {
|
|
6149
|
+
stroke: var(--djm-border);
|
|
6150
|
+
}
|
|
6151
|
+
|
|
6152
|
+
.djm-progress-circle-bar {
|
|
6153
|
+
stroke: var(--djm-brand-600);
|
|
6154
|
+
transition: stroke-dashoffset 0.3s;
|
|
6155
|
+
}
|
|
6156
|
+
|
|
6157
|
+
.djm-progress-circle.djm-is-success .djm-progress-circle-bar {
|
|
6158
|
+
stroke: var(--djm-green-strong);
|
|
6159
|
+
}
|
|
6160
|
+
|
|
6161
|
+
.djm-progress-circle.djm-is-error .djm-progress-circle-bar {
|
|
6162
|
+
stroke: var(--djm-red-strong);
|
|
6163
|
+
}
|
|
6164
|
+
|
|
6165
|
+
.djm-progress-circle.djm-is-warning .djm-progress-circle-bar {
|
|
6166
|
+
stroke: var(--djm-amber);
|
|
6167
|
+
}
|
|
6168
|
+
|
|
6169
|
+
.djm-progress-circle-label {
|
|
6170
|
+
position: absolute;
|
|
6171
|
+
inset: 0;
|
|
6172
|
+
display: flex;
|
|
6173
|
+
align-items: center;
|
|
6174
|
+
justify-content: center;
|
|
6175
|
+
color: var(--djm-text);
|
|
6176
|
+
font-weight: 600;
|
|
6177
|
+
font-variant-numeric: tabular-nums;
|
|
6178
|
+
}
|
|
6179
|
+
|
|
5974
6180
|
/* 骨架屏组件:头像 + 正文的行结构 */
|
|
5975
6181
|
.djm-skeleton-block {
|
|
5976
6182
|
display: flex;
|
|
@@ -12550,3 +12756,64 @@ input[type="date"] {
|
|
|
12550
12756
|
color: var(--djm-green);
|
|
12551
12757
|
font-size: 10px;
|
|
12552
12758
|
}
|
|
12759
|
+
|
|
12760
|
+
/* ---- components/glass.css ---- */
|
|
12761
|
+
|
|
12762
|
+
/* DJM UI · 毛玻璃 */
|
|
12763
|
+
|
|
12764
|
+
/* 工具类:直接加在任意容器上 */
|
|
12765
|
+
.djm-glass {
|
|
12766
|
+
background: var(--djm-glass-bg);
|
|
12767
|
+
border: 1px solid var(--djm-glass-border);
|
|
12768
|
+
box-shadow: var(--djm-glass-shadow);
|
|
12769
|
+
-webkit-backdrop-filter: blur(var(--djm-glass-blur)) saturate(1.4);
|
|
12770
|
+
backdrop-filter: blur(var(--djm-glass-blur)) saturate(1.4);
|
|
12771
|
+
}
|
|
12772
|
+
|
|
12773
|
+
/* 模糊半径两档 */
|
|
12774
|
+
.djm-glass-strong {
|
|
12775
|
+
--djm-glass-blur: 26px;
|
|
12776
|
+
}
|
|
12777
|
+
|
|
12778
|
+
.djm-glass-soft {
|
|
12779
|
+
--djm-glass-blur: 8px;
|
|
12780
|
+
}
|
|
12781
|
+
|
|
12782
|
+
/* 组件级开关:Modal / Drawer 的 glass 属性 */
|
|
12783
|
+
.djm-modal.djm-is-glass,
|
|
12784
|
+
.djm-drawer.djm-is-glass {
|
|
12785
|
+
background: var(--djm-glass-bg);
|
|
12786
|
+
border: 1px solid var(--djm-glass-border);
|
|
12787
|
+
box-shadow: var(--djm-glass-shadow);
|
|
12788
|
+
-webkit-backdrop-filter: blur(var(--djm-glass-blur)) saturate(1.4);
|
|
12789
|
+
backdrop-filter: blur(var(--djm-glass-blur)) saturate(1.4);
|
|
12790
|
+
}
|
|
12791
|
+
|
|
12792
|
+
/* 全局开关:弹窗、抽屉、浮层、面板与卡片 */
|
|
12793
|
+
:root[data-djm-glass='on'] .djm-modal,
|
|
12794
|
+
:root[data-djm-glass='on'] .djm-drawer,
|
|
12795
|
+
:root[data-djm-glass='on'] .djm-popover-panel,
|
|
12796
|
+
:root[data-djm-glass='on'] .djm-dropdown-menu,
|
|
12797
|
+
:root[data-djm-glass='on'] .djm-panel,
|
|
12798
|
+
:root[data-djm-glass='on'] .djm-card {
|
|
12799
|
+
background: var(--djm-glass-bg);
|
|
12800
|
+
border-color: var(--djm-glass-border);
|
|
12801
|
+
box-shadow: var(--djm-glass-shadow);
|
|
12802
|
+
-webkit-backdrop-filter: blur(var(--djm-glass-blur)) saturate(1.4);
|
|
12803
|
+
backdrop-filter: blur(var(--djm-glass-blur)) saturate(1.4);
|
|
12804
|
+
}
|
|
12805
|
+
|
|
12806
|
+
/* 浏览器不支持 backdrop-filter 时退回实心底,保证内容可读 */
|
|
12807
|
+
@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
|
|
12808
|
+
.djm-glass,
|
|
12809
|
+
.djm-modal.djm-is-glass,
|
|
12810
|
+
.djm-drawer.djm-is-glass,
|
|
12811
|
+
:root[data-djm-glass='on'] .djm-modal,
|
|
12812
|
+
:root[data-djm-glass='on'] .djm-drawer,
|
|
12813
|
+
:root[data-djm-glass='on'] .djm-popover-panel,
|
|
12814
|
+
:root[data-djm-glass='on'] .djm-dropdown-menu,
|
|
12815
|
+
:root[data-djm-glass='on'] .djm-panel,
|
|
12816
|
+
:root[data-djm-glass='on'] .djm-card {
|
|
12817
|
+
background: var(--djm-surface);
|
|
12818
|
+
}
|
|
12819
|
+
}
|