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
Binary file
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="1440" height="900" viewBox="0 0 1440 900" role="img"><rect x="0" y="0" width="1440" height="900" fill="#f1f5f9"/><path id="sidebar-bg" d="M 0 0 L 240 0 L 240 900 L 0 900 Z" fill="#1e293b" stroke="none" stroke-width="0"/><text id="sidebar-logo" text-anchor="start" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="16" font-weight="700" fill="#e2e8f0"><tspan x="24" y="32">Acme Studio</tspan></text><text id="ws-heading" text-anchor="start" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="10" font-weight="600" letter-spacing="1" fill="#94a3b8"><tspan x="24" y="77">WORKSPACE</tspan></text><text id="nav-dashboard" text-anchor="start" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="13" font-weight="400" fill="#94a3b8"><tspan x="24" y="102.5">Dashboard</tspan></text><path id="nav-projects-active-bg" d="M 18 126 L 222 126 Q 228 126 228 132 L 228 150 Q 228 156 222 156 L 18 156 Q 12 156 12 150 L 12 132 Q 12 126 18 126 Z" fill="#334155" stroke="none" stroke-width="0"/><text id="nav-projects" text-anchor="start" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="13" font-weight="500" fill="#e2e8f0"><tspan x="24" y="136.5">Projects</tspan></text><path id="nav-projects-indicator" d="M 4 130 L 4 148" fill="none" stroke="#2563eb" stroke-width="3" stroke-linecap="round"/><text id="nav-tasks" text-anchor="start" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="13" font-weight="400" fill="#94a3b8"><tspan x="24" y="170.5">Tasks</tspan></text><text id="nav-calendar" text-anchor="start" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="13" font-weight="400" fill="#94a3b8"><tspan x="24" y="204.5">Calendar</tspan></text><text id="an-heading" text-anchor="start" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="10" font-weight="600" letter-spacing="1" fill="#94a3b8"><tspan x="24" y="261">ANALYTICS</tspan></text><text id="nav-overview" text-anchor="start" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="13" font-weight="400" fill="#94a3b8"><tspan x="24" y="286.5">Overview</tspan></text><text id="nav-reports" text-anchor="start" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="13" font-weight="400" fill="#94a3b8"><tspan x="24" y="320.5">Reports</tspan></text><text id="nav-exports" text-anchor="start" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="13" font-weight="400" fill="#94a3b8"><tspan x="24" y="354.5">Exports</tspan></text><text id="st-heading" text-anchor="start" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="10" font-weight="600" letter-spacing="1" fill="#94a3b8"><tspan x="24" y="411">SETTINGS</tspan></text><text id="nav-general" text-anchor="start" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="13" font-weight="400" fill="#94a3b8"><tspan x="24" y="436.5">General</tspan></text><text id="nav-team" text-anchor="start" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="13" font-weight="400" fill="#94a3b8"><tspan x="24" y="470.5">Team Members</tspan></text><text id="nav-billing" text-anchor="start" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="13" font-weight="400" fill="#94a3b8"><tspan x="24" y="504.5">Billing</tspan></text><text id="nav-integrations" text-anchor="start" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="13" font-weight="400" fill="#94a3b8"><tspan x="24" y="538.5">Integrations</tspan></text><text id="main-title" text-anchor="start" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="28" font-weight="700" fill="#0f172a"><tspan x="280" y="46">Projects</tspan></text><text id="main-summary" text-anchor="start" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="14" font-weight="400" fill="#475569"><tspan x="280" y="79">Track active projects across your workspace. Filter by status or team to narrow</tspan><tspan x="280" y="101.4">results. Each card shows the latest activity snapshot and assigned owner.</tspan></text><path id="chip-bg-0" d="M 295 124 L 319.5 124 Q 334.5 124 334.5 139 L 334.5 139 Q 334.5 154 319.5 154 L 295 154 Q 280 154 280 139 L 280 139 Q 280 124 295 124 Z" fill="#2563eb" stroke="none" stroke-width="0"/><text id="chip-text-0" text-anchor="middle" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="13" font-weight="500" fill="#ffffff"><tspan x="307.25" y="139">All</tspan></text><path id="chip-bg-1" d="M 359.5 124 L 406.5 124 Q 421.5 124 421.5 139 L 421.5 139 Q 421.5 154 406.5 154 L 359.5 154 Q 344.5 154 344.5 139 L 344.5 139 Q 344.5 124 359.5 124 Z" fill="#ffffff" stroke="#cbd5e1" stroke-width="1"/><text id="chip-text-1" text-anchor="middle" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="13" font-weight="500" fill="#334155"><tspan x="383" y="139">Active</tspan></text><path id="chip-bg-2" d="M 446.5 124 L 508.5 124 Q 523.5 124 523.5 139 L 523.5 139 Q 523.5 154 508.5 154 L 446.5 154 Q 431.5 154 431.5 139 L 431.5 139 Q 431.5 124 446.5 124 Z" fill="#ffffff" stroke="#cbd5e1" stroke-width="1"/><text id="chip-text-2" text-anchor="middle" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="13" font-weight="500" fill="#334155"><tspan x="477.5" y="139">Archived</tspan></text><path id="chip-bg-3" d="M 548.5 124 L 603 124 Q 618 124 618 139 L 618 139 Q 618 154 603 154 L 548.5 154 Q 533.5 154 533.5 139 L 533.5 139 Q 533.5 124 548.5 124 Z" fill="#ffffff" stroke="#cbd5e1" stroke-width="1"/><text id="chip-text-3" text-anchor="middle" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="13" font-weight="500" fill="#334155"><tspan x="575.75" y="139">My Team</tspan></text><text id="table-caption" text-anchor="start" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="12" font-weight="400" fill="#64748b"><tspan x="280" y="188">Showing 3 of 12 projects · Sorted by last activity</tspan></text><path id="card-a-bg" d="M 288 210 L 1392 210 Q 1400 210 1400 218 L 1400 322 Q 1400 330 1392 330 L 288 330 Q 280 330 280 322 L 280 218 Q 280 210 288 210 Z" fill="#ffffff" stroke="#e2e8f0" stroke-width="1"/><text id="card-a-title" text-anchor="start" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="16" font-weight="600" fill="#1e293b"><tspan x="300" y="234">Design System v3</tspan></text><text id="card-a-body" text-anchor="start" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="13" font-weight="400" fill="#64748b"><tspan x="300" y="258.5">Component library refactor with updated tokens, accessibility</tspan><tspan x="300" y="278.65">improvements, and new layout primitives for dashboard views.</tspan></text><text id="card-a-meta" text-anchor="start" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="11" font-weight="400" fill="#94a3b8"><tspan x="300" y="313.5">Updated 2 hours ago · Sarah K.</tspan></text><path id="card-b-bg" d="M 288 346 L 1392 346 Q 1400 346 1400 354 L 1400 458 Q 1400 466 1392 466 L 288 466 Q 280 466 280 458 L 280 354 Q 280 346 288 346 Z" fill="#ffffff" stroke="#e2e8f0" stroke-width="1"/><text id="card-b-title" text-anchor="start" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="16" font-weight="600" fill="#1e293b"><tspan x="300" y="370">API Gateway Migration</tspan></text><text id="card-b-body" text-anchor="start" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="13" font-weight="400" fill="#64748b"><tspan x="300" y="394.5">Moving from the legacy REST proxy to a new GraphQL federation</tspan><tspan x="300" y="414.65">layer with per-service schema ownership and rate limiting.</tspan></text><text id="card-b-meta" text-anchor="start" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="11" font-weight="400" fill="#94a3b8"><tspan x="300" y="449.5">Updated 1 day ago · Marcus T.</tspan></text><path id="card-c-bg" d="M 288 482 L 1392 482 Q 1400 482 1400 490 L 1400 594 Q 1400 602 1392 602 L 288 602 Q 280 602 280 594 L 280 490 Q 280 482 288 482 Z" fill="#ffffff" stroke="#e2e8f0" stroke-width="1"/><text id="card-c-title" text-anchor="start" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="16" font-weight="600" fill="#1e293b"><tspan x="300" y="506">Onboarding Flow Redesign</tspan></text><text id="card-c-body" text-anchor="start" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="13" font-weight="400" fill="#64748b"><tspan x="300" y="530.5">Streamlining the first-run experience with progressive disclosure,</tspan><tspan x="300" y="550.65">reduced form fields, and contextual help tooltips.</tspan></text><text id="card-c-meta" text-anchor="start" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="11" font-weight="400" fill="#94a3b8"><tspan x="300" y="585.5">Updated 3 days ago · Priya N.</tspan></text></svg>
@@ -0,0 +1,503 @@
1
+ {
2
+ "version": 1,
3
+ "canvas": {
4
+ "width": 1440,
5
+ "height": 900,
6
+ "background": "#f1f5f9"
7
+ },
8
+ "elements": [
9
+ {
10
+ "id": "sidebar-bg",
11
+ "type": "path",
12
+ "d": "M 0 0 L 240 0 L 240 900 L 0 900 Z",
13
+ "fill": "#1e293b",
14
+ "stroke": "none"
15
+ },
16
+ {
17
+ "id": "sidebar-logo",
18
+ "type": "text",
19
+ "x": 24,
20
+ "y": 24,
21
+ "text": "Acme Studio",
22
+ "align": "left",
23
+ "valign": "top",
24
+ "fontSize": 16,
25
+ "fontFamily": "Inter, system-ui, sans-serif",
26
+ "weight": 700,
27
+ "fill": "#e2e8f0"
28
+ },
29
+ {
30
+ "id": "ws-heading",
31
+ "type": "text",
32
+ "x": 24,
33
+ "y": 72,
34
+ "text": "WORKSPACE",
35
+ "align": "left",
36
+ "valign": "top",
37
+ "fontSize": 10,
38
+ "fontFamily": "Inter, system-ui, sans-serif",
39
+ "weight": 600,
40
+ "letterSpacing": 1,
41
+ "fill": "#94a3b8"
42
+ },
43
+ {
44
+ "id": "nav-dashboard",
45
+ "type": "text",
46
+ "x": 24,
47
+ "y": 96,
48
+ "text": "Dashboard",
49
+ "align": "left",
50
+ "valign": "top",
51
+ "fontSize": 13,
52
+ "fontFamily": "Inter, system-ui, sans-serif",
53
+ "weight": 400,
54
+ "fill": "#94a3b8"
55
+ },
56
+ {
57
+ "id": "nav-projects-active-bg",
58
+ "type": "path",
59
+ "d": "M 18 126 L 222 126 Q 228 126 228 132 L 228 150 Q 228 156 222 156 L 18 156 Q 12 156 12 150 L 12 132 Q 12 126 18 126 Z",
60
+ "fill": "#334155",
61
+ "stroke": "none"
62
+ },
63
+ {
64
+ "id": "nav-projects",
65
+ "type": "text",
66
+ "x": 24,
67
+ "y": 130,
68
+ "text": "Projects",
69
+ "align": "left",
70
+ "valign": "top",
71
+ "fontSize": 13,
72
+ "fontFamily": "Inter, system-ui, sans-serif",
73
+ "weight": 500,
74
+ "fill": "#e2e8f0"
75
+ },
76
+ {
77
+ "id": "nav-projects-indicator",
78
+ "type": "path",
79
+ "d": "M 4 130 L 4 148",
80
+ "stroke": "#2563eb",
81
+ "strokeWidth": 3,
82
+ "strokeCap": "round",
83
+ "fill": "none"
84
+ },
85
+ {
86
+ "id": "nav-tasks",
87
+ "type": "text",
88
+ "x": 24,
89
+ "y": 164,
90
+ "text": "Tasks",
91
+ "align": "left",
92
+ "valign": "top",
93
+ "fontSize": 13,
94
+ "fontFamily": "Inter, system-ui, sans-serif",
95
+ "weight": 400,
96
+ "fill": "#94a3b8"
97
+ },
98
+ {
99
+ "id": "nav-calendar",
100
+ "type": "text",
101
+ "x": 24,
102
+ "y": 198,
103
+ "text": "Calendar",
104
+ "align": "left",
105
+ "valign": "top",
106
+ "fontSize": 13,
107
+ "fontFamily": "Inter, system-ui, sans-serif",
108
+ "weight": 400,
109
+ "fill": "#94a3b8"
110
+ },
111
+ {
112
+ "id": "an-heading",
113
+ "type": "text",
114
+ "x": 24,
115
+ "y": 256,
116
+ "text": "ANALYTICS",
117
+ "align": "left",
118
+ "valign": "top",
119
+ "fontSize": 10,
120
+ "fontFamily": "Inter, system-ui, sans-serif",
121
+ "weight": 600,
122
+ "letterSpacing": 1,
123
+ "fill": "#94a3b8"
124
+ },
125
+ {
126
+ "id": "nav-overview",
127
+ "type": "text",
128
+ "x": 24,
129
+ "y": 280,
130
+ "text": "Overview",
131
+ "align": "left",
132
+ "valign": "top",
133
+ "fontSize": 13,
134
+ "fontFamily": "Inter, system-ui, sans-serif",
135
+ "weight": 400,
136
+ "fill": "#94a3b8"
137
+ },
138
+ {
139
+ "id": "nav-reports",
140
+ "type": "text",
141
+ "x": 24,
142
+ "y": 314,
143
+ "text": "Reports",
144
+ "align": "left",
145
+ "valign": "top",
146
+ "fontSize": 13,
147
+ "fontFamily": "Inter, system-ui, sans-serif",
148
+ "weight": 400,
149
+ "fill": "#94a3b8"
150
+ },
151
+ {
152
+ "id": "nav-exports",
153
+ "type": "text",
154
+ "x": 24,
155
+ "y": 348,
156
+ "text": "Exports",
157
+ "align": "left",
158
+ "valign": "top",
159
+ "fontSize": 13,
160
+ "fontFamily": "Inter, system-ui, sans-serif",
161
+ "weight": 400,
162
+ "fill": "#94a3b8"
163
+ },
164
+ {
165
+ "id": "st-heading",
166
+ "type": "text",
167
+ "x": 24,
168
+ "y": 406,
169
+ "text": "SETTINGS",
170
+ "align": "left",
171
+ "valign": "top",
172
+ "fontSize": 10,
173
+ "fontFamily": "Inter, system-ui, sans-serif",
174
+ "weight": 600,
175
+ "letterSpacing": 1,
176
+ "fill": "#94a3b8"
177
+ },
178
+ {
179
+ "id": "nav-general",
180
+ "type": "text",
181
+ "x": 24,
182
+ "y": 430,
183
+ "text": "General",
184
+ "align": "left",
185
+ "valign": "top",
186
+ "fontSize": 13,
187
+ "fontFamily": "Inter, system-ui, sans-serif",
188
+ "weight": 400,
189
+ "fill": "#94a3b8"
190
+ },
191
+ {
192
+ "id": "nav-team",
193
+ "type": "text",
194
+ "x": 24,
195
+ "y": 464,
196
+ "text": "Team Members",
197
+ "align": "left",
198
+ "valign": "top",
199
+ "fontSize": 13,
200
+ "fontFamily": "Inter, system-ui, sans-serif",
201
+ "weight": 400,
202
+ "fill": "#94a3b8"
203
+ },
204
+ {
205
+ "id": "nav-billing",
206
+ "type": "text",
207
+ "x": 24,
208
+ "y": 498,
209
+ "text": "Billing",
210
+ "align": "left",
211
+ "valign": "top",
212
+ "fontSize": 13,
213
+ "fontFamily": "Inter, system-ui, sans-serif",
214
+ "weight": 400,
215
+ "fill": "#94a3b8"
216
+ },
217
+ {
218
+ "id": "nav-integrations",
219
+ "type": "text",
220
+ "x": 24,
221
+ "y": 532,
222
+ "text": "Integrations",
223
+ "align": "left",
224
+ "valign": "top",
225
+ "fontSize": 13,
226
+ "fontFamily": "Inter, system-ui, sans-serif",
227
+ "weight": 400,
228
+ "fill": "#94a3b8"
229
+ },
230
+ {
231
+ "id": "main-title",
232
+ "type": "text",
233
+ "x": 280,
234
+ "y": 32,
235
+ "text": "Projects",
236
+ "align": "left",
237
+ "valign": "top",
238
+ "fontSize": 28,
239
+ "fontFamily": "Inter, system-ui, sans-serif",
240
+ "weight": 700,
241
+ "fill": "#0f172a"
242
+ },
243
+ {
244
+ "id": "main-summary",
245
+ "type": "text",
246
+ "x": 280,
247
+ "y": 72,
248
+ "text": "Track active projects across your workspace. Filter by status or team to narrow\nresults. Each card shows the latest activity snapshot and assigned owner.",
249
+ "align": "left",
250
+ "valign": "top",
251
+ "fontSize": 14,
252
+ "fontFamily": "Inter, system-ui, sans-serif",
253
+ "weight": 400,
254
+ "lineHeight": 1.6,
255
+ "fill": "#475569",
256
+ "maxWidth": 1120
257
+ },
258
+ {
259
+ "id": "chip-bg-0",
260
+ "type": "path",
261
+ "d": "M 295 124 L 319.5 124 Q 334.5 124 334.5 139 L 334.5 139 Q 334.5 154 319.5 154 L 295 154 Q 280 154 280 139 L 280 139 Q 280 124 295 124 Z",
262
+ "fill": "#2563eb",
263
+ "stroke": "none",
264
+ "strokeWidth": 0
265
+ },
266
+ {
267
+ "id": "chip-text-0",
268
+ "type": "text",
269
+ "x": 307.25,
270
+ "y": 139,
271
+ "text": "All",
272
+ "align": "center",
273
+ "valign": "middle",
274
+ "fontSize": 13,
275
+ "fontFamily": "Inter, system-ui, sans-serif",
276
+ "weight": 500,
277
+ "fill": "#ffffff"
278
+ },
279
+ {
280
+ "id": "chip-bg-1",
281
+ "type": "path",
282
+ "d": "M 359.5 124 L 406.5 124 Q 421.5 124 421.5 139 L 421.5 139 Q 421.5 154 406.5 154 L 359.5 154 Q 344.5 154 344.5 139 L 344.5 139 Q 344.5 124 359.5 124 Z",
283
+ "fill": "#ffffff",
284
+ "stroke": "#cbd5e1",
285
+ "strokeWidth": 1
286
+ },
287
+ {
288
+ "id": "chip-text-1",
289
+ "type": "text",
290
+ "x": 383,
291
+ "y": 139,
292
+ "text": "Active",
293
+ "align": "center",
294
+ "valign": "middle",
295
+ "fontSize": 13,
296
+ "fontFamily": "Inter, system-ui, sans-serif",
297
+ "weight": 500,
298
+ "fill": "#334155"
299
+ },
300
+ {
301
+ "id": "chip-bg-2",
302
+ "type": "path",
303
+ "d": "M 446.5 124 L 508.5 124 Q 523.5 124 523.5 139 L 523.5 139 Q 523.5 154 508.5 154 L 446.5 154 Q 431.5 154 431.5 139 L 431.5 139 Q 431.5 124 446.5 124 Z",
304
+ "fill": "#ffffff",
305
+ "stroke": "#cbd5e1",
306
+ "strokeWidth": 1
307
+ },
308
+ {
309
+ "id": "chip-text-2",
310
+ "type": "text",
311
+ "x": 477.5,
312
+ "y": 139,
313
+ "text": "Archived",
314
+ "align": "center",
315
+ "valign": "middle",
316
+ "fontSize": 13,
317
+ "fontFamily": "Inter, system-ui, sans-serif",
318
+ "weight": 500,
319
+ "fill": "#334155"
320
+ },
321
+ {
322
+ "id": "chip-bg-3",
323
+ "type": "path",
324
+ "d": "M 548.5 124 L 603 124 Q 618 124 618 139 L 618 139 Q 618 154 603 154 L 548.5 154 Q 533.5 154 533.5 139 L 533.5 139 Q 533.5 124 548.5 124 Z",
325
+ "fill": "#ffffff",
326
+ "stroke": "#cbd5e1",
327
+ "strokeWidth": 1
328
+ },
329
+ {
330
+ "id": "chip-text-3",
331
+ "type": "text",
332
+ "x": 575.75,
333
+ "y": 139,
334
+ "text": "My Team",
335
+ "align": "center",
336
+ "valign": "middle",
337
+ "fontSize": 13,
338
+ "fontFamily": "Inter, system-ui, sans-serif",
339
+ "weight": 500,
340
+ "fill": "#334155"
341
+ },
342
+ {
343
+ "id": "table-caption",
344
+ "type": "text",
345
+ "x": 280,
346
+ "y": 182,
347
+ "text": "Showing 3 of 12 projects · Sorted by last activity",
348
+ "align": "left",
349
+ "valign": "top",
350
+ "fontSize": 12,
351
+ "fontFamily": "Inter, system-ui, sans-serif",
352
+ "weight": 400,
353
+ "fill": "#64748b"
354
+ },
355
+ {
356
+ "id": "card-a-bg",
357
+ "type": "path",
358
+ "d": "M 288 210 L 1392 210 Q 1400 210 1400 218 L 1400 322 Q 1400 330 1392 330 L 288 330 Q 280 330 280 322 L 280 218 Q 280 210 288 210 Z",
359
+ "fill": "#ffffff",
360
+ "stroke": "#e2e8f0",
361
+ "strokeWidth": 1
362
+ },
363
+ {
364
+ "id": "card-a-title",
365
+ "type": "text",
366
+ "x": 300,
367
+ "y": 226,
368
+ "text": "Design System v3",
369
+ "align": "left",
370
+ "valign": "top",
371
+ "fontSize": 16,
372
+ "fontFamily": "Inter, system-ui, sans-serif",
373
+ "weight": 600,
374
+ "fill": "#1e293b"
375
+ },
376
+ {
377
+ "id": "card-a-body",
378
+ "type": "text",
379
+ "x": 300,
380
+ "y": 252,
381
+ "text": "Component library refactor with updated tokens, accessibility\nimprovements, and new layout primitives for dashboard views.",
382
+ "align": "left",
383
+ "valign": "top",
384
+ "fontSize": 13,
385
+ "fontFamily": "Inter, system-ui, sans-serif",
386
+ "weight": 400,
387
+ "lineHeight": 1.55,
388
+ "fill": "#64748b",
389
+ "maxWidth": 1080
390
+ },
391
+ {
392
+ "id": "card-a-meta",
393
+ "type": "text",
394
+ "x": 300,
395
+ "y": 308,
396
+ "text": "Updated 2 hours ago · Sarah K.",
397
+ "align": "left",
398
+ "valign": "top",
399
+ "fontSize": 11,
400
+ "fontFamily": "Inter, system-ui, sans-serif",
401
+ "weight": 400,
402
+ "fill": "#94a3b8"
403
+ },
404
+ {
405
+ "id": "card-b-bg",
406
+ "type": "path",
407
+ "d": "M 288 346 L 1392 346 Q 1400 346 1400 354 L 1400 458 Q 1400 466 1392 466 L 288 466 Q 280 466 280 458 L 280 354 Q 280 346 288 346 Z",
408
+ "fill": "#ffffff",
409
+ "stroke": "#e2e8f0",
410
+ "strokeWidth": 1
411
+ },
412
+ {
413
+ "id": "card-b-title",
414
+ "type": "text",
415
+ "x": 300,
416
+ "y": 362,
417
+ "text": "API Gateway Migration",
418
+ "align": "left",
419
+ "valign": "top",
420
+ "fontSize": 16,
421
+ "fontFamily": "Inter, system-ui, sans-serif",
422
+ "weight": 600,
423
+ "fill": "#1e293b"
424
+ },
425
+ {
426
+ "id": "card-b-body",
427
+ "type": "text",
428
+ "x": 300,
429
+ "y": 388,
430
+ "text": "Moving from the legacy REST proxy to a new GraphQL federation\nlayer with per-service schema ownership and rate limiting.",
431
+ "align": "left",
432
+ "valign": "top",
433
+ "fontSize": 13,
434
+ "fontFamily": "Inter, system-ui, sans-serif",
435
+ "weight": 400,
436
+ "lineHeight": 1.55,
437
+ "fill": "#64748b",
438
+ "maxWidth": 1080
439
+ },
440
+ {
441
+ "id": "card-b-meta",
442
+ "type": "text",
443
+ "x": 300,
444
+ "y": 444,
445
+ "text": "Updated 1 day ago · Marcus T.",
446
+ "align": "left",
447
+ "valign": "top",
448
+ "fontSize": 11,
449
+ "fontFamily": "Inter, system-ui, sans-serif",
450
+ "weight": 400,
451
+ "fill": "#94a3b8"
452
+ },
453
+ {
454
+ "id": "card-c-bg",
455
+ "type": "path",
456
+ "d": "M 288 482 L 1392 482 Q 1400 482 1400 490 L 1400 594 Q 1400 602 1392 602 L 288 602 Q 280 602 280 594 L 280 490 Q 280 482 288 482 Z",
457
+ "fill": "#ffffff",
458
+ "stroke": "#e2e8f0",
459
+ "strokeWidth": 1
460
+ },
461
+ {
462
+ "id": "card-c-title",
463
+ "type": "text",
464
+ "x": 300,
465
+ "y": 498,
466
+ "text": "Onboarding Flow Redesign",
467
+ "align": "left",
468
+ "valign": "top",
469
+ "fontSize": 16,
470
+ "fontFamily": "Inter, system-ui, sans-serif",
471
+ "weight": 600,
472
+ "fill": "#1e293b"
473
+ },
474
+ {
475
+ "id": "card-c-body",
476
+ "type": "text",
477
+ "x": 300,
478
+ "y": 524,
479
+ "text": "Streamlining the first-run experience with progressive disclosure,\nreduced form fields, and contextual help tooltips.",
480
+ "align": "left",
481
+ "valign": "top",
482
+ "fontSize": 13,
483
+ "fontFamily": "Inter, system-ui, sans-serif",
484
+ "weight": 400,
485
+ "lineHeight": 1.55,
486
+ "fill": "#64748b",
487
+ "maxWidth": 1080
488
+ },
489
+ {
490
+ "id": "card-c-meta",
491
+ "type": "text",
492
+ "x": 300,
493
+ "y": 580,
494
+ "text": "Updated 3 days ago · Priya N.",
495
+ "align": "left",
496
+ "valign": "top",
497
+ "fontSize": 11,
498
+ "fontFamily": "Inter, system-ui, sans-serif",
499
+ "weight": 400,
500
+ "fill": "#94a3b8"
501
+ }
502
+ ]
503
+ }
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="1100" height="560" viewBox="0 0 1100 560" role="img"><rect x="0" y="0" width="1100" height="560" fill="#f8fafc"/><text id="page-title" text-anchor="start" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="26" font-weight="700" fill="#0f172a"><tspan x="48" y="53">Operations Dashboard</tspan></text><text id="table-title" text-anchor="start" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="16" font-weight="600" fill="#1e293b"><tspan x="48" y="92">Service Health Overview</tspan></text><path id="table-border" 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" fill="#ffffff" stroke="#e2e8f0" stroke-width="1"/><path id="header-bg" 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" fill="#f1f5f9" stroke="none" stroke-width="0"/><path id="header-border" d="M 48 156 L 1052 156" fill="none" stroke="#e2e8f0" stroke-width="1"/><text id="header-service" text-anchor="start" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="12" font-weight="600" fill="#475569"><tspan x="64" y="136">Service</tspan></text><text id="header-requests" text-anchor="end" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="12" font-weight="600" fill="#475569"><tspan x="352" y="136">Requests</tspan></text><text id="header-latency" text-anchor="end" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="12" font-weight="600" fill="#475569"><tspan x="472" y="136">Avg Latency</tspan></text><text id="header-errors" text-anchor="end" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="12" font-weight="600" fill="#475569"><tspan x="582" y="136">Error Rate</tspan></text><text id="header-uptime" text-anchor="end" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="12" font-weight="600" fill="#475569"><tspan x="682" y="136">Uptime</tspan></text><text id="header-status" text-anchor="middle" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="12" font-weight="600" fill="#475569"><tspan x="753" y="136">Status</tspan></text><path id="row-border-0" d="M 64 200 L 1036 200" fill="none" stroke="#e2e8f0" stroke-width="1"/><text id="cell-0-service" text-anchor="start" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="13" font-weight="500" fill="#334155"><tspan x="64" y="178">API Gateway</tspan></text><text id="cell-0-requests" text-anchor="end" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="13" font-weight="400" fill="#64748b"><tspan x="352" y="178">1.2M</tspan></text><text id="cell-0-latency" text-anchor="end" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="13" font-weight="400" fill="#64748b"><tspan x="472" y="178">42ms</tspan></text><text id="cell-0-errors" text-anchor="end" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="13" font-weight="400" fill="#64748b"><tspan x="582" y="178">0.02%</tspan></text><text id="cell-0-uptime" text-anchor="end" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="13" font-weight="400" fill="#64748b"><tspan x="682" y="178">99.99%</tspan></text><path id="cell-0-status-bg" 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" fill="#d1fae5" stroke="none" stroke-width="0"/><text id="cell-0-status-text" text-anchor="middle" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="11" font-weight="600" fill="#10b981"><tspan x="753" y="178">Healthy</tspan></text><path id="row-bg-1" d="M 48 200 L 1052 200 L 1052 244 L 48 244 Z" fill="#fafbfc" stroke="none" stroke-width="0"/><path id="row-border-1" d="M 64 244 L 1036 244" fill="none" stroke="#e2e8f0" stroke-width="1"/><text id="cell-1-service" text-anchor="start" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="13" font-weight="500" fill="#334155"><tspan x="64" y="222">Auth Service</tspan></text><text id="cell-1-requests" text-anchor="end" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="13" font-weight="400" fill="#64748b"><tspan x="352" y="222">890K</tspan></text><text id="cell-1-latency" text-anchor="end" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="13" font-weight="400" fill="#64748b"><tspan x="472" y="222">28ms</tspan></text><text id="cell-1-errors" text-anchor="end" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="13" font-weight="400" fill="#64748b"><tspan x="582" y="222">0.01%</tspan></text><text id="cell-1-uptime" text-anchor="end" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="13" font-weight="400" fill="#64748b"><tspan x="682" y="222">99.98%</tspan></text><path id="cell-1-status-bg" 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" fill="#d1fae5" stroke="none" stroke-width="0"/><text id="cell-1-status-text" text-anchor="middle" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="11" font-weight="600" fill="#10b981"><tspan x="753" y="222">Healthy</tspan></text><path id="row-border-2" d="M 64 288 L 1036 288" fill="none" stroke="#e2e8f0" stroke-width="1"/><text id="cell-2-service" text-anchor="start" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="13" font-weight="500" fill="#334155"><tspan x="64" y="266">User Database</tspan></text><text id="cell-2-requests" text-anchor="end" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="13" font-weight="400" fill="#64748b"><tspan x="352" y="266">2.4M</tspan></text><text id="cell-2-latency" text-anchor="end" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="13" font-weight="400" fill="#64748b"><tspan x="472" y="266">8ms</tspan></text><text id="cell-2-errors" text-anchor="end" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="13" font-weight="400" fill="#64748b"><tspan x="582" y="266">0.00%</tspan></text><text id="cell-2-uptime" text-anchor="end" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="13" font-weight="400" fill="#64748b"><tspan x="682" y="266">100%</tspan></text><path id="cell-2-status-bg" 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" fill="#d1fae5" stroke="none" stroke-width="0"/><text id="cell-2-status-text" text-anchor="middle" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="11" font-weight="600" fill="#10b981"><tspan x="753" y="266">Healthy</tspan></text><path id="row-bg-3" d="M 48 288 L 1052 288 L 1052 332 L 48 332 Z" fill="#fafbfc" stroke="none" stroke-width="0"/><path id="row-border-3" d="M 64 332 L 1036 332" fill="none" stroke="#e2e8f0" stroke-width="1"/><text id="cell-3-service" text-anchor="start" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="13" font-weight="500" fill="#334155"><tspan x="64" y="310">Cache Layer</tspan></text><text id="cell-3-requests" text-anchor="end" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="13" font-weight="400" fill="#64748b"><tspan x="352" y="310">5.1M</tspan></text><text id="cell-3-latency" text-anchor="end" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="13" font-weight="400" fill="#64748b"><tspan x="472" y="310">2ms</tspan></text><text id="cell-3-errors" text-anchor="end" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="13" font-weight="400" fill="#64748b"><tspan x="582" y="310">0.03%</tspan></text><text id="cell-3-uptime" text-anchor="end" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="13" font-weight="400" fill="#64748b"><tspan x="682" y="310">99.95%</tspan></text><path id="cell-3-status-bg" 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" fill="#fef3c7" stroke="none" stroke-width="0"/><text id="cell-3-status-text" text-anchor="middle" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="11" font-weight="600" fill="#d97706"><tspan x="753" y="310">Degraded</tspan></text><path id="row-border-4" d="M 64 376 L 1036 376" fill="none" stroke="#e2e8f0" stroke-width="1"/><text id="cell-4-service" text-anchor="start" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="13" font-weight="500" fill="#334155"><tspan x="64" y="354">Search Index</tspan></text><text id="cell-4-requests" text-anchor="end" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="13" font-weight="400" fill="#64748b"><tspan x="352" y="354">340K</tspan></text><text id="cell-4-latency" text-anchor="end" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="13" font-weight="400" fill="#64748b"><tspan x="472" y="354">156ms</tspan></text><text id="cell-4-errors" text-anchor="end" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="13" font-weight="400" fill="#64748b"><tspan x="582" y="354">1.20%</tspan></text><text id="cell-4-uptime" text-anchor="end" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="13" font-weight="400" fill="#64748b"><tspan x="682" y="354">98.50%</tspan></text><path id="cell-4-status-bg" 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" fill="#fef3c7" stroke="none" stroke-width="0"/><text id="cell-4-status-text" text-anchor="middle" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="11" font-weight="600" fill="#d97706"><tspan x="753" y="354">Warning</tspan></text><path id="row-bg-5" d="M 48 376 L 1052 376 L 1052 420 L 48 420 Z" fill="#fafbfc" stroke="none" stroke-width="0"/><text id="cell-5-service" text-anchor="start" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="13" font-weight="500" fill="#334155"><tspan x="64" y="398">Legacy Sync</tspan></text><text id="cell-5-requests" text-anchor="end" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="13" font-weight="400" fill="#64748b"><tspan x="352" y="398">45K</tspan></text><text id="cell-5-latency" text-anchor="end" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="13" font-weight="400" fill="#64748b"><tspan x="472" y="398">890ms</tspan></text><text id="cell-5-errors" text-anchor="end" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="13" font-weight="400" fill="#64748b"><tspan x="582" y="398">4.50%</tspan></text><text id="cell-5-uptime" text-anchor="end" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="13" font-weight="400" fill="#64748b"><tspan x="682" y="398">94.20%</tspan></text><path id="cell-5-status-bg" 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" fill="#fee2e2" stroke="none" stroke-width="0"/><text id="cell-5-status-text" text-anchor="middle" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="11" font-weight="600" fill="#dc2626"><tspan x="753" y="398">Critical</tspan></text></svg>