@buoy-gg/floating-tools-core 2.1.11 → 2.1.13

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 (108) hide show
  1. package/LICENSE +58 -0
  2. package/lib/commonjs/FloatingToolsStore.js +1 -501
  3. package/lib/commonjs/colors.js +1 -54
  4. package/lib/commonjs/constants.js +1 -31
  5. package/lib/commonjs/devToolsState.js +1 -325
  6. package/lib/commonjs/dial.js +1 -617
  7. package/lib/commonjs/easing.js +1 -69
  8. package/lib/commonjs/icons/benchmark-icon.js +1 -24
  9. package/lib/commonjs/icons/env-icon.js +1 -24
  10. package/lib/commonjs/icons/events-icon.js +1 -24
  11. package/lib/commonjs/icons/highlight-icon.js +1 -24
  12. package/lib/commonjs/icons/icon-data.js +1 -2268
  13. package/lib/commonjs/icons/icon-factories.js +1 -173
  14. package/lib/commonjs/icons/icon-primitives.js +1 -559
  15. package/lib/commonjs/icons/icon-primitives.native.js +1 -779
  16. package/lib/commonjs/icons/icon-renderer.js +1 -260
  17. package/lib/commonjs/icons/network-icon.js +1 -24
  18. package/lib/commonjs/icons/query-icon.js +1 -24
  19. package/lib/commonjs/icons/redux-icon.js +1 -85
  20. package/lib/commonjs/icons/renders-icon.js +1 -33
  21. package/lib/commonjs/icons/routes-icon.js +1 -49
  22. package/lib/commonjs/icons/sentry-icon.js +1 -24
  23. package/lib/commonjs/icons/storage-icon.js +1 -24
  24. package/lib/commonjs/icons/wifi-icon.js +1 -24
  25. package/lib/commonjs/index.js +1 -723
  26. package/lib/commonjs/settings.js +1 -599
  27. package/lib/commonjs/utils.js +1 -72
  28. package/lib/module/FloatingToolsStore.js +1 -496
  29. package/lib/module/colors.js +1 -49
  30. package/lib/module/constants.js +1 -27
  31. package/lib/module/devToolsState.js +1 -318
  32. package/lib/module/dial.js +1 -603
  33. package/lib/module/easing.js +1 -62
  34. package/lib/module/icons/benchmark-icon.js +1 -15
  35. package/lib/module/icons/env-icon.js +1 -15
  36. package/lib/module/icons/events-icon.js +1 -15
  37. package/lib/module/icons/highlight-icon.js +1 -15
  38. package/lib/module/icons/icon-data.js +1 -2264
  39. package/lib/module/icons/icon-factories.js +1 -163
  40. package/lib/module/icons/icon-primitives.js +1 -547
  41. package/lib/module/icons/icon-primitives.native.js +1 -767
  42. package/lib/module/icons/icon-renderer.js +1 -255
  43. package/lib/module/icons/network-icon.js +1 -15
  44. package/lib/module/icons/query-icon.js +1 -15
  45. package/lib/module/icons/redux-icon.js +1 -81
  46. package/lib/module/icons/renders-icon.js +1 -17
  47. package/lib/module/icons/routes-icon.js +1 -41
  48. package/lib/module/icons/sentry-icon.js +1 -15
  49. package/lib/module/icons/storage-icon.js +1 -15
  50. package/lib/module/icons/wifi-icon.js +1 -15
  51. package/lib/module/index.js +1 -103
  52. package/lib/module/settings.js +1 -587
  53. package/lib/module/utils.js +1 -66
  54. package/package.json +8 -8
  55. package/lib/typescript/commonjs/FloatingToolsStore.d.ts.map +0 -1
  56. package/lib/typescript/commonjs/colors.d.ts.map +0 -1
  57. package/lib/typescript/commonjs/constants.d.ts.map +0 -1
  58. package/lib/typescript/commonjs/devToolsState.d.ts.map +0 -1
  59. package/lib/typescript/commonjs/dial.d.ts.map +0 -1
  60. package/lib/typescript/commonjs/easing.d.ts.map +0 -1
  61. package/lib/typescript/commonjs/icons/benchmark-icon.d.ts.map +0 -1
  62. package/lib/typescript/commonjs/icons/env-icon.d.ts.map +0 -1
  63. package/lib/typescript/commonjs/icons/events-icon.d.ts.map +0 -1
  64. package/lib/typescript/commonjs/icons/highlight-icon.d.ts.map +0 -1
  65. package/lib/typescript/commonjs/icons/icon-data.d.ts.map +0 -1
  66. package/lib/typescript/commonjs/icons/icon-factories.d.ts.map +0 -1
  67. package/lib/typescript/commonjs/icons/icon-primitives.d.ts.map +0 -1
  68. package/lib/typescript/commonjs/icons/icon-primitives.native.d.ts.map +0 -1
  69. package/lib/typescript/commonjs/icons/icon-renderer.d.ts.map +0 -1
  70. package/lib/typescript/commonjs/icons/network-icon.d.ts.map +0 -1
  71. package/lib/typescript/commonjs/icons/query-icon.d.ts.map +0 -1
  72. package/lib/typescript/commonjs/icons/redux-icon.d.ts.map +0 -1
  73. package/lib/typescript/commonjs/icons/renders-icon.d.ts.map +0 -1
  74. package/lib/typescript/commonjs/icons/routes-icon.d.ts.map +0 -1
  75. package/lib/typescript/commonjs/icons/sentry-icon.d.ts.map +0 -1
  76. package/lib/typescript/commonjs/icons/storage-icon.d.ts.map +0 -1
  77. package/lib/typescript/commonjs/icons/wifi-icon.d.ts.map +0 -1
  78. package/lib/typescript/commonjs/index.d.ts.map +0 -1
  79. package/lib/typescript/commonjs/settings.d.ts.map +0 -1
  80. package/lib/typescript/commonjs/types.d.ts.map +0 -1
  81. package/lib/typescript/commonjs/utils.d.ts.map +0 -1
  82. package/lib/typescript/module/FloatingToolsStore.d.ts.map +0 -1
  83. package/lib/typescript/module/colors.d.ts.map +0 -1
  84. package/lib/typescript/module/constants.d.ts.map +0 -1
  85. package/lib/typescript/module/devToolsState.d.ts.map +0 -1
  86. package/lib/typescript/module/dial.d.ts.map +0 -1
  87. package/lib/typescript/module/easing.d.ts.map +0 -1
  88. package/lib/typescript/module/icons/benchmark-icon.d.ts.map +0 -1
  89. package/lib/typescript/module/icons/env-icon.d.ts.map +0 -1
  90. package/lib/typescript/module/icons/events-icon.d.ts.map +0 -1
  91. package/lib/typescript/module/icons/highlight-icon.d.ts.map +0 -1
  92. package/lib/typescript/module/icons/icon-data.d.ts.map +0 -1
  93. package/lib/typescript/module/icons/icon-factories.d.ts.map +0 -1
  94. package/lib/typescript/module/icons/icon-primitives.d.ts.map +0 -1
  95. package/lib/typescript/module/icons/icon-primitives.native.d.ts.map +0 -1
  96. package/lib/typescript/module/icons/icon-renderer.d.ts.map +0 -1
  97. package/lib/typescript/module/icons/network-icon.d.ts.map +0 -1
  98. package/lib/typescript/module/icons/query-icon.d.ts.map +0 -1
  99. package/lib/typescript/module/icons/redux-icon.d.ts.map +0 -1
  100. package/lib/typescript/module/icons/renders-icon.d.ts.map +0 -1
  101. package/lib/typescript/module/icons/routes-icon.d.ts.map +0 -1
  102. package/lib/typescript/module/icons/sentry-icon.d.ts.map +0 -1
  103. package/lib/typescript/module/icons/storage-icon.d.ts.map +0 -1
  104. package/lib/typescript/module/icons/wifi-icon.d.ts.map +0 -1
  105. package/lib/typescript/module/index.d.ts.map +0 -1
  106. package/lib/typescript/module/settings.d.ts.map +0 -1
  107. package/lib/typescript/module/types.d.ts.map +0 -1
  108. package/lib/typescript/module/utils.d.ts.map +0 -1
@@ -1,2264 +1 @@
1
- "use strict";
2
-
3
- /**
4
- * Icon Data Definitions - PURE DATA, NO JSX
5
- *
6
- * Each icon is just data. The renderer transforms it to components.
7
- * Change colors here = changes everywhere.
8
- *
9
- * Coordinates are relative to center (0,0 = center of icon)
10
- * Sizes are based on 24x24 base size, scaled automatically.
11
- */
12
-
13
- // ===========================================
14
- // NETWORK ICON (Globe)
15
- // ===========================================
16
-
17
- export const NETWORK_ICON_COLOR = '#00D4FF'; // Cyan
18
-
19
- export const networkIconData = {
20
- color: NETWORK_ICON_COLOR,
21
- bgColor: 'rgba(8, 12, 21, 0.95)',
22
- elements: [
23
- // Main globe with glow
24
- {
25
- type: 'circle',
26
- cx: 0,
27
- cy: 0,
28
- r: 9,
29
- fill: 'bg',
30
- border: true,
31
- borderWidth: 2,
32
- glow: true,
33
- glowRadius: 4
34
- },
35
- // Vertical meridian
36
- {
37
- type: 'circle',
38
- cx: 0,
39
- cy: 0,
40
- r: 9,
41
- border: true,
42
- borderWidth: 2,
43
- scaleX: 0.45,
44
- opacity: 0.6
45
- },
46
- // Horizontal equator
47
- {
48
- type: 'circle',
49
- cx: 0,
50
- cy: 0,
51
- r: 9,
52
- border: true,
53
- borderWidth: 2,
54
- scaleX: 1.33,
55
- scaleY: 0.6,
56
- opacity: 0.6
57
- }]
58
- };
59
-
60
- // ===========================================
61
- // ENV ICON (Laptop)
62
- // ===========================================
63
-
64
- export const ENV_ICON_COLOR = '#4AFF9F'; // Green
65
-
66
- // Keyboard layout
67
- const KEYBOARD_ROW_1 = [1, 3, 5, 7, 9, 11, 13, 15, 17];
68
- const KEYBOARD_ROW_2 = [2, 4, 6, 8, 10, 12, 14, 16];
69
- export const envIconData = {
70
- color: ENV_ICON_COLOR,
71
- bgColor: '#000',
72
- elements: [
73
- // Base glow (behind keyboard)
74
- {
75
- type: 'rect',
76
- x: -11,
77
- y: 3,
78
- width: 22,
79
- height: 10,
80
- borderRadius: 1,
81
- fill: 'color',
82
- opacity: 0.15
83
- },
84
- // Laptop base/keyboard
85
- {
86
- type: 'rect',
87
- x: -10,
88
- y: 4,
89
- width: 20,
90
- height: 8,
91
- borderRadius: 1,
92
- fill: 'color',
93
- opacity: 0.85
94
- },
95
- // Keyboard top row keys
96
- ...KEYBOARD_ROW_1.map(xPos => ({
97
- type: 'rect',
98
- x: -10 + xPos,
99
- y: 4 + 1.5,
100
- width: 1.5,
101
- height: 1.2,
102
- borderRadius: 0.2,
103
- fill: '#000',
104
- opacity: 0.3
105
- })),
106
- // Keyboard bottom row keys
107
- ...KEYBOARD_ROW_2.map(xPos => ({
108
- type: 'rect',
109
- x: -10 + xPos,
110
- y: 4 + 3.2,
111
- width: 1.5,
112
- height: 1.2,
113
- borderRadius: 0.2,
114
- fill: '#000',
115
- opacity: 0.3
116
- })),
117
- // Spacebar
118
- {
119
- type: 'rect',
120
- x: -10 + 5,
121
- y: 4 + 5.5,
122
- width: 10,
123
- height: 1,
124
- borderRadius: 0.2,
125
- fill: '#000',
126
- opacity: 0.25
127
- },
128
- // Laptop screen
129
- {
130
- type: 'rect',
131
- x: -9,
132
- y: -10,
133
- width: 18,
134
- height: 12,
135
- borderRadius: 1,
136
- fill: 'color',
137
- opacity: 0.9
138
- },
139
- // Screen inner (dark area)
140
- {
141
- type: 'rect',
142
- x: -8,
143
- y: -9,
144
- width: 16,
145
- height: 10,
146
- borderRadius: 0.5,
147
- fill: '#000',
148
- opacity: 0.5
149
- },
150
- // Code line 1
151
- {
152
- type: 'rect',
153
- x: -7,
154
- y: -8,
155
- width: 10,
156
- height: 0.5,
157
- fill: 'color',
158
- opacity: 0.6
159
- },
160
- // Code line 2
161
- {
162
- type: 'rect',
163
- x: -7,
164
- y: -6,
165
- width: 7,
166
- height: 0.5,
167
- fill: 'color',
168
- opacity: 0.6
169
- },
170
- // Code line 3
171
- {
172
- type: 'rect',
173
- x: -7,
174
- y: -4,
175
- width: 4,
176
- height: 0.5,
177
- fill: 'color',
178
- opacity: 0.6
179
- },
180
- // Power indicator
181
- {
182
- type: 'rect',
183
- x: -1,
184
- y: 10,
185
- width: 2,
186
- height: 1,
187
- borderRadius: 0.5,
188
- fill: 'color',
189
- opacity: 0.8
190
- },
191
- // Screen dot 1
192
- {
193
- type: 'rect',
194
- x: -9 + 0.3 * 18,
195
- y: -10 + 0.3 * 12,
196
- width: 1,
197
- height: 1,
198
- borderRadius: 0.5,
199
- fill: 'color',
200
- opacity: 0.4
201
- },
202
- // Screen dot 2
203
- {
204
- type: 'rect',
205
- x: -9 + 0.7 * 18,
206
- y: -10 + 0.3 * 12,
207
- width: 1,
208
- height: 1,
209
- borderRadius: 0.5,
210
- fill: 'color',
211
- opacity: 0.4
212
- },
213
- // Screen dot 3
214
- {
215
- type: 'rect',
216
- x: -9 + 0.5 * 18,
217
- y: -10 + 0.7 * 12,
218
- width: 1,
219
- height: 1,
220
- borderRadius: 0.5,
221
- fill: 'color',
222
- opacity: 0.4
223
- }]
224
- };
225
-
226
- // ===========================================
227
- // STORAGE ICON (Database Stack)
228
- // ===========================================
229
-
230
- export const STORAGE_ICON_COLOR = '#FFB800'; // Gold/Amber (database/storage)
231
-
232
- // Cylinder positions (relative to center, 24x24 base)
233
- const CYLINDER_POSITIONS = [{
234
- y: -6,
235
- opacity: 0.9
236
- },
237
- // Top cylinder
238
- {
239
- y: -1.2,
240
- opacity: 0.8
241
- },
242
- // Middle cylinder
243
- {
244
- y: 3.6,
245
- opacity: 0.7
246
- } // Bottom cylinder
247
- ];
248
- export const storageIconData = {
249
- color: STORAGE_ICON_COLOR,
250
- bgColor: '#000',
251
- elements: [
252
- // === CYLINDER 1 (Top) ===
253
- // Shadow/glow
254
- {
255
- type: 'rect',
256
- x: -9,
257
- y: -7,
258
- width: 18,
259
- height: 8,
260
- borderRadius: 4,
261
- fill: 'color',
262
- opacity: 0.1
263
- },
264
- // Main body
265
- {
266
- type: 'rect',
267
- x: -8,
268
- y: -6,
269
- width: 16,
270
- height: 6,
271
- borderRadius: 3,
272
- fill: 'color',
273
- opacity: 0.9
274
- },
275
- // Top highlight
276
- {
277
- type: 'rect',
278
- x: -7,
279
- y: -5.5,
280
- width: 14,
281
- height: 2,
282
- borderRadius: 1,
283
- fill: '#fff',
284
- opacity: 0.15
285
- },
286
- // Edge glow (border)
287
- {
288
- type: 'rect',
289
- x: -8,
290
- y: -6,
291
- width: 16,
292
- height: 6,
293
- borderRadius: 3,
294
- border: true,
295
- borderWidth: 0.5,
296
- opacity: 0.3
297
- },
298
- // === CYLINDER 2 (Middle) ===
299
- // Shadow/glow
300
- {
301
- type: 'rect',
302
- x: -9,
303
- y: -2.2,
304
- width: 18,
305
- height: 8,
306
- borderRadius: 4,
307
- fill: 'color',
308
- opacity: 0.1
309
- },
310
- // Main body
311
- {
312
- type: 'rect',
313
- x: -8,
314
- y: -1.2,
315
- width: 16,
316
- height: 6,
317
- borderRadius: 3,
318
- fill: 'color',
319
- opacity: 0.8
320
- },
321
- // Top highlight
322
- {
323
- type: 'rect',
324
- x: -7,
325
- y: -0.7,
326
- width: 14,
327
- height: 2,
328
- borderRadius: 1,
329
- fill: '#fff',
330
- opacity: 0.15
331
- },
332
- // Edge glow (border)
333
- {
334
- type: 'rect',
335
- x: -8,
336
- y: -1.2,
337
- width: 16,
338
- height: 6,
339
- borderRadius: 3,
340
- border: true,
341
- borderWidth: 0.5,
342
- opacity: 0.3
343
- },
344
- // === CYLINDER 3 (Bottom) ===
345
- // Shadow/glow
346
- {
347
- type: 'rect',
348
- x: -9,
349
- y: 2.6,
350
- width: 18,
351
- height: 8,
352
- borderRadius: 4,
353
- fill: 'color',
354
- opacity: 0.1
355
- },
356
- // Main body
357
- {
358
- type: 'rect',
359
- x: -8,
360
- y: 3.6,
361
- width: 16,
362
- height: 6,
363
- borderRadius: 3,
364
- fill: 'color',
365
- opacity: 0.7
366
- },
367
- // Top highlight
368
- {
369
- type: 'rect',
370
- x: -7,
371
- y: 4.1,
372
- width: 14,
373
- height: 2,
374
- borderRadius: 1,
375
- fill: '#fff',
376
- opacity: 0.15
377
- },
378
- // Edge glow (border)
379
- {
380
- type: 'rect',
381
- x: -8,
382
- y: 3.6,
383
- width: 16,
384
- height: 6,
385
- borderRadius: 3,
386
- border: true,
387
- borderWidth: 0.5,
388
- opacity: 0.3
389
- },
390
- // === CONNECTION LINES ===
391
- // Line 1 (between cylinder 1 and 2)
392
- {
393
- type: 'rect',
394
- x: -0.25,
395
- y: -3.6,
396
- width: 0.5,
397
- height: 6,
398
- fill: 'color',
399
- opacity: 0.3
400
- },
401
- // Line 2 (between cylinder 2 and 3)
402
- {
403
- type: 'rect',
404
- x: -0.25,
405
- y: 1.2,
406
- width: 0.5,
407
- height: 6,
408
- fill: 'color',
409
- opacity: 0.3
410
- },
411
- // === DATA DOTS ===
412
- // Dot 1 (on cylinder 1)
413
- {
414
- type: 'rect',
415
- x: -0.5,
416
- y: -3.5,
417
- width: 1,
418
- height: 1,
419
- borderRadius: 0.5,
420
- fill: 'color',
421
- opacity: 0.6
422
- },
423
- // Dot 2 (on cylinder 2)
424
- {
425
- type: 'rect',
426
- x: -0.5,
427
- y: 1.3,
428
- width: 1,
429
- height: 1,
430
- borderRadius: 0.5,
431
- fill: 'color',
432
- opacity: 0.6
433
- },
434
- // Dot 3 (on cylinder 3)
435
- {
436
- type: 'rect',
437
- x: -0.5,
438
- y: 6.1,
439
- width: 1,
440
- height: 1,
441
- borderRadius: 0.5,
442
- fill: 'color',
443
- opacity: 0.6
444
- }]
445
- };
446
-
447
- // ===========================================
448
- // ROUTES ICON PARTS (for testing/iteration)
449
- // ===========================================
450
- // Breaking down the route icon into smaller testable pieces
451
-
452
- export const ROUTES_ICON_COLOR = '#FF9F1C'; // Orange (matching route-events theme)
453
-
454
- // Part 1: Single Map Pin (teardrop shape)
455
- // Circle for rounded top + triangle for point + inner dot
456
- export const routePinIconData = {
457
- color: ROUTES_ICON_COLOR,
458
- bgColor: '#000',
459
- elements: [
460
- // Rounded top of teardrop
461
- {
462
- type: 'circle',
463
- cx: 0,
464
- cy: -2,
465
- r: 5,
466
- fill: 'color',
467
- opacity: 1
468
- },
469
- // Teardrop point extending down
470
- {
471
- type: 'triangle',
472
- x: 0,
473
- y: 4,
474
- size: 5,
475
- direction: 'down',
476
- fill: 'color',
477
- opacity: 1
478
- },
479
- // Inner hole/dot (dark for contrast)
480
- {
481
- type: 'circle',
482
- cx: 0,
483
- cy: -2,
484
- r: 2,
485
- fill: 'bg',
486
- opacity: 1
487
- }]
488
- };
489
-
490
- // ===========================================
491
- // BUTTON/CURVE TEST VARIATIONS
492
- // ===========================================
493
- // Testing different approaches to create S-curve using border tricks
494
- // Think of it as buttons with selective borders visible
495
-
496
- // ===========================================
497
- // STRETCHED BUTTON SHAPES - Different aspect ratios!
498
- // ===========================================
499
- // Using circles with scaleX/scaleY to create stretched ovals
500
- // And rects with borderRadius for pill/button shapes
501
-
502
- // Test A: Wide oval - bottom portion (wide smile)
503
- export const curveTestAData = {
504
- color: ROUTES_ICON_COLOR,
505
- bgColor: '#000',
506
- elements: [{
507
- type: 'circle',
508
- cx: 0,
509
- cy: 0,
510
- r: 6,
511
- fill: 'transparent',
512
- border: true,
513
- borderWidth: 3,
514
- scaleX: 1.5,
515
- scaleY: 0.8,
516
- opacity: 1
517
- }]
518
- };
519
-
520
- // Test B: Tall oval - stretched vertically
521
- export const curveTestBData = {
522
- color: ROUTES_ICON_COLOR,
523
- bgColor: '#000',
524
- elements: [{
525
- type: 'circle',
526
- cx: 0,
527
- cy: 0,
528
- r: 6,
529
- fill: 'transparent',
530
- border: true,
531
- borderWidth: 3,
532
- scaleX: 0.6,
533
- scaleY: 1.4,
534
- opacity: 1
535
- }]
536
- };
537
-
538
- // Test C: Wide pill shape using rect with full borderRadius (REFERENCE)
539
- export const curveTestCData = {
540
- color: ROUTES_ICON_COLOR,
541
- bgColor: '#000',
542
- elements: [{
543
- type: 'rect',
544
- x: -10,
545
- y: -4,
546
- width: 20,
547
- height: 8,
548
- borderRadius: 4,
549
- fill: 'transparent',
550
- border: true,
551
- borderWidth: 3,
552
- opacity: 1
553
- }]
554
- };
555
-
556
- // Test D: Wide pill - THINNER border (1.5px)
557
- export const curveTestDData = {
558
- color: ROUTES_ICON_COLOR,
559
- bgColor: '#000',
560
- elements: [{
561
- type: 'rect',
562
- x: -10,
563
- y: -4,
564
- width: 20,
565
- height: 8,
566
- borderRadius: 4,
567
- fill: 'transparent',
568
- border: true,
569
- borderWidth: 1.5,
570
- opacity: 1
571
- }]
572
- };
573
-
574
- // ===========================================
575
- // HALF-PILL SHAPES - Position pill so half is off-screen!
576
- // ===========================================
577
- // The key insight: position a wide pill so its LEFT or RIGHT half
578
- // extends beyond the icon bounds, showing only the curved end!
579
-
580
- // Test E: LEFT curved end only (pill extends off RIGHT side)
581
- // Shows just the left rounded cap
582
- export const curveTestEData = {
583
- color: ROUTES_ICON_COLOR,
584
- bgColor: '#000',
585
- elements: [
586
- // Pill positioned so right half is off-screen, only left curve shows
587
- {
588
- type: 'rect',
589
- x: -10,
590
- y: -4,
591
- width: 20,
592
- height: 8,
593
- borderRadius: 4,
594
- fill: 'transparent',
595
- border: true,
596
- borderWidth: 2,
597
- opacity: 1
598
- }]
599
- };
600
-
601
- // Test F: RIGHT curved end only (pill extends off LEFT side)
602
- // Shows just the right rounded cap
603
- export const curveTestFData = {
604
- color: ROUTES_ICON_COLOR,
605
- bgColor: '#000',
606
- elements: [
607
- // Pill positioned so left half is off-screen, only right curve shows
608
- {
609
- type: 'rect',
610
- x: -10,
611
- y: -4,
612
- width: 20,
613
- height: 8,
614
- borderRadius: 4,
615
- fill: 'transparent',
616
- border: true,
617
- borderWidth: 2,
618
- opacity: 1
619
- }]
620
- };
621
-
622
- // Test G: LEFT curve - thinner (1.5px border)
623
- export const curveTestGData = {
624
- color: ROUTES_ICON_COLOR,
625
- bgColor: '#000',
626
- elements: [{
627
- type: 'rect',
628
- x: -6,
629
- y: -3,
630
- width: 16,
631
- height: 6,
632
- borderRadius: 3,
633
- fill: 'transparent',
634
- border: true,
635
- borderWidth: 1.5,
636
- opacity: 1
637
- }]
638
- };
639
-
640
- // Test H: RIGHT curve - thinner (1.5px border)
641
- // Positioned far left so only right cap shows
642
- export const curveTestHData = {
643
- color: ROUTES_ICON_COLOR,
644
- bgColor: '#000',
645
- elements: [{
646
- type: 'rect',
647
- x: -22,
648
- y: -3,
649
- width: 16,
650
- height: 6,
651
- borderRadius: 3,
652
- fill: 'transparent',
653
- border: true,
654
- borderWidth: 1.5,
655
- opacity: 1
656
- }]
657
- };
658
-
659
- // Test I: Two half-curves making an S - LEFT cap top, RIGHT cap bottom
660
- export const curveTestIData = {
661
- color: ROUTES_ICON_COLOR,
662
- bgColor: '#000',
663
- elements: [
664
- // Top: show LEFT curve (pill extends right, off-screen)
665
- {
666
- type: 'rect',
667
- x: -8,
668
- y: -7,
669
- width: 20,
670
- height: 6,
671
- borderRadius: 3,
672
- fill: 'transparent',
673
- border: true,
674
- borderWidth: 1.5,
675
- opacity: 1
676
- },
677
- // Bottom: show RIGHT curve (pill extends left, off-screen)
678
- {
679
- type: 'rect',
680
- x: -12,
681
- y: 1,
682
- width: 20,
683
- height: 6,
684
- borderRadius: 3,
685
- fill: 'transparent',
686
- border: true,
687
- borderWidth: 1.5,
688
- opacity: 1
689
- }]
690
- };
691
-
692
- // Test J: S-curve - skinnier pills (4px height)
693
- export const curveTestJData = {
694
- color: ROUTES_ICON_COLOR,
695
- bgColor: '#000',
696
- elements: [
697
- // Top LEFT curve
698
- {
699
- type: 'rect',
700
- x: -8,
701
- y: -6,
702
- width: 20,
703
- height: 5,
704
- borderRadius: 2.5,
705
- fill: 'transparent',
706
- border: true,
707
- borderWidth: 1.5,
708
- opacity: 1
709
- },
710
- // Bottom RIGHT curve
711
- {
712
- type: 'rect',
713
- x: -12,
714
- y: 1,
715
- width: 20,
716
- height: 5,
717
- borderRadius: 2.5,
718
- fill: 'transparent',
719
- border: true,
720
- borderWidth: 1.5,
721
- opacity: 1
722
- }]
723
- };
724
-
725
- // Test K: S-curve - even skinnier (3px height), 1px border
726
- export const curveTestKData = {
727
- color: ROUTES_ICON_COLOR,
728
- bgColor: '#000',
729
- elements: [
730
- // Top LEFT curve - ultra thin
731
- {
732
- type: 'rect',
733
- x: -8,
734
- y: -5,
735
- width: 20,
736
- height: 4,
737
- borderRadius: 2,
738
- fill: 'transparent',
739
- border: true,
740
- borderWidth: 1,
741
- opacity: 1
742
- },
743
- // Bottom RIGHT curve - ultra thin
744
- {
745
- type: 'rect',
746
- x: -12,
747
- y: 1,
748
- width: 20,
749
- height: 4,
750
- borderRadius: 2,
751
- fill: 'transparent',
752
- border: true,
753
- borderWidth: 1,
754
- opacity: 1
755
- }]
756
- };
757
-
758
- // Test L: S-curve - wider gap between curves
759
- export const curveTestLData = {
760
- color: ROUTES_ICON_COLOR,
761
- bgColor: '#000',
762
- elements: [
763
- // Top LEFT curve - higher up
764
- {
765
- type: 'rect',
766
- x: -6,
767
- y: -8,
768
- width: 20,
769
- height: 5,
770
- borderRadius: 2.5,
771
- fill: 'transparent',
772
- border: true,
773
- borderWidth: 1.5,
774
- opacity: 1
775
- },
776
- // Bottom RIGHT curve - lower down
777
- {
778
- type: 'rect',
779
- x: -14,
780
- y: 3,
781
- width: 20,
782
- height: 5,
783
- borderRadius: 2.5,
784
- fill: 'transparent',
785
- border: true,
786
- borderWidth: 1.5,
787
- opacity: 1
788
- }]
789
- };
790
-
791
- // Test M: S-curve - tighter together
792
- export const curveTestMData = {
793
- color: ROUTES_ICON_COLOR,
794
- bgColor: '#000',
795
- elements: [
796
- // Top LEFT curve
797
- {
798
- type: 'rect',
799
- x: -7,
800
- y: -5,
801
- width: 18,
802
- height: 5,
803
- borderRadius: 2.5,
804
- fill: 'transparent',
805
- border: true,
806
- borderWidth: 1.5,
807
- opacity: 1
808
- },
809
- // Bottom RIGHT curve - closer
810
- {
811
- type: 'rect',
812
- x: -11,
813
- y: 0,
814
- width: 18,
815
- height: 5,
816
- borderRadius: 2.5,
817
- fill: 'transparent',
818
- border: true,
819
- borderWidth: 1.5,
820
- opacity: 1
821
- }]
822
- };
823
-
824
- // Test N: S-curve with 2px border
825
- export const curveTestNData = {
826
- color: ROUTES_ICON_COLOR,
827
- bgColor: '#000',
828
- elements: [{
829
- type: 'rect',
830
- x: -8,
831
- y: -6,
832
- width: 20,
833
- height: 5,
834
- borderRadius: 2.5,
835
- fill: 'transparent',
836
- border: true,
837
- borderWidth: 2,
838
- opacity: 1
839
- }, {
840
- type: 'rect',
841
- x: -12,
842
- y: 1,
843
- width: 20,
844
- height: 5,
845
- borderRadius: 2.5,
846
- fill: 'transparent',
847
- border: true,
848
- borderWidth: 2,
849
- opacity: 1
850
- }]
851
- };
852
-
853
- // Test O: S-curve with 1px border (thinnest)
854
- export const curveTestOData = {
855
- color: ROUTES_ICON_COLOR,
856
- bgColor: '#000',
857
- elements: [{
858
- type: 'rect',
859
- x: -8,
860
- y: -6,
861
- width: 20,
862
- height: 5,
863
- borderRadius: 2.5,
864
- fill: 'transparent',
865
- border: true,
866
- borderWidth: 1,
867
- opacity: 1
868
- }, {
869
- type: 'rect',
870
- x: -12,
871
- y: 1,
872
- width: 20,
873
- height: 5,
874
- borderRadius: 2.5,
875
- fill: 'transparent',
876
- border: true,
877
- borderWidth: 1,
878
- opacity: 1
879
- }]
880
- };
881
-
882
- // Test P: S-curve with taller pills (more curve visible)
883
- export const curveTestPData = {
884
- color: ROUTES_ICON_COLOR,
885
- bgColor: '#000',
886
- elements: [{
887
- type: 'rect',
888
- x: -8,
889
- y: -7,
890
- width: 20,
891
- height: 7,
892
- borderRadius: 3.5,
893
- fill: 'transparent',
894
- border: true,
895
- borderWidth: 1.5,
896
- opacity: 1
897
- }, {
898
- type: 'rect',
899
- x: -12,
900
- y: 0,
901
- width: 20,
902
- height: 7,
903
- borderRadius: 3.5,
904
- fill: 'transparent',
905
- border: true,
906
- borderWidth: 1.5,
907
- opacity: 1
908
- }]
909
- };
910
-
911
- // Original Part 2: S-Curve Path (keeping for reference)
912
- export const routePathIconData = {
913
- color: ROUTES_ICON_COLOR,
914
- bgColor: '#000',
915
- elements: [{
916
- type: 'smootharc',
917
- cx: -3,
918
- cy: -2,
919
- r: 5,
920
- stroke: 'color',
921
- strokeWidth: 3,
922
- opacity: 1,
923
- portion: 'bottom'
924
- }, {
925
- type: 'smootharc',
926
- cx: 3,
927
- cy: 2,
928
- r: 5,
929
- stroke: 'color',
930
- strokeWidth: 3,
931
- opacity: 1,
932
- portion: 'top'
933
- }]
934
- };
935
-
936
- // Part 3: Inner Dot only (for testing)
937
- export const routeDotIconData = {
938
- color: ROUTES_ICON_COLOR,
939
- bgColor: '#000',
940
- elements: [
941
- // Outer ring for reference
942
- {
943
- type: 'circle',
944
- cx: 0,
945
- cy: 0,
946
- r: 8,
947
- fill: 'color',
948
- opacity: 0.3
949
- },
950
- // Inner dot
951
- {
952
- type: 'circle',
953
- cx: 0,
954
- cy: 0,
955
- r: 3,
956
- fill: 'bg',
957
- opacity: 1
958
- }]
959
- };
960
-
961
- // Part 4: Two Pins without path (positioning test)
962
- export const routeTwoPinsIconData = {
963
- color: ROUTES_ICON_COLOR,
964
- bgColor: '#000',
965
- elements: [
966
- // === BOTTOM-LEFT PIN ===
967
- {
968
- type: 'circle',
969
- cx: -6,
970
- cy: 4,
971
- r: 3.5,
972
- fill: 'color',
973
- opacity: 1
974
- }, {
975
- type: 'triangle',
976
- x: -6,
977
- y: 8.5,
978
- size: 3.5,
979
- direction: 'down',
980
- fill: 'color',
981
- opacity: 1
982
- }, {
983
- type: 'circle',
984
- cx: -6,
985
- cy: 4,
986
- r: 1.4,
987
- fill: 'bg',
988
- opacity: 1
989
- },
990
- // === TOP-RIGHT PIN ===
991
- {
992
- type: 'circle',
993
- cx: 6,
994
- cy: -5,
995
- r: 3.5,
996
- fill: 'color',
997
- opacity: 1
998
- }, {
999
- type: 'triangle',
1000
- x: 6,
1001
- y: -0.5,
1002
- size: 3.5,
1003
- direction: 'down',
1004
- fill: 'color',
1005
- opacity: 1
1006
- }, {
1007
- type: 'circle',
1008
- cx: 6,
1009
- cy: -5,
1010
- r: 1.4,
1011
- fill: 'bg',
1012
- opacity: 1
1013
- }]
1014
- };
1015
-
1016
- // ===========================================
1017
- // ROUTES ICON (Custom satellite/network style)
1018
- // ===========================================
1019
- // Custom designed icon with satellite/orbit motif
1020
- // Uses orange (#FF9F1C) as primary color to match route-events theme
1021
-
1022
- export const routesIconData = {
1023
- color: '#FF9F1C',
1024
- // Orange - matching route-events theme
1025
- bgColor: '#0a0a0f',
1026
- elements: [
1027
- // Main orbital circle (teal becomes orange)
1028
- {
1029
- type: 'circle',
1030
- cx: 2.846049894151541,
1031
- cy: 1.2649110640673518,
1032
- r: 4.110960958218893,
1033
- fill: '#FF9F1C',
1034
- // Was #00e7eb, now orange
1035
- scaleY: 0.94
1036
- },
1037
- // Satellite node 1
1038
- {
1039
- type: 'circle',
1040
- cx: 6.00832755431992,
1041
- cy: 6.324555320336758,
1042
- r: 4,
1043
- fill: 'color'
1044
- },
1045
- // Satellite node 2
1046
- {
1047
- type: 'circle',
1048
- cx: 6.324555320336758,
1049
- cy: -6.324555320336758,
1050
- r: 3.794733192202055,
1051
- fill: 'color',
1052
- scaleY: 0.97
1053
- },
1054
- // Inner dot on satellite 2 (uses bg color)
1055
- {
1056
- type: 'circle',
1057
- cx: 6.324555320336758,
1058
- cy: -6.00832755431992,
1059
- r: 1.5811388300841895,
1060
- fill: 'bg'
1061
- },
1062
- // Satellite node 3
1063
- {
1064
- type: 'circle',
1065
- cx: -6.324555320336758,
1066
- cy: 3.478505426185217,
1067
- r: 3.794733192202055,
1068
- fill: 'color',
1069
- scaleY: 0.97
1070
- },
1071
- // Inner dot on satellite 3 (uses bg color)
1072
- {
1073
- type: 'circle',
1074
- cx: -6.324555320336758,
1075
- cy: 3.478505426185217,
1076
- r: 1.5811388300841895,
1077
- fill: 'bg'
1078
- },
1079
- // Connection line 1
1080
- {
1081
- type: 'line',
1082
- x1: -8.854377448471462,
1083
- y1: 4.743416490252569,
1084
- x2: -6.00832755431992,
1085
- y2: 9.803060746521975,
1086
- stroke: 'color',
1087
- strokeWidth: 1.5
1088
- },
1089
- // Connection line 2
1090
- {
1091
- type: 'line',
1092
- x1: -3.162277660168379,
1093
- y1: 3.162277660168379,
1094
- x2: -6.640783086353596,
1095
- y2: 9.803060746521975,
1096
- stroke: 'color',
1097
- strokeWidth: 1.8
1098
- },
1099
- // Junction rect 1
1100
- {
1101
- type: 'rect',
1102
- x: -7.273238618387272,
1103
- y: 6.324555320336758,
1104
- width: 1.8973665961010275,
1105
- height: 2.2135943621178655,
1106
- fill: 'color'
1107
- },
1108
- // Central line (uses bg color)
1109
- {
1110
- type: 'line',
1111
- x1: 1.2649110640673518,
1112
- y1: 1.2649110640673518,
1113
- x2: 9.1706052144883,
1114
- y2: 1.2649110640673518,
1115
- stroke: 'bg',
1116
- strokeWidth: 2.4
1117
- },
1118
- // Connection line 3
1119
- {
1120
- type: 'line',
1121
- x1: 9.486832980505138,
1122
- y1: -6.640783086353596,
1123
- x2: 6.00832755431992,
1124
- y2: 0,
1125
- stroke: 'color',
1126
- strokeWidth: 1.8
1127
- },
1128
- // Connection line 4
1129
- {
1130
- type: 'line',
1131
- x1: 3.478505426185217,
1132
- y1: -5.375872022286244,
1133
- x2: 6.640783086353596,
1134
- y2: 0,
1135
- stroke: 'color',
1136
- strokeWidth: 1.5
1137
- },
1138
- // Junction rect 2
1139
- {
1140
- type: 'rect',
1141
- x: 5.692099788303082,
1142
- y: -3.478505426185217,
1143
- width: 1.8973665961010275,
1144
- height: 2.2135943621178655,
1145
- fill: 'color'
1146
- },
1147
- // Base rect (uses bg color)
1148
- {
1149
- type: 'rect',
1150
- x: 2.846049894151541,
1151
- y: 10,
1152
- width: 6,
1153
- height: 4,
1154
- fill: 'bg'
1155
- },
1156
- // Horizontal divider line (uses bg color)
1157
- {
1158
- type: 'line',
1159
- x1: -0.31622776601683794,
1160
- y1: 6.324555320336758,
1161
- x2: 7.58946638440411,
1162
- y2: 6.324555320336758,
1163
- stroke: 'bg',
1164
- strokeWidth: 2.3
1165
- },
1166
- // Bottom bar
1167
- {
1168
- type: 'rect',
1169
- x: -2.5298221281347035,
1170
- y: 7.5,
1171
- width: 7.273238618387272,
1172
- height: 2.5,
1173
- fill: 'color'
1174
- }]
1175
- };
1176
-
1177
- // ===========================================
1178
- // QUERY ICON (Query States Network)
1179
- // ===========================================
1180
-
1181
- export const QUERY_ICON_COLOR = '#FF3366'; // Red/Pink (React Query brand)
1182
-
1183
- // Query state colors - MUST match packages/react-query/src/react-query/components/QuerySelector.tsx
1184
- const QUERY_STATES = {
1185
- fresh: '#10B981',
1186
- // Green - data is current
1187
- fetching: '#3B82F6',
1188
- // Blue - loading
1189
- stale: '#F59E0B',
1190
- // Yellow/Amber - needs refresh
1191
- paused: '#8B5CF6',
1192
- // Purple - paused
1193
- inactive: '#6B7280' // Gray - no observers
1194
- };
1195
- export const queryIconData = {
1196
- color: QUERY_ICON_COLOR,
1197
- bgColor: '#000',
1198
- elements: [
1199
- // === CONNECTION LINES (using line elements - much cleaner!) ===
1200
- // Center to Fresh (top) - green
1201
- {
1202
- type: 'line',
1203
- x1: 0,
1204
- y1: 0,
1205
- x2: 0,
1206
- y2: -8,
1207
- stroke: QUERY_STATES.fresh,
1208
- strokeWidth: 1.2,
1209
- opacity: 0.5
1210
- },
1211
- // Center to Fetching (top-right) - cyan
1212
- {
1213
- type: 'line',
1214
- x1: 0,
1215
- y1: 0,
1216
- x2: 7.6,
1217
- y2: -2.5,
1218
- stroke: QUERY_STATES.fetching,
1219
- strokeWidth: 1.2,
1220
- opacity: 0.5
1221
- },
1222
- // Center to Stale (bottom-right) - yellow
1223
- {
1224
- type: 'line',
1225
- x1: 0,
1226
- y1: 0,
1227
- x2: 4.7,
1228
- y2: 6.5,
1229
- stroke: QUERY_STATES.stale,
1230
- strokeWidth: 1.2,
1231
- opacity: 0.5
1232
- },
1233
- // Center to Paused (bottom-left) - purple
1234
- {
1235
- type: 'line',
1236
- x1: 0,
1237
- y1: 0,
1238
- x2: -4.7,
1239
- y2: 6.5,
1240
- stroke: QUERY_STATES.paused,
1241
- strokeWidth: 1.2,
1242
- opacity: 0.5
1243
- },
1244
- // Center to Inactive (top-left) - gray
1245
- {
1246
- type: 'line',
1247
- x1: 0,
1248
- y1: 0,
1249
- x2: -7.6,
1250
- y2: -2.5,
1251
- stroke: QUERY_STATES.inactive,
1252
- strokeWidth: 1.2,
1253
- opacity: 0.5
1254
- },
1255
- // === STATE NODES (5 query states in pentagon) ===
1256
- // FRESH (top) - Green
1257
- {
1258
- type: 'circle',
1259
- cx: 0,
1260
- cy: -8,
1261
- r: 2.2,
1262
- fill: QUERY_STATES.fresh,
1263
- opacity: 0.2
1264
- }, {
1265
- type: 'circle',
1266
- cx: 0,
1267
- cy: -8,
1268
- r: 1.6,
1269
- fill: QUERY_STATES.fresh,
1270
- opacity: 0.9
1271
- },
1272
- // FETCHING (top-right) - Cyan
1273
- {
1274
- type: 'circle',
1275
- cx: 7.6,
1276
- cy: -2.5,
1277
- r: 2.2,
1278
- fill: QUERY_STATES.fetching,
1279
- opacity: 0.2
1280
- }, {
1281
- type: 'circle',
1282
- cx: 7.6,
1283
- cy: -2.5,
1284
- r: 1.6,
1285
- fill: QUERY_STATES.fetching,
1286
- opacity: 0.9
1287
- },
1288
- // STALE (bottom-right) - Yellow
1289
- {
1290
- type: 'circle',
1291
- cx: 4.7,
1292
- cy: 6.5,
1293
- r: 2.2,
1294
- fill: QUERY_STATES.stale,
1295
- opacity: 0.2
1296
- }, {
1297
- type: 'circle',
1298
- cx: 4.7,
1299
- cy: 6.5,
1300
- r: 1.6,
1301
- fill: QUERY_STATES.stale,
1302
- opacity: 0.9
1303
- },
1304
- // PAUSED (bottom-left) - Purple
1305
- {
1306
- type: 'circle',
1307
- cx: -4.7,
1308
- cy: 6.5,
1309
- r: 2.2,
1310
- fill: QUERY_STATES.paused,
1311
- opacity: 0.2
1312
- }, {
1313
- type: 'circle',
1314
- cx: -4.7,
1315
- cy: 6.5,
1316
- r: 1.6,
1317
- fill: QUERY_STATES.paused,
1318
- opacity: 0.9
1319
- },
1320
- // INACTIVE (top-left) - Gray
1321
- {
1322
- type: 'circle',
1323
- cx: -7.6,
1324
- cy: -2.5,
1325
- r: 2.2,
1326
- fill: QUERY_STATES.inactive,
1327
- opacity: 0.2
1328
- }, {
1329
- type: 'circle',
1330
- cx: -7.6,
1331
- cy: -2.5,
1332
- r: 1.6,
1333
- fill: QUERY_STATES.inactive,
1334
- opacity: 0.9
1335
- },
1336
- // === CENTER NODE (Your Query - cycles through states) ===
1337
- // Outer glow ring
1338
- {
1339
- type: 'circle',
1340
- cx: 0,
1341
- cy: 0,
1342
- r: 4.5,
1343
- fill: 'color',
1344
- opacity: 0.1
1345
- },
1346
- // Main center (React Query pink)
1347
- {
1348
- type: 'circle',
1349
- cx: 0,
1350
- cy: 0,
1351
- r: 3,
1352
- fill: 'color',
1353
- opacity: 0.95
1354
- },
1355
- // Inner highlight
1356
- {
1357
- type: 'circle',
1358
- cx: 0,
1359
- cy: 0,
1360
- r: 1.3,
1361
- fill: '#fff',
1362
- opacity: 0.35
1363
- }]
1364
- };
1365
-
1366
- // ===========================================
1367
- // HIGHLIGHTER ICON (Custom highlight marker style)
1368
- // ===========================================
1369
- // Custom designed highlighter icon for render tracking
1370
- // Uses emerald green (#10B981) to match highlight-updates theme
1371
-
1372
- export const HIGHLIGHTER_ICON_COLOR = '#10B981'; // Emerald green (same as highlight-updates)
1373
- // Legacy alias for backward compatibility
1374
- export const RENDERS_ICON_COLOR = HIGHLIGHTER_ICON_COLOR;
1375
- export const highlighterIconData = {
1376
- color: HIGHLIGHTER_ICON_COLOR,
1377
- bgColor: '#0a0a0f',
1378
- elements: [
1379
- // Decorative diamond shape
1380
- {
1381
- type: 'rect',
1382
- x: -9.1706052144883,
1383
- y: 5.692099788303082,
1384
- width: 3.478505426185217,
1385
- height: 3.478505426185217,
1386
- fill: 'color',
1387
- rotation: 45
1388
- },
1389
- // Base block (uses bg color)
1390
- {
1391
- type: 'rect',
1392
- x: -10.119288512538814,
1393
- y: 8.538149682454623,
1394
- width: 6,
1395
- height: 4,
1396
- fill: 'bg'
1397
- },
1398
- // Horizontal accent line
1399
- {
1400
- type: 'line',
1401
- x1: -10.119288512538814,
1402
- y1: 7.905694150420948,
1403
- x2: -6.640783086353596,
1404
- y2: 7.905694150420948,
1405
- stroke: 'color',
1406
- strokeWidth: 1.5
1407
- },
1408
- // Diagonal stroke 1
1409
- {
1410
- type: 'line',
1411
- x1: -6.957010852370434,
1412
- y1: 5.059644256269407,
1413
- x2: -2.846049894151541,
1414
- y2: 5.059644256269407,
1415
- stroke: 'color',
1416
- strokeWidth: 1.5,
1417
- rotation: 44
1418
- },
1419
- // Cross stroke 1
1420
- {
1421
- type: 'line',
1422
- x1: -5.91,
1423
- y1: -4.11,
1424
- x2: 7.27,
1425
- y2: -4.33,
1426
- stroke: 'color',
1427
- strokeWidth: 2.1,
1428
- rotation: 145
1429
- },
1430
- // Cross stroke 2
1431
- {
1432
- type: 'line',
1433
- x1: -1.56,
1434
- y1: 1.05,
1435
- x2: 10.435516278555651,
1436
- y2: -2.846049894151541,
1437
- stroke: 'color',
1438
- strokeWidth: 2.1,
1439
- rotation: 145
1440
- },
1441
- // Diagonal stroke 2
1442
- {
1443
- type: 'line',
1444
- x1: 4.110960958218893,
1445
- y1: -6.640783086353596,
1446
- x2: 9.486832980505138,
1447
- y2: -6.640783086353596,
1448
- stroke: 'color',
1449
- strokeWidth: 2.2,
1450
- rotation: 44
1451
- },
1452
- // Main highlight stroke
1453
- {
1454
- type: 'line',
1455
- x1: -4.743416490252569,
1456
- y1: -1.5811388300841895,
1457
- x2: 1.5811388300841895,
1458
- y2: 4.743416490252569,
1459
- stroke: 'color',
1460
- strokeWidth: 2.9
1461
- },
1462
- // Accent stroke 1
1463
- {
1464
- type: 'line',
1465
- x1: -6.957010852370434,
1466
- y1: 1.2649110640673518,
1467
- x2: -2.2135943621178655,
1468
- y2: 2.2135943621178655,
1469
- stroke: 'color',
1470
- strokeWidth: 1.5,
1471
- rotation: 77
1472
- },
1473
- // Accent stroke 2
1474
- {
1475
- type: 'line',
1476
- x1: -1.2649110640673518,
1477
- y1: 0.9486832980505138,
1478
- x2: -2.5298221281347035,
1479
- y2: 7.905694150420948,
1480
- stroke: 'color',
1481
- strokeWidth: 1.5,
1482
- rotation: 77
1483
- },
1484
- // Central highlighter body
1485
- {
1486
- type: 'rect',
1487
- x: -4.427188724235731,
1488
- y: 0.9486832980505138,
1489
- width: 3.794733192202055,
1490
- height: 4.110960958218893,
1491
- fill: 'color'
1492
- },
1493
- // Diagonal accent 1
1494
- {
1495
- type: 'line',
1496
- x1: -7.58946638440411,
1497
- y1: 1.8973665961010275,
1498
- x2: -0.9486832980505138,
1499
- y2: 1.8973665961010275,
1500
- stroke: 'color',
1501
- strokeWidth: 1.5,
1502
- rotation: -48
1503
- },
1504
- // Diagonal accent 2
1505
- {
1506
- type: 'line',
1507
- x1: -5.375872022286244,
1508
- y1: 4.110960958218893,
1509
- x2: 1.2649110640673518,
1510
- y2: 4.110960958218893,
1511
- stroke: 'color',
1512
- strokeWidth: 1.5,
1513
- rotation: -48
1514
- }]
1515
- };
1516
-
1517
- // Legacy alias for backward compatibility
1518
- export const rendersIconData = highlighterIconData;
1519
-
1520
- // ===========================================
1521
- // BENCHMARK ICON (Stopwatch)
1522
- // ===========================================
1523
-
1524
- export const BENCHMARK_ICON_COLOR = '#F59E0B'; // Amber/Orange
1525
-
1526
- export const benchmarkIconData = {
1527
- color: BENCHMARK_ICON_COLOR,
1528
- bgColor: '#000',
1529
- elements: [
1530
- // === STOPWATCH BODY ===
1531
- // Outer circle (stopwatch face)
1532
- {
1533
- type: 'circle',
1534
- cx: 0,
1535
- cy: 1,
1536
- r: 7,
1537
- border: true,
1538
- borderWidth: 1.5,
1539
- opacity: 0.9
1540
- },
1541
- // Inner glow
1542
- {
1543
- type: 'circle',
1544
- cx: 0,
1545
- cy: 1,
1546
- r: 5,
1547
- fill: 'color',
1548
- opacity: 0.15
1549
- },
1550
- // === BUTTON (top) ===
1551
- {
1552
- type: 'rect',
1553
- x: -2,
1554
- y: -10,
1555
- width: 4,
1556
- height: 3,
1557
- borderRadius: 1,
1558
- fill: 'color',
1559
- opacity: 0.9
1560
- },
1561
- // Crown/stem connecting button to clock
1562
- {
1563
- type: 'rect',
1564
- x: -1,
1565
- y: -7.5,
1566
- width: 2,
1567
- height: 2,
1568
- fill: 'color',
1569
- opacity: 0.9
1570
- },
1571
- // === STOPWATCH HAND ===
1572
- // Hand pointing to ~10 o'clock position
1573
- {
1574
- type: 'rect',
1575
- x: -0.75,
1576
- y: -4,
1577
- width: 1.5,
1578
- height: 5,
1579
- borderRadius: 1,
1580
- fill: 'color',
1581
- opacity: 0.9,
1582
- rotation: -45,
1583
- rotateFromCenter: true
1584
- },
1585
- // === CENTER DOT ===
1586
- {
1587
- type: 'circle',
1588
- cx: 0,
1589
- cy: 1,
1590
- r: 1,
1591
- fill: 'color',
1592
- opacity: 0.9
1593
- },
1594
- // === TICK MARKS (hour indicators) ===
1595
- // 12 o'clock
1596
- {
1597
- type: 'rect',
1598
- x: -0.5,
1599
- y: -5,
1600
- width: 1,
1601
- height: 2,
1602
- fill: 'color',
1603
- opacity: 0.5
1604
- },
1605
- // 3 o'clock
1606
- {
1607
- type: 'rect',
1608
- x: 4,
1609
- y: 0.5,
1610
- width: 2,
1611
- height: 1,
1612
- fill: 'color',
1613
- opacity: 0.5
1614
- },
1615
- // 6 o'clock
1616
- {
1617
- type: 'rect',
1618
- x: -0.5,
1619
- y: 5,
1620
- width: 1,
1621
- height: 2,
1622
- fill: 'color',
1623
- opacity: 0.5
1624
- },
1625
- // 9 o'clock
1626
- {
1627
- type: 'rect',
1628
- x: -6,
1629
- y: 0.5,
1630
- width: 2,
1631
- height: 1,
1632
- fill: 'color',
1633
- opacity: 0.5
1634
- }]
1635
- };
1636
-
1637
- // ===========================================
1638
- // SENTRY ICON (Bug)
1639
- // ===========================================
1640
-
1641
- export const SENTRY_ICON_COLOR = '#FF3366'; // Red/Pink (Sentry brand)
1642
-
1643
- export const sentryIconData = {
1644
- color: SENTRY_ICON_COLOR,
1645
- bgColor: '#000',
1646
- elements: [
1647
- // === BUG GLOW (behind) ===
1648
- {
1649
- type: 'circle',
1650
- cx: 0,
1651
- cy: 1,
1652
- r: 8,
1653
- fill: 'color',
1654
- opacity: 0.15
1655
- },
1656
- // === BUG BODY ===
1657
- // Main oval body
1658
- {
1659
- type: 'rect',
1660
- x: -6,
1661
- y: -4,
1662
- width: 12,
1663
- height: 14,
1664
- borderRadius: 6,
1665
- fill: 'color',
1666
- opacity: 0.9
1667
- },
1668
- // === BUG HEAD ===
1669
- {
1670
- type: 'rect',
1671
- x: -4,
1672
- y: -9,
1673
- width: 8,
1674
- height: 6,
1675
- borderRadius: 4,
1676
- fill: 'color',
1677
- opacity: 0.95
1678
- },
1679
- // === ANTENNAE ===
1680
- // Left antenna
1681
- {
1682
- type: 'rect',
1683
- x: -3,
1684
- y: -12,
1685
- width: 0.8,
1686
- height: 4,
1687
- fill: 'color',
1688
- opacity: 0.7,
1689
- rotation: -15
1690
- }, {
1691
- type: 'circle',
1692
- cx: -4,
1693
- cy: -12,
1694
- r: 1.2,
1695
- fill: 'color',
1696
- opacity: 0.6
1697
- },
1698
- // Right antenna
1699
- {
1700
- type: 'rect',
1701
- x: 2.2,
1702
- y: -12,
1703
- width: 0.8,
1704
- height: 4,
1705
- fill: 'color',
1706
- opacity: 0.7,
1707
- rotation: 15
1708
- }, {
1709
- type: 'circle',
1710
- cx: 4,
1711
- cy: -12,
1712
- r: 1.2,
1713
- fill: 'color',
1714
- opacity: 0.6
1715
- },
1716
- // === LEGS (3 per side) ===
1717
- // Left legs
1718
- {
1719
- type: 'rect',
1720
- x: -10,
1721
- y: -2,
1722
- width: 4,
1723
- height: 1,
1724
- fill: 'color',
1725
- opacity: 0.8,
1726
- rotation: -20
1727
- }, {
1728
- type: 'rect',
1729
- x: -10,
1730
- y: 1,
1731
- width: 4,
1732
- height: 1,
1733
- fill: 'color',
1734
- opacity: 0.8,
1735
- rotation: -10
1736
- }, {
1737
- type: 'rect',
1738
- x: -10,
1739
- y: 4,
1740
- width: 4,
1741
- height: 1,
1742
- fill: 'color',
1743
- opacity: 0.8,
1744
- rotation: 10
1745
- },
1746
- // Right legs
1747
- {
1748
- type: 'rect',
1749
- x: 6,
1750
- y: -2,
1751
- width: 4,
1752
- height: 1,
1753
- fill: 'color',
1754
- opacity: 0.8,
1755
- rotation: 20
1756
- }, {
1757
- type: 'rect',
1758
- x: 6,
1759
- y: 1,
1760
- width: 4,
1761
- height: 1,
1762
- fill: 'color',
1763
- opacity: 0.8,
1764
- rotation: 10
1765
- }, {
1766
- type: 'rect',
1767
- x: 6,
1768
- y: 4,
1769
- width: 4,
1770
- height: 1,
1771
- fill: 'color',
1772
- opacity: 0.8,
1773
- rotation: -10
1774
- },
1775
- // === CENTER HIGHLIGHT ===
1776
- {
1777
- type: 'circle',
1778
- cx: 0,
1779
- cy: 1,
1780
- r: 1,
1781
- fill: '#fff',
1782
- opacity: 0.3
1783
- }]
1784
- };
1785
-
1786
- // ===========================================
1787
- // WIFI ICON (Signal Arcs)
1788
- // ===========================================
1789
-
1790
- export const WIFI_ICON_COLOR = '#00D4FF'; // Cyan
1791
-
1792
- /**
1793
- * WiFi Icon using the "clever trick" - smooth arcs via border trick
1794
- *
1795
- * Uses IconSmoothArc which creates perfect anti-aliased curves by using
1796
- * bordered circles with partial borders hidden. This is the same technique
1797
- * used in the shared-ui WifiIcon for smooth, professional-looking arcs.
1798
- *
1799
- * The arcs use portion: 'top' centered at the signal dot position,
1800
- * which shows the top portion of each circle - creating WiFi-style
1801
- * arcs curving upward from the signal source.
1802
- */
1803
- export const wifiIconData = {
1804
- color: WIFI_ICON_COLOR,
1805
- bgColor: '#000',
1806
- elements: [
1807
- // === CENTER DOT (signal source) ===
1808
- {
1809
- type: 'circle',
1810
- cx: 0,
1811
- cy: 6,
1812
- r: 2,
1813
- fill: 'color',
1814
- opacity: 1
1815
- },
1816
- // === SIGNAL ARCS (using smootharc - the "clever trick"!) ===
1817
- // Uses border trick for perfect anti-aliased curves instead of line segments.
1818
- // portion: 'top' shows the top half of the circle, creating upward-curving arcs.
1819
-
1820
- // Arc 1 (innermost)
1821
- {
1822
- type: 'smootharc',
1823
- cx: 0,
1824
- cy: 6,
1825
- r: 5,
1826
- stroke: 'color',
1827
- strokeWidth: 2,
1828
- opacity: 0.9,
1829
- portion: 'top'
1830
- },
1831
- // Arc 2 (middle)
1832
- {
1833
- type: 'smootharc',
1834
- cx: 0,
1835
- cy: 6,
1836
- r: 8,
1837
- stroke: 'color',
1838
- strokeWidth: 2,
1839
- opacity: 0.7,
1840
- portion: 'top'
1841
- },
1842
- // Arc 3 (outermost)
1843
- {
1844
- type: 'smootharc',
1845
- cx: 0,
1846
- cy: 6,
1847
- r: 11,
1848
- stroke: 'color',
1849
- strokeWidth: 2,
1850
- opacity: 0.5,
1851
- portion: 'top'
1852
- }]
1853
- };
1854
-
1855
- // ===========================================
1856
- // HIGHLIGHT ICON (Render Pulse/Stack Pulse)
1857
- // ===========================================
1858
-
1859
- export const HIGHLIGHT_ICON_COLOR = '#10B981'; // Green (same as renders)
1860
-
1861
- export const highlightIconData = {
1862
- color: HIGHLIGHT_ICON_COLOR,
1863
- bgColor: '#000',
1864
- elements: [
1865
- // === PULSE RINGS (outer to inner) ===
1866
- // Outer ring
1867
- {
1868
- type: 'rect',
1869
- x: -10,
1870
- y: -10,
1871
- width: 20,
1872
- height: 20,
1873
- borderRadius: 3,
1874
- border: true,
1875
- borderWidth: 1.5,
1876
- opacity: 0.2
1877
- },
1878
- // Middle ring
1879
- {
1880
- type: 'rect',
1881
- x: -7.5,
1882
- y: -7.5,
1883
- width: 15,
1884
- height: 15,
1885
- borderRadius: 2.5,
1886
- border: true,
1887
- borderWidth: 1.5,
1888
- opacity: 0.4
1889
- },
1890
- // === INNER COMPONENT BOX ===
1891
- // Glow behind
1892
- {
1893
- type: 'rect',
1894
- x: -6,
1895
- y: -6,
1896
- width: 12,
1897
- height: 12,
1898
- borderRadius: 2,
1899
- fill: 'color',
1900
- opacity: 0.15
1901
- },
1902
- // Main component box
1903
- {
1904
- type: 'rect',
1905
- x: -5,
1906
- y: -5,
1907
- width: 10,
1908
- height: 10,
1909
- borderRadius: 1.5,
1910
- fill: 'color',
1911
- opacity: 0.9
1912
- },
1913
- // Inner screen
1914
- {
1915
- type: 'rect',
1916
- x: -3.5,
1917
- y: -3.5,
1918
- width: 7,
1919
- height: 7,
1920
- borderRadius: 1,
1921
- fill: '#000',
1922
- opacity: 0.4
1923
- },
1924
- // === CONTENT LINES inside component ===
1925
- {
1926
- type: 'rect',
1927
- x: -2,
1928
- y: -2,
1929
- width: 4,
1930
- height: 1,
1931
- borderRadius: 0.5,
1932
- fill: 'color',
1933
- opacity: 0.7
1934
- }, {
1935
- type: 'rect',
1936
- x: -2,
1937
- y: 0,
1938
- width: 3,
1939
- height: 1,
1940
- borderRadius: 0.5,
1941
- fill: 'color',
1942
- opacity: 0.5
1943
- }, {
1944
- type: 'rect',
1945
- x: -2,
1946
- y: 2,
1947
- width: 2,
1948
- height: 1,
1949
- borderRadius: 0.5,
1950
- fill: 'color',
1951
- opacity: 0.4
1952
- },
1953
- // === TOP HIGHLIGHT ===
1954
- {
1955
- type: 'rect',
1956
- x: -3,
1957
- y: -4.5,
1958
- width: 6,
1959
- height: 1.5,
1960
- borderRadius: 0.75,
1961
- fill: '#fff',
1962
- opacity: 0.2
1963
- },
1964
- // === CORNER DOTS ===
1965
- {
1966
- type: 'circle',
1967
- cx: -8,
1968
- cy: -8,
1969
- r: 1,
1970
- fill: 'color',
1971
- opacity: 0.6
1972
- }, {
1973
- type: 'circle',
1974
- cx: 8,
1975
- cy: -8,
1976
- r: 1,
1977
- fill: 'color',
1978
- opacity: 0.6
1979
- }, {
1980
- type: 'circle',
1981
- cx: -8,
1982
- cy: 8,
1983
- r: 1,
1984
- fill: 'color',
1985
- opacity: 0.6
1986
- }, {
1987
- type: 'circle',
1988
- cx: 8,
1989
- cy: 8,
1990
- r: 1,
1991
- fill: 'color',
1992
- opacity: 0.6
1993
- }]
1994
- };
1995
-
1996
- // ===========================================
1997
- // EVENTS ICON (Unified Timeline)
1998
- // ===========================================
1999
- // Shows a vertical timeline with event cards - representing
2000
- // the unified event timeline that aggregates events from all sources
2001
-
2002
- export const EVENTS_ICON_COLOR = '#00D4FF'; // Cyan (data/events feel)
2003
-
2004
- export const eventsIconData = {
2005
- color: EVENTS_ICON_COLOR,
2006
- bgColor: '#0a0a0f',
2007
- elements: [
2008
- // === TIMELINE NODES (left side) - scaled up ===
2009
- // Node 1 (top)
2010
- {
2011
- type: 'circle',
2012
- cx: -7,
2013
- cy: -7,
2014
- r: 2.5,
2015
- fill: 'color',
2016
- opacity: 1
2017
- }, {
2018
- type: 'circle',
2019
- cx: -7,
2020
- cy: -7,
2021
- r: 1.4,
2022
- fill: '#000000',
2023
- opacity: 1
2024
- },
2025
- // Node 2 (middle)
2026
- {
2027
- type: 'circle',
2028
- cx: -7,
2029
- cy: 0,
2030
- r: 2.5,
2031
- fill: 'color',
2032
- opacity: 1
2033
- }, {
2034
- type: 'circle',
2035
- cx: -7,
2036
- cy: 0,
2037
- r: 1.4,
2038
- fill: '#000000',
2039
- opacity: 1
2040
- },
2041
- // Node 3 (bottom)
2042
- {
2043
- type: 'circle',
2044
- cx: -7,
2045
- cy: 7,
2046
- r: 2.5,
2047
- fill: 'color',
2048
- opacity: 1
2049
- }, {
2050
- type: 'circle',
2051
- cx: -7,
2052
- cy: 7,
2053
- r: 1.4,
2054
- fill: '#000000',
2055
- opacity: 1
2056
- },
2057
- // === VERTICAL TIMELINE LINES - thicker ===
2058
- {
2059
- type: 'line',
2060
- x1: -7,
2061
- y1: -4.2,
2062
- x2: -7,
2063
- y2: -2.8,
2064
- stroke: 'color',
2065
- strokeWidth: 1.5,
2066
- opacity: 0.8
2067
- }, {
2068
- type: 'line',
2069
- x1: -7,
2070
- y1: 2.8,
2071
- x2: -7,
2072
- y2: 4.2,
2073
- stroke: 'color',
2074
- strokeWidth: 1.5,
2075
- opacity: 0.8
2076
- },
2077
- // === HORIZONTAL CONNECTOR LINES (to cards) - thicker ===
2078
- {
2079
- type: 'line',
2080
- x1: -4.2,
2081
- y1: -7,
2082
- x2: -1,
2083
- y2: -7,
2084
- stroke: 'color',
2085
- strokeWidth: 1.5,
2086
- opacity: 0.7
2087
- }, {
2088
- type: 'line',
2089
- x1: -4.2,
2090
- y1: 0,
2091
- x2: -1,
2092
- y2: 0,
2093
- stroke: 'color',
2094
- strokeWidth: 1.5,
2095
- opacity: 0.7
2096
- }, {
2097
- type: 'line',
2098
- x1: -4.2,
2099
- y1: 7,
2100
- x2: -1,
2101
- y2: 7,
2102
- stroke: 'color',
2103
- strokeWidth: 1.5,
2104
- opacity: 0.7
2105
- },
2106
- // === EVENT CARD 1 (top) - larger ===
2107
- {
2108
- type: 'rect',
2109
- x: -1,
2110
- y: -10,
2111
- width: 11,
2112
- height: 6,
2113
- fill: 'color',
2114
- opacity: 0.95,
2115
- borderRadius: 1
2116
- }, {
2117
- type: 'rect',
2118
- x: 0,
2119
- y: -9,
2120
- width: 9,
2121
- height: 4,
2122
- fill: '#000000',
2123
- opacity: 1,
2124
- borderRadius: 0.5
2125
- },
2126
- // Content lines in card 1 - thicker
2127
- {
2128
- type: 'line',
2129
- x1: 1.5,
2130
- y1: -7.5,
2131
- x2: 7.5,
2132
- y2: -7.5,
2133
- stroke: 'color',
2134
- strokeWidth: 1.2,
2135
- opacity: 0.8
2136
- }, {
2137
- type: 'line',
2138
- x1: 1.5,
2139
- y1: -5.8,
2140
- x2: 6,
2141
- y2: -5.8,
2142
- stroke: 'color',
2143
- strokeWidth: 1.2,
2144
- opacity: 0.6
2145
- },
2146
- // === EVENT CARD 2 (middle) - larger ===
2147
- {
2148
- type: 'rect',
2149
- x: -1,
2150
- y: -3,
2151
- width: 11,
2152
- height: 6,
2153
- fill: 'color',
2154
- opacity: 0.95,
2155
- borderRadius: 1
2156
- }, {
2157
- type: 'rect',
2158
- x: 0,
2159
- y: -2,
2160
- width: 9,
2161
- height: 4,
2162
- fill: '#000000',
2163
- opacity: 1,
2164
- borderRadius: 0.5
2165
- },
2166
- // Content lines in card 2 - thicker
2167
- {
2168
- type: 'line',
2169
- x1: 1.5,
2170
- y1: -0.5,
2171
- x2: 7.5,
2172
- y2: -0.5,
2173
- stroke: 'color',
2174
- strokeWidth: 1.2,
2175
- opacity: 0.8
2176
- }, {
2177
- type: 'line',
2178
- x1: 1.5,
2179
- y1: 1.2,
2180
- x2: 5,
2181
- y2: 1.2,
2182
- stroke: 'color',
2183
- strokeWidth: 1.2,
2184
- opacity: 0.6
2185
- },
2186
- // === EVENT CARD 3 (bottom) - larger ===
2187
- {
2188
- type: 'rect',
2189
- x: -1,
2190
- y: 4,
2191
- width: 11,
2192
- height: 6,
2193
- fill: 'color',
2194
- opacity: 0.95,
2195
- borderRadius: 1
2196
- }, {
2197
- type: 'rect',
2198
- x: 0,
2199
- y: 5,
2200
- width: 9,
2201
- height: 4,
2202
- fill: '#000000',
2203
- opacity: 1,
2204
- borderRadius: 0.5
2205
- },
2206
- // Data dots in card 3 - larger
2207
- {
2208
- type: 'circle',
2209
- cx: 2,
2210
- cy: 6.2,
2211
- r: 0.6,
2212
- fill: 'color',
2213
- opacity: 0.9
2214
- }, {
2215
- type: 'circle',
2216
- cx: 4,
2217
- cy: 6.2,
2218
- r: 0.6,
2219
- fill: 'color',
2220
- opacity: 0.9
2221
- }, {
2222
- type: 'circle',
2223
- cx: 6,
2224
- cy: 6.2,
2225
- r: 0.6,
2226
- fill: 'color',
2227
- opacity: 0.9
2228
- }, {
2229
- type: 'circle',
2230
- cx: 8,
2231
- cy: 6.2,
2232
- r: 0.6,
2233
- fill: 'color',
2234
- opacity: 0.9
2235
- }, {
2236
- type: 'circle',
2237
- cx: 2,
2238
- cy: 8,
2239
- r: 0.6,
2240
- fill: 'color',
2241
- opacity: 0.9
2242
- }, {
2243
- type: 'circle',
2244
- cx: 4,
2245
- cy: 8,
2246
- r: 0.6,
2247
- fill: 'color',
2248
- opacity: 0.9
2249
- }, {
2250
- type: 'circle',
2251
- cx: 6,
2252
- cy: 8,
2253
- r: 0.6,
2254
- fill: 'color',
2255
- opacity: 0.9
2256
- }, {
2257
- type: 'circle',
2258
- cx: 8,
2259
- cy: 8,
2260
- r: 0.6,
2261
- fill: 'color',
2262
- opacity: 0.9
2263
- }]
2264
- };
1
+ "use strict";export const NETWORK_ICON_COLOR="#00D4FF";export const networkIconData={color:"#00D4FF",bgColor:"rgba(8, 12, 21, 0.95)",elements:[{type:"circle",cx:0,cy:0,r:9,fill:"bg",border:!0,borderWidth:2,glow:!0,glowRadius:4},{type:"circle",cx:0,cy:0,r:9,border:!0,borderWidth:2,scaleX:.45,opacity:.6},{type:"circle",cx:0,cy:0,r:9,border:!0,borderWidth:2,scaleX:1.33,scaleY:.6,opacity:.6}]};export const ENV_ICON_COLOR="#4AFF9F";const KEYBOARD_ROW_1=[1,3,5,7,9,11,13,15,17],KEYBOARD_ROW_2=[2,4,6,8,10,12,14,16];export const envIconData={color:"#4AFF9F",bgColor:"#000",elements:[{type:"rect",x:-11,y:3,width:22,height:10,borderRadius:1,fill:"color",opacity:.15},{type:"rect",x:-10,y:4,width:20,height:8,borderRadius:1,fill:"color",opacity:.85},...KEYBOARD_ROW_1.map(t=>({type:"rect",x:-10+t,y:5.5,width:1.5,height:1.2,borderRadius:.2,fill:"#000",opacity:.3})),...KEYBOARD_ROW_2.map(t=>({type:"rect",x:-10+t,y:7.2,width:1.5,height:1.2,borderRadius:.2,fill:"#000",opacity:.3})),{type:"rect",x:-5,y:9.5,width:10,height:1,borderRadius:.2,fill:"#000",opacity:.25},{type:"rect",x:-9,y:-10,width:18,height:12,borderRadius:1,fill:"color",opacity:.9},{type:"rect",x:-8,y:-9,width:16,height:10,borderRadius:.5,fill:"#000",opacity:.5},{type:"rect",x:-7,y:-8,width:10,height:.5,fill:"color",opacity:.6},{type:"rect",x:-7,y:-6,width:7,height:.5,fill:"color",opacity:.6},{type:"rect",x:-7,y:-4,width:4,height:.5,fill:"color",opacity:.6},{type:"rect",x:-1,y:10,width:2,height:1,borderRadius:.5,fill:"color",opacity:.8},{type:"rect",x:.3*18-9,y:-6.4,width:1,height:1,borderRadius:.5,fill:"color",opacity:.4},{type:"rect",x:12.6-9,y:-6.4,width:1,height:1,borderRadius:.5,fill:"color",opacity:.4},{type:"rect",x:0,y:.7*12-10,width:1,height:1,borderRadius:.5,fill:"color",opacity:.4}]};export const STORAGE_ICON_COLOR="#FFB800";const CYLINDER_POSITIONS=[{y:-6,opacity:.9},{y:-1.2,opacity:.8},{y:3.6,opacity:.7}];export const storageIconData={color:"#FFB800",bgColor:"#000",elements:[{type:"rect",x:-9,y:-7,width:18,height:8,borderRadius:4,fill:"color",opacity:.1},{type:"rect",x:-8,y:-6,width:16,height:6,borderRadius:3,fill:"color",opacity:.9},{type:"rect",x:-7,y:-5.5,width:14,height:2,borderRadius:1,fill:"#fff",opacity:.15},{type:"rect",x:-8,y:-6,width:16,height:6,borderRadius:3,border:!0,borderWidth:.5,opacity:.3},{type:"rect",x:-9,y:-2.2,width:18,height:8,borderRadius:4,fill:"color",opacity:.1},{type:"rect",x:-8,y:-1.2,width:16,height:6,borderRadius:3,fill:"color",opacity:.8},{type:"rect",x:-7,y:-.7,width:14,height:2,borderRadius:1,fill:"#fff",opacity:.15},{type:"rect",x:-8,y:-1.2,width:16,height:6,borderRadius:3,border:!0,borderWidth:.5,opacity:.3},{type:"rect",x:-9,y:2.6,width:18,height:8,borderRadius:4,fill:"color",opacity:.1},{type:"rect",x:-8,y:3.6,width:16,height:6,borderRadius:3,fill:"color",opacity:.7},{type:"rect",x:-7,y:4.1,width:14,height:2,borderRadius:1,fill:"#fff",opacity:.15},{type:"rect",x:-8,y:3.6,width:16,height:6,borderRadius:3,border:!0,borderWidth:.5,opacity:.3},{type:"rect",x:-.25,y:-3.6,width:.5,height:6,fill:"color",opacity:.3},{type:"rect",x:-.25,y:1.2,width:.5,height:6,fill:"color",opacity:.3},{type:"rect",x:-.5,y:-3.5,width:1,height:1,borderRadius:.5,fill:"color",opacity:.6},{type:"rect",x:-.5,y:1.3,width:1,height:1,borderRadius:.5,fill:"color",opacity:.6},{type:"rect",x:-.5,y:6.1,width:1,height:1,borderRadius:.5,fill:"color",opacity:.6}]};export const ROUTES_ICON_COLOR="#FF9F1C";export const routePinIconData={color:"#FF9F1C",bgColor:"#000",elements:[{type:"circle",cx:0,cy:-2,r:5,fill:"color",opacity:1},{type:"triangle",x:0,y:4,size:5,direction:"down",fill:"color",opacity:1},{type:"circle",cx:0,cy:-2,r:2,fill:"bg",opacity:1}]};export const curveTestAData={color:"#FF9F1C",bgColor:"#000",elements:[{type:"circle",cx:0,cy:0,r:6,fill:"transparent",border:!0,borderWidth:3,scaleX:1.5,scaleY:.8,opacity:1}]};export const curveTestBData={color:"#FF9F1C",bgColor:"#000",elements:[{type:"circle",cx:0,cy:0,r:6,fill:"transparent",border:!0,borderWidth:3,scaleX:.6,scaleY:1.4,opacity:1}]};export const curveTestCData={color:"#FF9F1C",bgColor:"#000",elements:[{type:"rect",x:-10,y:-4,width:20,height:8,borderRadius:4,fill:"transparent",border:!0,borderWidth:3,opacity:1}]};export const curveTestDData={color:"#FF9F1C",bgColor:"#000",elements:[{type:"rect",x:-10,y:-4,width:20,height:8,borderRadius:4,fill:"transparent",border:!0,borderWidth:1.5,opacity:1}]};export const curveTestEData={color:"#FF9F1C",bgColor:"#000",elements:[{type:"rect",x:-10,y:-4,width:20,height:8,borderRadius:4,fill:"transparent",border:!0,borderWidth:2,opacity:1}]};export const curveTestFData={color:"#FF9F1C",bgColor:"#000",elements:[{type:"rect",x:-10,y:-4,width:20,height:8,borderRadius:4,fill:"transparent",border:!0,borderWidth:2,opacity:1}]};export const curveTestGData={color:"#FF9F1C",bgColor:"#000",elements:[{type:"rect",x:-6,y:-3,width:16,height:6,borderRadius:3,fill:"transparent",border:!0,borderWidth:1.5,opacity:1}]};export const curveTestHData={color:"#FF9F1C",bgColor:"#000",elements:[{type:"rect",x:-22,y:-3,width:16,height:6,borderRadius:3,fill:"transparent",border:!0,borderWidth:1.5,opacity:1}]};export const curveTestIData={color:"#FF9F1C",bgColor:"#000",elements:[{type:"rect",x:-8,y:-7,width:20,height:6,borderRadius:3,fill:"transparent",border:!0,borderWidth:1.5,opacity:1},{type:"rect",x:-12,y:1,width:20,height:6,borderRadius:3,fill:"transparent",border:!0,borderWidth:1.5,opacity:1}]};export const curveTestJData={color:"#FF9F1C",bgColor:"#000",elements:[{type:"rect",x:-8,y:-6,width:20,height:5,borderRadius:2.5,fill:"transparent",border:!0,borderWidth:1.5,opacity:1},{type:"rect",x:-12,y:1,width:20,height:5,borderRadius:2.5,fill:"transparent",border:!0,borderWidth:1.5,opacity:1}]};export const curveTestKData={color:"#FF9F1C",bgColor:"#000",elements:[{type:"rect",x:-8,y:-5,width:20,height:4,borderRadius:2,fill:"transparent",border:!0,borderWidth:1,opacity:1},{type:"rect",x:-12,y:1,width:20,height:4,borderRadius:2,fill:"transparent",border:!0,borderWidth:1,opacity:1}]};export const curveTestLData={color:"#FF9F1C",bgColor:"#000",elements:[{type:"rect",x:-6,y:-8,width:20,height:5,borderRadius:2.5,fill:"transparent",border:!0,borderWidth:1.5,opacity:1},{type:"rect",x:-14,y:3,width:20,height:5,borderRadius:2.5,fill:"transparent",border:!0,borderWidth:1.5,opacity:1}]};export const curveTestMData={color:"#FF9F1C",bgColor:"#000",elements:[{type:"rect",x:-7,y:-5,width:18,height:5,borderRadius:2.5,fill:"transparent",border:!0,borderWidth:1.5,opacity:1},{type:"rect",x:-11,y:0,width:18,height:5,borderRadius:2.5,fill:"transparent",border:!0,borderWidth:1.5,opacity:1}]};export const curveTestNData={color:"#FF9F1C",bgColor:"#000",elements:[{type:"rect",x:-8,y:-6,width:20,height:5,borderRadius:2.5,fill:"transparent",border:!0,borderWidth:2,opacity:1},{type:"rect",x:-12,y:1,width:20,height:5,borderRadius:2.5,fill:"transparent",border:!0,borderWidth:2,opacity:1}]};export const curveTestOData={color:"#FF9F1C",bgColor:"#000",elements:[{type:"rect",x:-8,y:-6,width:20,height:5,borderRadius:2.5,fill:"transparent",border:!0,borderWidth:1,opacity:1},{type:"rect",x:-12,y:1,width:20,height:5,borderRadius:2.5,fill:"transparent",border:!0,borderWidth:1,opacity:1}]};export const curveTestPData={color:"#FF9F1C",bgColor:"#000",elements:[{type:"rect",x:-8,y:-7,width:20,height:7,borderRadius:3.5,fill:"transparent",border:!0,borderWidth:1.5,opacity:1},{type:"rect",x:-12,y:0,width:20,height:7,borderRadius:3.5,fill:"transparent",border:!0,borderWidth:1.5,opacity:1}]};export const routePathIconData={color:"#FF9F1C",bgColor:"#000",elements:[{type:"smootharc",cx:-3,cy:-2,r:5,stroke:"color",strokeWidth:3,opacity:1,portion:"bottom"},{type:"smootharc",cx:3,cy:2,r:5,stroke:"color",strokeWidth:3,opacity:1,portion:"top"}]};export const routeDotIconData={color:"#FF9F1C",bgColor:"#000",elements:[{type:"circle",cx:0,cy:0,r:8,fill:"color",opacity:.3},{type:"circle",cx:0,cy:0,r:3,fill:"bg",opacity:1}]};export const routeTwoPinsIconData={color:"#FF9F1C",bgColor:"#000",elements:[{type:"circle",cx:-6,cy:4,r:3.5,fill:"color",opacity:1},{type:"triangle",x:-6,y:8.5,size:3.5,direction:"down",fill:"color",opacity:1},{type:"circle",cx:-6,cy:4,r:1.4,fill:"bg",opacity:1},{type:"circle",cx:6,cy:-5,r:3.5,fill:"color",opacity:1},{type:"triangle",x:6,y:-.5,size:3.5,direction:"down",fill:"color",opacity:1},{type:"circle",cx:6,cy:-5,r:1.4,fill:"bg",opacity:1}]};export const routesIconData={color:"#FF9F1C",bgColor:"#0a0a0f",elements:[{type:"circle",cx:2.846049894151541,cy:1.2649110640673518,r:4.110960958218893,fill:"#FF9F1C",scaleY:.94},{type:"circle",cx:6.00832755431992,cy:6.324555320336758,r:4,fill:"color"},{type:"circle",cx:6.324555320336758,cy:-6.324555320336758,r:3.794733192202055,fill:"color",scaleY:.97},{type:"circle",cx:6.324555320336758,cy:-6.00832755431992,r:1.5811388300841895,fill:"bg"},{type:"circle",cx:-6.324555320336758,cy:3.478505426185217,r:3.794733192202055,fill:"color",scaleY:.97},{type:"circle",cx:-6.324555320336758,cy:3.478505426185217,r:1.5811388300841895,fill:"bg"},{type:"line",x1:-8.854377448471462,y1:4.743416490252569,x2:-6.00832755431992,y2:9.803060746521975,stroke:"color",strokeWidth:1.5},{type:"line",x1:-3.162277660168379,y1:3.162277660168379,x2:-6.640783086353596,y2:9.803060746521975,stroke:"color",strokeWidth:1.8},{type:"rect",x:-7.273238618387272,y:6.324555320336758,width:1.8973665961010275,height:2.2135943621178655,fill:"color"},{type:"line",x1:1.2649110640673518,y1:1.2649110640673518,x2:9.1706052144883,y2:1.2649110640673518,stroke:"bg",strokeWidth:2.4},{type:"line",x1:9.486832980505138,y1:-6.640783086353596,x2:6.00832755431992,y2:0,stroke:"color",strokeWidth:1.8},{type:"line",x1:3.478505426185217,y1:-5.375872022286244,x2:6.640783086353596,y2:0,stroke:"color",strokeWidth:1.5},{type:"rect",x:5.692099788303082,y:-3.478505426185217,width:1.8973665961010275,height:2.2135943621178655,fill:"color"},{type:"rect",x:2.846049894151541,y:10,width:6,height:4,fill:"bg"},{type:"line",x1:-.31622776601683794,y1:6.324555320336758,x2:7.58946638440411,y2:6.324555320336758,stroke:"bg",strokeWidth:2.3},{type:"rect",x:-2.5298221281347035,y:7.5,width:7.273238618387272,height:2.5,fill:"color"}]};export const QUERY_ICON_COLOR="#FF3366";const QUERY_STATES={fresh:"#10B981",fetching:"#3B82F6",stale:"#F59E0B",paused:"#8B5CF6",inactive:"#6B7280"};export const queryIconData={color:"#FF3366",bgColor:"#000",elements:[{type:"line",x1:0,y1:0,x2:0,y2:-8,stroke:QUERY_STATES.fresh,strokeWidth:1.2,opacity:.5},{type:"line",x1:0,y1:0,x2:7.6,y2:-2.5,stroke:QUERY_STATES.fetching,strokeWidth:1.2,opacity:.5},{type:"line",x1:0,y1:0,x2:4.7,y2:6.5,stroke:QUERY_STATES.stale,strokeWidth:1.2,opacity:.5},{type:"line",x1:0,y1:0,x2:-4.7,y2:6.5,stroke:QUERY_STATES.paused,strokeWidth:1.2,opacity:.5},{type:"line",x1:0,y1:0,x2:-7.6,y2:-2.5,stroke:QUERY_STATES.inactive,strokeWidth:1.2,opacity:.5},{type:"circle",cx:0,cy:-8,r:2.2,fill:QUERY_STATES.fresh,opacity:.2},{type:"circle",cx:0,cy:-8,r:1.6,fill:QUERY_STATES.fresh,opacity:.9},{type:"circle",cx:7.6,cy:-2.5,r:2.2,fill:QUERY_STATES.fetching,opacity:.2},{type:"circle",cx:7.6,cy:-2.5,r:1.6,fill:QUERY_STATES.fetching,opacity:.9},{type:"circle",cx:4.7,cy:6.5,r:2.2,fill:QUERY_STATES.stale,opacity:.2},{type:"circle",cx:4.7,cy:6.5,r:1.6,fill:QUERY_STATES.stale,opacity:.9},{type:"circle",cx:-4.7,cy:6.5,r:2.2,fill:QUERY_STATES.paused,opacity:.2},{type:"circle",cx:-4.7,cy:6.5,r:1.6,fill:QUERY_STATES.paused,opacity:.9},{type:"circle",cx:-7.6,cy:-2.5,r:2.2,fill:QUERY_STATES.inactive,opacity:.2},{type:"circle",cx:-7.6,cy:-2.5,r:1.6,fill:QUERY_STATES.inactive,opacity:.9},{type:"circle",cx:0,cy:0,r:4.5,fill:"color",opacity:.1},{type:"circle",cx:0,cy:0,r:3,fill:"color",opacity:.95},{type:"circle",cx:0,cy:0,r:1.3,fill:"#fff",opacity:.35}]};export const HIGHLIGHTER_ICON_COLOR="#10B981";export const RENDERS_ICON_COLOR="#10B981";export const highlighterIconData={color:"#10B981",bgColor:"#0a0a0f",elements:[{type:"rect",x:-9.1706052144883,y:5.692099788303082,width:3.478505426185217,height:3.478505426185217,fill:"color",rotation:45},{type:"rect",x:-10.119288512538814,y:8.538149682454623,width:6,height:4,fill:"bg"},{type:"line",x1:-10.119288512538814,y1:7.905694150420948,x2:-6.640783086353596,y2:7.905694150420948,stroke:"color",strokeWidth:1.5},{type:"line",x1:-6.957010852370434,y1:5.059644256269407,x2:-2.846049894151541,y2:5.059644256269407,stroke:"color",strokeWidth:1.5,rotation:44},{type:"line",x1:-5.91,y1:-4.11,x2:7.27,y2:-4.33,stroke:"color",strokeWidth:2.1,rotation:145},{type:"line",x1:-1.56,y1:1.05,x2:10.435516278555651,y2:-2.846049894151541,stroke:"color",strokeWidth:2.1,rotation:145},{type:"line",x1:4.110960958218893,y1:-6.640783086353596,x2:9.486832980505138,y2:-6.640783086353596,stroke:"color",strokeWidth:2.2,rotation:44},{type:"line",x1:-4.743416490252569,y1:-1.5811388300841895,x2:1.5811388300841895,y2:4.743416490252569,stroke:"color",strokeWidth:2.9},{type:"line",x1:-6.957010852370434,y1:1.2649110640673518,x2:-2.2135943621178655,y2:2.2135943621178655,stroke:"color",strokeWidth:1.5,rotation:77},{type:"line",x1:-1.2649110640673518,y1:.9486832980505138,x2:-2.5298221281347035,y2:7.905694150420948,stroke:"color",strokeWidth:1.5,rotation:77},{type:"rect",x:-4.427188724235731,y:.9486832980505138,width:3.794733192202055,height:4.110960958218893,fill:"color"},{type:"line",x1:-7.58946638440411,y1:1.8973665961010275,x2:-.9486832980505138,y2:1.8973665961010275,stroke:"color",strokeWidth:1.5,rotation:-48},{type:"line",x1:-5.375872022286244,y1:4.110960958218893,x2:1.2649110640673518,y2:4.110960958218893,stroke:"color",strokeWidth:1.5,rotation:-48}]};export const rendersIconData=highlighterIconData;export const BENCHMARK_ICON_COLOR="#F59E0B";export const benchmarkIconData={color:"#F59E0B",bgColor:"#000",elements:[{type:"circle",cx:0,cy:1,r:7,border:!0,borderWidth:1.5,opacity:.9},{type:"circle",cx:0,cy:1,r:5,fill:"color",opacity:.15},{type:"rect",x:-2,y:-10,width:4,height:3,borderRadius:1,fill:"color",opacity:.9},{type:"rect",x:-1,y:-7.5,width:2,height:2,fill:"color",opacity:.9},{type:"rect",x:-.75,y:-4,width:1.5,height:5,borderRadius:1,fill:"color",opacity:.9,rotation:-45,rotateFromCenter:!0},{type:"circle",cx:0,cy:1,r:1,fill:"color",opacity:.9},{type:"rect",x:-.5,y:-5,width:1,height:2,fill:"color",opacity:.5},{type:"rect",x:4,y:.5,width:2,height:1,fill:"color",opacity:.5},{type:"rect",x:-.5,y:5,width:1,height:2,fill:"color",opacity:.5},{type:"rect",x:-6,y:.5,width:2,height:1,fill:"color",opacity:.5}]};export const SENTRY_ICON_COLOR="#FF3366";export const sentryIconData={color:"#FF3366",bgColor:"#000",elements:[{type:"circle",cx:0,cy:1,r:8,fill:"color",opacity:.15},{type:"rect",x:-6,y:-4,width:12,height:14,borderRadius:6,fill:"color",opacity:.9},{type:"rect",x:-4,y:-9,width:8,height:6,borderRadius:4,fill:"color",opacity:.95},{type:"rect",x:-3,y:-12,width:.8,height:4,fill:"color",opacity:.7,rotation:-15},{type:"circle",cx:-4,cy:-12,r:1.2,fill:"color",opacity:.6},{type:"rect",x:2.2,y:-12,width:.8,height:4,fill:"color",opacity:.7,rotation:15},{type:"circle",cx:4,cy:-12,r:1.2,fill:"color",opacity:.6},{type:"rect",x:-10,y:-2,width:4,height:1,fill:"color",opacity:.8,rotation:-20},{type:"rect",x:-10,y:1,width:4,height:1,fill:"color",opacity:.8,rotation:-10},{type:"rect",x:-10,y:4,width:4,height:1,fill:"color",opacity:.8,rotation:10},{type:"rect",x:6,y:-2,width:4,height:1,fill:"color",opacity:.8,rotation:20},{type:"rect",x:6,y:1,width:4,height:1,fill:"color",opacity:.8,rotation:10},{type:"rect",x:6,y:4,width:4,height:1,fill:"color",opacity:.8,rotation:-10},{type:"circle",cx:0,cy:1,r:1,fill:"#fff",opacity:.3}]};export const WIFI_ICON_COLOR="#00D4FF";export const wifiIconData={color:"#00D4FF",bgColor:"#000",elements:[{type:"circle",cx:0,cy:6,r:2,fill:"color",opacity:1},{type:"smootharc",cx:0,cy:6,r:5,stroke:"color",strokeWidth:2,opacity:.9,portion:"top"},{type:"smootharc",cx:0,cy:6,r:8,stroke:"color",strokeWidth:2,opacity:.7,portion:"top"},{type:"smootharc",cx:0,cy:6,r:11,stroke:"color",strokeWidth:2,opacity:.5,portion:"top"}]};export const HIGHLIGHT_ICON_COLOR="#10B981";export const highlightIconData={color:"#10B981",bgColor:"#000",elements:[{type:"rect",x:-10,y:-10,width:20,height:20,borderRadius:3,border:!0,borderWidth:1.5,opacity:.2},{type:"rect",x:-7.5,y:-7.5,width:15,height:15,borderRadius:2.5,border:!0,borderWidth:1.5,opacity:.4},{type:"rect",x:-6,y:-6,width:12,height:12,borderRadius:2,fill:"color",opacity:.15},{type:"rect",x:-5,y:-5,width:10,height:10,borderRadius:1.5,fill:"color",opacity:.9},{type:"rect",x:-3.5,y:-3.5,width:7,height:7,borderRadius:1,fill:"#000",opacity:.4},{type:"rect",x:-2,y:-2,width:4,height:1,borderRadius:.5,fill:"color",opacity:.7},{type:"rect",x:-2,y:0,width:3,height:1,borderRadius:.5,fill:"color",opacity:.5},{type:"rect",x:-2,y:2,width:2,height:1,borderRadius:.5,fill:"color",opacity:.4},{type:"rect",x:-3,y:-4.5,width:6,height:1.5,borderRadius:.75,fill:"#fff",opacity:.2},{type:"circle",cx:-8,cy:-8,r:1,fill:"color",opacity:.6},{type:"circle",cx:8,cy:-8,r:1,fill:"color",opacity:.6},{type:"circle",cx:-8,cy:8,r:1,fill:"color",opacity:.6},{type:"circle",cx:8,cy:8,r:1,fill:"color",opacity:.6}]};export const EVENTS_ICON_COLOR="#00D4FF";export const eventsIconData={color:"#00D4FF",bgColor:"#0a0a0f",elements:[{type:"circle",cx:-7,cy:-7,r:2.5,fill:"color",opacity:1},{type:"circle",cx:-7,cy:-7,r:1.4,fill:"#000000",opacity:1},{type:"circle",cx:-7,cy:0,r:2.5,fill:"color",opacity:1},{type:"circle",cx:-7,cy:0,r:1.4,fill:"#000000",opacity:1},{type:"circle",cx:-7,cy:7,r:2.5,fill:"color",opacity:1},{type:"circle",cx:-7,cy:7,r:1.4,fill:"#000000",opacity:1},{type:"line",x1:-7,y1:-4.2,x2:-7,y2:-2.8,stroke:"color",strokeWidth:1.5,opacity:.8},{type:"line",x1:-7,y1:2.8,x2:-7,y2:4.2,stroke:"color",strokeWidth:1.5,opacity:.8},{type:"line",x1:-4.2,y1:-7,x2:-1,y2:-7,stroke:"color",strokeWidth:1.5,opacity:.7},{type:"line",x1:-4.2,y1:0,x2:-1,y2:0,stroke:"color",strokeWidth:1.5,opacity:.7},{type:"line",x1:-4.2,y1:7,x2:-1,y2:7,stroke:"color",strokeWidth:1.5,opacity:.7},{type:"rect",x:-1,y:-10,width:11,height:6,fill:"color",opacity:.95,borderRadius:1},{type:"rect",x:0,y:-9,width:9,height:4,fill:"#000000",opacity:1,borderRadius:.5},{type:"line",x1:1.5,y1:-7.5,x2:7.5,y2:-7.5,stroke:"color",strokeWidth:1.2,opacity:.8},{type:"line",x1:1.5,y1:-5.8,x2:6,y2:-5.8,stroke:"color",strokeWidth:1.2,opacity:.6},{type:"rect",x:-1,y:-3,width:11,height:6,fill:"color",opacity:.95,borderRadius:1},{type:"rect",x:0,y:-2,width:9,height:4,fill:"#000000",opacity:1,borderRadius:.5},{type:"line",x1:1.5,y1:-.5,x2:7.5,y2:-.5,stroke:"color",strokeWidth:1.2,opacity:.8},{type:"line",x1:1.5,y1:1.2,x2:5,y2:1.2,stroke:"color",strokeWidth:1.2,opacity:.6},{type:"rect",x:-1,y:4,width:11,height:6,fill:"color",opacity:.95,borderRadius:1},{type:"rect",x:0,y:5,width:9,height:4,fill:"#000000",opacity:1,borderRadius:.5},{type:"circle",cx:2,cy:6.2,r:.6,fill:"color",opacity:.9},{type:"circle",cx:4,cy:6.2,r:.6,fill:"color",opacity:.9},{type:"circle",cx:6,cy:6.2,r:.6,fill:"color",opacity:.9},{type:"circle",cx:8,cy:6.2,r:.6,fill:"color",opacity:.9},{type:"circle",cx:2,cy:8,r:.6,fill:"color",opacity:.9},{type:"circle",cx:4,cy:8,r:.6,fill:"color",opacity:.9},{type:"circle",cx:6,cy:8,r:.6,fill:"color",opacity:.9},{type:"circle",cx:8,cy:8,r:.6,fill:"color",opacity:.9}]};