sketchmark 2.0.0 → 2.1.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 (132) hide show
  1. package/ANIMATABLE_MATRIX.md +177 -0
  2. package/KERNEL_SPEC.md +412 -0
  3. package/PACKS.md +81 -0
  4. package/PRESETS.md +182 -0
  5. package/README.md +274 -188
  6. package/bin/editor-ui.cjs +2285 -0
  7. package/bin/preview-ui.cjs +74 -0
  8. package/bin/sketchmark.cjs +648 -2008
  9. package/dist/src/animatable.d.ts +21 -0
  10. package/dist/src/animatable.js +439 -0
  11. package/dist/src/builders/index.d.ts +1 -11
  12. package/dist/src/builders/index.js +1 -19
  13. package/dist/src/diagnostics.js +1 -64
  14. package/dist/src/edit.d.ts +27 -0
  15. package/dist/src/edit.js +162 -0
  16. package/dist/src/index.d.ts +4 -13
  17. package/dist/src/index.js +4 -13
  18. package/dist/src/keyframes.d.ts +48 -0
  19. package/dist/src/keyframes.js +182 -0
  20. package/dist/src/motion.d.ts +4 -0
  21. package/dist/src/motion.js +262 -0
  22. package/dist/src/normalize.js +120 -151
  23. package/dist/src/presets/characters.d.ts +15 -0
  24. package/dist/src/presets/characters.js +113 -0
  25. package/dist/src/presets/compose.d.ts +5 -0
  26. package/dist/src/presets/compose.js +80 -0
  27. package/dist/src/presets/effects.d.ts +40 -0
  28. package/dist/src/presets/effects.js +79 -0
  29. package/dist/src/presets/helpers.d.ts +33 -0
  30. package/dist/src/presets/helpers.js +165 -0
  31. package/dist/src/presets/index.d.ts +9 -0
  32. package/dist/src/presets/index.js +48 -0
  33. package/dist/src/presets/motions.d.ts +33 -0
  34. package/dist/src/presets/motions.js +75 -0
  35. package/dist/src/presets/scenes.d.ts +35 -0
  36. package/dist/src/presets/scenes.js +134 -0
  37. package/dist/src/presets/shapes.d.ts +71 -0
  38. package/dist/src/presets/shapes.js +96 -0
  39. package/dist/src/presets/transitions.d.ts +29 -0
  40. package/dist/src/presets/transitions.js +113 -0
  41. package/dist/src/presets/types.d.ts +34 -0
  42. package/dist/src/presets/types.js +2 -0
  43. package/dist/src/render/html.js +1 -4
  44. package/dist/src/render/svg.d.ts +2 -2
  45. package/dist/src/render/svg.js +86 -82
  46. package/dist/src/render/three-html.js +67 -113
  47. package/dist/src/scenes.js +1 -0
  48. package/dist/src/schema.js +218 -280
  49. package/dist/src/shapes/builtins.js +11 -47
  50. package/dist/src/shapes/common.js +12 -11
  51. package/dist/src/shapes/registry.d.ts +0 -1
  52. package/dist/src/shapes/registry.js +0 -4
  53. package/dist/src/shapes/types.d.ts +1 -3
  54. package/dist/src/types.d.ts +57 -288
  55. package/dist/src/utils.d.ts +2 -11
  56. package/dist/src/utils.js +13 -70
  57. package/dist/src/validate.js +321 -275
  58. package/dist/tests/run.js +576 -510
  59. package/examples/1730642890464.jpg +0 -0
  60. package/examples/app-screen.svg +1 -0
  61. package/examples/app-screen.visual.json +503 -0
  62. package/examples/dashboard-table.svg +1 -0
  63. package/examples/dashboard-table.visual.json +708 -0
  64. package/examples/dev-docs.svg +1 -0
  65. package/examples/dev-docs.visual.json +248 -0
  66. package/examples/explainer.mp4 +0 -0
  67. package/examples/explainer.visual.json +1713 -0
  68. package/examples/group-origin-effects-lab-check.svg +1 -0
  69. package/examples/group-origin-effects-lab.visual.json +1880 -0
  70. package/examples/image-clip-radius.visual.json +271 -0
  71. package/examples/make-app-screen.cjs +368 -0
  72. package/examples/make-dashboard-table.cjs +277 -0
  73. package/examples/make-dev-docs.cjs +233 -0
  74. package/examples/make-explainer.cjs +438 -0
  75. package/examples/make-group-origin-effects-lab.cjs +370 -0
  76. package/examples/make-image-clip-radius.cjs +169 -0
  77. package/examples/make-modal-dialog.cjs +355 -0
  78. package/examples/make-origin-effects-lab.cjs +311 -0
  79. package/examples/make-preset-character-motion.cjs +32 -0
  80. package/examples/make-presets-demo.cjs +30 -0
  81. package/examples/make-pricing.cjs +286 -0
  82. package/examples/make-product-demo.cjs +468 -0
  83. package/examples/make-product-hero.cjs +223 -0
  84. package/examples/make-release-notes.cjs +333 -0
  85. package/examples/make-settings-panel.cjs +435 -0
  86. package/examples/make-split-preview.cjs +248 -0
  87. package/examples/make-storyboard.cjs +215 -0
  88. package/examples/make-transcript.cjs +234 -0
  89. package/examples/make-typography-test.cjs +397 -0
  90. package/examples/make-ui-demo-explainer.cjs +1094 -0
  91. package/examples/make-ui-flow.cjs +762 -0
  92. package/examples/make-walkthrough.cjs +815 -0
  93. package/examples/modal-dialog.svg +1 -0
  94. package/examples/modal-dialog.visual.json +239 -0
  95. package/examples/origin-effects-lab-check.svg +1 -0
  96. package/examples/origin-effects-lab.visual.json +1412 -0
  97. package/examples/preset-character-motion.visual.json +949 -0
  98. package/examples/presets-demo.visual.json +787 -0
  99. package/examples/pricing.svg +1 -0
  100. package/examples/pricing.visual.json +652 -0
  101. package/examples/product-demo.mp4 +0 -0
  102. package/examples/product-demo.visual.json +866 -0
  103. package/examples/product-hero.svg +1 -0
  104. package/examples/product-hero.visual.json +242 -0
  105. package/examples/release-notes.svg +1 -0
  106. package/examples/release-notes.visual.json +467 -0
  107. package/examples/settings-panel.svg +1 -0
  108. package/examples/settings-panel.visual.json +501 -0
  109. package/examples/split-preview.svg +1 -0
  110. package/examples/split-preview.visual.json +124 -0
  111. package/examples/storyboard.svg +1 -0
  112. package/examples/storyboard.visual.json +312 -0
  113. package/examples/transcript.svg +1 -0
  114. package/examples/transcript.visual.json +407 -0
  115. package/examples/typography-indent-check.svg +1 -0
  116. package/examples/typography-lineheight-0.svg +1 -0
  117. package/examples/typography-lineheight-2.svg +1 -0
  118. package/examples/typography-test-check.svg +1 -0
  119. package/examples/typography-test.svg +1 -0
  120. package/examples/typography-test.visual.json +757 -0
  121. package/examples/ui-demo-explainer-billing.svg +1 -0
  122. package/examples/ui-demo-explainer-check.svg +1 -0
  123. package/examples/ui-demo-explainer-save.svg +1 -0
  124. package/examples/ui-demo-explainer-toggle.svg +1 -0
  125. package/examples/ui-demo-explainer.mp4 +0 -0
  126. package/examples/ui-demo-explainer.visual.json +2597 -0
  127. package/examples/ui-flow.mp4 +0 -0
  128. package/examples/ui-flow.visual.json +1211 -0
  129. package/examples/walkthrough.mp4 +0 -0
  130. package/examples/walkthrough.visual.json +1372 -0
  131. package/package.json +52 -52
  132. package/schema/visual.schema.json +1086 -930
@@ -0,0 +1,708 @@
1
+ {
2
+ "version": 1,
3
+ "canvas": {
4
+ "width": 1100,
5
+ "height": 560,
6
+ "background": "#f8fafc"
7
+ },
8
+ "elements": [
9
+ {
10
+ "id": "page-title",
11
+ "type": "text",
12
+ "x": 48,
13
+ "y": 40,
14
+ "text": "Operations Dashboard",
15
+ "align": "left",
16
+ "valign": "top",
17
+ "fontSize": 26,
18
+ "fontFamily": "Inter, system-ui, sans-serif",
19
+ "weight": 700,
20
+ "fill": "#0f172a"
21
+ },
22
+ {
23
+ "id": "table-title",
24
+ "type": "text",
25
+ "x": 48,
26
+ "y": 84,
27
+ "text": "Service Health Overview",
28
+ "align": "left",
29
+ "valign": "top",
30
+ "fontSize": 16,
31
+ "fontFamily": "Inter, system-ui, sans-serif",
32
+ "weight": 600,
33
+ "fill": "#1e293b"
34
+ },
35
+ {
36
+ "id": "table-border",
37
+ "type": "path",
38
+ "d": "M 56 116 L 1044 116 Q 1052 116 1052 124 L 1052 412 Q 1052 420 1044 420 L 56 420 Q 48 420 48 412 L 48 124 Q 48 116 56 116 Z",
39
+ "fill": "#ffffff",
40
+ "stroke": "#e2e8f0",
41
+ "strokeWidth": 1
42
+ },
43
+ {
44
+ "id": "header-bg",
45
+ "type": "path",
46
+ "d": "M 56 116 L 1044 116 Q 1052 116 1052 124 L 1052 156 L 48 156 L 48 124 Q 48 116 56 116 Z",
47
+ "fill": "#f1f5f9",
48
+ "stroke": "none"
49
+ },
50
+ {
51
+ "id": "header-border",
52
+ "type": "path",
53
+ "d": "M 48 156 L 1052 156",
54
+ "stroke": "#e2e8f0",
55
+ "strokeWidth": 1,
56
+ "fill": "none"
57
+ },
58
+ {
59
+ "id": "header-service",
60
+ "type": "text",
61
+ "x": 64,
62
+ "y": 136,
63
+ "text": "Service",
64
+ "align": "left",
65
+ "valign": "middle",
66
+ "fontSize": 12,
67
+ "fontFamily": "Inter, system-ui, sans-serif",
68
+ "weight": 600,
69
+ "fill": "#475569"
70
+ },
71
+ {
72
+ "id": "header-requests",
73
+ "type": "text",
74
+ "x": 352,
75
+ "y": 136,
76
+ "text": "Requests",
77
+ "align": "right",
78
+ "valign": "middle",
79
+ "fontSize": 12,
80
+ "fontFamily": "Inter, system-ui, sans-serif",
81
+ "weight": 600,
82
+ "fill": "#475569"
83
+ },
84
+ {
85
+ "id": "header-latency",
86
+ "type": "text",
87
+ "x": 472,
88
+ "y": 136,
89
+ "text": "Avg Latency",
90
+ "align": "right",
91
+ "valign": "middle",
92
+ "fontSize": 12,
93
+ "fontFamily": "Inter, system-ui, sans-serif",
94
+ "weight": 600,
95
+ "fill": "#475569"
96
+ },
97
+ {
98
+ "id": "header-errors",
99
+ "type": "text",
100
+ "x": 582,
101
+ "y": 136,
102
+ "text": "Error Rate",
103
+ "align": "right",
104
+ "valign": "middle",
105
+ "fontSize": 12,
106
+ "fontFamily": "Inter, system-ui, sans-serif",
107
+ "weight": 600,
108
+ "fill": "#475569"
109
+ },
110
+ {
111
+ "id": "header-uptime",
112
+ "type": "text",
113
+ "x": 682,
114
+ "y": 136,
115
+ "text": "Uptime",
116
+ "align": "right",
117
+ "valign": "middle",
118
+ "fontSize": 12,
119
+ "fontFamily": "Inter, system-ui, sans-serif",
120
+ "weight": 600,
121
+ "fill": "#475569"
122
+ },
123
+ {
124
+ "id": "header-status",
125
+ "type": "text",
126
+ "x": 753,
127
+ "y": 136,
128
+ "text": "Status",
129
+ "align": "center",
130
+ "valign": "middle",
131
+ "fontSize": 12,
132
+ "fontFamily": "Inter, system-ui, sans-serif",
133
+ "weight": 600,
134
+ "fill": "#475569"
135
+ },
136
+ {
137
+ "id": "row-border-0",
138
+ "type": "path",
139
+ "d": "M 64 200 L 1036 200",
140
+ "stroke": "#e2e8f0",
141
+ "strokeWidth": 1,
142
+ "fill": "none"
143
+ },
144
+ {
145
+ "id": "cell-0-service",
146
+ "type": "text",
147
+ "x": 64,
148
+ "y": 178,
149
+ "text": "API Gateway",
150
+ "align": "left",
151
+ "valign": "middle",
152
+ "fontSize": 13,
153
+ "fontFamily": "Inter, system-ui, sans-serif",
154
+ "weight": 500,
155
+ "fill": "#334155"
156
+ },
157
+ {
158
+ "id": "cell-0-requests",
159
+ "type": "text",
160
+ "x": 352,
161
+ "y": 178,
162
+ "text": "1.2M",
163
+ "align": "right",
164
+ "valign": "middle",
165
+ "fontSize": 13,
166
+ "fontFamily": "Inter, system-ui, sans-serif",
167
+ "weight": 400,
168
+ "fill": "#64748b"
169
+ },
170
+ {
171
+ "id": "cell-0-latency",
172
+ "type": "text",
173
+ "x": 472,
174
+ "y": 178,
175
+ "text": "42ms",
176
+ "align": "right",
177
+ "valign": "middle",
178
+ "fontSize": 13,
179
+ "fontFamily": "Inter, system-ui, sans-serif",
180
+ "weight": 400,
181
+ "fill": "#64748b"
182
+ },
183
+ {
184
+ "id": "cell-0-errors",
185
+ "type": "text",
186
+ "x": 582,
187
+ "y": 178,
188
+ "text": "0.02%",
189
+ "align": "right",
190
+ "valign": "middle",
191
+ "fontSize": 13,
192
+ "fontFamily": "Inter, system-ui, sans-serif",
193
+ "weight": 400,
194
+ "fill": "#64748b"
195
+ },
196
+ {
197
+ "id": "cell-0-uptime",
198
+ "type": "text",
199
+ "x": 682,
200
+ "y": 178,
201
+ "text": "99.99%",
202
+ "align": "right",
203
+ "valign": "middle",
204
+ "fontSize": 13,
205
+ "fontFamily": "Inter, system-ui, sans-serif",
206
+ "weight": 400,
207
+ "fill": "#64748b"
208
+ },
209
+ {
210
+ "id": "cell-0-status-bg",
211
+ "type": "path",
212
+ "d": "M 729 166 L 777 166 Q 789 166 789 178 L 789 178 Q 789 190 777 190 L 729 190 Q 717 190 717 178 L 717 178 Q 717 166 729 166 Z",
213
+ "fill": "#d1fae5",
214
+ "stroke": "none"
215
+ },
216
+ {
217
+ "id": "cell-0-status-text",
218
+ "type": "text",
219
+ "x": 753,
220
+ "y": 178,
221
+ "text": "Healthy",
222
+ "align": "center",
223
+ "valign": "middle",
224
+ "fontSize": 11,
225
+ "fontFamily": "Inter, system-ui, sans-serif",
226
+ "weight": 600,
227
+ "fill": "#10b981"
228
+ },
229
+ {
230
+ "id": "row-bg-1",
231
+ "type": "path",
232
+ "d": "M 48 200 L 1052 200 L 1052 244 L 48 244 Z",
233
+ "fill": "#fafbfc",
234
+ "stroke": "none"
235
+ },
236
+ {
237
+ "id": "row-border-1",
238
+ "type": "path",
239
+ "d": "M 64 244 L 1036 244",
240
+ "stroke": "#e2e8f0",
241
+ "strokeWidth": 1,
242
+ "fill": "none"
243
+ },
244
+ {
245
+ "id": "cell-1-service",
246
+ "type": "text",
247
+ "x": 64,
248
+ "y": 222,
249
+ "text": "Auth Service",
250
+ "align": "left",
251
+ "valign": "middle",
252
+ "fontSize": 13,
253
+ "fontFamily": "Inter, system-ui, sans-serif",
254
+ "weight": 500,
255
+ "fill": "#334155"
256
+ },
257
+ {
258
+ "id": "cell-1-requests",
259
+ "type": "text",
260
+ "x": 352,
261
+ "y": 222,
262
+ "text": "890K",
263
+ "align": "right",
264
+ "valign": "middle",
265
+ "fontSize": 13,
266
+ "fontFamily": "Inter, system-ui, sans-serif",
267
+ "weight": 400,
268
+ "fill": "#64748b"
269
+ },
270
+ {
271
+ "id": "cell-1-latency",
272
+ "type": "text",
273
+ "x": 472,
274
+ "y": 222,
275
+ "text": "28ms",
276
+ "align": "right",
277
+ "valign": "middle",
278
+ "fontSize": 13,
279
+ "fontFamily": "Inter, system-ui, sans-serif",
280
+ "weight": 400,
281
+ "fill": "#64748b"
282
+ },
283
+ {
284
+ "id": "cell-1-errors",
285
+ "type": "text",
286
+ "x": 582,
287
+ "y": 222,
288
+ "text": "0.01%",
289
+ "align": "right",
290
+ "valign": "middle",
291
+ "fontSize": 13,
292
+ "fontFamily": "Inter, system-ui, sans-serif",
293
+ "weight": 400,
294
+ "fill": "#64748b"
295
+ },
296
+ {
297
+ "id": "cell-1-uptime",
298
+ "type": "text",
299
+ "x": 682,
300
+ "y": 222,
301
+ "text": "99.98%",
302
+ "align": "right",
303
+ "valign": "middle",
304
+ "fontSize": 13,
305
+ "fontFamily": "Inter, system-ui, sans-serif",
306
+ "weight": 400,
307
+ "fill": "#64748b"
308
+ },
309
+ {
310
+ "id": "cell-1-status-bg",
311
+ "type": "path",
312
+ "d": "M 729 210 L 777 210 Q 789 210 789 222 L 789 222 Q 789 234 777 234 L 729 234 Q 717 234 717 222 L 717 222 Q 717 210 729 210 Z",
313
+ "fill": "#d1fae5",
314
+ "stroke": "none"
315
+ },
316
+ {
317
+ "id": "cell-1-status-text",
318
+ "type": "text",
319
+ "x": 753,
320
+ "y": 222,
321
+ "text": "Healthy",
322
+ "align": "center",
323
+ "valign": "middle",
324
+ "fontSize": 11,
325
+ "fontFamily": "Inter, system-ui, sans-serif",
326
+ "weight": 600,
327
+ "fill": "#10b981"
328
+ },
329
+ {
330
+ "id": "row-border-2",
331
+ "type": "path",
332
+ "d": "M 64 288 L 1036 288",
333
+ "stroke": "#e2e8f0",
334
+ "strokeWidth": 1,
335
+ "fill": "none"
336
+ },
337
+ {
338
+ "id": "cell-2-service",
339
+ "type": "text",
340
+ "x": 64,
341
+ "y": 266,
342
+ "text": "User Database",
343
+ "align": "left",
344
+ "valign": "middle",
345
+ "fontSize": 13,
346
+ "fontFamily": "Inter, system-ui, sans-serif",
347
+ "weight": 500,
348
+ "fill": "#334155"
349
+ },
350
+ {
351
+ "id": "cell-2-requests",
352
+ "type": "text",
353
+ "x": 352,
354
+ "y": 266,
355
+ "text": "2.4M",
356
+ "align": "right",
357
+ "valign": "middle",
358
+ "fontSize": 13,
359
+ "fontFamily": "Inter, system-ui, sans-serif",
360
+ "weight": 400,
361
+ "fill": "#64748b"
362
+ },
363
+ {
364
+ "id": "cell-2-latency",
365
+ "type": "text",
366
+ "x": 472,
367
+ "y": 266,
368
+ "text": "8ms",
369
+ "align": "right",
370
+ "valign": "middle",
371
+ "fontSize": 13,
372
+ "fontFamily": "Inter, system-ui, sans-serif",
373
+ "weight": 400,
374
+ "fill": "#64748b"
375
+ },
376
+ {
377
+ "id": "cell-2-errors",
378
+ "type": "text",
379
+ "x": 582,
380
+ "y": 266,
381
+ "text": "0.00%",
382
+ "align": "right",
383
+ "valign": "middle",
384
+ "fontSize": 13,
385
+ "fontFamily": "Inter, system-ui, sans-serif",
386
+ "weight": 400,
387
+ "fill": "#64748b"
388
+ },
389
+ {
390
+ "id": "cell-2-uptime",
391
+ "type": "text",
392
+ "x": 682,
393
+ "y": 266,
394
+ "text": "100%",
395
+ "align": "right",
396
+ "valign": "middle",
397
+ "fontSize": 13,
398
+ "fontFamily": "Inter, system-ui, sans-serif",
399
+ "weight": 400,
400
+ "fill": "#64748b"
401
+ },
402
+ {
403
+ "id": "cell-2-status-bg",
404
+ "type": "path",
405
+ "d": "M 729 254 L 777 254 Q 789 254 789 266 L 789 266 Q 789 278 777 278 L 729 278 Q 717 278 717 266 L 717 266 Q 717 254 729 254 Z",
406
+ "fill": "#d1fae5",
407
+ "stroke": "none"
408
+ },
409
+ {
410
+ "id": "cell-2-status-text",
411
+ "type": "text",
412
+ "x": 753,
413
+ "y": 266,
414
+ "text": "Healthy",
415
+ "align": "center",
416
+ "valign": "middle",
417
+ "fontSize": 11,
418
+ "fontFamily": "Inter, system-ui, sans-serif",
419
+ "weight": 600,
420
+ "fill": "#10b981"
421
+ },
422
+ {
423
+ "id": "row-bg-3",
424
+ "type": "path",
425
+ "d": "M 48 288 L 1052 288 L 1052 332 L 48 332 Z",
426
+ "fill": "#fafbfc",
427
+ "stroke": "none"
428
+ },
429
+ {
430
+ "id": "row-border-3",
431
+ "type": "path",
432
+ "d": "M 64 332 L 1036 332",
433
+ "stroke": "#e2e8f0",
434
+ "strokeWidth": 1,
435
+ "fill": "none"
436
+ },
437
+ {
438
+ "id": "cell-3-service",
439
+ "type": "text",
440
+ "x": 64,
441
+ "y": 310,
442
+ "text": "Cache Layer",
443
+ "align": "left",
444
+ "valign": "middle",
445
+ "fontSize": 13,
446
+ "fontFamily": "Inter, system-ui, sans-serif",
447
+ "weight": 500,
448
+ "fill": "#334155"
449
+ },
450
+ {
451
+ "id": "cell-3-requests",
452
+ "type": "text",
453
+ "x": 352,
454
+ "y": 310,
455
+ "text": "5.1M",
456
+ "align": "right",
457
+ "valign": "middle",
458
+ "fontSize": 13,
459
+ "fontFamily": "Inter, system-ui, sans-serif",
460
+ "weight": 400,
461
+ "fill": "#64748b"
462
+ },
463
+ {
464
+ "id": "cell-3-latency",
465
+ "type": "text",
466
+ "x": 472,
467
+ "y": 310,
468
+ "text": "2ms",
469
+ "align": "right",
470
+ "valign": "middle",
471
+ "fontSize": 13,
472
+ "fontFamily": "Inter, system-ui, sans-serif",
473
+ "weight": 400,
474
+ "fill": "#64748b"
475
+ },
476
+ {
477
+ "id": "cell-3-errors",
478
+ "type": "text",
479
+ "x": 582,
480
+ "y": 310,
481
+ "text": "0.03%",
482
+ "align": "right",
483
+ "valign": "middle",
484
+ "fontSize": 13,
485
+ "fontFamily": "Inter, system-ui, sans-serif",
486
+ "weight": 400,
487
+ "fill": "#64748b"
488
+ },
489
+ {
490
+ "id": "cell-3-uptime",
491
+ "type": "text",
492
+ "x": 682,
493
+ "y": 310,
494
+ "text": "99.95%",
495
+ "align": "right",
496
+ "valign": "middle",
497
+ "fontSize": 13,
498
+ "fontFamily": "Inter, system-ui, sans-serif",
499
+ "weight": 400,
500
+ "fill": "#64748b"
501
+ },
502
+ {
503
+ "id": "cell-3-status-bg",
504
+ "type": "path",
505
+ "d": "M 729 298 L 777 298 Q 789 298 789 310 L 789 310 Q 789 322 777 322 L 729 322 Q 717 322 717 310 L 717 310 Q 717 298 729 298 Z",
506
+ "fill": "#fef3c7",
507
+ "stroke": "none"
508
+ },
509
+ {
510
+ "id": "cell-3-status-text",
511
+ "type": "text",
512
+ "x": 753,
513
+ "y": 310,
514
+ "text": "Degraded",
515
+ "align": "center",
516
+ "valign": "middle",
517
+ "fontSize": 11,
518
+ "fontFamily": "Inter, system-ui, sans-serif",
519
+ "weight": 600,
520
+ "fill": "#d97706"
521
+ },
522
+ {
523
+ "id": "row-border-4",
524
+ "type": "path",
525
+ "d": "M 64 376 L 1036 376",
526
+ "stroke": "#e2e8f0",
527
+ "strokeWidth": 1,
528
+ "fill": "none"
529
+ },
530
+ {
531
+ "id": "cell-4-service",
532
+ "type": "text",
533
+ "x": 64,
534
+ "y": 354,
535
+ "text": "Search Index",
536
+ "align": "left",
537
+ "valign": "middle",
538
+ "fontSize": 13,
539
+ "fontFamily": "Inter, system-ui, sans-serif",
540
+ "weight": 500,
541
+ "fill": "#334155"
542
+ },
543
+ {
544
+ "id": "cell-4-requests",
545
+ "type": "text",
546
+ "x": 352,
547
+ "y": 354,
548
+ "text": "340K",
549
+ "align": "right",
550
+ "valign": "middle",
551
+ "fontSize": 13,
552
+ "fontFamily": "Inter, system-ui, sans-serif",
553
+ "weight": 400,
554
+ "fill": "#64748b"
555
+ },
556
+ {
557
+ "id": "cell-4-latency",
558
+ "type": "text",
559
+ "x": 472,
560
+ "y": 354,
561
+ "text": "156ms",
562
+ "align": "right",
563
+ "valign": "middle",
564
+ "fontSize": 13,
565
+ "fontFamily": "Inter, system-ui, sans-serif",
566
+ "weight": 400,
567
+ "fill": "#64748b"
568
+ },
569
+ {
570
+ "id": "cell-4-errors",
571
+ "type": "text",
572
+ "x": 582,
573
+ "y": 354,
574
+ "text": "1.20%",
575
+ "align": "right",
576
+ "valign": "middle",
577
+ "fontSize": 13,
578
+ "fontFamily": "Inter, system-ui, sans-serif",
579
+ "weight": 400,
580
+ "fill": "#64748b"
581
+ },
582
+ {
583
+ "id": "cell-4-uptime",
584
+ "type": "text",
585
+ "x": 682,
586
+ "y": 354,
587
+ "text": "98.50%",
588
+ "align": "right",
589
+ "valign": "middle",
590
+ "fontSize": 13,
591
+ "fontFamily": "Inter, system-ui, sans-serif",
592
+ "weight": 400,
593
+ "fill": "#64748b"
594
+ },
595
+ {
596
+ "id": "cell-4-status-bg",
597
+ "type": "path",
598
+ "d": "M 729 342 L 777 342 Q 789 342 789 354 L 789 354 Q 789 366 777 366 L 729 366 Q 717 366 717 354 L 717 354 Q 717 342 729 342 Z",
599
+ "fill": "#fef3c7",
600
+ "stroke": "none"
601
+ },
602
+ {
603
+ "id": "cell-4-status-text",
604
+ "type": "text",
605
+ "x": 753,
606
+ "y": 354,
607
+ "text": "Warning",
608
+ "align": "center",
609
+ "valign": "middle",
610
+ "fontSize": 11,
611
+ "fontFamily": "Inter, system-ui, sans-serif",
612
+ "weight": 600,
613
+ "fill": "#d97706"
614
+ },
615
+ {
616
+ "id": "row-bg-5",
617
+ "type": "path",
618
+ "d": "M 48 376 L 1052 376 L 1052 420 L 48 420 Z",
619
+ "fill": "#fafbfc",
620
+ "stroke": "none"
621
+ },
622
+ {
623
+ "id": "cell-5-service",
624
+ "type": "text",
625
+ "x": 64,
626
+ "y": 398,
627
+ "text": "Legacy Sync",
628
+ "align": "left",
629
+ "valign": "middle",
630
+ "fontSize": 13,
631
+ "fontFamily": "Inter, system-ui, sans-serif",
632
+ "weight": 500,
633
+ "fill": "#334155"
634
+ },
635
+ {
636
+ "id": "cell-5-requests",
637
+ "type": "text",
638
+ "x": 352,
639
+ "y": 398,
640
+ "text": "45K",
641
+ "align": "right",
642
+ "valign": "middle",
643
+ "fontSize": 13,
644
+ "fontFamily": "Inter, system-ui, sans-serif",
645
+ "weight": 400,
646
+ "fill": "#64748b"
647
+ },
648
+ {
649
+ "id": "cell-5-latency",
650
+ "type": "text",
651
+ "x": 472,
652
+ "y": 398,
653
+ "text": "890ms",
654
+ "align": "right",
655
+ "valign": "middle",
656
+ "fontSize": 13,
657
+ "fontFamily": "Inter, system-ui, sans-serif",
658
+ "weight": 400,
659
+ "fill": "#64748b"
660
+ },
661
+ {
662
+ "id": "cell-5-errors",
663
+ "type": "text",
664
+ "x": 582,
665
+ "y": 398,
666
+ "text": "4.50%",
667
+ "align": "right",
668
+ "valign": "middle",
669
+ "fontSize": 13,
670
+ "fontFamily": "Inter, system-ui, sans-serif",
671
+ "weight": 400,
672
+ "fill": "#64748b"
673
+ },
674
+ {
675
+ "id": "cell-5-uptime",
676
+ "type": "text",
677
+ "x": 682,
678
+ "y": 398,
679
+ "text": "94.20%",
680
+ "align": "right",
681
+ "valign": "middle",
682
+ "fontSize": 13,
683
+ "fontFamily": "Inter, system-ui, sans-serif",
684
+ "weight": 400,
685
+ "fill": "#64748b"
686
+ },
687
+ {
688
+ "id": "cell-5-status-bg",
689
+ "type": "path",
690
+ "d": "M 729 386 L 777 386 Q 789 386 789 398 L 789 398 Q 789 410 777 410 L 729 410 Q 717 410 717 398 L 717 398 Q 717 386 729 386 Z",
691
+ "fill": "#fee2e2",
692
+ "stroke": "none"
693
+ },
694
+ {
695
+ "id": "cell-5-status-text",
696
+ "type": "text",
697
+ "x": 753,
698
+ "y": 398,
699
+ "text": "Critical",
700
+ "align": "center",
701
+ "valign": "middle",
702
+ "fontSize": 11,
703
+ "fontFamily": "Inter, system-ui, sans-serif",
704
+ "weight": 600,
705
+ "fill": "#dc2626"
706
+ }
707
+ ]
708
+ }