compreel

Motion vocabulary · Text input typing

Paste-in

⌘V lands the whole text at once with a selection flash, then the send press and the result.

Live loop · 6 s · 1920×1080 at 24 fps

Parameters

ParameterTypeWhat it does
text (required)stringwhat is typed (or pasted)
placeholderstringgrey text in the empty field
resultstring | string[]what flips in after the submit: a title line, then up to 3 lines
resultSrc"/assets/<screen>.jpg"a real screen as the result card instead of lines
cpsnumber
Default: 15
characters per second (a person types 8-20)
mistype{at, wrong} | falsea typo and its fix at char index `at`
x / y / widthpxfield centre x, top y, width
ease{"<move>": ease}retune any named move (see the entry's moves): a preset name ("out-expo"), a cubic-bezier [x1, y1, x2, y2], {spring: [hz, damping]} or {trapezoid: [accel, decel]}. A wrong move name or curve throws, it never falls back. A move measured from a reference clip (the replica workbench's measure/*.json, frame-keyed) becomes a curve without conversion: MV.fitEase(doc, "x", {from: 133, to: 142}) or `motion-fit <file> --measure x --from 133 --to 142 --ease`
brandhex
Default: #6B5BFF
the site's brand colour; the component derives its accent (>= 3:1 on the stage), surfaces and ink from it
stage"dark" | "light"
Default: "dark"
the stage the component sits on
displayfont stem
Default: "Inter-Bold"
headline stem; name it in the call so the runtime loads it
bodyfont stem
Default: "Inter-Regular"
UI / body stem; name it in the call so the runtime loads it
start_msms
Default: 300
when the component starts, ms into the shot
backgroundboolean
Default: false
draw the stage background (off: transparent over the shot's own stage)
place{x, y, w, h, z?}the component's place in the shot's layout: it fits its 1920x1080 composition into this stage rect (centred, aspect kept); z orders components front to back. Default: the whole stage

Moves and their curves

Every move is eased on its own. Retune one with ease: { "<move>": <curve> }, a curve name or cubic-bezier handles.

MoveCurveWhat it does
chip.in{"spring":[2.22,0.85]}the paste chip popping up above the field
chip.outlinearthe chip fading after the paste
paste.highlightout-quadthe pasted text's highlight fading
send.onlinearthe send button turning to the brand colour at the first key
send.downout-quadthe send button pressing down to 0.84x
send.release{"spring":[2.38,0.82]}the send button springing back after the press
rippleout-cubicthe ring spreading from the send button
submit.riseout-quintafter the submit, the field rising out of the way
card.flip{"spring":[1.33,0.88]}each result card flipping down into place (110 ms apart)

This demo

variant"paste"
text"LaunchReel turns a product page into a launch film."
result["Script ready","Six shots planned"]
brand#E0563B
stagedark
<script src="/vendor/motion-vocab.js"></script>
MV.bind("s3", MV.typeInput(el, {"variant":"paste","text":"LaunchReel turns a product page into a launch film.","result":["Script ready","Six shots planned"],"brand":"#E0563B","stage":"dark","display":"Inter-Bold","body":"Inter-Regular"}));

When to use it in a launch film

When the input is long (a paragraph, a document, a link) and typing it would waste the viewer's time.

Why it works

A paste is faster than typing and still shows the input; the flash says the text arrived.

Do not combine with

  • another typing component on screen at the same time (one caret per frame)
  • a line longer than about 60 characters (it reads as a wall of text at 720p)

Job in the film

  • Hook
  • Feature

Natural length

3.0–5.0 s

Make a film with these moves in LaunchReel

More text input typing

All motion components →