djm-ui 0.67.4 → 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.
Files changed (46) hide show
  1. package/CHANGELOG.md +116 -0
  2. package/README.md +38 -2
  3. package/dist/djm-ui.cjs +1625 -803
  4. package/dist/djm-ui.cjs.map +4 -4
  5. package/dist/djm-ui.css +1043 -41
  6. package/dist/djm-ui.esm.js +1581 -761
  7. package/dist/djm-ui.esm.js.map +4 -4
  8. package/dist/djm-ui.esm.min.js +439 -247
  9. package/dist/djm-ui.min.cjs +439 -247
  10. package/dist/djm-ui.min.css +2 -2
  11. package/dist/djm-ui.umd.js +1104 -285
  12. package/dist/djm-ui.umd.min.js +439 -247
  13. package/dist/mcp/manifest.json +12300 -0
  14. package/dist/mcp/server.js +90 -0
  15. package/package.json +12 -4
  16. package/src/components/drawer/index.js +4 -2
  17. package/src/components/icon/index.js +13 -1
  18. package/src/components/modal/index.js +4 -2
  19. package/src/components/progress/index.js +72 -3
  20. package/src/components/rich-editor/index.js +724 -61
  21. package/src/components/spin/index.js +69 -22
  22. package/src/index.js +2 -1
  23. package/src/locale/en-US.js +33 -1
  24. package/src/locale/zh-CN.js +33 -1
  25. package/src/styles/base.css +2 -3
  26. package/src/styles/components/button.css +2 -1
  27. package/src/styles/components/console.css +5 -0
  28. package/src/styles/components/content.css +517 -0
  29. package/src/styles/components/feedback.css +46 -0
  30. package/src/styles/components/form.css +5 -0
  31. package/src/styles/components/glass.css +58 -0
  32. package/src/styles/components/layout.css +326 -0
  33. package/src/styles/components/media-picker.css +3 -3
  34. package/src/styles/components/menu.css +2 -1
  35. package/src/styles/components/org-picker.css +1 -1
  36. package/src/styles/components/responsive.css +86 -0
  37. package/src/styles/components/rich-editor.css +206 -7
  38. package/src/styles/components/skin.css +54 -0
  39. package/src/styles/components/spin.css +156 -4
  40. package/src/styles/components/template.css +5 -0
  41. package/src/styles/index.css +2 -0
  42. package/src/styles/theme-dark.css +5 -0
  43. package/src/styles/tokens.css +13 -0
  44. package/src/theme/index.js +62 -0
  45. package/src/utils/sanitize-html.js +44 -6
  46. package/types/index.d.ts +17 -0
package/dist/djm-ui.css CHANGED
@@ -1,4 +1,4 @@
1
- /*! DJM UI v0.67.4 · MIT · 2026-10-26 */
1
+ /*! DJM UI v0.73.0 · MIT · 2026-10-26 */
2
2
 
3
3
  /* ---- tokens.css ---- */
4
4
 
@@ -19,6 +19,11 @@
19
19
  :root {
20
20
  color-scheme: light;
21
21
 
22
+ /* 字体族:宿主页面可通过覆盖这两个变量统一换字体 */
23
+ --djm-font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC",
24
+ "Hiragino Sans GB", "Microsoft YaHei", sans-serif;
25
+ --djm-font-mono: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
26
+
22
27
  --djm-brand-50: #eef6fe;
23
28
  --djm-brand-100: #dcebfb;
24
29
  --djm-brand-200: #b9d7f6;
@@ -38,6 +43,11 @@
38
43
  --djm-hover: #eef3f9;
39
44
  --djm-brand-soft: #eaf3fd;
40
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);
41
51
  --djm-loading-mask: rgba(255, 255, 255, 0.74);
42
52
  --djm-border: #dde6f0;
43
53
  --djm-border-strong: #cbd7e5;
@@ -70,6 +80,9 @@
70
80
  /* 彩色底上的文字(两主题均为白色) */
71
81
  --djm-text-inverse: #fff;
72
82
 
83
+ /* 文字提示的深底:暗色主题改用略亮的灰,避免和页面背景糊在一起 */
84
+ --djm-tooltip-bg: #1f2a37;
85
+
73
86
  /* 盖在图片等媒体内容上的蒙层,不随主题变化 */
74
87
  --djm-media-mask: rgba(9, 20, 33, 0.55);
75
88
 
@@ -146,6 +159,9 @@
146
159
  --djm-hover: #262e38;
147
160
  --djm-brand-soft: #1a3049;
148
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);
149
165
  --djm-loading-mask: rgba(25, 31, 38, 0.78);
150
166
  --djm-border: #2b333d;
151
167
  --djm-border-strong: #3c4652;
@@ -155,6 +171,8 @@
155
171
  --djm-text-side: #c2ccd8;
156
172
  --djm-text-2: #a6b2c0;
157
173
  --djm-text-3: #8492a1;
174
+ /* 暗色下提示框比页面背景亮一档,白字仍有足够对比 */
175
+ --djm-tooltip-bg: #3a4652;
158
176
  /* 暗色下水印改用浅色,保持可辨识 */
159
177
  --djm-watermark: rgba(232, 237, 243, 0.12);
160
178
 
@@ -211,8 +229,7 @@ body {
211
229
  body {
212
230
  background: var(--djm-bg);
213
231
  color: var(--djm-text);
214
- font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC",
215
- "Hiragino Sans GB", "Microsoft YaHei", sans-serif;
232
+ font-family: var(--djm-font-sans);
216
233
  font-size: 13px;
217
234
  line-height: 1.5;
218
235
  -webkit-font-smoothing: antialiased;
@@ -293,7 +310,7 @@ a {
293
310
  }
294
311
 
295
312
  .djm-mono {
296
- font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
313
+ font-family: var(--djm-font-mono);
297
314
  font-size: 11.5px;
298
315
  font-variant-numeric: tabular-nums;
299
316
  }
@@ -2120,7 +2137,8 @@ button.djm-breadcrumb-text {
2120
2137
  height: 16px;
2121
2138
  padding: 0 4px;
2122
2139
  border-radius: 8px;
2123
- background: var(--djm-red);
2140
+ /* 红点底色用实色档,暗色主题下白字才够清楚 */
2141
+ background: var(--djm-red-strong);
2124
2142
  color: var(--djm-text-inverse);
2125
2143
  font-size: 10px;
2126
2144
  font-style: normal;
@@ -3242,12 +3260,19 @@ button.djm-breadcrumb-text {
3242
3260
 
3243
3261
  /* DJM UI · 加载中 */
3244
3262
 
3263
+ .djm-spin {
3264
+ display: inline-flex;
3265
+ align-items: center;
3266
+ color: var(--djm-brand-600);
3267
+ }
3268
+
3269
+ /* 包裹模式:内容上方盖一层遮罩 */
3245
3270
  .djm-spin-wrap {
3246
3271
  position: relative;
3272
+ display: block;
3247
3273
  min-height: 60px;
3248
3274
  }
3249
3275
 
3250
- /* 遮罩铺满被包裹内容,圆角跟随容器 */
3251
3276
  .djm-spin-mask {
3252
3277
  position: absolute;
3253
3278
  inset: 0;
@@ -3259,13 +3284,35 @@ button.djm-breadcrumb-text {
3259
3284
  gap: 8px;
3260
3285
  border-radius: inherit;
3261
3286
  background: var(--djm-loading-mask);
3262
- backdrop-filter: blur(1px);
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;
3263
3308
  }
3264
3309
 
3265
- .djm-spin-inline {
3310
+ .djm-spin-indicator {
3266
3311
  display: inline-flex;
3267
3312
  align-items: center;
3268
- gap: 8px;
3313
+ justify-content: center;
3314
+ gap: 4px;
3315
+ color: inherit;
3269
3316
  }
3270
3317
 
3271
3318
  .djm-spin-tip {
@@ -3273,6 +3320,8 @@ button.djm-breadcrumb-text {
3273
3320
  color: var(--djm-text-2);
3274
3321
  }
3275
3322
 
3323
+ /* ---------------- 尺寸 ---------------- */
3324
+
3276
3325
  .djm-spin-sm .djm-spinner {
3277
3326
  width: 11px;
3278
3327
  height: 11px;
@@ -3285,6 +3334,127 @@ button.djm-breadcrumb-text {
3285
3334
  border-width: 2.5px;
3286
3335
  }
3287
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
+
3288
3458
  /* ---- components/popconfirm.css ---- */
3289
3459
 
3290
3460
  /* DJM UI · 气泡确认 */
@@ -3484,7 +3654,8 @@ button.djm-breadcrumb-text {
3484
3654
  background: none;
3485
3655
  padding: 0;
3486
3656
  font-size: 12px;
3487
- color: var(--djm-brand-600);
3657
+ /* 品牌深色档:浅色底与暗色底都能过 4.5:1 */
3658
+ color: var(--djm-brand-700);
3488
3659
  white-space: nowrap;
3489
3660
  }
3490
3661
 
@@ -4015,6 +4186,11 @@ input[type="date"] {
4015
4186
  font-size: 11.5px;
4016
4187
  margin-right: 2px;
4017
4188
  }
4189
+
4190
+ /* 表格工具栏的操作提示:选中行后自动隐藏 */
4191
+ .djm-toolbar-tip {
4192
+ font-size: 11.5px;
4193
+ }
4018
4194
  /* ---------------- 表单 ---------------- */
4019
4195
 
4020
4196
  .djm-form-grid {
@@ -5955,6 +6131,52 @@ input[type="date"] {
5955
6131
  background: var(--djm-amber);
5956
6132
  }
5957
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
+
5958
6180
  /* 骨架屏组件:头像 + 正文的行结构 */
5959
6181
  .djm-skeleton-block {
5960
6182
  display: flex;
@@ -6704,6 +6926,8 @@ input[type="date"] {
6704
6926
  /* ---------------- 富文本编辑器 ---------------- */
6705
6927
 
6706
6928
  .djm-rich-editor {
6929
+ display: flex;
6930
+ flex-direction: column;
6707
6931
  border: 1px solid var(--djm-border-strong);
6708
6932
  border-radius: 4px;
6709
6933
  overflow: hidden;
@@ -6715,11 +6939,26 @@ input[type="date"] {
6715
6939
  box-shadow: var(--djm-ring);
6716
6940
  }
6717
6941
 
6942
+ /* 全屏:铺满视口,内容区自己滚动 */
6943
+ .djm-rich-editor.djm-is-fullscreen {
6944
+ position: fixed;
6945
+ inset: 0;
6946
+ z-index: 1200;
6947
+ border: 0;
6948
+ border-radius: 0;
6949
+ }
6950
+
6951
+ .djm-rich-editor.djm-is-fullscreen .djm-rich-editor-content,
6952
+ .djm-rich-editor.djm-is-fullscreen .djm-rich-editor-source {
6953
+ flex: 1;
6954
+ max-height: none;
6955
+ }
6956
+
6718
6957
  .djm-rich-editor-toolbar {
6719
6958
  display: flex;
6720
6959
  align-items: center;
6721
6960
  flex-wrap: wrap;
6722
- gap: 4px;
6961
+ gap: 2px;
6723
6962
  padding: 5px 6px;
6724
6963
  border-bottom: 1px solid var(--djm-border);
6725
6964
  background: var(--djm-surface-2);
@@ -6727,9 +6966,9 @@ input[type="date"] {
6727
6966
 
6728
6967
  .djm-rich-editor-group {
6729
6968
  display: flex;
6730
- gap: 2px;
6731
- padding-right: 5px;
6732
- margin-right: 3px;
6969
+ gap: 1px;
6970
+ padding-right: 4px;
6971
+ margin-right: 2px;
6733
6972
  border-right: 1px solid var(--djm-border);
6734
6973
  }
6735
6974
 
@@ -6737,10 +6976,92 @@ input[type="date"] {
6737
6976
  border-right: 0;
6738
6977
  }
6739
6978
 
6979
+ /* 段落格式 / 字号下拉 */
6980
+ .djm-rich-editor-select {
6981
+ height: 26px;
6982
+ padding: 0 2px;
6983
+ border: 1px solid var(--djm-border);
6984
+ border-radius: 3px;
6985
+ background: var(--djm-surface);
6986
+ color: var(--djm-text-2);
6987
+ font: inherit;
6988
+ font-size: 11.5px;
6989
+ cursor: pointer;
6990
+ }
6991
+
6992
+ .djm-rich-editor-select-size {
6993
+ width: 64px;
6994
+ }
6995
+
6996
+ .djm-rich-editor-select:focus-visible {
6997
+ outline: 2px solid var(--djm-brand-500);
6998
+ outline-offset: -1px;
6999
+ }
7000
+
7001
+ .djm-rich-editor-select:disabled {
7002
+ opacity: 0.5;
7003
+ cursor: not-allowed;
7004
+ }
7005
+
7006
+ /* 颜色按钮:字母底部带当前色,背景色按钮直接把颜色铺在字母上 */
7007
+ .djm-rich-editor-color {
7008
+ position: relative;
7009
+ }
7010
+
7011
+ .djm-rich-editor-letter {
7012
+ display: inline-block;
7013
+ padding-bottom: 1px;
7014
+ border-bottom: 2px solid var(--djm-text);
7015
+ font-size: 12px;
7016
+ font-weight: 600;
7017
+ line-height: 1;
7018
+ }
7019
+
7020
+ .djm-rich-editor-letter-bg {
7021
+ padding: 0 3px;
7022
+ border-bottom: 0;
7023
+ border-radius: 2px;
7024
+ color: var(--djm-text);
7025
+ }
7026
+
7027
+ .djm-rich-editor-panel {
7028
+ position: absolute;
7029
+ top: calc(100% + 4px);
7030
+ left: 0;
7031
+ z-index: 5;
7032
+ display: grid;
7033
+ grid-template-columns: repeat(4, 20px);
7034
+ gap: 4px;
7035
+ padding: 6px;
7036
+ border: 1px solid var(--djm-border);
7037
+ border-radius: 6px;
7038
+ background: var(--djm-surface);
7039
+ box-shadow: var(--djm-shadow-md);
7040
+ }
7041
+
7042
+ .djm-rich-editor-swatch {
7043
+ width: 20px;
7044
+ height: 20px;
7045
+ padding: 0;
7046
+ border: 1px solid var(--djm-border);
7047
+ border-radius: 4px;
7048
+ cursor: pointer;
7049
+ }
7050
+
7051
+ .djm-rich-editor-swatch:hover {
7052
+ border-color: var(--djm-brand-500);
7053
+ }
7054
+
7055
+ /* 素材库按钮:媒体选择器默认是块级 span,塞进工具栏里要收成行内 */
7056
+ .djm-rich-editor-picker {
7057
+ display: inline-flex;
7058
+ align-items: center;
7059
+ }
7060
+
6740
7061
  .djm-rich-editor-btn {
6741
- min-width: 26px;
7062
+ min-width: 24px;
6742
7063
  height: 26px;
6743
- padding: 0 6px;
7064
+ padding: 0 4px;
6744
7065
  display: inline-flex;
6745
7066
  align-items: center;
6746
7067
  justify-content: center;
@@ -6823,42 +7144,142 @@ input[type="date"] {
6823
7144
  color: var(--djm-text-3);
6824
7145
  }
6825
7146
 
6826
- .djm-rich-editor-content h2 {
7147
+ .djm-rich-editor-content h1,
7148
+ .djm-rich-editor-content h2,
7149
+ .djm-rich-editor-content h3 {
6827
7150
  margin: 0 0 8px;
6828
- font-size: 16px;
7151
+ color: var(--djm-text);
7152
+ line-height: 1.5;
6829
7153
  }
6830
7154
 
6831
- .djm-rich-editor-content p {
6832
- margin: 0 0 8px;
7155
+ .djm-rich-editor-content h1 {
7156
+ font-size: 20px;
6833
7157
  }
6834
7158
 
6835
- .djm-rich-editor-content ul,
6836
- .djm-rich-editor-content ol {
6837
- margin: 0 0 8px;
6838
- padding-left: 22px;
7159
+ .djm-rich-editor-content h2 {
7160
+ font-size: 16px;
6839
7161
  }
6840
7162
 
6841
- .djm-rich-editor-content a {
6842
- color: var(--djm-brand-600);
6843
- text-decoration: underline;
7163
+ .djm-rich-editor-content h3 {
7164
+ font-size: 14px;
6844
7165
  }
6845
7166
 
6846
- .djm-rich-editor-source {
6847
- width: 100%;
6848
- padding: 12px 14px;
6849
- border: 0;
6850
- outline: none;
6851
- resize: vertical;
7167
+ .djm-rich-editor-content blockquote {
7168
+ margin: 0 0 8px;
7169
+ padding: 4px 10px;
7170
+ border-left: 3px solid var(--djm-brand-500);
7171
+ background: var(--djm-surface-2);
6852
7172
  color: var(--djm-text-2);
7173
+ }
7174
+
7175
+ .djm-rich-editor-content pre {
7176
+ margin: 0 0 8px;
7177
+ padding: 10px 12px;
7178
+ overflow: auto;
7179
+ border-radius: 4px;
7180
+ background: var(--djm-surface-3);
6853
7181
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
6854
7182
  font-size: 12px;
6855
7183
  line-height: 1.7;
7184
+ white-space: pre-wrap;
7185
+ word-break: break-word;
6856
7186
  }
6857
7187
 
6858
- .djm-editor-bar {
6859
- display: flex;
6860
- align-items: center;
6861
- justify-content: space-between;
7188
+ .djm-rich-editor-content code {
7189
+ padding: 1px 4px;
7190
+ border-radius: 3px;
7191
+ background: var(--djm-surface-3);
7192
+ color: var(--djm-brand-700);
7193
+ font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
7194
+ font-size: 12px;
7195
+ }
7196
+
7197
+ .djm-rich-editor-content pre code {
7198
+ padding: 0;
7199
+ background: none;
7200
+ color: inherit;
7201
+ }
7202
+
7203
+ .djm-rich-editor-content hr {
7204
+ margin: 12px 0;
7205
+ border: 0;
7206
+ border-top: 1px solid var(--djm-border);
7207
+ }
7208
+
7209
+ /* 图片:单图、多图统一限宽,避免撑破内容区 */
7210
+ .djm-rich-editor-content img {
7211
+ max-width: 100%;
7212
+ height: auto;
7213
+ border-radius: 4px;
7214
+ vertical-align: bottom;
7215
+ }
7216
+
7217
+ /* 上传插入的图片之间留一点间距,多图并排时不粘在一起 */
7218
+ .djm-rich-editor-img {
7219
+ margin: 2px 4px 2px 0;
7220
+ }
7221
+
7222
+ /* 上传中的占位块,上传完成后被图片替换 */
7223
+ .djm-rich-editor-uploading {
7224
+ display: inline-flex;
7225
+ align-items: center;
7226
+ padding: 4px 10px;
7227
+ border: 1px dashed var(--djm-border-strong);
7228
+ border-radius: 4px;
7229
+ background: var(--djm-surface-2);
7230
+ color: var(--djm-text-3);
7231
+ font-size: 12px;
7232
+ }
7233
+
7234
+ .djm-rich-editor-content p {
7235
+ margin: 0 0 8px;
7236
+ }
7237
+
7238
+ .djm-rich-editor-content ul,
7239
+ .djm-rich-editor-content ol {
7240
+ margin: 0 0 8px;
7241
+ padding-left: 22px;
7242
+ }
7243
+
7244
+ .djm-rich-editor-content a {
7245
+ color: var(--djm-brand-600);
7246
+ text-decoration: underline;
7247
+ }
7248
+
7249
+ .djm-rich-editor-source {
7250
+ width: 100%;
7251
+ padding: 12px 14px;
7252
+ border: 0;
7253
+ outline: none;
7254
+ resize: vertical;
7255
+ color: var(--djm-text-2);
7256
+ font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
7257
+ font-size: 12px;
7258
+ line-height: 1.7;
7259
+ }
7260
+
7261
+ /* 底部状态:上传提示与字数 */
7262
+ .djm-rich-editor-foot {
7263
+ display: flex;
7264
+ align-items: center;
7265
+ justify-content: flex-end;
7266
+ gap: 12px;
7267
+ padding: 4px 12px;
7268
+ border-top: 1px solid var(--djm-border);
7269
+ background: var(--djm-surface-2);
7270
+ color: var(--djm-text-3);
7271
+ font-size: 11px;
7272
+ }
7273
+
7274
+ /* 文件选择框只作为上传入口,不显示 */
7275
+ .djm-rich-editor-file {
7276
+ display: none;
7277
+ }
7278
+
7279
+ .djm-editor-bar {
7280
+ display: flex;
7281
+ align-items: center;
7282
+ justify-content: space-between;
6862
7283
  gap: 12px;
6863
7284
  flex-wrap: wrap;
6864
7285
  margin-top: 12px;
@@ -7611,7 +8032,7 @@ input[type="date"] {
7611
8032
  /* 打开在弹窗 / 抽屉里时也要压在遮罩之上 */
7612
8033
  z-index: var(--djm-z-popper, 1450);
7613
8034
  border: 1px solid var(--djm-border);
7614
- border-radius: var(--djm-radius-md, 4px);
8035
+ border-radius: var(--djm-radius);
7615
8036
  background: var(--djm-surface);
7616
8037
  box-shadow: var(--djm-shadow-md, 0 6px 20px rgba(0, 0, 0, 0.12));
7617
8038
  }
@@ -8232,7 +8653,7 @@ input[type="date"] {
8232
8653
  padding: 0 10px;
8233
8654
  height: 30px;
8234
8655
  border: 1px solid var(--djm-border);
8235
- border-radius: var(--djm-radius-md, 4px);
8656
+ border-radius: var(--djm-radius);
8236
8657
  background: var(--djm-surface);
8237
8658
  color: var(--djm-text-3);
8238
8659
  }
@@ -8265,14 +8686,14 @@ input[type="date"] {
8265
8686
 
8266
8687
  .djm-media-item {
8267
8688
  border: 1px solid var(--djm-border);
8268
- border-radius: var(--djm-radius-md, 4px);
8689
+ border-radius: var(--djm-radius);
8269
8690
  overflow: hidden;
8270
8691
  cursor: pointer;
8271
8692
  background: var(--djm-surface);
8272
8693
  }
8273
8694
 
8274
8695
  .djm-media-item:hover {
8275
- border-color: var(--djm-brand-400, #79a9d6);
8696
+ border-color: var(--djm-brand-500);
8276
8697
  }
8277
8698
 
8278
8699
  .djm-media-item:focus-visible {
@@ -8356,6 +8777,526 @@ input[type="date"] {
8356
8777
  font-style: normal;
8357
8778
  }
8358
8779
 
8780
+ /* ---- components/content.css ---- */
8781
+
8782
+ /* DJM UI · 内容管理:文件管理器 / 图片相册 */
8783
+
8784
+ /* ---------------- 文件管理器 ---------------- */
8785
+
8786
+ .djm-fm {
8787
+ display: grid;
8788
+ grid-template-columns: 208px minmax(0, 1fr);
8789
+ border: 1px solid var(--djm-border);
8790
+ border-radius: var(--djm-radius-lg);
8791
+ overflow: hidden;
8792
+ background: var(--djm-surface);
8793
+ }
8794
+
8795
+ .djm-fm-side {
8796
+ display: flex;
8797
+ flex-direction: column;
8798
+ gap: 2px;
8799
+ padding: 10px;
8800
+ border-right: 1px solid var(--djm-border);
8801
+ background: var(--djm-surface-2);
8802
+ }
8803
+
8804
+ .djm-fm-side-title {
8805
+ padding: 4px 8px 8px;
8806
+ color: var(--djm-text-3);
8807
+ font-size: 10.5px;
8808
+ letter-spacing: 0.5px;
8809
+ }
8810
+
8811
+ .djm-fm-folder {
8812
+ display: flex;
8813
+ align-items: center;
8814
+ gap: 8px;
8815
+ height: 32px;
8816
+ padding: 0 8px;
8817
+ border: 0;
8818
+ border-radius: 4px;
8819
+ background: none;
8820
+ color: var(--djm-text-2);
8821
+ font-size: 12.5px;
8822
+ text-align: left;
8823
+ cursor: pointer;
8824
+ }
8825
+
8826
+ .djm-fm-folder:hover {
8827
+ background: var(--djm-brand-soft);
8828
+ color: var(--djm-brand-700);
8829
+ }
8830
+
8831
+ .djm-fm-folder.djm-is-active {
8832
+ background: var(--djm-brand-50);
8833
+ color: var(--djm-brand-700);
8834
+ font-weight: 600;
8835
+ }
8836
+
8837
+ .djm-fm-folder-count {
8838
+ margin-left: auto;
8839
+ color: var(--djm-text-3);
8840
+ font-size: 10.5px;
8841
+ }
8842
+
8843
+ .djm-fm-storage {
8844
+ margin-top: auto;
8845
+ padding: 12px 8px 4px;
8846
+ border-top: 1px solid var(--djm-border);
8847
+ color: var(--djm-text-3);
8848
+ font-size: 11px;
8849
+ }
8850
+
8851
+ .djm-fm-storage-head {
8852
+ display: flex;
8853
+ justify-content: space-between;
8854
+ gap: 6px;
8855
+ margin-bottom: 6px;
8856
+ color: var(--djm-text-2);
8857
+ }
8858
+
8859
+ .djm-fm-bar {
8860
+ height: 5px;
8861
+ overflow: hidden;
8862
+ border-radius: 3px;
8863
+ background: var(--djm-surface-3);
8864
+ }
8865
+
8866
+ .djm-fm-bar i {
8867
+ display: block;
8868
+ height: 100%;
8869
+ background: linear-gradient(90deg, var(--djm-brand-500), var(--djm-brand-600));
8870
+ }
8871
+
8872
+ .djm-fm-storage p {
8873
+ margin: 8px 0 0;
8874
+ line-height: 1.6;
8875
+ }
8876
+
8877
+ .djm-fm-main {
8878
+ display: flex;
8879
+ flex-direction: column;
8880
+ min-width: 0;
8881
+ }
8882
+
8883
+ .djm-fm-path {
8884
+ display: flex;
8885
+ align-items: center;
8886
+ justify-content: space-between;
8887
+ gap: 10px;
8888
+ padding: 8px 14px;
8889
+ border-bottom: 1px solid var(--djm-border);
8890
+ background: var(--djm-surface-2);
8891
+ }
8892
+
8893
+ .djm-fm-crumb {
8894
+ display: flex;
8895
+ align-items: center;
8896
+ gap: 6px;
8897
+ color: var(--djm-text);
8898
+ font-size: 12.5px;
8899
+ font-weight: 600;
8900
+ }
8901
+
8902
+ .djm-fm-crumb em {
8903
+ color: var(--djm-text-3);
8904
+ font-size: 11px;
8905
+ font-style: normal;
8906
+ font-weight: 400;
8907
+ }
8908
+
8909
+ .djm-fm-search {
8910
+ display: flex;
8911
+ align-items: center;
8912
+ gap: 6px;
8913
+ height: 28px;
8914
+ padding: 0 8px;
8915
+ border: 1px solid var(--djm-border);
8916
+ border-radius: 4px;
8917
+ background: var(--djm-surface);
8918
+ color: var(--djm-text-3);
8919
+ }
8920
+
8921
+ .djm-fm-search:focus-within {
8922
+ border-color: var(--djm-brand-500);
8923
+ }
8924
+
8925
+ .djm-fm-search input {
8926
+ width: 160px;
8927
+ border: 0;
8928
+ outline: none;
8929
+ background: none;
8930
+ color: var(--djm-text-2);
8931
+ font-size: 12px;
8932
+ }
8933
+
8934
+ .djm-fm-all {
8935
+ display: inline-flex;
8936
+ align-items: center;
8937
+ gap: 6px;
8938
+ padding-right: 2px;
8939
+ color: var(--djm-text-2);
8940
+ font-size: 12px;
8941
+ cursor: pointer;
8942
+ }
8943
+
8944
+ .djm-fm-grid {
8945
+ display: grid;
8946
+ grid-template-columns: repeat(auto-fill, minmax(168px, 1fr));
8947
+ gap: 12px;
8948
+ padding: 14px;
8949
+ }
8950
+
8951
+ .djm-fm-card {
8952
+ position: relative;
8953
+ display: flex;
8954
+ flex-direction: column;
8955
+ gap: 4px;
8956
+ padding: 8px;
8957
+ border: 1px solid var(--djm-border);
8958
+ border-radius: 6px;
8959
+ background: var(--djm-surface);
8960
+ }
8961
+
8962
+ .djm-fm-card.djm-is-selected {
8963
+ border-color: var(--djm-brand-500);
8964
+ box-shadow: 0 0 0 2px var(--djm-brand-soft);
8965
+ }
8966
+
8967
+ .djm-fm-check {
8968
+ position: absolute;
8969
+ top: 8px;
8970
+ left: 8px;
8971
+ z-index: 1;
8972
+ padding: 2px;
8973
+ border-radius: 4px;
8974
+ background: var(--djm-surface);
8975
+ }
8976
+
8977
+ .djm-fm-thumb {
8978
+ display: flex;
8979
+ align-items: center;
8980
+ justify-content: center;
8981
+ height: 96px;
8982
+ padding: 0;
8983
+ overflow: hidden;
8984
+ border: 0;
8985
+ border-radius: 4px;
8986
+ background: var(--djm-surface-3);
8987
+ cursor: zoom-in;
8988
+ }
8989
+
8990
+ .djm-fm-thumb img {
8991
+ width: 100%;
8992
+ height: 100%;
8993
+ object-fit: cover;
8994
+ }
8995
+
8996
+ .djm-fm-doc {
8997
+ color: var(--djm-text-3);
8998
+ font-size: 11px;
8999
+ font-weight: 600;
9000
+ letter-spacing: 0.4px;
9001
+ }
9002
+
9003
+ .djm-fm-name {
9004
+ margin-top: 2px;
9005
+ overflow: hidden;
9006
+ color: var(--djm-text);
9007
+ font-size: 12.5px;
9008
+ font-weight: 500;
9009
+ text-overflow: ellipsis;
9010
+ white-space: nowrap;
9011
+ }
9012
+
9013
+ .djm-fm-meta {
9014
+ color: var(--djm-text-3);
9015
+ font-size: 11px;
9016
+ }
9017
+
9018
+ .djm-fm-empty {
9019
+ margin: 40px 14px;
9020
+ }
9021
+
9022
+ .djm-fm-loading {
9023
+ display: flex;
9024
+ align-items: center;
9025
+ gap: 8px;
9026
+ padding: 10px 14px;
9027
+ color: var(--djm-text-3);
9028
+ font-size: 12px;
9029
+ }
9030
+
9031
+ /* 上传用的隐藏输入 */
9032
+ .djm-fm-file {
9033
+ display: none;
9034
+ }
9035
+
9036
+ .djm-fm-preview-img {
9037
+ display: block;
9038
+ width: 100%;
9039
+ max-height: 420px;
9040
+ border-radius: 6px;
9041
+ background: var(--djm-surface-3);
9042
+ object-fit: contain;
9043
+ }
9044
+
9045
+ .djm-fm-preview-empty {
9046
+ display: flex;
9047
+ flex-direction: column;
9048
+ align-items: center;
9049
+ gap: 8px;
9050
+ padding: 40px;
9051
+ border-radius: 6px;
9052
+ background: var(--djm-surface-2);
9053
+ color: var(--djm-text-3);
9054
+ font-size: 12px;
9055
+ }
9056
+
9057
+ .djm-fm-preview-meta {
9058
+ display: grid;
9059
+ grid-template-columns: repeat(4, minmax(0, 1fr));
9060
+ gap: 10px;
9061
+ margin-top: 12px;
9062
+ }
9063
+
9064
+ .djm-fm-preview-meta div {
9065
+ display: flex;
9066
+ flex-direction: column;
9067
+ gap: 2px;
9068
+ color: var(--djm-text-3);
9069
+ font-size: 11.5px;
9070
+ }
9071
+
9072
+ .djm-fm-preview-meta b {
9073
+ color: var(--djm-text-2);
9074
+ font-size: 12px;
9075
+ font-weight: 500;
9076
+ }
9077
+
9078
+ /* ---------------- 图片相册 ---------------- */
9079
+
9080
+ .djm-album-head {
9081
+ display: flex;
9082
+ align-items: center;
9083
+ justify-content: space-between;
9084
+ gap: 12px;
9085
+ flex-wrap: wrap;
9086
+ padding: 10px 14px;
9087
+ border-bottom: 1px solid var(--djm-border);
9088
+ background: var(--djm-surface-2);
9089
+ }
9090
+
9091
+ .djm-album-tabs {
9092
+ display: flex;
9093
+ flex-wrap: wrap;
9094
+ gap: 6px;
9095
+ }
9096
+
9097
+ .djm-album-tab {
9098
+ display: inline-flex;
9099
+ align-items: center;
9100
+ gap: 6px;
9101
+ height: 28px;
9102
+ padding: 0 10px;
9103
+ border: 1px solid var(--djm-border);
9104
+ border-radius: 14px;
9105
+ background: var(--djm-surface);
9106
+ color: var(--djm-text-2);
9107
+ font-size: 12px;
9108
+ cursor: pointer;
9109
+ }
9110
+
9111
+ .djm-album-tab span {
9112
+ color: var(--djm-text-3);
9113
+ font-size: 10.5px;
9114
+ }
9115
+
9116
+ .djm-album-tab:hover {
9117
+ border-color: var(--djm-brand-500);
9118
+ color: var(--djm-brand-700);
9119
+ }
9120
+
9121
+ .djm-album-tab.djm-is-active {
9122
+ border-color: var(--djm-brand-500);
9123
+ background: var(--djm-brand-soft);
9124
+ color: var(--djm-brand-700);
9125
+ font-weight: 600;
9126
+ }
9127
+
9128
+ .djm-album-tab.djm-is-active span {
9129
+ color: var(--djm-brand-700);
9130
+ }
9131
+
9132
+ .djm-album-actions {
9133
+ display: flex;
9134
+ align-items: center;
9135
+ gap: 10px;
9136
+ }
9137
+
9138
+ .djm-album-grid {
9139
+ display: grid;
9140
+ grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
9141
+ gap: 14px;
9142
+ padding: 14px;
9143
+ }
9144
+
9145
+ .djm-album-card {
9146
+ position: relative;
9147
+ margin: 0;
9148
+ overflow: hidden;
9149
+ border: 1px solid var(--djm-border);
9150
+ border-radius: 6px;
9151
+ background: var(--djm-surface);
9152
+ }
9153
+
9154
+ .djm-album-card.djm-is-selected {
9155
+ border-color: var(--djm-brand-500);
9156
+ box-shadow: 0 0 0 2px var(--djm-brand-soft);
9157
+ }
9158
+
9159
+ .djm-album-thumb {
9160
+ position: relative;
9161
+ display: block;
9162
+ width: 100%;
9163
+ aspect-ratio: 4 / 3;
9164
+ padding: 0;
9165
+ overflow: hidden;
9166
+ border: 0;
9167
+ background: var(--djm-surface-3);
9168
+ cursor: zoom-in;
9169
+ }
9170
+
9171
+ .djm-album-thumb img {
9172
+ width: 100%;
9173
+ height: 100%;
9174
+ object-fit: cover;
9175
+ transition: transform 0.2s ease;
9176
+ }
9177
+
9178
+ .djm-album-thumb:hover img {
9179
+ transform: scale(1.04);
9180
+ }
9181
+
9182
+ .djm-album-zoom {
9183
+ position: absolute;
9184
+ left: 50%;
9185
+ top: 50%;
9186
+ display: inline-flex;
9187
+ align-items: center;
9188
+ gap: 4px;
9189
+ padding: 4px 8px;
9190
+ border-radius: 12px;
9191
+ background: rgba(15, 23, 32, 0.62);
9192
+ color: #fff;
9193
+ font-size: 11px;
9194
+ opacity: 0;
9195
+ pointer-events: none;
9196
+ transform: translate(-50%, -50%);
9197
+ transition: opacity 0.2s ease;
9198
+ }
9199
+
9200
+ .djm-album-thumb:hover .djm-album-zoom {
9201
+ opacity: 1;
9202
+ }
9203
+
9204
+ .djm-album-check {
9205
+ position: absolute;
9206
+ top: 8px;
9207
+ left: 8px;
9208
+ padding: 3px;
9209
+ border-radius: 4px;
9210
+ background: rgba(255, 255, 255, 0.9);
9211
+ }
9212
+
9213
+ .djm-album-card figcaption {
9214
+ display: flex;
9215
+ flex-direction: column;
9216
+ gap: 2px;
9217
+ padding: 8px 10px 10px;
9218
+ }
9219
+
9220
+ .djm-album-card figcaption strong {
9221
+ overflow: hidden;
9222
+ font-size: 12.5px;
9223
+ font-weight: 500;
9224
+ text-overflow: ellipsis;
9225
+ white-space: nowrap;
9226
+ }
9227
+
9228
+ .djm-album-card figcaption span {
9229
+ color: var(--djm-text-3);
9230
+ font-size: 11px;
9231
+ }
9232
+
9233
+ .djm-album-empty {
9234
+ padding: 60px 20px;
9235
+ }
9236
+
9237
+ .djm-album-viewer img {
9238
+ display: block;
9239
+ width: 100%;
9240
+ max-height: 520px;
9241
+ border-radius: 6px;
9242
+ background: var(--djm-surface-3);
9243
+ object-fit: contain;
9244
+ }
9245
+
9246
+ .djm-album-viewer-meta {
9247
+ display: flex;
9248
+ justify-content: space-between;
9249
+ gap: 10px;
9250
+ margin-top: 8px;
9251
+ color: var(--djm-text-3);
9252
+ font-size: 11.5px;
9253
+ }
9254
+
9255
+ @media (max-width: 860px) {
9256
+ .djm-fm {
9257
+ grid-template-columns: 1fr;
9258
+ }
9259
+
9260
+ .djm-fm-side {
9261
+ border-right: 0;
9262
+ border-bottom: 1px solid var(--djm-border);
9263
+ }
9264
+
9265
+ .djm-fm-folder {
9266
+ height: 30px;
9267
+ }
9268
+
9269
+ /* 窄屏:路径与搜索各占一行,避免文字被挤成两行 */
9270
+ .djm-fm-path {
9271
+ flex-wrap: wrap;
9272
+ }
9273
+
9274
+ .djm-fm-search {
9275
+ flex: 1 1 100%;
9276
+ }
9277
+
9278
+ .djm-fm-search input {
9279
+ width: 100%;
9280
+ }
9281
+
9282
+ .djm-fm-crumb em {
9283
+ display: none;
9284
+ }
9285
+
9286
+ .djm-fm-storage {
9287
+ display: none;
9288
+ }
9289
+
9290
+ .djm-fm-grid,
9291
+ .djm-album-grid {
9292
+ grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
9293
+ }
9294
+
9295
+ .djm-fm-preview-meta {
9296
+ grid-template-columns: repeat(2, minmax(0, 1fr));
9297
+ }
9298
+ }
9299
+
8359
9300
  /* ---- components/kanban.css ---- */
8360
9301
 
8361
9302
  /* 看板:横向列排布,列内纵向卡片流,超宽横向滚动 */
@@ -11815,3 +12756,64 @@ input[type="date"] {
11815
12756
  color: var(--djm-green);
11816
12757
  font-size: 10px;
11817
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
+ }