@midscene/visualizer 1.0.1-beta-20251110055007.0 → 1.0.1-beta-20251110130223.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 (38) hide show
  1. package/dist/es/component/blackboard/index.css +8 -0
  2. package/dist/es/component/blackboard/index.mjs +86 -3
  3. package/dist/es/component/env-config-reminder/index.css +8 -0
  4. package/dist/es/component/history-selector/index.css +32 -0
  5. package/dist/es/component/logo/index.mjs +23 -1
  6. package/dist/es/component/player/index.css +25 -0
  7. package/dist/es/component/player/index.mjs +1 -67
  8. package/dist/es/component/playground/index.css +52 -0
  9. package/dist/es/component/playground-result/index.css +9 -0
  10. package/dist/es/component/prompt-input/index.css +43 -0
  11. package/dist/es/component/universal-playground/index.css +69 -0
  12. package/dist/es/components/screenshot-viewer/index.css +48 -0
  13. package/dist/es/icons/global-perspective.mjs +1 -1
  14. package/dist/es/icons/history.mjs +2 -2
  15. package/dist/es/icons/magnifying-glass.mjs +1 -1
  16. package/dist/es/icons/player-setting.mjs +2 -2
  17. package/dist/es/icons/setting.mjs +1 -1
  18. package/dist/es/icons/show-marker.mjs +1 -1
  19. package/dist/lib/component/blackboard/index.css +8 -0
  20. package/dist/lib/component/blackboard/index.js +85 -2
  21. package/dist/lib/component/env-config-reminder/index.css +8 -0
  22. package/dist/lib/component/history-selector/index.css +32 -0
  23. package/dist/lib/component/logo/index.js +23 -1
  24. package/dist/lib/component/player/index.css +25 -0
  25. package/dist/lib/component/player/index.js +1 -68
  26. package/dist/lib/component/playground/index.css +52 -0
  27. package/dist/lib/component/playground-result/index.css +9 -0
  28. package/dist/lib/component/prompt-input/index.css +43 -0
  29. package/dist/lib/component/universal-playground/index.css +69 -0
  30. package/dist/lib/components/screenshot-viewer/index.css +48 -0
  31. package/dist/lib/icons/global-perspective.js +1 -1
  32. package/dist/lib/icons/history.js +2 -2
  33. package/dist/lib/icons/magnifying-glass.js +1 -1
  34. package/dist/lib/icons/player-setting.js +2 -2
  35. package/dist/lib/icons/setting.js +1 -1
  36. package/dist/lib/icons/show-marker.js +1 -1
  37. package/dist/types/component/player/index.d.ts +0 -1
  38. package/package.json +5 -5
@@ -8,7 +8,7 @@ const SvgSetting = (props)=>/*#__PURE__*/ jsx("svg", {
8
8
  viewBox: "0 0 27 27",
9
9
  ...props,
10
10
  children: /*#__PURE__*/ jsx("path", {
11
- stroke: "#000",
11
+ stroke: "currentColor",
12
12
  strokeLinecap: "round",
13
13
  strokeLinejoin: "round",
14
14
  strokeOpacity: 0.85,
@@ -8,7 +8,7 @@ const SvgShowMarker = (props)=>/*#__PURE__*/ jsx("svg", {
8
8
  viewBox: "0 0 16 16",
9
9
  ...props,
10
10
  children: /*#__PURE__*/ jsx("path", {
11
- fill: "#333",
11
+ fill: "currentColor",
12
12
  d: "M13 1.835a2.165 2.165 0 0 1 .665 4.225v3.88a2.166 2.166 0 1 1-2.725 2.725H5.06a2.165 2.165 0 1 1-2.725-2.726V6.06A2.165 2.165 0 1 1 5.06 3.336h5.88c.281-.87 1.097-1.5 2.06-1.5m-10 9.33a.835.835 0 1 0 0 1.67.835.835 0 0 0 0-1.67m10 0a.835.835 0 1 0 0 1.67.835.835 0 0 0 0-1.67m-7.94-6.5A2.17 2.17 0 0 1 3.665 6.06v3.88c.66.213 1.181.734 1.395 1.395h5.88a2.17 2.17 0 0 1 1.395-1.396V6.06a2.17 2.17 0 0 1-1.395-1.394zM3 3.165a.835.835 0 1 0 0 1.67.835.835 0 0 0 0-1.67m10 0a.835.835 0 1 0 0 1.67.835.835 0 0 0 0-1.67"
13
13
  })
14
14
  });
@@ -31,3 +31,11 @@
31
31
  width: 100%;
32
32
  }
33
33
 
34
+ [data-theme="dark"] .blackboard .footer, [data-theme="dark"] .blackboard .bottom-tip-item {
35
+ color: rgba(255, 255, 255, .45);
36
+ }
37
+
38
+ [data-theme="dark"] .blackboard-main-content canvas {
39
+ border-color: rgba(255, 255, 255, .12);
40
+ }
41
+
@@ -103,6 +103,9 @@ const Blackboard = (props)=>{
103
103
  const elementMarkContainer = (0, external_react_namespaceObject.useMemo)(()=>new external_pixi_js_namespaceObject.Container(), []);
104
104
  const [hoverElement, setHoverElement] = (0, external_react_namespaceObject.useState)(null);
105
105
  const pixiBgRef = (0, external_react_namespaceObject.useRef)(void 0);
106
+ const animationFrameRef = (0, external_react_namespaceObject.useRef)(null);
107
+ const highlightGraphicsRef = (0, external_react_namespaceObject.useRef)([]);
108
+ const glowFiltersRef = (0, external_react_namespaceObject.useRef)([]);
106
109
  const backgroundVisible = true;
107
110
  const elementsVisible = true;
108
111
  (0, external_react_namespaceObject.useEffect)(()=>{
@@ -129,6 +132,10 @@ const Blackboard = (props)=>{
129
132
  })());
130
133
  return ()=>{
131
134
  console.log('will destroy');
135
+ if (null !== animationFrameRef.current) {
136
+ cancelAnimationFrame(animationFrameRef.current);
137
+ animationFrameRef.current = null;
138
+ }
132
139
  try {
133
140
  app.destroy(true, {
134
141
  children: true,
@@ -199,18 +206,54 @@ const Blackboard = (props)=>{
199
206
  elementMarkContainer.removeChildren();
200
207
  highlightContainer.eventMode = 'passive';
201
208
  elementMarkContainer.eventMode = 'passive';
209
+ highlightGraphicsRef.current = [];
210
+ glowFiltersRef.current = [];
202
211
  if (highlightRect) {
203
212
  const [graphics] = rectMarkForItem(highlightRect, 'Search Area', 'searchArea');
204
213
  highlightContainer.addChild(graphics);
205
214
  }
206
215
  if (highlightElements.length) highlightElements.forEach((element)=>{
207
216
  const { rect, content, id } = element;
208
- const [graphics] = rectMarkForItem(rect, content, 'highlight');
209
- highlightContainer.addChild(graphics);
217
+ const items = rectMarkForItem(rect, content, 'highlight');
218
+ const graphics = items[0];
219
+ const glowFilter = new external_pixi_filters_namespaceObject.GlowFilter({
220
+ distance: 30,
221
+ outerStrength: 3,
222
+ innerStrength: 0,
223
+ color: 0xfd5907,
224
+ quality: 0.5
225
+ });
226
+ const existingFilters = graphics.filters;
227
+ if (Array.isArray(existingFilters)) graphics.filters = [
228
+ ...existingFilters,
229
+ glowFilter
230
+ ];
231
+ else if (existingFilters) graphics.filters = [
232
+ existingFilters,
233
+ glowFilter
234
+ ];
235
+ else graphics.filters = [
236
+ glowFilter
237
+ ];
238
+ items.forEach((item)=>highlightContainer.addChild(item));
239
+ highlightGraphicsRef.current.push(graphics);
240
+ glowFiltersRef.current.push(glowFilter);
210
241
  });
211
242
  if (null == highlightPoints ? void 0 : highlightPoints.length) highlightPoints.forEach((point)=>{
212
243
  const graphics = pointMarkForItem(point, 'highlightPoint');
244
+ const glowFilter = new external_pixi_filters_namespaceObject.GlowFilter({
245
+ distance: 25,
246
+ outerStrength: 2.5,
247
+ innerStrength: 0,
248
+ color: 0xfd5907,
249
+ quality: 0.5
250
+ });
251
+ graphics.filters = [
252
+ glowFilter
253
+ ];
213
254
  highlightContainer.addChild(graphics);
255
+ highlightGraphicsRef.current.push(graphics);
256
+ glowFiltersRef.current.push(glowFilter);
214
257
  });
215
258
  elementMarkContainer.visible = elementsVisible;
216
259
  return {
@@ -224,6 +267,46 @@ const Blackboard = (props)=>{
224
267
  highlightRect,
225
268
  highlightPoints
226
269
  ]);
270
+ (0, external_react_namespaceObject.useEffect)(()=>{
271
+ if (!appInitialed || 0 === highlightGraphicsRef.current.length) return void console.log('Animation skipped:', {
272
+ appInitialed,
273
+ graphicsCount: highlightGraphicsRef.current.length
274
+ });
275
+ console.log('Starting pulsing animation for', highlightGraphicsRef.current.length, 'graphics');
276
+ const graphicsToAnimate = highlightGraphicsRef.current;
277
+ const glowFilters = glowFiltersRef.current;
278
+ const pulseDuration = 1200;
279
+ const minAlpha = 0.4;
280
+ const maxAlpha = 1.0;
281
+ const minGlowStrength = 2.0;
282
+ const maxGlowStrength = 5.0;
283
+ const startTime = performance.now();
284
+ const animate = ()=>{
285
+ const elapsed = performance.now() - startTime;
286
+ const progress = elapsed % pulseDuration / pulseDuration;
287
+ const sineValue = Math.sin(progress * Math.PI * 2);
288
+ const normalizedSine = (sineValue + 1) / 2;
289
+ const alpha = minAlpha + normalizedSine * (maxAlpha - minAlpha);
290
+ const glowStrength = minGlowStrength + normalizedSine * (maxGlowStrength - minGlowStrength);
291
+ graphicsToAnimate.forEach((graphics, index)=>{
292
+ graphics.alpha = alpha;
293
+ if (glowFilters[index]) glowFilters[index].outerStrength = glowStrength;
294
+ });
295
+ animationFrameRef.current = requestAnimationFrame(animate);
296
+ };
297
+ animate();
298
+ return ()=>{
299
+ console.log('Stopping pulsing animation');
300
+ if (null !== animationFrameRef.current) {
301
+ cancelAnimationFrame(animationFrameRef.current);
302
+ animationFrameRef.current = null;
303
+ }
304
+ };
305
+ }, [
306
+ appInitialed,
307
+ highlightElements,
308
+ highlightPoints
309
+ ]);
227
310
  let bottomTipA = null;
228
311
  if (1 === highlightElementRects.length) bottomTipA = /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("div", {
229
312
  className: "bottom-tip",
@@ -20,3 +20,11 @@
20
20
  font-size: 14px;
21
21
  }
22
22
 
23
+ [data-theme="dark"] .env-config-reminder {
24
+ background: rgba(82, 38, 7, .3);
25
+ }
26
+
27
+ [data-theme="dark"] .env-config-reminder .reminder-text {
28
+ color: rgba(255, 255, 255, .85);
29
+ }
30
+
@@ -133,3 +133,35 @@
133
133
  padding: 40px 20px;
134
134
  }
135
135
 
136
+ [data-theme="dark"] .history-selector .history-timestamp, [data-theme="dark"] .history-selector .history-path {
137
+ color: rgba(255, 255, 255, .45);
138
+ }
139
+
140
+ [data-theme="dark"] .history-selector .history-description {
141
+ color: rgba(255, 255, 255, .65);
142
+ }
143
+
144
+ [data-theme="dark"] .history-selector .history-no-items {
145
+ color: rgba(255, 255, 255, .45);
146
+ }
147
+
148
+ [data-theme="dark"] .history-selector .history-item:hover {
149
+ background: rgba(255, 255, 255, .08);
150
+ }
151
+
152
+ [data-theme="dark"] .history-selector .history-item .history-clear-icon {
153
+ border-color: rgba(255, 255, 255, .12);
154
+ }
155
+
156
+ [data-theme="dark"] .history-selector .history-item .history-clear-icon:hover {
157
+ border-color: #40a9ff;
158
+ }
159
+
160
+ [data-theme="dark"] .history-selector .history-load-more {
161
+ color: #1890ff;
162
+ }
163
+
164
+ [data-theme="dark"] .history-selector .history-load-more:hover {
165
+ color: #40a9ff;
166
+ }
167
+
@@ -28,11 +28,33 @@ __webpack_require__.d(__webpack_exports__, {
28
28
  LogoUrl: ()=>LogoUrl
29
29
  });
30
30
  const jsx_runtime_namespaceObject = require("react/jsx-runtime");
31
+ const external_react_namespaceObject = require("react");
31
32
  require("./index.css");
32
33
  const LogoUrl = 'https://lf3-static.bytednsdoc.com/obj/eden-cn/vhaeh7vhabf/Midscene.png';
34
+ const LogoUrlLight = 'https://lf3-static.bytednsdoc.com/obj/eden-cn/nupipfups/Midscene/midscene_with_text_light.png';
35
+ const LogoUrlDark = 'https://lf3-static.bytednsdoc.com/obj/eden-cn/nupipfups/Midscene/midscene_with_text_dark.png';
33
36
  const Logo = (param)=>{
34
37
  let { hideLogo = false } = param;
38
+ const [isDark, setIsDark] = (0, external_react_namespaceObject.useState)(false);
39
+ (0, external_react_namespaceObject.useEffect)(()=>{
40
+ const checkTheme = ()=>{
41
+ var _document_querySelector;
42
+ const theme = null == (_document_querySelector = document.querySelector('[data-theme]')) ? void 0 : _document_querySelector.getAttribute('data-theme');
43
+ setIsDark('dark' === theme);
44
+ };
45
+ checkTheme();
46
+ const observer = new MutationObserver(checkTheme);
47
+ const target = document.querySelector('[data-theme]') || document.documentElement;
48
+ observer.observe(target, {
49
+ attributes: true,
50
+ attributeFilter: [
51
+ 'data-theme'
52
+ ]
53
+ });
54
+ return ()=>observer.disconnect();
55
+ }, []);
35
56
  if (hideLogo) return null;
57
+ const logoSrc = isDark ? LogoUrlDark : LogoUrlLight;
36
58
  return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("div", {
37
59
  className: "logo",
38
60
  children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("a", {
@@ -41,7 +63,7 @@ const Logo = (param)=>{
41
63
  rel: "noreferrer",
42
64
  children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("img", {
43
65
  alt: "Midscene_logo",
44
- src: "https://lf3-static.bytednsdoc.com/obj/eden-cn/vhaeh7vhabf/Midscene.png"
66
+ src: logoSrc
45
67
  })
46
68
  })
47
69
  });
@@ -183,3 +183,28 @@
183
183
  display: flex;
184
184
  }
185
185
 
186
+ [data-theme="dark"] .player-container {
187
+ background: #141414;
188
+ border-color: #141414;
189
+ }
190
+
191
+ [data-theme="dark"] .player-container[data-fit-mode="height"] {
192
+ background: #1f1f1f;
193
+ }
194
+
195
+ [data-theme="dark"] .player-container[data-fit-mode="height"] .canvas-container {
196
+ background-color: #141414;
197
+ }
198
+
199
+ [data-theme="dark"] .player-container .canvas-container {
200
+ background-color: #1f1f1f;
201
+ }
202
+
203
+ [data-theme="dark"] .player-container .player-tools, [data-theme="dark"] .player-container .player-tools .ant-spin, [data-theme="dark"] .player-container .player-tools .status-icon svg {
204
+ color: rgba(255, 255, 255, .85);
205
+ }
206
+
207
+ [data-theme="dark"] .player-container .player-tools .status-icon:hover {
208
+ background: rgba(255, 255, 255, .08);
209
+ }
210
+
@@ -48,8 +48,6 @@ const global_perspective_js_namespaceObject = require("../../icons/global-perspe
48
48
  var global_perspective_js_default = /*#__PURE__*/ __webpack_require__.n(global_perspective_js_namespaceObject);
49
49
  const player_setting_js_namespaceObject = require("../../icons/player-setting.js");
50
50
  var player_setting_js_default = /*#__PURE__*/ __webpack_require__.n(player_setting_js_namespaceObject);
51
- const show_marker_js_namespaceObject = require("../../icons/show-marker.js");
52
- var show_marker_js_default = /*#__PURE__*/ __webpack_require__.n(show_marker_js_namespaceObject);
53
51
  const store_js_namespaceObject = require("../../store/store.js");
54
52
  const pixi_loader_js_namespaceObject = require("../../utils/pixi-loader.js");
55
53
  const external_blackboard_index_js_namespaceObject = require("../blackboard/index.js");
@@ -173,19 +171,13 @@ function Player(props) {
173
171
  var _scripts_;
174
172
  const [titleText, setTitleText] = (0, external_react_namespaceObject.useState)('');
175
173
  const [subTitleText, setSubTitleText] = (0, external_react_namespaceObject.useState)('');
176
- const { autoZoom, setAutoZoom, elementsVisible, setElementsVisible } = (0, store_js_namespaceObject.useBlackboardPreference)();
174
+ const { autoZoom, setAutoZoom } = (0, store_js_namespaceObject.useBlackboardPreference)();
177
175
  (0, external_react_namespaceObject.useEffect)(()=>{
178
176
  if ((null == props ? void 0 : props.autoZoom) !== void 0) setAutoZoom(props.autoZoom);
179
177
  }, [
180
178
  null == props ? void 0 : props.autoZoom,
181
179
  setAutoZoom
182
180
  ]);
183
- (0, external_react_namespaceObject.useEffect)(()=>{
184
- if ((null == props ? void 0 : props.elementsVisible) !== void 0) setElementsVisible(props.elementsVisible);
185
- }, [
186
- null == props ? void 0 : props.elementsVisible,
187
- setElementsVisible
188
- ]);
189
181
  const scripts = null == props ? void 0 : props.replayScripts;
190
182
  const imageWidth = (null == props ? void 0 : props.imageWidth) || 1920;
191
183
  const imageHeight = (null == props ? void 0 : props.imageHeight) || 1080;
@@ -208,12 +200,6 @@ function Player(props) {
208
200
  container.zIndex = LAYER_ORDER_INSIGHT;
209
201
  return container;
210
202
  }, []);
211
- (0, external_react_namespaceObject.useEffect)(()=>{
212
- insightMarkContainer.visible = elementsVisible;
213
- }, [
214
- elementsVisible,
215
- insightMarkContainer
216
- ]);
217
203
  const basicCameraState = {
218
204
  left: 0,
219
205
  top: 0,
@@ -842,59 +828,6 @@ function Player(props) {
842
828
  })
843
829
  ]
844
830
  })
845
- },
846
- {
847
- key: 'elementsVisible',
848
- style: {
849
- height: '39px',
850
- margin: 0,
851
- padding: '0 12px'
852
- },
853
- label: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)("div", {
854
- style: {
855
- display: 'flex',
856
- alignItems: 'center',
857
- justifyContent: 'space-between',
858
- width: '100%',
859
- height: '39px'
860
- },
861
- children: [
862
- /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)("div", {
863
- style: {
864
- display: 'flex',
865
- alignItems: 'center',
866
- gap: '4px'
867
- },
868
- children: [
869
- /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(show_marker_js_default(), {
870
- style: {
871
- width: '16px',
872
- height: '16px'
873
- }
874
- }),
875
- /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("span", {
876
- style: {
877
- fontSize: '12px',
878
- marginRight: '16px'
879
- },
880
- children: "Show element markers"
881
- })
882
- ]
883
- }),
884
- /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_antd_namespaceObject.Switch, {
885
- size: "small",
886
- checked: elementsVisible,
887
- onChange: (checked)=>{
888
- setElementsVisible(checked);
889
- triggerReplay();
890
- },
891
- onClick: (_, e)=>{
892
- var _e_stopPropagation;
893
- return null == e ? void 0 : null == (_e_stopPropagation = e.stopPropagation) ? void 0 : _e_stopPropagation.call(e);
894
- }
895
- })
896
- ]
897
- })
898
831
  }
899
832
  ]
900
833
  },
@@ -32,6 +32,15 @@
32
32
  overflow: scroll;
33
33
  }
34
34
 
35
+ [data-theme="dark"] .result-wrapper .loading-container .loading-progress-text {
36
+ color: rgba(255, 255, 255, .65);
37
+ }
38
+
39
+ [data-theme="dark"] .result-wrapper pre {
40
+ color: rgba(255, 255, 255, .85);
41
+ background: #141414;
42
+ }
43
+
35
44
  .prompt-input-wrapper {
36
45
  width: 100%;
37
46
  }
@@ -423,6 +432,49 @@
423
432
  color: #2b83ff;
424
433
  }
425
434
 
435
+ [data-theme="dark"] .prompt-input .tip-button {
436
+ background-color: rgba(255, 255, 255, .08);
437
+ }
438
+
439
+ [data-theme="dark"] .prompt-input .tip-button.active {
440
+ color: #fff;
441
+ background-color: #2b83ff;
442
+ }
443
+
444
+ [data-theme="dark"] .prompt-input .prompt-textarea-wrapper {
445
+ background-color: rgba(255, 255, 255, .04);
446
+ }
447
+
448
+ [data-theme="dark"] .prompt-input .prompt-textarea-wrapper:hover, [data-theme="dark"] .prompt-input .prompt-textarea-wrapper.focused {
449
+ background-color: rgba(255, 255, 255, .08);
450
+ }
451
+
452
+ [data-theme="dark"] .prompt-input .btn-wrapper .btn-item {
453
+ color: #fff;
454
+ background-color: #2b83ff;
455
+ }
456
+
457
+ [data-theme="dark"] .prompt-input .btn-wrapper .btn-item:hover {
458
+ background-color: #2b83ff;
459
+ }
460
+
461
+ [data-theme="dark"] .prompt-input .dropdown-content {
462
+ background-color: #1f1f1f;
463
+ border-color: rgba(255, 255, 255, .12);
464
+ }
465
+
466
+ [data-theme="dark"] .prompt-input .param-label {
467
+ color: rgba(255, 255, 255, .85);
468
+ }
469
+
470
+ [data-theme="dark"] .prompt-input .error-message {
471
+ color: #ff4d4f;
472
+ }
473
+
474
+ [data-theme="dark"] .prompt-input .send-button-text {
475
+ color: #2b83ff;
476
+ }
477
+
426
478
  body {
427
479
  margin: 0;
428
480
  font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Noto Sans, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji;
@@ -32,3 +32,12 @@
32
32
  overflow: scroll;
33
33
  }
34
34
 
35
+ [data-theme="dark"] .result-wrapper .loading-container .loading-progress-text {
36
+ color: rgba(255, 255, 255, .65);
37
+ }
38
+
39
+ [data-theme="dark"] .result-wrapper pre {
40
+ color: rgba(255, 255, 255, .85);
41
+ background: #141414;
42
+ }
43
+
@@ -389,3 +389,46 @@
389
389
  color: #2b83ff;
390
390
  }
391
391
 
392
+ [data-theme="dark"] .prompt-input .tip-button {
393
+ background-color: rgba(255, 255, 255, .08);
394
+ }
395
+
396
+ [data-theme="dark"] .prompt-input .tip-button.active {
397
+ color: #fff;
398
+ background-color: #2b83ff;
399
+ }
400
+
401
+ [data-theme="dark"] .prompt-input .prompt-textarea-wrapper {
402
+ background-color: rgba(255, 255, 255, .04);
403
+ }
404
+
405
+ [data-theme="dark"] .prompt-input .prompt-textarea-wrapper:hover, [data-theme="dark"] .prompt-input .prompt-textarea-wrapper.focused {
406
+ background-color: rgba(255, 255, 255, .08);
407
+ }
408
+
409
+ [data-theme="dark"] .prompt-input .btn-wrapper .btn-item {
410
+ color: #fff;
411
+ background-color: #2b83ff;
412
+ }
413
+
414
+ [data-theme="dark"] .prompt-input .btn-wrapper .btn-item:hover {
415
+ background-color: #2b83ff;
416
+ }
417
+
418
+ [data-theme="dark"] .prompt-input .dropdown-content {
419
+ background-color: #1f1f1f;
420
+ border-color: rgba(255, 255, 255, .12);
421
+ }
422
+
423
+ [data-theme="dark"] .prompt-input .param-label {
424
+ color: rgba(255, 255, 255, .85);
425
+ }
426
+
427
+ [data-theme="dark"] .prompt-input .error-message {
428
+ color: #ff4d4f;
429
+ }
430
+
431
+ [data-theme="dark"] .prompt-input .send-button-text {
432
+ color: #2b83ff;
433
+ }
434
+
@@ -339,3 +339,72 @@
339
339
  text-decoration: underline;
340
340
  }
341
341
 
342
+ [data-theme="dark"] .universal-playground .error-hint {
343
+ color: rgba(255, 255, 255, .45);
344
+ }
345
+
346
+ [data-theme="dark"] .universal-playground .status-indicator {
347
+ color: rgba(255, 255, 255, .85);
348
+ }
349
+
350
+ [data-theme="dark"] .universal-playground .status-indicator.error {
351
+ color: #ff4d4f;
352
+ }
353
+
354
+ [data-theme="dark"] .universal-playground .status-indicator.success {
355
+ color: #52c41a;
356
+ }
357
+
358
+ [data-theme="dark"] .universal-playground .operation-label {
359
+ color: rgba(255, 255, 255, .85);
360
+ }
361
+
362
+ [data-theme="dark"] .universal-playground .alert-message {
363
+ color: rgba(255, 255, 255, .85);
364
+ background-color: rgba(82, 38, 7, .3);
365
+ }
366
+
367
+ [data-theme="dark"] .universal-playground .operation-item .operation-icon-wrapper {
368
+ background-color: rgba(255, 255, 255, .08);
369
+ }
370
+
371
+ [data-theme="dark"] .universal-playground .operation-item .operation-content {
372
+ background-color: rgba(0, 0, 0, 0);
373
+ }
374
+
375
+ [data-theme="dark"] .universal-playground .operation-item .operation-content .operation-title {
376
+ color: rgba(255, 255, 255, .45);
377
+ }
378
+
379
+ [data-theme="dark"] .universal-playground .playground-footer {
380
+ background-color: rgba(255, 255, 255, .04);
381
+ }
382
+
383
+ [data-theme="dark"] .universal-playground .playground-footer .status-text {
384
+ color: rgba(255, 255, 255, .85);
385
+ }
386
+
387
+ [data-theme="dark"] .universal-playground .results-info {
388
+ color: rgba(255, 255, 255, .45);
389
+ }
390
+
391
+ [data-theme="dark"] .universal-playground .result-section .result-title {
392
+ color: rgba(255, 255, 255, .85);
393
+ }
394
+
395
+ [data-theme="dark"] .universal-playground .result-section .result-details {
396
+ color: rgba(255, 255, 255, .65);
397
+ }
398
+
399
+ [data-theme="dark"] .universal-playground .result-section .result-value {
400
+ color: rgba(255, 255, 255, .85);
401
+ }
402
+
403
+ [data-theme="dark"] .universal-playground .result-section .result-value.success {
404
+ color: #52c41a;
405
+ }
406
+
407
+ [data-theme="dark"] .universal-playground .result-section .result-value.error {
408
+ color: #ff4d4f;
409
+ }
410
+
@@ -168,3 +168,51 @@
168
168
  color: #999;
169
169
  }
170
170
 
171
+ [data-theme="dark"] .screenshot-viewer.offline, [data-theme="dark"] .screenshot-viewer.loading, [data-theme="dark"] .screenshot-viewer.error {
172
+ color: rgba(255, 255, 255, .65);
173
+ }
174
+
175
+ [data-theme="dark"] .screenshot-viewer.offline .screenshot-placeholder h3, [data-theme="dark"] .screenshot-viewer.loading .screenshot-placeholder h3, [data-theme="dark"] .screenshot-viewer.error .screenshot-placeholder h3 {
176
+ color: #1890ff;
177
+ }
178
+
179
+ [data-theme="dark"] .screenshot-viewer.offline .screenshot-placeholder p, [data-theme="dark"] .screenshot-viewer.loading .screenshot-placeholder p, [data-theme="dark"] .screenshot-viewer.error .screenshot-placeholder p {
180
+ color: rgba(255, 255, 255, .65);
181
+ }
182
+
183
+ [data-theme="dark"] .screenshot-viewer.offline .screenshot-placeholder p.error-message, [data-theme="dark"] .screenshot-viewer.loading .screenshot-placeholder p.error-message, [data-theme="dark"] .screenshot-viewer.error .screenshot-placeholder p.error-message {
184
+ color: #ff4d4f;
185
+ }
186
+
187
+ [data-theme="dark"] .screenshot-viewer .screenshot-header .screenshot-title h3 {
188
+ color: rgba(255, 255, 255, .85);
189
+ }
190
+
191
+ [data-theme="dark"] .screenshot-viewer .screenshot-header .screenshot-title .screenshot-subtitle {
192
+ color: rgba(255, 255, 255, .45);
193
+ }
194
+
195
+ [data-theme="dark"] .screenshot-viewer .screenshot-container {
196
+ background: #141414;
197
+ }
198
+
199
+ [data-theme="dark"] .screenshot-viewer .screenshot-container .screenshot-overlay .device-name-overlay {
200
+ color: rgba(255, 255, 255, .85);
201
+ }
202
+
203
+ [data-theme="dark"] .screenshot-viewer .screenshot-container .screenshot-overlay .screenshot-controls .last-update-time {
204
+ color: rgba(255, 255, 255, .65);
205
+ }
206
+
207
+ [data-theme="dark"] .screenshot-viewer .screenshot-container .screenshot-overlay .screenshot-controls .ant-btn:hover {
208
+ background-color: rgba(255, 255, 255, .08);
209
+ }
210
+
211
+ [data-theme="dark"] .screenshot-viewer .screenshot-container .screenshot-overlay .screenshot-controls .ant-btn .anticon {
212
+ color: rgba(255, 255, 255, .65);
213
+ }
214
+
215
+ [data-theme="dark"] .screenshot-viewer .screenshot-container .screenshot-content .screenshot-placeholder {
216
+ color: rgba(255, 255, 255, .45);
217
+ }
218
+
@@ -36,7 +36,7 @@ const SvgGlobalPerspective = (props)=>/*#__PURE__*/ (0, jsx_runtime_namespaceObj
36
36
  viewBox: "0 0 16 16",
37
37
  ...props,
38
38
  children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("path", {
39
- fill: "#333",
39
+ fill: "currentColor",
40
40
  d: "M1.333 13v-2.5a.667.667 0 0 1 1.334 0V13c0 .184.149.333.333.333h2.5a.667.667 0 0 1 0 1.334H3c-.92 0-1.667-.746-1.667-1.667m12 0v-2.5a.667.667 0 0 1 1.334 0V13c0 .92-.746 1.667-1.667 1.667h-2.5a.667.667 0 0 1 0-1.334H13a.333.333 0 0 0 .333-.333m-12-7.5V3c0-.92.747-1.667 1.667-1.667h2.5a.667.667 0 0 1 0 1.334H3A.333.333 0 0 0 2.667 3v2.5a.667.667 0 0 1-1.334 0m12 0V3A.333.333 0 0 0 13 2.667h-2.5a.667.667 0 0 1 0-1.334H13c.92 0 1.667.747 1.667 1.667v2.5a.667.667 0 0 1-1.334 0M5.667 10.333h4.666V5.667H5.667zm6 .167c0 .644-.523 1.167-1.167 1.167h-5A1.167 1.167 0 0 1 4.333 10.5v-5c0-.644.523-1.167 1.167-1.167h5c.644 0 1.167.523 1.167 1.167z"
41
41
  })
42
42
  });
@@ -37,7 +37,7 @@ const SvgHistory = (props)=>/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)(
37
37
  ...props,
38
38
  children: [
39
39
  /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("path", {
40
- stroke: "#000",
40
+ stroke: "currentColor",
41
41
  strokeLinecap: "round",
42
42
  strokeLinejoin: "round",
43
43
  strokeOpacity: 0.85,
@@ -45,7 +45,7 @@ const SvgHistory = (props)=>/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)(
45
45
  d: "M6.63 9.021c-2.862 6.126 2.197 10.501 6.063 10.501a7 7 0 1 0-6.063-10.5"
46
46
  }),
47
47
  /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("path", {
48
- stroke: "#000",
48
+ stroke: "currentColor",
49
49
  strokeLinecap: "round",
50
50
  strokeLinejoin: "round",
51
51
  strokeOpacity: 0.85,
@@ -37,7 +37,7 @@ const SvgMagnifyingGlass = (props)=>/*#__PURE__*/ (0, jsx_runtime_namespaceObjec
37
37
  ...props,
38
38
  children: [
39
39
  /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)("g", {
40
- stroke: "#000",
40
+ stroke: "currentColor",
41
41
  strokeLinejoin: "round",
42
42
  strokeOpacity: 0.65,
43
43
  strokeWidth: 1.5,