cardbuddy 0.9.1 → 0.10.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 +17 -2
- package/dist/cli.js +3 -0
- package/dist/config.js +7 -0
- package/dist/portGuard.js +293 -0
- package/dist/preview-editor/assets/index-C_UKS0NF.css +1 -0
- package/dist/preview-editor/assets/{index-B9MOriNv.js → index-D1iIJ4sl.js} +14 -13
- package/dist/preview-editor/index.html +2 -2
- package/dist/server-core/assetProxy.js +3 -22
- package/dist/server-core/buildDataFromSchema.js +36 -4
- package/dist/server-core/cardListCache.js +0 -17
- package/dist/server-core/index.js +3 -5
- package/dist/server-core/logStream.js +1 -6
- package/dist/standalone.js +24 -8
- package/dist/vendored/App.vue +136 -46
- package/dist/vendored/components/ComponentPalette.vue +1 -1
- package/dist/vendored/components/DebugPanel.vue +735 -90
- package/dist/vendored/components/NumberStepper.vue +125 -0
- package/dist/vendored/components/ProgressSlider.vue +9 -1
- package/dist/vendored/components/StructureTree.vue +2 -2
- package/dist/vendored/runtime/clipboard-node.js +0 -5
- package/dist/vendored/styles/app.css +618 -210
- package/dist/vendored/styles/card-gallery.css +3 -3
- package/dist/vendored/styles/card-select.css +13 -6
- package/dist/vendored/styles/dropdown.css +1 -2
- package/dist/vendored/styles/json-tree.css +3 -3
- package/dist/vendored/styles/node-inspector.css +7 -294
- package/dist/vendored/styles/setters.css +48 -49
- package/dist/vendored/styles/structure-tree.css +6 -11
- package/package.json +1 -1
- package/dist/preview-editor/assets/index-CwD14gm3.css +0 -1
- package/dist/vendored/assets/logo.png +0 -0
|
@@ -115,7 +115,13 @@
|
|
|
115
115
|
--code-fn: #d2a8ff;
|
|
116
116
|
--code-var: #ffa657;
|
|
117
117
|
--code-binding: #56d4dd;
|
|
118
|
-
|
|
118
|
+
/* === 变量类型标签配色(--type-*):变量列表类型 chip 专用 === */
|
|
119
|
+
/* 暗色沿用代码高亮调色板,与代码区同类型字面量同色呼应 */
|
|
120
|
+
--type-string: var(--code-str);
|
|
121
|
+
--type-number: var(--code-num);
|
|
122
|
+
--type-boolean: var(--code-kw);
|
|
123
|
+
--type-array: var(--code-fn);
|
|
124
|
+
--type-object: var(--code-prop);
|
|
119
125
|
/* === CardBuddy UI 尺寸与节奏规范手册 §四(单一来源,尺寸/节奏不随主题变)== */
|
|
120
126
|
/* 间距 8 pt 网格 */
|
|
121
127
|
--space-0: 0;
|
|
@@ -158,6 +164,11 @@
|
|
|
158
164
|
--icon-lg: 20px;
|
|
159
165
|
--icon-xl: 24px;
|
|
160
166
|
--stroke: 1.75;
|
|
167
|
+
/* 发丝线粗细:页面里所有「分割线 / 单边分隔描边」的统一尺寸(dpr 自适应见下方媒体查询)。
|
|
168
|
+
普通屏 1px;dpr ≥ 2 时收到 0.5px(= 1 个物理像素),线条更锐利不发虚。
|
|
169
|
+
控件四边描边(border: 1px solid …)不算分割线,仍固定 1px 以保持控件视觉重量;
|
|
170
|
+
卡片内容组件(.ce_divider 等自动生成样式)与画布参考线(.ce-guide--*)同样不跟随。 */
|
|
171
|
+
--hairline: 1px;
|
|
161
172
|
/* 阴影形状(颜色交给配色手册) */
|
|
162
173
|
--shadow-1: 0 1px 2px var(--shadow-card);
|
|
163
174
|
--shadow-2: 0 4px 12px var(--shadow-card);
|
|
@@ -177,74 +188,93 @@
|
|
|
177
188
|
--z-toast-app: 2100;
|
|
178
189
|
}
|
|
179
190
|
|
|
191
|
+
/* dpr ≥ 2 → 发丝线收到半像素。(min-resolution: 2dppx) 与 devicePixelRatio >= 2 等价,
|
|
192
|
+
浏览器缩放、拖到不同密度屏幕时由浏览器自动重算,无需 JS 介入也不会有首帧闪动;
|
|
193
|
+
-webkit-min-device-pixel-ratio 兜住不认 resolution 的旧 Safari。 */
|
|
194
|
+
@media (min-resolution: 2dppx), (-webkit-min-device-pixel-ratio: 2) {
|
|
195
|
+
:root {
|
|
196
|
+
--hairline: 0.5px;
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
|
|
180
200
|
/* 浅色主题:以白色为基色调,复用同名变量整体切换。仅覆盖配色变量,布局不变。 */
|
|
181
201
|
:root[data-theme='light'] {
|
|
182
|
-
|
|
202
|
+
/* 中性阶梯统一走 Slate 蓝灰族(与《深浅主题配色规范手册》§〇.3 对齐):
|
|
203
|
+
stage 最沉 → app → panel(白) → input/hover/soft 逐级提亮,避免旧值「中性脏灰 + 蓝灰边框」
|
|
204
|
+
两个灰族混用导致的发灰发脏;控件填充收到近白,白面板上不再糊灰块。 */
|
|
205
|
+
--bg-app: #f4f6fa;
|
|
183
206
|
--bg-bar: #ffffff;
|
|
184
207
|
--bg-panel: #ffffff;
|
|
185
|
-
--bg-stage: #
|
|
186
|
-
--bg-input: #
|
|
187
|
-
--bg-hover: #
|
|
188
|
-
--bg-active: #
|
|
189
|
-
--bg-pop: rgba(255, 255, 255, 0.
|
|
190
|
-
--bg-soft: #
|
|
191
|
-
--border: #
|
|
192
|
-
--border-strong: #
|
|
193
|
-
--text: #
|
|
194
|
-
--text-dim: #
|
|
195
|
-
|
|
208
|
+
--bg-stage: #e9edf4;
|
|
209
|
+
--bg-input: #f6f8fb;
|
|
210
|
+
--bg-hover: #f1f4f9;
|
|
211
|
+
--bg-active: #e4e9f2;
|
|
212
|
+
--bg-pop: rgba(255, 255, 255, 0.98);
|
|
213
|
+
--bg-soft: #eef2f8;
|
|
214
|
+
--border: #e2e8f0;
|
|
215
|
+
--border-strong: #cbd5e1;
|
|
216
|
+
--text: #1e293b;
|
|
217
|
+
--text-dim: #475569;
|
|
218
|
+
/* faint 收到 slate-500/600 之间:白底 5.4:1、stage 底 4.6:1,11px 元信息不发虚也不糊
|
|
219
|
+
(旧 #8a93a3 白底仅 ~3.1:1) */
|
|
220
|
+
--text-faint: #5f6b7d;
|
|
196
221
|
--accent: #4F6BF2;
|
|
197
222
|
--accent-2: #3D57D9;
|
|
198
|
-
--accent-soft: rgba(79, 107, 242, 0.
|
|
199
|
-
--accent-border: rgba(79, 107, 242, 0.
|
|
223
|
+
--accent-soft: rgba(79, 107, 242, 0.1);
|
|
224
|
+
--accent-border: rgba(79, 107, 242, 0.35);
|
|
200
225
|
--accent-hover: #3D57D9;
|
|
201
226
|
--danger: #EF4444;
|
|
202
|
-
--danger-soft: rgba(239, 68, 68, 0.
|
|
227
|
+
--danger-soft: rgba(239, 68, 68, 0.1);
|
|
203
228
|
--danger-hover: #DC2626;
|
|
204
229
|
--warn: #F59E0B;
|
|
205
|
-
--warn-soft: rgba(245, 158, 11, 0.
|
|
230
|
+
--warn-soft: rgba(245, 158, 11, 0.12);
|
|
206
231
|
--warn-border: rgba(245, 158, 11, 0.4);
|
|
207
232
|
--warn-hover: #D97706;
|
|
208
233
|
--on-warn: #0F1115;
|
|
209
234
|
--ok: #10B981;
|
|
210
|
-
--ok-soft: rgba(16, 185, 129, 0.
|
|
235
|
+
--ok-soft: rgba(16, 185, 129, 0.12);
|
|
211
236
|
--ok-border: rgba(16, 185, 129, 0.4);
|
|
212
|
-
|
|
213
|
-
|
|
237
|
+
/* 语义深色变体与各自基色同族:绿=emerald-700、琥珀=amber-700、红=red-700,
|
|
238
|
+
不再混用 GitHub green / brick red 等外来色相(白底对比均 ≥ 4.5:1) */
|
|
239
|
+
--ok-strong: #047857;
|
|
240
|
+
--ok-solid: #047857;
|
|
214
241
|
--on-ok: #ffffff;
|
|
215
242
|
--info: #4F6BF2;
|
|
216
|
-
--info-soft: rgba(79, 107, 242, 0.
|
|
217
|
-
--info-border: rgba(79, 107, 242, 0.
|
|
243
|
+
--info-soft: rgba(79, 107, 242, 0.1);
|
|
244
|
+
--info-border: rgba(79, 107, 242, 0.35);
|
|
218
245
|
--on-accent: #ffffff;
|
|
219
246
|
--radius: 8px;
|
|
220
247
|
--radius-sm: 6px;
|
|
221
|
-
|
|
222
|
-
--shadow-
|
|
223
|
-
--shadow-
|
|
224
|
-
--shadow-
|
|
225
|
-
--
|
|
226
|
-
--scrim
|
|
248
|
+
/* 阴影收到手册量级(card 0.08~0.12):旧 0.16 配 8~24px 模糊会在白底上糊出一圈灰雾 */
|
|
249
|
+
--shadow-pop: rgba(15, 23, 42, 0.14);
|
|
250
|
+
--shadow-card: rgba(15, 23, 42, 0.1);
|
|
251
|
+
--shadow-drawer: rgba(15, 23, 42, 0.12);
|
|
252
|
+
--shadow-toast: rgba(15, 23, 42, 0.1);
|
|
253
|
+
--scrim: rgba(15, 23, 42, 0.4);
|
|
254
|
+
--scrim-soft: rgba(15, 23, 42, 0.3);
|
|
227
255
|
--scrim-faint: rgba(15, 23, 42, 0.22);
|
|
228
|
-
--bar-grad: linear-gradient(180deg, #ffffff, #
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
--
|
|
232
|
-
--
|
|
233
|
-
--
|
|
234
|
-
--
|
|
235
|
-
--
|
|
236
|
-
--api-item-
|
|
237
|
-
--
|
|
238
|
-
--
|
|
239
|
-
--
|
|
240
|
-
--tag-
|
|
241
|
-
--tag-
|
|
242
|
-
--
|
|
243
|
-
--
|
|
244
|
-
--log-warn-
|
|
245
|
-
--
|
|
246
|
-
--
|
|
247
|
-
--scroll-thumb
|
|
256
|
+
--bar-grad: linear-gradient(180deg, #ffffff, #f6f8fc);
|
|
257
|
+
/* 高亮 / 描边类半透明统一挂到主色 #4F6BF2(79,107,242)上,替换旧的电光蓝 #5b6cff(91,108,255),
|
|
258
|
+
与按钮 / 选中态同一色相,浅色下不再跳色 */
|
|
259
|
+
--splitter: #4F6BF2;
|
|
260
|
+
--splitter-grip: rgba(15, 23, 42, 0.18);
|
|
261
|
+
--overlay-tint: rgba(15, 23, 42, 0.03);
|
|
262
|
+
--overlay-tint-strong: rgba(15, 23, 42, 0.08);
|
|
263
|
+
--err-item-fg: #b91c1c;
|
|
264
|
+
--api-item-fg: #3d57d9;
|
|
265
|
+
--api-item-border: rgba(79, 107, 242, 0.22);
|
|
266
|
+
--api-item-bg: rgba(79, 107, 242, 0.06);
|
|
267
|
+
--copy-ok: #047857;
|
|
268
|
+
--tag-ok-fg: #047857;
|
|
269
|
+
--tag-ok-bg: rgba(16, 185, 129, 0.1);
|
|
270
|
+
--tag-warn-fg: #b45309;
|
|
271
|
+
--tag-warn-bg: rgba(245, 158, 11, 0.1);
|
|
272
|
+
--log-warn-fg: #b45309;
|
|
273
|
+
--log-warn-bg: rgba(245, 158, 11, 0.1);
|
|
274
|
+
--log-warn-border: rgba(245, 158, 11, 0.35);
|
|
275
|
+
--scroll-thumb: rgba(15, 23, 42, 0.16);
|
|
276
|
+
--scroll-thumb-hover: rgba(15, 23, 42, 0.28);
|
|
277
|
+
--scroll-thumb-idle: rgba(15, 23, 42, 0.08);
|
|
248
278
|
/* 语法高亮配色:浅色主题参考 GitHub Light / VSCode Light+,保证白底上的可读性 */
|
|
249
279
|
--jt-key: #953800;
|
|
250
280
|
--jt-string: #0a3069;
|
|
@@ -252,15 +282,15 @@
|
|
|
252
282
|
--jt-boolean: #cf222e;
|
|
253
283
|
--jt-null: #57606a;
|
|
254
284
|
--jt-faint: #6b7280;
|
|
255
|
-
--jt-ring: rgba(
|
|
285
|
+
--jt-ring: rgba(79, 107, 242, 0.28);
|
|
256
286
|
--jt-del-fg: #cf222e;
|
|
257
287
|
--jt-del-bg: rgba(207, 34, 46, 0.12);
|
|
258
|
-
--jt-add-bg: rgba(
|
|
259
|
-
--st-label: #
|
|
288
|
+
--jt-add-bg: rgba(79, 107, 242, 0.1);
|
|
289
|
+
--st-label: #1e293b;
|
|
260
290
|
--st-id: #64748b;
|
|
261
291
|
--st-badge-bg: #4F6BF2;
|
|
262
292
|
--st-badge-fg: #ffffff;
|
|
263
|
-
--st-hl-bg: rgba(79, 107, 242, 0.
|
|
293
|
+
--st-hl-bg: rgba(79, 107, 242, 0.14);
|
|
264
294
|
--code-comment: #6e7781;
|
|
265
295
|
--code-punc: #6e7781;
|
|
266
296
|
--code-prop: #953800;
|
|
@@ -270,7 +300,13 @@
|
|
|
270
300
|
--code-fn: #8250df;
|
|
271
301
|
--code-var: #953800;
|
|
272
302
|
--code-binding: #0d9488;
|
|
273
|
-
--code
|
|
303
|
+
/* 类型 chip 专用色在亮色下单独校正(不影响代码高亮 --code-*):
|
|
304
|
+
- string:--code-str 藏青与 --code-num 蓝同属蓝调易混,改走绿系;
|
|
305
|
+
- boolean / array:--code-kw 红、--code-fn 紫在 10px 小字上对比不足 AA(4.5:1),各压深一档;
|
|
306
|
+
- number / object 亮色下已达标,继续复用 --code-*。 */
|
|
307
|
+
--type-string: #116329;
|
|
308
|
+
--type-boolean: #a40e26;
|
|
309
|
+
--type-array: #6639ba;
|
|
274
310
|
}
|
|
275
311
|
|
|
276
312
|
* {
|
|
@@ -366,7 +402,7 @@ body {
|
|
|
366
402
|
padding: 0 16px;
|
|
367
403
|
height: 48px;
|
|
368
404
|
background: var(--bar-grad);
|
|
369
|
-
border-bottom:
|
|
405
|
+
border-bottom: var(--hairline) solid var(--border);
|
|
370
406
|
flex: 0 0 auto;
|
|
371
407
|
}
|
|
372
408
|
.app__logo {
|
|
@@ -421,7 +457,11 @@ body {
|
|
|
421
457
|
}
|
|
422
458
|
.app__btn--icon {
|
|
423
459
|
height: var(--ctrl-md);
|
|
424
|
-
|
|
460
|
+
/* 纯图标按钮(无文字)视觉取正方:宽随 aspect-ratio 跟高度走、图标居中,
|
|
461
|
+
不再出现 33×28 这类扁矩形;顶栏覆写高度为 --ctrl-sm 后仍自动保持正方 */
|
|
462
|
+
aspect-ratio: 1;
|
|
463
|
+
padding: 0;
|
|
464
|
+
justify-content: center;
|
|
425
465
|
}
|
|
426
466
|
/* 开关型图标按钮的「开启」态(如右侧接口调用面板开关):用主题色标示当前已展开 */
|
|
427
467
|
.app__btn--active {
|
|
@@ -533,43 +573,11 @@ body {
|
|
|
533
573
|
background: var(--accent);
|
|
534
574
|
color: var(--on-accent);
|
|
535
575
|
border-color: var(--accent);
|
|
536
|
-
/* box-shadow: 0 0 0 2px var(--accent-soft); */
|
|
537
576
|
}
|
|
538
577
|
.app__btn--history-save.is-dirty:not(:disabled):hover {
|
|
539
578
|
background: var(--accent-2);
|
|
540
579
|
border-color: var(--accent-2);
|
|
541
580
|
}
|
|
542
|
-
/* 发布按钮(写回 FinMall 前的发布动作),与本地保存/远端分组区分 */
|
|
543
|
-
.app__btn--publish {
|
|
544
|
-
display: inline-flex;
|
|
545
|
-
align-items: center;
|
|
546
|
-
gap: 5px;
|
|
547
|
-
height: var(--ctrl-md);
|
|
548
|
-
padding: 0 12px;
|
|
549
|
-
color: var(--info);
|
|
550
|
-
border-color: var(--info-border);
|
|
551
|
-
background: var(--info-soft);
|
|
552
|
-
}
|
|
553
|
-
.app__btn--publish:hover:not(:disabled) {
|
|
554
|
-
background: var(--info);
|
|
555
|
-
color: var(--on-accent);
|
|
556
|
-
border-color: var(--info);
|
|
557
|
-
}
|
|
558
|
-
.app__btn--publish:disabled {
|
|
559
|
-
opacity: 0.5;
|
|
560
|
-
cursor: default;
|
|
561
|
-
}
|
|
562
|
-
/* 已保存但读回校验不符:橙色警示,提示「交易成功但内容未落库」 */
|
|
563
|
-
.app__btn--publish.app__btn--warn {
|
|
564
|
-
color: var(--warn);
|
|
565
|
-
border-color: var(--warn-border);
|
|
566
|
-
background: var(--warn-soft);
|
|
567
|
-
}
|
|
568
|
-
.app__btn--publish.app__btn--warn:hover:not(:disabled) {
|
|
569
|
-
background: var(--warn);
|
|
570
|
-
color: var(--on-accent);
|
|
571
|
-
border-color: var(--warn);
|
|
572
|
-
}
|
|
573
581
|
.app__bar-actions {
|
|
574
582
|
margin-left: auto; /* 把这一组推到顶栏最右侧 */
|
|
575
583
|
display: flex;
|
|
@@ -610,54 +618,90 @@ body {
|
|
|
610
618
|
color: var(--danger);
|
|
611
619
|
border-color: var(--danger);
|
|
612
620
|
}
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
621
|
+
/* 设置浮层:与全应用轻量浮层同一语言——--bg-panel 实底、发丝线分栏头、--radius-lg 圆角、
|
|
622
|
+
--shadow-3 投影;锚定顶栏「连接」按钮下方,进出场复用统一 pop 弹性动画(缩放原点右上)。 */
|
|
623
|
+
.app__dev-svc-mask {
|
|
624
|
+
position: fixed;
|
|
625
|
+
inset: 0;
|
|
626
|
+
z-index: var(--z-overlay);
|
|
616
627
|
}
|
|
617
628
|
.app__dev-svc-panel {
|
|
618
629
|
position: absolute;
|
|
619
630
|
top: calc(100% + 8px);
|
|
620
631
|
right: 0;
|
|
621
|
-
z-index: var(--z-
|
|
622
|
-
width:
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
border:
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
color: var(--text, #e6e9ef);
|
|
632
|
+
z-index: var(--z-pop);
|
|
633
|
+
width: 300px;
|
|
634
|
+
background: var(--bg-panel);
|
|
635
|
+
border: 1px solid var(--border-strong);
|
|
636
|
+
border-radius: var(--radius-lg);
|
|
637
|
+
box-shadow: var(--shadow-3);
|
|
638
|
+
color: var(--text);
|
|
629
639
|
text-align: left;
|
|
640
|
+
overflow: hidden;
|
|
641
|
+
transform-origin: top right;
|
|
642
|
+
}
|
|
643
|
+
.app__dev-svc-head {
|
|
644
|
+
display: flex;
|
|
645
|
+
align-items: center;
|
|
646
|
+
justify-content: space-between;
|
|
647
|
+
gap: 8px;
|
|
648
|
+
padding: 7px 8px 7px 12px;
|
|
649
|
+
border-bottom: var(--hairline) solid var(--border);
|
|
630
650
|
}
|
|
631
651
|
.app__dev-svc-title {
|
|
632
|
-
font-size:
|
|
652
|
+
font-size: 12px;
|
|
633
653
|
font-weight: 600;
|
|
634
|
-
|
|
654
|
+
color: var(--text);
|
|
655
|
+
}
|
|
656
|
+
/* 头部关闭按钮:与节点面板 / 组件面板关闭按钮同规格(22px 弱按钮) */
|
|
657
|
+
.app__dev-svc-close {
|
|
658
|
+
width: 22px;
|
|
659
|
+
height: 22px;
|
|
660
|
+
display: inline-flex;
|
|
661
|
+
align-items: center;
|
|
662
|
+
justify-content: center;
|
|
663
|
+
background: none;
|
|
664
|
+
border: none;
|
|
665
|
+
border-radius: 6px;
|
|
666
|
+
color: var(--text-faint);
|
|
667
|
+
font-size: 14px;
|
|
668
|
+
line-height: 1;
|
|
669
|
+
cursor: pointer;
|
|
670
|
+
transition: background 0.15s, color 0.15s;
|
|
671
|
+
}
|
|
672
|
+
.app__dev-svc-close::before {
|
|
673
|
+
content: '✕';
|
|
674
|
+
}
|
|
675
|
+
.app__dev-svc-close:hover {
|
|
676
|
+
background: var(--bg-hover);
|
|
677
|
+
color: var(--text);
|
|
678
|
+
}
|
|
679
|
+
.app__dev-svc-body {
|
|
680
|
+
display: flex;
|
|
681
|
+
flex-direction: column;
|
|
682
|
+
gap: 12px;
|
|
683
|
+
padding: 12px;
|
|
635
684
|
}
|
|
636
685
|
.app__dev-svc-row {
|
|
637
686
|
display: flex;
|
|
638
687
|
align-items: center;
|
|
639
688
|
justify-content: space-between;
|
|
640
|
-
gap:
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
color: var(--text-dim, #9aa3b2);
|
|
689
|
+
gap: 8px;
|
|
690
|
+
font-size: 11px;
|
|
691
|
+
color: var(--text-dim);
|
|
644
692
|
}
|
|
645
693
|
.app__dev-svc-row--col {
|
|
646
694
|
flex-direction: column;
|
|
647
695
|
align-items: stretch;
|
|
696
|
+
gap: 6px;
|
|
648
697
|
}
|
|
649
|
-
|
|
650
|
-
margin-bottom: 4px;
|
|
651
|
-
}
|
|
652
|
-
/* 与节点编辑面板 setter(setters.css .st-input / .st-textarea)保持完全一致:
|
|
653
|
-
--bg-input 底色、--border 边框、5px 圆角、focus 切 --accent-border 边框 + --accent-soft 光环。 */
|
|
698
|
+
/* 输入框与节点属性面板输入家族同规格:28px 高、--bg-input 底、focus 主色描边 + 光环 */
|
|
654
699
|
.app__dev-svc-row input[type='text'],
|
|
655
|
-
.app__dev-svc-row input[type='password']
|
|
656
|
-
.app__dev-svc-row textarea {
|
|
700
|
+
.app__dev-svc-row input[type='password'] {
|
|
657
701
|
width: 100%;
|
|
658
702
|
min-width: 0;
|
|
659
|
-
height: var(--ctrl-
|
|
660
|
-
padding: 0
|
|
703
|
+
height: var(--ctrl-sm);
|
|
704
|
+
padding: 0 10px;
|
|
661
705
|
background: var(--bg-input);
|
|
662
706
|
border: 1px solid var(--border);
|
|
663
707
|
border-radius: var(--radius-sm);
|
|
@@ -667,45 +711,38 @@ body {
|
|
|
667
711
|
outline: none;
|
|
668
712
|
transition: border-color 0.15s, box-shadow 0.15s;
|
|
669
713
|
}
|
|
670
|
-
.app__dev-svc-row textarea {
|
|
671
|
-
height: auto;
|
|
672
|
-
min-height: 84px;
|
|
673
|
-
padding: 6px 8px;
|
|
674
|
-
line-height: 1.5;
|
|
675
|
-
resize: none;
|
|
676
|
-
}
|
|
677
714
|
.app__dev-svc-row input[type='text']:focus,
|
|
678
|
-
.app__dev-svc-row input[type='password']:focus
|
|
679
|
-
.app__dev-svc-row textarea:focus {
|
|
715
|
+
.app__dev-svc-row input[type='password']:focus {
|
|
680
716
|
border-color: var(--accent-border);
|
|
681
717
|
box-shadow: 0 0 0 2px var(--accent-soft);
|
|
682
718
|
}
|
|
683
|
-
.app__dev-svc-row input::placeholder
|
|
684
|
-
.app__dev-svc-row textarea::placeholder {
|
|
719
|
+
.app__dev-svc-row input::placeholder {
|
|
685
720
|
color: var(--text-faint);
|
|
686
721
|
}
|
|
687
722
|
.app__dev-svc-row .switch {
|
|
688
723
|
flex: 0 0 auto;
|
|
689
724
|
}
|
|
725
|
+
/* 未生效提示:琥珀色软底注记块,替代裸文字,警告语义一眼可辨 */
|
|
726
|
+
.app__dev-svc-hint {
|
|
727
|
+
margin: 0;
|
|
728
|
+
padding: 6px 8px;
|
|
729
|
+
border-radius: var(--radius-sm);
|
|
730
|
+
background: var(--warn-soft);
|
|
731
|
+
color: var(--warn);
|
|
732
|
+
font-size: 11px;
|
|
733
|
+
line-height: 1.55;
|
|
734
|
+
}
|
|
690
735
|
.app__dev-svc-actions {
|
|
691
736
|
display: flex;
|
|
692
737
|
gap: 8px;
|
|
693
|
-
margin-top: 4px;
|
|
694
738
|
justify-content: flex-end;
|
|
695
739
|
}
|
|
696
|
-
.app__dev-svc-hint {
|
|
697
|
-
margin: 8px 0 0;
|
|
698
|
-
font-size: 11px;
|
|
699
|
-
line-height: 1.5;
|
|
700
|
-
color: var(--warn, #e0a23a);
|
|
701
|
-
}
|
|
702
740
|
/* 部署态未配置本地服务:顶部提示条 */
|
|
703
741
|
.app__nosvc-banner {
|
|
704
742
|
padding: 8px 14px;
|
|
705
743
|
font-size: 13px;
|
|
706
744
|
color: var(--warn, #e0a23a);
|
|
707
745
|
background: var(--warn-soft, rgba(224, 162, 58, 0.12));
|
|
708
|
-
/* border-bottom: 1px solid var(--warn-border, rgba(224, 162, 58, 0.35)); */
|
|
709
746
|
}
|
|
710
747
|
/* 「已断开」提示条:红色(连接彻底失败 / 服务已停止),区别于未配置的琥珀色 */
|
|
711
748
|
.app__nosvc-banner--disconnected {
|
|
@@ -877,6 +914,45 @@ body {
|
|
|
877
914
|
0%, 100% { opacity: 1; }
|
|
878
915
|
50% { opacity: 0.3; }
|
|
879
916
|
}
|
|
917
|
+
/* 校验通过:徽标局部庆祝动画 */
|
|
918
|
+
.app__badge.is-celebrating { animation: app-badge-pop 0.5s ease; }
|
|
919
|
+
@keyframes app-badge-pop {
|
|
920
|
+
0% { transform: scale(1); }
|
|
921
|
+
35% { transform: scale(1.18); }
|
|
922
|
+
100% { transform: scale(1); }
|
|
923
|
+
}
|
|
924
|
+
.app__confetti {
|
|
925
|
+
position: fixed;
|
|
926
|
+
pointer-events: none;
|
|
927
|
+
z-index: 9999;
|
|
928
|
+
}
|
|
929
|
+
.app__confetti-bit {
|
|
930
|
+
position: absolute;
|
|
931
|
+
left: 0;
|
|
932
|
+
top: 0;
|
|
933
|
+
border-radius: 0;
|
|
934
|
+
/* 玻璃刻面:一角亮白高光 → 主色 → 暗刻面,半透明;clip-path 裁出尖锐碎片 */
|
|
935
|
+
background: linear-gradient(135deg,
|
|
936
|
+
rgba(255, 255, 255, 0.95) 0%,
|
|
937
|
+
var(--c, #52c41a) 42%,
|
|
938
|
+
color-mix(in srgb, var(--c, #52c41a) 62%, #000) 100%);
|
|
939
|
+
clip-path: var(--clip, polygon(50% 0%, 0% 100%, 100% 100%));
|
|
940
|
+
opacity: var(--o, 0.9);
|
|
941
|
+
transform: translate(-50%, -50%);
|
|
942
|
+
animation: app-confetti-fly 0.7s ease-out forwards;
|
|
943
|
+
/* 细微暗边,让半透明玻璃在浅色顶栏上也立得住 */
|
|
944
|
+
filter: drop-shadow(0 0 1px rgba(0, 0, 0, 0.18));
|
|
945
|
+
}
|
|
946
|
+
@keyframes app-confetti-fly {
|
|
947
|
+
0% {
|
|
948
|
+
opacity: var(--o, 0.9);
|
|
949
|
+
transform: translate(calc(-50% + var(--sx, 0px)), calc(-50% + var(--sy, 0px))) rotate(0deg) scale(0.4);
|
|
950
|
+
}
|
|
951
|
+
100% {
|
|
952
|
+
opacity: 0;
|
|
953
|
+
transform: translate(calc(-50% + var(--sx, 0px) + var(--tx)), calc(-50% + var(--sy, 0px) + var(--ty))) rotate(var(--rot)) scale(1);
|
|
954
|
+
}
|
|
955
|
+
}
|
|
880
956
|
.app__icon {
|
|
881
957
|
width: 15px;
|
|
882
958
|
height: 15px;
|
|
@@ -906,6 +982,7 @@ body {
|
|
|
906
982
|
flex-direction: column;
|
|
907
983
|
min-width: 0;
|
|
908
984
|
min-height: 0;
|
|
985
|
+
border-left: var(--hairline) solid var(--border);
|
|
909
986
|
}
|
|
910
987
|
.workside__bar {
|
|
911
988
|
flex: 0 0 auto;
|
|
@@ -1015,7 +1092,7 @@ body {
|
|
|
1015
1092
|
align-items: center;
|
|
1016
1093
|
gap: 4px;
|
|
1017
1094
|
padding: 0 8px;
|
|
1018
|
-
border-bottom:
|
|
1095
|
+
border-bottom: var(--hairline) solid var(--border);
|
|
1019
1096
|
}
|
|
1020
1097
|
.canvas-bar__spacer {
|
|
1021
1098
|
flex: 1 1 auto;
|
|
@@ -1064,6 +1141,10 @@ body {
|
|
|
1064
1141
|
.canvas-bar__swatch--gray {
|
|
1065
1142
|
background: #f0f0f0;
|
|
1066
1143
|
}
|
|
1144
|
+
/* 近黑而非纯 #000:留出一点灰阶,深色卡片边缘与阴影仍能分辨 */
|
|
1145
|
+
.canvas-bar__swatch--black {
|
|
1146
|
+
background: #1c1c1e;
|
|
1147
|
+
}
|
|
1067
1148
|
.canvas-bar__swatch--checker {
|
|
1068
1149
|
background-color: #ffffff;
|
|
1069
1150
|
background-image:
|
|
@@ -1138,13 +1219,22 @@ body {
|
|
|
1138
1219
|
border: none;
|
|
1139
1220
|
padding: 0 10px;
|
|
1140
1221
|
}
|
|
1141
|
-
.statusbar .app__btn--connected { color: var(--ok); }
|
|
1142
1222
|
.statusbar .app__btn--reconnecting { color: var(--warn); }
|
|
1143
1223
|
.statusbar .app__btn--disconnected { color: var(--danger); }
|
|
1144
1224
|
.statusbar .app__btn--warn { color: var(--warn); }
|
|
1225
|
+
/* 连接成功回落状态栏默认色(铁律:仅 warn / danger 着语义色);顶栏「连接」按钮的绿色不受影响。
|
|
1226
|
+
hover 同statusbar 读数语言:极淡底色 + 提亮文字,不引入 ok 语义色。 */
|
|
1227
|
+
.statusbar .app__btn--connected {
|
|
1228
|
+
color: var(--text-dim);
|
|
1229
|
+
}
|
|
1230
|
+
.statusbar .app__btn--connected:hover:not(:disabled) {
|
|
1231
|
+
background: var(--bg-hover);
|
|
1232
|
+
color: var(--text);
|
|
1233
|
+
border-color: transparent;
|
|
1234
|
+
}
|
|
1145
1235
|
/* 连接指示器现为可点按钮(开合底部「服务日志」面板):保持状态栏读数观感
|
|
1146
|
-
(无边框 /
|
|
1147
|
-
|
|
1236
|
+
(无边框 / 无圆角、不设选中态),hover 仅加极淡底色提示可点。
|
|
1237
|
+
配色同状态栏铁律:仅重连(warn)/ 断开(danger)/ 未配置(warn)着语义色,连接成功用默认色。 */
|
|
1148
1238
|
button.statusbar__conn {
|
|
1149
1239
|
cursor: pointer;
|
|
1150
1240
|
font: inherit;
|
|
@@ -1198,6 +1288,9 @@ button.statusbar__conn {
|
|
|
1198
1288
|
.phone__screen--bg-gray {
|
|
1199
1289
|
background: #f0f0f0;
|
|
1200
1290
|
}
|
|
1291
|
+
.phone__screen--bg-black {
|
|
1292
|
+
background: #1c1c1e;
|
|
1293
|
+
}
|
|
1201
1294
|
.phone__screen::-webkit-scrollbar {
|
|
1202
1295
|
display: none; /* WebKit:隐藏滚动条(仍可滚动) */
|
|
1203
1296
|
}
|
|
@@ -1250,7 +1343,6 @@ button.statusbar__conn {
|
|
|
1250
1343
|
/* 中栏最小宽度:不得小于三分之一屏幕宽度(与中右分隔条 startApiDrag 的夹取一致) */
|
|
1251
1344
|
min-width: 33.333vw;
|
|
1252
1345
|
background: var(--bg-panel);
|
|
1253
|
-
border-left: 1px solid var(--border);
|
|
1254
1346
|
}
|
|
1255
1347
|
|
|
1256
1348
|
/* 右侧常驻「接口调用」面板:默认 360px 宽,可经中右分隔条拖拽调节(最小 320px,
|
|
@@ -1264,7 +1356,7 @@ button.statusbar__conn {
|
|
|
1264
1356
|
flex-direction: column;
|
|
1265
1357
|
min-height: 0;
|
|
1266
1358
|
background: var(--bg-panel);
|
|
1267
|
-
border-left:
|
|
1359
|
+
border-left: var(--hairline) solid var(--border);
|
|
1268
1360
|
}
|
|
1269
1361
|
.apipanel__head {
|
|
1270
1362
|
flex: 0 0 auto;
|
|
@@ -1274,7 +1366,7 @@ button.statusbar__conn {
|
|
|
1274
1366
|
/* 与调试面板 tab 条同高(12px 上下 padding + 13px 字号 ≈ 42px),保证三条栏顶线对齐 */
|
|
1275
1367
|
height: 40px;
|
|
1276
1368
|
padding: 0 12px;
|
|
1277
|
-
border-bottom:
|
|
1369
|
+
border-bottom: var(--hairline) solid var(--border);
|
|
1278
1370
|
}
|
|
1279
1371
|
.apipanel__title {
|
|
1280
1372
|
font-size: 13px;
|
|
@@ -1353,7 +1445,7 @@ button.statusbar__conn {
|
|
|
1353
1445
|
}
|
|
1354
1446
|
.debug__tabs {
|
|
1355
1447
|
display: flex;
|
|
1356
|
-
border-bottom:
|
|
1448
|
+
border-bottom: var(--hairline) solid var(--border);
|
|
1357
1449
|
}
|
|
1358
1450
|
.debug__tab {
|
|
1359
1451
|
flex: 1;
|
|
@@ -1364,7 +1456,6 @@ button.statusbar__conn {
|
|
|
1364
1456
|
color: var(--text-dim);
|
|
1365
1457
|
font-size: 13px;
|
|
1366
1458
|
cursor: pointer;
|
|
1367
|
-
/* border-bottom: 2px solid transparent; */
|
|
1368
1459
|
transition: color 0.15s;
|
|
1369
1460
|
position: relative;
|
|
1370
1461
|
}
|
|
@@ -1373,7 +1464,6 @@ button.statusbar__conn {
|
|
|
1373
1464
|
}
|
|
1374
1465
|
.debug__tab--active {
|
|
1375
1466
|
color: var(--accent);
|
|
1376
|
-
/* border-bottom-color: var(--accent); */
|
|
1377
1467
|
|
|
1378
1468
|
&::after {
|
|
1379
1469
|
content: '';
|
|
@@ -1399,7 +1489,6 @@ button.statusbar__conn {
|
|
|
1399
1489
|
position: relative;
|
|
1400
1490
|
flex: 1 1 auto;
|
|
1401
1491
|
overflow: auto;
|
|
1402
|
-
/* padding: 12px 16px; */
|
|
1403
1492
|
}
|
|
1404
1493
|
.debug__meta {
|
|
1405
1494
|
margin: 0;
|
|
@@ -1458,7 +1547,7 @@ button.statusbar__conn {
|
|
|
1458
1547
|
margin: auto -12px 0;
|
|
1459
1548
|
padding: 10px 12px;
|
|
1460
1549
|
background: var(--bg-panel);
|
|
1461
|
-
border-top:
|
|
1550
|
+
border-top: var(--hairline) solid var(--border);
|
|
1462
1551
|
color: var(--text-faint);
|
|
1463
1552
|
font-size: 12px;
|
|
1464
1553
|
line-height: 1.6;
|
|
@@ -1479,7 +1568,7 @@ button.statusbar__conn {
|
|
|
1479
1568
|
/* hidden 避免面板自身出现滚动条(滚动交给 .statepanel__tree) */
|
|
1480
1569
|
overflow: hidden;
|
|
1481
1570
|
background: var(--bg-panel);
|
|
1482
|
-
border-top:
|
|
1571
|
+
border-top: var(--hairline) solid var(--border-strong);
|
|
1483
1572
|
}
|
|
1484
1573
|
.statepanel__head {
|
|
1485
1574
|
flex: 0 0 auto;
|
|
@@ -1488,7 +1577,7 @@ button.statusbar__conn {
|
|
|
1488
1577
|
gap: 8px;
|
|
1489
1578
|
height: var(--ctrl-lg);
|
|
1490
1579
|
padding: 0 12px;
|
|
1491
|
-
border-bottom:
|
|
1580
|
+
border-bottom: var(--hairline) solid var(--border);
|
|
1492
1581
|
font-size: 13px;
|
|
1493
1582
|
color: var(--text);
|
|
1494
1583
|
}
|
|
@@ -1561,11 +1650,6 @@ button.statusbar__conn {
|
|
|
1561
1650
|
padding: 8px 12px 10px;
|
|
1562
1651
|
}
|
|
1563
1652
|
|
|
1564
|
-
/* 状态栏「运行态」指示器:复用问题/事件指示器的统一语言(无边框/无圆角/无 hover 背景块)。
|
|
1565
|
-
展开时仅文字着 accent 色,与 is-log 一致,作为「面板已打开」的轻量提示。 */
|
|
1566
|
-
.statusbar__item--prob.is-open {
|
|
1567
|
-
color: var(--accent);
|
|
1568
|
-
}
|
|
1569
1653
|
.debug__tag {
|
|
1570
1654
|
display: inline-block;
|
|
1571
1655
|
padding: 1px 8px;
|
|
@@ -1610,7 +1694,7 @@ button.statusbar__conn {
|
|
|
1610
1694
|
border-radius: 0;
|
|
1611
1695
|
/* 左侧红条标示错误归属;行底透明避免整片红块,hover 才整行染 danger 色 */
|
|
1612
1696
|
border-left: 2px solid var(--danger);
|
|
1613
|
-
border-bottom:
|
|
1697
|
+
border-bottom: var(--hairline) solid var(--border);
|
|
1614
1698
|
background: transparent;
|
|
1615
1699
|
color: var(--err-item-fg);
|
|
1616
1700
|
font-size: 11px;
|
|
@@ -1656,12 +1740,6 @@ button.statusbar__conn {
|
|
|
1656
1740
|
font-weight: 600;
|
|
1657
1741
|
opacity: 0.85;
|
|
1658
1742
|
}
|
|
1659
|
-
.debug__pre {
|
|
1660
|
-
margin: 4px 0 0;
|
|
1661
|
-
white-space: pre-wrap;
|
|
1662
|
-
font-size: 11px;
|
|
1663
|
-
color: var(--text-dim);
|
|
1664
|
-
}
|
|
1665
1743
|
|
|
1666
1744
|
/* 接口调用条目:方法名 + 最右侧复制图标 */
|
|
1667
1745
|
.debug__api-row {
|
|
@@ -1759,40 +1837,28 @@ button.statusbar__conn {
|
|
|
1759
1837
|
}
|
|
1760
1838
|
.apt__children {
|
|
1761
1839
|
padding-left: 16px;
|
|
1762
|
-
border-left:
|
|
1840
|
+
border-left: var(--hairline) solid var(--border);
|
|
1763
1841
|
margin-left: 4px;
|
|
1764
1842
|
}
|
|
1765
1843
|
.apt__close {
|
|
1766
1844
|
padding: 1px 4px 1px 20px;
|
|
1767
1845
|
color: var(--text-faint);
|
|
1768
1846
|
}
|
|
1769
|
-
.debug__scope {
|
|
1770
|
-
margin: 0;
|
|
1771
|
-
font-size: 11px;
|
|
1772
|
-
line-height: 1.5;
|
|
1773
|
-
white-space: pre-wrap;
|
|
1774
|
-
color: var(--text-dim);
|
|
1775
|
-
}
|
|
1776
1847
|
|
|
1777
|
-
/*
|
|
1848
|
+
/* 变量 mock 二级视图 / 运行态:JSON 内容区 + 底部操作按钮
|
|
1778
1849
|
容器铺满调试面板主体(绝对定位贴合 body 内边距区域),内部用 flex 列布局,
|
|
1779
1850
|
JSON 树占据剩余空间并可独立滚动,底部操作按钮始终钉在底部——
|
|
1780
1851
|
数据较少时不再上浮,数据较多时树内部滚动而按钮不随之移动。 */
|
|
1781
1852
|
.debug__scope-wrap {
|
|
1782
1853
|
position: absolute;
|
|
1783
1854
|
/* right:0 让 JSON 树滚动条紧贴面板最右边(与其他 tab 用 body padding 作
|
|
1784
|
-
16px 滚动框不同,本 tab 滚动交给内部 .debug__scope-
|
|
1855
|
+
16px 滚动框不同,本 tab 滚动交给内部 .debug__scope-raw,需要贴边);
|
|
1785
1856
|
left:16px 与 body 的 16px 内边距对齐,让树内容左缘与其他 tab 一致。 */
|
|
1786
1857
|
inset: 0;
|
|
1787
1858
|
display: flex;
|
|
1788
1859
|
flex-direction: column;
|
|
1789
1860
|
min-height: 0;
|
|
1790
1861
|
}
|
|
1791
|
-
.debug__scope-tree {
|
|
1792
|
-
flex: 1 1 auto;
|
|
1793
|
-
min-height: 0;
|
|
1794
|
-
overflow: auto;
|
|
1795
|
-
}
|
|
1796
1862
|
.debug__scope-foot {
|
|
1797
1863
|
position: absolute;
|
|
1798
1864
|
bottom: 10px;
|
|
@@ -1806,7 +1872,8 @@ button.statusbar__conn {
|
|
|
1806
1872
|
background: var(--bg-bar);
|
|
1807
1873
|
border: 1px solid var(--border);
|
|
1808
1874
|
border-radius: 10px;
|
|
1809
|
-
|
|
1875
|
+
/* 阴影走 token:深色 0.28 不变,浅色收到 0.10,白底上不再糊一团灰雾 */
|
|
1876
|
+
box-shadow: 0 6px 18px var(--shadow-toast);
|
|
1810
1877
|
}
|
|
1811
1878
|
.debug__copied {
|
|
1812
1879
|
margin: 0 4px 0 8px;
|
|
@@ -1852,13 +1919,13 @@ button.statusbar__conn {
|
|
|
1852
1919
|
}
|
|
1853
1920
|
/* 按钮分组间的竖向分隔线 */
|
|
1854
1921
|
.debug__sep {
|
|
1855
|
-
width:
|
|
1922
|
+
width: var(--hairline);
|
|
1856
1923
|
height: 16px;
|
|
1857
1924
|
margin: 0 2px;
|
|
1858
1925
|
background: var(--border-strong);
|
|
1859
1926
|
}
|
|
1860
1927
|
|
|
1861
|
-
/*
|
|
1928
|
+
/* 变量 mock 的 Raw JSON 编辑器:直接复用 .debug__scope-wrap 的绝对定位盒(inset 已占满 body 内容区),
|
|
1862
1929
|
不再额外设 height:100%——否则 top/inset 的 bottom 与 height 冲突,盒子会比内容区高 10px,
|
|
1863
1930
|
底部「应用/取消」按钮被挤出可视区、需滚动才见。这里仅保留 flex 列布局语义:
|
|
1864
1931
|
编辑器占剩余空间并内部滚动,底部操作按钮始终钉在底部。 */
|
|
@@ -1880,8 +1947,6 @@ button.statusbar__conn {
|
|
|
1880
1947
|
padding: 12px 14px;
|
|
1881
1948
|
background: var(--bg-input);
|
|
1882
1949
|
color: var(--text);
|
|
1883
|
-
/* border: 1px solid var(--border-strong); */
|
|
1884
|
-
/* border-radius: 8px; */
|
|
1885
1950
|
font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
|
|
1886
1951
|
font-size: 12px;
|
|
1887
1952
|
line-height: 1.6;
|
|
@@ -1890,34 +1955,383 @@ button.statusbar__conn {
|
|
|
1890
1955
|
overflow: auto;
|
|
1891
1956
|
outline: none;
|
|
1892
1957
|
}
|
|
1893
|
-
/*
|
|
1894
|
-
|
|
1895
|
-
} */
|
|
1896
|
-
/* CodeJar 托管的原始 JSON 编辑器:Prism(json) 语法高亮配色(与 SetCode 暗色面板一致) */
|
|
1958
|
+
/* CodeJar 托管的 JSON 编辑器(mock Raw 视图 + 变量弹窗默认值代码区):
|
|
1959
|
+
Prism(json) 语法高亮配色(与 SetCode 暗色面板一致) */
|
|
1897
1960
|
.debug__raw-editor .token.property,
|
|
1898
1961
|
.debug__raw-editor .token.tag,
|
|
1899
1962
|
.debug__raw-editor .token.boolean,
|
|
1900
1963
|
.debug__raw-editor .token.number,
|
|
1901
1964
|
.debug__raw-editor .token.constant,
|
|
1902
|
-
.debug__raw-editor .token.symbol
|
|
1965
|
+
.debug__raw-editor .token.symbol,
|
|
1966
|
+
.vars-dlg__code .token.property,
|
|
1967
|
+
.vars-dlg__code .token.tag,
|
|
1968
|
+
.vars-dlg__code .token.boolean,
|
|
1969
|
+
.vars-dlg__code .token.number,
|
|
1970
|
+
.vars-dlg__code .token.constant,
|
|
1971
|
+
.vars-dlg__code .token.symbol { color: var(--code-prop); }
|
|
1903
1972
|
.debug__raw-editor .token.selector,
|
|
1904
1973
|
.debug__raw-editor .token.attr-name,
|
|
1905
1974
|
.debug__raw-editor .token.string,
|
|
1906
1975
|
.debug__raw-editor .token.char,
|
|
1907
|
-
.debug__raw-editor .token.builtin
|
|
1976
|
+
.debug__raw-editor .token.builtin,
|
|
1977
|
+
.vars-dlg__code .token.selector,
|
|
1978
|
+
.vars-dlg__code .token.attr-name,
|
|
1979
|
+
.vars-dlg__code .token.string,
|
|
1980
|
+
.vars-dlg__code .token.char,
|
|
1981
|
+
.vars-dlg__code .token.builtin { color: var(--code-str); }
|
|
1908
1982
|
.debug__raw-editor .token.operator,
|
|
1909
1983
|
.debug__raw-editor .token.entity,
|
|
1910
|
-
.debug__raw-editor .token.url
|
|
1911
|
-
.
|
|
1984
|
+
.debug__raw-editor .token.url,
|
|
1985
|
+
.vars-dlg__code .token.operator,
|
|
1986
|
+
.vars-dlg__code .token.entity,
|
|
1987
|
+
.vars-dlg__code .token.url { color: var(--code-num); }
|
|
1988
|
+
.debug__raw-editor .token.punctuation,
|
|
1989
|
+
.vars-dlg__code .token.punctuation { color: var(--code-punc); }
|
|
1912
1990
|
.debug__raw-editor .token.keyword,
|
|
1913
|
-
.debug__raw-editor .token.null
|
|
1991
|
+
.debug__raw-editor .token.null,
|
|
1992
|
+
.vars-dlg__code .token.keyword,
|
|
1993
|
+
.vars-dlg__code .token.null { color: var(--code-kw); }
|
|
1914
1994
|
.debug__raw-editor .token.function,
|
|
1915
|
-
.debug__raw-editor .token.class-name
|
|
1916
|
-
.
|
|
1995
|
+
.debug__raw-editor .token.class-name,
|
|
1996
|
+
.vars-dlg__code .token.function,
|
|
1997
|
+
.vars-dlg__code .token.class-name { color: var(--code-fn); }
|
|
1998
|
+
/* mock 编辑器报错提示条:与顶部提示条(.app__nosvc-banner)同语言 ——
|
|
1999
|
+
语义色软底通栏 + 图标 + 关闭钮;置于编辑器顶部,不挤占编辑区滚动 */
|
|
2000
|
+
.raw-err-bar {
|
|
2001
|
+
flex: 0 0 auto;
|
|
2002
|
+
display: flex;
|
|
2003
|
+
align-items: center;
|
|
2004
|
+
gap: 6px;
|
|
2005
|
+
/* 比顶部提示条小一号:面板内嵌条,不抢编辑区视觉 */
|
|
2006
|
+
padding: 4px 10px;
|
|
2007
|
+
color: var(--danger, #ef4444);
|
|
2008
|
+
background: var(--danger-soft, rgba(239, 68, 68, 0.12));
|
|
2009
|
+
font-size: 11px;
|
|
2010
|
+
line-height: 1.5;
|
|
2011
|
+
}
|
|
2012
|
+
.raw-err-bar__icn {
|
|
2013
|
+
flex: 0 0 12px;
|
|
2014
|
+
width: 12px;
|
|
2015
|
+
height: 12px;
|
|
2016
|
+
}
|
|
2017
|
+
.raw-err-bar__msg {
|
|
2018
|
+
flex: 1 1 auto;
|
|
2019
|
+
min-width: 0;
|
|
2020
|
+
}
|
|
2021
|
+
.raw-err-bar__close {
|
|
1917
2022
|
flex: 0 0 auto;
|
|
1918
|
-
|
|
2023
|
+
width: 18px;
|
|
2024
|
+
height: 18px;
|
|
2025
|
+
display: inline-flex;
|
|
2026
|
+
align-items: center;
|
|
2027
|
+
justify-content: center;
|
|
2028
|
+
padding: 0;
|
|
2029
|
+
border: none;
|
|
2030
|
+
border-radius: 4px;
|
|
2031
|
+
background: none;
|
|
2032
|
+
color: inherit;
|
|
2033
|
+
opacity: 0.7;
|
|
2034
|
+
font-size: 11px;
|
|
2035
|
+
line-height: 1;
|
|
2036
|
+
cursor: pointer;
|
|
2037
|
+
transition: opacity 0.12s;
|
|
2038
|
+
}
|
|
2039
|
+
.raw-err-bar__close:hover {
|
|
2040
|
+
opacity: 1;
|
|
2041
|
+
}
|
|
2042
|
+
|
|
2043
|
+
/* ===== 变量管理(原「绑定数据」tab)=====
|
|
2044
|
+
列表视图管理 schema.dictionary.inputParams;mock 编辑收进二级视图。
|
|
2045
|
+
行内信息密度优先:key 等宽 + 类型芯片 + mock 徽标 + 中文名/描述弱化,操作 hover 浮现。 */
|
|
2046
|
+
.vars {
|
|
2047
|
+
height: 100%;
|
|
2048
|
+
min-height: 0;
|
|
2049
|
+
display: flex;
|
|
2050
|
+
flex-direction: column;
|
|
2051
|
+
/* 右下角悬浮操作组的定位锚 */
|
|
2052
|
+
position: relative;
|
|
2053
|
+
}
|
|
2054
|
+
.vars__list {
|
|
2055
|
+
flex: 1 1 auto;
|
|
2056
|
+
min-height: 0;
|
|
2057
|
+
margin: 0;
|
|
2058
|
+
/* 底部留出悬浮操作组的高度,末行不被遮 */
|
|
2059
|
+
padding: 8px 8px 52px;
|
|
2060
|
+
list-style: none;
|
|
2061
|
+
overflow-y: auto;
|
|
2062
|
+
display: flex;
|
|
2063
|
+
flex-direction: column;
|
|
2064
|
+
gap: 2px;
|
|
2065
|
+
}
|
|
2066
|
+
.vars__row {
|
|
2067
|
+
display: flex;
|
|
2068
|
+
align-items: center;
|
|
2069
|
+
gap: 6px;
|
|
2070
|
+
padding: 4px 6px;
|
|
2071
|
+
border-radius: 6px;
|
|
2072
|
+
transition: background 0.12s;
|
|
2073
|
+
/* 双击编辑:禁止双击选中文本造成视觉噪声 */
|
|
2074
|
+
user-select: none;
|
|
2075
|
+
}
|
|
2076
|
+
.vars__row:hover {
|
|
2077
|
+
background: var(--bg-hover);
|
|
2078
|
+
}
|
|
2079
|
+
.vars__key {
|
|
2080
|
+
flex: 0 0 auto;
|
|
2081
|
+
max-width: 46%;
|
|
2082
|
+
overflow: hidden;
|
|
2083
|
+
text-overflow: ellipsis;
|
|
2084
|
+
white-space: nowrap;
|
|
2085
|
+
font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
|
|
2086
|
+
font-size: 12px;
|
|
2087
|
+
color: var(--text);
|
|
2088
|
+
}
|
|
2089
|
+
.vars__type {
|
|
2090
|
+
flex: 0 0 auto;
|
|
2091
|
+
padding: 1px 6px;
|
|
2092
|
+
border-radius: var(--radius-pill);
|
|
2093
|
+
background: var(--bg-active);
|
|
2094
|
+
color: var(--text-dim);
|
|
2095
|
+
font-size: 10px;
|
|
2096
|
+
line-height: 1.5;
|
|
2097
|
+
}
|
|
2098
|
+
/* 类型标签按类型分浅色:色相取自 --type-*(暗色等同代码高亮调色板,亮色单独校正
|
|
2099
|
+
string 为绿系,避免与 number 蓝调撞色);软底用 color-mix 取低透明度,文字保持
|
|
2100
|
+
高对比可读。五色:string 绿 / number 蓝 / boolean 红 / array 紫 / object 橙。 */
|
|
2101
|
+
.vars__type--string {
|
|
2102
|
+
color: var(--type-string);
|
|
2103
|
+
background: color-mix(in srgb, var(--type-string) 14%, transparent);
|
|
2104
|
+
}
|
|
2105
|
+
.vars__type--number {
|
|
2106
|
+
color: var(--type-number);
|
|
2107
|
+
background: color-mix(in srgb, var(--type-number) 14%, transparent);
|
|
2108
|
+
}
|
|
2109
|
+
.vars__type--boolean {
|
|
2110
|
+
color: var(--type-boolean);
|
|
2111
|
+
background: color-mix(in srgb, var(--type-boolean) 14%, transparent);
|
|
2112
|
+
}
|
|
2113
|
+
.vars__type--array {
|
|
2114
|
+
color: var(--type-array);
|
|
2115
|
+
background: color-mix(in srgb, var(--type-array) 14%, transparent);
|
|
2116
|
+
}
|
|
2117
|
+
.vars__type--object {
|
|
2118
|
+
color: var(--type-object);
|
|
2119
|
+
background: color-mix(in srgb, var(--type-object) 14%, transparent);
|
|
2120
|
+
}
|
|
2121
|
+
/* mock 徽标:与运营平台变量列表的 m 标记同语义(已配置 mock 默认值) */
|
|
2122
|
+
.vars__mock {
|
|
2123
|
+
flex: 0 0 auto;
|
|
2124
|
+
width: 14px;
|
|
2125
|
+
height: 14px;
|
|
2126
|
+
display: inline-flex;
|
|
2127
|
+
align-items: center;
|
|
2128
|
+
justify-content: center;
|
|
2129
|
+
border-radius: 50%;
|
|
2130
|
+
background: var(--warn-soft);
|
|
2131
|
+
color: var(--warn);
|
|
2132
|
+
font-size: 9px;
|
|
2133
|
+
line-height: 1;
|
|
2134
|
+
}
|
|
2135
|
+
.vars__name {
|
|
2136
|
+
flex: 1 1 auto;
|
|
2137
|
+
min-width: 0;
|
|
2138
|
+
overflow: hidden;
|
|
2139
|
+
text-overflow: ellipsis;
|
|
2140
|
+
white-space: nowrap;
|
|
2141
|
+
color: var(--text-faint);
|
|
2142
|
+
font-size: 11px;
|
|
2143
|
+
}
|
|
2144
|
+
/* 行内操作:常占位、仅淡入淡出 —— 用 display 切换会挤动 key/name 造成 hover 跳动 */
|
|
2145
|
+
.vars__ops {
|
|
2146
|
+
flex: 0 0 auto;
|
|
2147
|
+
display: inline-flex;
|
|
2148
|
+
gap: 2px;
|
|
2149
|
+
opacity: 0;
|
|
2150
|
+
transition: opacity 0.12s;
|
|
2151
|
+
}
|
|
2152
|
+
.vars__row:hover .vars__ops,
|
|
2153
|
+
.vars__row:focus-within .vars__ops {
|
|
2154
|
+
opacity: 1;
|
|
2155
|
+
}
|
|
2156
|
+
.vars__op {
|
|
2157
|
+
width: 20px;
|
|
2158
|
+
height: 20px;
|
|
2159
|
+
display: inline-flex;
|
|
2160
|
+
align-items: center;
|
|
2161
|
+
justify-content: center;
|
|
2162
|
+
padding: 0;
|
|
2163
|
+
background: none;
|
|
2164
|
+
border: none;
|
|
2165
|
+
border-radius: 4px;
|
|
2166
|
+
color: var(--text-faint);
|
|
2167
|
+
cursor: pointer;
|
|
2168
|
+
transition: background 0.12s, color 0.12s;
|
|
2169
|
+
}
|
|
2170
|
+
.vars__op svg {
|
|
2171
|
+
width: 13px;
|
|
2172
|
+
height: 13px;
|
|
2173
|
+
display: block;
|
|
2174
|
+
}
|
|
2175
|
+
.vars__op:hover {
|
|
2176
|
+
background: var(--bg-active);
|
|
2177
|
+
color: var(--text);
|
|
2178
|
+
}
|
|
2179
|
+
.vars__op--del:hover {
|
|
2180
|
+
background: var(--danger-soft);
|
|
2181
|
+
color: var(--danger);
|
|
2182
|
+
}
|
|
2183
|
+
/* 无默认值时禁用(复制钮):压淡并保持无 hover 反馈,避免误点无响应 */
|
|
2184
|
+
.vars__op:disabled,
|
|
2185
|
+
.vars__op:disabled:hover {
|
|
2186
|
+
background: none;
|
|
2187
|
+
color: var(--text-faint);
|
|
2188
|
+
opacity: 0.35;
|
|
2189
|
+
cursor: default;
|
|
2190
|
+
}
|
|
2191
|
+
/* 复制成功的 ✓ 沿用 .debug__copy-ok 配色,按行内 13px 图标尺度收一号 */
|
|
2192
|
+
.vars__op .debug__copy-ok {
|
|
2193
|
+
font-size: 12px;
|
|
2194
|
+
}
|
|
2195
|
+
/* 右下角悬浮操作组:卡片容器 + 投影,与 mock 视图 .debug__scope-foot 同语言 */
|
|
2196
|
+
.vars__fabs {
|
|
2197
|
+
position: absolute;
|
|
2198
|
+
right: 10px;
|
|
2199
|
+
bottom: 10px;
|
|
2200
|
+
display: flex;
|
|
2201
|
+
align-items: center;
|
|
2202
|
+
gap: 8px;
|
|
2203
|
+
padding: 6px;
|
|
2204
|
+
background: var(--bg-bar);
|
|
2205
|
+
border: 1px solid var(--border);
|
|
2206
|
+
border-radius: 10px;
|
|
2207
|
+
box-shadow: 0 6px 18px var(--shadow-toast);
|
|
2208
|
+
}
|
|
2209
|
+
/* mock 二级视图头:返回 + 标题,发丝线分隔 */
|
|
2210
|
+
.vars__mockhead {
|
|
2211
|
+
flex: 0 0 auto;
|
|
2212
|
+
display: flex;
|
|
2213
|
+
align-items: center;
|
|
2214
|
+
gap: 8px;
|
|
2215
|
+
padding: 5px 10px;
|
|
2216
|
+
border-bottom: var(--hairline) solid var(--border);
|
|
2217
|
+
}
|
|
2218
|
+
.vars__back {
|
|
2219
|
+
flex: 0 0 auto;
|
|
2220
|
+
display: inline-flex;
|
|
2221
|
+
align-items: center;
|
|
2222
|
+
gap: 4px;
|
|
2223
|
+
height: 24px;
|
|
2224
|
+
padding: 0 9px 0 7px;
|
|
2225
|
+
background: var(--bg-bar);
|
|
2226
|
+
border: 1px solid var(--border-strong);
|
|
2227
|
+
border-radius: 6px;
|
|
2228
|
+
color: var(--text);
|
|
2229
|
+
font-size: 12px;
|
|
2230
|
+
font-weight: 500;
|
|
2231
|
+
cursor: pointer;
|
|
2232
|
+
transition: background 0.15s, color 0.15s, border-color 0.15s;
|
|
2233
|
+
}
|
|
2234
|
+
/* hover 走软 accent 三件套(与结构树徽标 / 桥接按钮激活态同语言),让「可点返回」一眼可辨 */
|
|
2235
|
+
.vars__back:hover {
|
|
2236
|
+
background: var(--accent-soft);
|
|
2237
|
+
border-color: var(--accent-border);
|
|
2238
|
+
color: var(--accent);
|
|
2239
|
+
}
|
|
2240
|
+
.vars__back svg {
|
|
2241
|
+
width: 12px;
|
|
2242
|
+
height: 12px;
|
|
2243
|
+
}
|
|
2244
|
+
.vars__mocktitle {
|
|
2245
|
+
color: var(--text-faint);
|
|
2246
|
+
font-size: 11px;
|
|
2247
|
+
}
|
|
2248
|
+
|
|
2249
|
+
/* 变量添加 / 编辑弹窗:骨架与节点属性面板同构(ni-panel / ni-head / ni-foot / ni-field-row),
|
|
2250
|
+
这里只覆写尺寸与表单特有件:宽度同 ni-panel、高度随内容、代码编辑区与必填星号。 */
|
|
2251
|
+
/* node-inspector.css 晚于本文件载入,等特异性下 .ni-panel 的 80vh 会赢,故用双类提特异性 */
|
|
2252
|
+
.ni-panel.vars-dlg {
|
|
2253
|
+
width: 560px;
|
|
2254
|
+
height: auto;
|
|
2255
|
+
min-height: 0;
|
|
2256
|
+
max-height: 80vh;
|
|
2257
|
+
}
|
|
2258
|
+
/* 必填星号:与表单错误同族 danger 色 */
|
|
2259
|
+
.vars-dlg .ni-field-label i {
|
|
2260
|
+
font-style: normal;
|
|
2261
|
+
color: var(--danger);
|
|
2262
|
+
margin-right: 2px;
|
|
2263
|
+
}
|
|
2264
|
+
/* 默认值 / 描述行:标签与控件首行对齐(28px 控件首行基线) */
|
|
2265
|
+
.ni-field-row--top {
|
|
2266
|
+
align-items: flex-start;
|
|
2267
|
+
}
|
|
2268
|
+
.ni-field-row--top .ni-field-label {
|
|
2269
|
+
line-height: var(--ctrl-sm);
|
|
2270
|
+
}
|
|
2271
|
+
/* Dropdown 撑满控件区(ni-field-row 的 flex 规则只约束 .ni-input) */
|
|
2272
|
+
.vars-dlg__ctrl {
|
|
2273
|
+
flex: 1 1 auto;
|
|
2274
|
+
min-width: 0;
|
|
2275
|
+
}
|
|
2276
|
+
/* 默认值多行编辑区(数组 / 对象的 CodeJar 代码区、字符串的文本域)共用一把尺子:
|
|
2277
|
+
高度下限 = 8 行文本 —— 行高 12px × 1.6 = 19.2px,18px = 上下 padding 16 + 边框 2(border-box)。
|
|
2278
|
+
两者垂直内边距一致,切类型时弹窗高度不跳;min-height 同时夹住 flex 压缩与 resize 拖拽下限,
|
|
2279
|
+
内容超出后在 max-height 内滚动。 */
|
|
2280
|
+
.vars-dlg__code,
|
|
2281
|
+
.vars-dlg__str {
|
|
2282
|
+
min-height: calc(8 * 1.6 * 12px + 18px);
|
|
2283
|
+
max-height: 264px;
|
|
2284
|
+
}
|
|
2285
|
+
/* 数组 / 对象默认值:CodeJar 代码编辑区(与 mock Raw 编辑器同族,嵌入表单行) */
|
|
2286
|
+
.vars-dlg__code {
|
|
2287
|
+
flex: 1 1 auto;
|
|
2288
|
+
min-width: 0;
|
|
2289
|
+
overflow: auto;
|
|
2290
|
+
padding: 8px 12px;
|
|
2291
|
+
background: var(--bg-input);
|
|
2292
|
+
border: 1px solid var(--border-strong);
|
|
2293
|
+
border-radius: 6px;
|
|
2294
|
+
font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
|
|
1919
2295
|
font-size: 12px;
|
|
2296
|
+
line-height: 1.6;
|
|
2297
|
+
color: var(--text);
|
|
2298
|
+
tab-size: 2;
|
|
2299
|
+
white-space: pre;
|
|
2300
|
+
outline: none;
|
|
2301
|
+
transition: border-color 0.15s;
|
|
2302
|
+
}
|
|
2303
|
+
.vars-dlg__code:focus {
|
|
2304
|
+
border-color: var(--accent);
|
|
2305
|
+
}
|
|
2306
|
+
/* 字符串默认值:多行文本域(数字走 NumberStepper、布尔走单选,都是单行高),
|
|
2307
|
+
长文案与多行字符串能一眼看全。.ni-input 定义在 node-inspector.css(晚于本文件载入),
|
|
2308
|
+
等特异性下会赢,故用双类提特异性覆盖其 28px 定高与 6px 垂直内边距,与代码区完全同高。 */
|
|
2309
|
+
.ni-input.vars-dlg__str {
|
|
2310
|
+
height: auto;
|
|
2311
|
+
padding: 8px 12px;
|
|
2312
|
+
line-height: 1.6;
|
|
2313
|
+
resize: vertical;
|
|
2314
|
+
overflow: auto;
|
|
2315
|
+
}
|
|
2316
|
+
.vars-dlg__desc {
|
|
2317
|
+
height: auto;
|
|
2318
|
+
/* 高度下限 = 4 行文本:行高 12px(.ni-input)× 1.6 = 19.2px,14px = 上下 padding 12 + 边框 2(border-box)。
|
|
2319
|
+
min-height 同时夹住 resize: vertical 的拖拽下限,拖不小于 4 行。 */
|
|
2320
|
+
min-height: calc(4 * 1.6 * 12px + 14px);
|
|
2321
|
+
max-height: 140px;
|
|
2322
|
+
resize: vertical;
|
|
2323
|
+
line-height: 1.6;
|
|
2324
|
+
}
|
|
2325
|
+
.vars-dlg__err {
|
|
2326
|
+
margin: 2px 0 0;
|
|
1920
2327
|
color: var(--danger);
|
|
2328
|
+
font-size: 11px;
|
|
2329
|
+
}
|
|
2330
|
+
/* mock 二级视图头部右端弱提示:不抢视觉,仅解释覆盖语义 */
|
|
2331
|
+
.vars__mockhint {
|
|
2332
|
+
margin-left: auto;
|
|
2333
|
+
font-size: 11px;
|
|
2334
|
+
color: var(--text-faint);
|
|
1921
2335
|
}
|
|
1922
2336
|
|
|
1923
2337
|
/* 底部状态栏(类 VSCode 暗色状态栏,沿用主题 token,与顶栏/面板统一) */
|
|
@@ -1930,7 +2344,7 @@ button.statusbar__conn {
|
|
|
1930
2344
|
order: 3;
|
|
1931
2345
|
padding: 0 2px;
|
|
1932
2346
|
background: var(--bg-bar);
|
|
1933
|
-
border-top:
|
|
2347
|
+
border-top: var(--hairline) solid var(--border);
|
|
1934
2348
|
font-size: 12px;
|
|
1935
2349
|
color: var(--text-dim);
|
|
1936
2350
|
user-select: none;
|
|
@@ -1950,9 +2364,9 @@ button.statusbar__conn {
|
|
|
1950
2364
|
.statusbar__item--right {
|
|
1951
2365
|
color: var(--text-faint);
|
|
1952
2366
|
}
|
|
1953
|
-
/*
|
|
1954
|
-
|
|
1955
|
-
|
|
2367
|
+
/* 问题指示器:本质是一行状态栏文本读数,不是按钮——无边框 / 无圆角 / 无 hover 背景块。
|
|
2368
|
+
配色铁律:状态栏文字默认色,仅报错(danger)/ 警告(warn)态着语义色;
|
|
2369
|
+
展开、有日志等非风险态不再着色(面板可见本身即「已展开」的提示)。 */
|
|
1956
2370
|
.statusbar__item--prob {
|
|
1957
2371
|
cursor: pointer;
|
|
1958
2372
|
color: var(--text-dim);
|
|
@@ -1970,12 +2384,6 @@ button.statusbar__conn {
|
|
|
1970
2384
|
.statusbar__item--prob.is-error:hover {
|
|
1971
2385
|
color: var(--danger);
|
|
1972
2386
|
}
|
|
1973
|
-
.statusbar__item--prob.is-log {
|
|
1974
|
-
color: var(--accent);
|
|
1975
|
-
}
|
|
1976
|
-
.statusbar__item--prob.is-log:hover {
|
|
1977
|
-
color: var(--accent);
|
|
1978
|
-
}
|
|
1979
2387
|
.statusbar__item--prob.is-ok {
|
|
1980
2388
|
color: var(--text-faint);
|
|
1981
2389
|
cursor: default;
|
|
@@ -2005,7 +2413,7 @@ button.statusbar__conn {
|
|
|
2005
2413
|
max-height: 60vh;
|
|
2006
2414
|
overflow: hidden;
|
|
2007
2415
|
background: var(--bg-panel);
|
|
2008
|
-
border-top:
|
|
2416
|
+
border-top: var(--hairline) solid var(--border-strong);
|
|
2009
2417
|
}
|
|
2010
2418
|
.errpanel__head {
|
|
2011
2419
|
flex: 0 0 auto;
|
|
@@ -2014,7 +2422,7 @@ button.statusbar__conn {
|
|
|
2014
2422
|
gap: 8px;
|
|
2015
2423
|
height: var(--ctrl-lg);
|
|
2016
2424
|
padding: 0 12px;
|
|
2017
|
-
border-bottom:
|
|
2425
|
+
border-bottom: var(--hairline) solid var(--border);
|
|
2018
2426
|
font-size: 13px;
|
|
2019
2427
|
color: var(--text);
|
|
2020
2428
|
}
|
|
@@ -2225,7 +2633,7 @@ button.statusbar__conn {
|
|
|
2225
2633
|
align-items: baseline;
|
|
2226
2634
|
gap: 8px;
|
|
2227
2635
|
padding: 2px 12px;
|
|
2228
|
-
border-bottom:
|
|
2636
|
+
border-bottom: var(--hairline) solid var(--border);
|
|
2229
2637
|
}
|
|
2230
2638
|
.log__item:last-child {
|
|
2231
2639
|
border-bottom: none;
|
|
@@ -2303,7 +2711,7 @@ button.statusbar__conn {
|
|
|
2303
2711
|
.log__json .apt__list--nested {
|
|
2304
2712
|
margin-left: 4px;
|
|
2305
2713
|
padding-left: 14px;
|
|
2306
|
-
border-left:
|
|
2714
|
+
border-left: var(--hairline) solid var(--border);
|
|
2307
2715
|
}
|
|
2308
2716
|
.log__empty {
|
|
2309
2717
|
color: var(--text-faint);
|
|
@@ -2434,7 +2842,7 @@ button.statusbar__conn {
|
|
|
2434
2842
|
display: flex;
|
|
2435
2843
|
/* 负外边距抵消对话框左右内边距,分割线贯通左右边缘 */
|
|
2436
2844
|
margin: 18px -20px 0;
|
|
2437
|
-
border-top:
|
|
2845
|
+
border-top: var(--hairline) solid #e8e8e8;
|
|
2438
2846
|
}
|
|
2439
2847
|
.dlg__btn {
|
|
2440
2848
|
flex: 1 1 0;
|
|
@@ -2451,7 +2859,7 @@ button.statusbar__conn {
|
|
|
2451
2859
|
}
|
|
2452
2860
|
.dlg__btn--cancel {
|
|
2453
2861
|
color: #1677ff;
|
|
2454
|
-
border-right:
|
|
2862
|
+
border-right: var(--hairline) solid #e8e8e8;
|
|
2455
2863
|
}
|
|
2456
2864
|
/* cancelGrayStyle:取消按钮灰色风格 */
|
|
2457
2865
|
.dlg__btn--cancel.dlg__btn--gray {
|
|
@@ -2615,7 +3023,7 @@ button.statusbar__conn {
|
|
|
2615
3023
|
height: 44px;
|
|
2616
3024
|
padding: 0 16px;
|
|
2617
3025
|
box-sizing: border-box;
|
|
2618
|
-
border-bottom:
|
|
3026
|
+
border-bottom: var(--hairline) solid #eef0f2;
|
|
2619
3027
|
}
|
|
2620
3028
|
.pk-bar__title {
|
|
2621
3029
|
font-size: 15px;
|
|
@@ -2657,8 +3065,8 @@ button.statusbar__conn {
|
|
|
2657
3065
|
height: 40px;
|
|
2658
3066
|
transform: translateY(-50%);
|
|
2659
3067
|
background: rgba(22, 119, 255, 0.08);
|
|
2660
|
-
border-top:
|
|
2661
|
-
border-bottom:
|
|
3068
|
+
border-top: var(--hairline) solid #d6e4ff;
|
|
3069
|
+
border-bottom: var(--hairline) solid #d6e4ff;
|
|
2662
3070
|
pointer-events: none;
|
|
2663
3071
|
}
|
|
2664
3072
|
.pk-col__list {
|
|
@@ -2738,7 +3146,7 @@ button.statusbar__conn {
|
|
|
2738
3146
|
align-items: center;
|
|
2739
3147
|
justify-content: space-between;
|
|
2740
3148
|
padding: 12px 14px;
|
|
2741
|
-
border-bottom:
|
|
3149
|
+
border-bottom: var(--hairline) solid var(--border);
|
|
2742
3150
|
}
|
|
2743
3151
|
.rp-title {
|
|
2744
3152
|
font-size: 14px;
|