twskin 0.5.3

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/CHANGELOG.md +99 -0
  2. package/CONTRIBUTING.md +37 -0
  3. package/LICENSE +21 -0
  4. package/README.md +104 -0
  5. package/SECURITY.md +28 -0
  6. package/dist/bin/twskin.d.ts +3 -0
  7. package/dist/bin/twskin.d.ts.map +1 -0
  8. package/dist/bin/twskin.js +4 -0
  9. package/dist/bin/twskin.js.map +1 -0
  10. package/dist/commands.d.ts +41 -0
  11. package/dist/commands.d.ts.map +1 -0
  12. package/dist/commands.js +421 -0
  13. package/dist/commands.js.map +1 -0
  14. package/dist/context.d.ts +14 -0
  15. package/dist/context.d.ts.map +1 -0
  16. package/dist/context.js +51 -0
  17. package/dist/context.js.map +1 -0
  18. package/dist/errors.d.ts +9 -0
  19. package/dist/errors.d.ts.map +1 -0
  20. package/dist/errors.js +20 -0
  21. package/dist/errors.js.map +1 -0
  22. package/dist/lock.d.ts +3 -0
  23. package/dist/lock.d.ts.map +1 -0
  24. package/dist/lock.js +52 -0
  25. package/dist/lock.js.map +1 -0
  26. package/dist/main.d.ts +9 -0
  27. package/dist/main.d.ts.map +1 -0
  28. package/dist/main.js +92 -0
  29. package/dist/main.js.map +1 -0
  30. package/dist/output.d.ts +4 -0
  31. package/dist/output.d.ts.map +1 -0
  32. package/dist/output.js +27 -0
  33. package/dist/output.js.map +1 -0
  34. package/dist/persistent-cdp.d.ts +14 -0
  35. package/dist/persistent-cdp.d.ts.map +1 -0
  36. package/dist/persistent-cdp.js +140 -0
  37. package/dist/persistent-cdp.js.map +1 -0
  38. package/dist/system.d.ts +64 -0
  39. package/dist/system.d.ts.map +1 -0
  40. package/dist/system.js +234 -0
  41. package/dist/system.js.map +1 -0
  42. package/dist/theme-download.d.ts +9 -0
  43. package/dist/theme-download.d.ts.map +1 -0
  44. package/dist/theme-download.js +250 -0
  45. package/dist/theme-download.js.map +1 -0
  46. package/dist/themes.d.ts +9 -0
  47. package/dist/themes.d.ts.map +1 -0
  48. package/dist/themes.js +185 -0
  49. package/dist/themes.js.map +1 -0
  50. package/dist/types.d.ts +58 -0
  51. package/dist/types.d.ts.map +1 -0
  52. package/dist/types.js +2 -0
  53. package/dist/types.js.map +1 -0
  54. package/docs/publishing.md +45 -0
  55. package/docs/theme-distribution.md +62 -0
  56. package/package.json +74 -0
  57. package/runtime/component-map.mjs +200 -0
  58. package/runtime/injector.mjs +705 -0
  59. package/runtime/manifest.json +47 -0
  60. package/runtime/restore.sh +33 -0
  61. package/runtime/skin.js +1133 -0
  62. package/runtime/start.sh +86 -0
  63. package/runtime/styles/base.css +687 -0
  64. package/runtime/styles/manager.css +346 -0
  65. package/runtime/token-map.mjs +432 -0
@@ -0,0 +1,346 @@
1
+ body.trae-skin-effects-max #trae-dream-skin-panel {
2
+ clip-path: polygon(0 0, calc(100% - 14px) 0, 100% 14px, 100% 100%, 14px 100%, 0 calc(100% - 14px));
3
+ }
4
+ body.trae-skin-effects-max #trae-dream-skin-button {
5
+ box-shadow:
6
+ 0 0 0 2px var(--trae-skin-info),
7
+ 0 0 18px var(--trae-skin-accent),
8
+ 0 0 36px var(--trae-skin-magenta) !important;
9
+ }
10
+ /* 画廊入口按钮 */
11
+ #trae-dream-skin-button {
12
+ position: fixed; right: 16px; bottom: 16px; z-index: 2147483000;
13
+ width: 36px; height: 36px; border-radius: 50%;
14
+ background: rgba(20, 22, 34, 0.82); color: #fff;
15
+ border: 1px solid rgba(255, 255, 255, 0.28);
16
+ cursor: pointer; display: flex; align-items: center; justify-content: center;
17
+ box-shadow: 0 4px 16px rgba(0, 0, 0, 0.35);
18
+ backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px);
19
+ transition: transform 0.15s ease;
20
+ }
21
+ body.trae-skin-v2 #trae-dream-skin-button {
22
+ color: var(--trae-skin-accent-on);
23
+ background: var(--trae-skin-accent);
24
+ border-color: var(--trae-skin-border-strong);
25
+ box-shadow: var(--trae-skin-shadow-floating);
26
+ }
27
+ #trae-dream-skin-button:hover { transform: scale(1.08); }
28
+ #trae-dream-skin-button svg { width: 18px; height: 18px; fill: currentColor; }
29
+
30
+ /* 画廊面板 */
31
+ #trae-dream-skin-panel {
32
+ position: fixed; right: 16px; bottom: 62px; z-index: 2147483000;
33
+ box-sizing: border-box;
34
+ width: min(400px, calc(100vw - 32px));
35
+ height: min(640px, calc(100vh - 110px));
36
+ display: flex; flex-direction: column; overflow: hidden;
37
+ background: rgba(20, 22, 34, 0.88); color: rgba(255, 255, 255, 0.92);
38
+ border: 1px solid rgba(255, 255, 255, 0.16); border-radius: 14px;
39
+ box-shadow: 0 12px 40px rgba(0, 0, 0, 0.45);
40
+ backdrop-filter: blur(18px); -webkit-backdrop-filter: blur(18px);
41
+ font: 12px/1.5 -apple-system, "PingFang SC", sans-serif;
42
+ animation: trae-skin-panel-in 0.18s cubic-bezier(0.2, 0.8, 0.2, 1);
43
+ }
44
+ @keyframes trae-skin-panel-in {
45
+ from { opacity: 0; transform: translateY(8px) scale(0.98); }
46
+ to { opacity: 1; transform: translateY(0) scale(1); }
47
+ }
48
+ @keyframes trae-skin-fade-in { from { opacity: 0; } to { opacity: 1; } }
49
+ #trae-dream-skin-panel .ds-header {
50
+ flex: 0 0 auto; display: flex; align-items: center; gap: 6px;
51
+ padding: 10px 10px 9px 12px;
52
+ border-bottom: 1px solid rgba(255, 255, 255, 0.1);
53
+ }
54
+ #trae-dream-skin-panel .ds-header-text { flex: 1 1 auto; min-width: 0; }
55
+ #trae-dream-skin-panel .ds-title { font-size: 13px; font-weight: 600; white-space: nowrap; }
56
+ #trae-dream-skin-panel .ds-current {
57
+ margin-top: 1px; font-size: 10px; opacity: 0.55;
58
+ overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
59
+ }
60
+ #trae-dream-skin-panel .ds-header-actions { flex: 0 0 auto; display: flex; align-items: center; gap: 5px; }
61
+ #trae-dream-skin-panel .ds-config-toggle,
62
+ #trae-dream-skin-panel .ds-close,
63
+ #trae-dream-skin-panel .ds-reload {
64
+ border: 1px solid rgba(255, 255, 255, 0.18); border-radius: 6px;
65
+ color: inherit; background: rgba(255, 255, 255, 0.08);
66
+ font: inherit; cursor: pointer;
67
+ }
68
+ #trae-dream-skin-panel .ds-config-toggle { padding: 3px 7px; }
69
+ #trae-dream-skin-panel .ds-close,
70
+ #trae-dream-skin-panel .ds-reload {
71
+ box-sizing: border-box; width: 23px; height: 23px; padding: 0;
72
+ display: flex; align-items: center; justify-content: center;
73
+ font-size: 14px; line-height: 1;
74
+ }
75
+ #trae-dream-skin-panel .ds-config-toggle:hover,
76
+ #trae-dream-skin-panel .ds-close:hover,
77
+ #trae-dream-skin-panel .ds-reload:hover { background: rgba(255, 255, 255, 0.14); }
78
+ @keyframes trae-skin-spin { to { transform: rotate(360deg); } }
79
+ #trae-dream-skin-panel .ds-reload-icon { display: inline-block; line-height: 1; }
80
+ #trae-dream-skin-panel .ds-reload.ds-reload-loading { pointer-events: none; }
81
+ #trae-dream-skin-panel .ds-reload.ds-reload-loading .ds-reload-icon {
82
+ animation: trae-skin-spin 0.8s linear infinite;
83
+ }
84
+ #trae-dream-skin-panel .ds-body {
85
+ flex: 1 1 auto; overflow-y: auto; padding: 12px;
86
+ scrollbar-width: thin; scrollbar-color: rgba(255, 255, 255, 0.22) transparent;
87
+ }
88
+ #trae-dream-skin-panel .ds-body::-webkit-scrollbar { width: 5px; }
89
+ #trae-dream-skin-panel .ds-body::-webkit-scrollbar-track { background: transparent; }
90
+ #trae-dream-skin-panel .ds-body::-webkit-scrollbar-thumb { background: rgba(255, 255, 255, 0.18); border-radius: 999px; }
91
+ #trae-dream-skin-panel .ds-body::-webkit-scrollbar-thumb:hover { background: rgba(255, 255, 255, 0.3); }
92
+ #trae-dream-skin-panel .ds-gallery-view {
93
+ display: grid; grid-template-columns: 1fr; gap: 4px;
94
+ }
95
+ #trae-dream-skin-panel .ds-gallery-view,
96
+ #trae-dream-skin-panel .ds-config-view { animation: trae-skin-fade-in 0.15s ease; }
97
+ /* 分类 Tab */
98
+ #trae-dream-skin-panel .ds-tabs {
99
+ flex: 0 0 auto; display: flex; gap: 4px;
100
+ padding: 8px 12px 6px;
101
+ border-bottom: 1px solid rgba(255, 255, 255, 0.08);
102
+ overflow-x: auto;
103
+ }
104
+ #trae-dream-skin-panel .ds-tabs::-webkit-scrollbar { height: 0; }
105
+ #trae-dream-skin-panel .ds-tab {
106
+ flex: 0 0 auto; padding: 3px 9px; border-radius: 999px;
107
+ border: 1px solid rgba(255, 255, 255, 0.14);
108
+ color: inherit; background: transparent;
109
+ font: inherit; font-size: 11px; cursor: pointer;
110
+ transition: background 0.15s ease, border-color 0.15s ease;
111
+ }
112
+ #trae-dream-skin-panel .ds-tab:hover { background: rgba(255, 255, 255, 0.08); }
113
+ #trae-dream-skin-panel .ds-tab.ds-tab-active {
114
+ background: #7c9cff; border-color: #7c9cff;
115
+ color: #0a0a0a; font-weight: 600;
116
+ }
117
+ body.trae-skin-v2 #trae-dream-skin-panel .ds-tabs { border-bottom-color: var(--trae-skin-border-subtle); }
118
+ body.trae-skin-v2 #trae-dream-skin-panel .ds-tab { border-color: var(--trae-skin-border-subtle); }
119
+ body.trae-skin-v2 #trae-dream-skin-panel .ds-tab:hover { background: var(--trae-skin-info-subtle); }
120
+ body.trae-skin-v2 #trae-dream-skin-panel .ds-tab.ds-tab-active {
121
+ background: var(--trae-skin-accent); border-color: var(--trae-skin-accent);
122
+ color: var(--trae-skin-accent-on);
123
+ }
124
+ #trae-dream-skin-panel .ds-footer {
125
+ flex: 0 0 auto; display: flex; align-items: center; justify-content: space-between;
126
+ gap: 8px; padding: 7px 12px;
127
+ border-top: 1px solid rgba(255, 255, 255, 0.08);
128
+ font-size: 10px;
129
+ }
130
+ #trae-dream-skin-panel .ds-footer-text {
131
+ min-width: 0; opacity: 0.5;
132
+ overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
133
+ }
134
+ #trae-dream-skin-panel .ds-config-view { display: none; }
135
+ #trae-dream-skin-panel .ds-config-head {
136
+ display: flex; align-items: center; justify-content: space-between;
137
+ gap: 8px; margin: 2px 2px 8px;
138
+ }
139
+ #trae-dream-skin-panel .ds-config-name {
140
+ min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
141
+ font-weight: 600;
142
+ }
143
+ #trae-dream-skin-panel .ds-setting-row {
144
+ display: flex; align-items: center; justify-content: space-between;
145
+ gap: 12px; margin: 0 2px 9px; padding: 8px 9px;
146
+ border: 1px solid rgba(255, 255, 255, 0.12); border-radius: 8px;
147
+ background: rgba(255, 255, 255, 0.05);
148
+ }
149
+ #trae-dream-skin-panel .ds-setting-copy { min-width: 0; }
150
+ #trae-dream-skin-panel .ds-setting-label { font-weight: 600; }
151
+ #trae-dream-skin-panel .ds-setting-desc {
152
+ margin-top: 1px; opacity: 0.58; font-size: 10px; white-space: nowrap;
153
+ }
154
+ #trae-dream-skin-panel .ds-setting-row-slider {
155
+ display: block; padding: 9px;
156
+ }
157
+ #trae-dream-skin-panel .ds-slider-head {
158
+ display: flex; align-items: center; justify-content: space-between; gap: 12px;
159
+ }
160
+ #trae-dream-skin-panel .ds-slider-meta {
161
+ flex: 0 0 auto; display: flex; align-items: center; gap: 6px;
162
+ }
163
+ #trae-dream-skin-panel .ds-slider-value {
164
+ min-width: 34px; color: inherit; font-variant-numeric: tabular-nums;
165
+ text-align: right; font-weight: 600;
166
+ }
167
+ #trae-dream-skin-panel .ds-slider-reset {
168
+ padding: 2px 6px; border-radius: 5px;
169
+ border: 1px solid rgba(255, 255, 255, 0.16);
170
+ color: inherit; background: rgba(255, 255, 255, 0.07);
171
+ font: inherit; font-size: 10px; cursor: pointer;
172
+ }
173
+ #trae-dream-skin-panel .ds-slider-reset:hover:not(:disabled) {
174
+ background: rgba(255, 255, 255, 0.14);
175
+ }
176
+ #trae-dream-skin-panel .ds-slider-reset:disabled { opacity: 0.36; cursor: default; }
177
+ #trae-dream-skin-panel .ds-slider {
178
+ --ds-slider-fill: 50%;
179
+ display: block; width: 100%; height: 18px; margin: 7px 0 0;
180
+ padding: 0; appearance: none; -webkit-appearance: none;
181
+ cursor: pointer; background: transparent;
182
+ }
183
+ #trae-dream-skin-panel .ds-slider::-webkit-slider-runnable-track {
184
+ height: 4px; border-radius: 999px;
185
+ background: linear-gradient(90deg,
186
+ var(--trae-skin-accent, #7c9cff) 0 var(--ds-slider-fill),
187
+ rgba(255, 255, 255, 0.15) var(--ds-slider-fill) 100%);
188
+ }
189
+ #trae-dream-skin-panel .ds-slider::-webkit-slider-thumb {
190
+ width: 14px; height: 14px; margin-top: -5px;
191
+ appearance: none; -webkit-appearance: none; border-radius: 50%;
192
+ border: 2px solid var(--trae-skin-accent-on, #111);
193
+ background: var(--trae-skin-accent, #7c9cff);
194
+ box-shadow: 0 1px 5px rgba(0, 0, 0, 0.42);
195
+ }
196
+ #trae-dream-skin-panel .ds-slider:focus-visible { outline: none; }
197
+ #trae-dream-skin-panel .ds-slider:focus-visible::-webkit-slider-thumb {
198
+ box-shadow: var(--trae-skin-focus-ring, 0 0 0 3px rgba(124, 156, 255, 0.45));
199
+ }
200
+ #trae-dream-skin-panel .ds-switch {
201
+ position: relative; flex: 0 0 auto; width: 34px; height: 19px;
202
+ padding: 0; border-radius: 999px; cursor: pointer;
203
+ border: 1px solid rgba(255, 255, 255, 0.22);
204
+ background: rgba(255, 255, 255, 0.12);
205
+ transition: background 0.15s ease, border-color 0.15s ease;
206
+ }
207
+ #trae-dream-skin-panel .ds-switch::after {
208
+ content: ""; position: absolute; width: 13px; height: 13px;
209
+ left: 2px; top: 2px; border-radius: 50%; background: #fff;
210
+ transition: transform 0.15s ease;
211
+ }
212
+ #trae-dream-skin-panel .ds-switch[aria-checked="true"] {
213
+ background: #7c9cff; border-color: #aab7ff;
214
+ }
215
+ #trae-dream-skin-panel .ds-switch[aria-checked="true"]::after {
216
+ transform: translateX(15px);
217
+ }
218
+ #trae-dream-skin-panel .ds-copy-config {
219
+ flex: 0 0 auto; padding: 3px 7px; border-radius: 6px;
220
+ border: 1px solid rgba(255, 255, 255, 0.18);
221
+ color: inherit; background: rgba(255, 255, 255, 0.08);
222
+ font: inherit; cursor: pointer;
223
+ }
224
+ #trae-dream-skin-panel .ds-copy-config:hover { background: rgba(255, 255, 255, 0.14); }
225
+ #trae-dream-skin-panel .ds-config-code {
226
+ box-sizing: border-box; width: 100%; max-height: 44vh; overflow: auto;
227
+ margin: 0; padding: 9px; border-radius: 8px;
228
+ border: 1px solid rgba(255, 255, 255, 0.12);
229
+ color: rgba(255, 255, 255, 0.86); background: rgba(0, 0, 0, 0.28);
230
+ font: 10px/1.55 "JetBrains Mono", "SFMono-Regular", monospace;
231
+ white-space: pre-wrap; overflow-wrap: anywhere; user-select: text;
232
+ }
233
+ #trae-dream-skin-panel .ds-reset-actions {
234
+ display: flex; flex: 0 0 auto; align-items: center; gap: 5px;
235
+ }
236
+ #trae-dream-skin-panel .ds-reset-config,
237
+ #trae-dream-skin-panel .ds-reset-cancel {
238
+ flex: 0 0 auto; padding: 4px 8px; border-radius: 6px;
239
+ border: 1px solid rgba(255, 255, 255, 0.18);
240
+ color: inherit; background: rgba(255, 255, 255, 0.08);
241
+ font: inherit; cursor: pointer;
242
+ }
243
+ #trae-dream-skin-panel .ds-reset-cancel { display: none; }
244
+ #trae-dream-skin-panel .ds-reset-cancel.ds-reset-cancel-visible { display: block; }
245
+ #trae-dream-skin-panel .ds-reset-cancel:hover {
246
+ background: rgba(255, 255, 255, 0.14);
247
+ }
248
+ #trae-dream-skin-panel .ds-reset-config:hover {
249
+ color: #ff8d98; border-color: #ff6675; background: rgba(255, 82, 99, 0.1);
250
+ }
251
+ #trae-dream-skin-panel .ds-reset-config.ds-reset-armed {
252
+ color: #ff8d98; border-color: #ff6675; background: rgba(255, 82, 99, 0.13);
253
+ }
254
+ #trae-dream-skin-panel .ds-card {
255
+ display: flex; align-items: center; gap: 10px;
256
+ padding: 6px 8px 6px 6px;
257
+ border: 1px solid transparent; border-radius: var(--trae-skin-radius-medium, 10px);
258
+ cursor: pointer;
259
+ transition: background 0.15s ease, border-color 0.15s ease;
260
+ }
261
+ #trae-dream-skin-panel .ds-card:hover { background: rgba(255, 255, 255, 0.07); }
262
+ #trae-dream-skin-panel .ds-card.ds-active {
263
+ border-color: #7c9cff;
264
+ background: rgba(124, 156, 255, 0.12);
265
+ }
266
+ #trae-dream-skin-panel .ds-preview {
267
+ flex: 0 0 auto; width: 64px; aspect-ratio: 16 / 9;
268
+ border-radius: 6px;
269
+ background-size: cover; background-position: center;
270
+ }
271
+ #trae-dream-skin-panel .ds-meta { flex: 1 1 auto; min-width: 0; }
272
+ #trae-dream-skin-panel .ds-name {
273
+ display: block; font-size: 12px; font-weight: 600;
274
+ overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
275
+ }
276
+ #trae-dream-skin-panel .ds-desc {
277
+ display: block; margin-top: 1px; font-size: 10px; opacity: 0.65;
278
+ overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
279
+ }
280
+ #trae-dream-skin-panel .ds-badge {
281
+ flex: 0 0 auto;
282
+ display: none; align-items: center; gap: 3px;
283
+ padding: 2px 6px; border-radius: 999px;
284
+ background: #7c9cff; color: #0a0a0a;
285
+ font-size: 10px; font-weight: 600;
286
+ }
287
+ #trae-dream-skin-panel .ds-card.ds-active .ds-badge { display: flex; }
288
+ body.trae-skin-v2 #trae-dream-skin-panel {
289
+ color: var(--trae-skin-text-primary);
290
+ background: var(--trae-skin-popover);
291
+ border-color: var(--trae-skin-border-default);
292
+ border-radius: var(--trae-skin-radius-large);
293
+ box-shadow: var(--trae-skin-shadow-floating);
294
+ }
295
+ body.trae-skin-v2 #trae-dream-skin-panel .ds-card.ds-active {
296
+ border-color: var(--trae-skin-accent);
297
+ background: var(--trae-skin-accent-subtle);
298
+ }
299
+ body.trae-skin-v2 #trae-dream-skin-panel .ds-badge {
300
+ background: var(--trae-skin-accent);
301
+ color: var(--trae-skin-accent-on);
302
+ }
303
+ body.trae-skin-v2 #trae-dream-skin-panel .ds-header { border-bottom-color: var(--trae-skin-border-subtle); }
304
+ body.trae-skin-v2 #trae-dream-skin-panel .ds-footer { border-top-color: var(--trae-skin-border-subtle); }
305
+ body.trae-skin-v2 #trae-dream-skin-panel .ds-body::-webkit-scrollbar-thumb { background: var(--trae-skin-scrollbar-thumb); }
306
+ body.trae-skin-v2 #trae-dream-skin-panel .ds-body::-webkit-scrollbar-thumb:hover { background: var(--trae-skin-scrollbar-hover); }
307
+ body.trae-skin-effects-max #trae-dream-skin-panel .ds-header { padding-right: 16px; }
308
+ body.trae-skin-v2 #trae-dream-skin-panel .ds-config-toggle,
309
+ body.trae-skin-v2 #trae-dream-skin-panel .ds-close,
310
+ body.trae-skin-v2 #trae-dream-skin-panel .ds-reload,
311
+ body.trae-skin-v2 #trae-dream-skin-panel .ds-copy-config,
312
+ body.trae-skin-v2 #trae-dream-skin-panel .ds-reset-config,
313
+ body.trae-skin-v2 #trae-dream-skin-panel .ds-reset-cancel {
314
+ color: var(--trae-skin-text-primary);
315
+ background: var(--trae-skin-info-subtle);
316
+ border-color: var(--trae-skin-border-default);
317
+ }
318
+ body.trae-skin-v2 #trae-dream-skin-panel .ds-config-toggle:hover,
319
+ body.trae-skin-v2 #trae-dream-skin-panel .ds-close:hover,
320
+ body.trae-skin-v2 #trae-dream-skin-panel .ds-reload:hover,
321
+ body.trae-skin-v2 #trae-dream-skin-panel .ds-copy-config:hover,
322
+ body.trae-skin-v2 #trae-dream-skin-panel .ds-reset-config:hover,
323
+ body.trae-skin-v2 #trae-dream-skin-panel .ds-reset-cancel:hover {
324
+ color: var(--trae-skin-accent);
325
+ border-color: var(--trae-skin-accent);
326
+ }
327
+ body.trae-skin-v2 #trae-dream-skin-panel .ds-reset-config.ds-reset-armed {
328
+ color: var(--trae-skin-error);
329
+ border-color: var(--trae-skin-error);
330
+ }
331
+ body.trae-skin-v2 #trae-dream-skin-panel .ds-config-code {
332
+ color: var(--trae-skin-text-secondary);
333
+ background: var(--trae-skin-chat-code);
334
+ border-color: var(--trae-skin-border-subtle);
335
+ }
336
+ body.trae-skin-v2 #trae-dream-skin-panel .ds-setting-row {
337
+ background: var(--trae-skin-info-subtle);
338
+ border-color: var(--trae-skin-border-subtle);
339
+ }
340
+ body.trae-skin-v2 #trae-dream-skin-panel .ds-switch[aria-checked="true"] {
341
+ background: var(--trae-skin-accent);
342
+ border-color: var(--trae-skin-border-strong);
343
+ }
344
+ body.trae-skin-v2 #trae-dream-skin-panel .ds-switch[aria-checked="true"]::after {
345
+ background: var(--trae-skin-accent-on);
346
+ }