@syncedco/motion 0.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.
- package/CHANGELOG.md +106 -0
- package/CODE_OF_CONDUCT.md +26 -0
- package/CONTRIBUTING.md +100 -0
- package/LICENSE +22 -0
- package/README.md +278 -0
- package/SECURITY.md +36 -0
- package/SUPPORT.md +38 -0
- package/TRADEMARKS.md +14 -0
- package/bin/synced-motion.mjs +5 -0
- package/dist/astro.d.ts +15 -0
- package/dist/astro.js +51 -0
- package/dist/astro.js.map +1 -0
- package/dist/chunk-24KKECMK.js +281 -0
- package/dist/chunk-24KKECMK.js.map +1 -0
- package/dist/chunk-3WUVBPYX.js +162 -0
- package/dist/chunk-3WUVBPYX.js.map +1 -0
- package/dist/chunk-HCWQV65E.js +20 -0
- package/dist/chunk-HCWQV65E.js.map +1 -0
- package/dist/chunk-JET2MYEG.js +2287 -0
- package/dist/chunk-JET2MYEG.js.map +1 -0
- package/dist/chunk-KA3OPI4F.js +40 -0
- package/dist/chunk-KA3OPI4F.js.map +1 -0
- package/dist/chunk-ML7HTCZT.js +642 -0
- package/dist/chunk-ML7HTCZT.js.map +1 -0
- package/dist/chunk-NIXAEIHN.js +23 -0
- package/dist/chunk-NIXAEIHN.js.map +1 -0
- package/dist/chunk-VOIQPPQZ.js +299 -0
- package/dist/chunk-VOIQPPQZ.js.map +1 -0
- package/dist/chunk-WCG7TQSH.js +31 -0
- package/dist/chunk-WCG7TQSH.js.map +1 -0
- package/dist/cli.js +382 -0
- package/dist/cli.js.map +1 -0
- package/dist/full.d.ts +13 -0
- package/dist/full.js +201 -0
- package/dist/full.js.map +1 -0
- package/dist/index.d.ts +249 -0
- package/dist/index.js +183 -0
- package/dist/index.js.map +1 -0
- package/dist/lenis.d.ts +19 -0
- package/dist/lenis.js +7 -0
- package/dist/lenis.js.map +1 -0
- package/dist/mcp.d.ts +16 -0
- package/dist/mcp.js +82 -0
- package/dist/mcp.js.map +1 -0
- package/dist/plugins.d.ts +14 -0
- package/dist/plugins.js +17 -0
- package/dist/plugins.js.map +1 -0
- package/dist/react.d.ts +7 -0
- package/dist/react.js +32 -0
- package/dist/react.js.map +1 -0
- package/dist/recipes.d.ts +76 -0
- package/dist/recipes.js +129 -0
- package/dist/recipes.js.map +1 -0
- package/dist/styles.css +57 -0
- package/dist/styles.css.map +1 -0
- package/dist/svelte.d.ts +10 -0
- package/dist/svelte.js +30 -0
- package/dist/svelte.js.map +1 -0
- package/dist/vue.d.ts +13 -0
- package/dist/vue.js +35 -0
- package/dist/vue.js.map +1 -0
- package/dist/wordpress.d.ts +15 -0
- package/dist/wordpress.js +49 -0
- package/dist/wordpress.js.map +1 -0
- package/docs/API.md +176 -0
- package/docs/ATTRIBUTE-API.md +358 -0
- package/docs/CAPABILITIES.md +82 -0
- package/docs/INTEGRATIONS.md +92 -0
- package/docs/PERFORMANCE.md +150 -0
- package/docs/README.md +35 -0
- package/docs/RECIPE-REFERENCE.md +1358 -0
- package/docs/RECIPES.md +115 -0
- package/docs/TOOLING.md +65 -0
- package/docs/WEBFLOW-MIGRATION.md +39 -0
- package/package.json +167 -0
|
@@ -0,0 +1,1358 @@
|
|
|
1
|
+
<!-- Generated by scripts/build-docs.mjs. Do not edit by hand. -->
|
|
2
|
+
# Recipe reference
|
|
3
|
+
|
|
4
|
+
Every registered recipe, generated from the catalog so it cannot drift from the
|
|
5
|
+
code. 60 recipes across 12 families.
|
|
6
|
+
|
|
7
|
+
Selectors are shown with the documented `data-motion-` prefix. The original
|
|
8
|
+
`data-motion-` names remain fully supported.
|
|
9
|
+
|
|
10
|
+
To explore these interactively, run `npm run gallery`. To query them from a
|
|
11
|
+
script or an agent, use `npx synced-motion catalog --json`.
|
|
12
|
+
|
|
13
|
+
- [Reveals and entrances](#reveals-and-entrances)
|
|
14
|
+
- [Split text and typography](#split-text-and-typography)
|
|
15
|
+
- [Scroll and parallax](#scroll-and-parallax)
|
|
16
|
+
- [Pinned storytelling](#pinned-storytelling)
|
|
17
|
+
- [Horizontal galleries](#horizontal-galleries)
|
|
18
|
+
- [Media, mask and clip](#media-mask-and-clip)
|
|
19
|
+
- [Hover, focus and pointer](#hover-focus-and-pointer)
|
|
20
|
+
- [Navigation and overlays](#navigation-and-overlays)
|
|
21
|
+
- [Loops, progress and ambient](#loops-progress-and-ambient)
|
|
22
|
+
- [FLIP and layout](#flip-and-layout)
|
|
23
|
+
- [SVG, path and morph](#svg-path-and-morph)
|
|
24
|
+
- [Page load and routing](#page-load-and-routing)
|
|
25
|
+
|
|
26
|
+
## Reveals and entrances
|
|
27
|
+
|
|
28
|
+
### `reveal-rise`
|
|
29
|
+
|
|
30
|
+
Reveal content upward with opacity. Introduce an element as it enters the viewport.
|
|
31
|
+
|
|
32
|
+
- **Root:** `[data-motion-reveal]`
|
|
33
|
+
- **Triggers:** `viewport`
|
|
34
|
+
- **Performance:** medium
|
|
35
|
+
- **Reduced motion:** final — Preserve the authored readable final state.
|
|
36
|
+
- **Without JavaScript:** Content and controls remain available in their authored final state.
|
|
37
|
+
- **Accessibility:** Motion does not change document order; interactive semantics remain native.
|
|
38
|
+
|
|
39
|
+
_The root element is the only target._
|
|
40
|
+
|
|
41
|
+
| Parameter | Type | Default | Range |
|
|
42
|
+
| --- | --- | --- | --- |
|
|
43
|
+
| `start` | string | `"top 85%"` | — |
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
npx synced-motion add reveal-rise
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### `reveal-stagger-cascade`
|
|
50
|
+
|
|
51
|
+
Cascade a local group into view. Introduce related items in a readable sequence.
|
|
52
|
+
|
|
53
|
+
- **Root:** `[data-motion-stagger]`
|
|
54
|
+
- **Triggers:** `viewport`
|
|
55
|
+
- **Performance:** medium
|
|
56
|
+
- **Reduced motion:** final — Preserve the authored readable final state.
|
|
57
|
+
- **Without JavaScript:** Content and controls remain available in their authored final state.
|
|
58
|
+
- **Accessibility:** Motion does not change document order; interactive semantics remain native.
|
|
59
|
+
|
|
60
|
+
| Slot | Selector | Required | Count |
|
|
61
|
+
| --- | --- | --- | --- |
|
|
62
|
+
| `items` | `[data-motion-stagger-item]` | optional | many |
|
|
63
|
+
|
|
64
|
+
| Parameter | Type | Default | Range |
|
|
65
|
+
| --- | --- | --- | --- |
|
|
66
|
+
| `start` | string | `"top 85%"` | — |
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
npx synced-motion add reveal-stagger-cascade
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### `reveal-directional`
|
|
73
|
+
|
|
74
|
+
Reveal content from a semantic direction. Introduce content with a restrained directional offset.
|
|
75
|
+
|
|
76
|
+
- **Root:** `[data-motion-reveal-directional]`
|
|
77
|
+
- **Triggers:** `viewport`
|
|
78
|
+
- **Performance:** medium
|
|
79
|
+
- **Reduced motion:** final — Preserve the authored readable final state.
|
|
80
|
+
- **Without JavaScript:** Content and controls remain available in their authored final state.
|
|
81
|
+
- **Accessibility:** Motion does not change document order; interactive semantics remain native.
|
|
82
|
+
|
|
83
|
+
_The root element is the only target._
|
|
84
|
+
|
|
85
|
+
_No parameters._
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
npx synced-motion add reveal-directional
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
### `reveal-scale-in`
|
|
92
|
+
|
|
93
|
+
Gently scale and fade a focal element into view. Introduce a focal card or media element without changing layout.
|
|
94
|
+
|
|
95
|
+
- **Root:** `[data-motion-reveal-scale]`
|
|
96
|
+
- **Triggers:** `viewport`
|
|
97
|
+
- **Performance:** medium
|
|
98
|
+
- **Reduced motion:** final — Preserve the authored readable final state.
|
|
99
|
+
- **Without JavaScript:** Content and controls remain available in their authored final state.
|
|
100
|
+
- **Accessibility:** Motion does not change document order; interactive semantics remain native.
|
|
101
|
+
|
|
102
|
+
_The root element is the only target._
|
|
103
|
+
|
|
104
|
+
_No parameters._
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
npx synced-motion add reveal-scale-in
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
### `reveal-clip-wipe`
|
|
111
|
+
|
|
112
|
+
Reveal content through a bounded inline clip. Uncover media or editorial content with a directional wipe.
|
|
113
|
+
|
|
114
|
+
- **Root:** `[data-motion-reveal-clip]`
|
|
115
|
+
- **Triggers:** `viewport`
|
|
116
|
+
- **Performance:** medium
|
|
117
|
+
- **Reduced motion:** final — Preserve the authored readable final state.
|
|
118
|
+
- **Without JavaScript:** Content and controls remain available in their authored final state.
|
|
119
|
+
- **Accessibility:** Motion does not change document order; interactive semantics remain native.
|
|
120
|
+
|
|
121
|
+
| Slot | Selector | Required | Count |
|
|
122
|
+
| --- | --- | --- | --- |
|
|
123
|
+
| `content` | `[data-motion-reveal-clip-content]` | optional | one |
|
|
124
|
+
|
|
125
|
+
_No parameters._
|
|
126
|
+
|
|
127
|
+
```bash
|
|
128
|
+
npx synced-motion add reveal-clip-wipe
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
## Split text and typography
|
|
132
|
+
|
|
133
|
+
### `split-lines-rise`
|
|
134
|
+
|
|
135
|
+
Split text into responsive lines and reveal it. Give editorial headings a line-by-line entrance.
|
|
136
|
+
|
|
137
|
+
> **Needs SplitText.** Import from `@syncedco/motion/full`, or pass the plugin through `dependencies`.
|
|
138
|
+
|
|
139
|
+
- **Root:** `[data-motion-split="lines"]`
|
|
140
|
+
- **Triggers:** `viewport`
|
|
141
|
+
- **Performance:** medium
|
|
142
|
+
- **Reduced motion:** final — Preserve the authored readable final state.
|
|
143
|
+
- **Without JavaScript:** Content and controls remain available in their authored final state.
|
|
144
|
+
- **Accessibility:** Motion does not change document order; interactive semantics remain native.
|
|
145
|
+
|
|
146
|
+
_The root element is the only target._
|
|
147
|
+
|
|
148
|
+
| Parameter | Type | Default | Range |
|
|
149
|
+
| --- | --- | --- | --- |
|
|
150
|
+
| `start` | string | `"top 85%"` | — |
|
|
151
|
+
|
|
152
|
+
```bash
|
|
153
|
+
npx synced-motion add split-lines-rise
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
### `split-words-cascade`
|
|
157
|
+
|
|
158
|
+
Split text into words and stagger its entrance. Emphasize a statement word by word.
|
|
159
|
+
|
|
160
|
+
> **Needs SplitText.** Import from `@syncedco/motion/full`, or pass the plugin through `dependencies`.
|
|
161
|
+
|
|
162
|
+
- **Root:** `[data-motion-split="words"]`
|
|
163
|
+
- **Triggers:** `viewport`
|
|
164
|
+
- **Performance:** medium
|
|
165
|
+
- **Reduced motion:** final — Preserve the authored readable final state.
|
|
166
|
+
- **Without JavaScript:** Content and controls remain available in their authored final state.
|
|
167
|
+
- **Accessibility:** Motion does not change document order; interactive semantics remain native.
|
|
168
|
+
|
|
169
|
+
_The root element is the only target._
|
|
170
|
+
|
|
171
|
+
| Parameter | Type | Default | Range |
|
|
172
|
+
| --- | --- | --- | --- |
|
|
173
|
+
| `start` | string | `"top 85%"` | — |
|
|
174
|
+
|
|
175
|
+
```bash
|
|
176
|
+
npx synced-motion add split-words-cascade
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
### `split-chars-shimmer`
|
|
180
|
+
|
|
181
|
+
Reveal a statement through a restrained character cascade. Add character-level rhythm to short display text.
|
|
182
|
+
|
|
183
|
+
> **Needs SplitText.** Import from `@syncedco/motion/full`, or pass the plugin through `dependencies`.
|
|
184
|
+
|
|
185
|
+
- **Root:** `[data-motion-chars-shimmer]`
|
|
186
|
+
- **Triggers:** `viewport`
|
|
187
|
+
- **Performance:** medium
|
|
188
|
+
- **Reduced motion:** final — Preserve the authored readable final state.
|
|
189
|
+
- **Without JavaScript:** Content and controls remain available in their authored final state.
|
|
190
|
+
- **Accessibility:** Motion does not change document order; interactive semantics remain native.
|
|
191
|
+
|
|
192
|
+
_The root element is the only target._
|
|
193
|
+
|
|
194
|
+
_No parameters._
|
|
195
|
+
|
|
196
|
+
```bash
|
|
197
|
+
npx synced-motion add split-chars-shimmer
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
### `typewriter-announce`
|
|
201
|
+
|
|
202
|
+
Progressively reveal a short announcement while retaining complete accessible text. Give a short label or announcement a typed entrance.
|
|
203
|
+
|
|
204
|
+
> **Needs SplitText.** Import from `@syncedco/motion/full`, or pass the plugin through `dependencies`.
|
|
205
|
+
|
|
206
|
+
- **Root:** `[data-motion-typewriter]`
|
|
207
|
+
- **Triggers:** `viewport`, `load`
|
|
208
|
+
- **Performance:** medium
|
|
209
|
+
- **Reduced motion:** final — Preserve the authored readable final state.
|
|
210
|
+
- **Without JavaScript:** Content and controls remain available in their authored final state.
|
|
211
|
+
- **Accessibility:** Motion does not change document order; interactive semantics remain native.
|
|
212
|
+
|
|
213
|
+
_The root element is the only target._
|
|
214
|
+
|
|
215
|
+
_No parameters._
|
|
216
|
+
|
|
217
|
+
```bash
|
|
218
|
+
npx synced-motion add typewriter-announce
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
### `text-highlight-sweep`
|
|
222
|
+
|
|
223
|
+
Sweep a visual highlight behind readable text. Emphasize a phrase without replacing its semantic text.
|
|
224
|
+
|
|
225
|
+
- **Root:** `[data-motion-text-highlight]`
|
|
226
|
+
- **Triggers:** `viewport`
|
|
227
|
+
- **Performance:** medium
|
|
228
|
+
- **Reduced motion:** final — Preserve the authored readable final state.
|
|
229
|
+
- **Without JavaScript:** Content and controls remain available in their authored final state.
|
|
230
|
+
- **Accessibility:** Motion does not change document order; interactive semantics remain native.
|
|
231
|
+
|
|
232
|
+
| Slot | Selector | Required | Count |
|
|
233
|
+
| --- | --- | --- | --- |
|
|
234
|
+
| `mark` | `[data-motion-text-highlight-mark]` | required | one |
|
|
235
|
+
|
|
236
|
+
_No parameters._
|
|
237
|
+
|
|
238
|
+
```bash
|
|
239
|
+
npx synced-motion add text-highlight-sweep
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
## Scroll and parallax
|
|
243
|
+
|
|
244
|
+
### `scroll-parallax`
|
|
245
|
+
|
|
246
|
+
Scrub a decorative layer against page movement. Add depth to a scene without changing its reading order.
|
|
247
|
+
|
|
248
|
+
- **Root:** `[data-motion-parallax]`
|
|
249
|
+
- **Triggers:** `scroll`
|
|
250
|
+
- **Performance:** medium
|
|
251
|
+
- **Reduced motion:** final — Preserve the authored readable final state.
|
|
252
|
+
- **Without JavaScript:** Content and controls remain available in their authored final state.
|
|
253
|
+
- **Accessibility:** Motion does not change document order; interactive semantics remain native.
|
|
254
|
+
|
|
255
|
+
_The root element is the only target._
|
|
256
|
+
|
|
257
|
+
_No parameters._
|
|
258
|
+
|
|
259
|
+
```bash
|
|
260
|
+
npx synced-motion add scroll-parallax
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
### `scroll-exit`
|
|
264
|
+
|
|
265
|
+
Move and fade content as its scene leaves. Resolve a section as the next one takes focus.
|
|
266
|
+
|
|
267
|
+
- **Root:** `[data-motion-scroll-exit]`
|
|
268
|
+
- **Triggers:** `scroll`
|
|
269
|
+
- **Performance:** medium
|
|
270
|
+
- **Reduced motion:** final — Preserve the authored readable final state.
|
|
271
|
+
- **Without JavaScript:** Content and controls remain available in their authored final state.
|
|
272
|
+
- **Accessibility:** Motion does not change document order; interactive semantics remain native.
|
|
273
|
+
|
|
274
|
+
_The root element is the only target._
|
|
275
|
+
|
|
276
|
+
_No parameters._
|
|
277
|
+
|
|
278
|
+
```bash
|
|
279
|
+
npx synced-motion add scroll-exit
|
|
280
|
+
```
|
|
281
|
+
|
|
282
|
+
### `scroll-drift`
|
|
283
|
+
|
|
284
|
+
Drift a decorative layer through a bounded scene. Create subtle scroll-linked atmosphere.
|
|
285
|
+
|
|
286
|
+
- **Root:** `[data-motion-scroll-drift]`
|
|
287
|
+
- **Triggers:** `scroll`
|
|
288
|
+
- **Performance:** medium
|
|
289
|
+
- **Reduced motion:** final — Preserve the authored readable final state.
|
|
290
|
+
- **Without JavaScript:** Content and controls remain available in their authored final state.
|
|
291
|
+
- **Accessibility:** Motion does not change document order; interactive semantics remain native.
|
|
292
|
+
|
|
293
|
+
| Slot | Selector | Required | Count |
|
|
294
|
+
| --- | --- | --- | --- |
|
|
295
|
+
| `layer` | `[data-motion-drift-layer]` | required | one |
|
|
296
|
+
|
|
297
|
+
_No parameters._
|
|
298
|
+
|
|
299
|
+
```bash
|
|
300
|
+
npx synced-motion add scroll-drift
|
|
301
|
+
```
|
|
302
|
+
|
|
303
|
+
### `scroll-progress-meter`
|
|
304
|
+
|
|
305
|
+
Map local reading progress to a nonessential indicator. Show progress through a long section without controlling navigation.
|
|
306
|
+
|
|
307
|
+
- **Root:** `[data-motion-scroll-progress]`
|
|
308
|
+
- **Triggers:** `scroll`
|
|
309
|
+
- **Performance:** low
|
|
310
|
+
- **Reduced motion:** final — Preserve the authored readable final state.
|
|
311
|
+
- **Without JavaScript:** Content and controls remain available in their authored final state.
|
|
312
|
+
- **Accessibility:** Motion does not change document order; interactive semantics remain native.
|
|
313
|
+
|
|
314
|
+
| Slot | Selector | Required | Count |
|
|
315
|
+
| --- | --- | --- | --- |
|
|
316
|
+
| `meter` | `[data-motion-scroll-progress-meter]` | required | one |
|
|
317
|
+
| `label` | `[data-motion-scroll-progress-label]` | optional | one |
|
|
318
|
+
|
|
319
|
+
_No parameters._
|
|
320
|
+
|
|
321
|
+
```bash
|
|
322
|
+
npx synced-motion add scroll-progress-meter
|
|
323
|
+
```
|
|
324
|
+
|
|
325
|
+
### `scroll-depth-stack`
|
|
326
|
+
|
|
327
|
+
Introduce stacked cards with restrained depth. Give a grouped card stack depth as it enters the viewport.
|
|
328
|
+
|
|
329
|
+
- **Root:** `[data-motion-scroll-depth-stack]`
|
|
330
|
+
- **Triggers:** `viewport`
|
|
331
|
+
- **Performance:** medium
|
|
332
|
+
- **Reduced motion:** final — Preserve the authored readable final state.
|
|
333
|
+
- **Without JavaScript:** Content and controls remain available in their authored final state.
|
|
334
|
+
- **Accessibility:** Motion does not change document order; interactive semantics remain native.
|
|
335
|
+
|
|
336
|
+
| Slot | Selector | Required | Count |
|
|
337
|
+
| --- | --- | --- | --- |
|
|
338
|
+
| `cards` | `[data-motion-depth-card]` | required | many |
|
|
339
|
+
|
|
340
|
+
_No parameters._
|
|
341
|
+
|
|
342
|
+
```bash
|
|
343
|
+
npx synced-motion add scroll-depth-stack
|
|
344
|
+
```
|
|
345
|
+
|
|
346
|
+
## Pinned storytelling
|
|
347
|
+
|
|
348
|
+
### `pinned-steps`
|
|
349
|
+
|
|
350
|
+
Pin a narrative and activate linked panels by scroll progress. Turn sequential content into a controlled scroll story.
|
|
351
|
+
|
|
352
|
+
- **Root:** `[data-motion-scroll-steps]`
|
|
353
|
+
- **Triggers:** `scroll`
|
|
354
|
+
- **Performance:** high
|
|
355
|
+
- **Reduced motion:** final — Preserve the authored readable final state.
|
|
356
|
+
- **Without JavaScript:** Content and controls remain available in their authored final state.
|
|
357
|
+
- **Accessibility:** Motion does not change document order; interactive semantics remain native.
|
|
358
|
+
|
|
359
|
+
| Slot | Selector | Required | Count |
|
|
360
|
+
| --- | --- | --- | --- |
|
|
361
|
+
| `pin` | `[data-motion-pin-target]` | required | one |
|
|
362
|
+
| `links` | `[data-motion-step-link]` | required | many |
|
|
363
|
+
| `panels` | `[data-motion-step-panel]` | required | many |
|
|
364
|
+
|
|
365
|
+
_No parameters._
|
|
366
|
+
|
|
367
|
+
```bash
|
|
368
|
+
npx synced-motion add pinned-steps
|
|
369
|
+
```
|
|
370
|
+
|
|
371
|
+
### `pinned-statement`
|
|
372
|
+
|
|
373
|
+
Transform an oversized accent into a complete statement. Reveal a large editorial message through scroll.
|
|
374
|
+
|
|
375
|
+
- **Root:** `[data-motion-scroll-statement]`
|
|
376
|
+
- **Triggers:** `scroll`
|
|
377
|
+
- **Performance:** high
|
|
378
|
+
- **Reduced motion:** final — Preserve the authored readable final state.
|
|
379
|
+
- **Without JavaScript:** Content and controls remain available in their authored final state.
|
|
380
|
+
- **Accessibility:** Motion does not change document order; interactive semantics remain native.
|
|
381
|
+
|
|
382
|
+
| Slot | Selector | Required | Count |
|
|
383
|
+
| --- | --- | --- | --- |
|
|
384
|
+
| `pin` | `[data-motion-statement-pin]` | required | one |
|
|
385
|
+
| `heading` | `[data-motion-statement-heading]` | required | one |
|
|
386
|
+
| `details` | `[data-motion-statement-details]` | required | one |
|
|
387
|
+
|
|
388
|
+
_No parameters._
|
|
389
|
+
|
|
390
|
+
```bash
|
|
391
|
+
npx synced-motion add pinned-statement
|
|
392
|
+
```
|
|
393
|
+
|
|
394
|
+
### `pinned-founder-story`
|
|
395
|
+
|
|
396
|
+
Sequence an editorial story into a metrics scene. Tell a long-form story through coordinated pinned states.
|
|
397
|
+
|
|
398
|
+
> **Needs SplitText.** Import from `@syncedco/motion/full`, or pass the plugin through `dependencies`.
|
|
399
|
+
|
|
400
|
+
- **Root:** `[data-motion-founder-scene]`
|
|
401
|
+
- **Triggers:** `scroll`
|
|
402
|
+
- **Performance:** high
|
|
403
|
+
- **Reduced motion:** final — Preserve the authored readable final state.
|
|
404
|
+
- **Without JavaScript:** Content and controls remain available in their authored final state.
|
|
405
|
+
- **Accessibility:** Motion does not change document order; interactive semantics remain native.
|
|
406
|
+
|
|
407
|
+
| Slot | Selector | Required | Count |
|
|
408
|
+
| --- | --- | --- | --- |
|
|
409
|
+
| `content` | `[data-motion-founder-content]` | required | one |
|
|
410
|
+
| `heading` | `[data-motion-founder-heading]` | required | one |
|
|
411
|
+
| `metrics` | `[data-motion-founder-metrics]` | required | one |
|
|
412
|
+
|
|
413
|
+
_No parameters._
|
|
414
|
+
|
|
415
|
+
```bash
|
|
416
|
+
npx synced-motion add pinned-founder-story
|
|
417
|
+
```
|
|
418
|
+
|
|
419
|
+
### `pinned-chapter-crossfade`
|
|
420
|
+
|
|
421
|
+
Advance narrative chapters around a stable visual anchor. Tell a chaptered story while a visual remains pinned.
|
|
422
|
+
|
|
423
|
+
- **Root:** `[data-motion-pinned-chapters]`
|
|
424
|
+
- **Triggers:** `scroll`
|
|
425
|
+
- **Performance:** high
|
|
426
|
+
- **Reduced motion:** final — Preserve the authored readable final state.
|
|
427
|
+
- **Without JavaScript:** Content and controls remain available in their authored final state.
|
|
428
|
+
- **Accessibility:** Motion does not change document order; interactive semantics remain native.
|
|
429
|
+
|
|
430
|
+
| Slot | Selector | Required | Count |
|
|
431
|
+
| --- | --- | --- | --- |
|
|
432
|
+
| `pin` | `[data-motion-pin-target]` | required | one |
|
|
433
|
+
| `chapters` | `[data-motion-pinned-chapter]` | required | many |
|
|
434
|
+
| `visuals` | `[data-motion-pinned-visual]` | required | many |
|
|
435
|
+
|
|
436
|
+
_No parameters._
|
|
437
|
+
|
|
438
|
+
```bash
|
|
439
|
+
npx synced-motion add pinned-chapter-crossfade
|
|
440
|
+
```
|
|
441
|
+
|
|
442
|
+
### `pinned-product-explainer`
|
|
443
|
+
|
|
444
|
+
Coordinate product steps with a stable media region. Explain product states in a controlled scroll sequence.
|
|
445
|
+
|
|
446
|
+
- **Root:** `[data-motion-product-explainer]`
|
|
447
|
+
- **Triggers:** `scroll`
|
|
448
|
+
- **Performance:** high
|
|
449
|
+
- **Reduced motion:** final — Preserve the authored readable final state.
|
|
450
|
+
- **Without JavaScript:** Content and controls remain available in their authored final state.
|
|
451
|
+
- **Accessibility:** Motion does not change document order; interactive semantics remain native.
|
|
452
|
+
|
|
453
|
+
| Slot | Selector | Required | Count |
|
|
454
|
+
| --- | --- | --- | --- |
|
|
455
|
+
| `pin` | `[data-motion-pin-target]` | required | one |
|
|
456
|
+
| `steps` | `[data-motion-product-step]` | required | many |
|
|
457
|
+
| `media` | `[data-motion-product-media]` | required | many |
|
|
458
|
+
|
|
459
|
+
_No parameters._
|
|
460
|
+
|
|
461
|
+
```bash
|
|
462
|
+
npx synced-motion add pinned-product-explainer
|
|
463
|
+
```
|
|
464
|
+
|
|
465
|
+
## Horizontal galleries
|
|
466
|
+
|
|
467
|
+
### `horizontal-gallery-scrub`
|
|
468
|
+
|
|
469
|
+
Translate a native row through a pinned viewport. Explore an editorial card gallery through vertical scroll.
|
|
470
|
+
|
|
471
|
+
- **Root:** `[data-motion-horizontal-gallery]`
|
|
472
|
+
- **Triggers:** `scroll`
|
|
473
|
+
- **Performance:** high
|
|
474
|
+
- **Reduced motion:** final — Preserve the authored readable final state.
|
|
475
|
+
- **Without JavaScript:** Content and controls remain available in their authored final state.
|
|
476
|
+
- **Accessibility:** Motion does not change document order; interactive semantics remain native.
|
|
477
|
+
|
|
478
|
+
| Slot | Selector | Required | Count |
|
|
479
|
+
| --- | --- | --- | --- |
|
|
480
|
+
| `track` | `[data-motion-horizontal-track]` | required | one |
|
|
481
|
+
| `cards` | `[data-motion-horizontal-card]` | required | many |
|
|
482
|
+
|
|
483
|
+
_No parameters._
|
|
484
|
+
|
|
485
|
+
```bash
|
|
486
|
+
npx synced-motion add horizontal-gallery-scrub
|
|
487
|
+
```
|
|
488
|
+
|
|
489
|
+
### `horizontal-gallery-snap`
|
|
490
|
+
|
|
491
|
+
Scrub and snap a horizontal card gallery. Create clear chapter stops inside a horizontal scroll scene.
|
|
492
|
+
|
|
493
|
+
- **Root:** `[data-motion-horizontal-snap]`
|
|
494
|
+
- **Triggers:** `scroll`
|
|
495
|
+
- **Performance:** high
|
|
496
|
+
- **Reduced motion:** final — Preserve the authored readable final state.
|
|
497
|
+
- **Without JavaScript:** Content and controls remain available in their authored final state.
|
|
498
|
+
- **Accessibility:** Motion does not change document order; interactive semantics remain native.
|
|
499
|
+
|
|
500
|
+
| Slot | Selector | Required | Count |
|
|
501
|
+
| --- | --- | --- | --- |
|
|
502
|
+
| `track` | `[data-motion-horizontal-track]` | required | one |
|
|
503
|
+
| `cards` | `[data-motion-horizontal-card]` | required | many |
|
|
504
|
+
|
|
505
|
+
_No parameters._
|
|
506
|
+
|
|
507
|
+
```bash
|
|
508
|
+
npx synced-motion add horizontal-gallery-snap
|
|
509
|
+
```
|
|
510
|
+
|
|
511
|
+
### `horizontal-feature-rail`
|
|
512
|
+
|
|
513
|
+
Move a feature rail and synchronize semantic active states. Present features as an active horizontal editorial sequence.
|
|
514
|
+
|
|
515
|
+
- **Root:** `[data-motion-horizontal-feature-rail]`
|
|
516
|
+
- **Triggers:** `scroll`
|
|
517
|
+
- **Performance:** high
|
|
518
|
+
- **Reduced motion:** final — Preserve the authored readable final state.
|
|
519
|
+
- **Without JavaScript:** Content and controls remain available in their authored final state.
|
|
520
|
+
- **Accessibility:** Motion does not change document order; interactive semantics remain native.
|
|
521
|
+
|
|
522
|
+
| Slot | Selector | Required | Count |
|
|
523
|
+
| --- | --- | --- | --- |
|
|
524
|
+
| `track` | `[data-motion-horizontal-track]` | required | one |
|
|
525
|
+
| `cards` | `[data-motion-horizontal-card]` | required | many |
|
|
526
|
+
| `labels` | `[data-motion-horizontal-label]` | optional | many |
|
|
527
|
+
|
|
528
|
+
_No parameters._
|
|
529
|
+
|
|
530
|
+
```bash
|
|
531
|
+
npx synced-motion add horizontal-feature-rail
|
|
532
|
+
```
|
|
533
|
+
|
|
534
|
+
### `horizontal-logo-reel`
|
|
535
|
+
|
|
536
|
+
Move partner or case-study marks through a bounded region. Add scroll-linked movement to a readable logo list.
|
|
537
|
+
|
|
538
|
+
- **Root:** `[data-motion-horizontal-logo-reel]`
|
|
539
|
+
- **Triggers:** `scroll`
|
|
540
|
+
- **Performance:** medium
|
|
541
|
+
- **Reduced motion:** final — Preserve the authored readable final state.
|
|
542
|
+
- **Without JavaScript:** Content and controls remain available in their authored final state.
|
|
543
|
+
- **Accessibility:** Motion does not change document order; interactive semantics remain native.
|
|
544
|
+
|
|
545
|
+
| Slot | Selector | Required | Count |
|
|
546
|
+
| --- | --- | --- | --- |
|
|
547
|
+
| `track` | `[data-motion-horizontal-track]` | required | one |
|
|
548
|
+
|
|
549
|
+
_No parameters._
|
|
550
|
+
|
|
551
|
+
```bash
|
|
552
|
+
npx synced-motion add horizontal-logo-reel
|
|
553
|
+
```
|
|
554
|
+
|
|
555
|
+
### `horizontal-comparison-slider`
|
|
556
|
+
|
|
557
|
+
Reveal equivalent media states with a native range input. Compare before and after media with pointer and keyboard control.
|
|
558
|
+
|
|
559
|
+
- **Root:** `[data-motion-comparison]`
|
|
560
|
+
- **Triggers:** `pointer`, `focus`
|
|
561
|
+
- **Performance:** medium
|
|
562
|
+
- **Reduced motion:** final — Preserve the authored readable final state.
|
|
563
|
+
- **Without JavaScript:** Content and controls remain available in their authored final state.
|
|
564
|
+
- **Accessibility:** Motion does not change document order; interactive semantics remain native.
|
|
565
|
+
|
|
566
|
+
| Slot | Selector | Required | Count |
|
|
567
|
+
| --- | --- | --- | --- |
|
|
568
|
+
| `after` | `[data-motion-comparison-after]` | required | one |
|
|
569
|
+
| `range` | `[data-motion-comparison-range]` | required | one |
|
|
570
|
+
|
|
571
|
+
_No parameters._
|
|
572
|
+
|
|
573
|
+
```bash
|
|
574
|
+
npx synced-motion add horizontal-comparison-slider
|
|
575
|
+
```
|
|
576
|
+
|
|
577
|
+
## Media, mask and clip
|
|
578
|
+
|
|
579
|
+
### `media-expand`
|
|
580
|
+
|
|
581
|
+
Expand cropped media while preserving its caption and labels. Turn a compact media preview into an immersive scene.
|
|
582
|
+
|
|
583
|
+
- **Root:** `[data-motion-media-expand]`
|
|
584
|
+
- **Triggers:** `scroll`
|
|
585
|
+
- **Performance:** high
|
|
586
|
+
- **Reduced motion:** final — Preserve the authored readable final state.
|
|
587
|
+
- **Without JavaScript:** Content and controls remain available in their authored final state.
|
|
588
|
+
- **Accessibility:** Motion does not change document order; interactive semantics remain native.
|
|
589
|
+
|
|
590
|
+
| Slot | Selector | Required | Count |
|
|
591
|
+
| --- | --- | --- | --- |
|
|
592
|
+
| `frame` | `[data-motion-media-expand-frame]` | required | one |
|
|
593
|
+
| `caption` | `[data-motion-media-expand-caption]` | optional | one |
|
|
594
|
+
|
|
595
|
+
_No parameters._
|
|
596
|
+
|
|
597
|
+
```bash
|
|
598
|
+
npx synced-motion add media-expand
|
|
599
|
+
```
|
|
600
|
+
|
|
601
|
+
### `media-clip-reveal`
|
|
602
|
+
|
|
603
|
+
Reveal media through a bounded inline clip. Uncover media without changing its layout box.
|
|
604
|
+
|
|
605
|
+
- **Root:** `[data-motion-media-clip]`
|
|
606
|
+
- **Triggers:** `viewport`
|
|
607
|
+
- **Performance:** medium
|
|
608
|
+
- **Reduced motion:** final — Preserve the authored readable final state.
|
|
609
|
+
- **Without JavaScript:** Content and controls remain available in their authored final state.
|
|
610
|
+
- **Accessibility:** Motion does not change document order; interactive semantics remain native.
|
|
611
|
+
|
|
612
|
+
| Slot | Selector | Required | Count |
|
|
613
|
+
| --- | --- | --- | --- |
|
|
614
|
+
| `frame` | `[data-motion-media-frame]` | optional | one |
|
|
615
|
+
|
|
616
|
+
_No parameters._
|
|
617
|
+
|
|
618
|
+
```bash
|
|
619
|
+
npx synced-motion add media-clip-reveal
|
|
620
|
+
```
|
|
621
|
+
|
|
622
|
+
### `media-curtain-split`
|
|
623
|
+
|
|
624
|
+
Open two decorative curtains around media. Stage an editorial media reveal with paired curtains.
|
|
625
|
+
|
|
626
|
+
- **Root:** `[data-motion-media-curtain]`
|
|
627
|
+
- **Triggers:** `viewport`
|
|
628
|
+
- **Performance:** medium
|
|
629
|
+
- **Reduced motion:** final — Preserve the authored readable final state.
|
|
630
|
+
- **Without JavaScript:** Content and controls remain available in their authored final state.
|
|
631
|
+
- **Accessibility:** Motion does not change document order; interactive semantics remain native.
|
|
632
|
+
|
|
633
|
+
| Slot | Selector | Required | Count |
|
|
634
|
+
| --- | --- | --- | --- |
|
|
635
|
+
| `start` | `[data-motion-curtain-start]` | required | one |
|
|
636
|
+
| `end` | `[data-motion-curtain-end]` | required | one |
|
|
637
|
+
|
|
638
|
+
_No parameters._
|
|
639
|
+
|
|
640
|
+
```bash
|
|
641
|
+
npx synced-motion add media-curtain-split
|
|
642
|
+
```
|
|
643
|
+
|
|
644
|
+
### `image-focus-pan`
|
|
645
|
+
|
|
646
|
+
Scrub a restrained image focal movement through a scene. Add depth to decorative media while retaining its authored focal point.
|
|
647
|
+
|
|
648
|
+
- **Root:** `[data-motion-image-focus-pan]`
|
|
649
|
+
- **Triggers:** `scroll`
|
|
650
|
+
- **Performance:** medium
|
|
651
|
+
- **Reduced motion:** final — Preserve the authored readable final state.
|
|
652
|
+
- **Without JavaScript:** Content and controls remain available in their authored final state.
|
|
653
|
+
- **Accessibility:** Motion does not change document order; interactive semantics remain native.
|
|
654
|
+
|
|
655
|
+
| Slot | Selector | Required | Count |
|
|
656
|
+
| --- | --- | --- | --- |
|
|
657
|
+
| `image` | `[data-motion-focus-image]` | optional | one |
|
|
658
|
+
|
|
659
|
+
_No parameters._
|
|
660
|
+
|
|
661
|
+
```bash
|
|
662
|
+
npx synced-motion add image-focus-pan
|
|
663
|
+
```
|
|
664
|
+
|
|
665
|
+
### `video-poster-play`
|
|
666
|
+
|
|
667
|
+
Transition a poster into native video playback. Start an accessible controlled video from a poster action.
|
|
668
|
+
|
|
669
|
+
- **Root:** `[data-motion-video-poster]`
|
|
670
|
+
- **Triggers:** `click`
|
|
671
|
+
- **Performance:** medium
|
|
672
|
+
- **Reduced motion:** final — Preserve the authored readable final state.
|
|
673
|
+
- **Without JavaScript:** Content and controls remain available in their authored final state.
|
|
674
|
+
- **Accessibility:** Motion does not change document order; interactive semantics remain native.
|
|
675
|
+
|
|
676
|
+
| Slot | Selector | Required | Count |
|
|
677
|
+
| --- | --- | --- | --- |
|
|
678
|
+
| `trigger` | `[data-motion-video-trigger]` | required | one |
|
|
679
|
+
| `video` | `[data-motion-video-element]` | required | one |
|
|
680
|
+
|
|
681
|
+
_No parameters._
|
|
682
|
+
|
|
683
|
+
```bash
|
|
684
|
+
npx synced-motion add video-poster-play
|
|
685
|
+
```
|
|
686
|
+
|
|
687
|
+
## Hover, focus and pointer
|
|
688
|
+
|
|
689
|
+
### `hover-media-switch`
|
|
690
|
+
|
|
691
|
+
Synchronize pointer and keyboard focus with media state. Preview related media from a semantic list of triggers.
|
|
692
|
+
|
|
693
|
+
- **Root:** `[data-motion-hover-group]`
|
|
694
|
+
- **Triggers:** `hover`, `focus`
|
|
695
|
+
- **Performance:** low
|
|
696
|
+
- **Reduced motion:** final — Preserve the authored readable final state.
|
|
697
|
+
- **Without JavaScript:** Content and controls remain available in their authored final state.
|
|
698
|
+
- **Accessibility:** Motion does not change document order; interactive semantics remain native.
|
|
699
|
+
|
|
700
|
+
| Slot | Selector | Required | Count |
|
|
701
|
+
| --- | --- | --- | --- |
|
|
702
|
+
| `triggers` | `[data-motion-hover-key]` | required | many |
|
|
703
|
+
| `media` | `[data-motion-hover-media]` | required | many |
|
|
704
|
+
|
|
705
|
+
_No parameters._
|
|
706
|
+
|
|
707
|
+
```bash
|
|
708
|
+
npx synced-motion add hover-media-switch
|
|
709
|
+
```
|
|
710
|
+
|
|
711
|
+
### `expand-panels`
|
|
712
|
+
|
|
713
|
+
Expand one panel from pointer or keyboard focus. Explore a compact group while keeping every panel accessible.
|
|
714
|
+
|
|
715
|
+
- **Root:** `[data-motion-expand-group]`
|
|
716
|
+
- **Triggers:** `hover`, `focus`
|
|
717
|
+
- **Performance:** low
|
|
718
|
+
- **Reduced motion:** final — Preserve the authored readable final state.
|
|
719
|
+
- **Without JavaScript:** Content and controls remain available in their authored final state.
|
|
720
|
+
- **Accessibility:** Motion does not change document order; interactive semantics remain native.
|
|
721
|
+
|
|
722
|
+
| Slot | Selector | Required | Count |
|
|
723
|
+
| --- | --- | --- | --- |
|
|
724
|
+
| `panels` | `[data-motion-expand-panel]` | required | many |
|
|
725
|
+
|
|
726
|
+
_No parameters._
|
|
727
|
+
|
|
728
|
+
```bash
|
|
729
|
+
npx synced-motion add expand-panels
|
|
730
|
+
```
|
|
731
|
+
|
|
732
|
+
### `hover-lift`
|
|
733
|
+
|
|
734
|
+
Lift a self-contained item on pointer hover or keyboard focus. Give a card or action restrained responsive feedback.
|
|
735
|
+
|
|
736
|
+
- **Root:** `[data-motion-hover-lift]`
|
|
737
|
+
- **Triggers:** `hover`, `focus`
|
|
738
|
+
- **Performance:** low
|
|
739
|
+
- **Reduced motion:** final — Preserve the authored readable final state.
|
|
740
|
+
- **Without JavaScript:** Content and controls remain available in their authored final state.
|
|
741
|
+
- **Accessibility:** Motion does not change document order; interactive semantics remain native.
|
|
742
|
+
|
|
743
|
+
_The root element is the only target._
|
|
744
|
+
|
|
745
|
+
_No parameters._
|
|
746
|
+
|
|
747
|
+
```bash
|
|
748
|
+
npx synced-motion add hover-lift
|
|
749
|
+
```
|
|
750
|
+
|
|
751
|
+
### `magnetic-action`
|
|
752
|
+
|
|
753
|
+
Draw an action gently toward a fine pointer. Add fine-pointer feedback without changing button semantics.
|
|
754
|
+
|
|
755
|
+
- **Root:** `[data-motion-magnetic]`
|
|
756
|
+
- **Triggers:** `pointer`
|
|
757
|
+
- **Performance:** medium
|
|
758
|
+
- **Reduced motion:** final — Preserve the authored readable final state.
|
|
759
|
+
- **Without JavaScript:** Content and controls remain available in their authored final state.
|
|
760
|
+
- **Accessibility:** Motion does not change document order; interactive semantics remain native.
|
|
761
|
+
|
|
762
|
+
| Slot | Selector | Required | Count |
|
|
763
|
+
| --- | --- | --- | --- |
|
|
764
|
+
| `action` | `[data-motion-magnetic-action]` | optional | one |
|
|
765
|
+
|
|
766
|
+
_No parameters._
|
|
767
|
+
|
|
768
|
+
```bash
|
|
769
|
+
npx synced-motion add magnetic-action
|
|
770
|
+
```
|
|
771
|
+
|
|
772
|
+
### `pointer-spotlight`
|
|
773
|
+
|
|
774
|
+
Move a decorative spotlight inside a bounded region. Add local pointer atmosphere without affecting interaction.
|
|
775
|
+
|
|
776
|
+
- **Root:** `[data-motion-pointer-spotlight]`
|
|
777
|
+
- **Triggers:** `pointer`
|
|
778
|
+
- **Performance:** medium
|
|
779
|
+
- **Reduced motion:** final — Preserve the authored readable final state.
|
|
780
|
+
- **Without JavaScript:** Content and controls remain available in their authored final state.
|
|
781
|
+
- **Accessibility:** Motion does not change document order; interactive semantics remain native.
|
|
782
|
+
|
|
783
|
+
| Slot | Selector | Required | Count |
|
|
784
|
+
| --- | --- | --- | --- |
|
|
785
|
+
| `spotlight` | `[data-motion-spotlight]` | required | one |
|
|
786
|
+
|
|
787
|
+
_No parameters._
|
|
788
|
+
|
|
789
|
+
```bash
|
|
790
|
+
npx synced-motion add pointer-spotlight
|
|
791
|
+
```
|
|
792
|
+
|
|
793
|
+
## Navigation and overlays
|
|
794
|
+
|
|
795
|
+
### `accessible-menu`
|
|
796
|
+
|
|
797
|
+
Animate a controlled menu without weakening its keyboard behavior. Open and close a navigation overlay with managed focus.
|
|
798
|
+
|
|
799
|
+
- **Root:** `[data-motion-menu]`
|
|
800
|
+
- **Triggers:** `click`, `focus`
|
|
801
|
+
- **Performance:** medium
|
|
802
|
+
- **Reduced motion:** final — Preserve the authored readable final state.
|
|
803
|
+
- **Without JavaScript:** Content and controls remain available in their authored final state.
|
|
804
|
+
- **Accessibility:** Motion does not change document order; interactive semantics remain native.
|
|
805
|
+
|
|
806
|
+
| Slot | Selector | Required | Count |
|
|
807
|
+
| --- | --- | --- | --- |
|
|
808
|
+
| `trigger` | `[data-motion-menu-trigger]` | required | one |
|
|
809
|
+
| `panel` | `[data-motion-menu-panel]` | required | one |
|
|
810
|
+
| `items` | `[data-motion-menu-item]` | required | many |
|
|
811
|
+
|
|
812
|
+
_No parameters._
|
|
813
|
+
|
|
814
|
+
```bash
|
|
815
|
+
npx synced-motion add accessible-menu
|
|
816
|
+
```
|
|
817
|
+
|
|
818
|
+
### `dialog-overlay`
|
|
819
|
+
|
|
820
|
+
Present a native dialog with a restrained entrance and focus return. Open modal content without replacing native dialog semantics.
|
|
821
|
+
|
|
822
|
+
- **Root:** `[data-motion-dialog-overlay]`
|
|
823
|
+
- **Triggers:** `click`, `focus`
|
|
824
|
+
- **Performance:** medium
|
|
825
|
+
- **Reduced motion:** final — Preserve the authored readable final state.
|
|
826
|
+
- **Without JavaScript:** Content and controls remain available in their authored final state.
|
|
827
|
+
- **Accessibility:** Motion does not change document order; interactive semantics remain native.
|
|
828
|
+
|
|
829
|
+
| Slot | Selector | Required | Count |
|
|
830
|
+
| --- | --- | --- | --- |
|
|
831
|
+
| `trigger` | `[data-motion-overlay-trigger]` | optional | one |
|
|
832
|
+
| `dialog` | `[data-motion-overlay-dialog]` | required | one |
|
|
833
|
+
|
|
834
|
+
_No parameters._
|
|
835
|
+
|
|
836
|
+
```bash
|
|
837
|
+
npx synced-motion add dialog-overlay
|
|
838
|
+
```
|
|
839
|
+
|
|
840
|
+
### `nav-active-indicator`
|
|
841
|
+
|
|
842
|
+
Move a visual indicator between semantic navigation items. Reinforce current and focused navigation state.
|
|
843
|
+
|
|
844
|
+
- **Root:** `[data-motion-nav-indicator]`
|
|
845
|
+
- **Triggers:** `focus`, `pointer`, `click`
|
|
846
|
+
- **Performance:** medium
|
|
847
|
+
- **Reduced motion:** final — Preserve the authored readable final state.
|
|
848
|
+
- **Without JavaScript:** Content and controls remain available in their authored final state.
|
|
849
|
+
- **Accessibility:** Motion does not change document order; interactive semantics remain native.
|
|
850
|
+
|
|
851
|
+
| Slot | Selector | Required | Count |
|
|
852
|
+
| --- | --- | --- | --- |
|
|
853
|
+
| `items` | `[data-motion-nav-item]` | required | many |
|
|
854
|
+
| `indicator` | `[data-motion-nav-active-indicator]` | required | one |
|
|
855
|
+
|
|
856
|
+
_No parameters._
|
|
857
|
+
|
|
858
|
+
```bash
|
|
859
|
+
npx synced-motion add nav-active-indicator
|
|
860
|
+
```
|
|
861
|
+
|
|
862
|
+
### `accordion-disclosure`
|
|
863
|
+
|
|
864
|
+
Animate native disclosure content with transform and opacity. Give a native accordion restrained open-state feedback.
|
|
865
|
+
|
|
866
|
+
- **Root:** `[data-motion-accordion-motion]`
|
|
867
|
+
- **Triggers:** `click`
|
|
868
|
+
- **Performance:** low
|
|
869
|
+
- **Reduced motion:** final — Preserve the authored readable final state.
|
|
870
|
+
- **Without JavaScript:** Content and controls remain available in their authored final state.
|
|
871
|
+
- **Accessibility:** Motion does not change document order; interactive semantics remain native.
|
|
872
|
+
|
|
873
|
+
| Slot | Selector | Required | Count |
|
|
874
|
+
| --- | --- | --- | --- |
|
|
875
|
+
| `panel` | `[data-motion-accordion-panel]` | required | one |
|
|
876
|
+
|
|
877
|
+
_No parameters._
|
|
878
|
+
|
|
879
|
+
```bash
|
|
880
|
+
npx synced-motion add accordion-disclosure
|
|
881
|
+
```
|
|
882
|
+
|
|
883
|
+
### `command-palette`
|
|
884
|
+
|
|
885
|
+
Open a searchable native dialog from a trigger or keyboard shortcut. Provide a fast keyboard-accessible command surface.
|
|
886
|
+
|
|
887
|
+
- **Root:** `[data-motion-command-palette]`
|
|
888
|
+
- **Triggers:** `click`, `focus`
|
|
889
|
+
- **Performance:** medium
|
|
890
|
+
- **Reduced motion:** final — Preserve the authored readable final state.
|
|
891
|
+
- **Without JavaScript:** Content and controls remain available in their authored final state.
|
|
892
|
+
- **Accessibility:** Motion does not change document order; interactive semantics remain native.
|
|
893
|
+
|
|
894
|
+
| Slot | Selector | Required | Count |
|
|
895
|
+
| --- | --- | --- | --- |
|
|
896
|
+
| `dialog` | `[data-motion-overlay-dialog]` | required | one |
|
|
897
|
+
| `input` | `[data-motion-command-input]` | required | one |
|
|
898
|
+
|
|
899
|
+
_No parameters._
|
|
900
|
+
|
|
901
|
+
```bash
|
|
902
|
+
npx synced-motion add command-palette
|
|
903
|
+
```
|
|
904
|
+
|
|
905
|
+
## Loops, progress and ambient
|
|
906
|
+
|
|
907
|
+
### `marquee`
|
|
908
|
+
|
|
909
|
+
Run a seamless transform driven content loop. Create a pauseable, reduced-motion-safe horizontal loop.
|
|
910
|
+
|
|
911
|
+
- **Root:** `[data-motion-marquee]`
|
|
912
|
+
- **Triggers:** `load`, `viewport`
|
|
913
|
+
- **Performance:** medium
|
|
914
|
+
- **Reduced motion:** final — Preserve the authored readable final state.
|
|
915
|
+
- **Without JavaScript:** Content and controls remain available in their authored final state.
|
|
916
|
+
- **Accessibility:** Motion does not change document order; interactive semantics remain native.
|
|
917
|
+
|
|
918
|
+
| Slot | Selector | Required | Count |
|
|
919
|
+
| --- | --- | --- | --- |
|
|
920
|
+
| `track` | `[data-motion-marquee-track]` | required | one |
|
|
921
|
+
|
|
922
|
+
_No parameters._
|
|
923
|
+
|
|
924
|
+
```bash
|
|
925
|
+
npx synced-motion add marquee
|
|
926
|
+
```
|
|
927
|
+
|
|
928
|
+
### `counter-value`
|
|
929
|
+
|
|
930
|
+
Count a readable value toward its authored result. Emphasize a metric without replacing its accessible output.
|
|
931
|
+
|
|
932
|
+
- **Root:** `[data-motion-counter]`
|
|
933
|
+
- **Triggers:** `viewport`
|
|
934
|
+
- **Performance:** medium
|
|
935
|
+
- **Reduced motion:** final — Preserve the authored readable final state.
|
|
936
|
+
- **Without JavaScript:** Content and controls remain available in their authored final state.
|
|
937
|
+
- **Accessibility:** Motion does not change document order; interactive semantics remain native.
|
|
938
|
+
|
|
939
|
+
| Slot | Selector | Required | Count |
|
|
940
|
+
| --- | --- | --- | --- |
|
|
941
|
+
| `value` | `[data-motion-counter-value]` | optional | one |
|
|
942
|
+
|
|
943
|
+
_No parameters._
|
|
944
|
+
|
|
945
|
+
```bash
|
|
946
|
+
npx synced-motion add counter-value
|
|
947
|
+
```
|
|
948
|
+
|
|
949
|
+
### `progress-ring`
|
|
950
|
+
|
|
951
|
+
Draw an SVG progress ring to a bounded value. Show nonessential progress with a readable text equivalent.
|
|
952
|
+
|
|
953
|
+
> **Needs DrawSVGPlugin.** Import from `@syncedco/motion/full`, or pass the plugin through `dependencies`.
|
|
954
|
+
|
|
955
|
+
- **Root:** `[data-motion-progress-ring]`
|
|
956
|
+
- **Triggers:** `viewport`
|
|
957
|
+
- **Performance:** medium
|
|
958
|
+
- **Reduced motion:** final — Preserve the authored readable final state.
|
|
959
|
+
- **Without JavaScript:** Content and controls remain available in their authored final state.
|
|
960
|
+
- **Accessibility:** Motion does not change document order; interactive semantics remain native.
|
|
961
|
+
|
|
962
|
+
| Slot | Selector | Required | Count |
|
|
963
|
+
| --- | --- | --- | --- |
|
|
964
|
+
| `ring` | `[data-motion-progress-ring-value]` | required | one |
|
|
965
|
+
| `label` | `[data-motion-progress-ring-label]` | optional | one |
|
|
966
|
+
|
|
967
|
+
_No parameters._
|
|
968
|
+
|
|
969
|
+
```bash
|
|
970
|
+
npx synced-motion add progress-ring
|
|
971
|
+
```
|
|
972
|
+
|
|
973
|
+
### `ambient-float`
|
|
974
|
+
|
|
975
|
+
Float a decorative element while it is in view. Add restrained ambient movement without changing layout.
|
|
976
|
+
|
|
977
|
+
- **Root:** `[data-motion-ambient-float]`
|
|
978
|
+
- **Triggers:** `viewport`
|
|
979
|
+
- **Performance:** medium
|
|
980
|
+
- **Reduced motion:** final — Preserve the authored readable final state.
|
|
981
|
+
- **Without JavaScript:** Content and controls remain available in their authored final state.
|
|
982
|
+
- **Accessibility:** Motion does not change document order; interactive semantics remain native.
|
|
983
|
+
|
|
984
|
+
_The root element is the only target._
|
|
985
|
+
|
|
986
|
+
_No parameters._
|
|
987
|
+
|
|
988
|
+
```bash
|
|
989
|
+
npx synced-motion add ambient-float
|
|
990
|
+
```
|
|
991
|
+
|
|
992
|
+
### `looping-logo-belt`
|
|
993
|
+
|
|
994
|
+
Loop a duplicated logo track with viewport pausing. Present partner marks in a continuous reduced-motion-safe belt.
|
|
995
|
+
|
|
996
|
+
- **Root:** `[data-motion-logo-belt]`
|
|
997
|
+
- **Triggers:** `load`, `viewport`
|
|
998
|
+
- **Performance:** medium
|
|
999
|
+
- **Reduced motion:** final — Preserve the authored readable final state.
|
|
1000
|
+
- **Without JavaScript:** Content and controls remain available in their authored final state.
|
|
1001
|
+
- **Accessibility:** Motion does not change document order; interactive semantics remain native.
|
|
1002
|
+
|
|
1003
|
+
| Slot | Selector | Required | Count |
|
|
1004
|
+
| --- | --- | --- | --- |
|
|
1005
|
+
| `track` | `[data-motion-logo-belt-track]` | required | one |
|
|
1006
|
+
|
|
1007
|
+
_No parameters._
|
|
1008
|
+
|
|
1009
|
+
```bash
|
|
1010
|
+
npx synced-motion add looping-logo-belt
|
|
1011
|
+
```
|
|
1012
|
+
|
|
1013
|
+
## FLIP and layout
|
|
1014
|
+
|
|
1015
|
+
### `flip-list-reorder`
|
|
1016
|
+
|
|
1017
|
+
Animate application-owned list reordering through FLIP. Preserve spatial context when a semantic list changes order.
|
|
1018
|
+
|
|
1019
|
+
> **Needs Flip.** Import from `@syncedco/motion/full`, or pass the plugin through `dependencies`.
|
|
1020
|
+
|
|
1021
|
+
- **Root:** `[data-motion-flip-list]`
|
|
1022
|
+
- **Triggers:** `state`
|
|
1023
|
+
- **Performance:** high
|
|
1024
|
+
- **Reduced motion:** final — Preserve the authored readable final state.
|
|
1025
|
+
- **Without JavaScript:** Content and controls remain available in their authored final state.
|
|
1026
|
+
- **Accessibility:** Motion does not change document order; interactive semantics remain native.
|
|
1027
|
+
|
|
1028
|
+
| Slot | Selector | Required | Count |
|
|
1029
|
+
| --- | --- | --- | --- |
|
|
1030
|
+
| `items` | `[data-motion-flip-item]` | required | many |
|
|
1031
|
+
|
|
1032
|
+
_No parameters._
|
|
1033
|
+
|
|
1034
|
+
```bash
|
|
1035
|
+
npx synced-motion add flip-list-reorder
|
|
1036
|
+
```
|
|
1037
|
+
|
|
1038
|
+
### `flip-card-to-detail`
|
|
1039
|
+
|
|
1040
|
+
Expand a card detail while retaining spatial continuity. Reveal card detail from a native action without disorienting layout jumps.
|
|
1041
|
+
|
|
1042
|
+
> **Needs Flip.** Import from `@syncedco/motion/full`, or pass the plugin through `dependencies`.
|
|
1043
|
+
|
|
1044
|
+
- **Root:** `[data-motion-flip-card]`
|
|
1045
|
+
- **Triggers:** `click`
|
|
1046
|
+
- **Performance:** high
|
|
1047
|
+
- **Reduced motion:** final — Preserve the authored readable final state.
|
|
1048
|
+
- **Without JavaScript:** Content and controls remain available in their authored final state.
|
|
1049
|
+
- **Accessibility:** Motion does not change document order; interactive semantics remain native.
|
|
1050
|
+
|
|
1051
|
+
| Slot | Selector | Required | Count |
|
|
1052
|
+
| --- | --- | --- | --- |
|
|
1053
|
+
| `trigger` | `[data-motion-flip-card-trigger]` | required | one |
|
|
1054
|
+
| `detail` | `[data-motion-flip-card-detail]` | required | one |
|
|
1055
|
+
|
|
1056
|
+
_No parameters._
|
|
1057
|
+
|
|
1058
|
+
```bash
|
|
1059
|
+
npx synced-motion add flip-card-to-detail
|
|
1060
|
+
```
|
|
1061
|
+
|
|
1062
|
+
### `flip-filter-grid`
|
|
1063
|
+
|
|
1064
|
+
Animate a semantic filtered grid between result sets. Keep items spatially understandable while native filter controls update results.
|
|
1065
|
+
|
|
1066
|
+
> **Needs Flip.** Import from `@syncedco/motion/full`, or pass the plugin through `dependencies`.
|
|
1067
|
+
|
|
1068
|
+
- **Root:** `[data-motion-flip-filter]`
|
|
1069
|
+
- **Triggers:** `click`
|
|
1070
|
+
- **Performance:** high
|
|
1071
|
+
- **Reduced motion:** final — Preserve the authored readable final state.
|
|
1072
|
+
- **Without JavaScript:** Content and controls remain available in their authored final state.
|
|
1073
|
+
- **Accessibility:** Motion does not change document order; interactive semantics remain native.
|
|
1074
|
+
|
|
1075
|
+
| Slot | Selector | Required | Count |
|
|
1076
|
+
| --- | --- | --- | --- |
|
|
1077
|
+
| `controls` | `[data-motion-filter-control]` | required | many |
|
|
1078
|
+
| `items` | `[data-motion-filter-item]` | required | many |
|
|
1079
|
+
|
|
1080
|
+
_No parameters._
|
|
1081
|
+
|
|
1082
|
+
```bash
|
|
1083
|
+
npx synced-motion add flip-filter-grid
|
|
1084
|
+
```
|
|
1085
|
+
|
|
1086
|
+
### `flip-nav-indicator`
|
|
1087
|
+
|
|
1088
|
+
Move an inert indicator between semantic navigation items. Reinforce navigation focus and current state without changing semantics.
|
|
1089
|
+
|
|
1090
|
+
> **Needs Flip.** Import from `@syncedco/motion/full`, or pass the plugin through `dependencies`.
|
|
1091
|
+
|
|
1092
|
+
- **Root:** `[data-motion-flip-nav]`
|
|
1093
|
+
- **Triggers:** `focus`, `click`
|
|
1094
|
+
- **Performance:** medium
|
|
1095
|
+
- **Reduced motion:** final — Preserve the authored readable final state.
|
|
1096
|
+
- **Without JavaScript:** Content and controls remain available in their authored final state.
|
|
1097
|
+
- **Accessibility:** Motion does not change document order; interactive semantics remain native.
|
|
1098
|
+
|
|
1099
|
+
| Slot | Selector | Required | Count |
|
|
1100
|
+
| --- | --- | --- | --- |
|
|
1101
|
+
| `items` | `[data-motion-flip-nav-item]` | required | many |
|
|
1102
|
+
| `indicator` | `[data-motion-flip-nav-indicator]` | required | one |
|
|
1103
|
+
|
|
1104
|
+
_No parameters._
|
|
1105
|
+
|
|
1106
|
+
```bash
|
|
1107
|
+
npx synced-motion add flip-nav-indicator
|
|
1108
|
+
```
|
|
1109
|
+
|
|
1110
|
+
### `layout-accordion-grid`
|
|
1111
|
+
|
|
1112
|
+
Animate one expanded grid item while controls retain native semantics. Explore dense content with clear spatial continuity.
|
|
1113
|
+
|
|
1114
|
+
> **Needs Flip.** Import from `@syncedco/motion/full`, or pass the plugin through `dependencies`.
|
|
1115
|
+
|
|
1116
|
+
- **Root:** `[data-motion-layout-accordion-grid]`
|
|
1117
|
+
- **Triggers:** `click`
|
|
1118
|
+
- **Performance:** high
|
|
1119
|
+
- **Reduced motion:** final — Preserve the authored readable final state.
|
|
1120
|
+
- **Without JavaScript:** Content and controls remain available in their authored final state.
|
|
1121
|
+
- **Accessibility:** Motion does not change document order; interactive semantics remain native.
|
|
1122
|
+
|
|
1123
|
+
| Slot | Selector | Required | Count |
|
|
1124
|
+
| --- | --- | --- | --- |
|
|
1125
|
+
| `items` | `[data-motion-layout-item]` | required | many |
|
|
1126
|
+
| `triggers` | `[data-motion-layout-trigger]` | required | many |
|
|
1127
|
+
|
|
1128
|
+
_No parameters._
|
|
1129
|
+
|
|
1130
|
+
```bash
|
|
1131
|
+
npx synced-motion add layout-accordion-grid
|
|
1132
|
+
```
|
|
1133
|
+
|
|
1134
|
+
## SVG, path and morph
|
|
1135
|
+
|
|
1136
|
+
### `svg-line-draw`
|
|
1137
|
+
|
|
1138
|
+
Draw stroked SVG geometry as it enters the viewport. Introduce explanatory line art without hiding its meaning.
|
|
1139
|
+
|
|
1140
|
+
> **Needs DrawSVGPlugin.** Import from `@syncedco/motion/full`, or pass the plugin through `dependencies`.
|
|
1141
|
+
|
|
1142
|
+
- **Root:** `[data-motion-svg-line-draw]`
|
|
1143
|
+
- **Triggers:** `viewport`
|
|
1144
|
+
- **Performance:** medium
|
|
1145
|
+
- **Reduced motion:** final — Preserve the authored readable final state.
|
|
1146
|
+
- **Without JavaScript:** Content and controls remain available in their authored final state.
|
|
1147
|
+
- **Accessibility:** Motion does not change document order; interactive semantics remain native.
|
|
1148
|
+
|
|
1149
|
+
_The root element is the only target._
|
|
1150
|
+
|
|
1151
|
+
_No parameters._
|
|
1152
|
+
|
|
1153
|
+
```bash
|
|
1154
|
+
npx synced-motion add svg-line-draw
|
|
1155
|
+
```
|
|
1156
|
+
|
|
1157
|
+
### `svg-path-morph`
|
|
1158
|
+
|
|
1159
|
+
Morph between compatible SVG path states from a native action. Show a meaningful visual state change in a compact illustration.
|
|
1160
|
+
|
|
1161
|
+
> **Needs MorphSVGPlugin.** Import from `@syncedco/motion/full`, or pass the plugin through `dependencies`.
|
|
1162
|
+
|
|
1163
|
+
- **Root:** `[data-motion-svg-morph]`
|
|
1164
|
+
- **Triggers:** `click`
|
|
1165
|
+
- **Performance:** medium
|
|
1166
|
+
- **Reduced motion:** final — Preserve the authored readable final state.
|
|
1167
|
+
- **Without JavaScript:** Content and controls remain available in their authored final state.
|
|
1168
|
+
- **Accessibility:** Motion does not change document order; interactive semantics remain native.
|
|
1169
|
+
|
|
1170
|
+
| Slot | Selector | Required | Count |
|
|
1171
|
+
| --- | --- | --- | --- |
|
|
1172
|
+
| `source` | `[data-motion-svg-morph-source]` | required | one |
|
|
1173
|
+
| `target` | `[data-motion-svg-morph-target]` | required | one |
|
|
1174
|
+
| `trigger` | `[data-motion-svg-trigger]` | required | one |
|
|
1175
|
+
|
|
1176
|
+
_No parameters._
|
|
1177
|
+
|
|
1178
|
+
```bash
|
|
1179
|
+
npx synced-motion add svg-path-morph
|
|
1180
|
+
```
|
|
1181
|
+
|
|
1182
|
+
### `svg-icon-state`
|
|
1183
|
+
|
|
1184
|
+
Morph a controlled icon between two pressed states. Reinforce a button state without replacing its accessible name.
|
|
1185
|
+
|
|
1186
|
+
> **Needs MorphSVGPlugin.** Import from `@syncedco/motion/full`, or pass the plugin through `dependencies`.
|
|
1187
|
+
|
|
1188
|
+
- **Root:** `[data-motion-svg-icon-state]`
|
|
1189
|
+
- **Triggers:** `click`
|
|
1190
|
+
- **Performance:** medium
|
|
1191
|
+
- **Reduced motion:** final — Preserve the authored readable final state.
|
|
1192
|
+
- **Without JavaScript:** Content and controls remain available in their authored final state.
|
|
1193
|
+
- **Accessibility:** Motion does not change document order; interactive semantics remain native.
|
|
1194
|
+
|
|
1195
|
+
| Slot | Selector | Required | Count |
|
|
1196
|
+
| --- | --- | --- | --- |
|
|
1197
|
+
| `source` | `[data-motion-svg-icon-source]` | required | one |
|
|
1198
|
+
| `target` | `[data-motion-svg-icon-target]` | required | one |
|
|
1199
|
+
| `trigger` | `[data-motion-svg-trigger]` | required | one |
|
|
1200
|
+
|
|
1201
|
+
_No parameters._
|
|
1202
|
+
|
|
1203
|
+
```bash
|
|
1204
|
+
npx synced-motion add svg-icon-state
|
|
1205
|
+
```
|
|
1206
|
+
|
|
1207
|
+
### `svg-orbit`
|
|
1208
|
+
|
|
1209
|
+
Move a decorative subject along an authored SVG path. Connect scroll progress to a bounded explanatory path.
|
|
1210
|
+
|
|
1211
|
+
> **Needs MotionPathPlugin.** Import from `@syncedco/motion/full`, or pass the plugin through `dependencies`.
|
|
1212
|
+
|
|
1213
|
+
- **Root:** `[data-motion-svg-orbit]`
|
|
1214
|
+
- **Triggers:** `scroll`
|
|
1215
|
+
- **Performance:** high
|
|
1216
|
+
- **Reduced motion:** final — Preserve the authored readable final state.
|
|
1217
|
+
- **Without JavaScript:** Content and controls remain available in their authored final state.
|
|
1218
|
+
- **Accessibility:** Motion does not change document order; interactive semantics remain native.
|
|
1219
|
+
|
|
1220
|
+
| Slot | Selector | Required | Count |
|
|
1221
|
+
| --- | --- | --- | --- |
|
|
1222
|
+
| `subject` | `[data-motion-svg-orbit-subject]` | required | one |
|
|
1223
|
+
| `path` | `[data-motion-svg-orbit-path]` | required | one |
|
|
1224
|
+
|
|
1225
|
+
_No parameters._
|
|
1226
|
+
|
|
1227
|
+
```bash
|
|
1228
|
+
npx synced-motion add svg-orbit
|
|
1229
|
+
```
|
|
1230
|
+
|
|
1231
|
+
### `svg-signature-reveal`
|
|
1232
|
+
|
|
1233
|
+
Draw a multi-stroke signature in authored order. Reveal a decorative signature while leaving the complete mark available without motion.
|
|
1234
|
+
|
|
1235
|
+
> **Needs DrawSVGPlugin.** Import from `@syncedco/motion/full`, or pass the plugin through `dependencies`.
|
|
1236
|
+
|
|
1237
|
+
- **Root:** `[data-motion-svg-signature]`
|
|
1238
|
+
- **Triggers:** `viewport`
|
|
1239
|
+
- **Performance:** medium
|
|
1240
|
+
- **Reduced motion:** final — Preserve the authored readable final state.
|
|
1241
|
+
- **Without JavaScript:** Content and controls remain available in their authored final state.
|
|
1242
|
+
- **Accessibility:** Motion does not change document order; interactive semantics remain native.
|
|
1243
|
+
|
|
1244
|
+
_The root element is the only target._
|
|
1245
|
+
|
|
1246
|
+
_No parameters._
|
|
1247
|
+
|
|
1248
|
+
```bash
|
|
1249
|
+
npx synced-motion add svg-signature-reveal
|
|
1250
|
+
```
|
|
1251
|
+
|
|
1252
|
+
## Page load and routing
|
|
1253
|
+
|
|
1254
|
+
### `page-load-hero`
|
|
1255
|
+
|
|
1256
|
+
Sequence local hero content after the page becomes interactive. Establish hierarchy with a restrained initial page entrance.
|
|
1257
|
+
|
|
1258
|
+
- **Root:** `[data-motion-page-load-hero]`
|
|
1259
|
+
- **Triggers:** `load`
|
|
1260
|
+
- **Performance:** medium
|
|
1261
|
+
- **Reduced motion:** final — Preserve the authored readable final state.
|
|
1262
|
+
- **Without JavaScript:** Content and controls remain available in their authored final state.
|
|
1263
|
+
- **Accessibility:** Motion does not change document order; interactive semantics remain native.
|
|
1264
|
+
|
|
1265
|
+
| Slot | Selector | Required | Count |
|
|
1266
|
+
| --- | --- | --- | --- |
|
|
1267
|
+
| `items` | `[data-motion-page-load-item]` | required | many |
|
|
1268
|
+
|
|
1269
|
+
_No parameters._
|
|
1270
|
+
|
|
1271
|
+
```bash
|
|
1272
|
+
npx synced-motion add page-load-hero
|
|
1273
|
+
```
|
|
1274
|
+
|
|
1275
|
+
### `page-load-brand-mark`
|
|
1276
|
+
|
|
1277
|
+
Introduce a local brand mark without blocking content. Give a brand signature a short, nonblocking entrance.
|
|
1278
|
+
|
|
1279
|
+
- **Root:** `[data-motion-page-load-brand]`
|
|
1280
|
+
- **Triggers:** `load`
|
|
1281
|
+
- **Performance:** medium
|
|
1282
|
+
- **Reduced motion:** final — Preserve the authored readable final state.
|
|
1283
|
+
- **Without JavaScript:** Content and controls remain available in their authored final state.
|
|
1284
|
+
- **Accessibility:** Motion does not change document order; interactive semantics remain native.
|
|
1285
|
+
|
|
1286
|
+
| Slot | Selector | Required | Count |
|
|
1287
|
+
| --- | --- | --- | --- |
|
|
1288
|
+
| `mark` | `[data-motion-brand-mark]` | optional | one |
|
|
1289
|
+
|
|
1290
|
+
_No parameters._
|
|
1291
|
+
|
|
1292
|
+
```bash
|
|
1293
|
+
npx synced-motion add page-load-brand-mark
|
|
1294
|
+
```
|
|
1295
|
+
|
|
1296
|
+
### `route-fade`
|
|
1297
|
+
|
|
1298
|
+
Coordinate outgoing and incoming route regions through a scoped event. Soften application-owned route replacement without owning navigation.
|
|
1299
|
+
|
|
1300
|
+
- **Root:** `[data-motion-route-fade]`
|
|
1301
|
+
- **Triggers:** `route`
|
|
1302
|
+
- **Performance:** medium
|
|
1303
|
+
- **Reduced motion:** final — Preserve the authored readable final state.
|
|
1304
|
+
- **Without JavaScript:** Content and controls remain available in their authored final state.
|
|
1305
|
+
- **Accessibility:** Motion does not change document order; interactive semantics remain native.
|
|
1306
|
+
|
|
1307
|
+
| Slot | Selector | Required | Count |
|
|
1308
|
+
| --- | --- | --- | --- |
|
|
1309
|
+
| `outgoing` | `[data-motion-route-outgoing]` | optional | one |
|
|
1310
|
+
| `incoming` | `[data-motion-route-incoming]` | optional | one |
|
|
1311
|
+
|
|
1312
|
+
_No parameters._
|
|
1313
|
+
|
|
1314
|
+
```bash
|
|
1315
|
+
npx synced-motion add route-fade
|
|
1316
|
+
```
|
|
1317
|
+
|
|
1318
|
+
### `route-shared-media`
|
|
1319
|
+
|
|
1320
|
+
Animate application-owned shared media placement through FLIP. Preserve visual continuity while a router changes page structure.
|
|
1321
|
+
|
|
1322
|
+
> **Needs Flip.** Import from `@syncedco/motion/full`, or pass the plugin through `dependencies`.
|
|
1323
|
+
|
|
1324
|
+
- **Root:** `[data-motion-route-shared-media]`
|
|
1325
|
+
- **Triggers:** `route`
|
|
1326
|
+
- **Performance:** high
|
|
1327
|
+
- **Reduced motion:** final — Preserve the authored readable final state.
|
|
1328
|
+
- **Without JavaScript:** Content and controls remain available in their authored final state.
|
|
1329
|
+
- **Accessibility:** Motion does not change document order; interactive semantics remain native.
|
|
1330
|
+
|
|
1331
|
+
| Slot | Selector | Required | Count |
|
|
1332
|
+
| --- | --- | --- | --- |
|
|
1333
|
+
| `media` | `[data-motion-shared-media]` | required | many |
|
|
1334
|
+
|
|
1335
|
+
_No parameters._
|
|
1336
|
+
|
|
1337
|
+
```bash
|
|
1338
|
+
npx synced-motion add route-shared-media
|
|
1339
|
+
```
|
|
1340
|
+
|
|
1341
|
+
### `route-scroll-restore`
|
|
1342
|
+
|
|
1343
|
+
Restore application-provided scroll position after route completion. Keep route navigation position predictable and refresh scroll measurements.
|
|
1344
|
+
|
|
1345
|
+
- **Root:** `[data-motion-route-scroll-restore]`
|
|
1346
|
+
- **Triggers:** `route`
|
|
1347
|
+
- **Performance:** medium
|
|
1348
|
+
- **Reduced motion:** final — Preserve the authored readable final state.
|
|
1349
|
+
- **Without JavaScript:** Content and controls remain available in their authored final state.
|
|
1350
|
+
- **Accessibility:** Motion does not change document order; interactive semantics remain native.
|
|
1351
|
+
|
|
1352
|
+
_The root element is the only target._
|
|
1353
|
+
|
|
1354
|
+
_No parameters._
|
|
1355
|
+
|
|
1356
|
+
```bash
|
|
1357
|
+
npx synced-motion add route-scroll-restore
|
|
1358
|
+
```
|