@dsh-plugin/dsh-ui-components 0.0.1 → 0.1.0-dev.43616582648

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 (65) hide show
  1. package/LICENSE +21 -21
  2. package/NOTICE +21 -21
  3. package/README.md +136 -136
  4. package/README.zh_CN.md +136 -136
  5. package/docs/tokens.md +67 -67
  6. package/lib/basic/form.js +49 -49
  7. package/lib/basic/styles.js +391 -391
  8. package/lib/composites/styles.js +427 -427
  9. package/lib/data/styles.js +257 -257
  10. package/lib/display/styles.js +310 -310
  11. package/lib/feedback/styles.js +228 -228
  12. package/lib/foundation/bridge.js +203 -203
  13. package/lib/navigation/styles.js +417 -417
  14. package/package.json +104 -104
  15. package/scripts/check-size.mjs +69 -69
  16. package/scripts/dump-npm-latest.mjs +59 -59
  17. package/scripts/gen-host-tokens.mjs +61 -61
  18. package/scripts/gen-icons.mjs +188 -178
  19. package/scripts/verify-no-literal-colors.mjs +63 -63
  20. package/scripts/verify-tokens.mjs +135 -135
  21. package/src/basic/button.tsx +76 -76
  22. package/src/basic/form.tsx +187 -187
  23. package/src/basic/icon-button.tsx +66 -66
  24. package/src/basic/index.ts +38 -38
  25. package/src/basic/input.tsx +140 -140
  26. package/src/basic/select.tsx +120 -120
  27. package/src/basic/styles.ts +412 -412
  28. package/src/basic/toggle.tsx +116 -116
  29. package/src/composites/data-view.tsx +189 -189
  30. package/src/composites/index.ts +11 -11
  31. package/src/composites/indicator.tsx +90 -90
  32. package/src/composites/menu-select.tsx +230 -230
  33. package/src/composites/panel.tsx +72 -72
  34. package/src/composites/settings.tsx +80 -80
  35. package/src/composites/styles.ts +450 -450
  36. package/src/data/collection.tsx +71 -71
  37. package/src/data/index.ts +39 -39
  38. package/src/data/info.tsx +89 -89
  39. package/src/data/picker.tsx +113 -113
  40. package/src/data/styles.ts +278 -278
  41. package/src/display/container.tsx +67 -67
  42. package/src/display/feedback.tsx +92 -92
  43. package/src/display/index.ts +44 -44
  44. package/src/display/label.tsx +165 -165
  45. package/src/display/overlay.tsx +103 -103
  46. package/src/display/styles.ts +332 -332
  47. package/src/feedback/global.tsx +110 -110
  48. package/src/feedback/index.ts +19 -19
  49. package/src/feedback/inline.tsx +50 -50
  50. package/src/feedback/panel.tsx +93 -93
  51. package/src/feedback/styles.ts +250 -250
  52. package/src/foundation/bridge.ts +318 -318
  53. package/src/foundation/icons.tsx +315 -315
  54. package/src/foundation/index.ts +33 -33
  55. package/src/foundation/palette.ts +153 -153
  56. package/src/foundation/provider.tsx +62 -62
  57. package/src/foundation/style.ts +63 -63
  58. package/src/foundation/tokens.ts +62 -62
  59. package/src/index.ts +18 -18
  60. package/src/navigation/hierarchy.tsx +82 -82
  61. package/src/navigation/index.ts +21 -21
  62. package/src/navigation/indicator.tsx +125 -125
  63. package/src/navigation/menu.tsx +94 -94
  64. package/src/navigation/segmented.tsx +136 -136
  65. package/src/navigation/styles.ts +438 -438
@@ -1,332 +1,332 @@
1
- /**
2
- * 展示组件追加样式。
3
- *
4
- * 卡片、标签、浮层这类表面形态在 DSH 里有讲究:浮起表面用 `border: 0` 配
5
- * 描边阴影,菜单表面要带材质模糊,胶囊形状要退出全局圆角平滑。这些必须改
6
- * 结构,因此单独成表。
7
- *
8
- * @module @dsh-plugin/dsh-ui-components/display/styles
9
- */
10
- import { injectUiStyle } from '../foundation/style.js'
11
-
12
- /** 展示组件样式表。 */
13
- export const DISPLAY_CSS = `
14
- /* ── 卡片 ───────────────────────────────────────────────────────── */
15
- .dsh-ui .arco-card {
16
- border-radius: var(--dsw-radius-xl, 20px);
17
- border: 0;
18
- box-shadow: var(--dsw-elevation-panel);
19
- background-color: var(--dsw-alias-card-fill);
20
- }
21
-
22
- .dsh-ui .arco-card-header {
23
- border-bottom: 1px solid var(--dsw-alias-border-l1);
24
- height: auto;
25
- padding: 16px 20px;
26
- }
27
-
28
- .dsh-ui .arco-card-header-title {
29
- font-size: 15px;
30
- line-height: 22px;
31
- font-weight: 500;
32
- color: var(--dsw-alias-label-primary);
33
- }
34
-
35
- .dsh-ui .arco-card-body {
36
- padding: 20px;
37
- font-size: 14px;
38
- line-height: 22px;
39
- color: var(--dsw-alias-label-primary);
40
- }
41
-
42
- .dsh-ui .dsh-card--flat.arco-card {
43
- box-shadow: none;
44
- background-color: transparent;
45
- border: 0.5px solid var(--dsw-alias-border-l2);
46
- }
47
-
48
- .dsh-ui .dsh-card--tight .arco-card-body {
49
- padding: 12px 16px;
50
- }
51
-
52
- /* ── 标签 ───────────────────────────────────────────────────────── */
53
- .dsh-ui .arco-tag {
54
- display: inline-flex;
55
- align-items: center;
56
- border-radius: 999px;
57
- corner-shape: round;
58
- padding: 1px 8px;
59
- height: auto;
60
- font-size: 11px;
61
- line-height: 17px;
62
- font-weight: 500;
63
- white-space: nowrap;
64
- border: none;
65
- background-color: var(--dsw-alias-bg-module-platform);
66
- color: var(--dsw-alias-label-secondary);
67
- }
68
-
69
- .dsh-ui .arco-tag-size-small {
70
- padding: 0 6px;
71
- font-size: 10px;
72
- line-height: 15px;
73
- }
74
-
75
- .dsh-ui .arco-tag-size-large {
76
- padding: 2px 10px;
77
- font-size: 12px;
78
- line-height: 19px;
79
- }
80
-
81
- /* ── 胶囊按钮 ───────────────────────────────────────────────────── */
82
- .dsh-pill {
83
- display: inline-flex;
84
- align-items: center;
85
- gap: 4px;
86
- height: 24px;
87
- padding: 0 8px;
88
- border: none;
89
- border-radius: 999px;
90
- corner-shape: round;
91
- font-family: inherit;
92
- font-size: 12px;
93
- line-height: 18px;
94
- color: var(--dsw-alias-label-secondary);
95
- background-color: var(--dsw-alias-bg-layer-2);
96
- }
97
-
98
- .dsh-pill--interactive {
99
- cursor: pointer;
100
- }
101
-
102
- @media (hover: hover) {
103
- .dsh-pill--interactive:hover {
104
- background-color: var(--dsw-alias-interactive-bg-hover);
105
- }
106
- }
107
-
108
- .dsh-pill--active {
109
- color: var(--dsw-alias-label-primary);
110
- background-color: var(--dsw-alias-button-ghost-active-fill);
111
- box-shadow: inset 0 0 0 1px var(--dsw-alias-button-ghost-active-border);
112
- }
113
-
114
- /* ── 折叠面板 ───────────────────────────────────────────────────── */
115
- .dsh-ui .arco-collapse {
116
- border: 0;
117
- border-radius: var(--dsw-radius-lg, 16px);
118
- background-color: transparent;
119
- }
120
-
121
- .dsh-ui .arco-collapse-item {
122
- border-bottom: 0.5px solid var(--dsw-alias-border-l1);
123
- }
124
-
125
- .dsh-ui .arco-collapse-item:last-child {
126
- border-bottom: 0;
127
- }
128
-
129
- .dsh-ui .arco-collapse-item-header {
130
- border: 0;
131
- background-color: transparent;
132
- font-size: 13px;
133
- line-height: 24px;
134
- color: var(--dsw-alias-label-tertiary);
135
- padding-left: 0;
136
- padding-right: 0;
137
- }
138
-
139
- @media (hover: hover) {
140
- .dsh-ui .arco-collapse-item-header:hover {
141
- color: var(--dsw-alias-label-secondary);
142
- }
143
- }
144
-
145
- .dsh-ui .arco-collapse-item-active .arco-collapse-item-header {
146
- color: var(--dsw-alias-label-primary);
147
- }
148
-
149
- .dsh-ui .arco-collapse-item-content {
150
- background-color: transparent;
151
- font-size: 14px;
152
- line-height: 22px;
153
- color: var(--dsw-alias-label-primary);
154
- padding-left: 0;
155
- }
156
-
157
- /* ── 描述列表 ───────────────────────────────────────────────────── */
158
- .dsh-ui .arco-descriptions-item-label {
159
- font-size: 13px;
160
- line-height: 20px;
161
- color: var(--dsw-alias-label-tertiary);
162
- }
163
-
164
- .dsh-ui .arco-descriptions-item-value {
165
- font-size: 14px;
166
- line-height: 22px;
167
- color: var(--dsw-alias-label-primary);
168
- }
169
-
170
- /* ── 空状态与骨架 ───────────────────────────────────────────────── */
171
- .dsh-ui .arco-empty-description {
172
- font-size: 13px;
173
- line-height: 20px;
174
- color: var(--dsw-alias-label-tertiary);
175
- }
176
-
177
- .dsh-ui .arco-skeleton-line-row,
178
- .dsh-ui .arco-skeleton-header .arco-skeleton-image {
179
- background-color: var(--dsw-alias-bg-skeleton);
180
- }
181
-
182
- .dsh-ui .arco-spin-loading-icon {
183
- color: var(--dsw-alias-label-tertiary);
184
- }
185
-
186
- /* ── 提示与气泡 ─────────────────────────────────────────────────── */
187
- .dsh-ui-overlay .arco-tooltip-content,
188
- .dsh-ui .arco-tooltip-content {
189
- border-radius: var(--dsw-radius-sm, 8px);
190
- background-color: var(--dsw-alias-tooltip-bg);
191
- color: var(--dsw-alias-tooltip-label);
192
- font-size: 13px;
193
- line-height: 20px;
194
- padding: 3px 7px;
195
- box-shadow: none;
196
- }
197
-
198
- /* 宿主的提示气泡没有箭头,且贴着锚点;Arco 的 12px 偏移与箭头预留空间由 JS
199
- 算进绝对定位里,因此只能用负外边距收回到 4px。 */
200
- .dsh-ui-overlay .arco-tooltip-arrow,
201
- .dsh-ui .arco-tooltip-arrow {
202
- display: none;
203
- }
204
-
205
- .dsh-ui-overlay .arco-tooltip.arco-trigger-position-bottom,
206
- .dsh-ui .arco-tooltip.arco-trigger-position-bottom {
207
- margin-top: -8px;
208
- }
209
-
210
- .dsh-ui-overlay .arco-tooltip.arco-trigger-position-top,
211
- .dsh-ui .arco-tooltip.arco-trigger-position-top {
212
- margin-bottom: -8px;
213
- }
214
-
215
- .dsh-ui-overlay .arco-popover-content,
216
- .dsh-ui .arco-popover-content {
217
- border-radius: var(--dsw-radius-lg, 16px);
218
- border: 0;
219
- background: var(--dsw-specific-menu, var(--dsw-alias-bg-layer-2));
220
- backdrop-filter: var(--dsw-menu-backdrop-filter, none);
221
- box-shadow: var(--dsw-elevation-prominent);
222
- color: var(--dsw-alias-label-primary);
223
- font-size: 14px;
224
- line-height: 22px;
225
- }
226
-
227
- /* ── 头像与徽标 ─────────────────────────────────────────────────── */
228
- .dsh-ui .arco-avatar {
229
- border-radius: 50%;
230
- corner-shape: round;
231
- background-color: var(--dsw-alias-bg-module-platform);
232
- color: var(--dsw-alias-label-secondary);
233
- }
234
-
235
- .dsh-ui .arco-avatar-square {
236
- border-radius: var(--dsw-radius-md, 12px);
237
- }
238
-
239
- .dsh-ui .arco-badge-number,
240
- .dsh-ui .arco-badge-dot {
241
- background-color: var(--dsw-alias-state-error-primary);
242
- box-shadow: 0 0 0 2px var(--dsw-alias-bg-base);
243
- }
244
-
245
- /* ── 分隔线 ─────────────────────────────────────────────────────── */
246
- .dsh-ui .arco-divider {
247
- border-color: var(--dsw-alias-border-l1);
248
- }
249
-
250
- .dsh-ui .arco-divider-horizontal {
251
- border-bottom-width: 0.5px;
252
- margin: 16px 0;
253
- }
254
-
255
- .dsh-ui .arco-divider-vertical {
256
- border-left-width: 0.5px;
257
- margin: 0 12px;
258
- }
259
-
260
- /* ── 排版 ───────────────────────────────────────────────────────── */
261
- .dsh-ui .arco-typography {
262
- color: var(--dsw-alias-label-primary);
263
- font-size: 14px;
264
- line-height: 22px;
265
- }
266
-
267
- .dsh-ui h1.arco-typography {
268
- font-size: 21px;
269
- line-height: 30px;
270
- font-weight: 700;
271
- }
272
-
273
- .dsh-ui h2.arco-typography {
274
- font-size: 19px;
275
- line-height: 28px;
276
- font-weight: 700;
277
- }
278
-
279
- .dsh-ui h3.arco-typography {
280
- font-size: 18px;
281
- line-height: 26px;
282
- font-weight: 700;
283
- }
284
-
285
- .dsh-ui .arco-typography-secondary {
286
- color: var(--dsw-alias-label-secondary);
287
- }
288
-
289
- .dsh-ui .arco-typography-success {
290
- color: var(--dsw-alias-state-success-primary);
291
- }
292
-
293
- .dsh-ui .arco-typography-warning {
294
- color: var(--dsw-alias-state-warn-primary);
295
- }
296
-
297
- .dsh-ui .arco-typography-danger {
298
- color: var(--dsw-alias-state-error-primary);
299
- }
300
-
301
- .dsh-ui .arco-typography code,
302
- .dsh-ui .arco-typography kbd {
303
- border-radius: var(--dsw-radius-xs, 4px);
304
- background-color: var(--dsw-alias-markdown-inline-code);
305
- font-family: var(--ds-font-family-code, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);
306
- font-size: 12px;
307
- padding: 1px 5px;
308
- }
309
-
310
- .dsh-ui .arco-typography blockquote {
311
- border-left: 2px solid var(--dsw-alias-border-l3);
312
- padding-left: 12px;
313
- color: var(--dsw-alias-label-secondary);
314
- margin: 8px 0;
315
- }
316
-
317
- @media (prefers-reduced-motion: reduce) {
318
- .dsh-ui .arco-collapse-item-header,
319
- .dsh-pill {
320
- transition: none;
321
- }
322
- }
323
- `
324
-
325
- /**
326
- * 注入展示组件样式。幂等。
327
- *
328
- * @returns 释放函数。
329
- */
330
- export function injectDisplayStyles(): () => void {
331
- return injectUiStyle('display/components.css', DISPLAY_CSS)
332
- }
1
+ /**
2
+ * 展示组件追加样式。
3
+ *
4
+ * 卡片、标签、浮层这类表面形态在 DSH 里有讲究:浮起表面用 `border: 0` 配
5
+ * 描边阴影,菜单表面要带材质模糊,胶囊形状要退出全局圆角平滑。这些必须改
6
+ * 结构,因此单独成表。
7
+ *
8
+ * @module @dsh-plugin/dsh-ui-components/display/styles
9
+ */
10
+ import { injectUiStyle } from '../foundation/style.js'
11
+
12
+ /** 展示组件样式表。 */
13
+ export const DISPLAY_CSS = `
14
+ /* ── 卡片 ───────────────────────────────────────────────────────── */
15
+ .dsh-ui .arco-card {
16
+ border-radius: var(--dsw-radius-xl, 20px);
17
+ border: 0;
18
+ box-shadow: var(--dsw-elevation-panel);
19
+ background-color: var(--dsw-alias-card-fill);
20
+ }
21
+
22
+ .dsh-ui .arco-card-header {
23
+ border-bottom: 1px solid var(--dsw-alias-border-l1);
24
+ height: auto;
25
+ padding: 16px 20px;
26
+ }
27
+
28
+ .dsh-ui .arco-card-header-title {
29
+ font-size: 15px;
30
+ line-height: 22px;
31
+ font-weight: 500;
32
+ color: var(--dsw-alias-label-primary);
33
+ }
34
+
35
+ .dsh-ui .arco-card-body {
36
+ padding: 20px;
37
+ font-size: 14px;
38
+ line-height: 22px;
39
+ color: var(--dsw-alias-label-primary);
40
+ }
41
+
42
+ .dsh-ui .dsh-card--flat.arco-card {
43
+ box-shadow: none;
44
+ background-color: transparent;
45
+ border: 0.5px solid var(--dsw-alias-border-l2);
46
+ }
47
+
48
+ .dsh-ui .dsh-card--tight .arco-card-body {
49
+ padding: 12px 16px;
50
+ }
51
+
52
+ /* ── 标签 ───────────────────────────────────────────────────────── */
53
+ .dsh-ui .arco-tag {
54
+ display: inline-flex;
55
+ align-items: center;
56
+ border-radius: 999px;
57
+ corner-shape: round;
58
+ padding: 1px 8px;
59
+ height: auto;
60
+ font-size: 11px;
61
+ line-height: 17px;
62
+ font-weight: 500;
63
+ white-space: nowrap;
64
+ border: none;
65
+ background-color: var(--dsw-alias-bg-module-platform);
66
+ color: var(--dsw-alias-label-secondary);
67
+ }
68
+
69
+ .dsh-ui .arco-tag-size-small {
70
+ padding: 0 6px;
71
+ font-size: 10px;
72
+ line-height: 15px;
73
+ }
74
+
75
+ .dsh-ui .arco-tag-size-large {
76
+ padding: 2px 10px;
77
+ font-size: 12px;
78
+ line-height: 19px;
79
+ }
80
+
81
+ /* ── 胶囊按钮 ───────────────────────────────────────────────────── */
82
+ .dsh-pill {
83
+ display: inline-flex;
84
+ align-items: center;
85
+ gap: 4px;
86
+ height: 24px;
87
+ padding: 0 8px;
88
+ border: none;
89
+ border-radius: 999px;
90
+ corner-shape: round;
91
+ font-family: inherit;
92
+ font-size: 12px;
93
+ line-height: 18px;
94
+ color: var(--dsw-alias-label-secondary);
95
+ background-color: var(--dsw-alias-bg-layer-2);
96
+ }
97
+
98
+ .dsh-pill--interactive {
99
+ cursor: pointer;
100
+ }
101
+
102
+ @media (hover: hover) {
103
+ .dsh-pill--interactive:hover {
104
+ background-color: var(--dsw-alias-interactive-bg-hover);
105
+ }
106
+ }
107
+
108
+ .dsh-pill--active {
109
+ color: var(--dsw-alias-label-primary);
110
+ background-color: var(--dsw-alias-button-ghost-active-fill);
111
+ box-shadow: inset 0 0 0 1px var(--dsw-alias-button-ghost-active-border);
112
+ }
113
+
114
+ /* ── 折叠面板 ───────────────────────────────────────────────────── */
115
+ .dsh-ui .arco-collapse {
116
+ border: 0;
117
+ border-radius: var(--dsw-radius-lg, 16px);
118
+ background-color: transparent;
119
+ }
120
+
121
+ .dsh-ui .arco-collapse-item {
122
+ border-bottom: 0.5px solid var(--dsw-alias-border-l1);
123
+ }
124
+
125
+ .dsh-ui .arco-collapse-item:last-child {
126
+ border-bottom: 0;
127
+ }
128
+
129
+ .dsh-ui .arco-collapse-item-header {
130
+ border: 0;
131
+ background-color: transparent;
132
+ font-size: 13px;
133
+ line-height: 24px;
134
+ color: var(--dsw-alias-label-tertiary);
135
+ padding-left: 0;
136
+ padding-right: 0;
137
+ }
138
+
139
+ @media (hover: hover) {
140
+ .dsh-ui .arco-collapse-item-header:hover {
141
+ color: var(--dsw-alias-label-secondary);
142
+ }
143
+ }
144
+
145
+ .dsh-ui .arco-collapse-item-active .arco-collapse-item-header {
146
+ color: var(--dsw-alias-label-primary);
147
+ }
148
+
149
+ .dsh-ui .arco-collapse-item-content {
150
+ background-color: transparent;
151
+ font-size: 14px;
152
+ line-height: 22px;
153
+ color: var(--dsw-alias-label-primary);
154
+ padding-left: 0;
155
+ }
156
+
157
+ /* ── 描述列表 ───────────────────────────────────────────────────── */
158
+ .dsh-ui .arco-descriptions-item-label {
159
+ font-size: 13px;
160
+ line-height: 20px;
161
+ color: var(--dsw-alias-label-tertiary);
162
+ }
163
+
164
+ .dsh-ui .arco-descriptions-item-value {
165
+ font-size: 14px;
166
+ line-height: 22px;
167
+ color: var(--dsw-alias-label-primary);
168
+ }
169
+
170
+ /* ── 空状态与骨架 ───────────────────────────────────────────────── */
171
+ .dsh-ui .arco-empty-description {
172
+ font-size: 13px;
173
+ line-height: 20px;
174
+ color: var(--dsw-alias-label-tertiary);
175
+ }
176
+
177
+ .dsh-ui .arco-skeleton-line-row,
178
+ .dsh-ui .arco-skeleton-header .arco-skeleton-image {
179
+ background-color: var(--dsw-alias-bg-skeleton);
180
+ }
181
+
182
+ .dsh-ui .arco-spin-loading-icon {
183
+ color: var(--dsw-alias-label-tertiary);
184
+ }
185
+
186
+ /* ── 提示与气泡 ─────────────────────────────────────────────────── */
187
+ .dsh-ui-overlay .arco-tooltip-content,
188
+ .dsh-ui .arco-tooltip-content {
189
+ border-radius: var(--dsw-radius-sm, 8px);
190
+ background-color: var(--dsw-alias-tooltip-bg);
191
+ color: var(--dsw-alias-tooltip-label);
192
+ font-size: 13px;
193
+ line-height: 20px;
194
+ padding: 3px 7px;
195
+ box-shadow: none;
196
+ }
197
+
198
+ /* 宿主的提示气泡没有箭头,且贴着锚点;Arco 的 12px 偏移与箭头预留空间由 JS
199
+ 算进绝对定位里,因此只能用负外边距收回到 4px。 */
200
+ .dsh-ui-overlay .arco-tooltip-arrow,
201
+ .dsh-ui .arco-tooltip-arrow {
202
+ display: none;
203
+ }
204
+
205
+ .dsh-ui-overlay .arco-tooltip.arco-trigger-position-bottom,
206
+ .dsh-ui .arco-tooltip.arco-trigger-position-bottom {
207
+ margin-top: -8px;
208
+ }
209
+
210
+ .dsh-ui-overlay .arco-tooltip.arco-trigger-position-top,
211
+ .dsh-ui .arco-tooltip.arco-trigger-position-top {
212
+ margin-bottom: -8px;
213
+ }
214
+
215
+ .dsh-ui-overlay .arco-popover-content,
216
+ .dsh-ui .arco-popover-content {
217
+ border-radius: var(--dsw-radius-lg, 16px);
218
+ border: 0;
219
+ background: var(--dsw-specific-menu, var(--dsw-alias-bg-layer-2));
220
+ backdrop-filter: var(--dsw-menu-backdrop-filter, none);
221
+ box-shadow: var(--dsw-elevation-prominent);
222
+ color: var(--dsw-alias-label-primary);
223
+ font-size: 14px;
224
+ line-height: 22px;
225
+ }
226
+
227
+ /* ── 头像与徽标 ─────────────────────────────────────────────────── */
228
+ .dsh-ui .arco-avatar {
229
+ border-radius: 50%;
230
+ corner-shape: round;
231
+ background-color: var(--dsw-alias-bg-module-platform);
232
+ color: var(--dsw-alias-label-secondary);
233
+ }
234
+
235
+ .dsh-ui .arco-avatar-square {
236
+ border-radius: var(--dsw-radius-md, 12px);
237
+ }
238
+
239
+ .dsh-ui .arco-badge-number,
240
+ .dsh-ui .arco-badge-dot {
241
+ background-color: var(--dsw-alias-state-error-primary);
242
+ box-shadow: 0 0 0 2px var(--dsw-alias-bg-base);
243
+ }
244
+
245
+ /* ── 分隔线 ─────────────────────────────────────────────────────── */
246
+ .dsh-ui .arco-divider {
247
+ border-color: var(--dsw-alias-border-l1);
248
+ }
249
+
250
+ .dsh-ui .arco-divider-horizontal {
251
+ border-bottom-width: 0.5px;
252
+ margin: 16px 0;
253
+ }
254
+
255
+ .dsh-ui .arco-divider-vertical {
256
+ border-left-width: 0.5px;
257
+ margin: 0 12px;
258
+ }
259
+
260
+ /* ── 排版 ───────────────────────────────────────────────────────── */
261
+ .dsh-ui .arco-typography {
262
+ color: var(--dsw-alias-label-primary);
263
+ font-size: 14px;
264
+ line-height: 22px;
265
+ }
266
+
267
+ .dsh-ui h1.arco-typography {
268
+ font-size: 21px;
269
+ line-height: 30px;
270
+ font-weight: 700;
271
+ }
272
+
273
+ .dsh-ui h2.arco-typography {
274
+ font-size: 19px;
275
+ line-height: 28px;
276
+ font-weight: 700;
277
+ }
278
+
279
+ .dsh-ui h3.arco-typography {
280
+ font-size: 18px;
281
+ line-height: 26px;
282
+ font-weight: 700;
283
+ }
284
+
285
+ .dsh-ui .arco-typography-secondary {
286
+ color: var(--dsw-alias-label-secondary);
287
+ }
288
+
289
+ .dsh-ui .arco-typography-success {
290
+ color: var(--dsw-alias-state-success-primary);
291
+ }
292
+
293
+ .dsh-ui .arco-typography-warning {
294
+ color: var(--dsw-alias-state-warn-primary);
295
+ }
296
+
297
+ .dsh-ui .arco-typography-danger {
298
+ color: var(--dsw-alias-state-error-primary);
299
+ }
300
+
301
+ .dsh-ui .arco-typography code,
302
+ .dsh-ui .arco-typography kbd {
303
+ border-radius: var(--dsw-radius-xs, 4px);
304
+ background-color: var(--dsw-alias-markdown-inline-code);
305
+ font-family: var(--ds-font-family-code, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);
306
+ font-size: 12px;
307
+ padding: 1px 5px;
308
+ }
309
+
310
+ .dsh-ui .arco-typography blockquote {
311
+ border-left: 2px solid var(--dsw-alias-border-l3);
312
+ padding-left: 12px;
313
+ color: var(--dsw-alias-label-secondary);
314
+ margin: 8px 0;
315
+ }
316
+
317
+ @media (prefers-reduced-motion: reduce) {
318
+ .dsh-ui .arco-collapse-item-header,
319
+ .dsh-pill {
320
+ transition: none;
321
+ }
322
+ }
323
+ `
324
+
325
+ /**
326
+ * 注入展示组件样式。幂等。
327
+ *
328
+ * @returns 释放函数。
329
+ */
330
+ export function injectDisplayStyles(): () => void {
331
+ return injectUiStyle('display/components.css', DISPLAY_CSS)
332
+ }