Kinetic type. The text reveals unit by unit as p goes 0 to 1: per line, word or character (or all at once), with reveal "mask" (each unit slides up out of a clipped line, the signature designed look), "rise", "drop", "fade" or "blur". Sized in px on the stage, so the composition is identical at any width, and coloured from the stage theme unless a colour is given. Screen readers get the plain text. Standalone it renders fully revealed. Plain HTML and CSS, no script: it moves with the --p custom property that a motion_timeline p track sets, and standalone it renders its final state.
| Surface | Note |
|---|---|
| Prints the final state (type fully revealed, numbers at their values, shapes drawn); no motion | |
| google-chat | Inline CSS functions and custom properties are not supported |
| Field | Type | Required |
|---|---|---|
| text | string (max 4 lines of 60 characters, 160 total; lines split on \n). Default "Text". A word between asterisks (*plan*) takes the accent colour, whichever way the text reveals; two asterisks in a row are a literal one. | required |
| size | integer. Font size px, 10-400. Default 64. | optional |
| font | "sans" | "serif" | "mono" | "display" (optional, default "sans"). display is a heavy grotesque. | optional |
| weight | "regular" | "bold" | "black" (optional, default "bold") | optional |
| mode | "lines" | "words" | "chars" | "block" (optional, default "lines"). What reveals in turn. lines never wraps; more than 120 units falls back to block. | optional |
| reveal | "mask" | "rise" | "drop" | "fade" | "blur" | "bar" | "flap" | "reel" | "pop" | "decode" | "bloom" (optional, default "rise"). bloom condenses each unit in place out of a bright, glowing blur: it starts about 60% brighter with a soft halo and a 0.4em blur at 90% size, and halo, brightness and blur fall away as it sharpens (no slide; blur only defocuses, decode swaps glyphs, bloom adds the glow). Pair with a long overlap (4-8) and mode words or lines so the glow runs through the whole line. pop scales each unit up past full size and settles (an overshoot). decode shows seeded random characters that resolve into each unit (the real text is always in the page; the noise is aria-hidden). bar wipes a coloured highlight bar in behind each unit, then the text appears on it. flap is a slot-reel flip: three decoy glyphs scroll past in each unit before the real one lands (best with mode chars). reel stacks the lines on one row and the second dial (--s) moves the focus down the list: the focused line is sharp, the others dim, shrink and blur with their distance (a scrolling text reel); at --s 1 the last line is in focus. | optional |
| overlap | integer. How many units are mid-reveal at once, 1-8. Higher is softer. Default 3. | optional |
| tracking | number. Letter spacing in em, -0.1 to 0.5. Default -0.02. | optional |
| line_height | number. 0.8-2. Default 1.05. | optional |
| color | "#rrggbb". Default the stage ink. | optional |
| align | "start" | "middle" | "end" (optional, default "start") | optional |
| uppercase | bool. Default false. | optional |
| accent | "#rrggbb". Colour of words wrapped in asterisks. Default the stage accent. | optional |
| accent_gradient | ["#rrggbb", "#rrggbb"]. Two colours that run across the accent words (the ones in asterisks) instead of the flat accent colour. | optional |
| glow | integer. A soft glow behind the type, 0-40 px. Default 0 (off). | optional |
| glow_color | "#rrggbb". Colour of the glow. Default the accent. | optional |
| shine | bool. A band of light that sweeps across the letters as the second dial (--s) goes 0 to 1. Default false. | optional |
| cycle | array (2-6) of strings, max 40 characters each. Words that swap in place with a blur crossfade as the second dial (--s) goes 0 to 1, after the text (or on their own when text is empty): on your phone / the web / the terminal. Take the accent colour. | optional |
| bar | "#rrggbb". Colour of the highlight bar for reveal "bar". Default the stage accent. | optional |
| extrude | integer. Depth in px of a solid 3D extrusion behind the type, 0-30. Default 0. | optional |
| extrude_color | "#rrggbb". Extrusion colour. Default "#0b0b14". | optional |
| extrude_dir | "diagonal" | "down" (optional, default "diagonal"). Which way the extrusion falls. | optional |
| decor | "strike" | "underline" | "highlight". A line that sweeps across each unit (line, word or character) in turn as the second dial (--s) goes 0 to 1: a strike-through (the text dims), an underline, or a marker highlight behind it. With no step track it shows finished. | optional |
| decor_color | "#rrggbb". The sweep. Default the accent. | optional |
| karaoke | "pill" | "color". Lights each unit (use mode words) in turn as --s goes 0 to 1, as a pill behind it or a colour change: the animated caption. Nothing is lit at 0 or 1. | optional |
| split | integer. Red and cyan copies pull apart by this many px at the peak of --s and sit together at 0: the chromatic glitch. 0-60. Default 0 (off). | optional |
| split_a | "#rrggbb". Left copy. Default a hot pink. | optional |
| split_b | "#rrggbb". Right copy. Default cyan. | optional |
| prism | array (2-4) of words, max 14 characters each. A turning 3D prism after the text that cycles the words as the second dial (--s) goes 0 to 1 (one full turn): Build / Ship / Scale. Two words repeat to fill four faces. Needs at least two words, else ignored. | optional |
| order | "forward" | "reverse" | "centre" | "random" (optional, default "forward"). The order units reveal in: reading order, last first, from the middle outwards, or a fixed random order (see order_seed). The step-dial effects (karaoke, decor, wave) keep reading order. | optional |
| order_seed | integer. 0-999. Seeds order random and the noise of reveal decode. Default 3. | optional |
| accent_font | "sans" | "serif" | "mono" | "display". A typeface for the words wrapped in asterisks, so one word can be set in serif inside sans text. Default none (the line face). | optional |
| accent_style | "italic". Sets the asterisk words in italic. Default none. | optional |
| wave | integer. Letters ride a travelling vertical wave of this many px as the second dial (--s) goes 0 to 1, flat at both ends. 0-40. Default 0 (off). Best with mode chars. | optional |
| start_scale | number. 1-12. The whole line starts this many times its size, cropped by the box, and shrinks to its size as p goes 0 to 1: the oversize zoom-down. Default 1 (off). The box hides what falls outside it. | optional |
| caret | bool. A caret follows the unit being revealed and stays on the last one. Use with mode words or chars; lines and block have no caret. Default false. | optional |
{
"type": "motion_text"
}
{
"identifier": "urn:air:a2uicatalog.ai:atom:motion_text",
"displayName": "Motion Text",
"type": "application/vnd.a2ui.atom+json",
"url": "https://a2uicatalog.ai/atoms/motion_text",
"capabilities": [
"web",
"google-meet-stage",
"google-apps-script-web",
"mcp-apps",
"android"
],
"description": "Kinetic type. The text reveals unit by unit as p goes 0 to 1: per line, word or character (or all at once), with reveal \"mask\" (each unit slides up out of a clipped line, the signature designed look), \"rise\", \"drop\", \"fade\" or \"blur\". Sized in px on the stage, so the composition is identical at any width, and coloured from the stage theme unless a colour is given. Screen readers get the plain text. Standalone it renders fully revealed. Plain HTML and CSS, no script: it moves with the --p custom property that a motion_timeline p track sets, and standalone it renders its final state.",
"representativeQueries": [
"show a kinetic type that reveals by line, word or character as progress advances",
"kinetic type. the text reveals unit by unit as p goes 0 to 1: per line, word or character (or all at",
"render a motion text"
]
}
The renderer is an open-source Google Apps Script web app. Deploy your own instance in 4 commands — you own the URL, no dependency on the demo endpoint.
git clone https://github.com/a2uicatalog/a2ui
cd a2ui/apps-script-surface/gas-wired-renderer
clasp push && clasp deploy
Full deploy guide →