@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
@@ -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
+
@@ -5,7 +5,7 @@ import { Application, Container, Graphics, Rectangle, Sprite, Text, Texture } fr
5
5
  import { useEffect, useMemo, useRef, useState } from "react";
6
6
  import { colorForName, highlightColorForType } from "../../utils/color.mjs";
7
7
  import "./index.css";
8
- import { DropShadowFilter } from "pixi-filters";
8
+ import { DropShadowFilter, GlowFilter } from "pixi-filters";
9
9
  const itemFillAlpha = 0.4;
10
10
  const highlightAlpha = 0.4;
11
11
  const pointRadius = 10;
@@ -72,6 +72,9 @@ const Blackboard = (props)=>{
72
72
  const elementMarkContainer = useMemo(()=>new Container(), []);
73
73
  const [hoverElement, setHoverElement] = useState(null);
74
74
  const pixiBgRef = useRef(void 0);
75
+ const animationFrameRef = useRef(null);
76
+ const highlightGraphicsRef = useRef([]);
77
+ const glowFiltersRef = useRef([]);
75
78
  const backgroundVisible = true;
76
79
  const elementsVisible = true;
77
80
  useEffect(()=>{
@@ -98,6 +101,10 @@ const Blackboard = (props)=>{
98
101
  })());
99
102
  return ()=>{
100
103
  console.log('will destroy');
104
+ if (null !== animationFrameRef.current) {
105
+ cancelAnimationFrame(animationFrameRef.current);
106
+ animationFrameRef.current = null;
107
+ }
101
108
  try {
102
109
  app.destroy(true, {
103
110
  children: true,
@@ -168,18 +175,54 @@ const Blackboard = (props)=>{
168
175
  elementMarkContainer.removeChildren();
169
176
  highlightContainer.eventMode = 'passive';
170
177
  elementMarkContainer.eventMode = 'passive';
178
+ highlightGraphicsRef.current = [];
179
+ glowFiltersRef.current = [];
171
180
  if (highlightRect) {
172
181
  const [graphics] = rectMarkForItem(highlightRect, 'Search Area', 'searchArea');
173
182
  highlightContainer.addChild(graphics);
174
183
  }
175
184
  if (highlightElements.length) highlightElements.forEach((element)=>{
176
185
  const { rect, content, id } = element;
177
- const [graphics] = rectMarkForItem(rect, content, 'highlight');
178
- highlightContainer.addChild(graphics);
186
+ const items = rectMarkForItem(rect, content, 'highlight');
187
+ const graphics = items[0];
188
+ const glowFilter = new GlowFilter({
189
+ distance: 30,
190
+ outerStrength: 3,
191
+ innerStrength: 0,
192
+ color: 0xfd5907,
193
+ quality: 0.5
194
+ });
195
+ const existingFilters = graphics.filters;
196
+ if (Array.isArray(existingFilters)) graphics.filters = [
197
+ ...existingFilters,
198
+ glowFilter
199
+ ];
200
+ else if (existingFilters) graphics.filters = [
201
+ existingFilters,
202
+ glowFilter
203
+ ];
204
+ else graphics.filters = [
205
+ glowFilter
206
+ ];
207
+ items.forEach((item)=>highlightContainer.addChild(item));
208
+ highlightGraphicsRef.current.push(graphics);
209
+ glowFiltersRef.current.push(glowFilter);
179
210
  });
180
211
  if (null == highlightPoints ? void 0 : highlightPoints.length) highlightPoints.forEach((point)=>{
181
212
  const graphics = pointMarkForItem(point, 'highlightPoint');
213
+ const glowFilter = new GlowFilter({
214
+ distance: 25,
215
+ outerStrength: 2.5,
216
+ innerStrength: 0,
217
+ color: 0xfd5907,
218
+ quality: 0.5
219
+ });
220
+ graphics.filters = [
221
+ glowFilter
222
+ ];
182
223
  highlightContainer.addChild(graphics);
224
+ highlightGraphicsRef.current.push(graphics);
225
+ glowFiltersRef.current.push(glowFilter);
183
226
  });
184
227
  elementMarkContainer.visible = elementsVisible;
185
228
  return {
@@ -193,6 +236,46 @@ const Blackboard = (props)=>{
193
236
  highlightRect,
194
237
  highlightPoints
195
238
  ]);
239
+ useEffect(()=>{
240
+ if (!appInitialed || 0 === highlightGraphicsRef.current.length) return void console.log('Animation skipped:', {
241
+ appInitialed,
242
+ graphicsCount: highlightGraphicsRef.current.length
243
+ });
244
+ console.log('Starting pulsing animation for', highlightGraphicsRef.current.length, 'graphics');
245
+ const graphicsToAnimate = highlightGraphicsRef.current;
246
+ const glowFilters = glowFiltersRef.current;
247
+ const pulseDuration = 1200;
248
+ const minAlpha = 0.4;
249
+ const maxAlpha = 1.0;
250
+ const minGlowStrength = 2.0;
251
+ const maxGlowStrength = 5.0;
252
+ const startTime = performance.now();
253
+ const animate = ()=>{
254
+ const elapsed = performance.now() - startTime;
255
+ const progress = elapsed % pulseDuration / pulseDuration;
256
+ const sineValue = Math.sin(progress * Math.PI * 2);
257
+ const normalizedSine = (sineValue + 1) / 2;
258
+ const alpha = minAlpha + normalizedSine * (maxAlpha - minAlpha);
259
+ const glowStrength = minGlowStrength + normalizedSine * (maxGlowStrength - minGlowStrength);
260
+ graphicsToAnimate.forEach((graphics, index)=>{
261
+ graphics.alpha = alpha;
262
+ if (glowFilters[index]) glowFilters[index].outerStrength = glowStrength;
263
+ });
264
+ animationFrameRef.current = requestAnimationFrame(animate);
265
+ };
266
+ animate();
267
+ return ()=>{
268
+ console.log('Stopping pulsing animation');
269
+ if (null !== animationFrameRef.current) {
270
+ cancelAnimationFrame(animationFrameRef.current);
271
+ animationFrameRef.current = null;
272
+ }
273
+ };
274
+ }, [
275
+ appInitialed,
276
+ highlightElements,
277
+ highlightPoints
278
+ ]);
196
279
  let bottomTipA = null;
197
280
  if (1 === highlightElementRects.length) bottomTipA = /*#__PURE__*/ jsx("div", {
198
281
  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
+
@@ -1,9 +1,31 @@
1
1
  import { jsx } from "react/jsx-runtime";
2
+ import { useEffect, useState } from "react";
2
3
  import "./index.css";
3
4
  const LogoUrl = 'https://lf3-static.bytednsdoc.com/obj/eden-cn/vhaeh7vhabf/Midscene.png';
5
+ const LogoUrlLight = 'https://lf3-static.bytednsdoc.com/obj/eden-cn/nupipfups/Midscene/midscene_with_text_light.png';
6
+ const LogoUrlDark = 'https://lf3-static.bytednsdoc.com/obj/eden-cn/nupipfups/Midscene/midscene_with_text_dark.png';
4
7
  const Logo = (param)=>{
5
8
  let { hideLogo = false } = param;
9
+ const [isDark, setIsDark] = useState(false);
10
+ useEffect(()=>{
11
+ const checkTheme = ()=>{
12
+ var _document_querySelector;
13
+ const theme = null == (_document_querySelector = document.querySelector('[data-theme]')) ? void 0 : _document_querySelector.getAttribute('data-theme');
14
+ setIsDark('dark' === theme);
15
+ };
16
+ checkTheme();
17
+ const observer = new MutationObserver(checkTheme);
18
+ const target = document.querySelector('[data-theme]') || document.documentElement;
19
+ observer.observe(target, {
20
+ attributes: true,
21
+ attributeFilter: [
22
+ 'data-theme'
23
+ ]
24
+ });
25
+ return ()=>observer.disconnect();
26
+ }, []);
6
27
  if (hideLogo) return null;
28
+ const logoSrc = isDark ? LogoUrlDark : LogoUrlLight;
7
29
  return /*#__PURE__*/ jsx("div", {
8
30
  className: "logo",
9
31
  children: /*#__PURE__*/ jsx("a", {
@@ -12,7 +34,7 @@ const Logo = (param)=>{
12
34
  rel: "noreferrer",
13
35
  children: /*#__PURE__*/ jsx("img", {
14
36
  alt: "Midscene_logo",
15
- src: "https://lf3-static.bytednsdoc.com/obj/eden-cn/vhaeh7vhabf/Midscene.png"
37
+ src: logoSrc
16
38
  })
17
39
  })
18
40
  });
@@ -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
+
@@ -9,7 +9,6 @@ import { CaretRightOutlined, DownloadOutlined, ExportOutlined, LoadingOutlined }
9
9
  import { Dropdown, Spin, Switch, Tooltip, message } from "antd";
10
10
  import global_perspective from "../../icons/global-perspective.mjs";
11
11
  import player_setting from "../../icons/player-setting.mjs";
12
- import show_marker from "../../icons/show-marker.mjs";
13
12
  import { useBlackboardPreference } from "../../store/store.mjs";
14
13
  import { getTextureFromCache, loadTexture } from "../../utils/pixi-loader.mjs";
15
14
  import { rectMarkForItem } from "../blackboard/index.mjs";
@@ -133,19 +132,13 @@ function Player(props) {
133
132
  var _scripts_;
134
133
  const [titleText, setTitleText] = useState('');
135
134
  const [subTitleText, setSubTitleText] = useState('');
136
- const { autoZoom, setAutoZoom, elementsVisible, setElementsVisible } = useBlackboardPreference();
135
+ const { autoZoom, setAutoZoom } = useBlackboardPreference();
137
136
  useEffect(()=>{
138
137
  if ((null == props ? void 0 : props.autoZoom) !== void 0) setAutoZoom(props.autoZoom);
139
138
  }, [
140
139
  null == props ? void 0 : props.autoZoom,
141
140
  setAutoZoom
142
141
  ]);
143
- useEffect(()=>{
144
- if ((null == props ? void 0 : props.elementsVisible) !== void 0) setElementsVisible(props.elementsVisible);
145
- }, [
146
- null == props ? void 0 : props.elementsVisible,
147
- setElementsVisible
148
- ]);
149
142
  const scripts = null == props ? void 0 : props.replayScripts;
150
143
  const imageWidth = (null == props ? void 0 : props.imageWidth) || 1920;
151
144
  const imageHeight = (null == props ? void 0 : props.imageHeight) || 1080;
@@ -168,12 +161,6 @@ function Player(props) {
168
161
  container.zIndex = LAYER_ORDER_INSIGHT;
169
162
  return container;
170
163
  }, []);
171
- useEffect(()=>{
172
- insightMarkContainer.visible = elementsVisible;
173
- }, [
174
- elementsVisible,
175
- insightMarkContainer
176
- ]);
177
164
  const basicCameraState = {
178
165
  left: 0,
179
166
  top: 0,
@@ -802,59 +789,6 @@ function Player(props) {
802
789
  })
803
790
  ]
804
791
  })
805
- },
806
- {
807
- key: 'elementsVisible',
808
- style: {
809
- height: '39px',
810
- margin: 0,
811
- padding: '0 12px'
812
- },
813
- label: /*#__PURE__*/ jsxs("div", {
814
- style: {
815
- display: 'flex',
816
- alignItems: 'center',
817
- justifyContent: 'space-between',
818
- width: '100%',
819
- height: '39px'
820
- },
821
- children: [
822
- /*#__PURE__*/ jsxs("div", {
823
- style: {
824
- display: 'flex',
825
- alignItems: 'center',
826
- gap: '4px'
827
- },
828
- children: [
829
- /*#__PURE__*/ jsx(show_marker, {
830
- style: {
831
- width: '16px',
832
- height: '16px'
833
- }
834
- }),
835
- /*#__PURE__*/ jsx("span", {
836
- style: {
837
- fontSize: '12px',
838
- marginRight: '16px'
839
- },
840
- children: "Show element markers"
841
- })
842
- ]
843
- }),
844
- /*#__PURE__*/ jsx(Switch, {
845
- size: "small",
846
- checked: elementsVisible,
847
- onChange: (checked)=>{
848
- setElementsVisible(checked);
849
- triggerReplay();
850
- },
851
- onClick: (_, e)=>{
852
- var _e_stopPropagation;
853
- return null == e ? void 0 : null == (_e_stopPropagation = e.stopPropagation) ? void 0 : _e_stopPropagation.call(e);
854
- }
855
- })
856
- ]
857
- })
858
792
  }
859
793
  ]
860
794
  },
@@ -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
+
@@ -8,7 +8,7 @@ const SvgGlobalPerspective = (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: "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"
13
13
  })
14
14
  });
@@ -9,7 +9,7 @@ const SvgHistory = (props)=>/*#__PURE__*/ jsxs("svg", {
9
9
  ...props,
10
10
  children: [
11
11
  /*#__PURE__*/ jsx("path", {
12
- stroke: "#000",
12
+ stroke: "currentColor",
13
13
  strokeLinecap: "round",
14
14
  strokeLinejoin: "round",
15
15
  strokeOpacity: 0.85,
@@ -17,7 +17,7 @@ const SvgHistory = (props)=>/*#__PURE__*/ jsxs("svg", {
17
17
  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"
18
18
  }),
19
19
  /*#__PURE__*/ jsx("path", {
20
- stroke: "#000",
20
+ stroke: "currentColor",
21
21
  strokeLinecap: "round",
22
22
  strokeLinejoin: "round",
23
23
  strokeOpacity: 0.85,
@@ -9,7 +9,7 @@ const SvgMagnifyingGlass = (props)=>/*#__PURE__*/ jsxs("svg", {
9
9
  ...props,
10
10
  children: [
11
11
  /*#__PURE__*/ jsxs("g", {
12
- stroke: "#000",
12
+ stroke: "currentColor",
13
13
  strokeLinejoin: "round",
14
14
  strokeOpacity: 0.65,
15
15
  strokeWidth: 1.5,
@@ -9,13 +9,13 @@ const SvgPlayerSetting = (props)=>/*#__PURE__*/ jsxs("svg", {
9
9
  ...props,
10
10
  children: [
11
11
  /*#__PURE__*/ jsx("path", {
12
- stroke: "#333",
12
+ stroke: "currentColor",
13
13
  strokeLinejoin: "round",
14
14
  strokeWidth: 1.333,
15
15
  d: "M11.333 13.667 14.667 8l-3.334-5.667H4.667L1.333 8l3.334 5.667z"
16
16
  }),
17
17
  /*#__PURE__*/ jsx("path", {
18
- stroke: "#333",
18
+ stroke: "currentColor",
19
19
  strokeLinejoin: "round",
20
20
  strokeWidth: 1.333,
21
21
  d: "M8 9.667a1.667 1.667 0 1 0 0-3.334 1.667 1.667 0 0 0 0 3.334Z"