sketchmark 2.1.0 → 2.1.2
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.
- package/package.json +1 -7
- package/ANIMATABLE_MATRIX.md +0 -177
- package/KERNEL_SPEC.md +0 -412
- package/PACKS.md +0 -81
- package/PRESETS.md +0 -182
- package/dist/src/builders/index.d.ts +0 -64
- package/dist/src/builders/index.js +0 -212
- package/dist/src/compounds.d.ts +0 -13
- package/dist/src/compounds.js +0 -118
- package/dist/src/deck.d.ts +0 -4
- package/dist/src/deck.js +0 -91
- package/dist/src/export/index.d.ts +0 -8
- package/dist/src/export/index.js +0 -15
- package/dist/src/kernel.d.ts +0 -8
- package/dist/src/kernel.js +0 -68
- package/dist/src/motion.d.ts +0 -4
- package/dist/src/motion.js +0 -262
- package/dist/src/patch.d.ts +0 -5
- package/dist/src/patch.js +0 -72
- package/dist/src/player/index.d.ts +0 -68
- package/dist/src/player/index.js +0 -600
- package/dist/src/project.d.ts +0 -11
- package/dist/src/project.js +0 -107
- package/dist/src/render/raw-three.d.ts +0 -7
- package/dist/src/render/raw-three.js +0 -17
- package/dist/src/render/three-html.d.ts +0 -2
- package/dist/src/render/three-html.js +0 -257
- package/dist/src/render/three-preview-svg.d.ts +0 -3
- package/dist/src/render/three-preview-svg.js +0 -102
- package/dist/src/scenes.d.ts +0 -4
- package/dist/src/scenes.js +0 -26
- package/dist/src/sequences.d.ts +0 -43
- package/dist/src/sequences.js +0 -109
- package/dist/src/shapes/builtins.d.ts +0 -2
- package/dist/src/shapes/builtins.js +0 -393
- package/dist/src/shapes/common.d.ts +0 -9
- package/dist/src/shapes/common.js +0 -76
- package/dist/src/shapes/geometry.d.ts +0 -22
- package/dist/src/shapes/geometry.js +0 -166
- package/dist/src/shapes/index.d.ts +0 -2
- package/dist/src/shapes/index.js +0 -18
- package/dist/src/shapes/registry.d.ts +0 -8
- package/dist/src/shapes/registry.js +0 -31
- package/dist/src/shapes/types.d.ts +0 -32
- package/dist/src/shapes/types.js +0 -2
- package/examples/1730642890464.jpg +0 -0
- package/examples/app-screen.svg +0 -1
- package/examples/app-screen.visual.json +0 -503
- package/examples/dashboard-table.svg +0 -1
- package/examples/dashboard-table.visual.json +0 -708
- package/examples/dev-docs.svg +0 -1
- package/examples/dev-docs.visual.json +0 -248
- package/examples/explainer.mp4 +0 -0
- package/examples/explainer.visual.json +0 -1713
- package/examples/group-origin-effects-lab-check.svg +0 -1
- package/examples/group-origin-effects-lab.visual.json +0 -1880
- package/examples/image-clip-radius.visual.json +0 -271
- package/examples/make-app-screen.cjs +0 -368
- package/examples/make-dashboard-table.cjs +0 -277
- package/examples/make-dev-docs.cjs +0 -233
- package/examples/make-explainer.cjs +0 -438
- package/examples/make-group-origin-effects-lab.cjs +0 -370
- package/examples/make-image-clip-radius.cjs +0 -169
- package/examples/make-modal-dialog.cjs +0 -355
- package/examples/make-origin-effects-lab.cjs +0 -311
- package/examples/make-preset-character-motion.cjs +0 -32
- package/examples/make-presets-demo.cjs +0 -30
- package/examples/make-pricing.cjs +0 -286
- package/examples/make-product-demo.cjs +0 -468
- package/examples/make-product-hero.cjs +0 -223
- package/examples/make-release-notes.cjs +0 -333
- package/examples/make-settings-panel.cjs +0 -435
- package/examples/make-split-preview.cjs +0 -248
- package/examples/make-storyboard.cjs +0 -215
- package/examples/make-transcript.cjs +0 -234
- package/examples/make-typography-test.cjs +0 -397
- package/examples/make-ui-demo-explainer.cjs +0 -1094
- package/examples/make-ui-flow.cjs +0 -762
- package/examples/make-walkthrough.cjs +0 -815
- package/examples/modal-dialog.svg +0 -1
- package/examples/modal-dialog.visual.json +0 -239
- package/examples/origin-effects-lab-check.svg +0 -1
- package/examples/origin-effects-lab.visual.json +0 -1412
- package/examples/preset-character-motion.visual.json +0 -949
- package/examples/presets-demo.visual.json +0 -787
- package/examples/pricing.svg +0 -1
- package/examples/pricing.visual.json +0 -652
- package/examples/product-demo.mp4 +0 -0
- package/examples/product-demo.visual.json +0 -866
- package/examples/product-hero.svg +0 -1
- package/examples/product-hero.visual.json +0 -242
- package/examples/release-notes.svg +0 -1
- package/examples/release-notes.visual.json +0 -467
- package/examples/settings-panel.svg +0 -1
- package/examples/settings-panel.visual.json +0 -501
- package/examples/split-preview.svg +0 -1
- package/examples/split-preview.visual.json +0 -124
- package/examples/storyboard.svg +0 -1
- package/examples/storyboard.visual.json +0 -312
- package/examples/transcript.svg +0 -1
- package/examples/transcript.visual.json +0 -407
- package/examples/typography-indent-check.svg +0 -1
- package/examples/typography-lineheight-0.svg +0 -1
- package/examples/typography-lineheight-2.svg +0 -1
- package/examples/typography-test-check.svg +0 -1
- package/examples/typography-test.svg +0 -1
- package/examples/typography-test.visual.json +0 -757
- package/examples/ui-demo-explainer-billing.svg +0 -1
- package/examples/ui-demo-explainer-check.svg +0 -1
- package/examples/ui-demo-explainer-save.svg +0 -1
- package/examples/ui-demo-explainer-toggle.svg +0 -1
- package/examples/ui-demo-explainer.mp4 +0 -0
- package/examples/ui-demo-explainer.visual.json +0 -2597
- package/examples/ui-flow.mp4 +0 -0
- package/examples/ui-flow.visual.json +0 -1211
- package/examples/walkthrough.mp4 +0 -0
- package/examples/walkthrough.visual.json +0 -1372
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="800" height="600" viewBox="0 0 800 600" role="img"><defs><filter id="sketchmark-filter-0" x="-50%" y="-50%" width="200%" height="200%"><feDropShadow dx="0" dy="8" stdDeviation="32" flood-color="#000000" flood-opacity="0.15"/></filter></defs><rect x="0" y="0" width="800" height="600" fill="#64748b"/><path id="overlay" opacity="0.5" d="M 0 0 L 800 0 L 800 600 L 0 600 Z" fill="#0f172a" stroke="none" stroke-width="0"/><path id="modal-bg" filter="url(#sketchmark-filter-0)" d="M 152 60 L 648 60 Q 660 60 660 72 L 660 528 Q 660 540 648 540 L 152 540 Q 140 540 140 528 L 140 72 Q 140 60 152 60 Z" fill="#ffffff" stroke="#e2e8f0" stroke-width="1"/><text id="modal-title" text-anchor="start" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="20" font-weight="700" fill="#0f172a"><tspan x="168" y="98">Delete Project</tspan></text><text id="modal-desc" text-anchor="start" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="14" font-weight="400" fill="#475569"><tspan x="168" y="127">This action will permanently remove the project and all associated</tspan><tspan x="168" y="148.7">data. This cannot be undone.</tspan></text><path id="warning-bg" d="M 174 176 L 626 176 Q 632 176 632 182 L 632 226 Q 632 232 626 232 L 174 232 Q 168 232 168 226 L 168 182 Q 168 176 174 176 Z" fill="#fef2f2" stroke="#fecaca" stroke-width="1"/><text id="warning-text" text-anchor="start" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="12" font-weight="500" fill="#991b1b"><tspan x="182" y="196">Warning: 3 team members will lose access immediately. Any</tspan><tspan x="182" y="214">active integrations connected to this project will stop working.</tspan></text><text id="field1-label" text-anchor="start" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="13" font-weight="600" fill="#1e293b"><tspan x="168" y="262.5">Project Name</tspan></text><text id="field1-helper" text-anchor="start" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="12" font-weight="400" fill="#64748b"><tspan x="168" y="284">Enter the project name exactly as shown to confirm deletion.</tspan><tspan x="168" y="302">This helps prevent accidental removal of important data.</tspan></text><path id="field1-input-bg" d="M 174 320 L 626 320 Q 632 320 632 326 L 632 352 Q 632 358 626 358 L 174 358 Q 168 358 168 352 L 168 326 Q 168 320 174 320 Z" fill="#ffffff" stroke="#cbd5e1" stroke-width="1"/><text id="field1-placeholder" text-anchor="start" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="13" font-weight="400" fill="#94a3b8"><tspan x="180" y="339">acme-dashboard-v2</tspan></text><text id="field2-label" text-anchor="start" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="13" font-weight="600" fill="#1e293b"><tspan x="168" y="384.5">Confirmation Phrase</tspan></text><text id="field2-helper" text-anchor="start" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="12" font-weight="400" fill="#64748b"><tspan x="168" y="406">Type "delete my project" to enable the delete button.</tspan></text><path id="field2-input-bg" d="M 174 426 L 626 426 Q 632 426 632 432 L 632 458 Q 632 464 626 464 L 174 464 Q 168 464 168 458 L 168 432 Q 168 426 174 426 Z" fill="#ffffff" stroke="#cbd5e1" stroke-width="1"/><text id="field2-placeholder" text-anchor="start" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="13" font-weight="400" fill="#94a3b8"><tspan x="180" y="445">delete my project</tspan></text><path id="footer-bg" d="M 140 472 L 660 472 L 660 528 Q 660 540 648 540 L 152 540 Q 140 540 140 528 Z" fill="#f8fafc" stroke="none" stroke-width="0"/><path id="footer-border" d="M 140 472 L 660 472" fill="none" stroke="#e2e8f0" stroke-width="1"/><path id="btn-cancel-bg" d="M 426 487 L 494 487 Q 500 487 500 493 L 500 519 Q 500 525 494 525 L 426 525 Q 420 525 420 519 L 420 493 Q 420 487 426 487 Z" fill="#ffffff" stroke="#cbd5e1" stroke-width="1"/><text id="btn-cancel-label" text-anchor="middle" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="13" font-weight="500" fill="#475569"><tspan x="460" y="506">Cancel</tspan></text><path id="btn-delete-bg" d="M 518 487 L 626 487 Q 632 487 632 493 L 632 519 Q 632 525 626 525 L 518 525 Q 512 525 512 519 L 512 493 Q 512 487 518 487 Z" fill="#dc2626" stroke="none" stroke-width="0"/><text id="btn-delete-label" text-anchor="middle" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="13" font-weight="600" fill="#ffffff"><tspan x="572" y="506">Delete Project</tspan></text></svg>
|
|
@@ -1,239 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 1,
|
|
3
|
-
"canvas": {
|
|
4
|
-
"width": 800,
|
|
5
|
-
"height": 600,
|
|
6
|
-
"background": "#64748b"
|
|
7
|
-
},
|
|
8
|
-
"elements": [
|
|
9
|
-
{
|
|
10
|
-
"id": "overlay",
|
|
11
|
-
"type": "path",
|
|
12
|
-
"d": "M 0 0 L 800 0 L 800 600 L 0 600 Z",
|
|
13
|
-
"fill": "#0f172a",
|
|
14
|
-
"opacity": 0.5,
|
|
15
|
-
"stroke": "none"
|
|
16
|
-
},
|
|
17
|
-
{
|
|
18
|
-
"id": "modal-bg",
|
|
19
|
-
"type": "path",
|
|
20
|
-
"d": "M 152 60 L 648 60 Q 660 60 660 72 L 660 528 Q 660 540 648 540 L 152 540 Q 140 540 140 528 L 140 72 Q 140 60 152 60 Z",
|
|
21
|
-
"fill": "#ffffff",
|
|
22
|
-
"stroke": "#e2e8f0",
|
|
23
|
-
"strokeWidth": 1,
|
|
24
|
-
"effects": {
|
|
25
|
-
"shadow": {
|
|
26
|
-
"dx": 0,
|
|
27
|
-
"dy": 8,
|
|
28
|
-
"blur": 32,
|
|
29
|
-
"color": "#000000",
|
|
30
|
-
"opacity": 0.15
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
},
|
|
34
|
-
{
|
|
35
|
-
"id": "modal-title",
|
|
36
|
-
"type": "text",
|
|
37
|
-
"x": 168,
|
|
38
|
-
"y": 88,
|
|
39
|
-
"text": "Delete Project",
|
|
40
|
-
"align": "left",
|
|
41
|
-
"valign": "top",
|
|
42
|
-
"fontSize": 20,
|
|
43
|
-
"fontFamily": "Inter, system-ui, sans-serif",
|
|
44
|
-
"weight": 700,
|
|
45
|
-
"fill": "#0f172a"
|
|
46
|
-
},
|
|
47
|
-
{
|
|
48
|
-
"id": "modal-desc",
|
|
49
|
-
"type": "text",
|
|
50
|
-
"x": 168,
|
|
51
|
-
"y": 120,
|
|
52
|
-
"text": "This action will permanently remove the project and all associated\ndata. This cannot be undone.",
|
|
53
|
-
"align": "left",
|
|
54
|
-
"valign": "top",
|
|
55
|
-
"fontSize": 14,
|
|
56
|
-
"fontFamily": "Inter, system-ui, sans-serif",
|
|
57
|
-
"weight": 400,
|
|
58
|
-
"lineHeight": 1.55,
|
|
59
|
-
"fill": "#475569",
|
|
60
|
-
"maxWidth": 464
|
|
61
|
-
},
|
|
62
|
-
{
|
|
63
|
-
"id": "warning-bg",
|
|
64
|
-
"type": "path",
|
|
65
|
-
"d": "M 174 176 L 626 176 Q 632 176 632 182 L 632 226 Q 632 232 626 232 L 174 232 Q 168 232 168 226 L 168 182 Q 168 176 174 176 Z",
|
|
66
|
-
"fill": "#fef2f2",
|
|
67
|
-
"stroke": "#fecaca",
|
|
68
|
-
"strokeWidth": 1
|
|
69
|
-
},
|
|
70
|
-
{
|
|
71
|
-
"id": "warning-text",
|
|
72
|
-
"type": "text",
|
|
73
|
-
"x": 182,
|
|
74
|
-
"y": 190,
|
|
75
|
-
"text": "Warning: 3 team members will lose access immediately. Any\nactive integrations connected to this project will stop working.",
|
|
76
|
-
"align": "left",
|
|
77
|
-
"valign": "top",
|
|
78
|
-
"fontSize": 12,
|
|
79
|
-
"fontFamily": "Inter, system-ui, sans-serif",
|
|
80
|
-
"weight": 500,
|
|
81
|
-
"lineHeight": 1.5,
|
|
82
|
-
"fill": "#991b1b",
|
|
83
|
-
"maxWidth": 436
|
|
84
|
-
},
|
|
85
|
-
{
|
|
86
|
-
"id": "field1-label",
|
|
87
|
-
"type": "text",
|
|
88
|
-
"x": 168,
|
|
89
|
-
"y": 256,
|
|
90
|
-
"text": "Project Name",
|
|
91
|
-
"align": "left",
|
|
92
|
-
"valign": "top",
|
|
93
|
-
"fontSize": 13,
|
|
94
|
-
"fontFamily": "Inter, system-ui, sans-serif",
|
|
95
|
-
"weight": 600,
|
|
96
|
-
"fill": "#1e293b"
|
|
97
|
-
},
|
|
98
|
-
{
|
|
99
|
-
"id": "field1-helper",
|
|
100
|
-
"type": "text",
|
|
101
|
-
"x": 168,
|
|
102
|
-
"y": 278,
|
|
103
|
-
"text": "Enter the project name exactly as shown to confirm deletion.\nThis helps prevent accidental removal of important data.",
|
|
104
|
-
"align": "left",
|
|
105
|
-
"valign": "top",
|
|
106
|
-
"fontSize": 12,
|
|
107
|
-
"fontFamily": "Inter, system-ui, sans-serif",
|
|
108
|
-
"weight": 400,
|
|
109
|
-
"lineHeight": 1.5,
|
|
110
|
-
"fill": "#64748b",
|
|
111
|
-
"maxWidth": 464
|
|
112
|
-
},
|
|
113
|
-
{
|
|
114
|
-
"id": "field1-input-bg",
|
|
115
|
-
"type": "path",
|
|
116
|
-
"d": "M 174 320 L 626 320 Q 632 320 632 326 L 632 352 Q 632 358 626 358 L 174 358 Q 168 358 168 352 L 168 326 Q 168 320 174 320 Z",
|
|
117
|
-
"fill": "#ffffff",
|
|
118
|
-
"stroke": "#cbd5e1",
|
|
119
|
-
"strokeWidth": 1
|
|
120
|
-
},
|
|
121
|
-
{
|
|
122
|
-
"id": "field1-placeholder",
|
|
123
|
-
"type": "text",
|
|
124
|
-
"x": 180,
|
|
125
|
-
"y": 339,
|
|
126
|
-
"text": "acme-dashboard-v2",
|
|
127
|
-
"align": "left",
|
|
128
|
-
"valign": "middle",
|
|
129
|
-
"fontSize": 13,
|
|
130
|
-
"fontFamily": "Inter, system-ui, sans-serif",
|
|
131
|
-
"weight": 400,
|
|
132
|
-
"fill": "#94a3b8"
|
|
133
|
-
},
|
|
134
|
-
{
|
|
135
|
-
"id": "field2-label",
|
|
136
|
-
"type": "text",
|
|
137
|
-
"x": 168,
|
|
138
|
-
"y": 378,
|
|
139
|
-
"text": "Confirmation Phrase",
|
|
140
|
-
"align": "left",
|
|
141
|
-
"valign": "top",
|
|
142
|
-
"fontSize": 13,
|
|
143
|
-
"fontFamily": "Inter, system-ui, sans-serif",
|
|
144
|
-
"weight": 600,
|
|
145
|
-
"fill": "#1e293b"
|
|
146
|
-
},
|
|
147
|
-
{
|
|
148
|
-
"id": "field2-helper",
|
|
149
|
-
"type": "text",
|
|
150
|
-
"x": 168,
|
|
151
|
-
"y": 400,
|
|
152
|
-
"text": "Type \"delete my project\" to enable the delete button.",
|
|
153
|
-
"align": "left",
|
|
154
|
-
"valign": "top",
|
|
155
|
-
"fontSize": 12,
|
|
156
|
-
"fontFamily": "Inter, system-ui, sans-serif",
|
|
157
|
-
"weight": 400,
|
|
158
|
-
"fill": "#64748b",
|
|
159
|
-
"maxWidth": 464
|
|
160
|
-
},
|
|
161
|
-
{
|
|
162
|
-
"id": "field2-input-bg",
|
|
163
|
-
"type": "path",
|
|
164
|
-
"d": "M 174 426 L 626 426 Q 632 426 632 432 L 632 458 Q 632 464 626 464 L 174 464 Q 168 464 168 458 L 168 432 Q 168 426 174 426 Z",
|
|
165
|
-
"fill": "#ffffff",
|
|
166
|
-
"stroke": "#cbd5e1",
|
|
167
|
-
"strokeWidth": 1
|
|
168
|
-
},
|
|
169
|
-
{
|
|
170
|
-
"id": "field2-placeholder",
|
|
171
|
-
"type": "text",
|
|
172
|
-
"x": 180,
|
|
173
|
-
"y": 445,
|
|
174
|
-
"text": "delete my project",
|
|
175
|
-
"align": "left",
|
|
176
|
-
"valign": "middle",
|
|
177
|
-
"fontSize": 13,
|
|
178
|
-
"fontFamily": "Inter, system-ui, sans-serif",
|
|
179
|
-
"weight": 400,
|
|
180
|
-
"fill": "#94a3b8"
|
|
181
|
-
},
|
|
182
|
-
{
|
|
183
|
-
"id": "footer-bg",
|
|
184
|
-
"type": "path",
|
|
185
|
-
"d": "M 140 472 L 660 472 L 660 528 Q 660 540 648 540 L 152 540 Q 140 540 140 528 Z",
|
|
186
|
-
"fill": "#f8fafc",
|
|
187
|
-
"stroke": "none"
|
|
188
|
-
},
|
|
189
|
-
{
|
|
190
|
-
"id": "footer-border",
|
|
191
|
-
"type": "path",
|
|
192
|
-
"d": "M 140 472 L 660 472",
|
|
193
|
-
"stroke": "#e2e8f0",
|
|
194
|
-
"strokeWidth": 1,
|
|
195
|
-
"fill": "none"
|
|
196
|
-
},
|
|
197
|
-
{
|
|
198
|
-
"id": "btn-cancel-bg",
|
|
199
|
-
"type": "path",
|
|
200
|
-
"d": "M 426 487 L 494 487 Q 500 487 500 493 L 500 519 Q 500 525 494 525 L 426 525 Q 420 525 420 519 L 420 493 Q 420 487 426 487 Z",
|
|
201
|
-
"fill": "#ffffff",
|
|
202
|
-
"stroke": "#cbd5e1",
|
|
203
|
-
"strokeWidth": 1
|
|
204
|
-
},
|
|
205
|
-
{
|
|
206
|
-
"id": "btn-cancel-label",
|
|
207
|
-
"type": "text",
|
|
208
|
-
"x": 460,
|
|
209
|
-
"y": 506,
|
|
210
|
-
"text": "Cancel",
|
|
211
|
-
"align": "center",
|
|
212
|
-
"valign": "middle",
|
|
213
|
-
"fontSize": 13,
|
|
214
|
-
"fontFamily": "Inter, system-ui, sans-serif",
|
|
215
|
-
"weight": 500,
|
|
216
|
-
"fill": "#475569"
|
|
217
|
-
},
|
|
218
|
-
{
|
|
219
|
-
"id": "btn-delete-bg",
|
|
220
|
-
"type": "path",
|
|
221
|
-
"d": "M 518 487 L 626 487 Q 632 487 632 493 L 632 519 Q 632 525 626 525 L 518 525 Q 512 525 512 519 L 512 493 Q 512 487 518 487 Z",
|
|
222
|
-
"fill": "#dc2626",
|
|
223
|
-
"stroke": "none"
|
|
224
|
-
},
|
|
225
|
-
{
|
|
226
|
-
"id": "btn-delete-label",
|
|
227
|
-
"type": "text",
|
|
228
|
-
"x": 572,
|
|
229
|
-
"y": 506,
|
|
230
|
-
"text": "Delete Project",
|
|
231
|
-
"align": "center",
|
|
232
|
-
"valign": "middle",
|
|
233
|
-
"fontSize": 13,
|
|
234
|
-
"fontFamily": "Inter, system-ui, sans-serif",
|
|
235
|
-
"weight": 600,
|
|
236
|
-
"fill": "#ffffff"
|
|
237
|
-
}
|
|
238
|
-
]
|
|
239
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="1280" height="760" viewBox="0 0 1280 760" role="img"><rect x="0" y="0" width="1280" height="760" fill="#07111f"/><text id="lab_title" text-anchor="start" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="38" font-weight="700" fill="#f8fafc"><tspan x="70" y="71">Origin Transform Lab</tspan></text><text id="lab_body" text-anchor="start" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="16" font-weight="400" fill="#94a3b8"><tspan x="70" y="104">Same rounded rectangle, animated as a group. Only the origin changes.</tspan></text><text id="scale_row_label" text-anchor="start" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="18" font-weight="700" fill="#7dd3fc"><tspan x="70" y="131">Scale tests</tspan></text><text id="rotate_row_label" text-anchor="start" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="18" font-weight="700" fill="#7dd3fc"><tspan x="70" y="406">Rotation tests</tspan></text><path id="scale_top_left_panel" d="M 92 150 L 318 150 Q 340 150 340 172 L 340 368 Q 340 390 318 390 L 92 390 Q 70 390 70 368 L 70 172 Q 70 150 92 150 Z" fill="#0d1a2e" stroke="#193252" stroke-width="1.5"/><text id="scale_top_left_title" text-anchor="start" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="16" font-weight="700" fill="#f8fafc"><tspan x="90" y="176">Top-left origin</tspan></text><text id="scale_top_left_note" text-anchor="start" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="12" font-weight="500" fill="#94a3b8"><tspan x="90" y="198">[0, 0]</tspan></text><path id="scale_top_left_guide_h" d="M 90 298 L 320 298" fill="none" stroke="#173054" stroke-width="1" stroke-dasharray="6 6"/><path id="scale_top_left_guide_v" d="M 208 218 L 208 370" fill="none" stroke="#173054" stroke-width="1" stroke-dasharray="6 6"/><g id="scale_top_left_origin" transform="translate(128 248)"><path id="scale_top_left_origin_cross_h" d="M -16 0 L 16 0" fill="none" stroke="#fde047" stroke-width="2" stroke-linecap="round"/><path id="scale_top_left_origin_cross_v" d="M 0 -16 L 0 16" fill="none" stroke="#fde047" stroke-width="2" stroke-linecap="round"/><path id="scale_top_left_origin_dot" d="M -6 0 a 6 6 0 1 0 12 0 a 6 6 0 1 0 -12 0" fill="#fde047" stroke="#0f172a" stroke-width="1.5"/></g><g id="scale_top_left_group" transform="translate(128 248) translate(0 0) scale(0.9681869211307477 0.9681869211307477) translate(0 0)"><path id="scale_top_left_rect" d="M 18 0 L 142 0 Q 160 0 160 18 L 160 82 Q 160 100 142 100 L 18 100 Q 0 100 0 82 L 0 18 Q 0 0 18 0 Z" fill="#818cf8" stroke="#dbeafe" stroke-width="2"/></g><path id="rotate_top_left_panel" d="M 92 435 L 318 435 Q 340 435 340 457 L 340 653 Q 340 675 318 675 L 92 675 Q 70 675 70 653 L 70 457 Q 70 435 92 435 Z" fill="#0d1a2e" stroke="#193252" stroke-width="1.5"/><text id="rotate_top_left_title" text-anchor="start" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="16" font-weight="700" fill="#f8fafc"><tspan x="90" y="461">Top-left origin</tspan></text><text id="rotate_top_left_note" text-anchor="start" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="12" font-weight="500" fill="#94a3b8"><tspan x="90" y="483">[0, 0]</tspan></text><path id="rotate_top_left_guide_h" d="M 90 583 L 320 583" fill="none" stroke="#173054" stroke-width="1" stroke-dasharray="6 6"/><path id="rotate_top_left_guide_v" d="M 208 503 L 208 655" fill="none" stroke="#173054" stroke-width="1" stroke-dasharray="6 6"/><g id="rotate_top_left_origin" transform="translate(128 533)"><path id="rotate_top_left_origin_cross_h" d="M -16 0 L 16 0" fill="none" stroke="#fde047" stroke-width="2" stroke-linecap="round"/><path id="rotate_top_left_origin_cross_v" d="M 0 -16 L 0 16" fill="none" stroke="#fde047" stroke-width="2" stroke-linecap="round"/><path id="rotate_top_left_origin_dot" d="M -6 0 a 6 6 0 1 0 12 0 a 6 6 0 1 0 -12 0" fill="#fde047" stroke="#0f172a" stroke-width="1.5"/></g><g id="rotate_top_left_group" transform="translate(128 533) rotate(21.33289850236273 0 0)"><path id="rotate_top_left_rect" d="M 18 0 L 142 0 Q 160 0 160 18 L 160 82 Q 160 100 142 100 L 18 100 Q 0 100 0 82 L 0 18 Q 0 0 18 0 Z" fill="#818cf8" stroke="#dbeafe" stroke-width="2"/></g><path id="scale_center_panel" d="M 387 150 L 613 150 Q 635 150 635 172 L 635 368 Q 635 390 613 390 L 387 390 Q 365 390 365 368 L 365 172 Q 365 150 387 150 Z" fill="#0d1a2e" stroke="#193252" stroke-width="1.5"/><text id="scale_center_title" text-anchor="start" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="16" font-weight="700" fill="#f8fafc"><tspan x="385" y="176">Center origin</tspan></text><text id="scale_center_note" text-anchor="start" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="12" font-weight="500" fill="#94a3b8"><tspan x="385" y="198">[80, 50]</tspan></text><path id="scale_center_guide_h" d="M 385 298 L 615 298" fill="none" stroke="#173054" stroke-width="1" stroke-dasharray="6 6"/><path id="scale_center_guide_v" d="M 503 218 L 503 370" fill="none" stroke="#173054" stroke-width="1" stroke-dasharray="6 6"/><g id="scale_center_origin" transform="translate(503 298)"><path id="scale_center_origin_cross_h" d="M -16 0 L 16 0" fill="none" stroke="#fde047" stroke-width="2" stroke-linecap="round"/><path id="scale_center_origin_cross_v" d="M 0 -16 L 0 16" fill="none" stroke="#fde047" stroke-width="2" stroke-linecap="round"/><path id="scale_center_origin_dot" d="M -6 0 a 6 6 0 1 0 12 0 a 6 6 0 1 0 -12 0" fill="#fde047" stroke="#0f172a" stroke-width="1.5"/></g><g id="scale_center_group" transform="translate(423 248) translate(80 50) scale(0.9681869211307477 0.9681869211307477) translate(-80 -50)"><path id="scale_center_rect" d="M 18 0 L 142 0 Q 160 0 160 18 L 160 82 Q 160 100 142 100 L 18 100 Q 0 100 0 82 L 0 18 Q 0 0 18 0 Z" fill="#38bdf8" stroke="#dbeafe" stroke-width="2"/></g><path id="rotate_center_panel" d="M 387 435 L 613 435 Q 635 435 635 457 L 635 653 Q 635 675 613 675 L 387 675 Q 365 675 365 653 L 365 457 Q 365 435 387 435 Z" fill="#0d1a2e" stroke="#193252" stroke-width="1.5"/><text id="rotate_center_title" text-anchor="start" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="16" font-weight="700" fill="#f8fafc"><tspan x="385" y="461">Center origin</tspan></text><text id="rotate_center_note" text-anchor="start" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="12" font-weight="500" fill="#94a3b8"><tspan x="385" y="483">[80, 50]</tspan></text><path id="rotate_center_guide_h" d="M 385 583 L 615 583" fill="none" stroke="#173054" stroke-width="1" stroke-dasharray="6 6"/><path id="rotate_center_guide_v" d="M 503 503 L 503 655" fill="none" stroke="#173054" stroke-width="1" stroke-dasharray="6 6"/><g id="rotate_center_origin" transform="translate(503 583)"><path id="rotate_center_origin_cross_h" d="M -16 0 L 16 0" fill="none" stroke="#fde047" stroke-width="2" stroke-linecap="round"/><path id="rotate_center_origin_cross_v" d="M 0 -16 L 0 16" fill="none" stroke="#fde047" stroke-width="2" stroke-linecap="round"/><path id="rotate_center_origin_dot" d="M -6 0 a 6 6 0 1 0 12 0 a 6 6 0 1 0 -12 0" fill="#fde047" stroke="#0f172a" stroke-width="1.5"/></g><g id="rotate_center_group" transform="translate(423 533) rotate(21.33289850236273 80 50)"><path id="rotate_center_rect" d="M 18 0 L 142 0 Q 160 0 160 18 L 160 82 Q 160 100 142 100 L 18 100 Q 0 100 0 82 L 0 18 Q 0 0 18 0 Z" fill="#38bdf8" stroke="#dbeafe" stroke-width="2"/></g><path id="scale_bottom_right_panel" d="M 682 150 L 908 150 Q 930 150 930 172 L 930 368 Q 930 390 908 390 L 682 390 Q 660 390 660 368 L 660 172 Q 660 150 682 150 Z" fill="#0d1a2e" stroke="#193252" stroke-width="1.5"/><text id="scale_bottom_right_title" text-anchor="start" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="16" font-weight="700" fill="#f8fafc"><tspan x="680" y="176">Bottom-right origin</tspan></text><text id="scale_bottom_right_note" text-anchor="start" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="12" font-weight="500" fill="#94a3b8"><tspan x="680" y="198">[160, 100]</tspan></text><path id="scale_bottom_right_guide_h" d="M 680 298 L 910 298" fill="none" stroke="#173054" stroke-width="1" stroke-dasharray="6 6"/><path id="scale_bottom_right_guide_v" d="M 798 218 L 798 370" fill="none" stroke="#173054" stroke-width="1" stroke-dasharray="6 6"/><g id="scale_bottom_right_origin" transform="translate(878 348)"><path id="scale_bottom_right_origin_cross_h" d="M -16 0 L 16 0" fill="none" stroke="#fde047" stroke-width="2" stroke-linecap="round"/><path id="scale_bottom_right_origin_cross_v" d="M 0 -16 L 0 16" fill="none" stroke="#fde047" stroke-width="2" stroke-linecap="round"/><path id="scale_bottom_right_origin_dot" d="M -6 0 a 6 6 0 1 0 12 0 a 6 6 0 1 0 -12 0" fill="#fde047" stroke="#0f172a" stroke-width="1.5"/></g><g id="scale_bottom_right_group" transform="translate(718 248) translate(160 100) scale(0.9681869211307477 0.9681869211307477) translate(-160 -100)"><path id="scale_bottom_right_rect" d="M 18 0 L 142 0 Q 160 0 160 18 L 160 82 Q 160 100 142 100 L 18 100 Q 0 100 0 82 L 0 18 Q 0 0 18 0 Z" fill="#22c55e" stroke="#dbeafe" stroke-width="2"/></g><path id="rotate_bottom_right_panel" d="M 682 435 L 908 435 Q 930 435 930 457 L 930 653 Q 930 675 908 675 L 682 675 Q 660 675 660 653 L 660 457 Q 660 435 682 435 Z" fill="#0d1a2e" stroke="#193252" stroke-width="1.5"/><text id="rotate_bottom_right_title" text-anchor="start" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="16" font-weight="700" fill="#f8fafc"><tspan x="680" y="461">Bottom-right origin</tspan></text><text id="rotate_bottom_right_note" text-anchor="start" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="12" font-weight="500" fill="#94a3b8"><tspan x="680" y="483">[160, 100]</tspan></text><path id="rotate_bottom_right_guide_h" d="M 680 583 L 910 583" fill="none" stroke="#173054" stroke-width="1" stroke-dasharray="6 6"/><path id="rotate_bottom_right_guide_v" d="M 798 503 L 798 655" fill="none" stroke="#173054" stroke-width="1" stroke-dasharray="6 6"/><g id="rotate_bottom_right_origin" transform="translate(878 633)"><path id="rotate_bottom_right_origin_cross_h" d="M -16 0 L 16 0" fill="none" stroke="#fde047" stroke-width="2" stroke-linecap="round"/><path id="rotate_bottom_right_origin_cross_v" d="M 0 -16 L 0 16" fill="none" stroke="#fde047" stroke-width="2" stroke-linecap="round"/><path id="rotate_bottom_right_origin_dot" d="M -6 0 a 6 6 0 1 0 12 0 a 6 6 0 1 0 -12 0" fill="#fde047" stroke="#0f172a" stroke-width="1.5"/></g><g id="rotate_bottom_right_group" transform="translate(718 533) rotate(21.33289850236273 160 100)"><path id="rotate_bottom_right_rect" d="M 18 0 L 142 0 Q 160 0 160 18 L 160 82 Q 160 100 142 100 L 18 100 Q 0 100 0 82 L 0 18 Q 0 0 18 0 Z" fill="#22c55e" stroke="#dbeafe" stroke-width="2"/></g><path id="scale_outside_right_panel" d="M 977 150 L 1203 150 Q 1225 150 1225 172 L 1225 368 Q 1225 390 1203 390 L 977 390 Q 955 390 955 368 L 955 172 Q 955 150 977 150 Z" fill="#0d1a2e" stroke="#193252" stroke-width="1.5"/><text id="scale_outside_right_title" text-anchor="start" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="16" font-weight="700" fill="#f8fafc"><tspan x="975" y="176">Outside-right origin</tspan></text><text id="scale_outside_right_note" text-anchor="start" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="12" font-weight="500" fill="#94a3b8"><tspan x="975" y="198">[200, 50]</tspan></text><path id="scale_outside_right_guide_h" d="M 975 298 L 1205 298" fill="none" stroke="#173054" stroke-width="1" stroke-dasharray="6 6"/><path id="scale_outside_right_guide_v" d="M 1093 218 L 1093 370" fill="none" stroke="#173054" stroke-width="1" stroke-dasharray="6 6"/><g id="scale_outside_right_origin" transform="translate(1213 298)"><path id="scale_outside_right_origin_cross_h" d="M -16 0 L 16 0" fill="none" stroke="#fde047" stroke-width="2" stroke-linecap="round"/><path id="scale_outside_right_origin_cross_v" d="M 0 -16 L 0 16" fill="none" stroke="#fde047" stroke-width="2" stroke-linecap="round"/><path id="scale_outside_right_origin_dot" d="M -6 0 a 6 6 0 1 0 12 0 a 6 6 0 1 0 -12 0" fill="#fde047" stroke="#0f172a" stroke-width="1.5"/></g><g id="scale_outside_right_group" transform="translate(1013 248) translate(200 50) scale(0.9681869211307477 0.9681869211307477) translate(-200 -50)"><path id="scale_outside_right_rect" d="M 18 0 L 142 0 Q 160 0 160 18 L 160 82 Q 160 100 142 100 L 18 100 Q 0 100 0 82 L 0 18 Q 0 0 18 0 Z" fill="#f59e0b" stroke="#dbeafe" stroke-width="2"/></g><path id="rotate_outside_right_panel" d="M 977 435 L 1203 435 Q 1225 435 1225 457 L 1225 653 Q 1225 675 1203 675 L 977 675 Q 955 675 955 653 L 955 457 Q 955 435 977 435 Z" fill="#0d1a2e" stroke="#193252" stroke-width="1.5"/><text id="rotate_outside_right_title" text-anchor="start" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="16" font-weight="700" fill="#f8fafc"><tspan x="975" y="461">Outside-right origin</tspan></text><text id="rotate_outside_right_note" text-anchor="start" dominant-baseline="middle" font-family="Roboto, Arial, sans-serif" font-size="12" font-weight="500" fill="#94a3b8"><tspan x="975" y="483">[200, 50]</tspan></text><path id="rotate_outside_right_guide_h" d="M 975 583 L 1205 583" fill="none" stroke="#173054" stroke-width="1" stroke-dasharray="6 6"/><path id="rotate_outside_right_guide_v" d="M 1093 503 L 1093 655" fill="none" stroke="#173054" stroke-width="1" stroke-dasharray="6 6"/><g id="rotate_outside_right_origin" transform="translate(1213 583)"><path id="rotate_outside_right_origin_cross_h" d="M -16 0 L 16 0" fill="none" stroke="#fde047" stroke-width="2" stroke-linecap="round"/><path id="rotate_outside_right_origin_cross_v" d="M 0 -16 L 0 16" fill="none" stroke="#fde047" stroke-width="2" stroke-linecap="round"/><path id="rotate_outside_right_origin_dot" d="M -6 0 a 6 6 0 1 0 12 0 a 6 6 0 1 0 -12 0" fill="#fde047" stroke="#0f172a" stroke-width="1.5"/></g><g id="rotate_outside_right_group" transform="translate(1013 533) rotate(21.33289850236273 200 50)"><path id="rotate_outside_right_rect" d="M 18 0 L 142 0 Q 160 0 160 18 L 160 82 Q 160 100 142 100 L 18 100 Q 0 100 0 82 L 0 18 Q 0 0 18 0 Z" fill="#f59e0b" stroke="#dbeafe" stroke-width="2"/></g></svg>
|