@@ -412,7 +412,8 @@ All components are discriminated by `"type"`. Rendered in array order (first = b
412412
413413| Effect name | Fields | Description |
414414| --- | --- | --- |
415- | * preset name* | ` delay ` , ` duration ` , ` loop ` | Any of the 39 presets (e.g. ` fade_in_up ` , ` scale_in ` ) |
415+ | * preset name* | ` delay ` , ` duration ` , ` loop ` , ` overshoot ` | Any of the 39 presets (e.g. ` fade_in_up ` , ` scale_in ` ) |
416+ | * char preset* | ` delay ` , ` duration ` , ` stagger ` , ` granularity ` , ` easing ` , ` overshoot ` | Per-char/word animation: ` char_scale_in ` , ` char_fade_in ` , ` char_wave ` , ` char_bounce ` , ` char_rotate_in ` , ` char_slide_up ` |
416417| ` glow ` | ` color ` , ` radius ` , ` intensity ` | Luminous halo effect |
417418| ` wiggle ` | ` property ` , ` amplitude ` , ` frequency ` , ` mode ` , ` seed ` , ... | Procedural noise animation |
418419| ` orbit ` | ` radius_x ` , ` radius_y ` , ` speed ` , ` depth ` , ` tilt ` , ... | Elliptical/circular orbital motion with pseudo-3D depth |
@@ -426,6 +427,7 @@ All components are discriminated by `"type"`. Rendered in array order (first = b
426427| ` delay ` | f64 | ` 0 ` | Delay before animation starts (seconds) |
427428| ` duration ` | f64 | ` 0.8 ` | Animation duration (seconds) |
428429| ` loop ` | bool | ` false ` | Loop the animation continuously |
430+ | ` overshoot ` | f64 | ` 0.08 ` | Overshoot/anticipation intensity for ` scale_in ` /` scale_out ` (0.0 = none) |
429431
430432** Glow fields:**
431433
@@ -456,7 +458,7 @@ All components are discriminated by `"type"`. Rendered in array order (first = b
456458}
457459```
458460
459- ** Root fields:** ` content ` (required), ` max_width ` , ` char-animation `
461+ ** Root fields:** ` content ` (required), ` max_width `
460462
461463| Style field | Type | Default |
462464| ----------------- | -------- | ---------- |
@@ -472,48 +474,42 @@ All components are discriminated by `"type"`. Rendered in array order (first = b
472474| ` stroke ` | object | ` null ` — ` { "color": "#000", "width": 2 } ` |
473475| ` text-background ` | object | ` null ` — ` { "color": "#000", "padding": 4, "corner_radius": 4 } ` |
474476
475- ** Per-character / per-word animation (` char- animation ` field ):**
477+ ** Per-character / per-word animation (char animation presets ):**
476478
477- Animates each character or word independently with staggered timing.
479+ Animates each character or word independently with staggered timing. Use ` char_* ` animation presets inside ` style.animation ` :
478480
479481``` json
480482{
481483 "type" : " text" ,
482484 "content" : " Hello World" ,
483- "char-animation" : {
484- "preset" : " scale_in" ,
485- "stagger" : 0.03 ,
486- "duration" : 0.4 ,
487- "delay" : 0.2 ,
488- "easing" : " ease_out" ,
489- "granularity" : " char"
490- },
491- "style" : { "font-size" : 64 , "color" : " #FFFFFF" }
485+ "style" : {
486+ "font-size" : 64 , "color" : " #FFFFFF" ,
487+ "animation" : [{ "name" : " char_scale_in" , "stagger" : 0.03 , "duration" : 0.4 , "delay" : 0.2 , "easing" : " ease_out" }]
488+ }
492489}
493490```
494491
495- | Field | Type | Default | Description |
496- | ------------- | ------ | ------------ | ------------------------------------------------ |
497- | ` preset ` | enum | ` "scale_in" ` | ` "scale_in" ` , ` "fade_in" ` , ` "wave" ` , ` "bounce" ` , ` "rotate_in" ` , ` "slide_up" ` |
498- | ` stagger ` | f32 | ` 0.03 ` | Delay between each unit (seconds) |
499- | ` duration ` | f32 | ` 0.4 ` | Duration of each unit's animation (seconds) |
500- | ` delay ` | f32 | ` 0.0 ` | Initial delay before the first unit starts |
501- | ` easing ` | string | ` "linear" ` | Easing function (same as keyframe easings) |
502- | ` granularity ` | enum | ` "char" ` | ` "char" ` (per-character) or ` "word" ` (per-word) |
492+ ** Char animation presets:** ` char_scale_in ` , ` char_fade_in ` , ` char_wave ` , ` char_bounce ` , ` char_rotate_in ` , ` char_slide_up `
493+
494+ | Field | Type | Default | Description |
495+ | ------------- | ------ | ---------- | ------------------------------------------------ |
496+ | ` stagger ` | f64 | ` 0.03 ` | Delay between each unit (seconds) |
497+ | ` duration ` | f64 | ` 0.4 ` | Duration of each unit's animation (seconds) |
498+ | ` delay ` | f64 | ` 0.0 ` | Initial delay before the first unit starts |
499+ | ` easing ` | string | ` "linear" ` | Easing function (same as keyframe easings) |
500+ | ` granularity ` | enum | ` "char" ` | ` "char" ` (per-character) or ` "word" ` (per-word) |
501+ | ` overshoot ` | f64 | ` 0.08 ` | Overshoot intensity for ` char_scale_in ` /` char_bounce ` (0.0 = none) |
503502
504503** Per-word mode** (` "granularity": "word" ` ) splits text by whitespace and animates each word as a unit. Ideal for headline reveals with larger stagger values (0.1-0.3s):
505504
506505``` json
507506{
508507 "type" : " text" ,
509508 "content" : " One platform to rule them all" ,
510- "char-animation" : {
511- "preset" : " fade_in" ,
512- "stagger" : 0.15 ,
513- "duration" : 0.5 ,
514- "granularity" : " word"
515- },
516- "style" : { "font-size" : 56 , "color" : " #FFFFFF" , "font-weight" : " bold" }
509+ "style" : {
510+ "font-size" : 56 , "color" : " #FFFFFF" , "font-weight" : " bold" ,
511+ "animation" : [{ "name" : " char_fade_in" , "stagger" : 0.15 , "duration" : 0.5 , "granularity" : " word" }]
512+ }
517513}
518514```
519515
@@ -1479,6 +1475,7 @@ See Rule 13 for usage guidance.
14791475| 3D | ` flip_in_x ` , ` flip_in_y ` , ` flip_out_x ` , ` flip_out_y ` (3D card flip), ` tilt_in ` (3D tilt with rotate_x + rotate_y) |
14801476| Stroke | ` draw_in ` (animate ` draw_progress ` 0→1 for arrows/connectors/lines), ` stroke_reveal ` (draw_in + fade-in opacity over first 20%) |
14811477| Special | ` typewriter ` , ` wipe_left ` , ` wipe_right ` |
1478+ | Char (text only) | ` char_scale_in ` , ` char_fade_in ` , ` char_wave ` , ` char_bounce ` , ` char_rotate_in ` , ` char_slide_up ` (per-char/word animation, extra fields: ` stagger ` , ` granularity ` , ` overshoot ` ) |
14821479
14831480#### Wiggle (Procedural Noise)
14841481
0 commit comments