From 78ddd2602b9bb40e1b78afec158598ff0f59cfa4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miguel=20=C3=81ngel?= Date: Sun, 17 May 2026 19:57:25 +0000 Subject: [PATCH 1/7] feat(registry): add 15 caption style catalog components Add 15 caption overlay components to the registry, covering a wide range of animation techniques: Standalone origins (6): - caption-pill-karaoke: pill container + karaoke word highlight - caption-neon-accent: multi-color neon glow with wiggle drift - caption-weight-shift: font-weight transition between lines - caption-emoji-pop: emoji + stroked text + horizontal squeeze - caption-editorial-emphasis: dual-font (Inter + Playfair) emphasis - caption-parallax-layers: 3D text layering with vertical stretch Gallery picks (9): - caption-glitch-rgb: RGB chromatic aberration + CRT scanlines - caption-typewriter: green terminal char-by-char with cursor - caption-matrix-decode: scramble-reveal character animation - caption-particle-burst: keyword particle explosions - caption-texture-lava: flowing lava texture mask - caption-clip-wipe: clip-path left-to-right wipe reveal - caption-kinetic-slam: full-screen single-word slam - caption-gradient-fill: gradient-clipped text + elastic bounce - caption-neon-glow: cyan/magenta neon glow accents Each component includes the reusable HTML, a demo composition, and registry-item.json. All use a generic HyperFrames transcript. Co-Authored-By: Claude Sonnet 4.6 --- .../caption-clip-wipe/caption-clip-wipe.html | 170 ++++++++ .../components/caption-clip-wipe/demo.html | 170 ++++++++ .../caption-clip-wipe/registry-item.json | 15 + .../caption-editorial-emphasis.html | 303 ++++++++++++++ .../caption-editorial-emphasis/demo.html | 303 ++++++++++++++ .../registry-item.json | 15 + .../caption-emoji-pop/caption-emoji-pop.html | 367 +++++++++++++++++ .../components/caption-emoji-pop/demo.html | 367 +++++++++++++++++ .../caption-emoji-pop/registry-item.json | 15 + .../caption-glitch-rgb.html | 187 +++++++++ .../components/caption-glitch-rgb/demo.html | 187 +++++++++ .../caption-glitch-rgb/registry-item.json | 15 + .../caption-gradient-fill.html | 187 +++++++++ .../caption-gradient-fill/demo.html | 187 +++++++++ .../caption-gradient-fill/registry-item.json | 15 + .../caption-kinetic-slam.html | 157 +++++++ .../components/caption-kinetic-slam/demo.html | 157 +++++++ .../caption-kinetic-slam/registry-item.json | 15 + .../caption-matrix-decode.html | 197 +++++++++ .../caption-matrix-decode/demo.html | 197 +++++++++ .../caption-matrix-decode/registry-item.json | 15 + .../caption-neon-accent.html | 384 ++++++++++++++++++ .../components/caption-neon-accent/demo.html | 384 ++++++++++++++++++ .../caption-neon-accent/registry-item.json | 15 + .../caption-neon-glow/caption-neon-glow.html | 161 ++++++++ .../components/caption-neon-glow/demo.html | 161 ++++++++ .../caption-neon-glow/registry-item.json | 15 + .../caption-parallax-layers.html | 329 +++++++++++++++ .../caption-parallax-layers/demo.html | 329 +++++++++++++++ .../registry-item.json | 15 + .../caption-particle-burst.html | 212 ++++++++++ .../caption-particle-burst/demo.html | 212 ++++++++++ .../caption-particle-burst/registry-item.json | 15 + .../caption-pill-karaoke.html | 365 +++++++++++++++++ .../components/caption-pill-karaoke/demo.html | 365 +++++++++++++++++ .../caption-pill-karaoke/registry-item.json | 15 + .../caption-texture-lava.html | 172 ++++++++ .../components/caption-texture-lava/demo.html | 172 ++++++++ .../components/caption-texture-lava/lava.png | Bin 0 -> 74455 bytes .../caption-texture-lava/registry-item.json | 15 + .../caption-typewriter.html | 181 +++++++++ .../components/caption-typewriter/demo.html | 181 +++++++++ .../caption-typewriter/registry-item.json | 15 + .../caption-weight-shift.html | 323 +++++++++++++++ .../components/caption-weight-shift/demo.html | 323 +++++++++++++++ .../caption-weight-shift/registry-item.json | 15 + registry/registry.json | 60 +++ 47 files changed, 7675 insertions(+) create mode 100644 registry/components/caption-clip-wipe/caption-clip-wipe.html create mode 100644 registry/components/caption-clip-wipe/demo.html create mode 100644 registry/components/caption-clip-wipe/registry-item.json create mode 100644 registry/components/caption-editorial-emphasis/caption-editorial-emphasis.html create mode 100644 registry/components/caption-editorial-emphasis/demo.html create mode 100644 registry/components/caption-editorial-emphasis/registry-item.json create mode 100644 registry/components/caption-emoji-pop/caption-emoji-pop.html create mode 100644 registry/components/caption-emoji-pop/demo.html create mode 100644 registry/components/caption-emoji-pop/registry-item.json create mode 100644 registry/components/caption-glitch-rgb/caption-glitch-rgb.html create mode 100644 registry/components/caption-glitch-rgb/demo.html create mode 100644 registry/components/caption-glitch-rgb/registry-item.json create mode 100644 registry/components/caption-gradient-fill/caption-gradient-fill.html create mode 100644 registry/components/caption-gradient-fill/demo.html create mode 100644 registry/components/caption-gradient-fill/registry-item.json create mode 100644 registry/components/caption-kinetic-slam/caption-kinetic-slam.html create mode 100644 registry/components/caption-kinetic-slam/demo.html create mode 100644 registry/components/caption-kinetic-slam/registry-item.json create mode 100644 registry/components/caption-matrix-decode/caption-matrix-decode.html create mode 100644 registry/components/caption-matrix-decode/demo.html create mode 100644 registry/components/caption-matrix-decode/registry-item.json create mode 100644 registry/components/caption-neon-accent/caption-neon-accent.html create mode 100644 registry/components/caption-neon-accent/demo.html create mode 100644 registry/components/caption-neon-accent/registry-item.json create mode 100644 registry/components/caption-neon-glow/caption-neon-glow.html create mode 100644 registry/components/caption-neon-glow/demo.html create mode 100644 registry/components/caption-neon-glow/registry-item.json create mode 100644 registry/components/caption-parallax-layers/caption-parallax-layers.html create mode 100644 registry/components/caption-parallax-layers/demo.html create mode 100644 registry/components/caption-parallax-layers/registry-item.json create mode 100644 registry/components/caption-particle-burst/caption-particle-burst.html create mode 100644 registry/components/caption-particle-burst/demo.html create mode 100644 registry/components/caption-particle-burst/registry-item.json create mode 100644 registry/components/caption-pill-karaoke/caption-pill-karaoke.html create mode 100644 registry/components/caption-pill-karaoke/demo.html create mode 100644 registry/components/caption-pill-karaoke/registry-item.json create mode 100644 registry/components/caption-texture-lava/caption-texture-lava.html create mode 100644 registry/components/caption-texture-lava/demo.html create mode 100644 registry/components/caption-texture-lava/lava.png create mode 100644 registry/components/caption-texture-lava/registry-item.json create mode 100644 registry/components/caption-typewriter/caption-typewriter.html create mode 100644 registry/components/caption-typewriter/demo.html create mode 100644 registry/components/caption-typewriter/registry-item.json create mode 100644 registry/components/caption-weight-shift/caption-weight-shift.html create mode 100644 registry/components/caption-weight-shift/demo.html create mode 100644 registry/components/caption-weight-shift/registry-item.json diff --git a/registry/components/caption-clip-wipe/caption-clip-wipe.html b/registry/components/caption-clip-wipe/caption-clip-wipe.html new file mode 100644 index 000000000..a793d6763 --- /dev/null +++ b/registry/components/caption-clip-wipe/caption-clip-wipe.html @@ -0,0 +1,170 @@ + + + + + + Clip Wipe + + + + + + + +
+ +
+
+
+ + + + diff --git a/registry/components/caption-clip-wipe/demo.html b/registry/components/caption-clip-wipe/demo.html new file mode 100644 index 000000000..a793d6763 --- /dev/null +++ b/registry/components/caption-clip-wipe/demo.html @@ -0,0 +1,170 @@ + + + + + + Clip Wipe + + + + + + + +
+ +
+
+
+ + + + diff --git a/registry/components/caption-clip-wipe/registry-item.json b/registry/components/caption-clip-wipe/registry-item.json new file mode 100644 index 000000000..e1a545bb8 --- /dev/null +++ b/registry/components/caption-clip-wipe/registry-item.json @@ -0,0 +1,15 @@ +{ + "$schema": "https://hyperframes.heygen.com/schema/registry-item.json", + "name": "caption-clip-wipe", + "type": "hyperframes:component", + "title": "Clip Wipe", + "description": "Left-to-right clip-path wipe reveal per word", + "tags": ["captions", "caption-style", "wipe", "clip-path", "reveal"], + "files": [ + { + "path": "caption-clip-wipe.html", + "target": "compositions/components/caption-clip-wipe.html", + "type": "hyperframes:snippet" + } + ] +} diff --git a/registry/components/caption-editorial-emphasis/caption-editorial-emphasis.html b/registry/components/caption-editorial-emphasis/caption-editorial-emphasis.html new file mode 100644 index 000000000..a9c2e2eb6 --- /dev/null +++ b/registry/components/caption-editorial-emphasis/caption-editorial-emphasis.html @@ -0,0 +1,303 @@ + + + + + + Editorial Emphasis + + + + + + + +
+ + + +
+ + + + diff --git a/registry/components/caption-editorial-emphasis/demo.html b/registry/components/caption-editorial-emphasis/demo.html new file mode 100644 index 000000000..a9c2e2eb6 --- /dev/null +++ b/registry/components/caption-editorial-emphasis/demo.html @@ -0,0 +1,303 @@ + + + + + + Editorial Emphasis + + + + + + + +
+ + + +
+ + + + diff --git a/registry/components/caption-editorial-emphasis/registry-item.json b/registry/components/caption-editorial-emphasis/registry-item.json new file mode 100644 index 000000000..d0f88ecf4 --- /dev/null +++ b/registry/components/caption-editorial-emphasis/registry-item.json @@ -0,0 +1,15 @@ +{ + "$schema": "https://hyperframes.heygen.com/schema/registry-item.json", + "name": "caption-editorial-emphasis", + "type": "hyperframes:component", + "title": "Editorial Emphasis", + "description": "Dual-font system with dramatic size contrast for emphasis words", + "tags": ["captions", "caption-style", "editorial", "typography", "emphasis"], + "files": [ + { + "path": "caption-editorial-emphasis.html", + "target": "compositions/components/caption-editorial-emphasis.html", + "type": "hyperframes:snippet" + } + ] +} diff --git a/registry/components/caption-emoji-pop/caption-emoji-pop.html b/registry/components/caption-emoji-pop/caption-emoji-pop.html new file mode 100644 index 000000000..10f4b9573 --- /dev/null +++ b/registry/components/caption-emoji-pop/caption-emoji-pop.html @@ -0,0 +1,367 @@ + + + + + + Emoji Pop + + + + + + + +
+ + + +
+ + + + diff --git a/registry/components/caption-emoji-pop/demo.html b/registry/components/caption-emoji-pop/demo.html new file mode 100644 index 000000000..10f4b9573 --- /dev/null +++ b/registry/components/caption-emoji-pop/demo.html @@ -0,0 +1,367 @@ + + + + + + Emoji Pop + + + + + + + +
+ + + +
+ + + + diff --git a/registry/components/caption-emoji-pop/registry-item.json b/registry/components/caption-emoji-pop/registry-item.json new file mode 100644 index 000000000..523126d4b --- /dev/null +++ b/registry/components/caption-emoji-pop/registry-item.json @@ -0,0 +1,15 @@ +{ + "$schema": "https://hyperframes.heygen.com/schema/registry-item.json", + "name": "caption-emoji-pop", + "type": "hyperframes:component", + "title": "Emoji Pop", + "description": "Emoji integration with stroked text and horizontal squeeze entrance", + "tags": ["captions", "caption-style", "emoji", "social"], + "files": [ + { + "path": "caption-emoji-pop.html", + "target": "compositions/components/caption-emoji-pop.html", + "type": "hyperframes:snippet" + } + ] +} diff --git a/registry/components/caption-glitch-rgb/caption-glitch-rgb.html b/registry/components/caption-glitch-rgb/caption-glitch-rgb.html new file mode 100644 index 000000000..8b6758751 --- /dev/null +++ b/registry/components/caption-glitch-rgb/caption-glitch-rgb.html @@ -0,0 +1,187 @@ + + + + + + Glitch RGB + + + + + + + +
+ +
+
+
+
+ + + + diff --git a/registry/components/caption-glitch-rgb/demo.html b/registry/components/caption-glitch-rgb/demo.html new file mode 100644 index 000000000..8b6758751 --- /dev/null +++ b/registry/components/caption-glitch-rgb/demo.html @@ -0,0 +1,187 @@ + + + + + + Glitch RGB + + + + + + + +
+ +
+
+
+
+ + + + diff --git a/registry/components/caption-glitch-rgb/registry-item.json b/registry/components/caption-glitch-rgb/registry-item.json new file mode 100644 index 000000000..278d2e966 --- /dev/null +++ b/registry/components/caption-glitch-rgb/registry-item.json @@ -0,0 +1,15 @@ +{ + "$schema": "https://hyperframes.heygen.com/schema/registry-item.json", + "name": "caption-glitch-rgb", + "type": "hyperframes:component", + "title": "Glitch RGB", + "description": "RGB chromatic aberration with CRT scanline overlay", + "tags": ["captions", "caption-style", "glitch", "cyber", "tech"], + "files": [ + { + "path": "caption-glitch-rgb.html", + "target": "compositions/components/caption-glitch-rgb.html", + "type": "hyperframes:snippet" + } + ] +} diff --git a/registry/components/caption-gradient-fill/caption-gradient-fill.html b/registry/components/caption-gradient-fill/caption-gradient-fill.html new file mode 100644 index 000000000..cd34918b4 --- /dev/null +++ b/registry/components/caption-gradient-fill/caption-gradient-fill.html @@ -0,0 +1,187 @@ + + + + + + Gradient Fill + + + + + + + +
+ +
+
+
+ + + + diff --git a/registry/components/caption-gradient-fill/demo.html b/registry/components/caption-gradient-fill/demo.html new file mode 100644 index 000000000..cd34918b4 --- /dev/null +++ b/registry/components/caption-gradient-fill/demo.html @@ -0,0 +1,187 @@ + + + + + + Gradient Fill + + + + + + + +
+ +
+
+
+ + + + diff --git a/registry/components/caption-gradient-fill/registry-item.json b/registry/components/caption-gradient-fill/registry-item.json new file mode 100644 index 000000000..dbf8c92a3 --- /dev/null +++ b/registry/components/caption-gradient-fill/registry-item.json @@ -0,0 +1,15 @@ +{ + "$schema": "https://hyperframes.heygen.com/schema/registry-item.json", + "name": "caption-gradient-fill", + "type": "hyperframes:component", + "title": "Gradient Fill", + "description": "Gradient-clipped text with elastic bounce entrance", + "tags": ["captions", "caption-style", "gradient", "colorful"], + "files": [ + { + "path": "caption-gradient-fill.html", + "target": "compositions/components/caption-gradient-fill.html", + "type": "hyperframes:snippet" + } + ] +} diff --git a/registry/components/caption-kinetic-slam/caption-kinetic-slam.html b/registry/components/caption-kinetic-slam/caption-kinetic-slam.html new file mode 100644 index 000000000..11a70bc3d --- /dev/null +++ b/registry/components/caption-kinetic-slam/caption-kinetic-slam.html @@ -0,0 +1,157 @@ + + + + + + Kinetic Slam + + + + + + + +
+ +
+
+
+ + + + diff --git a/registry/components/caption-kinetic-slam/demo.html b/registry/components/caption-kinetic-slam/demo.html new file mode 100644 index 000000000..11a70bc3d --- /dev/null +++ b/registry/components/caption-kinetic-slam/demo.html @@ -0,0 +1,157 @@ + + + + + + Kinetic Slam + + + + + + + +
+ +
+
+
+ + + + diff --git a/registry/components/caption-kinetic-slam/registry-item.json b/registry/components/caption-kinetic-slam/registry-item.json new file mode 100644 index 000000000..fa3249229 --- /dev/null +++ b/registry/components/caption-kinetic-slam/registry-item.json @@ -0,0 +1,15 @@ +{ + "$schema": "https://hyperframes.heygen.com/schema/registry-item.json", + "name": "caption-kinetic-slam", + "type": "hyperframes:component", + "title": "Kinetic Slam", + "description": "Full-screen single-word display with alternating entrance directions", + "tags": ["captions", "caption-style", "kinetic", "typography", "slam"], + "files": [ + { + "path": "caption-kinetic-slam.html", + "target": "compositions/components/caption-kinetic-slam.html", + "type": "hyperframes:snippet" + } + ] +} diff --git a/registry/components/caption-matrix-decode/caption-matrix-decode.html b/registry/components/caption-matrix-decode/caption-matrix-decode.html new file mode 100644 index 000000000..ac5176793 --- /dev/null +++ b/registry/components/caption-matrix-decode/caption-matrix-decode.html @@ -0,0 +1,197 @@ + + + + + + Matrix Decode + + + + + + + +
+ +
+
+
+ + + + diff --git a/registry/components/caption-matrix-decode/demo.html b/registry/components/caption-matrix-decode/demo.html new file mode 100644 index 000000000..ac5176793 --- /dev/null +++ b/registry/components/caption-matrix-decode/demo.html @@ -0,0 +1,197 @@ + + + + + + Matrix Decode + + + + + + + +
+ +
+
+
+ + + + diff --git a/registry/components/caption-matrix-decode/registry-item.json b/registry/components/caption-matrix-decode/registry-item.json new file mode 100644 index 000000000..71379cd17 --- /dev/null +++ b/registry/components/caption-matrix-decode/registry-item.json @@ -0,0 +1,15 @@ +{ + "$schema": "https://hyperframes.heygen.com/schema/registry-item.json", + "name": "caption-matrix-decode", + "type": "hyperframes:component", + "title": "Matrix Decode", + "description": "Character scramble animation before text reveal", + "tags": ["captions", "caption-style", "matrix", "scramble", "decode"], + "files": [ + { + "path": "caption-matrix-decode.html", + "target": "compositions/components/caption-matrix-decode.html", + "type": "hyperframes:snippet" + } + ] +} diff --git a/registry/components/caption-neon-accent/caption-neon-accent.html b/registry/components/caption-neon-accent/caption-neon-accent.html new file mode 100644 index 000000000..ff4e9c9e5 --- /dev/null +++ b/registry/components/caption-neon-accent/caption-neon-accent.html @@ -0,0 +1,384 @@ + + + + + + Neon Accent + + + + + + + +
+ + + +
+ + + + diff --git a/registry/components/caption-neon-accent/demo.html b/registry/components/caption-neon-accent/demo.html new file mode 100644 index 000000000..ff4e9c9e5 --- /dev/null +++ b/registry/components/caption-neon-accent/demo.html @@ -0,0 +1,384 @@ + + + + + + Neon Accent + + + + + + + +
+ + + +
+ + + + diff --git a/registry/components/caption-neon-accent/registry-item.json b/registry/components/caption-neon-accent/registry-item.json new file mode 100644 index 000000000..01aabe703 --- /dev/null +++ b/registry/components/caption-neon-accent/registry-item.json @@ -0,0 +1,15 @@ +{ + "$schema": "https://hyperframes.heygen.com/schema/registry-item.json", + "name": "caption-neon-accent", + "type": "hyperframes:component", + "title": "Neon Accent", + "description": "Multi-color neon glow accents with wiggle drift animation", + "tags": ["captions", "caption-style", "neon", "glow", "accent"], + "files": [ + { + "path": "caption-neon-accent.html", + "target": "compositions/components/caption-neon-accent.html", + "type": "hyperframes:snippet" + } + ] +} diff --git a/registry/components/caption-neon-glow/caption-neon-glow.html b/registry/components/caption-neon-glow/caption-neon-glow.html new file mode 100644 index 000000000..39000033e --- /dev/null +++ b/registry/components/caption-neon-glow/caption-neon-glow.html @@ -0,0 +1,161 @@ + + + + + + Neon Glow + + + + + + + +
+ +
+
+
+ + + + diff --git a/registry/components/caption-neon-glow/demo.html b/registry/components/caption-neon-glow/demo.html new file mode 100644 index 000000000..39000033e --- /dev/null +++ b/registry/components/caption-neon-glow/demo.html @@ -0,0 +1,161 @@ + + + + + + Neon Glow + + + + + + + +
+ +
+
+
+ + + + diff --git a/registry/components/caption-neon-glow/registry-item.json b/registry/components/caption-neon-glow/registry-item.json new file mode 100644 index 000000000..2a7824a54 --- /dev/null +++ b/registry/components/caption-neon-glow/registry-item.json @@ -0,0 +1,15 @@ +{ + "$schema": "https://hyperframes.heygen.com/schema/registry-item.json", + "name": "caption-neon-glow", + "type": "hyperframes:component", + "title": "Neon Glow", + "description": "Cyan and magenta neon glow with keyword accent colors", + "tags": ["captions", "caption-style", "neon", "glow", "gaming"], + "files": [ + { + "path": "caption-neon-glow.html", + "target": "compositions/components/caption-neon-glow.html", + "type": "hyperframes:snippet" + } + ] +} diff --git a/registry/components/caption-parallax-layers/caption-parallax-layers.html b/registry/components/caption-parallax-layers/caption-parallax-layers.html new file mode 100644 index 000000000..f94731714 --- /dev/null +++ b/registry/components/caption-parallax-layers/caption-parallax-layers.html @@ -0,0 +1,329 @@ + + + + + + Parallax Layers + + + + + + + +
+ + + + + +
+ + + + diff --git a/registry/components/caption-parallax-layers/demo.html b/registry/components/caption-parallax-layers/demo.html new file mode 100644 index 000000000..f94731714 --- /dev/null +++ b/registry/components/caption-parallax-layers/demo.html @@ -0,0 +1,329 @@ + + + + + + Parallax Layers + + + + + + + +
+ + + + + +
+ + + + diff --git a/registry/components/caption-parallax-layers/registry-item.json b/registry/components/caption-parallax-layers/registry-item.json new file mode 100644 index 000000000..cdb5edfa5 --- /dev/null +++ b/registry/components/caption-parallax-layers/registry-item.json @@ -0,0 +1,15 @@ +{ + "$schema": "https://hyperframes.heygen.com/schema/registry-item.json", + "name": "caption-parallax-layers", + "type": "hyperframes:component", + "title": "Parallax Layers", + "description": "Behind-subject 3D text layering with vertical stretch effect", + "tags": ["captions", "caption-style", "parallax", "3d", "depth"], + "files": [ + { + "path": "caption-parallax-layers.html", + "target": "compositions/components/caption-parallax-layers.html", + "type": "hyperframes:snippet" + } + ] +} diff --git a/registry/components/caption-particle-burst/caption-particle-burst.html b/registry/components/caption-particle-burst/caption-particle-burst.html new file mode 100644 index 000000000..cd06ba584 --- /dev/null +++ b/registry/components/caption-particle-burst/caption-particle-burst.html @@ -0,0 +1,212 @@ + + + + + + Particle Burst + + + + + + + +
+ +
+
+
+ + + + diff --git a/registry/components/caption-particle-burst/demo.html b/registry/components/caption-particle-burst/demo.html new file mode 100644 index 000000000..cd06ba584 --- /dev/null +++ b/registry/components/caption-particle-burst/demo.html @@ -0,0 +1,212 @@ + + + + + + Particle Burst + + + + + + + +
+ +
+
+
+ + + + diff --git a/registry/components/caption-particle-burst/registry-item.json b/registry/components/caption-particle-burst/registry-item.json new file mode 100644 index 000000000..d594310ea --- /dev/null +++ b/registry/components/caption-particle-burst/registry-item.json @@ -0,0 +1,15 @@ +{ + "$schema": "https://hyperframes.heygen.com/schema/registry-item.json", + "name": "caption-particle-burst", + "type": "hyperframes:component", + "title": "Particle Burst", + "description": "Keyword words trigger colored particle explosions", + "tags": ["captions", "caption-style", "particles", "burst", "effects"], + "files": [ + { + "path": "caption-particle-burst.html", + "target": "compositions/components/caption-particle-burst.html", + "type": "hyperframes:snippet" + } + ] +} diff --git a/registry/components/caption-pill-karaoke/caption-pill-karaoke.html b/registry/components/caption-pill-karaoke/caption-pill-karaoke.html new file mode 100644 index 000000000..1e439742a --- /dev/null +++ b/registry/components/caption-pill-karaoke/caption-pill-karaoke.html @@ -0,0 +1,365 @@ + + + + + + Pill Karaoke + + + + + + + +
+ + + +
+ + + + diff --git a/registry/components/caption-pill-karaoke/demo.html b/registry/components/caption-pill-karaoke/demo.html new file mode 100644 index 000000000..1e439742a --- /dev/null +++ b/registry/components/caption-pill-karaoke/demo.html @@ -0,0 +1,365 @@ + + + + + + Pill Karaoke + + + + + + + +
+ + + +
+ + + + diff --git a/registry/components/caption-pill-karaoke/registry-item.json b/registry/components/caption-pill-karaoke/registry-item.json new file mode 100644 index 000000000..1651c748f --- /dev/null +++ b/registry/components/caption-pill-karaoke/registry-item.json @@ -0,0 +1,15 @@ +{ + "$schema": "https://hyperframes.heygen.com/schema/registry-item.json", + "name": "caption-pill-karaoke", + "type": "hyperframes:component", + "title": "Pill Karaoke", + "description": "Pill-shaped container with per-word karaoke color highlight", + "tags": ["captions", "caption-style", "karaoke", "pill"], + "files": [ + { + "path": "caption-pill-karaoke.html", + "target": "compositions/components/caption-pill-karaoke.html", + "type": "hyperframes:snippet" + } + ] +} diff --git a/registry/components/caption-texture-lava/caption-texture-lava.html b/registry/components/caption-texture-lava/caption-texture-lava.html new file mode 100644 index 000000000..212240d2c --- /dev/null +++ b/registry/components/caption-texture-lava/caption-texture-lava.html @@ -0,0 +1,172 @@ + + + + + + Texture Lava + + + + + + + +
+ +
+
+
+ + + + diff --git a/registry/components/caption-texture-lava/demo.html b/registry/components/caption-texture-lava/demo.html new file mode 100644 index 000000000..212240d2c --- /dev/null +++ b/registry/components/caption-texture-lava/demo.html @@ -0,0 +1,172 @@ + + + + + + Texture Lava + + + + + + + +
+ +
+
+
+ + + + diff --git a/registry/components/caption-texture-lava/lava.png b/registry/components/caption-texture-lava/lava.png new file mode 100644 index 0000000000000000000000000000000000000000..3de2ac6c20c19fb7125b41833d3cbfa884e24ae3 GIT binary patch literal 74455 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 z

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 + + + + + Typewriter + + + + + + + +

+ +
+
+
+ + + + diff --git a/registry/components/caption-typewriter/demo.html b/registry/components/caption-typewriter/demo.html new file mode 100644 index 000000000..5df7d240a --- /dev/null +++ b/registry/components/caption-typewriter/demo.html @@ -0,0 +1,181 @@ + + + + + + Typewriter + + + + + + + +
+ +
+
+
+ + + + diff --git a/registry/components/caption-typewriter/registry-item.json b/registry/components/caption-typewriter/registry-item.json new file mode 100644 index 000000000..8e58c81ee --- /dev/null +++ b/registry/components/caption-typewriter/registry-item.json @@ -0,0 +1,15 @@ +{ + "$schema": "https://hyperframes.heygen.com/schema/registry-item.json", + "name": "caption-typewriter", + "type": "hyperframes:component", + "title": "Typewriter", + "description": "Green terminal character-by-character reveal with blinking cursor", + "tags": ["captions", "caption-style", "terminal", "typewriter", "hacker"], + "files": [ + { + "path": "caption-typewriter.html", + "target": "compositions/components/caption-typewriter.html", + "type": "hyperframes:snippet" + } + ] +} diff --git a/registry/components/caption-weight-shift/caption-weight-shift.html b/registry/components/caption-weight-shift/caption-weight-shift.html new file mode 100644 index 000000000..48a574fdc --- /dev/null +++ b/registry/components/caption-weight-shift/caption-weight-shift.html @@ -0,0 +1,323 @@ + + + + + + Weight Shift + + + + + + + +
+ + + +
+ + + + diff --git a/registry/components/caption-weight-shift/demo.html b/registry/components/caption-weight-shift/demo.html new file mode 100644 index 000000000..48a574fdc --- /dev/null +++ b/registry/components/caption-weight-shift/demo.html @@ -0,0 +1,323 @@ + + + + + + Weight Shift + + + + + + + +
+ + + +
+ + + + diff --git a/registry/components/caption-weight-shift/registry-item.json b/registry/components/caption-weight-shift/registry-item.json new file mode 100644 index 000000000..af641fcd8 --- /dev/null +++ b/registry/components/caption-weight-shift/registry-item.json @@ -0,0 +1,15 @@ +{ + "$schema": "https://hyperframes.heygen.com/schema/registry-item.json", + "name": "caption-weight-shift", + "type": "hyperframes:component", + "title": "Weight Shift", + "description": "Elegant font-weight transition between caption lines", + "tags": ["captions", "caption-style", "minimal", "typography"], + "files": [ + { + "path": "caption-weight-shift.html", + "target": "compositions/components/caption-weight-shift.html", + "type": "hyperframes:snippet" + } + ] +} diff --git a/registry/registry.json b/registry/registry.json index 415976368..73b93dc5a 100644 --- a/registry/registry.json +++ b/registry/registry.json @@ -67,6 +67,66 @@ "name": "vignette", "type": "hyperframes:component" }, + { + "name": "caption-pill-karaoke", + "type": "hyperframes:component" + }, + { + "name": "caption-neon-accent", + "type": "hyperframes:component" + }, + { + "name": "caption-weight-shift", + "type": "hyperframes:component" + }, + { + "name": "caption-emoji-pop", + "type": "hyperframes:component" + }, + { + "name": "caption-editorial-emphasis", + "type": "hyperframes:component" + }, + { + "name": "caption-parallax-layers", + "type": "hyperframes:component" + }, + { + "name": "caption-glitch-rgb", + "type": "hyperframes:component" + }, + { + "name": "caption-typewriter", + "type": "hyperframes:component" + }, + { + "name": "caption-matrix-decode", + "type": "hyperframes:component" + }, + { + "name": "caption-particle-burst", + "type": "hyperframes:component" + }, + { + "name": "caption-texture-lava", + "type": "hyperframes:component" + }, + { + "name": "caption-clip-wipe", + "type": "hyperframes:component" + }, + { + "name": "caption-kinetic-slam", + "type": "hyperframes:component" + }, + { + "name": "caption-gradient-fill", + "type": "hyperframes:component" + }, + { + "name": "caption-neon-glow", + "type": "hyperframes:component" + }, { "name": "instagram-follow", "type": "hyperframes:block" From a19a772dc5eeb1dc0535341a0836a1e720e8671f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miguel=20=C3=81ngel?= Date: Sun, 17 May 2026 19:59:43 +0000 Subject: [PATCH 2/7] style: format caption component files Co-Authored-By: Claude Sonnet 4.6 --- .../caption-clip-wipe/caption-clip-wipe.html | 277 +++++++----- .../components/caption-clip-wipe/demo.html | 277 +++++++----- .../caption-editorial-emphasis.html | 180 +++++--- .../caption-editorial-emphasis/demo.html | 180 +++++--- .../caption-emoji-pop/caption-emoji-pop.html | 209 ++++++--- .../components/caption-emoji-pop/demo.html | 209 ++++++--- .../caption-glitch-rgb.html | 349 +++++++++------ .../components/caption-glitch-rgb/demo.html | 349 +++++++++------ .../caption-gradient-fill.html | 296 +++++++------ .../caption-gradient-fill/demo.html | 296 +++++++------ .../caption-kinetic-slam.html | 244 ++++++----- .../components/caption-kinetic-slam/demo.html | 244 ++++++----- .../caption-matrix-decode.html | 343 ++++++++------- .../caption-matrix-decode/demo.html | 343 ++++++++------- .../caption-neon-accent.html | 243 ++++++++--- .../components/caption-neon-accent/demo.html | 243 ++++++++--- .../caption-neon-glow/caption-neon-glow.html | 261 +++++++----- .../components/caption-neon-glow/demo.html | 261 +++++++----- .../caption-parallax-layers.html | 119 +++--- .../caption-parallax-layers/demo.html | 119 +++--- .../caption-particle-burst.html | 396 +++++++++++------- .../caption-particle-burst/demo.html | 396 +++++++++++------- .../caption-pill-karaoke.html | 124 ++++-- .../components/caption-pill-karaoke/demo.html | 124 ++++-- .../caption-texture-lava.html | 205 +++++---- .../components/caption-texture-lava/demo.html | 205 +++++---- .../caption-typewriter.html | 285 +++++++------ .../components/caption-typewriter/demo.html | 285 +++++++------ .../caption-weight-shift.html | 120 ++++-- .../components/caption-weight-shift/demo.html | 120 ++++-- 30 files changed, 4546 insertions(+), 2756 deletions(-) diff --git a/registry/components/caption-clip-wipe/caption-clip-wipe.html b/registry/components/caption-clip-wipe/caption-clip-wipe.html index a793d6763..63a7aa1ec 100644 --- a/registry/components/caption-clip-wipe/caption-clip-wipe.html +++ b/registry/components/caption-clip-wipe/caption-clip-wipe.html @@ -6,42 +6,75 @@ Clip Wipe - + @@ -149,49 +154,108 @@ // Generic transcript words var W = [ - {text:"Every", start:0.0, end:0.3}, - {text:"great", start:0.3, end:0.55}, - {text:"video", start:0.55, end:0.85}, - {text:"starts", start:0.85, end:1.1}, - {text:"with", start:1.1, end:1.25}, - {text:"a", start:1.25, end:1.35}, - {text:"single", start:1.35, end:1.65}, - {text:"frame.", start:1.65, end:2.0}, - {text:"HyperFrames", start:2.1, end:2.65}, - {text:"lets", start:2.65, end:2.85}, - {text:"you", start:2.85, end:2.95}, - {text:"write", start:2.95, end:3.15}, - {text:"HTML", start:3.15, end:3.55}, - {text:"and", start:3.55, end:3.65}, - {text:"render", start:3.65, end:3.95}, - {text:"professional",start:3.95, end:4.45}, - {text:"video.", start:4.45, end:4.8}, - {text:"No", start:4.9, end:5.05}, - {text:"timeline.", start:5.05, end:5.45}, - {text:"No", start:5.5, end:5.65}, - {text:"drag", start:5.65, end:5.85}, - {text:"and", start:5.85, end:5.95}, - {text:"drop.", start:5.95, end:6.25}, - {text:"Just", start:6.35, end:6.55}, - {text:"code", start:6.55, end:6.8}, - {text:"that", start:6.8, end:6.95}, - {text:"becomes", start:6.95, end:7.3}, - {text:"cinema.", start:7.3, end:7.7} + { text: "Every", start: 0.0, end: 0.3 }, + { text: "great", start: 0.3, end: 0.55 }, + { text: "video", start: 0.55, end: 0.85 }, + { text: "starts", start: 0.85, end: 1.1 }, + { text: "with", start: 1.1, end: 1.25 }, + { text: "a", start: 1.25, end: 1.35 }, + { text: "single", start: 1.35, end: 1.65 }, + { text: "frame.", start: 1.65, end: 2.0 }, + { text: "HyperFrames", start: 2.1, end: 2.65 }, + { text: "lets", start: 2.65, end: 2.85 }, + { text: "you", start: 2.85, end: 2.95 }, + { text: "write", start: 2.95, end: 3.15 }, + { text: "HTML", start: 3.15, end: 3.55 }, + { text: "and", start: 3.55, end: 3.65 }, + { text: "render", start: 3.65, end: 3.95 }, + { text: "professional", start: 3.95, end: 4.45 }, + { text: "video.", start: 4.45, end: 4.8 }, + { text: "No", start: 4.9, end: 5.05 }, + { text: "timeline.", start: 5.05, end: 5.45 }, + { text: "No", start: 5.5, end: 5.65 }, + { text: "drag", start: 5.65, end: 5.85 }, + { text: "and", start: 5.85, end: 5.95 }, + { text: "drop.", start: 5.95, end: 6.25 }, + { text: "Just", start: 6.35, end: 6.55 }, + { text: "code", start: 6.55, end: 6.8 }, + { text: "that", start: 6.8, end: 6.95 }, + { text: "becomes", start: 6.95, end: 7.3 }, + { text: "cinema.", start: 7.3, end: 7.7 }, ]; // Block layout: [wordIndex, type] — n=normal, i=italic, e=emphasis(large) // Emphasis words: HyperFrames(8), HTML(12), professional(15), code(24), cinema.(27) var BLOCKS = [ - { line1: [[0,"n"],[1,"n"],[2,"n"]], line2: [[3,"n"],[4,"n"]] }, - { line1: [[5,"n"],[6,"n"]], line2: [[7,"e"]] }, - { line1: [[8,"e"]], line2: null }, - { line1: [[9,"n"],[10,"n"],[11,"n"]], line2: [[12,"e"]] }, - { line1: [[13,"n"],[14,"n"]], line2: [[15,"e"]] }, - { line1: [[16,"n"],[17,"n"]], line2: null }, - { line1: [[18,"n"]], line2: [[19,"n"],[20,"n"]] }, - { line1: [[21,"n"],[22,"n"]], line2: null }, - { line1: [[23,"i"],[24,"e"]], line2: null }, - { line1: [[25,"n"],[26,"n"]], line2: [[27,"e"]] }, + { + line1: [ + [0, "n"], + [1, "n"], + [2, "n"], + ], + line2: [ + [3, "n"], + [4, "n"], + ], + }, + { + line1: [ + [5, "n"], + [6, "n"], + ], + line2: [[7, "e"]], + }, + { line1: [[8, "e"]], line2: null }, + { + line1: [ + [9, "n"], + [10, "n"], + [11, "n"], + ], + line2: [[12, "e"]], + }, + { + line1: [ + [13, "n"], + [14, "n"], + ], + line2: [[15, "e"]], + }, + { + line1: [ + [16, "n"], + [17, "n"], + ], + line2: null, + }, + { + line1: [[18, "n"]], + line2: [ + [19, "n"], + [20, "n"], + ], + }, + { + line1: [ + [21, "n"], + [22, "n"], + ], + line2: null, + }, + { + line1: [ + [23, "i"], + [24, "e"], + ], + line2: null, + }, + { + line1: [ + [25, "n"], + [26, "n"], + ], + line2: [[27, "e"]], + }, ]; var CLASS_MAP = { n: "word word--normal", i: "word word--italic", e: "word word--emphasis" }; @@ -243,7 +307,9 @@ el.style.position = "relative"; var lines = el.querySelectorAll(".caption-line"); var maxW = 0; - lines.forEach(function (line) { if (line.scrollWidth > maxW) maxW = line.scrollWidth; }); + lines.forEach(function (line) { + if (line.scrollWidth > maxW) maxW = line.scrollWidth; + }); if (maxW > SAFE_WIDTH) { var s = SAFE_WIDTH / maxW; el.style.transform = "scale(" + s + ")"; @@ -256,27 +322,39 @@ window.__timelines = window.__timelines || {}; var tl = gsap.timeline({ paused: true }); - var allEls = BLOCKS.map(function (_, i) { return document.getElementById("b" + i); }); + var allEls = BLOCKS.map(function (_, i) { + return document.getElementById("b" + i); + }); - function blockStart(bi) { return W[BLOCKS[bi].line1[0][0]].start; } + function blockStart(bi) { + return W[BLOCKS[bi].line1[0][0]].start; + } BLOCKS.forEach(function (block, bi) { var el = allEls[bi]; var start = blockStart(bi); var nextStart = bi < BLOCKS.length - 1 ? blockStart(bi + 1) : DURATION; - allEls.forEach(function (other, oi) { if (oi !== bi) tl.set(other, { opacity: 0 }, start); }); + allEls.forEach(function (other, oi) { + if (oi !== bi) tl.set(other, { opacity: 0 }, start); + }); tl.set(el, { opacity: 1 }, start); block.line1.forEach(function (pair, wi) { var wordEl = document.getElementById("b" + bi + "L1w" + wi); var wordStart = W[pair[0]].start; tl.set(wordEl, { opacity: 0, scale: 1.12, transformOrigin: "0% 100%" }, start); - tl.to(wordEl, { opacity: 1, scale: 1, duration: ENTRY_DUR, ease: "power2.out" }, wordStart); + tl.to( + wordEl, + { opacity: 1, scale: 1, duration: ENTRY_DUR, ease: "power2.out" }, + wordStart, + ); }); if (block.line2) { - var hasEmphasis = block.line2.some(function (p) { return p[1] === "e"; }); + var hasEmphasis = block.line2.some(function (p) { + return p[1] === "e"; + }); var l2El = document.getElementById("b" + bi + "L2"); if (hasEmphasis) { var l2Start = W[block.line2[0][0]].start; @@ -288,7 +366,11 @@ var wordEl = document.getElementById("b" + bi + "L2w" + wi); var wordStart = W[pair[0]].start; tl.set(wordEl, { opacity: 0, scale: 1.12, transformOrigin: "0% 100%" }, start); - tl.to(wordEl, { opacity: 1, scale: 1, duration: ENTRY_DUR, ease: "power2.out" }, wordStart); + tl.to( + wordEl, + { opacity: 1, scale: 1, duration: ENTRY_DUR, ease: "power2.out" }, + wordStart, + ); }); } } diff --git a/registry/components/caption-editorial-emphasis/demo.html b/registry/components/caption-editorial-emphasis/demo.html index a9c2e2eb6..999a01e09 100644 --- a/registry/components/caption-editorial-emphasis/demo.html +++ b/registry/components/caption-editorial-emphasis/demo.html @@ -6,7 +6,10 @@ Editorial Emphasis - + @@ -149,49 +154,108 @@ // Generic transcript words var W = [ - {text:"Every", start:0.0, end:0.3}, - {text:"great", start:0.3, end:0.55}, - {text:"video", start:0.55, end:0.85}, - {text:"starts", start:0.85, end:1.1}, - {text:"with", start:1.1, end:1.25}, - {text:"a", start:1.25, end:1.35}, - {text:"single", start:1.35, end:1.65}, - {text:"frame.", start:1.65, end:2.0}, - {text:"HyperFrames", start:2.1, end:2.65}, - {text:"lets", start:2.65, end:2.85}, - {text:"you", start:2.85, end:2.95}, - {text:"write", start:2.95, end:3.15}, - {text:"HTML", start:3.15, end:3.55}, - {text:"and", start:3.55, end:3.65}, - {text:"render", start:3.65, end:3.95}, - {text:"professional",start:3.95, end:4.45}, - {text:"video.", start:4.45, end:4.8}, - {text:"No", start:4.9, end:5.05}, - {text:"timeline.", start:5.05, end:5.45}, - {text:"No", start:5.5, end:5.65}, - {text:"drag", start:5.65, end:5.85}, - {text:"and", start:5.85, end:5.95}, - {text:"drop.", start:5.95, end:6.25}, - {text:"Just", start:6.35, end:6.55}, - {text:"code", start:6.55, end:6.8}, - {text:"that", start:6.8, end:6.95}, - {text:"becomes", start:6.95, end:7.3}, - {text:"cinema.", start:7.3, end:7.7} + { text: "Every", start: 0.0, end: 0.3 }, + { text: "great", start: 0.3, end: 0.55 }, + { text: "video", start: 0.55, end: 0.85 }, + { text: "starts", start: 0.85, end: 1.1 }, + { text: "with", start: 1.1, end: 1.25 }, + { text: "a", start: 1.25, end: 1.35 }, + { text: "single", start: 1.35, end: 1.65 }, + { text: "frame.", start: 1.65, end: 2.0 }, + { text: "HyperFrames", start: 2.1, end: 2.65 }, + { text: "lets", start: 2.65, end: 2.85 }, + { text: "you", start: 2.85, end: 2.95 }, + { text: "write", start: 2.95, end: 3.15 }, + { text: "HTML", start: 3.15, end: 3.55 }, + { text: "and", start: 3.55, end: 3.65 }, + { text: "render", start: 3.65, end: 3.95 }, + { text: "professional", start: 3.95, end: 4.45 }, + { text: "video.", start: 4.45, end: 4.8 }, + { text: "No", start: 4.9, end: 5.05 }, + { text: "timeline.", start: 5.05, end: 5.45 }, + { text: "No", start: 5.5, end: 5.65 }, + { text: "drag", start: 5.65, end: 5.85 }, + { text: "and", start: 5.85, end: 5.95 }, + { text: "drop.", start: 5.95, end: 6.25 }, + { text: "Just", start: 6.35, end: 6.55 }, + { text: "code", start: 6.55, end: 6.8 }, + { text: "that", start: 6.8, end: 6.95 }, + { text: "becomes", start: 6.95, end: 7.3 }, + { text: "cinema.", start: 7.3, end: 7.7 }, ]; // Block layout: [wordIndex, type] — n=normal, i=italic, e=emphasis(large) // Emphasis words: HyperFrames(8), HTML(12), professional(15), code(24), cinema.(27) var BLOCKS = [ - { line1: [[0,"n"],[1,"n"],[2,"n"]], line2: [[3,"n"],[4,"n"]] }, - { line1: [[5,"n"],[6,"n"]], line2: [[7,"e"]] }, - { line1: [[8,"e"]], line2: null }, - { line1: [[9,"n"],[10,"n"],[11,"n"]], line2: [[12,"e"]] }, - { line1: [[13,"n"],[14,"n"]], line2: [[15,"e"]] }, - { line1: [[16,"n"],[17,"n"]], line2: null }, - { line1: [[18,"n"]], line2: [[19,"n"],[20,"n"]] }, - { line1: [[21,"n"],[22,"n"]], line2: null }, - { line1: [[23,"i"],[24,"e"]], line2: null }, - { line1: [[25,"n"],[26,"n"]], line2: [[27,"e"]] }, + { + line1: [ + [0, "n"], + [1, "n"], + [2, "n"], + ], + line2: [ + [3, "n"], + [4, "n"], + ], + }, + { + line1: [ + [5, "n"], + [6, "n"], + ], + line2: [[7, "e"]], + }, + { line1: [[8, "e"]], line2: null }, + { + line1: [ + [9, "n"], + [10, "n"], + [11, "n"], + ], + line2: [[12, "e"]], + }, + { + line1: [ + [13, "n"], + [14, "n"], + ], + line2: [[15, "e"]], + }, + { + line1: [ + [16, "n"], + [17, "n"], + ], + line2: null, + }, + { + line1: [[18, "n"]], + line2: [ + [19, "n"], + [20, "n"], + ], + }, + { + line1: [ + [21, "n"], + [22, "n"], + ], + line2: null, + }, + { + line1: [ + [23, "i"], + [24, "e"], + ], + line2: null, + }, + { + line1: [ + [25, "n"], + [26, "n"], + ], + line2: [[27, "e"]], + }, ]; var CLASS_MAP = { n: "word word--normal", i: "word word--italic", e: "word word--emphasis" }; @@ -243,7 +307,9 @@ el.style.position = "relative"; var lines = el.querySelectorAll(".caption-line"); var maxW = 0; - lines.forEach(function (line) { if (line.scrollWidth > maxW) maxW = line.scrollWidth; }); + lines.forEach(function (line) { + if (line.scrollWidth > maxW) maxW = line.scrollWidth; + }); if (maxW > SAFE_WIDTH) { var s = SAFE_WIDTH / maxW; el.style.transform = "scale(" + s + ")"; @@ -256,27 +322,39 @@ window.__timelines = window.__timelines || {}; var tl = gsap.timeline({ paused: true }); - var allEls = BLOCKS.map(function (_, i) { return document.getElementById("b" + i); }); + var allEls = BLOCKS.map(function (_, i) { + return document.getElementById("b" + i); + }); - function blockStart(bi) { return W[BLOCKS[bi].line1[0][0]].start; } + function blockStart(bi) { + return W[BLOCKS[bi].line1[0][0]].start; + } BLOCKS.forEach(function (block, bi) { var el = allEls[bi]; var start = blockStart(bi); var nextStart = bi < BLOCKS.length - 1 ? blockStart(bi + 1) : DURATION; - allEls.forEach(function (other, oi) { if (oi !== bi) tl.set(other, { opacity: 0 }, start); }); + allEls.forEach(function (other, oi) { + if (oi !== bi) tl.set(other, { opacity: 0 }, start); + }); tl.set(el, { opacity: 1 }, start); block.line1.forEach(function (pair, wi) { var wordEl = document.getElementById("b" + bi + "L1w" + wi); var wordStart = W[pair[0]].start; tl.set(wordEl, { opacity: 0, scale: 1.12, transformOrigin: "0% 100%" }, start); - tl.to(wordEl, { opacity: 1, scale: 1, duration: ENTRY_DUR, ease: "power2.out" }, wordStart); + tl.to( + wordEl, + { opacity: 1, scale: 1, duration: ENTRY_DUR, ease: "power2.out" }, + wordStart, + ); }); if (block.line2) { - var hasEmphasis = block.line2.some(function (p) { return p[1] === "e"; }); + var hasEmphasis = block.line2.some(function (p) { + return p[1] === "e"; + }); var l2El = document.getElementById("b" + bi + "L2"); if (hasEmphasis) { var l2Start = W[block.line2[0][0]].start; @@ -288,7 +366,11 @@ var wordEl = document.getElementById("b" + bi + "L2w" + wi); var wordStart = W[pair[0]].start; tl.set(wordEl, { opacity: 0, scale: 1.12, transformOrigin: "0% 100%" }, start); - tl.to(wordEl, { opacity: 1, scale: 1, duration: ENTRY_DUR, ease: "power2.out" }, wordStart); + tl.to( + wordEl, + { opacity: 1, scale: 1, duration: ENTRY_DUR, ease: "power2.out" }, + wordStart, + ); }); } } diff --git a/registry/components/caption-emoji-pop/caption-emoji-pop.html b/registry/components/caption-emoji-pop/caption-emoji-pop.html index 10f4b9573..7f017d19c 100644 --- a/registry/components/caption-emoji-pop/caption-emoji-pop.html +++ b/registry/components/caption-emoji-pop/caption-emoji-pop.html @@ -6,7 +6,10 @@ Emoji Pop - + @@ -64,124 +103,190 @@ data-width="1920" data-height="1080" > - +
diff --git a/registry/components/caption-glitch-rgb/demo.html b/registry/components/caption-glitch-rgb/demo.html index 8b6758751..307113d4c 100644 --- a/registry/components/caption-glitch-rgb/demo.html +++ b/registry/components/caption-glitch-rgb/demo.html @@ -6,50 +6,89 @@ Glitch RGB - + @@ -64,124 +103,190 @@ data-width="1920" data-height="1080" > - +
diff --git a/registry/components/caption-gradient-fill/caption-gradient-fill.html b/registry/components/caption-gradient-fill/caption-gradient-fill.html index cd34918b4..92bb8f3da 100644 --- a/registry/components/caption-gradient-fill/caption-gradient-fill.html +++ b/registry/components/caption-gradient-fill/caption-gradient-fill.html @@ -6,40 +6,74 @@ Gradient Fill - + @@ -51,107 +77,119 @@ data-width="1920" data-height="1080" > - +
diff --git a/registry/components/caption-kinetic-slam/demo.html b/registry/components/caption-kinetic-slam/demo.html index 11a70bc3d..6a7c826fc 100644 --- a/registry/components/caption-kinetic-slam/demo.html +++ b/registry/components/caption-kinetic-slam/demo.html @@ -9,35 +9,61 @@ @@ -51,107 +77,119 @@ data-width="1920" data-height="1080" > - +
diff --git a/registry/components/caption-matrix-decode/caption-matrix-decode.html b/registry/components/caption-matrix-decode/caption-matrix-decode.html index ac5176793..41e20e81c 100644 --- a/registry/components/caption-matrix-decode/caption-matrix-decode.html +++ b/registry/components/caption-matrix-decode/caption-matrix-decode.html @@ -6,45 +6,86 @@ Matrix Decode - + @@ -57,141 +98,149 @@ data-width="1920" data-height="1080" > - +
diff --git a/registry/components/caption-matrix-decode/demo.html b/registry/components/caption-matrix-decode/demo.html index ac5176793..41e20e81c 100644 --- a/registry/components/caption-matrix-decode/demo.html +++ b/registry/components/caption-matrix-decode/demo.html @@ -6,45 +6,86 @@ Matrix Decode - + @@ -57,141 +98,149 @@ data-width="1920" data-height="1080" > - +
diff --git a/registry/components/caption-neon-accent/caption-neon-accent.html b/registry/components/caption-neon-accent/caption-neon-accent.html index ff4e9c9e5..cf879ad34 100644 --- a/registry/components/caption-neon-accent/caption-neon-accent.html +++ b/registry/components/caption-neon-accent/caption-neon-accent.html @@ -6,7 +6,10 @@ Neon Accent - + @@ -55,107 +89,124 @@ data-width="1920" data-height="1080" > - +
diff --git a/registry/components/caption-neon-glow/demo.html b/registry/components/caption-neon-glow/demo.html index 39000033e..675d948e4 100644 --- a/registry/components/caption-neon-glow/demo.html +++ b/registry/components/caption-neon-glow/demo.html @@ -6,42 +6,76 @@ Neon Glow - + @@ -55,107 +89,124 @@ data-width="1920" data-height="1080" > - +
diff --git a/registry/components/caption-parallax-layers/caption-parallax-layers.html b/registry/components/caption-parallax-layers/caption-parallax-layers.html index f94731714..95bbafb5f 100644 --- a/registry/components/caption-parallax-layers/caption-parallax-layers.html +++ b/registry/components/caption-parallax-layers/caption-parallax-layers.html @@ -6,7 +6,10 @@ Parallax Layers - + @@ -175,48 +182,48 @@ var SLIDE_DUR = 0.2; var W = [ - {text:"Every", start:0.0, end:0.3}, - {text:"great", start:0.3, end:0.55}, - {text:"video", start:0.55, end:0.85}, - {text:"starts", start:0.85, end:1.1}, - {text:"with", start:1.1, end:1.25}, - {text:"a", start:1.25, end:1.35}, - {text:"single", start:1.35, end:1.65}, - {text:"frame.", start:1.65, end:2.0}, - {text:"HyperFrames", start:2.1, end:2.65}, - {text:"lets", start:2.65, end:2.85}, - {text:"you", start:2.85, end:2.95}, - {text:"write", start:2.95, end:3.15}, - {text:"HTML", start:3.15, end:3.55}, - {text:"and", start:3.55, end:3.65}, - {text:"render", start:3.65, end:3.95}, - {text:"professional",start:3.95, end:4.45}, - {text:"video.", start:4.45, end:4.8}, - {text:"No", start:4.9, end:5.05}, - {text:"timeline.", start:5.05, end:5.45}, - {text:"No", start:5.5, end:5.65}, - {text:"drag", start:5.65, end:5.85}, - {text:"and", start:5.85, end:5.95}, - {text:"drop.", start:5.95, end:6.25}, - {text:"Just", start:6.35, end:6.55}, - {text:"code", start:6.55, end:6.8}, - {text:"that", start:6.8, end:6.95}, - {text:"becomes", start:6.95, end:7.3}, - {text:"cinema.", start:7.3, end:7.7} + { text: "Every", start: 0.0, end: 0.3 }, + { text: "great", start: 0.3, end: 0.55 }, + { text: "video", start: 0.55, end: 0.85 }, + { text: "starts", start: 0.85, end: 1.1 }, + { text: "with", start: 1.1, end: 1.25 }, + { text: "a", start: 1.25, end: 1.35 }, + { text: "single", start: 1.35, end: 1.65 }, + { text: "frame.", start: 1.65, end: 2.0 }, + { text: "HyperFrames", start: 2.1, end: 2.65 }, + { text: "lets", start: 2.65, end: 2.85 }, + { text: "you", start: 2.85, end: 2.95 }, + { text: "write", start: 2.95, end: 3.15 }, + { text: "HTML", start: 3.15, end: 3.55 }, + { text: "and", start: 3.55, end: 3.65 }, + { text: "render", start: 3.65, end: 3.95 }, + { text: "professional", start: 3.95, end: 4.45 }, + { text: "video.", start: 4.45, end: 4.8 }, + { text: "No", start: 4.9, end: 5.05 }, + { text: "timeline.", start: 5.05, end: 5.45 }, + { text: "No", start: 5.5, end: 5.65 }, + { text: "drag", start: 5.65, end: 5.85 }, + { text: "and", start: 5.85, end: 5.95 }, + { text: "drop.", start: 5.95, end: 6.25 }, + { text: "Just", start: 6.35, end: 6.55 }, + { text: "code", start: 6.55, end: 6.8 }, + { text: "that", start: 6.8, end: 6.95 }, + { text: "becomes", start: 6.95, end: 7.3 }, + { text: "cinema.", start: 7.3, end: 7.7 }, ]; // behind=red 3D emphasis words, front=normal white words var BLOCKS = [ - { behind: null, front: [[0],[1],[2]] }, - { behind: [[3]], front: [[4],[5]] }, - { behind: [[6]], front: [[7]] }, - { behind: [[8]], front: [[9],[10],[11]] }, - { behind: [[12]], front: [[13],[14]] }, - { behind: [[15]], front: [[16]] }, - { behind: null, front: [[17],[18]] }, - { behind: null, front: [[19],[20],[21],[22]] }, - { behind: [[24]], front: [[23],[25],[26]] }, - { behind: [[27]], front: null }, + { behind: null, front: [[0], [1], [2]] }, + { behind: [[3]], front: [[4], [5]] }, + { behind: [[6]], front: [[7]] }, + { behind: [[8]], front: [[9], [10], [11]] }, + { behind: [[12]], front: [[13], [14]] }, + { behind: [[15]], front: [[16]] }, + { behind: null, front: [[17], [18]] }, + { behind: null, front: [[19], [20], [21], [22]] }, + { behind: [[24]], front: [[23], [25], [26]] }, + { behind: [[27]], front: null }, ]; var behindStage = document.getElementById("behind-stage"); @@ -259,8 +266,12 @@ frontStage.appendChild(fEl); }); - var allBehind = BLOCKS.map(function (_, i) { return document.getElementById("bb" + i); }); - var allFront = BLOCKS.map(function (_, i) { return document.getElementById("fb" + i); }); + var allBehind = BLOCKS.map(function (_, i) { + return document.getElementById("bb" + i); + }); + var allFront = BLOCKS.map(function (_, i) { + return document.getElementById("fb" + i); + }); function applyBehindScales() { BLOCKS.forEach(function (block, bi) { @@ -293,8 +304,12 @@ var bEl = allBehind[bi]; var fEl = allFront[bi]; - allBehind.forEach(function (other, oi) { if (oi !== bi) tl.set(other, { opacity: 0 }, start); }); - allFront.forEach(function (other, oi) { if (oi !== bi) tl.set(other, { opacity: 0 }, start); }); + allBehind.forEach(function (other, oi) { + if (oi !== bi) tl.set(other, { opacity: 0 }, start); + }); + allFront.forEach(function (other, oi) { + if (oi !== bi) tl.set(other, { opacity: 0 }, start); + }); if (block.behind) { tl.set(bEl, { opacity: 1 }, start); @@ -323,7 +338,9 @@ tl.to({}, { duration: DURATION }, 0); window.__timelines["parallax-layers"] = tl; - document.fonts.ready.then(function () { applyBehindScales(); }); + document.fonts.ready.then(function () { + applyBehindScales(); + }); diff --git a/registry/components/caption-parallax-layers/demo.html b/registry/components/caption-parallax-layers/demo.html index f94731714..95bbafb5f 100644 --- a/registry/components/caption-parallax-layers/demo.html +++ b/registry/components/caption-parallax-layers/demo.html @@ -6,7 +6,10 @@ Parallax Layers - + @@ -175,48 +182,48 @@ var SLIDE_DUR = 0.2; var W = [ - {text:"Every", start:0.0, end:0.3}, - {text:"great", start:0.3, end:0.55}, - {text:"video", start:0.55, end:0.85}, - {text:"starts", start:0.85, end:1.1}, - {text:"with", start:1.1, end:1.25}, - {text:"a", start:1.25, end:1.35}, - {text:"single", start:1.35, end:1.65}, - {text:"frame.", start:1.65, end:2.0}, - {text:"HyperFrames", start:2.1, end:2.65}, - {text:"lets", start:2.65, end:2.85}, - {text:"you", start:2.85, end:2.95}, - {text:"write", start:2.95, end:3.15}, - {text:"HTML", start:3.15, end:3.55}, - {text:"and", start:3.55, end:3.65}, - {text:"render", start:3.65, end:3.95}, - {text:"professional",start:3.95, end:4.45}, - {text:"video.", start:4.45, end:4.8}, - {text:"No", start:4.9, end:5.05}, - {text:"timeline.", start:5.05, end:5.45}, - {text:"No", start:5.5, end:5.65}, - {text:"drag", start:5.65, end:5.85}, - {text:"and", start:5.85, end:5.95}, - {text:"drop.", start:5.95, end:6.25}, - {text:"Just", start:6.35, end:6.55}, - {text:"code", start:6.55, end:6.8}, - {text:"that", start:6.8, end:6.95}, - {text:"becomes", start:6.95, end:7.3}, - {text:"cinema.", start:7.3, end:7.7} + { text: "Every", start: 0.0, end: 0.3 }, + { text: "great", start: 0.3, end: 0.55 }, + { text: "video", start: 0.55, end: 0.85 }, + { text: "starts", start: 0.85, end: 1.1 }, + { text: "with", start: 1.1, end: 1.25 }, + { text: "a", start: 1.25, end: 1.35 }, + { text: "single", start: 1.35, end: 1.65 }, + { text: "frame.", start: 1.65, end: 2.0 }, + { text: "HyperFrames", start: 2.1, end: 2.65 }, + { text: "lets", start: 2.65, end: 2.85 }, + { text: "you", start: 2.85, end: 2.95 }, + { text: "write", start: 2.95, end: 3.15 }, + { text: "HTML", start: 3.15, end: 3.55 }, + { text: "and", start: 3.55, end: 3.65 }, + { text: "render", start: 3.65, end: 3.95 }, + { text: "professional", start: 3.95, end: 4.45 }, + { text: "video.", start: 4.45, end: 4.8 }, + { text: "No", start: 4.9, end: 5.05 }, + { text: "timeline.", start: 5.05, end: 5.45 }, + { text: "No", start: 5.5, end: 5.65 }, + { text: "drag", start: 5.65, end: 5.85 }, + { text: "and", start: 5.85, end: 5.95 }, + { text: "drop.", start: 5.95, end: 6.25 }, + { text: "Just", start: 6.35, end: 6.55 }, + { text: "code", start: 6.55, end: 6.8 }, + { text: "that", start: 6.8, end: 6.95 }, + { text: "becomes", start: 6.95, end: 7.3 }, + { text: "cinema.", start: 7.3, end: 7.7 }, ]; // behind=red 3D emphasis words, front=normal white words var BLOCKS = [ - { behind: null, front: [[0],[1],[2]] }, - { behind: [[3]], front: [[4],[5]] }, - { behind: [[6]], front: [[7]] }, - { behind: [[8]], front: [[9],[10],[11]] }, - { behind: [[12]], front: [[13],[14]] }, - { behind: [[15]], front: [[16]] }, - { behind: null, front: [[17],[18]] }, - { behind: null, front: [[19],[20],[21],[22]] }, - { behind: [[24]], front: [[23],[25],[26]] }, - { behind: [[27]], front: null }, + { behind: null, front: [[0], [1], [2]] }, + { behind: [[3]], front: [[4], [5]] }, + { behind: [[6]], front: [[7]] }, + { behind: [[8]], front: [[9], [10], [11]] }, + { behind: [[12]], front: [[13], [14]] }, + { behind: [[15]], front: [[16]] }, + { behind: null, front: [[17], [18]] }, + { behind: null, front: [[19], [20], [21], [22]] }, + { behind: [[24]], front: [[23], [25], [26]] }, + { behind: [[27]], front: null }, ]; var behindStage = document.getElementById("behind-stage"); @@ -259,8 +266,12 @@ frontStage.appendChild(fEl); }); - var allBehind = BLOCKS.map(function (_, i) { return document.getElementById("bb" + i); }); - var allFront = BLOCKS.map(function (_, i) { return document.getElementById("fb" + i); }); + var allBehind = BLOCKS.map(function (_, i) { + return document.getElementById("bb" + i); + }); + var allFront = BLOCKS.map(function (_, i) { + return document.getElementById("fb" + i); + }); function applyBehindScales() { BLOCKS.forEach(function (block, bi) { @@ -293,8 +304,12 @@ var bEl = allBehind[bi]; var fEl = allFront[bi]; - allBehind.forEach(function (other, oi) { if (oi !== bi) tl.set(other, { opacity: 0 }, start); }); - allFront.forEach(function (other, oi) { if (oi !== bi) tl.set(other, { opacity: 0 }, start); }); + allBehind.forEach(function (other, oi) { + if (oi !== bi) tl.set(other, { opacity: 0 }, start); + }); + allFront.forEach(function (other, oi) { + if (oi !== bi) tl.set(other, { opacity: 0 }, start); + }); if (block.behind) { tl.set(bEl, { opacity: 1 }, start); @@ -323,7 +338,9 @@ tl.to({}, { duration: DURATION }, 0); window.__timelines["parallax-layers"] = tl; - document.fonts.ready.then(function () { applyBehindScales(); }); + document.fonts.ready.then(function () { + applyBehindScales(); + }); diff --git a/registry/components/caption-particle-burst/caption-particle-burst.html b/registry/components/caption-particle-burst/caption-particle-burst.html index cd06ba584..6664f4178 100644 --- a/registry/components/caption-particle-burst/caption-particle-burst.html +++ b/registry/components/caption-particle-burst/caption-particle-burst.html @@ -6,47 +6,87 @@ Particle Burst - + @@ -60,153 +100,193 @@ data-width="1920" data-height="1080" > - +
diff --git a/registry/components/caption-particle-burst/demo.html b/registry/components/caption-particle-burst/demo.html index cd06ba584..6664f4178 100644 --- a/registry/components/caption-particle-burst/demo.html +++ b/registry/components/caption-particle-burst/demo.html @@ -6,47 +6,87 @@ Particle Burst - + @@ -60,153 +100,193 @@ data-width="1920" data-height="1080" > - +
diff --git a/registry/components/caption-pill-karaoke/caption-pill-karaoke.html b/registry/components/caption-pill-karaoke/caption-pill-karaoke.html index 1e439742a..5cca10c90 100644 --- a/registry/components/caption-pill-karaoke/caption-pill-karaoke.html +++ b/registry/components/caption-pill-karaoke/caption-pill-karaoke.html @@ -6,7 +6,10 @@ Pill Karaoke - + @@ -84,89 +109,101 @@ data-width="1920" data-height="1080" > - +
diff --git a/registry/components/caption-texture-lava/demo.html b/registry/components/caption-texture-lava/demo.html index 212240d2c..26d79304d 100644 --- a/registry/components/caption-texture-lava/demo.html +++ b/registry/components/caption-texture-lava/demo.html @@ -25,25 +25,46 @@ mask-image: url("/assets/texture-mask-text/masks/lava.png"); } - *, *::before, *::after { box-sizing: border-box; } - html, body { - width: 1920px; height: 1080px; margin: 0; - overflow: hidden; background: #0a0805; + *, + *::before, + *::after { + box-sizing: border-box; + } + html, + body { + width: 1920px; + height: 1080px; + margin: 0; + overflow: hidden; + background: #0a0805; } #texture-lava { - position: relative; width: 1920px; height: 1080px; - overflow: hidden; background: #0a0805; + position: relative; + width: 1920px; + height: 1080px; + overflow: hidden; + background: #0a0805; } #lv-video { - position: absolute; inset: 0; z-index: 0; - width: 100%; height: 100%; object-fit: cover; + position: absolute; + inset: 0; + z-index: 0; + width: 100%; + height: 100%; + object-fit: cover; } .lv-overlay { - position: absolute; inset: 0; - background: rgba(0,0,0,0.55); z-index: 1; pointer-events: none; + position: absolute; + inset: 0; + background: rgba(0, 0, 0, 0.55); + z-index: 1; + pointer-events: none; } #lv-container { - position: absolute; inset: 0; z-index: 10; pointer-events: none; + position: absolute; + inset: 0; + z-index: 10; + pointer-events: none; } /* Lava-specific overrides for texture mask */ @@ -59,18 +80,22 @@ .lv-shadow { position: absolute; - left: 0; width: 100%; text-align: center; + left: 0; + width: 100%; + text-align: center; top: 50%; - filter: drop-shadow(0 4px 24px rgba(255,100,20,0.55)); - opacity: 0; visibility: hidden; + filter: drop-shadow(0 4px 24px rgba(255, 100, 20, 0.55)); + opacity: 0; + visibility: hidden; } .lv-word { - font-family: 'Anton', sans-serif; + font-family: "Anton", sans-serif; font-weight: 400; text-transform: uppercase; - color: #FFD0A0; + color: #ffd0a0; display: inline-block; - letter-spacing: 0.04em; line-height: 1; + letter-spacing: 0.04em; + line-height: 1; } @@ -84,89 +109,101 @@ data-width="1920" data-height="1080" > - +
diff --git a/registry/components/caption-typewriter/caption-typewriter.html b/registry/components/caption-typewriter/caption-typewriter.html index 5df7d240a..e1f63bef2 100644 --- a/registry/components/caption-typewriter/caption-typewriter.html +++ b/registry/components/caption-typewriter/caption-typewriter.html @@ -6,49 +6,87 @@ Typewriter - + @@ -63,119 +101,126 @@ data-width="1920" data-height="1080" > - +
diff --git a/registry/components/caption-typewriter/demo.html b/registry/components/caption-typewriter/demo.html index 5df7d240a..e1f63bef2 100644 --- a/registry/components/caption-typewriter/demo.html +++ b/registry/components/caption-typewriter/demo.html @@ -6,49 +6,87 @@ Typewriter - + @@ -63,119 +101,126 @@ data-width="1920" data-height="1080" > - +
diff --git a/registry/components/caption-weight-shift/caption-weight-shift.html b/registry/components/caption-weight-shift/caption-weight-shift.html index 48a574fdc..020a13bec 100644 --- a/registry/components/caption-weight-shift/caption-weight-shift.html +++ b/registry/components/caption-weight-shift/caption-weight-shift.html @@ -6,7 +6,10 @@ Weight Shift - +