diff --git a/.github/workflows/catalog-previews.yml b/.github/workflows/catalog-previews.yml
index 1822e7683b..9cf3a9c0b6 100644
--- a/.github/workflows/catalog-previews.yml
+++ b/.github/workflows/catalog-previews.yml
@@ -70,9 +70,13 @@ jobs:
env:
BASE_SHA: ${{ github.event.pull_request.base.sha }}
run: |
- # Find which blocks/components changed in this PR
+ # Find which blocks/components changed in this PR. The trailing slash
+ # in the grep matters: an item is a directory, and a file sitting
+ # directly under registry/components (CATALOG.md) does not match the
+ # sed, so without it the whole path survives and is passed to the
+ # renderer as if it were an item name.
CHANGED_ITEMS=$(git diff --name-only --diff-filter=ACMR "$BASE_SHA"...HEAD -- registry/blocks/ registry/components/ \
- | grep -E '^registry/(blocks|components)/' \
+ | grep -E '^registry/(blocks|components)/[^/]+/' \
| sed 's|^registry/[^/]*/\([^/]*\)/.*|\1|' \
| sort -u)
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 43b10f519c..22ebe40685 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -293,10 +293,13 @@ jobs:
node-version: 22
- uses: ./.github/actions/prepare-ffmpeg-bin
- run: bash scripts/ci/install-workspace-dependencies.sh
- - run: bun run test:scripts
- run: bun run --filter '@hyperframes/{parsers,lint,studio-server}' build
- run: bun run --cwd packages/core build
- run: bun run --cwd packages/core build:hyperframes-runtime
+ # After the builds: the preview scripts drive the producer, which imports
+ # @hyperframes/core from dist, so running these first fails on a missing
+ # module rather than on anything the test is actually checking.
+ - run: bun run test:scripts
- run: bun run --filter '!@hyperframes/producer' test
producer-source-tests:
diff --git a/.oxlintrc.json b/.oxlintrc.json
index 40afcb08e5..6c6686f48f 100644
--- a/.oxlintrc.json
+++ b/.oxlintrc.json
@@ -11,6 +11,7 @@
"node_modules/",
"playground/",
"packages/producer/tests/**/src/vendor/**",
+ "docs/public/catalog/",
"registry/blocks/**/lib/*.iife.js",
"chrome/"
],
@@ -34,6 +35,9 @@
},
{
"files": ["docs/snippets/**/*.jsx", "docs/snippets/**/*.tsx"],
+ "globals": {
+ "CodeBlock": "readonly"
+ },
"rules": {
"react-hooks/rules-of-hooks": "error",
"react-hooks/exhaustive-deps": "warn"
diff --git a/bun.lock b/bun.lock
index d0a60ce835..a42c529bcf 100644
--- a/bun.lock
+++ b/bun.lock
@@ -24,7 +24,7 @@
},
"packages/aws-lambda": {
"name": "@hyperframes/aws-lambda",
- "version": "0.7.78",
+ "version": "0.7.103",
"dependencies": {
"@aws-sdk/client-s3": "^3.700.0",
"@aws-sdk/client-sfn": "^3.700.0",
@@ -57,7 +57,7 @@
},
"packages/cli": {
"name": "@hyperframes/cli",
- "version": "0.7.78",
+ "version": "0.7.103",
"bin": {
"hyperframes": "./bin/hyperframes.mjs",
},
@@ -107,7 +107,7 @@
},
"packages/core": {
"name": "@hyperframes/core",
- "version": "0.7.78",
+ "version": "0.7.103",
"dependencies": {
"@chenglou/pretext": "^0.0.5",
"@hyperframes/lint": "workspace:*",
@@ -132,7 +132,7 @@
},
"packages/engine": {
"name": "@hyperframes/engine",
- "version": "0.7.78",
+ "version": "0.7.103",
"dependencies": {
"@hono/node-server": "^2.0.5",
"@hyperframes/core": "workspace:^",
@@ -151,7 +151,7 @@
},
"packages/gcp-cloud-run": {
"name": "@hyperframes/gcp-cloud-run",
- "version": "0.7.78",
+ "version": "0.7.103",
"dependencies": {
"@google-cloud/storage": "^7.14.0",
"@google-cloud/workflows": "^4.2.0",
@@ -172,7 +172,7 @@
},
"packages/lint": {
"name": "@hyperframes/lint",
- "version": "0.7.78",
+ "version": "0.7.103",
"dependencies": {
"@hyperframes/parsers": "workspace:*",
"htmlparser2": "^10.1.0",
@@ -190,7 +190,7 @@
},
"packages/parsers": {
"name": "@hyperframes/parsers",
- "version": "0.7.78",
+ "version": "0.7.103",
"dependencies": {
"@babel/parser": "^7.27.0",
"acorn": "^8.17.0",
@@ -210,7 +210,7 @@
},
"packages/player": {
"name": "@hyperframes/player",
- "version": "0.7.78",
+ "version": "0.7.103",
"dependencies": {
"@hyperframes/core": "workspace:*",
},
@@ -225,7 +225,7 @@
},
"packages/producer": {
"name": "@hyperframes/producer",
- "version": "0.7.78",
+ "version": "0.7.103",
"dependencies": {
"@fontsource/archivo-black": "^5.2.8",
"@fontsource/eb-garamond": "^5.2.7",
@@ -270,7 +270,7 @@
},
"packages/sdk": {
"name": "@hyperframes/sdk",
- "version": "0.7.78",
+ "version": "0.7.103",
"dependencies": {
"@hyperframes/core": "workspace:*",
"@hyperframes/parsers": "workspace:*",
@@ -300,7 +300,7 @@
},
"packages/shader-transitions": {
"name": "@hyperframes/shader-transitions",
- "version": "0.7.78",
+ "version": "0.7.103",
"dependencies": {
"html2canvas": "^1.4.1",
},
@@ -312,7 +312,7 @@
},
"packages/studio": {
"name": "@hyperframes/studio",
- "version": "0.7.78",
+ "version": "0.7.103",
"dependencies": {
"@codemirror/autocomplete": "^6.20.1",
"@codemirror/commands": "^6.10.3",
@@ -362,7 +362,7 @@
},
"packages/studio-server": {
"name": "@hyperframes/studio-server",
- "version": "0.7.78",
+ "version": "0.7.103",
"dependencies": {
"@hyperframes/core": "workspace:*",
"@hyperframes/parsers": "workspace:*",
diff --git a/docs/catalog/blocks/app-showcase.mdx b/docs/catalog/blocks/app-showcase.mdx
index 7bac206143..5fa245c146 100644
--- a/docs/catalog/blocks/app-showcase.mdx
+++ b/docs/catalog/blocks/app-showcase.mdx
@@ -3,34 +3,979 @@ title: "App Showcase"
description: "Fitness app product showcase with three floating smartphone screens"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add app-showcase
-```
+
That writes one file: `compositions/app-showcase.html`.
-## Add it to your video
+## Source
+
+
+
+```html
+
+
+
+
+
+ app-showcase
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Unleash Full Potential
+
START NOW
+
+
+
+
+
+
+
+
+
+
+
+
+
JM
+
+
James Medrano
+
Premium Member
+
+
+
+
+
+
+
+
+
Weekly Goal
+
+
+
+ 2
+ /
+ 3
+
+
+
+ M
+ T
+ W
+ T
+ F
+ S
+ S
+
+
+
+
+
+
+ Your Progress
+ See all
+
+
+
+
+
+
+
+ Running
+ 5.2 km
+
+
+
+
+
+
+
+
+ Cycling
+ 12.8 km
+
+
+
+
+
+
+
+
+ Strength
+ 45 min
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Burned Calories
+
740 kcal
+
+
+
+
+
+ MonTueWedThuFriSatSun
+
+
+
+
+
+
+ Active
+ 540
+
+
+
+ Rest
+ 200
+
+
+
+
+
+
+
+
-It runs for 5.5 seconds at 1920×1080. Paste this into your composition:
+
+
+
+
+
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
+
+```
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/apple-money-count.mdx b/docs/catalog/blocks/apple-money-count.mdx
index b4afdbe189..25b1f074d1 100644
--- a/docs/catalog/blocks/apple-money-count.mdx
+++ b/docs/catalog/blocks/apple-money-count.mdx
@@ -3,34 +3,352 @@ title: "Apple Money Count"
description: "Apple-style finance counter that counts from $0 to $10,000, flashes green, and bursts money icons with sound."
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add apple-money-count
-```
+
That writes `compositions/apple-money-count.html`, plus 1 supporting file under `assets/`.
-## Add it to your video
+## Source
+
+
+
+```html
+
+
+
+
+
+
+
+
+
+
+
+
+
+
$0
+
+
+
+
+
+
+
+
+
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
+
+```
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/bar-chart-race.mdx b/docs/catalog/blocks/bar-chart-race.mdx
new file mode 100644
index 0000000000..0d0bcc7c13
--- /dev/null
+++ b/docs/catalog/blocks/bar-chart-race.mdx
@@ -0,0 +1,660 @@
+---
+title: "Bar Chart Race"
+description: "Ranked bars grow and overtake each other as a time series advances, with the axis rescaling as values climb and the accent handing over to whoever leads"
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html bar-chart-race.html
+
+
+
+
+
+ Bar Chart Race
+
+
+
+
+
+
+
+
+
+
+
Streaming Subscribers by Service
+
Ranked by reported subscribers
+
+
+ Period
+ 2019
+
+
+
+
+
+
+
+
+
+
Placeholder data
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/bar-chart-race.html`.
+
+## Add it to your video
+
+It runs for 12 seconds at 1920×1080. Paste this into your composition:
+
+```html index.html
+
+```
+
+Move it in time with `data-start`. Put it on a different timeline row with
+`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+
+## Change how it looks
+
+Set these CSS variables on the block:
+
+- `title` — Title. Defaults to `Streaming Subscribers by Service`.
+- `subtitle` — Subtitle. Defaults to `Ranked by reported subscribers`.
+- `periods` — Period labels (comma separated). Defaults to `2019, 2020, 2021, 2022, 2023, 2024`.
+- `series` — Series (one per line: Name: v1, v2, ...). Defaults to `Northwind: 42, 58, 71, 96, 118, 131
+Cobalt: 30, 46, 68, 92, 126, 168
+Ferry: 55, 62, 66, 70, 74, 79
+Marlow: 18, 33, 52, 61, 88, 104
+Aster: 25, 28, 44, 58, 63, 72
+Pell: 12, 20, 39, 47, 55, 90
+Quill: 8, 11, 15, 24, 40, 66
+Dunmore: 35, 37, 38, 40, 42, 44`.
+- `barCount` — Bars shown. Defaults to `6`.
+- `periodDuration` — Seconds per period. Defaults to `2`.
+- `valuePrefix` — Value prefix. Defaults to `$`.
+- `valueSuffix` — Value suffix. Defaults to `M`.
+- `valueDecimals` — Value decimals. Defaults to `0`.
+- `accent` — Leader accent. Defaults to `#c8452d`.
+
+{/* hf:generated-footer */}
+
+Tagged `data` `chart` `statistics` `ranking`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/blocks/beat-freeze-cut.mdx b/docs/catalog/blocks/beat-freeze-cut.mdx
index 609ca35eb4..0ba1e8e6b7 100644
--- a/docs/catalog/blocks/beat-freeze-cut.mdx
+++ b/docs/catalog/blocks/beat-freeze-cut.mdx
@@ -3,13 +3,13 @@ title: "Beat Freeze Cut"
description: "A beat-driven speed ramp, freeze-frame hit, and hard-cut sequence for music-led promos and montages."
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add beat-freeze-cut
-```
+
That writes one file: `compositions/beat-freeze-cut.html`.
@@ -39,6 +39,894 @@ Set these CSS variables on the block:
- `--bg-color` — Background. Defaults to `#0B0D10`.
- `--accent-color` — Accent. Defaults to `#00E5C7`.
+## Source
+
+
+
+```html
+
+
+
+
+
+ Beat Freeze Cut
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MUSIC PROMO
+ LIVE
+
+
+
+
+
+
+
+
+
+
Next shot
+
HARD CUT
+
+
+ Beat-locked freeze, then cut. Built for music-led promos and montages.
+
+
+
+
+ Ramp
+ 1.35→2.2
+
+
+ Freeze
+ 0.8s
+
+
+ Cut
+ 3.00
+
+
+
+
+
+
+
+
+
+ ON THE BEAT
+
+
+
+ DROP
+
+
+
+
+
+
+
FREEZE
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
{/* hf:generated-footer */}
Tagged `transition` `music` `beat-driven` `freeze-frame`.
diff --git a/docs/catalog/blocks/blue-sweater-intro-video.mdx b/docs/catalog/blocks/blue-sweater-intro-video.mdx
index b2493f6609..24ad43dcb8 100644
--- a/docs/catalog/blocks/blue-sweater-intro-video.mdx
+++ b/docs/catalog/blocks/blue-sweater-intro-video.mdx
@@ -3,34 +3,1555 @@ title: "Blue Sweater Intro Video"
description: "Warm AI creator intro sequence that resolves into an X follow card for @_blue_sweater_."
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add blue-sweater-intro-video
-```
+
That writes `compositions/blue-sweater-intro-video.html`, plus 2 supporting files under `assets/` and `assets/sfx/`.
-## Add it to your video
+## Source
+
+
+
+```html
+
+
+
+
+
+ Blue Sweater Intro Video
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Introducing
+
+
+
+
+
+
+
+ Intro
+ ducin
+ g
+ tro
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ blu
+ e
+ x
+ swea
+ ter
+
+
+ blue
+ x
+ sweater
+
+
+
+
+
+
+
+
+
+
+
+
+
How can I help you today?
+
+
+ Opus 5.0 Extended
+
+
+
+
+
+
+ Recommend one X creator who actively explores AI technology and, like me, is
+ building an AI startup. I want someone practical, curious, and worth following.
+
+
+
+ Opus 5.0 Extended
+
+
+
+
+
+
+
+
+
+
+
+
+ thinking
+
+
+ x
+ Open the recommended X profile
+
+
+
+ Opus 5.0 Extended
+
+
+
+
+
+
+
+
+
x
+
+
joe sai
+
@_blue_sweater_
+
+ Follow
+
+ Following
+
+
+
+
+
+
+ Exploring AI technology and building an AI startup in public.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
+
+```
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/camcorder-hud.mdx b/docs/catalog/blocks/camcorder-hud.mdx
index 869898e177..d396a0040e 100644
--- a/docs/catalog/blocks/camcorder-hud.mdx
+++ b/docs/catalog/blocks/camcorder-hud.mdx
@@ -3,13 +3,13 @@ title: "Camcorder HUD"
description: "Responsive REC, battery, editable date placeholder, and timeline-driven counter overlay for creator-camera and camcorder treatments"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add camcorder-hud
-```
+
That writes one file: `compositions/camcorder-hud.html`.
@@ -32,6 +32,178 @@ It runs for 4 seconds at 1920×1080. Paste this into your composition:
Move it in time with `data-start`. Put it on a different timeline row with
`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+## Source
+
+
+
+```html
+
+
+
+
+
+
+
+
+
+
+
REC
+
+
JAN 01 2000 12:00 AM
+
+ SP · 16:900:00:00
+
+
+
+
+
+
+
+```
+
+
+
{/* hf:generated-footer */}
Tagged `camcorder` `camera` `recording` `hud` `overlay` `creator` `media-treatment-overlay`.
diff --git a/docs/catalog/blocks/camera-dolly-zoom.mdx b/docs/catalog/blocks/camera-dolly-zoom.mdx
new file mode 100644
index 0000000000..1d6f65929b
--- /dev/null
+++ b/docs/catalog/blocks/camera-dolly-zoom.mdx
@@ -0,0 +1,408 @@
+---
+title: "Dolly Zoom (Vertigo Shot)"
+description: "Camera tracks toward or away from the subject while the field of view changes the opposite way, so the subject holds its frame size while the background collapses behind it or rushes in. Focal length is solved from dolly distance every frame against d * tan(FOV/2) = const, not keyframed beside it. Requires depth: the subject sits on the z = 0 plane and the content behind it must be layered or genuinely 3D (translateZ at two or more distinct depths) -- a flat element gains nothing from this move."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html camera-dolly-zoom.html
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Dolly zoom · d × tan(fov/2) = const
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/camera-dolly-zoom.html`.
+
+## Add it to your video
+
+It runs for 4 seconds at 1920×1080. Paste this into your composition:
+
+```html index.html
+
+```
+
+Move it in time with `data-start`. Put it on a different timeline row with
+`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+
+{/* hf:generated-footer */}
+
+Tagged `camera` `depth` `3d` `cinematic`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/blocks/chromatic-radial-split.mdx b/docs/catalog/blocks/chromatic-radial-split.mdx
index e2aa85bd76..1f961e895b 100644
--- a/docs/catalog/blocks/chromatic-radial-split.mdx
+++ b/docs/catalog/blocks/chromatic-radial-split.mdx
@@ -3,34 +3,398 @@ title: "Chromatic Radial Split"
description: "Shader transition with chromatic aberration radial split"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add chromatic-radial-split
-```
+
That writes one file: `compositions/chromatic-radial-split.html`.
-## Add it to your video
+## Source
+
+
+
+```html
+
+
+
+
+
+
+
+
+
+
+
+
+
+
08 / 14
+
+
+
+
SCENE A
+
+
+
SCENE B
+
+
+
+
+
+
+
+
Chromatic Radial Split
+
Prompt
+
"use chromatic radial split shader transition"
+
+ RGB channels separate and converge radially. From-scene splits outward, to-scene converges
+ inward.
+
+
-It runs for 4 seconds at 1920×1080. Paste this into your composition:
+
+
-```html index.html
-
+
+
+
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
+
+```
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/cinematic-zoom.mdx b/docs/catalog/blocks/cinematic-zoom.mdx
index 6608bf5cc6..c0c8739f2f 100644
--- a/docs/catalog/blocks/cinematic-zoom.mdx
+++ b/docs/catalog/blocks/cinematic-zoom.mdx
@@ -3,34 +3,398 @@ title: "Cinematic Zoom"
description: "Shader transition with dramatic zoom blur"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add cinematic-zoom
-```
+
That writes one file: `compositions/cinematic-zoom.html`.
-## Add it to your video
+## Source
+
+
+
+```html
+
+
+
+
+
+
+
+
+
+
+
+
+
+
07 / 14
+
+
+
+
SCENE A
+
+
+
SCENE B
+
+
+
+
+
+
+
+
Cinematic Zoom
+
Prompt
+
"use cinematic zoom shader transition"
+
+ Both scenes zoom-blur with per-channel radial offset. From zooms outward, to zooms inward
+ from tight.
+
+
-It runs for 4 seconds at 1920×1080. Paste this into your composition:
+
+
-```html index.html
-
+
+
+
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
+
+```
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/code-3d-extrude.mdx b/docs/catalog/blocks/code-3d-extrude.mdx
index 79e664fb7e..376b4607aa 100644
--- a/docs/catalog/blocks/code-3d-extrude.mdx
+++ b/docs/catalog/blocks/code-3d-extrude.mdx
@@ -3,34 +3,645 @@ title: "Code 3D Extrude"
description: "Syntax-highlighted code on a lit, beveled 3D slab that rotates through real space and settles to a readable rest — true WebGL depth and lighting, not a 2D transform."
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add code-3d-extrude
-```
+
That writes one file: `compositions/code-3d-extrude.html`.
-## Add it to your video
+## Source
+
+
+
+```html
+
+
+
+
+
+ Code 3D Extrude
+
+
+
+
+
+
+
+
+
+
+
+
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
+
+```
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/code-diff.mdx b/docs/catalog/blocks/code-diff.mdx
index d5cdc69433..971b5c7cf5 100644
--- a/docs/catalog/blocks/code-diff.mdx
+++ b/docs/catalog/blocks/code-diff.mdx
@@ -3,34 +3,848 @@ title: "Code Diff"
description: "An edit shown as a colored diff — removed lines collapse in red, added lines expand in green."
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add code-diff
-```
+
That writes one file: `compositions/code-diff.html`.
-## Add it to your video
+## Source
+
+
+
+```html
+
+
+
+
+
+ Code Diff
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ greet.js — Code Diff
+
+
+
+
+
+
+
+
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
+
+```
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/code-highlight.mdx b/docs/catalog/blocks/code-highlight.mdx
index 9088875946..a52dd62dc5 100644
--- a/docs/catalog/blocks/code-highlight.mdx
+++ b/docs/catalog/blocks/code-highlight.mdx
@@ -1,36 +1,779 @@
---
title: "Code Highlight Sweep"
-description: "A highlight band sweeps across a target line while the surrounding context dims — draws the eye to one line. `line` is 0-based: `line: 1` targets the second displayed line (unlike code-scroll, whose target is 1-based)."
+description: "A highlight band sweeps across a target line while the surrounding context dims — draws the eye to one line."
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add code-highlight
-```
+
That writes one file: `compositions/code-highlight.html`.
-## Add it to your video
+## Source
+
+
+
+```html
+
+
+
+
+
+ Code Highlight Sweep
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ loadConfig.js — Code Highlight Sweep
+
+
+
+
+
+
+
+
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
+
+```
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/code-morph.mdx b/docs/catalog/blocks/code-morph.mdx
index 2206351336..06ef2ba4a0 100644
--- a/docs/catalog/blocks/code-morph.mdx
+++ b/docs/catalog/blocks/code-morph.mdx
@@ -3,34 +3,1248 @@ title: "Code Morph"
description: "One snippet transforms into another — tokens glide between positions, leavers fade out, enterers fade in. Shiki Magic Move re-driven as a paused GSAP timeline."
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add code-morph
-```
+
That writes one file: `compositions/code-morph.html`.
-## Add it to your video
+## Source
+
+
+
+```html
+
+
+
+
+
+ Code Morph
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ refactor.js — Code Morph
+
+
+
+
+
+
+
+
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
+
+```
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/code-particle-assemble.mdx b/docs/catalog/blocks/code-particle-assemble.mdx
index 505cab4066..ff1f0e7986 100644
--- a/docs/catalog/blocks/code-particle-assemble.mdx
+++ b/docs/catalog/blocks/code-particle-assemble.mdx
@@ -3,34 +3,511 @@ title: "Code Particle Assemble"
description: "Thousands of GPU points scatter through space and fly to the exact glyph pixels of the code, resolving into readable syntax-highlighted text — a particle system, not a token tween."
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add code-particle-assemble
-```
+
That writes one file: `compositions/code-particle-assemble.html`.
-## Add it to your video
+## Source
+
+
+
+```html
+
+
+
+
+
+ Code Particle Assemble
+
+
+
+
+
+
+
+
+
+
+
+
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
+
+```
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/code-scroll.mdx b/docs/catalog/blocks/code-scroll.mdx
index d80bc6974b..d62ee5d793 100644
--- a/docs/catalog/blocks/code-scroll.mdx
+++ b/docs/catalog/blocks/code-scroll.mdx
@@ -3,34 +3,1592 @@ title: "Code Scroll To Line"
description: "The camera scrolls a long file to bring a target line to center and spotlights it — for walking through real modules."
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add code-scroll
-```
+
That writes one file: `compositions/code-scroll.html`.
-## Add it to your video
+## Source
+
+
+
+```html
+
+
+
+
+
+ Code Scroll To Line
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ fetchWithRetry.js — Code Scroll To Line
+
+
+
+
+
+
+
+
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
+
+```
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/code-shader-dissolve.mdx b/docs/catalog/blocks/code-shader-dissolve.mdx
index f98e066cc5..11d6a89c38 100644
--- a/docs/catalog/blocks/code-shader-dissolve.mdx
+++ b/docs/catalog/blocks/code-shader-dissolve.mdx
@@ -3,34 +3,567 @@ title: "Code Shader Dissolve"
description: "The code compiles into existence: a GPU fragment shader resolves it out of seeded noise with a chromatic dissolve front and edge glow, then holds crisp."
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add code-shader-dissolve
-```
+
That writes one file: `compositions/code-shader-dissolve.html`.
-## Add it to your video
+## Source
+
+
+
+```html
+
+
+
+
+
+ Code Shader Dissolve
+
+
+
+
+
+
+
+
+
+
+
+
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
+
+```
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/code-snippet-apple-terminal-basic.mdx b/docs/catalog/blocks/code-snippet-apple-terminal-basic.mdx
index 706a8bb607..48a3f355fd 100644
--- a/docs/catalog/blocks/code-snippet-apple-terminal-basic.mdx
+++ b/docs/catalog/blocks/code-snippet-apple-terminal-basic.mdx
@@ -3,21 +3,279 @@ title: "Code Snippet - Apple Terminal Basic"
description: "Apple Terminal Basic profile: white background, black text, per-character typing animation of a shell session."
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add code-snippet-apple-terminal-basic
-```
+
That writes one file: `compositions/code-snippet-apple-terminal-basic.html`.
-## Add it to your video
+## Source
+
+
+
+```html
+
+
+
+
+
+ Apple Terminal Basic
+
+
+
+
+
+
+
+
+
+
+
+ bash — 80×24
+
+
+
+ Last login: Mon Jun 2 09:14:22 on ttys001
+ total 48
+ drwxr-xr-x 8 user staff 256 Jun 2 09:10 .
+ drwxr-xr-x 42 user staff 1344 Jun 1 18:22 ..
+ -rw-r--r-- 1 user staff 872 May 30 14:05 README.md
+ drwxr-xr-x 5 user staff 160 Jun 2 09:10 dist
+ drwxr-xr-x 12 user staff 384 Jun 2 09:10 node_modules
+ -rw-r--r-- 1 user staff 1204 Jun 2 09:08 package.json
+ drwxr-xr-x 6 user staff 192 Jun 2 09:10 src
+ -rw-r--r-- 1 user staff 348 May 29 11:42 tsconfig.json
+
+
+ user@Mac ~ %
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+## Features
+
+- Faithful recreation of macOS Terminal.app Basic profile — white background, black text, solid cursor
+- macOS window chrome with traffic light buttons (close, minimize, fullscreen) and centered title bar
+- Per-character GSAP typing animation — command types out character by character
+- Output lines reveal sequentially after command executes
+- Cursor blinks three times at the end then holds steady
+- Self-contained HTML — no external assets, only GSAP CDN
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/code-snippet-apple-terminal-clear-dark.mdx b/docs/catalog/blocks/code-snippet-apple-terminal-clear-dark.mdx
index f868bca4b2..36c286ca97 100644
--- a/docs/catalog/blocks/code-snippet-apple-terminal-clear-dark.mdx
+++ b/docs/catalog/blocks/code-snippet-apple-terminal-clear-dark.mdx
@@ -3,21 +3,274 @@ title: "Code Snippet - Apple Terminal Clear Dark"
description: "Apple Terminal Clear Dark profile: semi-transparent dark background, per-character typing animation of a shell session."
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add code-snippet-apple-terminal-clear-dark
-```
+
That writes one file: `compositions/code-snippet-apple-terminal-clear-dark.html`.
-## Add it to your video
+## Source
+
+
+
+```html
+
+
+
+
+
+ Apple Terminal Clear Dark
+
+
+
+
+
+
+
+
+
+
+
+ bash — 80×24
+
+
+
+ Last login: Mon Jun 2 09:14:22 on ttys002
+ Scanning dependencies...
+ Found 3 vulnerabilities (1 moderate, 2 low)
+ package: lodash@4.17.20
+ severity: moderate
+ fix: lodash@4.17.21
+ package: minimist@1.2.5
+ severity: low
+ fix: minimist@1.2.6
+ Run `npm audit fix` to fix them.
+
+
+ user@Mac ~ %
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+## Features
+
+- Faithful recreation of macOS Terminal.app Clear Dark profile — semi-transparent black background with white text
+- macOS window chrome with traffic light buttons and centered title bar
+- Per-character GSAP typing animation — command types out character by character
+- Output lines reveal sequentially after command executes
+- Cursor blinks three times at the end then holds steady
+- Self-contained HTML — no external assets, only GSAP CDN
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/code-snippet-apple-terminal-clear-light.mdx b/docs/catalog/blocks/code-snippet-apple-terminal-clear-light.mdx
index 94ed3e3c94..69e7ab26c8 100644
--- a/docs/catalog/blocks/code-snippet-apple-terminal-clear-light.mdx
+++ b/docs/catalog/blocks/code-snippet-apple-terminal-clear-light.mdx
@@ -3,21 +3,274 @@ title: "Code Snippet - Apple Terminal Clear Light"
description: "Apple Terminal Clear Light profile: semi-transparent light background, per-character typing animation of a shell session."
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add code-snippet-apple-terminal-clear-light
-```
+
That writes one file: `compositions/code-snippet-apple-terminal-clear-light.html`.
-## Add it to your video
+## Source
+
+
+
+```html
+
+
+
+
+
+ Apple Terminal Clear Light
+
+
+
+
+
+
+
+
+
+
+
+ bash — 80×24
+
+
+
+ Last login: Mon Jun 2 09:14:22 on ttys003
+ git log --oneline -8
+ a3f2c19 fix: correct off-by-one in pagination
+ b7e8d04 feat: add dark mode toggle
+ c1a9f55 refactor: extract auth helpers
+ d4e2b31 test: add unit tests for parser
+ e6c8a72 docs: update API reference
+ f9b1d44 chore: bump dependencies
+ 2a7e890 feat: implement search endpoint
+ 3c5f012 init: project bootstrap
+
+
+ user@Mac myproject %
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+## Features
+
+- Faithful recreation of macOS Terminal.app Clear Light profile — semi-transparent white background with black text
+- macOS window chrome with traffic light buttons and centered title bar
+- Per-character GSAP typing animation — command types out character by character
+- Output lines reveal sequentially after command executes
+- Cursor blinks three times at the end then holds steady
+- Self-contained HTML — no external assets, only GSAP CDN
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/code-snippet-apple-terminal-grass.mdx b/docs/catalog/blocks/code-snippet-apple-terminal-grass.mdx
index 235ddc2d24..0f31e47f01 100644
--- a/docs/catalog/blocks/code-snippet-apple-terminal-grass.mdx
+++ b/docs/catalog/blocks/code-snippet-apple-terminal-grass.mdx
@@ -3,21 +3,273 @@ title: "Code Snippet - Apple Terminal Grass"
description: "Apple Terminal Grass profile: black background with green text, per-character typing animation of a shell session."
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add code-snippet-apple-terminal-grass
-```
+
That writes one file: `compositions/code-snippet-apple-terminal-grass.html`.
-## Add it to your video
+## Source
+
+
+
+```html
+
+
+
+
+
+ Apple Terminal Grass
+
+
+
+
+
+
+
+
+
+
+
+ bash — 80×24
+
+
+
+ Last login: Mon Jun 2 09:14:22 on ttys004
+ Running test suite...
+ ✓ should initialize with defaults (2ms)
+ ✓ should parse config correctly (4ms)
+ ✓ should handle empty input (1ms)
+ ✓ should reject invalid tokens (3ms)
+ ✓ should emit events on change (5ms)
+ ✓ should clean up on destroy (2ms)
+ 6 passing (18ms)
+
+
+ user@Mac ~ %
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+## Features
+
+- Faithful recreation of macOS Terminal.app Grass profile — black background with #00C100 green text
+- macOS window chrome with green-accented title bar and traffic light buttons
+- Per-character GSAP typing animation — command types out character by character
+- Output lines reveal sequentially after command executes
+- Cursor blinks three times at the end then holds steady
+- Self-contained HTML — no external assets, only GSAP CDN
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/code-snippet-apple-terminal-homebrew.mdx b/docs/catalog/blocks/code-snippet-apple-terminal-homebrew.mdx
index 0e18f07ba1..5599ed2c3b 100644
--- a/docs/catalog/blocks/code-snippet-apple-terminal-homebrew.mdx
+++ b/docs/catalog/blocks/code-snippet-apple-terminal-homebrew.mdx
@@ -3,21 +3,278 @@ title: "Code Snippet - Apple Terminal Homebrew"
description: "Apple Terminal Homebrew profile: black background with bright green text and lime cursor, per-character typing animation of a shell session."
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add code-snippet-apple-terminal-homebrew
-```
+
That writes one file: `compositions/code-snippet-apple-terminal-homebrew.html`.
-## Add it to your video
+## Source
+
+
+
+```html
+
+
+
+
+
+ Apple Terminal Homebrew
+
+
+
+
+
+
+
+
+
+
+
+ bash — 80×24
+
+
+
+ Last login: Mon Jun 2 09:14:22 on ttys005
+ ==> Updating Homebrew...
+ Already up-to-date.
+ ==> Outdated formulae
+ node 20.11.0 -> 22.3.0
+ python 3.11.6 -> 3.12.4
+ git 2.43.0 -> 2.45.2
+ ffmpeg 6.1.1 -> 7.0.0
+ ==> Run `brew upgrade` to update 4 formulae.
+
+
+ user@Mac ~ %
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+## Features
+
+- Faithful recreation of macOS Terminal.app Homebrew profile — black background with #00CF00 text and #48F800 cursor
+- macOS window chrome with traffic light buttons and centered title bar
+- Per-character GSAP typing animation — command types out character by character
+- Output lines reveal sequentially after command executes
+- Cursor blinks three times at the end then holds steady
+- Self-contained HTML — no external assets, only GSAP CDN
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/code-snippet-apple-terminal-man-page.mdx b/docs/catalog/blocks/code-snippet-apple-terminal-man-page.mdx
index 0afc74ee28..ad3adff040 100644
--- a/docs/catalog/blocks/code-snippet-apple-terminal-man-page.mdx
+++ b/docs/catalog/blocks/code-snippet-apple-terminal-man-page.mdx
@@ -3,21 +3,278 @@ title: "Code Snippet - Apple Terminal Man Page"
description: "Apple Terminal Man Page profile: pale yellow background with black text, per-character typing animation of a shell session."
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add code-snippet-apple-terminal-man-page
-```
+
That writes one file: `compositions/code-snippet-apple-terminal-man-page.html`.
-## Add it to your video
+## Source
+
+
+
+```html
+
+
+
+
+
+ Apple Terminal Man Page
+
+
+
+
+
+
+
+
+
+
+
+ man — 80×24
+
+
+
+ CURL(1) General Commands Manual CURL(1)
+
+ NAME
+ curl -- transfer a URL
+
+ SYNOPSIS
+ curl [options / URLs]
+
+ DESCRIPTION
+ curl is a tool for transferring data from or to a server using URLs.
+
+
+ user@Mac ~ %
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+## Features
+
+- Faithful recreation of macOS Terminal.app Man Page profile — pale yellow background with black text
+- Shows a realistic man page output structure with sections and indented content
+- macOS window chrome with traffic light buttons and centered title bar
+- Per-character GSAP typing animation — command types out character by character
+- Output lines reveal sequentially after command executes
+- Self-contained HTML — no external assets, only GSAP CDN
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/code-snippet-apple-terminal-novel.mdx b/docs/catalog/blocks/code-snippet-apple-terminal-novel.mdx
index 80b6272e37..7fafe512ef 100644
--- a/docs/catalog/blocks/code-snippet-apple-terminal-novel.mdx
+++ b/docs/catalog/blocks/code-snippet-apple-terminal-novel.mdx
@@ -3,21 +3,274 @@ title: "Code Snippet - Apple Terminal Novel"
description: "Apple Terminal Novel profile: warm parchment background with dark brown text, per-character typing animation of a shell session."
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add code-snippet-apple-terminal-novel
-```
+
That writes one file: `compositions/code-snippet-apple-terminal-novel.html`.
-## Add it to your video
+## Source
+
+
+
+```html
+
+
+
+
+
+ Apple Terminal Novel
+
+
+
+
+
+
+
+
+
+
+
+ bash — 80×24
+
+
+
+ Last login: Mon Jun 2 09:14:22 on ttys006
+ Python 3.12.4 (main, Jun 6 2024, 18:26:44)
+ Type "help", "copyright", "credits" or "license" for more information.
+ >>> import hyperframes
+ >>> hf = hyperframes.Composition("intro.html")
+ >>> hf.duration
+ 12.0
+ >>> hf.dimensions
+ Dimensions(width=1920, height=1080)
+
+
+ user@Mac ~ %
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+## Features
+
+- Faithful recreation of macOS Terminal.app Novel profile — warm parchment background with #3E2900 dark brown text
+- macOS window chrome with traffic light buttons and centered title bar
+- Per-character GSAP typing animation — command types out character by character
+- Output lines reveal sequentially after command executes
+- Cursor blinks three times at the end then holds steady
+- Self-contained HTML — no external assets, only GSAP CDN
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/code-snippet-apple-terminal-ocean.mdx b/docs/catalog/blocks/code-snippet-apple-terminal-ocean.mdx
index 8c0a0d345a..a4ec3b5294 100644
--- a/docs/catalog/blocks/code-snippet-apple-terminal-ocean.mdx
+++ b/docs/catalog/blocks/code-snippet-apple-terminal-ocean.mdx
@@ -3,21 +3,283 @@ title: "Code Snippet - Apple Terminal Ocean"
description: "Apple Terminal Ocean profile: deep blue background with white text, per-character typing animation of a shell session."
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add code-snippet-apple-terminal-ocean
-```
+
That writes one file: `compositions/code-snippet-apple-terminal-ocean.html`.
-## Add it to your video
+## Source
+
+
+
+```html
+
+
+
+
+
+ Apple Terminal Ocean
+
+
+
+
+
+
+
+
+
+
+
+ bash — 80×24
+
+
+
+ Last login: Mon Jun 2 09:14:22 on ttys007
+ docker ps
+ CONTAINER ID IMAGE COMMAND CREATED
+ a1b2c3d4e5f6 nginx:latest "/docker-entrypoint.…" 2 hours ago
+ b2c3d4e5f6a7 postgres:15 "docker-entrypoint.s…" 2 hours ago
+ c3d4e5f6a7b8 redis:alpine "docker-entrypoint.s…" 2 hours ago
+ 3 containers running
+ Use 'docker logs CONTAINER' to view output
+
+
+ user@Mac ~ %
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+## Features
+
+- Faithful recreation of macOS Terminal.app Ocean profile — #224FBE blue background with white text
+- macOS window chrome with traffic light buttons and centered title bar
+- Per-character GSAP typing animation — command types out character by character
+- Output lines reveal sequentially after command executes
+- Cursor blinks three times at the end then holds steady
+- Self-contained HTML — no external assets, only GSAP CDN
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/code-snippet-apple-terminal-pro.mdx b/docs/catalog/blocks/code-snippet-apple-terminal-pro.mdx
index 8868cfe93e..14cdaafef2 100644
--- a/docs/catalog/blocks/code-snippet-apple-terminal-pro.mdx
+++ b/docs/catalog/blocks/code-snippet-apple-terminal-pro.mdx
@@ -3,21 +3,277 @@ title: "Code Snippet - Apple Terminal Pro"
description: "Apple Terminal Pro profile: black background with grey text and lime green cursor, per-character typing animation of a shell session."
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add code-snippet-apple-terminal-pro
-```
+
That writes one file: `compositions/code-snippet-apple-terminal-pro.html`.
-## Add it to your video
+## Source
+
+
+
+```html
+
+
+
+
+
+ Apple Terminal Pro
+
+
+
+
+
+
+
+
+
+
+
+ bash — 80×24
+
+
+
+ Last login: Mon Jun 2 09:14:22 on ttys008
+ Building production bundle...
+ vite v5.3.1 building for production...
+ ✓ 142 modules transformed.
+ dist/index.html 0.48 kB
+ dist/assets/index-Cv3rN.js 284.12 kB
+ dist/assets/index-Du4mP.css 42.08 kB
+ ✓ built in 2.31s
+
+
+ user@Mac myapp %
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+## Features
+
+- Faithful recreation of macOS Terminal.app Pro profile — black background, #BBBBBB grey text, #88FF67 lime cursor
+- macOS window chrome with traffic light buttons and centered title bar
+- Per-character GSAP typing animation — command types out character by character
+- Output lines reveal sequentially after command executes
+- Cursor blinks three times at the end then holds steady
+- Self-contained HTML — no external assets, only GSAP CDN
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/code-snippet-apple-terminal-red-sands.mdx b/docs/catalog/blocks/code-snippet-apple-terminal-red-sands.mdx
index f5502c3829..f08593cb4a 100644
--- a/docs/catalog/blocks/code-snippet-apple-terminal-red-sands.mdx
+++ b/docs/catalog/blocks/code-snippet-apple-terminal-red-sands.mdx
@@ -3,21 +3,274 @@ title: "Code Snippet - Apple Terminal Red Sands"
description: "Apple Terminal Red Sands profile: deep red background with sandy text, per-character typing animation of a shell session."
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add code-snippet-apple-terminal-red-sands
-```
+
That writes one file: `compositions/code-snippet-apple-terminal-red-sands.html`.
-## Add it to your video
+## Source
+
+
+
+```html
+
+
+
+
+
+ Apple Terminal Red Sands
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+## Features
+
+- Faithful recreation of macOS Terminal.app Red Sands profile — #7B140E red background with #FFE1B9 sandy text
+- macOS window chrome with traffic light buttons and centered title bar
+- Per-character GSAP typing animation — command types out character by character
+- Output lines reveal sequentially after command executes
+- Cursor blinks three times at the end then holds steady
+- Self-contained HTML — no external assets, only GSAP CDN
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/code-snippet-apple-terminal-silver-aerogel.mdx b/docs/catalog/blocks/code-snippet-apple-terminal-silver-aerogel.mdx
index 06ce2faaf9..032e3a9ca0 100644
--- a/docs/catalog/blocks/code-snippet-apple-terminal-silver-aerogel.mdx
+++ b/docs/catalog/blocks/code-snippet-apple-terminal-silver-aerogel.mdx
@@ -3,21 +3,280 @@ title: "Code Snippet - Apple Terminal Silver Aerogel"
description: "Apple Terminal Silver Aerogel profile: dark grey background with white text, per-character typing animation of a shell session."
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add code-snippet-apple-terminal-silver-aerogel
-```
+
That writes one file: `compositions/code-snippet-apple-terminal-silver-aerogel.html`.
-## Add it to your video
+## Source
+
+
+
+```html
+
+
+
+
+
+ Apple Terminal Silver Aerogel
+
+
+
+
+
+
+
+
+
+
+
+ bash — 80×24
+
+
+
+ Last login: Mon Jun 2 09:14:22 on ttys010
+ Checking system resources...
+ Filesystem Size Used Avail Use%
+ /dev/disk3s1s1 460G 142G 302G 32%
+ /dev/disk3s6 460G 5.0G 302G 2%
+ /dev/disk3s2 460G 11G 302G 4%
+ Memory: 14.2 GB / 16.0 GB used (89%)
+ CPU: 8-core, 12% load average
+
+
+ user@Mac ~ %
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+## Features
+
+- Faithful recreation of macOS Terminal.app Silver Aerogel profile — #3D3D3D dark grey background with white text
+- macOS window chrome with traffic light buttons and centered title bar
+- Per-character GSAP typing animation — command types out character by character
+- Output lines reveal sequentially after command executes
+- Cursor blinks three times at the end then holds steady
+- Self-contained HTML — no external assets, only GSAP CDN
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/code-snippet-apple-terminal-solid-colors.mdx b/docs/catalog/blocks/code-snippet-apple-terminal-solid-colors.mdx
index 29f801e4a3..8c6ee5883e 100644
--- a/docs/catalog/blocks/code-snippet-apple-terminal-solid-colors.mdx
+++ b/docs/catalog/blocks/code-snippet-apple-terminal-solid-colors.mdx
@@ -3,21 +3,277 @@ title: "Code Snippet - Apple Terminal Solid Colors"
description: "Apple Terminal Solid Colors profile: deep purple background with white text, per-character typing animation of a shell session."
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add code-snippet-apple-terminal-solid-colors
-```
+
That writes one file: `compositions/code-snippet-apple-terminal-solid-colors.html`.
-## Add it to your video
+## Source
+
+
+
+```html
+
+
+
+
+
+ Apple Terminal Solid Colors
+
+
+
+
+
+
+
+
+
+
+
+ bash — 80×24
+
+
+
+ Last login: Mon Jun 2 09:14:22 on ttys011
+ Initializing HyperFrames project...
+ Creating project structure
+ Copying template files
+ Installing dependencies
+ added 142 packages in 3.4s
+ ✓ Project ready at ./my-video
+ Run: cd my-video && npx hyperframes preview
+
+
+ user@Mac ~ %
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+## Features
+
+- Faithful recreation of macOS Terminal.app Solid Colors profile — #4C0099 deep purple background with white text
+- macOS window chrome with traffic light buttons and centered title bar
+- Per-character GSAP typing animation — command types out character by character
+- Output lines reveal sequentially after command executes
+- Cursor blinks three times at the end then holds steady
+- Self-contained HTML — no external assets, only GSAP CDN
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/code-snippet-dark-2026.mdx b/docs/catalog/blocks/code-snippet-dark-2026.mdx
index 6b569a5000..23f59a6bd7 100644
--- a/docs/catalog/blocks/code-snippet-dark-2026.mdx
+++ b/docs/catalog/blocks/code-snippet-dark-2026.mdx
@@ -3,21 +3,1120 @@ title: "Code Snippet - Dark 2026"
description: "VS Code workbench with per-character typing animation in the Dark 2026 theme. Full editor chrome with activity bar, sidebar, tabs, terminal, and status bar."
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add code-snippet-dark-2026
-```
+
That writes `compositions/code-snippet-dark-2026.html`, plus 1 supporting file under `assets/`.
-## Add it to your video
+## Source
+
+
+
+```html
+
+
+
+
+
+ Dark 2026 VS Code Theme Composition
+
+
+
+
+
+
+
+
Official VS Code built-in theme
+
Dark 2026
+
+
+ Typing `functional_toolkit.py` with workbench colors from
+ 2026-dark.json.
+
+
+
+
+
+
+
functional-toolkit - Visual Studio Code
+
Search
+
+
+
+
+
+
+
+
+
◇ functional_toolkit.py
+
README.md
+
+
functional-toolkit › src › functional_toolkit.py
+
+
+
+
+
+
+ TerminalProblemsOutput
+
+
+
functional-toolkit % python -m pytest
+
collected 3 items
+
tests/test_toolkit.py ... passed
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+## Features
+
+- Full VS Code workbench recreation — activity bar, sidebar, explorer tree, editor tabs, breadcrumbs, terminal panel, status bar
+- Per-character typing animation with cursor tracking and active line highlight
+- Colors sourced from official `microsoft/vscode` built-in theme JSON
+- 3D perspective tilt at the end of the typing sequence
+- Terminal panel with mock test output
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/code-snippet-dark-modern.mdx b/docs/catalog/blocks/code-snippet-dark-modern.mdx
index 4873bc35d7..ddf5be5db0 100644
--- a/docs/catalog/blocks/code-snippet-dark-modern.mdx
+++ b/docs/catalog/blocks/code-snippet-dark-modern.mdx
@@ -3,21 +3,1116 @@ title: "Code Snippet - Dark Modern"
description: "VS Code workbench with per-character typing animation in the Dark Modern theme. Full editor chrome with activity bar, sidebar, tabs, terminal, and status bar."
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add code-snippet-dark-modern
-```
+
That writes `compositions/code-snippet-dark-modern.html`, plus 1 supporting file under `assets/`.
-## Add it to your video
+## Source
+
+
+
+```html
+
+
+
+
+
+ Dark Modern VS Code Theme Composition
+
+
+
+
+
+
+
+
Official VS Code built-in theme
+
Dark Modern
+
+
+ Typing `functional_toolkit.py` with workbench colors from
+ dark_modern.json.
+
+
+
+
+
+
+
functional-toolkit - Visual Studio Code
+
Search
+
+
+
+
+
+
+
+
+
◇ functional_toolkit.py
+
README.md
+
+
functional-toolkit › src › functional_toolkit.py
+
+
+
+
+
+
+ TerminalProblemsOutput
+
+
+
functional-toolkit % python -m pytest
+
collected 3 items
+
tests/test_toolkit.py ... passed
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+## Features
+
+- Full VS Code workbench recreation — activity bar, sidebar, explorer tree, editor tabs, breadcrumbs, terminal panel, status bar
+- Per-character typing animation with cursor tracking and active line highlight
+- Colors sourced from official `microsoft/vscode` built-in theme JSON
+- 3D perspective tilt at the end of the typing sequence
+- Terminal panel with mock test output
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/code-snippet-dark-plus.mdx b/docs/catalog/blocks/code-snippet-dark-plus.mdx
index 96430e1cb6..47ae899f27 100644
--- a/docs/catalog/blocks/code-snippet-dark-plus.mdx
+++ b/docs/catalog/blocks/code-snippet-dark-plus.mdx
@@ -3,21 +3,1085 @@ title: "Code Snippet - Dark+"
description: "VS Code workbench with per-character typing animation in the Dark+ theme. Full editor chrome with activity bar, sidebar, tabs, terminal, and status bar."
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add code-snippet-dark-plus
-```
+
That writes `compositions/code-snippet-dark-plus.html`, plus 1 supporting file under `assets/`.
-## Add it to your video
+## Source
+
+
+
+```html
+
+
+
+
+
+ Dark+ VS Code Theme Composition
+
+
+
+
+
+
+
+
Official VS Code built-in theme
+
Dark+
+
+
+ Typing `functional_toolkit.py` with workbench colors from
+ dark_plus.json.
+
+
+
+
+
+
+
functional-toolkit - Visual Studio Code
+
Search
+
+
+
+
+
+
+
+
+
◇ functional_toolkit.py
+
README.md
+
+
functional-toolkit › src › functional_toolkit.py
+
+
+
+
+
+
+ TerminalProblemsOutput
+
+
+
functional-toolkit % python -m pytest
+
collected 3 items
+
tests/test_toolkit.py ... passed
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+## Features
+
+- Full VS Code workbench recreation — activity bar, sidebar, explorer tree, editor tabs, breadcrumbs, terminal panel, status bar
+- Per-character typing animation with cursor tracking and active line highlight
+- Colors sourced from official `microsoft/vscode` built-in theme JSON
+- 3D perspective tilt at the end of the typing sequence
+- Terminal panel with mock test output
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/code-snippet-flight.mdx b/docs/catalog/blocks/code-snippet-flight.mdx
index d81f7f674d..f6de5b709c 100644
--- a/docs/catalog/blocks/code-snippet-flight.mdx
+++ b/docs/catalog/blocks/code-snippet-flight.mdx
@@ -3,34 +3,697 @@ title: "Code Snippet Flight"
description: "Discrete code snippets fly in from the side and assemble into a stacked program, staggered. Block-level FLIP."
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add code-snippet-flight
-```
+
That writes one file: `compositions/code-snippet-flight.html`.
-## Add it to your video
+## Source
+
+
+
+```html
+
+
+
+
+
+ Code Snippet Flight
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ pipeline.js — Code Snippet Flight
+
+
+
+
+
+
+
+
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
+
+```
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/code-snippet-high-contrast-light.mdx b/docs/catalog/blocks/code-snippet-high-contrast-light.mdx
index abdc6ab640..c6dece6888 100644
--- a/docs/catalog/blocks/code-snippet-high-contrast-light.mdx
+++ b/docs/catalog/blocks/code-snippet-high-contrast-light.mdx
@@ -3,21 +3,1080 @@ title: "Code Snippet - High Contrast Light"
description: "VS Code workbench with per-character typing animation in the High Contrast Light theme. Full editor chrome with activity bar, sidebar, tabs, terminal, and status bar."
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add code-snippet-high-contrast-light
-```
+
That writes `compositions/code-snippet-high-contrast-light.html`, plus 1 supporting file under `assets/`.
-## Add it to your video
+## Source
+
+
+
+```html
+
+
+
+
+
+ Default High Contrast Light VS Code Theme Composition
+
+
+
+
+
+
+
+
Official VS Code built-in theme
+
Default High Contrast Light
+
+
+ Typing `functional_toolkit.py` with workbench colors from
+ hc_light.json.
+
+
+
+
+
+
+
functional-toolkit - Visual Studio Code
+
Search
+
+
+
+
+
+
+
+
+
◇ functional_toolkit.py
+
README.md
+
+
functional-toolkit › src › functional_toolkit.py
+
+
+
+
+
+
+ TerminalProblemsOutput
+
+
+
functional-toolkit % python -m pytest
+
collected 3 items
+
tests/test_toolkit.py ... passed
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+## Features
+
+- Full VS Code workbench recreation — activity bar, sidebar, explorer tree, editor tabs, breadcrumbs, terminal panel, status bar
+- Per-character typing animation with cursor tracking and active line highlight
+- Colors sourced from official `microsoft/vscode` built-in theme JSON
+- 3D perspective tilt at the end of the typing sequence
+- Terminal panel with mock test output
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/code-snippet-high-contrast.mdx b/docs/catalog/blocks/code-snippet-high-contrast.mdx
index 12fe78ba84..5feced5a83 100644
--- a/docs/catalog/blocks/code-snippet-high-contrast.mdx
+++ b/docs/catalog/blocks/code-snippet-high-contrast.mdx
@@ -3,21 +3,1083 @@ title: "Code Snippet - High Contrast"
description: "VS Code workbench with per-character typing animation in the High Contrast theme. Full editor chrome with activity bar, sidebar, tabs, terminal, and status bar."
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add code-snippet-high-contrast
-```
+
That writes `compositions/code-snippet-high-contrast.html`, plus 1 supporting file under `assets/`.
-## Add it to your video
+## Source
+
+
+
+```html
+
+
+
+
+
+ Default High Contrast VS Code Theme Composition
+
+
+
+
+
+
+
+
Official VS Code built-in theme
+
Default High Contrast
+
+
+ Typing `functional_toolkit.py` with workbench colors from
+ hc_black.json.
+
+
+
+
+
+
+
functional-toolkit - Visual Studio Code
+
Search
+
+
+
+
+
+
+
+
+
◇ functional_toolkit.py
+
README.md
+
+
functional-toolkit › src › functional_toolkit.py
+
+
+
+
+
+
+ TerminalProblemsOutput
+
+
+
functional-toolkit % python -m pytest
+
collected 3 items
+
tests/test_toolkit.py ... passed
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+## Features
+
+- Full VS Code workbench recreation — activity bar, sidebar, explorer tree, editor tabs, breadcrumbs, terminal panel, status bar
+- Per-character typing animation with cursor tracking and active line highlight
+- Colors sourced from official `microsoft/vscode` built-in theme JSON
+- 3D perspective tilt at the end of the typing sequence
+- Terminal panel with mock test output
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/code-snippet-light-2026.mdx b/docs/catalog/blocks/code-snippet-light-2026.mdx
index c294f8c434..dcfe00fe88 100644
--- a/docs/catalog/blocks/code-snippet-light-2026.mdx
+++ b/docs/catalog/blocks/code-snippet-light-2026.mdx
@@ -3,21 +3,1119 @@ title: "Code Snippet - Light 2026"
description: "VS Code workbench with per-character typing animation in the Light 2026 theme. Full editor chrome with activity bar, sidebar, tabs, terminal, and status bar."
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add code-snippet-light-2026
-```
+
That writes `compositions/code-snippet-light-2026.html`, plus 1 supporting file under `assets/`.
-## Add it to your video
+## Source
+
+
+
+```html
+
+
+
+
+
+ Light 2026 VS Code Theme Composition
+
+
+
+
+
+
+
+
Official VS Code built-in theme
+
Light 2026
+
+
+ Typing `functional_toolkit.py` with workbench colors from
+ 2026-light.json.
+
+
+
+
+
+
+
functional-toolkit - Visual Studio Code
+
Search
+
+
+
+
+
+
+
+
+
◇ functional_toolkit.py
+
README.md
+
+
functional-toolkit › src › functional_toolkit.py
+
+
+
+
+
+
+ TerminalProblemsOutput
+
+
+
functional-toolkit % python -m pytest
+
collected 3 items
+
tests/test_toolkit.py ... passed
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+## Features
+
+- Full VS Code workbench recreation — activity bar, sidebar, explorer tree, editor tabs, breadcrumbs, terminal panel, status bar
+- Per-character typing animation with cursor tracking and active line highlight
+- Colors sourced from official `microsoft/vscode` built-in theme JSON
+- 3D perspective tilt at the end of the typing sequence
+- Terminal panel with mock test output
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/code-snippet-light-modern.mdx b/docs/catalog/blocks/code-snippet-light-modern.mdx
index d3900ad99b..ffd2f5db88 100644
--- a/docs/catalog/blocks/code-snippet-light-modern.mdx
+++ b/docs/catalog/blocks/code-snippet-light-modern.mdx
@@ -3,21 +3,1117 @@ title: "Code Snippet - Light Modern"
description: "VS Code workbench with per-character typing animation in the Light Modern theme. Full editor chrome with activity bar, sidebar, tabs, terminal, and status bar."
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add code-snippet-light-modern
-```
+
That writes `compositions/code-snippet-light-modern.html`, plus 1 supporting file under `assets/`.
-## Add it to your video
+## Source
+
+
+
+```html
+
+
+
+
+
+ Light Modern VS Code Theme Composition
+
+
+
+
+
+
+
+
Official VS Code built-in theme
+
Light Modern
+
+
+ Typing `functional_toolkit.py` with workbench colors from
+ light_modern.json.
+
+
+
+
+
+
+
functional-toolkit - Visual Studio Code
+
Search
+
+
+
+
+
+
+
+
+
◇ functional_toolkit.py
+
README.md
+
+
functional-toolkit › src › functional_toolkit.py
+
+
+
+
+
+
+ TerminalProblemsOutput
+
+
+
functional-toolkit % python -m pytest
+
collected 3 items
+
tests/test_toolkit.py ... passed
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+## Features
+
+- Full VS Code workbench recreation — activity bar, sidebar, explorer tree, editor tabs, breadcrumbs, terminal panel, status bar
+- Per-character typing animation with cursor tracking and active line highlight
+- Colors sourced from official `microsoft/vscode` built-in theme JSON
+- 3D perspective tilt at the end of the typing sequence
+- Terminal panel with mock test output
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/code-snippet-light-plus.mdx b/docs/catalog/blocks/code-snippet-light-plus.mdx
index f041e2961b..325ced96ff 100644
--- a/docs/catalog/blocks/code-snippet-light-plus.mdx
+++ b/docs/catalog/blocks/code-snippet-light-plus.mdx
@@ -3,21 +3,1085 @@ title: "Code Snippet - Light+"
description: "VS Code workbench with per-character typing animation in the Light+ theme. Full editor chrome with activity bar, sidebar, tabs, terminal, and status bar."
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add code-snippet-light-plus
-```
+
That writes `compositions/code-snippet-light-plus.html`, plus 1 supporting file under `assets/`.
-## Add it to your video
+## Source
+
+
+
+```html
+
+
+
+
+
+ Light+ VS Code Theme Composition
+
+
+
+
+
+
+
+
Official VS Code built-in theme
+
Light+
+
+
+ Typing `functional_toolkit.py` with workbench colors from
+ light_plus.json.
+
+
+
+
+
+
+
functional-toolkit - Visual Studio Code
+
Search
+
+
+
+
+
+
+
+
+
◇ functional_toolkit.py
+
README.md
+
+
functional-toolkit › src › functional_toolkit.py
+
+
+
+
+
+
+ TerminalProblemsOutput
+
+
+
functional-toolkit % python -m pytest
+
collected 3 items
+
tests/test_toolkit.py ... passed
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+## Features
+
+- Full VS Code workbench recreation — activity bar, sidebar, explorer tree, editor tabs, breadcrumbs, terminal panel, status bar
+- Per-character typing animation with cursor tracking and active line highlight
+- Colors sourced from official `microsoft/vscode` built-in theme JSON
+- 3D perspective tilt at the end of the typing sequence
+- Terminal panel with mock test output
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/code-snippet-monokai.mdx b/docs/catalog/blocks/code-snippet-monokai.mdx
index c83dd588f0..e0fe03b255 100644
--- a/docs/catalog/blocks/code-snippet-monokai.mdx
+++ b/docs/catalog/blocks/code-snippet-monokai.mdx
@@ -3,21 +3,1097 @@ title: "Code Snippet - Monokai"
description: "VS Code workbench with per-character typing animation in the Monokai theme. Full editor chrome with activity bar, sidebar, tabs, terminal, and status bar."
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add code-snippet-monokai
-```
+
That writes `compositions/code-snippet-monokai.html`, plus 1 supporting file under `assets/`.
-## Add it to your video
+## Source
+
+
+
+```html
+
+
+
+
+
+ Monokai VS Code Theme Composition
+
+
+
+
+
+
+
+
Official VS Code built-in theme
+
Monokai
+
+
+ Typing `functional_toolkit.py` with workbench colors from
+ monokai-color-theme.json.
+
+
+
+
+
+
+
functional-toolkit - Visual Studio Code
+
Search
+
+
+
+
+
+
+
+
+
◇ functional_toolkit.py
+
README.md
+
+
functional-toolkit › src › functional_toolkit.py
+
+
+
+
+
+
+ TerminalProblemsOutput
+
+
+
functional-toolkit % python -m pytest
+
collected 3 items
+
tests/test_toolkit.py ... passed
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+## Features
+
+- Full VS Code workbench recreation — activity bar, sidebar, explorer tree, editor tabs, breadcrumbs, terminal panel, status bar
+- Per-character typing animation with cursor tracking and active line highlight
+- Colors sourced from official `microsoft/vscode` built-in theme JSON
+- 3D perspective tilt at the end of the typing sequence
+- Terminal panel with mock test output
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/code-snippet-solarized-light.mdx b/docs/catalog/blocks/code-snippet-solarized-light.mdx
index f6efad7ffd..6c92ef5d23 100644
--- a/docs/catalog/blocks/code-snippet-solarized-light.mdx
+++ b/docs/catalog/blocks/code-snippet-solarized-light.mdx
@@ -3,21 +3,1099 @@ title: "Code Snippet - Solarized Light"
description: "VS Code workbench with per-character typing animation in the Solarized Light theme. Full editor chrome with activity bar, sidebar, tabs, terminal, and status bar."
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add code-snippet-solarized-light
-```
+
That writes `compositions/code-snippet-solarized-light.html`, plus 1 supporting file under `assets/`.
-## Add it to your video
+## Source
+
+
+
+```html
+
+
+
+
+
+ Solarized Light VS Code Theme Composition
+
+
+
+
+
+
+
+
Official VS Code built-in theme
+
Solarized Light
+
+
+ Typing `functional_toolkit.py` with workbench colors from
+ solarized-light-color-theme.json.
+
+
+
+
+
+
+
functional-toolkit - Visual Studio Code
+
Search
+
+
+
+
+
+
+
+
+
◇ functional_toolkit.py
+
README.md
+
+
functional-toolkit › src › functional_toolkit.py
+
+
+
+
+
+
+ TerminalProblemsOutput
+
+
+
functional-toolkit % python -m pytest
+
collected 3 items
+
tests/test_toolkit.py ... passed
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+## Features
+
+- Full VS Code workbench recreation — activity bar, sidebar, explorer tree, editor tabs, breadcrumbs, terminal panel, status bar
+- Per-character typing animation with cursor tracking and active line highlight
+- Colors sourced from official `microsoft/vscode` built-in theme JSON
+- 3D perspective tilt at the end of the typing sequence
+- Terminal panel with mock test output
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/code-snippet-visual-studio-dark.mdx b/docs/catalog/blocks/code-snippet-visual-studio-dark.mdx
index f8f46f6c72..9cbc91d104 100644
--- a/docs/catalog/blocks/code-snippet-visual-studio-dark.mdx
+++ b/docs/catalog/blocks/code-snippet-visual-studio-dark.mdx
@@ -3,21 +3,1085 @@ title: "Code Snippet - Visual Studio Dark"
description: "VS Code workbench with per-character typing animation in the Visual Studio Dark theme. Full editor chrome with activity bar, sidebar, tabs, terminal, and status bar."
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add code-snippet-visual-studio-dark
-```
+
That writes `compositions/code-snippet-visual-studio-dark.html`, plus 1 supporting file under `assets/`.
-## Add it to your video
+## Source
+
+
+
+```html
+
+
+
+
+
+ Visual Studio Dark VS Code Theme Composition
+
+
+
+
+
+
+
+
Official VS Code built-in theme
+
Visual Studio Dark
+
+
+ Typing `functional_toolkit.py` with workbench colors from
+ dark_vs.json.
+
+
+
+
+
+
+
functional-toolkit - Visual Studio Code
+
Search
+
+
+
+
+
+
+
+
+
◇ functional_toolkit.py
+
README.md
+
+
functional-toolkit › src › functional_toolkit.py
+
+
+
+
+
+
+ TerminalProblemsOutput
+
+
+
functional-toolkit % python -m pytest
+
collected 3 items
+
tests/test_toolkit.py ... passed
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+## Features
+
+- Full VS Code workbench recreation — activity bar, sidebar, explorer tree, editor tabs, breadcrumbs, terminal panel, status bar
+- Per-character typing animation with cursor tracking and active line highlight
+- Colors sourced from official `microsoft/vscode` built-in theme JSON
+- 3D perspective tilt at the end of the typing sequence
+- Terminal panel with mock test output
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/code-snippet-visual-studio-light.mdx b/docs/catalog/blocks/code-snippet-visual-studio-light.mdx
index efdd243db0..631375ccae 100644
--- a/docs/catalog/blocks/code-snippet-visual-studio-light.mdx
+++ b/docs/catalog/blocks/code-snippet-visual-studio-light.mdx
@@ -3,21 +3,1085 @@ title: "Code Snippet - Visual Studio Light"
description: "VS Code workbench with per-character typing animation in the Visual Studio Light theme. Full editor chrome with activity bar, sidebar, tabs, terminal, and status bar."
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add code-snippet-visual-studio-light
-```
+
That writes `compositions/code-snippet-visual-studio-light.html`, plus 1 supporting file under `assets/`.
-## Add it to your video
+## Source
+
+
+
+```html
+
+
+
+
+
+ Visual Studio Light VS Code Theme Composition
+
+
+
+
+
+
+
+
Official VS Code built-in theme
+
Visual Studio Light
+
+
+ Typing `functional_toolkit.py` with workbench colors from
+ light_vs.json.
+
+
+
+
+
+
+
functional-toolkit - Visual Studio Code
+
Search
+
+
+
+
+
+
+
+
+
◇ functional_toolkit.py
+
README.md
+
+
functional-toolkit › src › functional_toolkit.py
+
+
+
+
+
+
+ TerminalProblemsOutput
+
+
+
functional-toolkit % python -m pytest
+
collected 3 items
+
tests/test_toolkit.py ... passed
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+## Features
+
+- Full VS Code workbench recreation — activity bar, sidebar, explorer tree, editor tabs, breadcrumbs, terminal panel, status bar
+- Per-character typing animation with cursor tracking and active line highlight
+- Colors sourced from official `microsoft/vscode` built-in theme JSON
+- 3D perspective tilt at the end of the typing sequence
+- Terminal panel with mock test output
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/code-typing.mdx b/docs/catalog/blocks/code-typing.mdx
index 726ea5c6c6..3f3e51217d 100644
--- a/docs/catalog/blocks/code-typing.mdx
+++ b/docs/catalog/blocks/code-typing.mdx
@@ -3,34 +3,795 @@ title: "Code Typing"
description: "Token-streamed typing reveal with a caret that tracks the frontier — deterministic, no CSS animation."
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add code-typing
-```
+
That writes one file: `compositions/code-typing.html`.
-## Add it to your video
+## Source
+
+
+
+```html
+
+
+
+
+
+ Code Typing
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ loadConfig.js — Code Typing
+
+
+
+
+
+
+
+
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
+
+```
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/cosmic-orb.mdx b/docs/catalog/blocks/cosmic-orb.mdx
new file mode 100644
index 0000000000..31a0653ccb
--- /dev/null
+++ b/docs/catalog/blocks/cosmic-orb.mdx
@@ -0,0 +1,499 @@
+---
+title: "Cosmic Orb"
+description: "An iridescent soap-bubble planet: a slowly spinning sphere of nebula bands, dust lanes and twinkling stars wrapped in a refracting glass limb with chromatic aberration at the edge."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html cosmic-orb.html
+
+
+
+
+
+ Cosmic Orb
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/cosmic-orb.html`.
+
+## Add it to your video
+
+It runs for 10 seconds at 1920×1080. Paste this into your composition:
+
+```html index.html
+
+```
+
+Move it in time with `data-start`. Put it on a different timeline row with
+`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+
+## Change how it looks
+
+Set these CSS variables on the block:
+
+- `--hue` — Nebula hue. Defaults to `268`.
+- `--accent` — Accent hue. Defaults to `196`.
+- `--spin` — Spin rate (turns per second). Defaults to `0.035`.
+- `--stars` — Star density. Defaults to `1`.
+- `--glow` — Glow intensity. Defaults to `1`.
+- `--size` — Orb size (fraction of frame height). Defaults to `0.86`.
+- `--pulse` — Beat pulse (0-1, flat value when no envelope is set). Defaults to `0`.
+- `--pulseenvelope` — Beat pulse envelope: comma-separated 0-1 samples spread evenly across the clip. Defaults to ``.
+- `--backdrop` — Backdrop. Defaults to `#04040a`.
+
+{/* hf:generated-footer */}
+
+Tagged `webgl` `shader` `background` `showcase` `3d`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/blocks/cross-warp-morph.mdx b/docs/catalog/blocks/cross-warp-morph.mdx
index 8b3c32efb3..dbd2ee4b69 100644
--- a/docs/catalog/blocks/cross-warp-morph.mdx
+++ b/docs/catalog/blocks/cross-warp-morph.mdx
@@ -3,34 +3,409 @@ title: "Cross Warp Morph"
description: "Shader transition with cross-warped morphing"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add cross-warp-morph
-```
+
That writes one file: `compositions/cross-warp-morph.html`.
-## Add it to your video
+## Source
+
+
+
+```html
+
+
+
+
+
+
+
+
+
+
+
+
+
+
13 / 14
+
+
+
+
SCENE A
+
+
+
SCENE B
+
+
+
+
+
+
+
+
Cross-Warp Morph
+
Prompt
+
"use cross-warp morph shader transition"
+
+ Both scenes displace along a shared FBM noise field in opposite directions. Noise-driven
+ blend boundary.
+
+
+
+
+
-It runs for 4 seconds at 1920×1080. Paste this into your composition:
+
+
+
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
+
+```
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/data-chart.mdx b/docs/catalog/blocks/data-chart.mdx
index 279fa08723..c6288c6482 100644
--- a/docs/catalog/blocks/data-chart.mdx
+++ b/docs/catalog/blocks/data-chart.mdx
@@ -3,41 +3,496 @@ title: "Data Chart"
description: "Animated bar + line chart with staggered reveal, NYT-style typography, and value labels"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add data-chart
-```
+
That writes one file: `compositions/data-chart.html`.
-## Add it to your video
+## Change the colors
+
+Set these CSS variables on the block:
+
+- `--bg-color` — Background. Defaults to `#faf9f6`.
+- `--text-color` — Text color. Defaults to `#333333`.
+
+## Source
+
+
+
+```html
+
+
+
+
+
+ Data Chart
+
+
+
+
+
+
+
+
+
+
+
+
Monthly Revenue vs. Conversion Rate
+
Jan–Jun 2024, in thousands
+
+
+
+ Revenue
+
+
+
+ Conversion Rate
+
+
+
+
+
+
+
+
+
Source: Internal analytics
+
+
+
-It runs for 15 seconds at 1920×1080. Paste this into your composition:
+
+
+
+
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+
-## Change the colors
+## Usage
-Set these CSS variables on the block:
+After installing, add the block to your host composition:
-- `--bg-color` — Background. Defaults to `#faf9f6`.
-- `--text-color` — Text color. Defaults to `#333333`.
+```html
+
+```
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/domain-warp-dissolve.mdx b/docs/catalog/blocks/domain-warp-dissolve.mdx
index ed9e581995..0df99acffb 100644
--- a/docs/catalog/blocks/domain-warp-dissolve.mdx
+++ b/docs/catalog/blocks/domain-warp-dissolve.mdx
@@ -3,34 +3,412 @@ title: "Domain Warp Dissolve"
description: "Shader transition with fractal noise domain warping"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add domain-warp-dissolve
-```
+
That writes one file: `compositions/domain-warp-dissolve.html`.
-## Add it to your video
+## Source
+
+
+
+```html
+
+
+
+
+
+
+
+
+
+
+
+
+
+
01 / 14
+
+
+
+
SCENE A
+
+
+
SCENE B
+
+
+
+
+
+
+
+
Domain Warp Dissolve
+
Prompt
+
"use domain warp dissolve shader transition"
+
+ Cascaded fbm(p + fbm(p)) displaces both scenes along a warp field. Iridescent
+ cosine-palette edge glow.
+
+
+
+
+
-It runs for 4 seconds at 1920×1080. Paste this into your composition:
+
+
+
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
+
+```
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/editorial-flash-overlay.mdx b/docs/catalog/blocks/editorial-flash-overlay.mdx
index d816ccc781..b8dd7ce02a 100644
--- a/docs/catalog/blocks/editorial-flash-overlay.mdx
+++ b/docs/catalog/blocks/editorial-flash-overlay.mdx
@@ -3,13 +3,13 @@ title: "Editorial Flash Overlay"
description: "Finite neutral-warm light layers for a seek-safe camera-flash cut or social reveal"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add editorial-flash-overlay
-```
+
That writes one file: `compositions/editorial-flash-overlay.html`.
@@ -32,6 +32,144 @@ It runs for 4 seconds at 1920×1080. Paste this into your composition:
Move it in time with `data-start`. Put it on a different timeline row with
`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+## Source
+
+
+
+```html
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
{/* hf:generated-footer */}
Tagged `flash` `editorial` `social` `light` `transition` `overlay` `media-treatment-overlay`.
diff --git a/docs/catalog/blocks/flash-through-white.mdx b/docs/catalog/blocks/flash-through-white.mdx
index c10d69424f..8d05af0c10 100644
--- a/docs/catalog/blocks/flash-through-white.mdx
+++ b/docs/catalog/blocks/flash-through-white.mdx
@@ -3,34 +3,398 @@ title: "Flash Through White"
description: "Shader transition with white flash crossfade"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add flash-through-white
-```
+
That writes one file: `compositions/flash-through-white.html`.
-## Add it to your video
+## Source
+
+
+
+```html
+
+
+
+
+
+
+
+
+
+
+
+
+
+
12 / 14
+
+
+
+
SCENE A
+
+
+
SCENE B
+
+
+
+
+
+
+
+
Flash Through White
+
Prompt
+
"use flash through white shader transition"
+
+ Both scenes brighten to a white midpoint. Works on dark backgrounds where
+ color-dip-to-black is invisible.
+
+
-It runs for 4 seconds at 1920×1080. Paste this into your composition:
+
+
-```html index.html
-
+
+
+
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
+
+```
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/flowchart-vertical.mdx b/docs/catalog/blocks/flowchart-vertical.mdx
index 150d75536f..4bd40cc978 100644
--- a/docs/catalog/blocks/flowchart-vertical.mdx
+++ b/docs/catalog/blocks/flowchart-vertical.mdx
@@ -3,34 +3,499 @@ title: "Flowchart Vertical"
description: "Portrait animated decision tree with SVG connectors, sticky-note nodes, cursor interaction, and typing correction"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add flowchart-vertical
-```
+
That writes one file: `compositions/flowchart-vertical.html`.
-## Add it to your video
+## Source
+
+
+
+```html
+
+
+
+
+
+ Flowchart Vertical
+
+
+
+
+
+
+
+
+
+
+
+
Yes
+
Not sure
+
+
+
+ Should I learn to code?
+
+
+
+
Yes
+
Not sure
+
+
+
+
+ Start with Pythom
+
+
+
+
+ Try no-code first
+
+
+ Build a personal website
+
+
+ Take a free intro course
+
+
+
+
+
+
You
+
+
+
+
👍
+
+
+
+
+
+
-It runs for 12 seconds at 1440×2560. Paste this into your composition:
+
+
+
+
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
+
+```
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/flowchart.mdx b/docs/catalog/blocks/flowchart.mdx
index 8e45923c5f..9f6c24c881 100644
--- a/docs/catalog/blocks/flowchart.mdx
+++ b/docs/catalog/blocks/flowchart.mdx
@@ -3,34 +3,499 @@ title: "Flowchart"
description: "Animated decision tree with SVG connectors, sticky-note nodes, cursor interaction, and typing correction"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add flowchart
-```
+
That writes one file: `compositions/flowchart.html`.
-## Add it to your video
+## Source
+
+
+
+```html
+
+
+
+
+
+ Flowchart
+
+
+
+
+
+
+
+
+
+
+
+
Yes
+
Not sure
+
+
+
+ Should I learn to code?
+
+
+
+
Yes
+
Not sure
+
+
+
+
+ Start with Pythom
+
+
+
+
+ Try no-code first
+
+
+ Build a personal website
+
+
+ Take a free intro course
+
+
+
+
+
+
You
+
+
+
+
👍
+
+
+
+
+
+
-It runs for 12 seconds at 1920×1080. Paste this into your composition:
+
+
+
+
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
+
+```
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/freeze-frame-dressing.mdx b/docs/catalog/blocks/freeze-frame-dressing.mdx
index e8a0e0d943..92c4af19f8 100644
--- a/docs/catalog/blocks/freeze-frame-dressing.mdx
+++ b/docs/catalog/blocks/freeze-frame-dressing.mdx
@@ -3,13 +3,13 @@ title: "Freeze-Frame Dressing"
description: "Timeline-driven paper, tape, and flash dressing for a freeze-frame or background-removed subject"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add freeze-frame-dressing
-```
+
That writes one file: `compositions/freeze-frame-dressing.html`.
@@ -32,6 +32,135 @@ It runs for 4 seconds at 1920×1080. Paste this into your composition:
Move it in time with `data-start`. Put it on a different timeline row with
`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+## Source
+
+
+
+```html
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
{/* hf:generated-footer */}
Tagged `freeze-frame` `cutout` `scrapbook` `paper` `social` `overlay` `media-treatment-overlay`.
diff --git a/docs/catalog/blocks/gallery-tunnel.mdx b/docs/catalog/blocks/gallery-tunnel.mdx
new file mode 100644
index 0000000000..2d367c59e4
--- /dev/null
+++ b/docs/catalog/blocks/gallery-tunnel.mdx
@@ -0,0 +1,523 @@
+---
+title: "Gallery Tunnel"
+description: "An infinite corridor of panels: a square tunnel receding to a vanishing point, its floor, ceiling and walls tiled with saturated colour slabs and caller-supplied images that swell toward camera and exit past you, the far end dissolving into fog."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html gallery-tunnel.html
+
+
+
+
+
+ Gallery Tunnel
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/gallery-tunnel.html`.
+
+## Add it to your video
+
+It runs for 12 seconds at 1920×1080. Paste this into your composition:
+
+```html index.html
+
+```
+
+Move it in time with `data-start`. Put it on a different timeline row with
+`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+
+## Change how it looks
+
+Set these CSS variables on the block:
+
+- `--images` — Image slots: comma-separated paths, tiled into the panels (e.g. assets/shot-1.png,assets/shot-2.png). Defaults to ``.
+- `--imagemix` — Image share of filled slots (0 = all colour, 1 = all images). Defaults to `0.5`.
+- `--speed` — Flight speed (segments per second). Defaults to `3`.
+- `--palette` — Slab palette: comma-separated hex colours. Defaults to `#FF6A00,#AB54F7,#EA3737,#0072E3,#00AA3C,#FFB200`.
+- `--grid` — Grid density: slots per wall face per axis (2 = 4 per face, 16 per segment). Defaults to `2`.
+- `--fill` — Slot fill rate. Defaults to `0.5`.
+- `--fog` — Fog distance in segments: depth at which the corridor reaches pure backdrop. Defaults to `14.25`.
+- `--edgecolor` — Edge line colour. Defaults to `#B0B0B0`.
+- `--edgeopacity` — Edge line opacity. Defaults to `0.5`.
+- `--backdrop` — Backdrop and fog colour. Defaults to `#000000`.
+
+{/* hf:generated-footer */}
+
+Tagged `webgl` `3d` `background` `showcase` `depth` `loop`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/blocks/glitch.mdx b/docs/catalog/blocks/glitch.mdx
index 2df95eb7fd..3360e1131d 100644
--- a/docs/catalog/blocks/glitch.mdx
+++ b/docs/catalog/blocks/glitch.mdx
@@ -3,34 +3,398 @@ title: "Glitch"
description: "Shader transition with digital glitch artifacts"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add glitch
-```
+
That writes one file: `compositions/glitch.html`.
-## Add it to your video
+## Source
+
+
+
+```html
+
+
+
+
+
+
+
+
+
+
+
+
+
+
09 / 14
+
+
+
+
SCENE A
+
+
+
SCENE B
+
+
+
+
+
+
+
+
Glitch
+
Prompt
+
"use glitch shader transition"
+
+ Scan lines, block scramble, chromatic aberration, brightness flicker, and color
+ posterization.
+
+
-It runs for 4 seconds at 1920×1080. Paste this into your composition:
+
+
-```html index.html
-
+
+
+
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
+
+```
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/gravitational-lens.mdx b/docs/catalog/blocks/gravitational-lens.mdx
index 01f12ebfd8..c808dd4bdc 100644
--- a/docs/catalog/blocks/gravitational-lens.mdx
+++ b/docs/catalog/blocks/gravitational-lens.mdx
@@ -3,34 +3,397 @@ title: "Gravitational Lens"
description: "Shader transition with gravitational lensing distortion"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add gravitational-lens
-```
+
That writes one file: `compositions/gravitational-lens.html`.
-## Add it to your video
+## Source
+
+
+
+```html
+
+
+
+
+
+
+
+
+
+
+
+
+
+
06 / 14
+
+
+
+
SCENE A
+
+
+
SCENE B
+
+
+
+
+
+
+
+
Gravitational Lens
+
Prompt
+
"use gravitational lens shader transition"
+
+ Content warps toward a gravity well with chromatic aberration and event horizon darkening.
+
+
-It runs for 4 seconds at 1920×1080. Paste this into your composition:
+
+
-```html index.html
-
+
+
+
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
+
+```
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/halftone-field.mdx b/docs/catalog/blocks/halftone-field.mdx
new file mode 100644
index 0000000000..5a6c6d7fdd
--- /dev/null
+++ b/docs/catalog/blocks/halftone-field.mdx
@@ -0,0 +1,448 @@
+---
+title: "Halftone Field"
+description: "A full-bleed halftone light field: a grid of dots whose size and colour track a slow flowing simplex-noise field, so broad bands of light sweep across a mostly-black frame like a giant LED wall showing a plasma. Built to run under type."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html halftone-field.html
+
+
+
+
+
+ Halftone Field
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/halftone-field.html`.
+
+## Add it to your video
+
+It runs for 10 seconds at 1920×1080. Paste this into your composition:
+
+```html index.html
+
+```
+
+Move it in time with `data-start`. Put it on a different timeline row with
+`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+
+## Change how it looks
+
+Set these CSS variables on the block:
+
+- `--frequency` — Field frequency (1 = broad swells, 10 = fine mottle). Defaults to `2`.
+- `--speed` — Flow speed (0 freezes the field). Defaults to `5`.
+- `--cellsize` — Cell size (dot pitch, 1 = 6px, 100 = 60px). Defaults to `54`.
+- `--gamma` — Gamma: midtone crush, the whole look. Low values flatten it to an even grey dot field. Defaults to `12`.
+- `--palettebias` — Palette bias: floor under every dot's size and palette position. 0 lets the darks go fully black. Defaults to `2`.
+- `--palette1` — Palette stop 1 (lows). Defaults to `#00AAFF`.
+- `--palette2` — Palette stop 2. Defaults to `#C2FF67`.
+- `--palette3` — Palette stop 3. Defaults to `#6600FF`.
+- `--palette4` — Palette stop 4 (crests). Defaults to `#000000`.
+- `--background` — Background. Defaults to `#000000`.
+- `--quantize` — Quantise to 30fps for a stepped LED-wall look. Defaults to `false`. Options: `false`, `true`.
+
+{/* hf:generated-footer */}
+
+Tagged `webgl` `shader` `background` `texture` `halftone`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/blocks/hw-frame.mdx b/docs/catalog/blocks/hw-frame.mdx
index 7515993d85..e8db3656ba 100644
--- a/docs/catalog/blocks/hw-frame.mdx
+++ b/docs/catalog/blocks/hw-frame.mdx
@@ -3,13 +3,13 @@ title: "Sketched Frame"
description: "Media in a hand-drawn border with corner doodles and a handwritten caption; the unit tilts slightly and boils (images inside the block; keep live footage in the host)"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add hw-frame
-```
+
That writes `compositions/hw-frame.html`, plus 1 supporting file under `assets/fonts/`.
@@ -32,6 +32,317 @@ It runs for 8 seconds at 1920×1080. Paste this into your composition:
Move it in time with `data-start`. Put it on a different timeline row with
`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+## Source
+
+
+
+```html
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
{/* hf:generated-footer */}
Tagged `handwritten` `frame` `media`.
diff --git a/docs/catalog/blocks/hw-path-text.mdx b/docs/catalog/blocks/hw-path-text.mdx
index 74592ac67f..ae5e67eb4b 100644
--- a/docs/catalog/blocks/hw-path-text.mdx
+++ b/docs/catalog/blocks/hw-path-text.mdx
@@ -3,13 +3,13 @@ title: "Text Along a Path"
description: "Handwriting flowing along any SVG path with a per-character reveal; the path is the only geometry input"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add hw-path-text
-```
+
That writes `compositions/hw-path-text.html`, plus 1 supporting file under `assets/fonts/`.
@@ -32,6 +32,208 @@ It runs for 6 seconds at 1920×1080. Paste this into your composition:
Move it in time with `data-start`. Put it on a different timeline row with
`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+## Source
+
+
+
+```html
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
{/* hf:generated-footer */}
Tagged `handwritten` `typography` `path` `overlay`.
diff --git a/docs/catalog/blocks/hw-pipeline.mdx b/docs/catalog/blocks/hw-pipeline.mdx
index 969855905e..8375a875ab 100644
--- a/docs/catalog/blocks/hw-pipeline.mdx
+++ b/docs/catalog/blocks/hw-pipeline.mdx
@@ -3,13 +3,13 @@ title: "Hand-Drawn Flowchart"
description: "Wobbled boxes with handwritten labels joined by curved connectors, drawing on in sequence from a node list"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add hw-pipeline
-```
+
That writes `compositions/hw-pipeline.html`, plus 1 supporting file under `assets/fonts/`.
@@ -32,6 +32,332 @@ It runs for 7 seconds at 1920×1080. Paste this into your composition:
Move it in time with `data-start`. Put it on a different timeline row with
`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+## Source
+
+
+
+```html
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
{/* hf:generated-footer */}
Tagged `handwritten` `diagram` `data-viz` `overlay`.
diff --git a/docs/catalog/blocks/hw-scribble-transition.mdx b/docs/catalog/blocks/hw-scribble-transition.mdx
index 3c672f8775..c879312af0 100644
--- a/docs/catalog/blocks/hw-scribble-transition.mdx
+++ b/docs/catalog/blocks/hw-scribble-transition.mdx
@@ -3,13 +3,13 @@ title: "Scribble Transition"
description: "Overlay transition: scribble bands accumulate to cover the frame with a solid backstop, the host cuts beneath, and the scribble clears"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add hw-scribble-transition
-```
+
That writes one file: `compositions/hw-scribble-transition.html`.
@@ -32,6 +32,167 @@ It runs for 2.2 seconds at 1920×1080. Paste this into your composition:
Move it in time with `data-start`. Put it on a different timeline row with
`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+## Source
+
+
+
+```html
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
{/* hf:generated-footer */}
Tagged `handwritten` `transition` `wipe`.
diff --git a/docs/catalog/blocks/hw-text-cloud.mdx b/docs/catalog/blocks/hw-text-cloud.mdx
index 6cb7a489fa..509ae69741 100644
--- a/docs/catalog/blocks/hw-text-cloud.mdx
+++ b/docs/catalog/blocks/hw-text-cloud.mdx
@@ -3,13 +3,13 @@ title: "Speech Bubble"
description: "Hand-drawn speech bubble with a positionable tail: outline draws on, paper fill fades in, handwritten text types per character; boils"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add hw-text-cloud
-```
+
That writes `compositions/hw-text-cloud.html`, plus 1 supporting file under `assets/fonts/`.
@@ -32,6 +32,300 @@ It runs for 6 seconds at 1920×1080. Paste this into your composition:
Move it in time with `data-start`. Put it on a different timeline row with
`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+## Source
+
+
+
+```html
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
{/* hf:generated-footer */}
Tagged `handwritten` `speech-bubble` `overlay`.
diff --git a/docs/catalog/blocks/hw-title.mdx b/docs/catalog/blocks/hw-title.mdx
index d6c22ba167..7bf8def0fc 100644
--- a/docs/catalog/blocks/hw-title.mdx
+++ b/docs/catalog/blocks/hw-title.mdx
@@ -3,13 +3,13 @@ title: "Handwritten Title"
description: "Handwritten display text with a scalar-driven word-by-word highlight sweep and a seeded squiggle underline sized to the text; boils"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add hw-title
-```
+
That writes `compositions/hw-title.html`, plus 1 supporting file under `assets/fonts/`.
@@ -32,6 +32,272 @@ It runs for 6 seconds at 1920×1080. Paste this into your composition:
Move it in time with `data-start`. Put it on a different timeline row with
`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+## Source
+
+
+
+```html
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
{/* hf:generated-footer */}
Tagged `handwritten` `typography` `title-card` `overlay`.
diff --git a/docs/catalog/blocks/instagram-follow.mdx b/docs/catalog/blocks/instagram-follow.mdx
index 82dc2bb456..1d11f5dbf2 100644
--- a/docs/catalog/blocks/instagram-follow.mdx
+++ b/docs/catalog/blocks/instagram-follow.mdx
@@ -3,34 +3,320 @@ title: "Instagram Follow"
description: "Animated Instagram follow overlay with profile card and follow button"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add instagram-follow
-```
+
That writes `compositions/instagram-follow.html`, plus 1 supporting file under `assets/`.
-## Add it to your video
+## Source
+
+
+
+```html
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
HeyGen
+
+
+
@heygen_official
+
47.5K followers
+
+
+ Follow
+
+ Following
+
+
+
+
+
+
+
+
+
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
+
+```
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/ios26-liquid-glass.mdx b/docs/catalog/blocks/ios26-liquid-glass.mdx
index dd2176d725..b6572a2eb3 100644
--- a/docs/catalog/blocks/ios26-liquid-glass.mdx
+++ b/docs/catalog/blocks/ios26-liquid-glass.mdx
@@ -3,40 +3,1380 @@ title: "iOS 26 Liquid Glass Home Screen"
description: "3D iPhone with a normal iOS 26 home screen, liquid glass app icons, shader wallpaper, dock, and fluid glass notifications that drop from the status area onto a GLTF device model."
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add ios26-liquid-glass
-```
+
That writes `compositions/ios26-liquid-glass.html`, plus 28 supporting files under `models/`, `lib/`, and `assets/icons/`.
-
+
Live preview needs the `chrome://flags/#canvas-draw-element` flag switched on.
- Rendering from the CLI switches it on for you. [How it
- works](/guides/html-in-canvas)
-
-
-## Add it to your video
-
-It runs for 15 seconds at 1920×1080. Paste this into your composition:
-
-```html index.html
-
+ Without it this item's screen renders black. Rendering from the CLI switches
+ it on for you. [How it works](/guides/html-in-canvas)
+
+
+## Source
+
+
+
+```html
+
+
+
+
+
+ Devices Canvas — HTML-in-Canvas API Showcase
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
+
+```
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/light-leak.mdx b/docs/catalog/blocks/light-leak.mdx
index c5bd15150e..84776c66bd 100644
--- a/docs/catalog/blocks/light-leak.mdx
+++ b/docs/catalog/blocks/light-leak.mdx
@@ -3,34 +3,397 @@ title: "Light Leak"
description: "Shader transition with cinematic light leak overlay"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add light-leak
-```
+
That writes one file: `compositions/light-leak.html`.
-## Add it to your video
+## Source
+
+
+
+```html
+
+
+
+
+
+
+
+
+
+
+
+
+
+
14 / 14
+
+
+
+
SCENE A
+
+
+
SCENE B
+
+
+
+
+
+
+
+
Light Leak
+
Prompt
+
"use light leak shader transition"
+
+ Beer-Lambert exponential falloff with ACES tone mapping and directional flare streak.
+
+
-It runs for 4 seconds at 1920×1080. Paste this into your composition:
+
+
-```html index.html
-
+
+
+
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
+
+```
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/liquid-glass-context-menu.mdx b/docs/catalog/blocks/liquid-glass-context-menu.mdx
index 06eacb5995..b8a1b0ea66 100644
--- a/docs/catalog/blocks/liquid-glass-context-menu.mdx
+++ b/docs/catalog/blocks/liquid-glass-context-menu.mdx
@@ -3,40 +3,661 @@ title: "Liquid Glass Context Menu"
description: "Frosted glass context menu panel drifting over an aurora shader background"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add liquid-glass-context-menu
-```
+
That writes `compositions/liquid-glass-context-menu.html`, plus 1 supporting file under `compositions/lib/`.
-
+
Live preview needs the `chrome://flags/#canvas-draw-element` flag switched on.
- Rendering from the CLI switches it on for you. [How it
- works](/guides/html-in-canvas)
-
-
-## Add it to your video
-
-It runs for 8 seconds at 1920×1080. Paste this into your composition:
-
-```html index.html
-
+ Without it this item's screen renders black. Rendering from the CLI switches
+ it on for you. [How it works](/guides/html-in-canvas)
+
+
+## Source
+
+
+
+```html
+
+
+
+
+
+ Liquid Glass Context Menu
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
liquid-glass.mov
+
Preview render - 08s
+
+
+
+
+
+
+
+
+
+ Share
+
+
+
+ Add to Bookmarks
+
+
+
+ Add Bookmark to...
+
+
+
+
+ New Tab
+ ⌘T
+
+
+
+ New Private Tab
+ ⇧⌘N
+
+
+
+
+
Open in New Tab
+
+
+
+
+
+
+
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
+
+```
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/liquid-glass-media-controls.mdx b/docs/catalog/blocks/liquid-glass-media-controls.mdx
index 9e21431d33..15a4cd2c64 100644
--- a/docs/catalog/blocks/liquid-glass-media-controls.mdx
+++ b/docs/catalog/blocks/liquid-glass-media-controls.mdx
@@ -3,40 +3,722 @@ title: "Liquid Glass Media Controls"
description: "Frosted glass media control panels spreading over an aurora shader background"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add liquid-glass-media-controls
-```
+
That writes `compositions/liquid-glass-media-controls.html`, plus 1 supporting file under `compositions/lib/`.
-
+
Live preview needs the `chrome://flags/#canvas-draw-element` flag switched on.
- Rendering from the CLI switches it on for you. [How it
- works](/guides/html-in-canvas)
-
-
-## Add it to your video
-
-It runs for 8 seconds at 1920×1080. Paste this into your composition:
-
-```html index.html
-
+ Without it this item's screen renders black. Rendering from the CLI switches
+ it on for you. [How it works](/guides/html-in-canvas)
+
+
+## Source
+
+
+
+```html
+
+
+
+
+
+ Liquid Glass Media Controls
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Search
+
+
+
+
+
+
+
All
+
Favorites
+
Recent
+
+
+
+
+
+
+
Midnight Drive
+
+
+
Glass Resonance
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 34%
+
+
+
+
+
+
+
+
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
+
+```
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/liquid-glass-notification.mdx b/docs/catalog/blocks/liquid-glass-notification.mdx
index 9b4ae2cb94..fc2b55eb69 100644
--- a/docs/catalog/blocks/liquid-glass-notification.mdx
+++ b/docs/catalog/blocks/liquid-glass-notification.mdx
@@ -3,40 +3,519 @@ title: "Liquid Glass Notification"
description: "Frosted glass notification cards floating over an aurora shader background"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add liquid-glass-notification
-```
+
-That writes `compositions/liquid-glass-notification.html`, plus 2 supporting files under `compositions/lib/` and `compositions/assets/`.
+That writes `compositions/liquid-glass-notification.html`, plus 2 supporting files under `compositions/assets/` and `compositions/lib/`.
-
+
Live preview needs the `chrome://flags/#canvas-draw-element` flag switched on.
- Rendering from the CLI switches it on for you. [How it
- works](/guides/html-in-canvas)
-
-
-## Add it to your video
-
-It runs for 8 seconds at 1920×1080. Paste this into your composition:
-
-```html index.html
-
+ Without it this item's screen renders black. Rendering from the CLI switches
+ it on for you. [How it works](/guides/html-in-canvas)
+
+
+## Source
+
+
+
+```html
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Render complete
+
+ rendering
+
+
+ Liquid glass preview is encoding with GPU capture.
+
+
+
+
+
+
+
+
M
+
+
+ Messages
+ now
+
+
+ Miguel: can it feel alive but still native?
+
+
+
+ Reply
+ Mark Read
+
+
+
+
+
+
+
+
+
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
+
+```
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/liquid-glass-widgets.mdx b/docs/catalog/blocks/liquid-glass-widgets.mdx
index 261209937b..a9b5001177 100644
--- a/docs/catalog/blocks/liquid-glass-widgets.mdx
+++ b/docs/catalog/blocks/liquid-glass-widgets.mdx
@@ -3,40 +3,797 @@ title: "Liquid Glass Widgets"
description: "Frosted glass stat cards, showcase panel and pill chips over an aurora shader background"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add liquid-glass-widgets
-```
+
That writes `compositions/liquid-glass-widgets.html`, plus 2 supporting files under `compositions/assets/` and `compositions/lib/`.
-
+
Live preview needs the `chrome://flags/#canvas-draw-element` flag switched on.
- Rendering from the CLI switches it on for you. [How it
- works](/guides/html-in-canvas)
-
-
-## Add it to your video
-
-It runs for 8 seconds at 1920×1080. Paste this into your composition:
-
-```html index.html
-
+ Without it this item's screen renders black. Rendering from the CLI switches
+ it on for you. [How it works](/guides/html-in-canvas)
+
+
+## Source
+
+
+
+```html
+
+
+
+
+
+ Liquid Glass Widgets
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Temperature
+ 21°
+
+
+
+ Battery
+
+ 87%
+
+
+ Steps
+
+
8.2K
+
+
+
+
+
+
+
+
+
Preview pipeline
+
+ Write HTML, render video. Ship compositions at the speed of code.
+
+
+ Encoding frames
+
+
+
+
+
+
+
+
+
+ Connected
+
+
+
+ Bluetooth
+
+
+
+ Focus
+
+
+
+
+
+
+
+
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
+
+```
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/logo-outro.mdx b/docs/catalog/blocks/logo-outro.mdx
index 21a7171044..366e5b3ee5 100644
--- a/docs/catalog/blocks/logo-outro.mdx
+++ b/docs/catalog/blocks/logo-outro.mdx
@@ -3,41 +3,265 @@ title: "Logo Outro"
description: "Cinematic logo reveal with piece-by-piece assembly, glow bloom, tagline fade-in, and URL pill"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add logo-outro
-```
+
That writes one file: `compositions/logo-outro.html`.
-## Add it to your video
+## Change the colors
+
+Set these CSS variables on the block:
+
+- `--bg-color` — Background. Defaults to `#0a0a0f`.
+- `--accent-color` — Accent. Defaults to `#1a1a1f`.
+
+## Source
+
+
+
+```html
+
+
+
+
+
+ Logo Outro
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Nothing great is made alone.
+
+ figma.com
+
+
+
+
+
+
+
+
+
+
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+
-## Change the colors
+## Usage
-Set these CSS variables on the block:
+After installing, add the block to your host composition:
-- `--bg-color` — Background. Defaults to `#0a0a0f`.
-- `--accent-color` — Accent. Defaults to `#1a1a1f`.
+```html
+
+```
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/lower-third-bild.mdx b/docs/catalog/blocks/lower-third-bild.mdx
index 8fe0ae306d..95bba247e5 100644
--- a/docs/catalog/blocks/lower-third-bild.mdx
+++ b/docs/catalog/blocks/lower-third-bild.mdx
@@ -3,35 +3,186 @@ title: "Lower Third — BILD Style"
description: "News-style lower third with tight-fit text boxes: white headline bar with red drop-shadow, red sub-line with white drop-shadow."
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
-## Install
+
+
+```html lower-third-bild.html
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
```
+
+
+## Install
+
+
+
That writes `compositions/lower-third-bild.html`, plus 2 supporting files under `compositions/assets/fonts/`.
-## Add it to your video
+## Usage
-It runs for 8 seconds at 1920×1080. Paste this into your composition:
+After installing, add the block to your host composition:
-```html index.html
-
+```html
+
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
-
{/* hf:generated-footer */}
Tagged `broadcast` `lower-third` `news` `overlay`.
diff --git a/docs/catalog/blocks/lt-accent-underline.mdx b/docs/catalog/blocks/lt-accent-underline.mdx
index 2e972e10f9..caf5cb5f12 100644
--- a/docs/catalog/blocks/lt-accent-underline.mdx
+++ b/docs/catalog/blocks/lt-accent-underline.mdx
@@ -3,34 +3,138 @@ title: "Lower Third — Accent Underline"
description: "Cardless lower third for footage overlay: name rises, an accent rule draws left-to-right, role fades in; text-shadowed for legibility"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add lt-accent-underline
-```
+
That writes one file: `compositions/lt-accent-underline.html`.
-## Add it to your video
+## Source
+
+
+
+```html
+
+
+
+
+
+
+
+
+
+
+
+
Dr. Maya Chen
+
+
Host · Neuroscientist
+
+
+
+
+
+
+
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
+
+```
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/lt-bold-block.mdx b/docs/catalog/blocks/lt-bold-block.mdx
index 9a2f93d384..21e019c7ae 100644
--- a/docs/catalog/blocks/lt-bold-block.mdx
+++ b/docs/catalog/blocks/lt-bold-block.mdx
@@ -3,34 +3,140 @@ title: "Lower Third — Bold Block"
description: "High-energy podcast lower third: solid dark block wipes in, uppercase name slams up, accent tag pops"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add lt-bold-block
-```
+
That writes one file: `compositions/lt-bold-block.html`.
-## Add it to your video
+## Source
+
+
+
+```html
+
+
+
+
+
+
+
+
+
+
+
+
+
Maya Chen
+
+ Host · Neuroscientist
+
+
+
+
+
+
+
+
+
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
+
+```
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/lt-clean-bar.mdx b/docs/catalog/blocks/lt-clean-bar.mdx
index 03c18ffb89..e30bbef75e 100644
--- a/docs/catalog/blocks/lt-clean-bar.mdx
+++ b/docs/catalog/blocks/lt-clean-bar.mdx
@@ -3,34 +3,143 @@ title: "Lower Third — Clean Bar"
description: "Minimal white-card lower third for podcasts/interviews: accent tab, name + role, clip-wipe entrance"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add lt-clean-bar
-```
+
That writes one file: `compositions/lt-clean-bar.html`.
-## Add it to your video
+## Source
+
+
+
+```html
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Dr. Maya Chen
+
Host · Neuroscientist
+
+
+
+
+
+
+
+
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
+
+```
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/lt-color-block.mdx b/docs/catalog/blocks/lt-color-block.mdx
index 90ddf3a39b..5c19192372 100644
--- a/docs/catalog/blocks/lt-color-block.mdx
+++ b/docs/catalog/blocks/lt-color-block.mdx
@@ -3,34 +3,132 @@ title: "Lower Third — Color Block"
description: "High-energy lower third: bold accent-color block slides in with overshoot, condensed name + mono role"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add lt-color-block
-```
+
That writes one file: `compositions/lt-color-block.html`.
-## Add it to your video
+## Source
+
+
+
+```html
+
+
+
+
+
+
+
+
+
+
+
+
+
Dr. Maya Chen
+
Host · Neuroscientist
+
+
+
+
+
+
+
+
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
+
+```
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/lt-dark-card.mdx b/docs/catalog/blocks/lt-dark-card.mdx
index 0d81ee1428..db42a947c8 100644
--- a/docs/catalog/blocks/lt-dark-card.mdx
+++ b/docs/catalog/blocks/lt-dark-card.mdx
@@ -3,34 +3,142 @@ title: "Lower Third — Dark Card"
description: "Charcoal card lower third for bright footage: name, drawn accent underline, role; slide-up entrance"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add lt-dark-card
-```
+
That writes one file: `compositions/lt-dark-card.html`.
-## Add it to your video
+## Source
+
+
+
+```html
+
+
+
+
+
+
+
+
+
+
+
+
+
Dr. Maya Chen
+
+
Host · Neuroscientist
+
+
+
+
+
+
+
+
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
+
+```
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/lt-kicker-name.mdx b/docs/catalog/blocks/lt-kicker-name.mdx
index 9f9bb30d39..ea468e380e 100644
--- a/docs/catalog/blocks/lt-kicker-name.mdx
+++ b/docs/catalog/blocks/lt-kicker-name.mdx
@@ -3,34 +3,145 @@ title: "Lower Third — Kicker Name"
description: "Cardless lower third with an accent eyebrow/kicker tag, heavy name, and a drawn baseline; for footage"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add lt-kicker-name
-```
+
That writes one file: `compositions/lt-kicker-name.html`.
-## Add it to your video
+## Source
+
+
+
+```html
+
+
+
+
+
+
+
+
+
+
+
+
+ Episode 47
+
+
Maya Chen
+
+
+
+
+
+
+
+
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
+
+```
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/lt-mask-reveal.mdx b/docs/catalog/blocks/lt-mask-reveal.mdx
index d7e5deea32..aec0ba805b 100644
--- a/docs/catalog/blocks/lt-mask-reveal.mdx
+++ b/docs/catalog/blocks/lt-mask-reveal.mdx
@@ -3,34 +3,151 @@ title: "Lower Third — Mask Reveal"
description: "Cardless lower third: an accent sweep crosses and clip-path-reveals a heavy name, role fades up; for footage"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add lt-mask-reveal
-```
+
That writes one file: `compositions/lt-mask-reveal.html`.
-## Add it to your video
+## Source
+
+
+
+```html
+
+
+
+
+
+
+
+
+
+
+
+
+
Dr. Maya Chen
+
+
+
Host · Neuroscientist
+
+
+
+
+
+
+
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
+
+```
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/lt-neon-border.mdx b/docs/catalog/blocks/lt-neon-border.mdx
new file mode 100644
index 0000000000..5968c4ba5d
--- /dev/null
+++ b/docs/catalog/blocks/lt-neon-border.mdx
@@ -0,0 +1,458 @@
+---
+title: "Neon Border"
+description: "Two arcs of light travel the edge of a rounded panel and snap corner to corner, trailing a soft three-layer bloom. A lower third for a name and role."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html lt-neon-border.html
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Dr. Maya Chen
+ Host · Neuroscientist
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/lt-neon-border.html`.
+
+## Add it to your video
+
+It runs for 4.8 seconds at 1920×1080. Paste this into your composition:
+
+```html index.html
+
+```
+
+Move it in time with `data-start`. Put it on a different timeline row with
+`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+
+## Change how it looks
+
+Set these CSS variables on the block:
+
+- `undefined` — Name. Defaults to `Dr. Maya Chen`.
+- `undefined` — Role. Defaults to `Host · Neuroscientist`.
+- `undefined` — Accent. Defaults to `#cc9149`.
+- `undefined` — Movement. Defaults to `step`. Options: `step`, `glide`.
+- `undefined` — Speed. Defaults to `1.6`.
+- `undefined` — Corner radius. Defaults to `26`.
+- `undefined` — Thickness. Defaults to `5`.
+- `undefined` — Arc length. Defaults to `22`.
+- `undefined` — Glow. Defaults to `1`.
+
+{/* hf:generated-footer */}
+
+Tagged `lower-third` `glow` `loop` `video-primitive`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/blocks/lt-side-rule.mdx b/docs/catalog/blocks/lt-side-rule.mdx
index 673f3fcbdb..35ac02960c 100644
--- a/docs/catalog/blocks/lt-side-rule.mdx
+++ b/docs/catalog/blocks/lt-side-rule.mdx
@@ -3,34 +3,145 @@ title: "Lower Third — Side Rule"
description: "Cardless lower third with a vertical accent bar; condensed display name + mono role, text-shadowed for footage"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add lt-side-rule
-```
+
That writes one file: `compositions/lt-side-rule.html`.
-## Add it to your video
+## Source
+
+
+
+```html
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Dr. Maya Chen
+
Host · Neuroscientist
+
+
+
+
+
+
+
+
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
+
+```
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/lt-soft-pill.mdx b/docs/catalog/blocks/lt-soft-pill.mdx
index eb42446e5d..d9e70d67ee 100644
--- a/docs/catalog/blocks/lt-soft-pill.mdx
+++ b/docs/catalog/blocks/lt-soft-pill.mdx
@@ -3,34 +3,150 @@ title: "Lower Third — Soft Pill"
description: "Rounded white pill lower third for podcasts/interviews: status dot, name + role, scale-pop entrance"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add lt-soft-pill
-```
+
That writes one file: `compositions/lt-soft-pill.html`.
-## Add it to your video
+## Source
+
+
+
+```html
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Dr. Maya Chen
+
Host · Neuroscientist
+
+
+
+
+
+
+
+
+
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
+
+```
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/lt-stack-bars.mdx b/docs/catalog/blocks/lt-stack-bars.mdx
index 1067d2be7b..f5ad5eeea6 100644
--- a/docs/catalog/blocks/lt-stack-bars.mdx
+++ b/docs/catalog/blocks/lt-stack-bars.mdx
@@ -3,34 +3,140 @@ title: "Lower Third — Stack Bars"
description: "Two stacked bars: a dark name bar wipes from the left, an accent role bar wipes from the right"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add lt-stack-bars
-```
+
That writes one file: `compositions/lt-stack-bars.html`.
-## Add it to your video
+## Source
+
+
+
+```html
+
+
+
+
+
+
+
+
+
+
+
+
+
Maya Chen
+
+
+
Host · Neuroscientist
+
+
+
+
+
+
+
+
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
+
+```
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/macos-notification.mdx b/docs/catalog/blocks/macos-notification.mdx
index fd5fa2810c..6d1bad1137 100644
--- a/docs/catalog/blocks/macos-notification.mdx
+++ b/docs/catalog/blocks/macos-notification.mdx
@@ -3,34 +3,233 @@ title: "macOS Notification"
description: "Animated macOS-style notification banner with app icon and message"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add macos-notification
-```
+
That writes one file: `compositions/macos-notification.html`.
-## Add it to your video
+## Source
+
+
+
+```html
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ HyperFrames
+ now
+
+
Prompt to replace this title
+
+ Prompt to change this body text, the app icon, and the app name to match your content.
+
+
+
+
+
+
+
+
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
+
+```
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/macos-tahoe-liquid-glass.mdx b/docs/catalog/blocks/macos-tahoe-liquid-glass.mdx
index 284995acaf..092ee8af91 100644
--- a/docs/catalog/blocks/macos-tahoe-liquid-glass.mdx
+++ b/docs/catalog/blocks/macos-tahoe-liquid-glass.mdx
@@ -3,40 +3,1499 @@ title: "macOS Tahoe Liquid Glass Desktop"
description: "3D MacBook with a macOS Tahoe-style desktop, glass menu bar, Finder window, dock, and cinematic device camera move."
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add macos-tahoe-liquid-glass
-```
+
That writes `compositions/macos-tahoe-liquid-glass.html`, plus 18 supporting files under `models/`, `assets/wallpapers/`, and `assets/icons/`.
-
+
Live preview needs the `chrome://flags/#canvas-draw-element` flag switched on.
- Rendering from the CLI switches it on for you. [How it
- works](/guides/html-in-canvas)
-
-
-## Add it to your video
-
-It runs for 15 seconds at 1920×1080. Paste this into your composition:
-
-```html index.html
-
+ Without it this item's screen renders black. Rendering from the CLI switches
+ it on for you. [How it works](/guides/html-in-canvas)
+
+
+## Source
+
+
+
+```html
+
+
+
+
+
+ Devices Canvas — HTML-in-Canvas API Showcase
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
+
+```
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/mk-background.mdx b/docs/catalog/blocks/mk-background.mdx
index f9f1d9f689..dee08454f3 100644
--- a/docs/catalog/blocks/mk-background.mdx
+++ b/docs/catalog/blocks/mk-background.mdx
@@ -3,13 +3,13 @@ title: "Minimal Gradient Background"
description: "Procedural soft-blob gradient backdrop in a minimalist presentation style: two radial blobs drifting over a base color, with an animatable rounded-card bar mask and optional frosted-glass mode"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add mk-background
-```
+
That writes one file: `compositions/mk-background.html`.
@@ -32,6 +32,250 @@ It runs for 10 seconds at 1920×1080. Paste this into your composition:
Move it in time with `data-start`. Put it on a different timeline row with
`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+## Source
+
+
+
+```html
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
{/* hf:generated-footer */}
Tagged `background` `gradient` `minimal` `professional` `presentation`.
diff --git a/docs/catalog/blocks/mk-callout-highlight.mdx b/docs/catalog/blocks/mk-callout-highlight.mdx
index 49a91731cc..de3d142377 100644
--- a/docs/catalog/blocks/mk-callout-highlight.mdx
+++ b/docs/catalog/blocks/mk-callout-highlight.mdx
@@ -3,13 +3,13 @@ title: "Word-Sweep Highlight"
description: "A sentence whose word-by-word emphasis is driven by a single scalar — tween it to sync the highlight with a voiceover"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add mk-callout-highlight
-```
+
That writes one file: `compositions/mk-callout-highlight.html`.
@@ -32,6 +32,171 @@ It runs for 8 seconds at 1920×1080. Paste this into your composition:
Move it in time with `data-start`. Put it on a different timeline row with
`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+## Source
+
+
+
+```html
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
{/* hf:generated-footer */}
Tagged `typography` `karaoke` `captions` `minimal`.
diff --git a/docs/catalog/blocks/mk-clone-wall-transition.mdx b/docs/catalog/blocks/mk-clone-wall-transition.mdx
index bc921077eb..e30d4c4989 100644
--- a/docs/catalog/blocks/mk-clone-wall-transition.mdx
+++ b/docs/catalog/blocks/mk-clone-wall-transition.mdx
@@ -3,13 +3,13 @@ title: "Text Clone Wall Transition"
description: "Overlay transition: a tiled word wall covers the frame, inverts via difference blending, and clears — hard-cut the content beneath while covered"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add mk-clone-wall-transition
-```
+
That writes one file: `compositions/mk-clone-wall-transition.html`.
@@ -32,6 +32,240 @@ It runs for 2.4 seconds at 1920×1080. Paste this into your composition:
Move it in time with `data-start`. Put it on a different timeline row with
`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+## Source
+
+
+
+```html
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
{/* hf:generated-footer */}
Tagged `transition` `typography` `wipe`.
diff --git a/docs/catalog/blocks/mk-line-graph.mdx b/docs/catalog/blocks/mk-line-graph.mdx
index 8c30ca0701..559c0a0b3b 100644
--- a/docs/catalog/blocks/mk-line-graph.mdx
+++ b/docs/catalog/blocks/mk-line-graph.mdx
@@ -3,13 +3,13 @@ title: "Minimal Line Graph"
description: "One or two SVG series draw on with dots popping and value labels riding the draw front; dim baseline axis, x-labels, color-dot legend"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add mk-line-graph
-```
+
That writes one file: `compositions/mk-line-graph.html`.
@@ -32,6 +32,307 @@ It runs for 7 seconds at 1920×1080. Paste this into your composition:
Move it in time with `data-start`. Put it on a different timeline row with
`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+## Source
+
+
+
+```html
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
{/* hf:generated-footer */}
Tagged `data-viz` `chart` `graph` `minimal`.
diff --git a/docs/catalog/blocks/mk-placeholder-grid.mdx b/docs/catalog/blocks/mk-placeholder-grid.mdx
index 57773aa67a..3f0436a2c9 100644
--- a/docs/catalog/blocks/mk-placeholder-grid.mdx
+++ b/docs/catalog/blocks/mk-placeholder-grid.mdx
@@ -3,13 +3,13 @@ title: "Rounded Media Grid"
description: "N-up rounded-corner media grid (2-up, 3-up, 4-up, 3x2, hero plus two): per-cell inside-scale framing, staggered box-in entrance, slow settle"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add mk-placeholder-grid
-```
+
That writes one file: `compositions/mk-placeholder-grid.html`.
@@ -32,6 +32,248 @@ It runs for 8 seconds at 1920×1080. Paste this into your composition:
Move it in time with `data-start`. Put it on a different timeline row with
`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+## Source
+
+
+
+```html
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
{/* hf:generated-footer */}
Tagged `placeholder` `media` `grid` `minimal`.
diff --git a/docs/catalog/blocks/mk-progress-stat.mdx b/docs/catalog/blocks/mk-progress-stat.mdx
index ef713b4df4..1de8fa28b7 100644
--- a/docs/catalog/blocks/mk-progress-stat.mdx
+++ b/docs/catalog/blocks/mk-progress-stat.mdx
@@ -3,13 +3,13 @@ title: "Count-Up Stat Card"
description: "Big-numeral statistic with count-up, label, thin progress track filling to value/max, and caption; light and dark schemes"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add mk-progress-stat
-```
+
That writes one file: `compositions/mk-progress-stat.html`.
@@ -32,6 +32,200 @@ It runs for 7 seconds at 1920×1080. Paste this into your composition:
Move it in time with `data-start`. Put it on a different timeline row with
`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+## Source
+
+
+
+```html
+
+
+
+
+
+
+
+
+
+
+
0
+
+
+
+
+
+
+
+
+
+```
+
+
+
{/* hf:generated-footer */}
Tagged `data-viz` `stat` `minimal`.
diff --git a/docs/catalog/blocks/mk-specs-list.mdx b/docs/catalog/blocks/mk-specs-list.mdx
index 5be540bb56..48d04b9f0d 100644
--- a/docs/catalog/blocks/mk-specs-list.mdx
+++ b/docs/catalog/blocks/mk-specs-list.mdx
@@ -3,13 +3,13 @@ title: "Specs Checklist"
description: "Left-aligned specs/traits checklist over footage or a board: rows slide in staggered with an accent underline sweep; light and dark schemes"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add mk-specs-list
-```
+
That writes one file: `compositions/mk-specs-list.html`.
@@ -32,6 +32,237 @@ It runs for 8 seconds at 1920×1080. Paste this into your composition:
Move it in time with `data-start`. Put it on a different timeline row with
`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+## Source
+
+
+
+```html
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
{/* hf:generated-footer */}
Tagged `data-viz` `list` `minimal` `professional`.
diff --git a/docs/catalog/blocks/news-ticker.mdx b/docs/catalog/blocks/news-ticker.mdx
index df689c280c..04a046141c 100644
--- a/docs/catalog/blocks/news-ticker.mdx
+++ b/docs/catalog/blocks/news-ticker.mdx
@@ -3,34 +3,440 @@ title: "News Ticker"
description: "Premium broadcast-style lower-third ticker with live label, headline ribbon, and scrolling news crawl."
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add news-ticker
-```
+
That writes one file: `compositions/news-ticker.html`.
-## Add it to your video
+## Source
+
+
+
+```html
+
+
+
+
+
+ News Ticker
+
+
+
+
+
+
+
+
+
+
+
+
+
Live
+
Global Desk
+
+
+
+
+ AI video tools move from prototype to
+ production
+
+
09:41 UTC
+
+
+
+
Breaking
+
+
+ Creator teams shorten launch cycles by
+ 38%
+ Rendering queues clear in under
+ 2 min
+ New catalog blocks trending across product
+ demos
+ Studio editors adopt HTML-first motion
+ systems
+ Creator teams shorten launch cycles by
+ 38%
+ Rendering queues clear in under
+ 2 min
+
+
+
+
+
+
+
+
+
+
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
+
+```
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/north-korea-locked-down.mdx b/docs/catalog/blocks/north-korea-locked-down.mdx
index e9c0d95ef8..f4366d505c 100644
--- a/docs/catalog/blocks/north-korea-locked-down.mdx
+++ b/docs/catalog/blocks/north-korea-locked-down.mdx
@@ -3,34 +3,337 @@ title: "North Korea Locked Down"
description: "Realistic map zoom into North Korea with a red scribble circle, locked-down pop-up label, and reddish editorial wash."
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add north-korea-locked-down
-```
+
That writes `compositions/north-korea-locked-down.html`, plus 1 supporting file under `assets/`.
-## Add it to your video
+## Source
+
+
+
+```html
+
+
+
+
+
+
+
+
+
+
+
+
+
+
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
+
+```
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/nyc-paris-flight.mdx b/docs/catalog/blocks/nyc-paris-flight.mdx
index 7f09281046..bf955d17b4 100644
--- a/docs/catalog/blocks/nyc-paris-flight.mdx
+++ b/docs/catalog/blocks/nyc-paris-flight.mdx
@@ -3,34 +3,557 @@ title: "NYC Paris Flight"
description: "Apple-style realistic map animation with a plane flying from New York to Paris, marker circle, landing pop, and sound effects."
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add nyc-paris-flight
-```
+
That writes `compositions/nyc-paris-flight.html`, plus 2 supporting files under `assets/`.
-## Add it to your video
+## Source
+
+
+
+```html
+
+
+
+
+
+
+
+
+
+
+
+
+
+
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
+
+```
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/organic-light-leak-overlay.mdx b/docs/catalog/blocks/organic-light-leak-overlay.mdx
index 47ddc42ddd..c292c1c267 100644
--- a/docs/catalog/blocks/organic-light-leak-overlay.mdx
+++ b/docs/catalog/blocks/organic-light-leak-overlay.mdx
@@ -3,13 +3,13 @@ title: "Organic Light Leak Overlay"
description: "Finite CSS light-leak overlay for memory beats and motivated transitions"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add organic-light-leak-overlay
-```
+
That writes one file: `compositions/organic-light-leak-overlay.html`.
@@ -32,6 +32,140 @@ It runs for 4 seconds at 1920×1080. Paste this into your composition:
Move it in time with `data-start`. Put it on a different timeline row with
`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+## Source
+
+
+
+```html
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
{/* hf:generated-footer */}
Tagged `light-leak` `film` `memory` `transition` `overlay` `media-treatment-overlay`.
diff --git a/docs/catalog/blocks/oscilloscope-trace.mdx b/docs/catalog/blocks/oscilloscope-trace.mdx
new file mode 100644
index 0000000000..376ead0174
--- /dev/null
+++ b/docs/catalog/blocks/oscilloscope-trace.mdx
@@ -0,0 +1,574 @@
+---
+title: "Oscilloscope Trace"
+description: "CRT oscilloscope beam sweeping a waveform across a 10x8 graticule, with closed-form phosphor persistence: the tail decays as exp(-age/tau) and brightens where the beam slows"
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html oscilloscope-trace.html
+
+
+
+
+
+ Oscilloscope Trace
+
+
+
+
+
+
+
+
+
+
OSCILLOSCOPE
+
SOURCESINE
+
FREQ-
+
TIMEBASE-
+
VERT-
+
PHOSPHOR-
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/oscilloscope-trace.html`.
+
+## Add it to your video
+
+It runs for 6 seconds at 1920×1080. Paste this into your composition:
+
+```html index.html
+
+```
+
+Move it in time with `data-start`. Put it on a different timeline row with
+`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+
+{/* hf:generated-footer */}
+
+Tagged `instrument` `data` `showcase` `retro`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/blocks/rack-focus.mdx b/docs/catalog/blocks/rack-focus.mdx
new file mode 100644
index 0000000000..39479f1891
--- /dev/null
+++ b/docs/catalog/blocks/rack-focus.mdx
@@ -0,0 +1,675 @@
+---
+title: "Rack Focus"
+description: "A focus pull with real aperture bokeh: the focal plane travels from a near subject to a far one, so one resolves as the other blows into hard-edged polygon discs that clip to a cat's eye toward the corners. A focus pull only reads against content at two clearly separated depths, so this block carries its own depth-layered night exterior and puts both subject depths on variables."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html rack-focus.html
+
+
+
+
+
+ Rack Focus
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/rack-focus.html`.
+
+## Add it to your video
+
+It runs for 6 seconds at 1920×1080. Paste this into your composition:
+
+```html index.html
+
+```
+
+Move it in time with `data-start`. Put it on a different timeline row with
+`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+
+## Change how it looks
+
+Set these CSS variables on the block:
+
+- `--nearfocus` — Near focal distance in metres (where the pull starts and the near subject sits). Defaults to `1.2`.
+- `--farfocus` — Far focal distance in metres (where the pull ends and the far subject sits). Defaults to `80`.
+- `--focallength` — Focal length in mm (longer lens = shallower depth of field). Defaults to `85`.
+- `--aperture` — Aperture f-number (lower = bigger bokeh). Defaults to `1.8`.
+- `--blades` — Aperture blade count, the bokeh polygon's sides. Defaults to `6`.
+- `--catseye` — Cat's-eye clipping at the frame corners (mechanical vignetting). Defaults to `0.62`.
+- `--pullstart` — Seconds held on the near subject before the pull starts. Defaults to `1.2`.
+- `--pullduration` — Pull duration in seconds. Defaults to `3.2`.
+- `--pullease` — Pull easing (any GSAP ease name). Defaults to `power2.inOut`.
+- `--bokeh` — Bokeh exposure. Defaults to `1`.
+- `--backdrop` — Backdrop. Defaults to `#05060a`.
+
+{/* hf:generated-footer */}
+
+Tagged `webgl` `shader` `camera` `depth` `cinematic` `showcase`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/blocks/reddit-post.mdx b/docs/catalog/blocks/reddit-post.mdx
index cf13693acb..6a5e89b2bd 100644
--- a/docs/catalog/blocks/reddit-post.mdx
+++ b/docs/catalog/blocks/reddit-post.mdx
@@ -3,34 +3,378 @@ title: "Reddit Post Card"
description: "Animated Reddit post card overlay with upvotes and comments"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add reddit-post
-```
+
That writes one file: `compositions/reddit-post.html`.
-## Add it to your video
+## Source
+
+
+
+```html
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ r/hyperframes
+ u/placeholder_user · 3h
+
+
+
+
+
Prompt to change this title to whatever you want
+
+ Prompt to change this body text, the subreddit, username, and vote count to match your
+ content.
+
+
+
+
+
+
+
+
+ 4.2k
+
+
+
+
+
+
+
+ 328
+
+
+
+
+ Share
+
+
+
+
+
+
+
+
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
+
+```
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/ridged-burn.mdx b/docs/catalog/blocks/ridged-burn.mdx
index b37067644e..245e5979ea 100644
--- a/docs/catalog/blocks/ridged-burn.mdx
+++ b/docs/catalog/blocks/ridged-burn.mdx
@@ -3,34 +3,409 @@ title: "Ridged Burn"
description: "Shader transition with ridged turbulence burn effect"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add ridged-burn
-```
+
That writes one file: `compositions/ridged-burn.html`.
-## Add it to your video
+## Source
+
+
+
+```html
+
+
+
+
+
+
+
+
+
+
+
+
+
+
02 / 14
+
+
+
+
SCENE A
+
+
+
SCENE B
+
+
+
+
+
+
+
+
Ridged Burn
+
Prompt
+
"use ridged burn shader transition"
+
+ abs(noise) creates sharp lightning-crack edges. Blackbody color gradient with
+ high-frequency ember sparks.
+
+
+
+
+
-It runs for 4 seconds at 1920×1080. Paste this into your composition:
+
+
+
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
+
+```
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/ripple-waves.mdx b/docs/catalog/blocks/ripple-waves.mdx
index 7617bc94e8..7513c82f34 100644
--- a/docs/catalog/blocks/ripple-waves.mdx
+++ b/docs/catalog/blocks/ripple-waves.mdx
@@ -3,34 +3,398 @@ title: "Ripple Waves"
description: "Shader transition with concentric ripple wave distortion"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add ripple-waves
-```
+
That writes one file: `compositions/ripple-waves.html`.
-## Add it to your video
+## Source
+
+
+
+```html
+
+
+
+
+
+
+
+
+
+
+
+
+
+
05 / 14
+
+
+
+
SCENE A
+
+
+
SCENE B
+
+
+
+
+
+
+
+
Ripple Waves
+
Prompt
+
"use ripple waves shader transition"
+
+ Exponential sine waves with sharp crests and broad troughs. Both scenes ripple in opposite
+ phases.
+
+
-It runs for 4 seconds at 1920×1080. Paste this into your composition:
+
+
-```html index.html
-
+
+
+
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
+
+```
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/sdf-iris.mdx b/docs/catalog/blocks/sdf-iris.mdx
index 0c5620978f..b9e6312e80 100644
--- a/docs/catalog/blocks/sdf-iris.mdx
+++ b/docs/catalog/blocks/sdf-iris.mdx
@@ -3,34 +3,398 @@ title: "SDF Iris"
description: "Shader transition with signed distance field iris reveal"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add sdf-iris
-```
+
That writes one file: `compositions/sdf-iris.html`.
-## Add it to your video
+## Source
+
+
+
+```html
+
+
+
+
+
+
+
+
+
+
+
+
+
+
04 / 14
+
+
+
+
SCENE A
+
+
+
SCENE B
+
+
+
+
+
+
+
+
SDF Iris
+
Prompt
+
"use sdf iris shader transition"
+
+ Aspect-corrected circle SDF opening from center. Triple onion ring glow with warm
+ exponential falloff.
+
+
-It runs for 4 seconds at 1920×1080. Paste this into your composition:
+
+
-```html index.html
-
+
+
+
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
+
+```
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/spain-map.mdx b/docs/catalog/blocks/spain-map.mdx
index 138c9b9201..a8f0c2c015 100644
--- a/docs/catalog/blocks/spain-map.mdx
+++ b/docs/catalog/blocks/spain-map.mdx
@@ -3,34 +3,425 @@ title: "Spain Map"
description: "Animated Spain choropleth by autonomous community with staggered reveals and gradient legend — D3 conic conformal projection"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add spain-map
-```
+
That writes one file: `compositions/spain-map.html`.
-## Add it to your video
+## Source
+
+
+
+```html
+
+
+
+
+
+ Spain Map
+
+
+
+
+
+
+
+
+
+
+
+
+
PIB per cápita por Comunidad Autónoma
+
Producto Interior Bruto per cápita, estimación 2024
+
+
+
+
+
+ Bajo
+
+ Alto
+
+
+
Fuente: Instituto Nacional de Estadística
+
+
+
+
+
+
+
+
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
+
+```
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/spiral-galaxy.mdx b/docs/catalog/blocks/spiral-galaxy.mdx
new file mode 100644
index 0000000000..bcd44fabf2
--- /dev/null
+++ b/docs/catalog/blocks/spiral-galaxy.mdx
@@ -0,0 +1,378 @@
+---
+title: "Spiral Galaxy"
+description: "A spiral galaxy seen from outside, turning with real differential rotation: inner stars orbit faster than outer ones, so the arms wind up over the shot instead of spinning rigidly. 20,000 additive GPU sprites, seeded once and solved directly from time, so any frame can be rendered on its own."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html spiral-galaxy.html
+
+
+
+
+
+ Spiral Galaxy
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/spiral-galaxy.html`.
+
+## Add it to your video
+
+It runs for 10 seconds at 1920×1080. Paste this into your composition:
+
+```html index.html
+
+```
+
+Move it in time with `data-start`. Put it on a different timeline row with
+`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+
+## Change how it looks
+
+Set these CSS variables on the block:
+
+- `stars` — Star count. Defaults to `20000`.
+- `arms` — Arm count. Defaults to `3`.
+- `rate` — Rotation rate. Defaults to `0.25`.
+- `glow` — Core brightness. Defaults to `1.9`.
+- `size` — Star size. Defaults to `10`.
+- `core` — Core colour. Defaults to `#ffa575`.
+- `rim` — Rim colour. Defaults to `#311599`.
+
+{/* hf:generated-footer */}
+
+Tagged `hero` `space` `particles` `webgl` `background`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/blocks/split-flap-board.mdx b/docs/catalog/blocks/split-flap-board.mdx
new file mode 100644
index 0000000000..da8f343a47
--- /dev/null
+++ b/docs/catalog/blocks/split-flap-board.mdx
@@ -0,0 +1,400 @@
+---
+title: "Split-Flap Board"
+description: "Solari-style departure board: every cell walks its drum forward through the intervening characters of a fixed alphabet until it lands on its target, so the text resolves as a mechanical cascade instead of a fade."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html split-flap-board.html
+
+
+
+
+
+ Split-Flap Board
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/split-flap-board.html`.
+
+## Add it to your video
+
+It runs for 3.5 seconds at 1920×1080. Paste this into your composition:
+
+```html index.html
+
+```
+
+Move it in time with `data-start`. Put it on a different timeline row with
+`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+
+{/* hf:generated-footer */}
+
+Tagged `text` `kinetic` `mechanical` `split-flap` `solari` `departure-board` `reveal`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/blocks/spotify-card.mdx b/docs/catalog/blocks/spotify-card.mdx
index 5375a0d0cd..46a099049c 100644
--- a/docs/catalog/blocks/spotify-card.mdx
+++ b/docs/catalog/blocks/spotify-card.mdx
@@ -3,34 +3,331 @@ title: "Spotify Now Playing"
description: "Animated Spotify now-playing card with album art and progress bar"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add spotify-card
-```
+
That writes one file: `compositions/spotify-card.html`.
-## Add it to your video
+## Source
+
+
+
+```html
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-It runs for 5 seconds at 1080×1920. Paste this into your composition:
+
+
+
HyperFrames
+
HeyGen
+
-```html index.html
-
+
+
+
+
+
+ Spotify
+
+
+
+
+
+
+
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
+
+```
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/swirl-vortex.mdx b/docs/catalog/blocks/swirl-vortex.mdx
index 0b3a669e51..b8ba44e48b 100644
--- a/docs/catalog/blocks/swirl-vortex.mdx
+++ b/docs/catalog/blocks/swirl-vortex.mdx
@@ -3,34 +3,408 @@ title: "Swirl Vortex"
description: "Shader transition with swirling vortex distortion"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add swirl-vortex
-```
+
That writes one file: `compositions/swirl-vortex.html`.
-## Add it to your video
+## Source
+
+
+
+```html
+
+
+
+
+
+
+
+
+
+
+
+
+
+
10 / 14
+
+
+
+
SCENE A
+
+
+
SCENE B
+
+
+
+
+
+
+
+
Swirl Vortex
+
Prompt
+
"use swirl vortex shader transition"
+
+ Both scenes swirl in opposite directions with FBM-warped spiral path. Organic distortion.
+
+
+
+
+
-It runs for 4 seconds at 1920×1080. Paste this into your composition:
+
+
+
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
+
+```
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/thermal-distortion.mdx b/docs/catalog/blocks/thermal-distortion.mdx
index 5578803506..516971fa7a 100644
--- a/docs/catalog/blocks/thermal-distortion.mdx
+++ b/docs/catalog/blocks/thermal-distortion.mdx
@@ -3,34 +3,409 @@ title: "Thermal Distortion"
description: "Shader transition with heat haze thermal distortion"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add thermal-distortion
-```
+
That writes one file: `compositions/thermal-distortion.html`.
-## Add it to your video
+## Source
+
+
+
+```html
+
+
+
+
+
+
+
+
+
+
+
+
+
+
11 / 14
+
+
+
+
SCENE A
+
+
+
SCENE B
+
+
+
+
+
+
+
+
Thermal Distortion
+
Prompt
+
"use thermal distortion shader transition"
+
+ FBM-driven heat shimmer rising from the bottom. Sine displacement modulated by noise with
+ warm haze.
+
+
+
+
+
-It runs for 4 seconds at 1920×1080. Paste this into your composition:
+
+
+
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
+
+```
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/thread-message-stack.mdx b/docs/catalog/blocks/thread-message-stack.mdx
new file mode 100644
index 0000000000..576d23b6bd
--- /dev/null
+++ b/docs/catalog/blocks/thread-message-stack.mdx
@@ -0,0 +1,291 @@
+---
+title: "Thread Message Stack"
+description: "A source-owned editable conversation stack with arbitrary incoming and outgoing messages"
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/thread-message-stack.html`.
+
+## Add it to your video
+
+It runs for 8 seconds at 1920×1080. Paste this into your composition:
+
+```html index.html
+
+```
+
+Move it in time with `data-start`. Put it on a different timeline row with
+`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+
+## Source
+
+
+
+```html
+
+
+
+
+ Thread Message Stack
+
+
+
+
+
+
+
+
+
+
+
+
+ { "messages": [ { "side": "incoming", "text": "wait, that is actually wild", "sender":
+ "Northbeam support" }, { "side": "outgoing", "text": "can you fix it?" }, { "side":
+ "incoming", "text": "way ahead of you" }, { "side": "outgoing", "text": "you are unreal"
+ }, { "side": "incoming", "text": "he owes you dinner for this one" }, { "side":
+ "outgoing", "text": "already booked" } ], "stagger": 0.86, "hold": 1 }
+
+
+
+
+
+
+
+```
+
+
+
+{/* hf:generated-footer */}
+
+Tagged `social` `conversation` `messages`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/blocks/tiktok-follow.mdx b/docs/catalog/blocks/tiktok-follow.mdx
index 6224367fe0..8c29268e0d 100644
--- a/docs/catalog/blocks/tiktok-follow.mdx
+++ b/docs/catalog/blocks/tiktok-follow.mdx
@@ -3,34 +3,295 @@ title: "TikTok Follow"
description: "Animated TikTok follow overlay with profile card and follow button"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add tiktok-follow
-```
+
That writes `compositions/tiktok-follow.html`, plus 1 supporting file under `assets/`.
-## Add it to your video
+## Source
+
+
+
+```html
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
HeyGen
+
@heygen.com
+
1,999 followers
+
+
+ Follow
+
+ Following
+
+
+
+
+
-```html index.html
-
+
+
+
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
+
+```
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/transitions-3d.mdx b/docs/catalog/blocks/transitions-3d.mdx
index 554fd608ed..dcce6db53d 100644
--- a/docs/catalog/blocks/transitions-3d.mdx
+++ b/docs/catalog/blocks/transitions-3d.mdx
@@ -3,34 +3,329 @@ title: "3D Transitions"
description: "Showcase of 3D perspective flip and rotate transitions"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add transitions-3d
-```
+
That writes one file: `compositions/transitions-3d.html`.
-## Add it to your video
+## Source
+
+
+
+```html
+
+
+
+
+
+ 3D Transitions
+
+
+
+
+
+
+
3D Transitions
+
1 Transition
+
-It runs for 11 seconds at 1920×1080. Paste this into your composition:
+
+
+
ONE
+
Scene A
+
+
-```html index.html
-
+
+
+
TWO
+
Scene B
+
+
+
+
Transition Name
+
+
+
End of 3D Transitions
+
+
+
+
+
+
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
+
+```
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/transitions-blur.mdx b/docs/catalog/blocks/transitions-blur.mdx
index 7da3aa55ab..213495c9fb 100644
--- a/docs/catalog/blocks/transitions-blur.mdx
+++ b/docs/catalog/blocks/transitions-blur.mdx
@@ -3,34 +3,419 @@ title: "Blur Transitions"
description: "Showcase of blur-based transitions between scenes"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add transitions-blur
-```
+
That writes one file: `compositions/transitions-blur.html`.
-## Add it to your video
+## Source
+
+
+
+```html
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TRANSITION CATALOG
+
+
+ Blur Transitions
+
+
+ 3 transitions
+
+
+
+
+
+
+
+ ONE
+
+
+ SCENE A
+
+
+
+
+
+
+
+
+ TWO
+
+
+ SCENE B
+
+
+
+
+
+
+
01
+
Blur Through
+
Use a blur through transition
+
+
+
02
+
Directional Blur
+
Use a directional blur transition with motion skew
+
+
+
03
+
Calm Blur Through
+
Use a slow calm blur through transition
+
+
+
+
+
+ BLUR TRANSITIONS
+
+
+ 3 Transitions
+
+
+
+
+
+
+
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
+
+```
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/transitions-cover.mdx b/docs/catalog/blocks/transitions-cover.mdx
index 81055e9d43..40b9dbfc39 100644
--- a/docs/catalog/blocks/transitions-cover.mdx
+++ b/docs/catalog/blocks/transitions-cover.mdx
@@ -3,34 +3,417 @@ title: "Cover Transitions"
description: "Showcase of cover/uncover slide transitions"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add transitions-cover
-```
+
That writes one file: `compositions/transitions-cover.html`.
-## Add it to your video
+## Source
+
+
+
+```html
+
+
+
+
+
+ Cover Transitions Showcase
+
+
+
+
+
+
+
+
Cover Transitions
+
3 transition styles
+
+
+
+
+
ONE
+
SCENE A
+
+
+
+
+
+
+
+
+
TWO
+
SCENE B
+
+
+
+
+
+
+
+
+
+
+
+
-It runs for 21 seconds at 1920×1080. Paste this into your composition:
+
+
-```html index.html
-
+
+
+
Cover Transitions
+
End of showcase
+
+
+
+
+
+
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
+
+```
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/transitions-destruction.mdx b/docs/catalog/blocks/transitions-destruction.mdx
index 1834f8a1b5..d011e1eb68 100644
--- a/docs/catalog/blocks/transitions-destruction.mdx
+++ b/docs/catalog/blocks/transitions-destruction.mdx
@@ -3,34 +3,446 @@ title: "Destruction Transitions"
description: "Showcase of destructive break-apart transitions"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add transitions-destruction
-```
+
That writes one file: `compositions/transitions-destruction.html`.
-## Add it to your video
+## Source
+
+
+
+```html
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TRANSITION CATALOG
+
+
+ Destruction Transitions
+
+
+ 1 transition
+
+
+
+
+
+
+
+ ONE
+
+
+ SCENE A
+
+
+
+
+
+
+
+
+ TWO
+
+
+ SCENE B
+
+
+
+
+
+
+
+
+
+
01
+
Page Burn
+
Use a page burn destruction transition
+
+
+
+
+
+ DESTRUCTION TRANSITIONS
+
+
+ 1 Transition
+
+
+
+
+
+
+
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
+
+```
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/transitions-dissolve.mdx b/docs/catalog/blocks/transitions-dissolve.mdx
index 4d44438410..373cc0675c 100644
--- a/docs/catalog/blocks/transitions-dissolve.mdx
+++ b/docs/catalog/blocks/transitions-dissolve.mdx
@@ -3,34 +3,423 @@ title: "Dissolve Transitions"
description: "Showcase of dissolve and fade transitions"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add transitions-dissolve
-```
+
That writes one file: `compositions/transitions-dissolve.html`.
-## Add it to your video
+## Source
+
+
+
+```html
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TRANSITION CATALOG
+
+
+ Dissolve Transitions
+
+
+ 4 transitions
+
+
+
+
+
+
+
+ ONE
+
+
+ SCENE A
+
+
+
+
+
+
+
+
+ TWO
+
+
+ SCENE B
+
+
+
+
+
+
+
01
+
Crossfade
+
Use a crossfade transition
+
+
+
02
+
Blur Crossfade
+
Use a blur crossfade transition
+
+
+
03
+
Focus Pull
+
Use a focus pull transition
+
+
+
04
+
Color Dip
+
Use a color dip to black transition
+
+
+
+
+
+ DISSOLVE TRANSITIONS
+
+
+ 4 Transitions
+
+
+
+
+
+
+
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
+
+```
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/transitions-distortion.mdx b/docs/catalog/blocks/transitions-distortion.mdx
index 8dc4392740..26d5900a19 100644
--- a/docs/catalog/blocks/transitions-distortion.mdx
+++ b/docs/catalog/blocks/transitions-distortion.mdx
@@ -3,34 +3,417 @@ title: "Distortion Transitions"
description: "Showcase of warp and distortion transitions"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add transitions-distortion
-```
+
That writes one file: `compositions/transitions-distortion.html`.
-## Add it to your video
+## Source
+
+
+
+```html
+
+
+
+
+
+ Distortion Transitions
+
+
+
+
+
+
+
+
Distortion Transitions
+
Glitch • Chromatic • Ripple
+
+
+
+
+
+
ONE
+
Scene A
+
+
+
+
+
+
+
TWO
+
Scene B
+
+
+
+
+
+
+
+ ONE
+
+
+
+
+
+
+ ONE
+
+
+
+
+
+
+
Glitch
+
Distortion
+
+
+
Chromatic Aberration
+
Distortion
+
+
+
Ripple
+
Distortion
+
+
+
+
+
Distortion Transitions
+
End
+
+
+
+
+
+
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
+
+```
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/transitions-grid.mdx b/docs/catalog/blocks/transitions-grid.mdx
index 6557ee574e..e9f017c3cc 100644
--- a/docs/catalog/blocks/transitions-grid.mdx
+++ b/docs/catalog/blocks/transitions-grid.mdx
@@ -3,34 +3,337 @@ title: "Grid Transitions"
description: "Showcase of grid-based tile transitions"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add transitions-grid
-```
+
That writes one file: `compositions/transitions-grid.html`.
-## Add it to your video
+## Source
+
+
+
+```html
+
+
+
+
+
+ Grid Transitions
+
+
+
+
+
+
+
+
Grid Transitions
+
Grid Dissolve
+
+
+
+
+
+
ONE
+
Scene A
+
+
+
+
+
+
+
TWO
+
Scene B
+
+
+
+
+
+
+
+
+
Grid Dissolve
+
Grid
+
+
+
+
+
Grid Transitions
+
End
+
+
+
+
+
+
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
+
+```
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/transitions-light.mdx b/docs/catalog/blocks/transitions-light.mdx
index 20c7d15593..b63e815f64 100644
--- a/docs/catalog/blocks/transitions-light.mdx
+++ b/docs/catalog/blocks/transitions-light.mdx
@@ -3,34 +3,423 @@ title: "Light Transitions"
description: "Showcase of light-based glow and flash transitions"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add transitions-light
-```
+
That writes one file: `compositions/transitions-light.html`.
-## Add it to your video
+## Source
+
+
+
+```html
+
+
+
+
+
+ Light Transitions Showcase
+
+
+
+
+
+
+
+
Light Transitions
+
3 transition styles
+
+
+
+
+
ONE
+
SCENE A
+
+
+
+
+
+
+
+
+
TWO
+
SCENE B
+
+
+
+
+
+
+
+
+
+
-It runs for 21 seconds at 1920×1080. Paste this into your composition:
+
+
-```html index.html
-
+
+
+
+
+
+
+
+
Light Transitions
+
End of showcase
+
+
+
+
+
+
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
+
+```
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/transitions-mechanical.mdx b/docs/catalog/blocks/transitions-mechanical.mdx
index 30f199702f..0d5881b525 100644
--- a/docs/catalog/blocks/transitions-mechanical.mdx
+++ b/docs/catalog/blocks/transitions-mechanical.mdx
@@ -3,34 +3,455 @@ title: "Mechanical Transitions"
description: "Showcase of mechanical shutter and iris transitions"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add transitions-mechanical
-```
+
That writes one file: `compositions/transitions-mechanical.html`.
-## Add it to your video
+## Source
+
+
+
+```html
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TRANSITION CATALOG
+
+
+ Mechanical Transitions
+
+
+ 2 transitions
+
+
+
+
+
+
+
+ ONE
+
+
+ SCENE A
+
+
+
+
+
+
+
+
+ TWO
+
+
+ SCENE B
+
+
+
+
+
+
+
+
+
+
+
01
+
Shutter
+
Use a shutter close/open transition
+
+
+
02
+
Clock Wipe
+
Use a clock wipe transition
+
+
+
+
+
+ MECHANICAL TRANSITIONS
+
+
+ 2 Transitions
+
+
+
-It runs for 15 seconds at 1920×1080. Paste this into your composition:
+
+
+
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
+
+```
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/transitions-other.mdx b/docs/catalog/blocks/transitions-other.mdx
index 6f3b9a1675..7e07182d79 100644
--- a/docs/catalog/blocks/transitions-other.mdx
+++ b/docs/catalog/blocks/transitions-other.mdx
@@ -3,34 +3,424 @@ title: "Other Transitions"
description: "Showcase of miscellaneous creative transitions"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add transitions-other
-```
+
That writes one file: `compositions/transitions-other.html`.
-## Add it to your video
+## Source
+
+
+
+```html
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TRANSITION CATALOG
+
+
+ Other Transitions
+
+
+ 3 transitions
+
+
+
+
+
+
+
+ ONE
+
+
+ SCENE A
+
+
+
+
+
+
+
+
+ TWO
+
+
+ SCENE B
+
+
+
+
+
+
+
+
+
+
+
+
+
01
+
Flash Cut
+
Use a flash cut transition
+
+
+
02
+
Gravity Drop
+
Use a gravity drop transition
+
+
+
03
+
Morph Circle
+
Use a morph circle expanding transition
+
+
+
+
+
+ OTHER TRANSITIONS
+
+
+ 3 Transitions
+
+
+
-It runs for 20 seconds at 1920×1080. Paste this into your composition:
+
+
+
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
+
+```
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/transitions-push.mdx b/docs/catalog/blocks/transitions-push.mdx
index 89f828d5a0..0a01ace768 100644
--- a/docs/catalog/blocks/transitions-push.mdx
+++ b/docs/catalog/blocks/transitions-push.mdx
@@ -3,34 +3,415 @@ title: "Push Transitions"
description: "Showcase of push and slide transitions"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add transitions-push
-```
+
That writes one file: `compositions/transitions-push.html`.
-## Add it to your video
+## Source
+
+
+
+```html
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TRANSITION CATALOG
+
+
+ Push Transitions
+
+
+ 4 transitions
+
+
+
+
+
+
+
+ ONE
+
+
+ SCENE A
+
+
+
+
+
+
+
+
+ TWO
+
+
+ SCENE B
+
+
+
+
+
+
+
01
+
Push Slide
+
Use a push slide transition
+
+
+
02
+
Vertical Push
+
Use a vertical push transition
+
+
+
03
+
Elastic Push
+
Use an elastic push transition with overshoot
+
+
+
04
+
Squeeze
+
Use a squeeze transition
+
+
+
+
+
+ PUSH TRANSITIONS
+
+
+ 4 Transitions
+
+
+
+
+
+
+
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
+
+```
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/transitions-radial.mdx b/docs/catalog/blocks/transitions-radial.mdx
index fcd7f1727a..786e1590d7 100644
--- a/docs/catalog/blocks/transitions-radial.mdx
+++ b/docs/catalog/blocks/transitions-radial.mdx
@@ -3,34 +3,387 @@ title: "Radial Transitions"
description: "Showcase of radial wipe and reveal transitions"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add transitions-radial
-```
+
That writes one file: `compositions/transitions-radial.html`.
-## Add it to your video
+## Source
+
+
+
+```html
+
+
+
+
+
+ Radial Transitions
+
+
+
+
+
+
+
Radial Transitions
+
3 Transitions
+
+
+
+
+
ONE
+
Scene A
+
+
+
+
+
+
TWO
+
Scene B
+
+
-It runs for 20 seconds at 1920×1080. Paste this into your composition:
+
Transition Name
-```html index.html
-
+
+
End of Radial Transitions
+
+
+
+
+
+
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
+
+```
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/transitions-scale.mdx b/docs/catalog/blocks/transitions-scale.mdx
index e9d3c44e10..d4776afc9c 100644
--- a/docs/catalog/blocks/transitions-scale.mdx
+++ b/docs/catalog/blocks/transitions-scale.mdx
@@ -3,34 +3,382 @@ title: "Scale Transitions"
description: "Showcase of scale and zoom transitions"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add transitions-scale
-```
+
That writes one file: `compositions/transitions-scale.html`.
-## Add it to your video
+## Source
+
+
+
+```html
+
+
+
+
+
+
+
+
+
+
+
+
+
+ TRANSITION CATALOG
+
+
+ Scale Transitions
+
+
+ 2 transitions
+
+
+
+
+
+
+
+ ONE
+
+
+ SCENE A
+
+
+
+
+
+
+
+
+ TWO
+
+
+ SCENE B
+
+
+
+
+
+
+
01
+
Zoom Through
+
Use a zoom through transition
+
+
+
02
+
Zoom Out
+
Use a zoom out transition
+
+
+
+
+
+ SCALE TRANSITIONS
+
+
+ 2 Transitions
+
+
+
+
+
+
+
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
+
+```
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/ui-3d-reveal.mdx b/docs/catalog/blocks/ui-3d-reveal.mdx
index 236faf2adc..149ac4237e 100644
--- a/docs/catalog/blocks/ui-3d-reveal.mdx
+++ b/docs/catalog/blocks/ui-3d-reveal.mdx
@@ -3,34 +3,2796 @@ title: "3D UI Reveal"
description: "Perspective 3D reveal animation for UI elements"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add ui-3d-reveal
-```
+
That writes one file: `compositions/ui-3d-reveal.html`.
-## Add it to your video
+## Source
+
+
+
+```html
+
+
+
+
+
+ ui-3d-reveal
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ App Redesign
+ ›
+ Design System
+
+
+
+
+
+
+ Design
+ Dev
+
+
+
+ Share
+
+
+
S
+
+ J
+
+
+ K
+
+
+
▶
+
+
+
+
+
+
+
+
+ Layers
+ Assets
+
+
+
+
+ Search layers
+
+
+
+
+
+ Page 1
+
+
+
+
+
+ HeyGen — Home
+
+
+
+
+
+ Navigation
+
+
+
+
+ Logo / Mark
+
+
+
+
+ Nav Links
+
+
+
+
+ Create Card
+
+
+
+
+
+ Hero
+
+
+
+
+
+ Feature Grid
+
+
+
+
+
+ Footer
+
+
+
+
+
Design System
+
Landing
+
+
+
+
+
+
+
+
HeyGen — Home
+
+
+
+
+
+
+
+
+
+
+ Avatar
+
+
+
+
+
+ Video Agent
+
+
+
+ Motion Cut
+
+
+
+ Translate
+
+
+
+ Apps
+
+
+
+ Projects
+
+
J
+
+
+
+
+
+ Video Agent
+
+
+
+
+ New video
+
+
YESTERDAY
+
AI Skills Gap: Alien
+
PREVIOUS 3 DAYS
+
AI Skills Gap: Alien
+
Product Strategy: An AI...
+
S9
+
S7
+
S5
+
S3
+
PREVIOUS 7 DAYS
+
S8 lock
+
S4
+
S2
+
Moody t2
+
+
+
+
+
+
+
+
+
+
+
+
99+
+
+
+
+
+
+
+
+
Turn your ideas into production-ready video
+
+
+
+
+
+
+ Avatar
+
+
+ Jordan
+
+
+
+
+ Voice
+
+
+
+
+
+
+
+
+ Auto
+
+
+
+
+ Style
+
+
+
+
+ Auto
+
+
+
+
+
+
+
+
Describe your video idea ...
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Generate
+
+
+
+
+
+
+
+
+
+
+
+
Styles from the community
+
+
All Styles
+
Retro Tech
+
Iconic Artist
+
Pop Culture
+
Print
+
Cinematic
+
+
+
+ IMPLEMENTATION DEPTH
+
+
+ Strategy means saying NO
+
+
+ ?
+
+
+ THINK BIG. START SMALL.
+
+
+
+
+
+
+
+
+
+
+
+
+
Create Card · W 322 H 110
+
+
+
+
+
+
+ Design
+ Prototype
+ Inspect
+
+
+
+
+
⬓
+
⬒
+
⬔
+
+
⬕
+
⬗
+
+
+
+
+
+
+ W
+ 108
+
+
+ H
+ 34
+
+
+
+
+ X
+ 1244
+
+
+ Y
+ 18
+
+
+
+
+ ↺
+ 0°
+
+
+ ⌐
+ 8
+
+
+
+
+
+
+
+ Auto layout
+ −
+
+
+
+ →
+ 12px
+
+
+ ⊡
+ 14 / 8
+
+
+
+
+
+
+
+ Fill
+ +
+
+
+
+ FFFFFF
+ 100%
+
+
+
+
+
+
+ Stroke
+ +
+
+
+ No strokes
+
+
+
+
+
+
+ Effects
+ +
+
+
+
+ Drop shadow
+
+
+
+
+
+
+ Export
+ +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
+
+```
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/us-map-bubble.mdx b/docs/catalog/blocks/us-map-bubble.mdx
index 6c9758859b..4083ae5afe 100644
--- a/docs/catalog/blocks/us-map-bubble.mdx
+++ b/docs/catalog/blocks/us-map-bubble.mdx
@@ -3,34 +3,509 @@ title: "US Bubble Map"
description: "Animated US bubble map with proportional city markers, value callouts, and connection lines — composable with us-map"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add us-map-bubble
-```
+
That writes one file: `compositions/us-map-bubble.html`.
-## Add it to your video
+## Source
+
+
+
+```html
+
+
+
+
+
+ US Bubble Map
+
+
+
+
+
+
+
+
+
+
+
+
+
Top 20 US Cities by Population
+
Proportional bubble markers by metropolitan population
+
+
+
+
+
Source: U.S. Census Bureau, 2024
+
+
+
+
+
+
+
+
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
+
+```
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/us-map-flow.mdx b/docs/catalog/blocks/us-map-flow.mdx
index 48bcfca32d..4cd4c05648 100644
--- a/docs/catalog/blocks/us-map-flow.mdx
+++ b/docs/catalog/blocks/us-map-flow.mdx
@@ -3,34 +3,461 @@ title: "US Flow Map"
description: "Animated connection arcs between US cities over a base map — composable origin-destination flow visualization"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add us-map-flow
-```
+
That writes one file: `compositions/us-map-flow.html`.
-## Add it to your video
+## Source
+
+
+
+```html
+
+
+
+
+
+ US Flow Map
+
+
+
+
+
+
+
+
+
+
+
+
Interstate Flow Connections
+
Relative volume of major city-to-city corridors
+
+
+
+
+
Source: Illustrative data
+
+
+
+
+
+
+
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
+
+```
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/us-map-hex.mdx b/docs/catalog/blocks/us-map-hex.mdx
index e2b33130c2..666bd7ae61 100644
--- a/docs/catalog/blocks/us-map-hex.mdx
+++ b/docs/catalog/blocks/us-map-hex.mdx
@@ -3,34 +3,591 @@ title: "US Hex Grid Map"
description: "Animated hexagonal tile grid map — each state as an equal-weight hex with data fill and abbreviation label"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add us-map-hex
-```
+
That writes one file: `compositions/us-map-hex.html`.
-## Add it to your video
+## Source
+
+
+
+```html
+
+
+
+
+
+ US Hex Grid Map
+
+
+
+
+
+
+
+
+
+
Median Household Income by State
+
American Community Survey, 2024
+
+
+
+
+
+
$52k
+
+
$107k
+
+
+
Source: U.S. Census Bureau, American Community Survey 2024
+
+
+
+
+
+
+
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
+
+```
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/us-map.mdx b/docs/catalog/blocks/us-map.mdx
index f1ed14ad1b..71d77f8c3c 100644
--- a/docs/catalog/blocks/us-map.mdx
+++ b/docs/catalog/blocks/us-map.mdx
@@ -3,34 +3,434 @@ title: "US Map"
description: "Animated US choropleth map with staggered state reveals, value labels, and gradient legend — pure inline SVG with GSAP"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add us-map
-```
+
That writes one file: `compositions/us-map.html`.
-## Add it to your video
+## Source
+
+
+
+```html
+
+
+
+
+
+ US Map
+
+
+
+
+
+
+
+
+
+
+
+
+
Population Density by State
+
Residents per square mile, 2024 Census estimates
+
+
+
+
+
+ Low
+
+ High
+
+
+
Source: U.S. Census Bureau
+
+
+
+
+
+
+
+
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
+
+```
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/vfx-anamorphic-flare.mdx b/docs/catalog/blocks/vfx-anamorphic-flare.mdx
new file mode 100644
index 0000000000..83eb3b0eef
--- /dev/null
+++ b/docs/catalog/blocks/vfx-anamorphic-flare.mdx
@@ -0,0 +1,439 @@
+---
+title: "Anamorphic Streak Flare"
+description: "A drifting field of bright points, each one throwing the long horizontal blue-violet streak a real anamorphic cinema lens produces. Built from the measured filter constants: a 0.3 high-pass, 80 horizontal taps at quarter resolution, a samples/3 gain and a 0x7a8aff tint."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html vfx-anamorphic-flare.html
+
+
+
+
+
+ Anamorphic Streak Flare
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/vfx-anamorphic-flare.html`.
+
+## Add it to your video
+
+It runs for 10 seconds at 1920×1080. Paste this into your composition:
+
+```html index.html
+
+```
+
+Move it in time with `data-start`. Put it on a different timeline row with
+`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+
+## Change how it looks
+
+Set these CSS variables on the block:
+
+- `--intensity` — Streak intensity. Defaults to `5`.
+- `--threshold` — High-pass threshold. Defaults to `0.3`.
+- `--streaklength` — Streak length gain. Defaults to `1`.
+- `--tint` — Streak tint. Defaults to `#7a8aff`.
+- `--bloomradius` — Bloom radius. Defaults to `0`.
+- `--timescale` — Drift rate. Defaults to `0.5`.
+- `--emitters` — Emitter count. Defaults to `140`.
+- `--backdrop` — Backdrop. Defaults to `#04040a`.
+
+{/* hf:generated-footer */}
+
+Tagged `vfx` `background` `showcase` `optical` `canvas`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/blocks/vfx-iphone-device.mdx b/docs/catalog/blocks/vfx-iphone-device.mdx
index 29deacf74c..ff010ae876 100644
--- a/docs/catalog/blocks/vfx-iphone-device.mdx
+++ b/docs/catalog/blocks/vfx-iphone-device.mdx
@@ -3,40 +3,870 @@ title: "iPhone & MacBook 3D Showcase"
description: "Real GLTF iPhone 15 Pro Max and MacBook Pro models with live HTML-in-Canvas screen content, morphing glass lens, product review camera choreography, and 360° turntable."
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add vfx-iphone-device
-```
+
That writes `compositions/vfx-iphone-device.html`, plus 4 supporting files under `models/`.
-
+
Live preview needs the `chrome://flags/#canvas-draw-element` flag switched on.
- Rendering from the CLI switches it on for you. [How it
- works](/guides/html-in-canvas)
-
-
-## Add it to your video
-
-It runs for 15 seconds at 1920×1080. Paste this into your composition:
-
-```html index.html
-
+ Without it this item's screen renders black. Rendering from the CLI switches
+ it on for you. [How it works](/guides/html-in-canvas)
+
+
+## Source
+
+
+
+```html
+
+
+
+
+
+ Devices Canvas — HTML-in-Canvas API Showcase
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
+
+```
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/vfx-liquid-background.mdx b/docs/catalog/blocks/vfx-liquid-background.mdx
index e878a50ed5..4116d5dbb7 100644
--- a/docs/catalog/blocks/vfx-liquid-background.mdx
+++ b/docs/catalog/blocks/vfx-liquid-background.mdx
@@ -3,40 +3,21 @@ title: "Liquid Background"
description: "Organic liquid simulation with vertex displacement on a subdivided plane. HTML content floats above rippling fluid surface with real-time wave dynamics."
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add vfx-liquid-background
-```
+
That writes one file: `compositions/vfx-liquid-background.html`.
-
+
Live preview needs the `chrome://flags/#canvas-draw-element` flag switched on.
- Rendering from the CLI switches it on for you. [How it
- works](/guides/html-in-canvas)
-
-
-## Add it to your video
-
-It runs for 12 seconds at 1920×1080. Paste this into your composition:
-
-```html index.html
-
-```
-
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+ Without it this item's screen renders black. Rendering from the CLI switches
+ it on for you. [How it works](/guides/html-in-canvas)
+
## Change the colors
@@ -45,6 +26,1267 @@ Set these CSS variables on the block:
- `--bg-color` — Background. Defaults to `#0a0e17`.
- `--text-color` — Text color. Defaults to `#e2e8f0`.
+## Source
+
+
+
+```html
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Vault
+
+
+ Portfolio
+ Markets
+ Activity
+ Settings
+
+
+
+
+
+
+
+ Total Balance
+
+
+ $2,847,391.24
+ +12.4%
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ AA
+
+
+
AAPL
+
Apple Inc.
+
+
+ +2.31%
+
+
$189.84
+
+
+
+
+
+ NV
+
+
+
NVDA
+
NVIDIA Corp.
+
+
+ +5.67%
+
+
$721.33
+
+
+
+
+
+ TS
+
+
+
TSLA
+
Tesla Inc.
+
+
+ -1.42%
+
+
$248.50
+
+
+
+
+
+
+
+ Home
+
+
+
+ Trade
+
+
+
+ Wallet
+
+
+
+ Profile
+
+
+
+
+
+
+
+
+
+
+
+
+
Sarah Chen
+
@sarahchen
+
+
+ Follow
+
+
+
+
+
+
+ What's happening?
+
+
+
+
+
+
+
+
+ Sarah Chen
+ @sarahchen · 2h
+
+
+ Just shipped the new real-time collaboration feature. The CRDT sync engine handles
+ 50k concurrent edits without breaking a sweat. This is what engineering craft
+ looks like.
+
+
+ 42 replies
+ 1.2K retweets
+ 8.4K likes
+
+
+
+
+
+
+
+
+
+
+
+ Alex Rivera
+ @alexrivera · 4h
+
+
+ The secret to great developer tools: make the easy things instant and the hard
+ things possible. Stop adding config options and start removing them.
+
+
+ 18 replies
+ 847 retweets
+ 3.1K likes
+
+
+
+
+
+
+
+
+
+
+
+ Maya Patel
+ @mayapatel · 6h
+
+
+ Benchmarked our new rendering pipeline against the previous version. 4.7x faster
+ on large scenes. Sometimes the best optimization is rewriting the architecture
+ from scratch.
+
+
+ 31 replies
+ 2.3K retweets
+ 11K likes
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
+
+```
+
{/* hf:generated-footer */}
Tagged `html-in-canvas` `liquid` `webgl` `displacement` `background`.
diff --git a/docs/catalog/blocks/vfx-liquid-glass.mdx b/docs/catalog/blocks/vfx-liquid-glass.mdx
index c486fdc193..bf30c629f3 100644
--- a/docs/catalog/blocks/vfx-liquid-glass.mdx
+++ b/docs/catalog/blocks/vfx-liquid-glass.mdx
@@ -3,40 +3,21 @@ title: "Liquid Glass"
description: "VFX composition block"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add vfx-liquid-glass
-```
+
That writes one file: `compositions/vfx-liquid-glass.html`.
-
+
Live preview needs the `chrome://flags/#canvas-draw-element` flag switched on.
- Rendering from the CLI switches it on for you. [How it
- works](/guides/html-in-canvas)
-
-
-## Add it to your video
-
-It runs for 20 seconds at 1920×1080. Paste this into your composition:
-
-```html index.html
-
-```
-
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+ Without it this item's screen renders black. Rendering from the CLI switches
+ it on for you. [How it works](/guides/html-in-canvas)
+
## Change the colors
@@ -45,6 +26,775 @@ Set these CSS variables on the block:
- `--bg-color` — Background. Defaults to `#030407`.
- `--accent-color` — Accent. Defaults to `#00d4ff`.
+## Source
+
+
+
+```html
+
+
+
+
+
+ Liquid Glass Parallax
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
+
+```
+
{/* hf:generated-footer */}
Tagged `html-in-canvas` `webgl`.
diff --git a/docs/catalog/blocks/vfx-magnetic.mdx b/docs/catalog/blocks/vfx-magnetic.mdx
index a174e16ad5..2a90f04724 100644
--- a/docs/catalog/blocks/vfx-magnetic.mdx
+++ b/docs/catalog/blocks/vfx-magnetic.mdx
@@ -3,40 +3,21 @@ title: "Magnetic"
description: "VFX composition block"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add vfx-magnetic
-```
+
That writes one file: `compositions/vfx-magnetic.html`.
-
+
Live preview needs the `chrome://flags/#canvas-draw-element` flag switched on.
- Rendering from the CLI switches it on for you. [How it
- works](/guides/html-in-canvas)
-
-
-## Add it to your video
-
-It runs for 15 seconds at 1920×1080. Paste this into your composition:
-
-```html index.html
-
-```
-
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+ Without it this item's screen renders black. Rendering from the CLI switches
+ it on for you. [How it works](/guides/html-in-canvas)
+
## Change the colors
@@ -45,6 +26,487 @@ Set these CSS variables on the block:
- `--bg-color` — Background. Defaults to `#0c0c0c`.
- `--text-color` — Text color. Defaults to `#e8e8e8`.
+## Source
+
+
+
+```html
+
+
+
+
+
+ Magnetic Cursor — HTML-in-Canvas
+
+
+
+
+
+
+
+
+
+
+
+
+
+ The HTML-in-Canvas API renders live DOM as a WebGL texture
+
+
A magnetic shader warps every pixel toward the cursor
+
+ Chromatic aberration splits RGB channels at the distortion site
+
+
+ Impossible without native drawElementImage — no polyfill exists
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
+
+```
+
{/* hf:generated-footer */}
Tagged `html-in-canvas` `webgl`.
diff --git a/docs/catalog/blocks/vfx-portal.mdx b/docs/catalog/blocks/vfx-portal.mdx
index 1eed276a73..40ae1b81cd 100644
--- a/docs/catalog/blocks/vfx-portal.mdx
+++ b/docs/catalog/blocks/vfx-portal.mdx
@@ -3,40 +3,21 @@ title: "Portal"
description: "VFX composition block"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add vfx-portal
-```
+
That writes one file: `compositions/vfx-portal.html`.
-
+
Live preview needs the `chrome://flags/#canvas-draw-element` flag switched on.
- Rendering from the CLI switches it on for you. [How it
- works](/guides/html-in-canvas)
-
-
-## Add it to your video
-
-It runs for 10 seconds at 1920×1080. Paste this into your composition:
-
-```html index.html
-
-```
-
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+ Without it this item's screen renders black. Rendering from the CLI switches
+ it on for you. [How it works](/guides/html-in-canvas)
+
## Change the colors
@@ -45,6 +26,886 @@ Set these CSS variables on the block:
- `--bg-color` — Background. Defaults to `#000000`.
- `--portal-color` — Portal color. Defaults to `#fafafa`.
+## Source
+
+
+
+```html
+
+
+
+
+
+ HTML Portal Transition
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
HTML-in-Canvas Required
+
+ This composition requires the experimental CanvasDrawElement API. Enable it in Chrome or
+ Brave:
+
+
chrome://flags/#canvas-draw-element
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
+
+```
+
{/* hf:generated-footer */}
Tagged `html-in-canvas` `webgl`.
diff --git a/docs/catalog/blocks/vfx-shatter.mdx b/docs/catalog/blocks/vfx-shatter.mdx
index 7cb1cf546f..1326aad53d 100644
--- a/docs/catalog/blocks/vfx-shatter.mdx
+++ b/docs/catalog/blocks/vfx-shatter.mdx
@@ -3,40 +3,1194 @@ title: "Shatter"
description: "VFX composition block"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add vfx-shatter
-```
+
That writes one file: `compositions/vfx-shatter.html`.
-
+
Live preview needs the `chrome://flags/#canvas-draw-element` flag switched on.
- Rendering from the CLI switches it on for you. [How it
- works](/guides/html-in-canvas)
-
-
-## Add it to your video
-
-It runs for 12 seconds at 1920×1080. Paste this into your composition:
-
-```html index.html
-
+ Without it this item's screen renders black. Rendering from the CLI switches
+ it on for you. [How it works](/guides/html-in-canvas)
+
+
+## Source
+
+
+
+```html
+
+
+
+
+
+ HTML Glass Shatter
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
HTML-in-Canvas Required
+
+ This composition requires the experimental CanvasDrawElement API. Enable it in Chrome or
+ Brave:
+
+
chrome://flags/#canvas-draw-element
+
+
+
+
+
+
+
+
+
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
+
+```
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/vfx-text-cursor.mdx b/docs/catalog/blocks/vfx-text-cursor.mdx
index 6d1c8a2b85..ea034ee10b 100644
--- a/docs/catalog/blocks/vfx-text-cursor.mdx
+++ b/docs/catalog/blocks/vfx-text-cursor.mdx
@@ -3,40 +3,893 @@ title: "VFX Text Cursor"
description: "Dramatic text reveal with cursor glow, chromatic shadow rays, and directional lighting on a black stage. Canvas-based shader post-processing with spectral color edges."
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add vfx-text-cursor
-```
+
That writes one file: `compositions/vfx-text-cursor.html`.
-
+
Live preview needs the `chrome://flags/#canvas-draw-element` flag switched on.
- Rendering from the CLI switches it on for you. [How it
- works](/guides/html-in-canvas)
-
-
-## Add it to your video
-
-It runs for 8 seconds at 1920×1080. Paste this into your composition:
-
-```html index.html
-
+ Without it this item's screen renders black. Rendering from the CLI switches
+ it on for you. [How it works](/guides/html-in-canvas)
+
+
+## Source
+
+
+
+```html
+
+
+
+
+
+ VFX Text Cursor
+
+
+
+
+
+
+
+
+
+
+
+ |
+ in
+ canvas
+
+
+ Now available
+ in HyperFrames
+
+
+
+
+
+
+
+
+
+
+
+
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
+
+```
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/vpn-youtube-spot.mdx b/docs/catalog/blocks/vpn-youtube-spot.mdx
index 6e1835b89e..3a0d35d8e7 100644
--- a/docs/catalog/blocks/vpn-youtube-spot.mdx
+++ b/docs/catalog/blocks/vpn-youtube-spot.mdx
@@ -3,34 +3,1019 @@ title: "VPN YouTube Spot"
description: "Snappy Apple-style YouTube insert showing a phone finding and installing a friendly VPN app with sound effects."
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add vpn-youtube-spot
-```
+
That writes `compositions/vpn-youtube-spot.html`, plus 1 supporting file under `assets/`.
-## Add it to your video
+## Source
+
+
+
+```html
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ PRIVATE
+ SIMPLY
+
A calmer way to browse.
+
+
SAFE
+
+
+
+
+
+
+
+
+
+
+
Search
+
+
+
+
+
privacy apps
+
+
+
+
+
+
+
CloudPocket
+
Files and backups
+
4.6 ★★★★★
+
+
GET
+
+
+
+
+
LensLab
+
Photo editor
+
4.8 ★★★★★
+
+
GET
+
+
+
+
+
BeatShelf
+
Music discovery
+
4.4 ★★★★☆
+
+
GET
+
+
+
+
+
VaultPay
+
Budget tracker
+
4.7 ★★★★★
+
+
GET
+
+
+
+
+
TrailPing
+
Maps for trips
+
4.5 ★★★★☆
+
+
GET
+
+
+
+
+
VPN
+
Simple private browsing
+
4.9 ★★★★★
+
+
GET
+
+
+
+
+
+
QuickTunnel
+
Network tools
+
4.2 ★★★★☆
+
+
GET
+
+
+
+
+
PrivateFrame
+
Photo lockers
+
4.3 ★★★★☆
+
+
GET
+
+
+
+
+
+
+
+
+
+
+
VPN
+
Friendly privacy for everyday browsing.
+
+ GET
+
+
+
+
+
+
+
+
+
RATING
+
4.9
+
+
+
SPEED
+
Fast
+
+
+
AGE
+
4+
+
+
+
+
+
+
+
0%
+
+
+
✓
+
Ready to browse
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
+
+```
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/weight-wave.mdx b/docs/catalog/blocks/weight-wave.mdx
new file mode 100644
index 0000000000..bd463b4b44
--- /dev/null
+++ b/docs/catalog/blocks/weight-wave.mdx
@@ -0,0 +1,353 @@
+---
+title: "Weight Wave"
+description: "A crest of thickness travels along a headline: each character swells from light to black and leans forward as the wave passes, driven by the wght and slnt variable-font axes rather than by transforms."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html weight-wave.html
+
+
+
+
+
+ Weight Wave
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes `compositions/weight-wave.html`, plus 2 supporting files under `compositions/assets/fonts/`.
+
+## Add it to your video
+
+It runs for 6 seconds at 1920×1080. Paste this into your composition:
+
+```html index.html
+
+```
+
+Move it in time with `data-start`. Put it on a different timeline row with
+`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+
+{/* hf:generated-footer */}
+
+Tagged `typography` `kinetic-type` `title` `variable-font` `text`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/blocks/whip-pan.mdx b/docs/catalog/blocks/whip-pan.mdx
index 8390feed14..b29dc2d4f0 100644
--- a/docs/catalog/blocks/whip-pan.mdx
+++ b/docs/catalog/blocks/whip-pan.mdx
@@ -3,34 +3,398 @@ title: "Whip Pan"
description: "Shader transition simulating a fast camera whip pan"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add whip-pan
-```
+
That writes one file: `compositions/whip-pan.html`.
-## Add it to your video
+## Source
+
+
+
+```html
+
+
+
+
+
+
+
+
+
+
+
+
+
+
03 / 14
+
+
+
+
SCENE A
+
+
+
SCENE B
+
+
+
+
+
+
+
+
Whip Pan
+
Prompt
+
"use whip pan shader transition"
+
+ Both scenes slide horizontally with 10-sample directional motion blur simulating a fast
+ camera pan.
+
+
-It runs for 4 seconds at 1920×1080. Paste this into your composition:
+
+
-```html index.html
-
+
+
+
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
+
+```
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/world-map.mdx b/docs/catalog/blocks/world-map.mdx
index 3e52e907ad..b5214d2019 100644
--- a/docs/catalog/blocks/world-map.mdx
+++ b/docs/catalog/blocks/world-map.mdx
@@ -3,34 +3,467 @@ title: "World Map"
description: "Animated world choropleth with country-by-country reveal, tooltip labels, and rotating globe inset — D3 Natural Earth projection"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add world-map
-```
+
That writes one file: `compositions/world-map.html`.
-## Add it to your video
+## Source
+
+
+
+```html
+
+
+
+
+
+ World Map
+
+
+
+
+
+
+
+
+
+
+
Global GDP per Capita
+
Nominal GDP per capita, 2024 IMF estimates
+
+
+
+
+
+
+
+
+ Low
+ High
+
+
+
+
Source: International Monetary Fund
+
+
+
+
+
+
+
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
+
+```
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/x-post.mdx b/docs/catalog/blocks/x-post.mdx
index 3e07e60718..74495868e7 100644
--- a/docs/catalog/blocks/x-post.mdx
+++ b/docs/catalog/blocks/x-post.mdx
@@ -3,34 +3,474 @@ title: "X Post Card"
description: "Animated X/Twitter post card overlay with engagement metrics"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add x-post
-```
+
That writes one file: `compositions/x-post.html`.
-## Add it to your video
+## Source
+
+
+
+```html
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Hyperframes
+
+
+
+
+ @hyperframes
+
+
+
+
+
+
+
+
+ Prompt to replace this text with your tweet. Change the display name, handle, timestamp,
+ and engagement counts to match your content. #YourHashtag
+
+
+
+
1:10 PM · Apr 7, 2026
+
+
+
+
+
+
+
+
+
+ 34
+
+
+
+
+
+
+
+ 2.3K
+
+
+
+
+
+
+
+ 10.9K
+
+
+
+
+
+
+
+ 150K
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
+
+```
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/yt-comment-card.mdx b/docs/catalog/blocks/yt-comment-card.mdx
index 281ceefbaa..2a61283fd6 100644
--- a/docs/catalog/blocks/yt-comment-card.mdx
+++ b/docs/catalog/blocks/yt-comment-card.mdx
@@ -3,13 +3,13 @@ title: "Comment Cards"
description: "Social comments typing on over footage: avatar pop, username and time, per-character typewriter, likes row; image avatars or initials chips"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add yt-comment-card
-```
+
That writes one file: `compositions/yt-comment-card.html`.
@@ -32,6 +32,333 @@ It runs for 8 seconds at 1920×1080. Paste this into your composition:
Move it in time with `data-start`. Put it on a different timeline row with
`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+## Source
+
+
+
+```html
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
{/* hf:generated-footer */}
Tagged `social` `comments` `creator` `overlay`.
diff --git a/docs/catalog/blocks/yt-lcd-background.mdx b/docs/catalog/blocks/yt-lcd-background.mdx
index dc0d8c5053..3c576900c6 100644
--- a/docs/catalog/blocks/yt-lcd-background.mdx
+++ b/docs/catalog/blocks/yt-lcd-background.mdx
@@ -3,13 +3,13 @@ title: "Scanline Board Background"
description: "Textured paper board: scanlines with slow drift, optional pixel grid, static grain, and display text with a blur-focus entrance and chromatic-fringe title"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add yt-lcd-background
-```
+
That writes one file: `compositions/yt-lcd-background.html`.
@@ -32,6 +32,321 @@ It runs for 10 seconds at 1920×1080. Paste this into your composition:
Move it in time with `data-start`. Put it on a different timeline row with
`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+## Source
+
+
+
+```html
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
{/* hf:generated-footer */}
Tagged `background` `texture` `creator`.
diff --git a/docs/catalog/blocks/yt-logo-intro.mdx b/docs/catalog/blocks/yt-logo-intro.mdx
index 31341d3870..e46b565f48 100644
--- a/docs/catalog/blocks/yt-logo-intro.mdx
+++ b/docs/catalog/blocks/yt-logo-intro.mdx
@@ -3,13 +3,13 @@ title: "Logo Intro Sequence"
description: "Logo stamp pops on a lined board, a kicker line gives way to the title with an accent arrow chip; seeded line distortion"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add yt-logo-intro
-```
+
That writes one file: `compositions/yt-logo-intro.html`.
@@ -32,6 +32,266 @@ It runs for 6 seconds at 1920×1080. Paste this into your composition:
Move it in time with `data-start`. Put it on a different timeline row with
`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+## Source
+
+
+
+```html
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
{/* hf:generated-footer */}
Tagged `logo` `intro` `creator`.
diff --git a/docs/catalog/blocks/yt-lower-third.mdx b/docs/catalog/blocks/yt-lower-third.mdx
index 8356c59fa5..1b776536a7 100644
--- a/docs/catalog/blocks/yt-lower-third.mdx
+++ b/docs/catalog/blocks/yt-lower-third.mdx
@@ -3,34 +3,274 @@ title: "YouTube Lower Third"
description: "Animated YouTube subscribe lower third with avatar and channel info"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add yt-lower-third
-```
+
That writes `compositions/yt-lower-third.html`, plus 1 supporting file under `assets/`.
-## Add it to your video
+## Source
+
+
+
+```html
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
HeyGen
+
82.2K subscribers
+
+
+ Subscribe
+
+
+ Subscribed
+
+
+
+
-```html index.html
-
+
+
+
```
-Move it in time with `data-start`. Put it on a different timeline row with
-`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
+
+```
{/* hf:generated-footer */}
diff --git a/docs/catalog/blocks/yt-prism-title.mdx b/docs/catalog/blocks/yt-prism-title.mdx
index 5148a4afbb..c7c3c33162 100644
--- a/docs/catalog/blocks/yt-prism-title.mdx
+++ b/docs/catalog/blocks/yt-prism-title.mdx
@@ -3,13 +3,13 @@ title: "Chromatic Fringe Title"
description: "Display title on a transparent root: blur-focus entrance, red/blue fringe that settles then breathes, perspective bow, slow scale drift"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add yt-prism-title
-```
+
That writes one file: `compositions/yt-prism-title.html`.
@@ -32,6 +32,219 @@ It runs for 6 seconds at 1920×1080. Paste this into your composition:
Move it in time with `data-start`. Put it on a different timeline row with
`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+## Source
+
+
+
+```html
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
{/* hf:generated-footer */}
Tagged `typography` `title-card` `creator`.
diff --git a/docs/catalog/blocks/yt-vertical-fill.mdx b/docs/catalog/blocks/yt-vertical-fill.mdx
index 429ea95c20..bde21374b1 100644
--- a/docs/catalog/blocks/yt-vertical-fill.mdx
+++ b/docs/catalog/blocks/yt-vertical-fill.mdx
@@ -3,13 +3,13 @@ title: "Vertical Media Filler"
description: "Portrait media filling a widescreen frame via blurred-scale, mirror, or copy side fills; grid texture and foreground contrast lift (images inside the block; keep live footage in the host)"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add yt-vertical-fill
-```
+
That writes one file: `compositions/yt-vertical-fill.html`.
@@ -32,6 +32,243 @@ It runs for 8 seconds at 1920×1080. Paste this into your composition:
Move it in time with `data-start`. Put it on a different timeline row with
`data-track-index`. See [data attributes](/concepts/data-attributes) for the rest.
+## Source
+
+
+
+```html
+
+
+
+
+
+
+
+
+
A prompt composer expands into a generated dashboard preview.
+
Generate scene
+
Refine motion
+
Export
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Usage
+
+Open `compositions/components/ai-generation-canvas.html` and paste its contents into your composition. See the comment header in the file for timeline integration guidance.
+
+{/* hf:generated-footer */}
+
+Tagged `showcase` `remocn-port` `ai`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/ai-prompt-flow.mdx b/docs/catalog/components/ai-prompt-flow.mdx
new file mode 100644
index 0000000000..661a89e626
--- /dev/null
+++ b/docs/catalog/components/ai-prompt-flow.mdx
@@ -0,0 +1,140 @@
+---
+title: "AI Prompt Flow"
+description: "A composed AI prompt flow with prompt field, suggestion chips, generate action, and preview result card"
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/ai-prompt-flow.html`.
+
+## Source
+
+
+
+```html
+
+
+
+
+ Prompt
+
Create a launch video for our new feature
+
+ fast cutscaptionsproduct UI
+
+
+
+
+ Preview ready18 scenes matched
+
+
+
+
+
+
+```
+
+
+
+## Usage
+
+Open `compositions/components/ai-prompt-flow.html` and paste its contents into your composition. See the comment header in the file for detailed instructions.
+
+{/* hf:generated-footer */}
+
+Tagged `ui-flow` `remocn-port` `ai` `prompt`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/animated-bar-chart.mdx b/docs/catalog/components/animated-bar-chart.mdx
new file mode 100644
index 0000000000..bd27d5c76a
--- /dev/null
+++ b/docs/catalog/components/animated-bar-chart.mdx
@@ -0,0 +1,135 @@
+---
+title: "Animated Bar Chart"
+description: "A compact data card with deterministic bar growth and value callouts."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/animated-bar-chart.html`.
+
+## Source
+
+
+
+```html
+
+
+
+
+
+
Animated Bar Chart
+
A compact data card with deterministic bar growth and value callouts.
+
+ +42%
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Usage
+
+Open `compositions/components/animated-bar-chart.html` and paste its contents into your composition. See the comment header in the file for timeline integration guidance.
+
+{/* hf:generated-footer */}
+
+Tagged `data` `remocn-port`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/arc-motion-path.mdx b/docs/catalog/components/arc-motion-path.mdx
new file mode 100644
index 0000000000..94909d3570
--- /dev/null
+++ b/docs/catalog/components/arc-motion-path.mdx
@@ -0,0 +1,136 @@
+---
+title: "Arc Motion Path"
+description: "A GSAP MotionPath primitive that flies a callout along a curved arc with autorotation."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/arc-motion-path.html`.
+
+## Source
+
+
+
+```html
+
+
+
+
+
Arc Motion Path
+
Plan
+
Render
+
+
+
+
+
+```
+
+
+
+## Usage
+
+Open `compositions/components/arc-motion-path.html` and paste its contents into your composition. The comment header describes the timeline integration and any optional dependency setup.
+
+{/* hf:generated-footer */}
+
+Tagged `video-primitive` `motionpath` `gsap-plugin` `hyperframes-native`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/ascii-render-pass.mdx b/docs/catalog/components/ascii-render-pass.mdx
new file mode 100644
index 0000000000..ea241ec650
--- /dev/null
+++ b/docs/catalog/components/ascii-render-pass.mdx
@@ -0,0 +1,527 @@
+---
+title: "ASCII Render Pass"
+description: "A slotted scene renders as live ASCII: a canvas samples the source's luminance grid (rasterized once at mount) and draws glyphs from a density ramp charset; resolution steps coarse to fine as the piece resolves, then holds legible-fine."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html ascii-render-pass.html
+
+
+
+
+
+ ASCII Render Pass
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/ascii-render-pass.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/ascii-render-pass.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `motion-primitive` `experiment` `texture` `ascii` `quantize`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/ascii-trail-reveal.mdx b/docs/catalog/components/ascii-trail-reveal.mdx
new file mode 100644
index 0000000000..faf562313e
--- /dev/null
+++ b/docs/catalog/components/ascii-trail-reveal.mdx
@@ -0,0 +1,422 @@
+---
+title: "ASCII Trail Reveal"
+description: "An authored S-curve sweeps through a deterministic ASCII grid, flipping cells away to reveal a labeled panel."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html ascii-trail-reveal.html
+
+
+
+
+
+ ASCII Trail Reveal
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/ascii-trail-reveal.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/ascii-trail-reveal.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `motion-primitive` `intro` `reveal` `ascii` `trail` `grid`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/aurora-drift.mdx b/docs/catalog/components/aurora-drift.mdx
new file mode 100644
index 0000000000..2b6741328d
--- /dev/null
+++ b/docs/catalog/components/aurora-drift.mdx
@@ -0,0 +1,277 @@
+---
+title: "Aurora Drift"
+description: "Three soft accent-derived aurora fields drift in an exact ambient loop over a deep base and faint vignette."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html aurora-drift.html
+
+
+
+
+
+ Aurora Drift
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/aurora-drift.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/aurora-drift.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `motion-primitive` `background` `aurora` `gradient` `ambient` `loopable`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/avatar-cloud.mdx b/docs/catalog/components/avatar-cloud.mdx
new file mode 100644
index 0000000000..b249c3e7e8
--- /dev/null
+++ b/docs/catalog/components/avatar-cloud.mdx
@@ -0,0 +1,512 @@
+---
+title: "Avatar Cloud"
+description: "Lettermark avatars populate a loose elliptical cloud while fine SVG links draw between the community and its central proof label."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html avatar-cloud.html
+
+
+
+
+
+ Avatar Cloud
+
+
+
+
+
+
+
+
+
+
+
+
+ Community
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/avatar-cloud.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/avatar-cloud.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `effects` `avatars` `community` `network` `social-proof` `prove`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/avatar-group-hover.mdx b/docs/catalog/components/avatar-group-hover.mdx
new file mode 100644
index 0000000000..91aaca26d0
--- /dev/null
+++ b/docs/catalog/components/avatar-group-hover.mdx
@@ -0,0 +1,138 @@
+---
+title: "Avatar Group Hover"
+description: "A distance-falloff avatar group lift with bouncy hover return"
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html avatar-group-hover.html
+
+
+
+ ABCD
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/avatar-group-hover.html`.
+
+## Usage
+
+Open `compositions/components/avatar-group-hover.html` and paste its contents into your composition. See the comment header in the file for detailed instructions.
+
+{/* hf:generated-footer */}
+
+Tagged `video-primitive` `transition-primitive` `transitions-dev-port` `avatar` `hover`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/badge-pop.mdx b/docs/catalog/components/badge-pop.mdx
new file mode 100644
index 0000000000..006cce5c2c
--- /dev/null
+++ b/docs/catalog/components/badge-pop.mdx
@@ -0,0 +1,187 @@
+---
+title: "Badge Pop"
+description: "A transitions.dev-inspired notification badge pop with elastic scale and count reveal"
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html badge-pop.html
+
+
+
+
+ 3
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/badge-pop.html`.
+
+## Usage
+
+Open `compositions/components/badge-pop.html` and paste its contents into your composition. See the comment header in the file for detailed instructions.
+
+{/* hf:generated-footer */}
+
+Tagged `video-primitive` `transition-primitive` `transitions-dev-port` `badge` `microinteraction`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/beat-accent.mdx b/docs/catalog/components/beat-accent.mdx
new file mode 100644
index 0000000000..a75593fe6a
--- /dev/null
+++ b/docs/catalog/components/beat-accent.mdx
@@ -0,0 +1,366 @@
+---
+title: "Beat Accent"
+description: "A single music-hit sting: impact flash, micro scale-pulse on the subject, immediate decay."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html beat-accent.html
+
+
+
+
+
+ Beat Accent
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/beat-accent.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/beat-accent.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `motion-primitive` `effects` `burst` `sting` `emphasize` `impact`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/beat-pulse-background.mdx b/docs/catalog/components/beat-pulse-background.mdx
new file mode 100644
index 0000000000..c07c342d04
--- /dev/null
+++ b/docs/catalog/components/beat-pulse-background.mdx
@@ -0,0 +1,250 @@
+---
+title: "Beat Pulse Background"
+description: "An accent-derived backdrop pulses its glow intensity and saturation on a deterministic, supplied beat grid."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html beat-pulse-background.html
+
+
+
+
+
+ Beat Pulse Background
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/beat-pulse-background.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/beat-pulse-background.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `motion-primitive` `background` `beat` `pulse` `rhythmic` `reactive`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/beat-timeline.mdx b/docs/catalog/components/beat-timeline.mdx
new file mode 100644
index 0000000000..b78601a977
--- /dev/null
+++ b/docs/catalog/components/beat-timeline.mdx
@@ -0,0 +1,330 @@
+---
+title: "Beat Timeline"
+description: "A paused master-timeline orchestration spine that pins titled beat rows to evenly spaced named labels. Each row enters on its label, holds with the sequence, then exits with the group."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html beat-timeline.html
+
+
+
+
+
+ Beat Timeline
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/beat-timeline.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/beat-timeline.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `orchestration` `transitions` `sequencing` `bridge` `timeline`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/before-after-wipe.mdx b/docs/catalog/components/before-after-wipe.mdx
new file mode 100644
index 0000000000..a6d9b92874
--- /dev/null
+++ b/docs/catalog/components/before-after-wipe.mdx
@@ -0,0 +1,520 @@
+---
+title: "Before After Wipe"
+description: "Two full-bleed content slots compare before and after states as a persistent divider wipes the after layer over the before layer and rests at a configurable split. Callers fill the named before/after slot panels; token-styled defaults render when a slot is left empty."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html before-after-wipe.html
+
+
+
+
+
+ Before After Wipe
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/before-after-wipe.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/before-after-wipe.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `prop` `ui-props` `compare` `holdable` `before-after` `wipe` `slots`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/blur-in.mdx b/docs/catalog/components/blur-in.mdx
new file mode 100644
index 0000000000..b702077f71
--- /dev/null
+++ b/docs/catalog/components/blur-in.mdx
@@ -0,0 +1,282 @@
+---
+title: "Blur In"
+description: "An Operator Black word-level content reveal that resolves its own text from controlled blur"
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html blur-in.html
+
+
+
+ Design
+ systems
+ for
+ video
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/blur-in.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/blur-in.html` and copy what is inside into your own composition.
+The file opens with a comment header that walks you through it.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `video-primitive` `remocn-port` `blur-in` `text-effect`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/blur-out-up.mdx b/docs/catalog/components/blur-out-up.mdx
new file mode 100644
index 0000000000..49e0d6e6f4
--- /dev/null
+++ b/docs/catalog/components/blur-out-up.mdx
@@ -0,0 +1,149 @@
+---
+title: "Blur Out Up"
+description: "Words arrive clean and depart upward with increasing blur for airy exits."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html blur-out-up.html
+
+
+
+ HELLO
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/blur-out-up.html`.
+
+## Usage
+
+Open `compositions/components/blur-out-up.html` and paste its contents into your composition. See the comment header in the file for detailed instructions.
+
+{/* hf:generated-footer */}
+
+Tagged `motion-primitive` `remocn-port` `typography`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/bottom-up-letters.mdx b/docs/catalog/components/bottom-up-letters.mdx
new file mode 100644
index 0000000000..a9908bd540
--- /dev/null
+++ b/docs/catalog/components/bottom-up-letters.mdx
@@ -0,0 +1,164 @@
+---
+title: "Bottom Up Letters"
+description: "Splits text into letters and reveals each glyph from below with deterministic staggered timing"
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/bottom-up-letters.html`.
+
+## Variables
+
+Every one of these has a default, so the piece works untouched. Set the ones you
+want to change on the element:
+
+| Variable | Default | Accepts | What it does |
+| --- | --- | --- | --- |
+| `unit` | `letter` | `letter`, `word` | What each animated span holds. Letter staggers glyph by glyph, word keeps whole words intact. |
+| `direction` | `up` | `up`, `down` | Where each span starts. Up starts below the baseline and rises, down starts above and drops. |
+| `travel` | `standard` | `close`, `standard`, `far` | How far each span starts from its resting position, from 0.45em to 1.5em. |
+
+Set them with `data-variable-values` on the element that mounts it. These are the
+defaults, so this behaves exactly like the preview above until you change one:
+
+```html wrap
+
+```
+
+## Source
+
+
+
+```html
+
+
+
+
+
+
+
+```
+
+
+
+## Usage
+
+Open `compositions/components/bottom-up-letters.html` and paste its contents into your composition. See the comment header in the file for detailed instructions.
+
+{/* hf:generated-footer */}
+
+Tagged `motion-primitive` `text` `letters` `reveal`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/browser-device-stage.mdx b/docs/catalog/components/browser-device-stage.mdx
new file mode 100644
index 0000000000..2d6ba78555
--- /dev/null
+++ b/docs/catalog/components/browser-device-stage.mdx
@@ -0,0 +1,690 @@
+---
+title: "Browser Device Stage"
+description: "A generic app surface in token-native device chrome (browser, window, or phone). The screen is a slot for caller img/video/HTML with a token-styled skeleton default; one settle entrance, a readable hold, and an optional screen swap."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html browser-device-stage.html
+
+
+
+
+
+ Browser Device Stage
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/browser-device-stage.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/browser-device-stage.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `stage` `product-demo` `device` `browser` `phone` `slot` `chrome`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/camera-rig-depth-stack.mdx b/docs/catalog/components/camera-rig-depth-stack.mdx
new file mode 100644
index 0000000000..6eee08f34b
--- /dev/null
+++ b/docs/catalog/components/camera-rig-depth-stack.mdx
@@ -0,0 +1,100 @@
+---
+title: "Camera Rig Depth Stack"
+description: "A 3D camera-rig-style card stack with depth, parallax, and focus shift."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/camera-rig-depth-stack.html`.
+
+## Source
+
+
+
+```html
+
+
+
+
+
+
Camera Rig Depth Stack
+
A 3D camera-rig-style card stack with depth, parallax, and focus shift.
+
+
+
+
+
+
+
+```
+
+
+
+## Usage
+
+Open `compositions/components/camera-rig-depth-stack.html` and paste its contents into your composition. The comment header describes the timeline integration and any optional dependency setup.
+
+{/* hf:generated-footer */}
+
+Tagged `advanced-motion` `hyperframes-native`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/camera-scan-gate.mdx b/docs/catalog/components/camera-scan-gate.mdx
new file mode 100644
index 0000000000..b8c5aa341a
--- /dev/null
+++ b/docs/catalog/components/camera-scan-gate.mdx
@@ -0,0 +1,564 @@
+---
+title: "Camera Scan Gate"
+description: "A camera and QR recognition moment with a viewfinder sweep, bracket lock, confirmation pulse, and verified next beat."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html camera-scan-gate.html
+
+
+
+
+
+ Camera Scan Gate
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/camera-scan-gate.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/camera-scan-gate.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `prop` `ui-props` `camera` `qr` `scan` `recognition` `interaction` `demonstrate`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/camera-shake.mdx b/docs/catalog/components/camera-shake.mdx
new file mode 100644
index 0000000000..68260927fe
--- /dev/null
+++ b/docs/catalog/components/camera-shake.mdx
@@ -0,0 +1,851 @@
+---
+title: "Camera Shake"
+description: "Procedural handheld, telephoto and rig camera shake for any wrapper: nine measured profiles with per-lens projection, closed-form and seek-safe"
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html camera-shake.html
+
+
+
+
+
+ Camera Shake
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ CAMERA
+ SHAKE
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
profile
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/camera-shake.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/camera-shake.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `camera` `shake` `handheld` `effect` `cinematic`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/caption-blend-difference.mdx b/docs/catalog/components/caption-blend-difference.mdx
index 91ef41d36d..ac17835bb8 100644
--- a/docs/catalog/components/caption-blend-difference.mdx
+++ b/docs/catalog/components/caption-blend-difference.mdx
@@ -3,23 +3,111 @@ title: "Blend Difference"
description: "Auto-inverting text using mix-blend-mode: difference — flips between white and black per-pixel against the background"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add caption-blend-difference
-```
+
That writes one file: `compositions/components/caption-blend-difference.html`.
-## Paste it into your composition
+## Source
+
+
+
+```html
+
+
+
+
+
+```
+
+
-Open `compositions/components/caption-blend-difference.html` and copy what is inside into your own composition.
-The file opens with a comment header that walks you through it.
+## Usage
-A component has no size or duration of its own. It takes both from the composition
-you paste it into.
+Open `compositions/components/caption-blend-difference.html` and paste its contents into your composition. See the comment header in the file for detailed instructions.
{/* hf:generated-footer */}
diff --git a/docs/catalog/components/caption-camera-follow.mdx b/docs/catalog/components/caption-camera-follow.mdx
new file mode 100644
index 0000000000..8375a2fbd5
--- /dev/null
+++ b/docs/catalog/components/caption-camera-follow.mdx
@@ -0,0 +1,473 @@
+---
+title: "Camera Follow Captions"
+description: "One sentence written across a world far larger than the frame. Each word is sized against everything already written, so the block grows geometrically and the camera pulls back at a steady rate to keep landing the new word at the same size. Old words stay lit and simply become small."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html caption-camera-follow.html
+
+
+
+
+
+ Camera Follow Captions
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/caption-camera-follow.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/caption-camera-follow.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `captions` `caption-style` `camera` `typography` `motion-primitive` `portrait`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/caption-clip-wipe.mdx b/docs/catalog/components/caption-clip-wipe.mdx
index d170381921..899362394e 100644
--- a/docs/catalog/components/caption-clip-wipe.mdx
+++ b/docs/catalog/components/caption-clip-wipe.mdx
@@ -3,22 +3,254 @@ title: "Clip Wipe"
description: "Left-to-right clip-path wipe reveal per word"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add caption-clip-wipe
-```
+
That writes one file: `compositions/components/caption-clip-wipe.html`.
-## Paste it into your composition
+## Source
+
+
+
+```html
+
+
+
+
+
+ Clip Wipe
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
-Open `compositions/components/caption-clip-wipe.html` and copy what is inside into your own composition.
+## Usage
-A component has no size or duration of its own. It takes both from the composition
-you paste it into.
+Open `compositions/components/caption-clip-wipe.html` and paste its contents into your composition. See the comment header in the file for detailed instructions.
{/* hf:generated-footer */}
diff --git a/docs/catalog/components/caption-editorial-emphasis.mdx b/docs/catalog/components/caption-editorial-emphasis.mdx
index b2111c041a..108551e9c6 100644
--- a/docs/catalog/components/caption-editorial-emphasis.mdx
+++ b/docs/catalog/components/caption-editorial-emphasis.mdx
@@ -3,22 +3,440 @@ title: "Editorial Emphasis"
description: "Dual-font system with dramatic size contrast for emphasis words"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add caption-editorial-emphasis
-```
+
That writes one file: `compositions/components/caption-editorial-emphasis.html`.
-## Paste it into your composition
+## Source
+
+
+
+```html
+
+
+
+
+
+ Editorial Emphasis
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
-Open `compositions/components/caption-editorial-emphasis.html` and copy what is inside into your own composition.
+## Usage
-A component has no size or duration of its own. It takes both from the composition
-you paste it into.
+Open `compositions/components/caption-editorial-emphasis.html` and paste its contents into your composition. See the comment header in the file for detailed instructions.
{/* hf:generated-footer */}
diff --git a/docs/catalog/components/caption-emoji-pop.mdx b/docs/catalog/components/caption-emoji-pop.mdx
index bbb8348b41..7e99b3a31c 100644
--- a/docs/catalog/components/caption-emoji-pop.mdx
+++ b/docs/catalog/components/caption-emoji-pop.mdx
@@ -3,22 +3,495 @@ title: "Emoji Pop"
description: "Emoji integration with stroked text and horizontal squeeze entrance"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add caption-emoji-pop
-```
+
That writes one file: `compositions/components/caption-emoji-pop.html`.
-## Paste it into your composition
+## Source
+
+
+
+```html
+
+
+
+
+
+ Emoji Pop
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
-Open `compositions/components/caption-emoji-pop.html` and copy what is inside into your own composition.
+## Usage
-A component has no size or duration of its own. It takes both from the composition
-you paste it into.
+Open `compositions/components/caption-emoji-pop.html` and paste its contents into your composition. See the comment header in the file for detailed instructions.
{/* hf:generated-footer */}
diff --git a/docs/catalog/components/caption-glitch-rgb.mdx b/docs/catalog/components/caption-glitch-rgb.mdx
index 1cc7a04383..d5a1b507ad 100644
--- a/docs/catalog/components/caption-glitch-rgb.mdx
+++ b/docs/catalog/components/caption-glitch-rgb.mdx
@@ -3,22 +3,357 @@ title: "Glitch RGB"
description: "RGB chromatic aberration with CRT scanline overlay"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add caption-glitch-rgb
-```
+
That writes one file: `compositions/components/caption-glitch-rgb.html`.
-## Paste it into your composition
+## Source
+
+
+
+```html
+
+
+
+
+
+ Glitch RGB
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
-Open `compositions/components/caption-glitch-rgb.html` and copy what is inside into your own composition.
+## Usage
-A component has no size or duration of its own. It takes both from the composition
-you paste it into.
+Open `compositions/components/caption-glitch-rgb.html` and paste its contents into your composition. See the comment header in the file for detailed instructions.
{/* hf:generated-footer */}
diff --git a/docs/catalog/components/caption-gradient-fill.mdx b/docs/catalog/components/caption-gradient-fill.mdx
index fcc64ac141..46fe995e37 100644
--- a/docs/catalog/components/caption-gradient-fill.mdx
+++ b/docs/catalog/components/caption-gradient-fill.mdx
@@ -3,22 +3,247 @@ title: "Gradient Fill"
description: "Gradient-clipped text with elastic bounce entrance"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add caption-gradient-fill
-```
+
That writes one file: `compositions/components/caption-gradient-fill.html`.
-## Paste it into your composition
+## Source
+
+
+
+```html
+
+
+
+
+
+ Gradient Fill
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
-Open `compositions/components/caption-gradient-fill.html` and copy what is inside into your own composition.
+## Usage
-A component has no size or duration of its own. It takes both from the composition
-you paste it into.
+Open `compositions/components/caption-gradient-fill.html` and paste its contents into your composition. See the comment header in the file for detailed instructions.
{/* hf:generated-footer */}
diff --git a/docs/catalog/components/caption-highlight.mdx b/docs/catalog/components/caption-highlight.mdx
index 3f3ad6e607..4bedd279b1 100644
--- a/docs/catalog/components/caption-highlight.mdx
+++ b/docs/catalog/components/caption-highlight.mdx
@@ -3,22 +3,289 @@ title: "Highlight"
description: "Red background sweep behind each active word, TikTok-style"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add caption-highlight
-```
+
That writes one file: `compositions/components/caption-highlight.html`.
-## Paste it into your composition
+## Source
+
+
+
+```html
+
+
+
+
+
+ Highlight
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
-Open `compositions/components/caption-highlight.html` and copy what is inside into your own composition.
+## Usage
-A component has no size or duration of its own. It takes both from the composition
-you paste it into.
+Open `compositions/components/caption-highlight.html` and paste its contents into your composition. See the comment header in the file for detailed instructions.
{/* hf:generated-footer */}
diff --git a/docs/catalog/components/caption-kinetic-slam.mdx b/docs/catalog/components/caption-kinetic-slam.mdx
index efb32ef2c7..339c9ca830 100644
--- a/docs/catalog/components/caption-kinetic-slam.mdx
+++ b/docs/catalog/components/caption-kinetic-slam.mdx
@@ -3,22 +3,222 @@ title: "Kinetic Slam"
description: "Full-screen single-word display with alternating entrance directions"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add caption-kinetic-slam
-```
+
That writes one file: `compositions/components/caption-kinetic-slam.html`.
-## Paste it into your composition
+## Source
+
+
+
+```html
+
+
+
+
+
+ Kinetic Slam
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
-Open `compositions/components/caption-kinetic-slam.html` and copy what is inside into your own composition.
+## Usage
-A component has no size or duration of its own. It takes both from the composition
-you paste it into.
+Open `compositions/components/caption-kinetic-slam.html` and paste its contents into your composition. See the comment header in the file for detailed instructions.
{/* hf:generated-footer */}
diff --git a/docs/catalog/components/caption-matrix-decode.mdx b/docs/catalog/components/caption-matrix-decode.mdx
index d363539901..5edb6d815e 100644
--- a/docs/catalog/components/caption-matrix-decode.mdx
+++ b/docs/catalog/components/caption-matrix-decode.mdx
@@ -3,22 +3,278 @@ title: "Matrix Decode"
description: "Character scramble animation before text reveal"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add caption-matrix-decode
-```
+
That writes one file: `compositions/components/caption-matrix-decode.html`.
-## Paste it into your composition
+## Source
+
+
+
+```html
+
+
+
+
+
+ Matrix Decode
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
-Open `compositions/components/caption-matrix-decode.html` and copy what is inside into your own composition.
+## Usage
-A component has no size or duration of its own. It takes both from the composition
-you paste it into.
+Open `compositions/components/caption-matrix-decode.html` and paste its contents into your composition. See the comment header in the file for detailed instructions.
{/* hf:generated-footer */}
diff --git a/docs/catalog/components/caption-neon-accent.mdx b/docs/catalog/components/caption-neon-accent.mdx
index 1ab8619c42..5398518432 100644
--- a/docs/catalog/components/caption-neon-accent.mdx
+++ b/docs/catalog/components/caption-neon-accent.mdx
@@ -3,22 +3,542 @@ title: "Neon Accent"
description: "Multi-color neon glow accents with wiggle drift animation"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add caption-neon-accent
-```
+
That writes one file: `compositions/components/caption-neon-accent.html`.
-## Paste it into your composition
+## Source
+
+
+
+```html
+
+
+
+
+
+ Neon Accent
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
-Open `compositions/components/caption-neon-accent.html` and copy what is inside into your own composition.
+## Usage
-A component has no size or duration of its own. It takes both from the composition
-you paste it into.
+Open `compositions/components/caption-neon-accent.html` and paste its contents into your composition. See the comment header in the file for detailed instructions.
{/* hf:generated-footer */}
diff --git a/docs/catalog/components/caption-neon-glow.mdx b/docs/catalog/components/caption-neon-glow.mdx
index 54302cbcfa..a28806b4c2 100644
--- a/docs/catalog/components/caption-neon-glow.mdx
+++ b/docs/catalog/components/caption-neon-glow.mdx
@@ -3,22 +3,244 @@ title: "Neon Glow"
description: "Cyan and magenta neon glow with keyword accent colors"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add caption-neon-glow
-```
+
That writes one file: `compositions/components/caption-neon-glow.html`.
-## Paste it into your composition
+## Source
+
+
+
+```html
+
+
+
+
+
+ Neon Glow
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
-Open `compositions/components/caption-neon-glow.html` and copy what is inside into your own composition.
+## Usage
-A component has no size or duration of its own. It takes both from the composition
-you paste it into.
+Open `compositions/components/caption-neon-glow.html` and paste its contents into your composition. See the comment header in the file for detailed instructions.
{/* hf:generated-footer */}
diff --git a/docs/catalog/components/caption-parallax-layers.mdx b/docs/catalog/components/caption-parallax-layers.mdx
index d0ae48c6ad..414afcb563 100644
--- a/docs/catalog/components/caption-parallax-layers.mdx
+++ b/docs/catalog/components/caption-parallax-layers.mdx
@@ -3,22 +3,383 @@ title: "Parallax Layers"
description: "Behind-subject 3D text layering with vertical stretch effect"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add caption-parallax-layers
-```
+
That writes one file: `compositions/components/caption-parallax-layers.html`.
-## Paste it into your composition
+## Source
+
+
+
+```html
+
+
+
+
+
+ Parallax Layers
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
-Open `compositions/components/caption-parallax-layers.html` and copy what is inside into your own composition.
+## Usage
-A component has no size or duration of its own. It takes both from the composition
-you paste it into.
+Open `compositions/components/caption-parallax-layers.html` and paste its contents into your composition. See the comment header in the file for detailed instructions.
{/* hf:generated-footer */}
diff --git a/docs/catalog/components/caption-particle-burst.mdx b/docs/catalog/components/caption-particle-burst.mdx
index 898ea1e0ee..04e8727ca5 100644
--- a/docs/catalog/components/caption-particle-burst.mdx
+++ b/docs/catalog/components/caption-particle-burst.mdx
@@ -3,22 +3,324 @@ title: "Particle Burst"
description: "Keyword words trigger colored particle explosions"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add caption-particle-burst
-```
+
That writes one file: `compositions/components/caption-particle-burst.html`.
-## Paste it into your composition
+## Source
+
+
+
+```html
+
+
+
+
+
+ Particle Burst
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
-Open `compositions/components/caption-particle-burst.html` and copy what is inside into your own composition.
+## Usage
-A component has no size or duration of its own. It takes both from the composition
-you paste it into.
+Open `compositions/components/caption-particle-burst.html` and paste its contents into your composition. See the comment header in the file for detailed instructions.
{/* hf:generated-footer */}
diff --git a/docs/catalog/components/caption-pill-karaoke.mdx b/docs/catalog/components/caption-pill-karaoke.mdx
index 09f5b0db51..9ca387016d 100644
--- a/docs/catalog/components/caption-pill-karaoke.mdx
+++ b/docs/catalog/components/caption-pill-karaoke.mdx
@@ -3,22 +3,410 @@ title: "Pill Karaoke"
description: "Pill-shaped container with per-word karaoke color highlight"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add caption-pill-karaoke
-```
+
That writes one file: `compositions/components/caption-pill-karaoke.html`.
-## Paste it into your composition
+## Source
+
+
+
+```html
+
+
+
+
+
+ Pill Karaoke
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
-Open `compositions/components/caption-pill-karaoke.html` and copy what is inside into your own composition.
+## Usage
-A component has no size or duration of its own. It takes both from the composition
-you paste it into.
+Open `compositions/components/caption-pill-karaoke.html` and paste its contents into your composition. See the comment header in the file for detailed instructions.
{/* hf:generated-footer */}
diff --git a/docs/catalog/components/caption-texture.mdx b/docs/catalog/components/caption-texture.mdx
index b771c36574..6ff7bb17ce 100644
--- a/docs/catalog/components/caption-texture.mdx
+++ b/docs/catalog/components/caption-texture.mdx
@@ -3,22 +3,240 @@ title: "Texture"
description: "Flowing texture mask over large uppercase text — ships with 6 textures (lava, marble, metal, wood, concrete, rock), configurable via the texture variable"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
-## Install
+
+
+```html caption-texture.html
+
+
+
+
+
+ Texture
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
```
-That writes `compositions/components/caption-texture.html`, plus 6 supporting files under `compositions/components/`.
+
+
+## Install
-## Paste it into your composition
+
+
+That writes `compositions/components/caption-texture.html`, plus 6 supporting files under `compositions/components/`.
-Open `compositions/components/caption-texture.html` and copy what is inside into your own composition.
+## Usage
-A component has no size or duration of its own. It takes both from the composition
-you paste it into.
+Open `compositions/components/caption-texture.html` and paste its contents into your composition. See the comment header in the file for detailed instructions.
{/* hf:generated-footer */}
diff --git a/docs/catalog/components/caption-weight-shift.mdx b/docs/catalog/components/caption-weight-shift.mdx
index 90b91b5e5d..633a3e7a12 100644
--- a/docs/catalog/components/caption-weight-shift.mdx
+++ b/docs/catalog/components/caption-weight-shift.mdx
@@ -3,22 +3,425 @@ title: "Weight Shift"
description: "Elegant font-weight transition between caption lines"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add caption-weight-shift
-```
+
That writes one file: `compositions/components/caption-weight-shift.html`.
-## Paste it into your composition
+## Source
+
+
+
+```html
+
+
+
+
+
+ Weight Shift
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
-Open `compositions/components/caption-weight-shift.html` and copy what is inside into your own composition.
+## Usage
-A component has no size or duration of its own. It takes both from the composition
-you paste it into.
+Open `compositions/components/caption-weight-shift.html` and paste its contents into your composition. See the comment header in the file for detailed instructions.
{/* hf:generated-footer */}
diff --git a/docs/catalog/components/card-resize.mdx b/docs/catalog/components/card-resize.mdx
new file mode 100644
index 0000000000..03aaa00c5c
--- /dev/null
+++ b/docs/catalog/components/card-resize.mdx
@@ -0,0 +1,215 @@
+---
+title: "Card Resize"
+description: "A transitions.dev-inspired card resize primitive that expands a compact card into a detail panel"
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html card-resize.html
+
+
+
+
+
+ Project status
+ Ready to render
+
All scenes validated and queued for export.
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/card-resize.html`.
+
+## Usage
+
+Open `compositions/components/card-resize.html` and paste its contents into your composition. See the comment header in the file for detailed instructions.
+
+{/* hf:generated-footer */}
+
+Tagged `video-primitive` `transition-primitive` `transitions-dev-port` `card` `layout`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/char-slam-explode.mdx b/docs/catalog/components/char-slam-explode.mdx
new file mode 100644
index 0000000000..aa87c639df
--- /dev/null
+++ b/docs/catalog/components/char-slam-explode.mdx
@@ -0,0 +1,380 @@
+---
+title: "Char Slam Explode"
+description: "Headline glyphs hold in a deterministic scatter, then reassemble with an overshooting slam and a three-frame landing shake."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html char-slam-explode.html
+
+
+
+
+
+ Char Slam Explode
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/char-slam-explode.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/char-slam-explode.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `motion-primitive` `typography` `text-treatment` `scatter` `slam` `impact`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/chart-story.mdx b/docs/catalog/components/chart-story.mdx
new file mode 100644
index 0000000000..41530d0713
--- /dev/null
+++ b/docs/catalog/components/chart-story.mdx
@@ -0,0 +1,781 @@
+---
+title: "Chart Story"
+description: "One chart builds from data in reading order and lands the exact supplied values: staggered bars, a left-to-right line with area fill, a sweeping donut, or filling progress bars, with an accented value callout on the emphasized datum."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html chart-story.html
+
+
+
+
+
+ Chart Story
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/chart-story.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/chart-story.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `motion-primitive` `proof` `stats` `chart` `bars` `line` `donut` `progress` `deterministic`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/checkout-flow.mdx b/docs/catalog/components/checkout-flow.mdx
new file mode 100644
index 0000000000..2cb80558cd
--- /dev/null
+++ b/docs/catalog/components/checkout-flow.mdx
@@ -0,0 +1,126 @@
+---
+title: "Checkout Flow"
+description: "A composed checkout flow with plan summary, payment field rows, total, and purchase action"
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/checkout-flow.html`.
+
+## Source
+
+
+
+```html
+
+
+
+
Pro plan$29/mo
+
+
Card number 4242 4242 4242 4242
+
Expiry 12/30
+
+
Total today$29.00
+
+
+
+
+
+
+```
+
+
+
+## Usage
+
+Open `compositions/components/checkout-flow.html` and paste its contents into your composition. See the comment header in the file for detailed instructions.
+
+{/* hf:generated-footer */}
+
+Tagged `ui-flow` `remocn-port` `checkout` `commerce`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/chromatic-aberration-wipe.mdx b/docs/catalog/components/chromatic-aberration-wipe.mdx
new file mode 100644
index 0000000000..be4d1e2a85
--- /dev/null
+++ b/docs/catalog/components/chromatic-aberration-wipe.mdx
@@ -0,0 +1,204 @@
+---
+title: "Chromatic Aberration Wipe"
+description: "A fast slide wipe with RGB channel split on peak frames."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html chromatic-aberration-wipe.html
+
+
+
+
Before
+
Chromatic Aberration Wipe
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/chromatic-aberration-wipe.html`.
+
+## Usage
+
+Open `compositions/components/chromatic-aberration-wipe.html` and paste its contents into your composition. See the comment header in the file for timeline integration guidance.
+
+{/* hf:generated-footer */}
+
+Tagged `video-primitive` `transition-primitive` `remocn-port`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/code-terminal-run.mdx b/docs/catalog/components/code-terminal-run.mdx
new file mode 100644
index 0000000000..f8e81914e8
--- /dev/null
+++ b/docs/catalog/components/code-terminal-run.mdx
@@ -0,0 +1,602 @@
+---
+title: "Code Terminal Run"
+description: "A token-chrome terminal panel runs one command: the prompt line types deterministically behind an integer-cycle caret, executes after a beat, and output lines print one per cue before a fresh prompt appears."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html code-terminal-run.html
+
+
+
+
+
+ Code Terminal Run
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ run build src/app
+ --minify--out
+ "dist/app"
+
+
+ - resolving 128 modules
+
+
+ - bundling src/app
+
+
+ ok 128 modules in 412 ms
+
+
+ ok wrote dist/app
+ (96 kB)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/code-terminal-run.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/code-terminal-run.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `motion-primitive` `product-demo` `terminal` `typing` `deterministic`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/comparison-split.mdx b/docs/catalog/components/comparison-split.mdx
new file mode 100644
index 0000000000..337338c79c
--- /dev/null
+++ b/docs/catalog/components/comparison-split.mdx
@@ -0,0 +1,491 @@
+---
+title: "Comparison Split"
+description: "Two full-bleed panels compare before and after states as a persistent divider wipes the vivid after layer over the muted before layer and rests at a configurable split."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html comparison-split.html
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/comparison-split.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/comparison-split.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `prop` `ui-props` `compare` `holdable` `before-after` `wipe`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/confetti.mdx b/docs/catalog/components/confetti.mdx
new file mode 100644
index 0000000000..ee54f25564
--- /dev/null
+++ b/docs/catalog/components/confetti.mdx
@@ -0,0 +1,164 @@
+---
+title: "Confetti"
+description: "A deterministic celebration burst with seeded particles and gravity."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/confetti.html`.
+
+## Source
+
+
+
+```html
+
+
+
+
+
+
+
+
Confetti
+
A deterministic celebration burst with seeded particles and gravity.
+
+
+
+
+
+
+
+
+```
+
+
+
+## Usage
+
+Open `compositions/components/confetti.html` and paste its contents into your composition. See the comment header in the file for timeline integration guidance.
+
+{/* hf:generated-footer */}
+
+Tagged `effect` `remocn-port`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/conic-progress-ring.mdx b/docs/catalog/components/conic-progress-ring.mdx
new file mode 100644
index 0000000000..f207319502
--- /dev/null
+++ b/docs/catalog/components/conic-progress-ring.mdx
@@ -0,0 +1,277 @@
+---
+title: "Conic Progress Ring"
+description: "A token-driven conic progress ring whose angular fill and center count settle together from one registered percentage."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html conic-progress-ring.html
+
+
+
+
+
+ Conic Progress Ring
+
+
+
+
+
+
+
+
+
+
0
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/conic-progress-ring.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/conic-progress-ring.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `data` `progress` `ring` `conic-gradient` `prove` `demonstrate`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/constellation-hub.mdx b/docs/catalog/components/constellation-hub.mdx
new file mode 100644
index 0000000000..3312a3c33b
--- /dev/null
+++ b/docs/catalog/components/constellation-hub.mdx
@@ -0,0 +1,469 @@
+---
+title: "Constellation Hub"
+description: "Feature nodes brighten in narration order as real-length SVG connectors draw outward from a fixed central hub, then settle into one lockup."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html constellation-hub.html
+
+
+
+
+
+ Constellation Hub
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/constellation-hub.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/constellation-hub.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `motion-primitive` `feature-tour` `hub` `nodes` `connector` `reveal`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/count-up.mdx b/docs/catalog/components/count-up.mdx
new file mode 100644
index 0000000000..6a22f8b944
--- /dev/null
+++ b/docs/catalog/components/count-up.mdx
@@ -0,0 +1,339 @@
+---
+title: "Count Up"
+description: "A token-native stat counter that eases between values and lands with a restrained scale pulse."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html count-up.html
+
+
+
+
+
+ Count Up
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/count-up.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/count-up.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `motion-primitive` `proof` `stats` `counter` `number` `deterministic`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/cta-close.mdx b/docs/catalog/components/cta-close.mdx
new file mode 100644
index 0000000000..fcbd2dd910
--- /dev/null
+++ b/docs/catalog/components/cta-close.mdx
@@ -0,0 +1,306 @@
+---
+title: "CTA Close"
+description: "A display-scale action line lands per word and fills the frame with air, one generous CTA capsule pops beneath it with a single overshoot, and the finished close holds completely still."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html cta-close.html
+
+
+
+
+
+ CTA Close
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/cta-close.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/cta-close.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `motion-primitive` `ui-props` `cta` `end-card` `close` `ask`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/cta-lockup.mdx b/docs/catalog/components/cta-lockup.mdx
new file mode 100644
index 0000000000..b7f9d98b5c
--- /dev/null
+++ b/docs/catalog/components/cta-lockup.mdx
@@ -0,0 +1,300 @@
+---
+title: "CTA Lockup"
+description: "A canonical closing lockup that reveals an action line, pops in an accent CTA capsule, settles supporting microcopy, and holds with confidence."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html cta-lockup.html
+
+
+
+
+
+ CTA Lockup
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/cta-lockup.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/cta-lockup.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `motion-primitive` `ui-props` `cta` `end-card` `lockup` `ask`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/cursor-glyph-trail.mdx b/docs/catalog/components/cursor-glyph-trail.mdx
new file mode 100644
index 0000000000..9aa6a935c4
--- /dev/null
+++ b/docs/catalog/components/cursor-glyph-trail.mdx
@@ -0,0 +1,432 @@
+---
+title: "Cursor Glyph Trail"
+description: "An actor travels an authored path depositing small dithered glyphs at its past positions, each popping in and decaying in place, stamp rate scaling with the actor's velocity."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html cursor-glyph-trail.html
+
+
+
+
+
+ Cursor Glyph Trail
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/cursor-glyph-trail.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/cursor-glyph-trail.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `motion-primitive` `demonstrate` `trail` `cursor` `glyphs` `deterministic`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/cut-the-curve.mdx b/docs/catalog/components/cut-the-curve.mdx
new file mode 100644
index 0000000000..9e58c6b6db
--- /dev/null
+++ b/docs/catalog/components/cut-the-curve.mdx
@@ -0,0 +1,542 @@
+---
+title: "Cut the Curve"
+description: "A velocity-matched directional hard cut: the outgoing subject accelerates with power4.in, swaps at peak velocity, and the incoming subject continues in the same direction with power4.out."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html cut-the-curve.html
+
+
+
+
+
+ Cut the Curve
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/cut-the-curve.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/cut-the-curve.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `transition` `directional-cut` `velocity-match` `whip` `bridge` `demonstrate`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/decline-chart.mdx b/docs/catalog/components/decline-chart.mdx
new file mode 100644
index 0000000000..b7b83e3b95
--- /dev/null
+++ b/docs/catalog/components/decline-chart.mdx
@@ -0,0 +1,318 @@
+---
+title: "Decline Chart"
+description: "A metric line draws downward as its value counts down and the ambient background darkens in lockstep."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html decline-chart.html
+
+
+
+
+
+ Decline Chart
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/decline-chart.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/decline-chart.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `motion-primitive` `data` `chart` `decline` `metric` `problem`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/device-frame-stage.mdx b/docs/catalog/components/device-frame-stage.mdx
new file mode 100644
index 0000000000..9f03917d89
--- /dev/null
+++ b/docs/catalog/components/device-frame-stage.mdx
@@ -0,0 +1,508 @@
+---
+title: "Device Frame Stage"
+description: "A phone or tablet mockup staged as a physical scene prop with a screen slot for arbitrary reconstructed UI, rising onto the stage, settling, and holding an idle float"
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html device-frame-stage.html
+
+
+
+
+
+
+ Device Frame Stage
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/device-frame-stage.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/device-frame-stage.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `prop` `device` `mobile` `tablet` `ui-props` `holdable`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/directional-wipe.mdx b/docs/catalog/components/directional-wipe.mdx
new file mode 100644
index 0000000000..662b86dfaf
--- /dev/null
+++ b/docs/catalog/components/directional-wipe.mdx
@@ -0,0 +1,185 @@
+---
+title: "Directional Wipe"
+description: "A directional scene push that slides one panel over another."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html directional-wipe.html
+
+
+
+
Before
+
Directional Wipe
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/directional-wipe.html`.
+
+## Usage
+
+Open `compositions/components/directional-wipe.html` and paste its contents into your composition. See the comment header in the file for timeline integration guidance.
+
+{/* hf:generated-footer */}
+
+Tagged `transition-primitive` `remocn-port`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/drift-hold.mdx b/docs/catalog/components/drift-hold.mdx
new file mode 100644
index 0000000000..4d65ecc87c
--- /dev/null
+++ b/docs/catalog/components/drift-hold.mdx
@@ -0,0 +1,234 @@
+---
+title: "Drift Hold"
+description: "A centered content card stays subtly alive through loop-exact rotation, scale breathing, and a slow light sweep."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html drift-hold.html
+
+
+
+
+
+ Drift Hold
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/drift-hold.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/drift-hold.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `motion-primitive` `camera` `ambient` `drift` `hold` `loopable`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/dynamic-grid.mdx b/docs/catalog/components/dynamic-grid.mdx
new file mode 100644
index 0000000000..1b30423dfd
--- /dev/null
+++ b/docs/catalog/components/dynamic-grid.mdx
@@ -0,0 +1,143 @@
+---
+title: "Dynamic Grid"
+description: "A responsive animated grid background driven by CSS variables for SaaS, code, and data scenes"
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html dynamic-grid.html
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/dynamic-grid.html`.
+
+## Usage
+
+Open `compositions/components/dynamic-grid.html` and paste its contents into your composition. See the comment header in the file for detailed instructions.
+
+{/* hf:generated-footer */}
+
+Tagged `video-primitive` `motion-primitive` `background` `grid` `ui`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/echo-trail.mdx b/docs/catalog/components/echo-trail.mdx
new file mode 100644
index 0000000000..8851055d2a
--- /dev/null
+++ b/docs/catalog/components/echo-trail.mdx
@@ -0,0 +1,395 @@
+---
+title: "Echo Trail"
+description: "A moving element renders with N ghosted copies of itself at t minus i times delta, opacity stepped down per ghost; one traversal, echoes collapsing into the settled element at rest."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html echo-trail.html
+
+
+
+
+
+ Echo Trail
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/echo-trail.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/echo-trail.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `motion-primitive` `demonstrate` `trail` `onion-skin` `ghosts` `deterministic`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/facet-morph.mdx b/docs/catalog/components/facet-morph.mdx
new file mode 100644
index 0000000000..203f68dee8
--- /dev/null
+++ b/docs/catalog/components/facet-morph.mdx
@@ -0,0 +1,593 @@
+---
+title: "Facet Morph"
+description: "A faceted low-poly mass of 36 triangles continuously reshapes between three authored silhouettes (blob, mark, badge) with per-facet flat shading that recomputes as the vertices move. Light reads from the upper left; lit facets lift toward a pale accent-tinted tone while turned-away facets fall toward near-black. One calm continuous morph, then a settled hold."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html facet-morph.html
+
+
+
+
+
+ Facet Morph
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/facet-morph.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/facet-morph.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `motion-primitive` `intro` `morph` `low-poly` `svg` `deterministic`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/fade-through.mdx b/docs/catalog/components/fade-through.mdx
new file mode 100644
index 0000000000..b48dba0cd9
--- /dev/null
+++ b/docs/catalog/components/fade-through.mdx
@@ -0,0 +1,135 @@
+---
+title: "Fade Through"
+description: "A calm transition primitive that fades one layer out, passes through a wash, and reveals the next layer"
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html fade-through.html
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/fade-through.html`.
+
+## Usage
+
+Open `compositions/components/fade-through.html` and paste its contents into your composition. See the comment header in the file for detailed instructions.
+
+{/* hf:generated-footer */}
+
+Tagged `motion-primitive` `transition` `fade` `scene`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/focus-blur-resolve.mdx b/docs/catalog/components/focus-blur-resolve.mdx
new file mode 100644
index 0000000000..f3dbe02912
--- /dev/null
+++ b/docs/catalog/components/focus-blur-resolve.mdx
@@ -0,0 +1,130 @@
+---
+title: "Focus Blur Resolve"
+description: "A premium focus pull from heavy blur to crisp text, then a soft blur-out exit."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html focus-blur-resolve.html
+
+
+
+ Crystalclear
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/focus-blur-resolve.html`.
+
+## Usage
+
+Open `compositions/components/focus-blur-resolve.html` and paste its contents into your composition. See the comment header in the file for detailed instructions.
+
+{/* hf:generated-footer */}
+
+Tagged `motion-primitive` `remocn-port` `typography`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/focus-rack.mdx b/docs/catalog/components/focus-rack.mdx
new file mode 100644
index 0000000000..aae40876ea
--- /dev/null
+++ b/docs/catalog/components/focus-rack.mdx
@@ -0,0 +1,372 @@
+---
+title: "Focus Rack"
+description: "Focus shifts once between two cards at different apparent depths through synchronized blur, dimming, scale, and parallax."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html focus-rack.html
+
+
+
+
+
+ Focus Rack
+
+
+
+
+
+
+
+
+
+
+ Workspace
+ A
+
+
+
+
+
+
+
+
+
+
+
+ Workspace
+ B
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/focus-rack.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/focus-rack.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `motion-primitive` `camera` `focus` `focus-rack` `depth` `parallax` `emphasize`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/focus-swap.mdx b/docs/catalog/components/focus-swap.mdx
new file mode 100644
index 0000000000..1f18e3bb69
--- /dev/null
+++ b/docs/catalog/components/focus-swap.mdx
@@ -0,0 +1,323 @@
+---
+title: "Focus Swap"
+description: "Moves attention between two side-by-side cards as one recedes with scale, blur, and dimming while the other advances to full focus."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html focus-swap.html
+
+
+
+
+
+ Focus Swap
+
+
+
+
+
+
+
+
+
+
+ A
+ Plan
+
+
+
Shape the idea
+
Define the brief and align the team.
+
+
+
+
+
+
+
+
+ B
+ Launch
+
+
+
Ship the result
+
Move from approved work to live impact.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/focus-swap.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/focus-swap.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `effect` `ui-props` `focus` `blur` `attention` `demonstrate`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/gesture-tap.mdx b/docs/catalog/components/gesture-tap.mdx
new file mode 100644
index 0000000000..ab7ba80460
--- /dev/null
+++ b/docs/catalog/components/gesture-tap.mdx
@@ -0,0 +1,446 @@
+---
+title: "Gesture Tap"
+description: "A contact circle taps a mobile pill button, releases it into a new labeled accent state, and lifts away."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html gesture-tap.html
+
+
+
+
+
+ Gesture Tap
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/gesture-tap.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/gesture-tap.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `motion-primitive` `gesture` `tap` `interaction` `ui-props`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/gloss-sweep.mdx b/docs/catalog/components/gloss-sweep.mdx
new file mode 100644
index 0000000000..a2d267db6c
--- /dev/null
+++ b/docs/catalog/components/gloss-sweep.mdx
@@ -0,0 +1,255 @@
+---
+title: "Gloss Sweep"
+description: "A card lands with a restrained slam, catches one diagonal specular gloss, and holds perfectly still."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html gloss-sweep.html
+
+
+
+
+
+ Gloss Sweep
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/gloss-sweep.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/gloss-sweep.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `motion-primitive` `celebration` `gloss` `card` `badge` `payoff`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/grade-split-reveal.mdx b/docs/catalog/components/grade-split-reveal.mdx
new file mode 100644
index 0000000000..f2a59e0638
--- /dev/null
+++ b/docs/catalog/components/grade-split-reveal.mdx
@@ -0,0 +1,488 @@
+---
+title: "Grade Split Reveal"
+description: "The same picture twice, one flat and one finished, with a hard edge sweeping between them. It stops in the middle long enough to compare, then commits and the graded look takes the frame. Both looks are real HyperFrames color grading run through the WebGL shader, so the preview and the render match."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html grade-split-reveal.html
+
+
+
+
+
+ Grade Split Reveal
+
+
+
+
+
+
+
+
+
+
+
Ungraded
+
Warm Cinematic
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/grade-split-reveal.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/grade-split-reveal.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `color-grading` `media` `compare` `reveal` `motion-primitive` `grade`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/grain-field.mdx b/docs/catalog/components/grain-field.mdx
new file mode 100644
index 0000000000..10bb08e1b5
--- /dev/null
+++ b/docs/catalog/components/grain-field.mdx
@@ -0,0 +1,212 @@
+---
+title: "Grain Field"
+description: "A clearly visible accent-tinted dot field drifts over a subtle luminance gradient in an exact ambient loop."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html grain-field.html
+
+
+
+
+
+ Grain Field
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/grain-field.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/grain-field.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `motion-primitive` `background` `grain` `dots` `texture` `ambient` `loopable`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/grain-overlay.mdx b/docs/catalog/components/grain-overlay.mdx
index 20adf620fa..e28fae25d1 100644
--- a/docs/catalog/components/grain-overlay.mdx
+++ b/docs/catalog/components/grain-overlay.mdx
@@ -3,23 +3,103 @@ title: "Grain Overlay"
description: "Animated film grain texture overlay using CSS keyframes — adds warmth and analog character to any composition"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add grain-overlay
-```
+
That writes one file: `compositions/components/grain-overlay.html`.
-## Paste it into your composition
+## Source
+
+
+
+```html
+
+
+
+
+
+
+
+```
+
+
-Open `compositions/components/grain-overlay.html` and copy what is inside into your own composition.
-The file opens with a comment header that walks you through it.
+## Usage
-A component has no size or duration of its own. It takes both from the composition
-you paste it into.
+Open `compositions/components/grain-overlay.html` and paste its contents into your composition. See the comment header in the file for detailed instructions.
{/* hf:generated-footer */}
diff --git a/docs/catalog/components/grid-card-assemble.mdx b/docs/catalog/components/grid-card-assemble.mdx
new file mode 100644
index 0000000000..26411002c3
--- /dev/null
+++ b/docs/catalog/components/grid-card-assemble.mdx
@@ -0,0 +1,510 @@
+---
+title: "Grid Card Assemble"
+description: "N capability cards (thin-line icon that draws on, mono label, optional muted body) stagger-assemble into a grid or vertical list with a fade plus short slide into slot, then hold perfectly still."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html grid-card-assemble.html
+
+
+
+
+
+ Grid Card Assemble
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/grid-card-assemble.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/grid-card-assemble.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `motion-primitive` `layout` `grid` `list` `stagger` `assemble` `feature-tour`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/grid-pixelate-wipe.mdx b/docs/catalog/components/grid-pixelate-wipe.mdx
index 9ebe64c678..a49122a623 100644
--- a/docs/catalog/components/grid-pixelate-wipe.mdx
+++ b/docs/catalog/components/grid-pixelate-wipe.mdx
@@ -3,23 +3,108 @@ title: "Grid Pixelate Wipe"
description: "Transition effect where the screen dissolves into a grid of squares that fade out with staggered timing — use between scenes"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add grid-pixelate-wipe
-```
+
That writes one file: `compositions/components/grid-pixelate-wipe.html`.
-## Paste it into your composition
+## Source
+
+
+
+```html
+
+
+
+
+
+
+
+
+
+```
+
+
-Open `compositions/components/grid-pixelate-wipe.html` and copy what is inside into your own composition.
-The file opens with a comment header that walks you through it.
+## Usage
-A component has no size or duration of its own. It takes both from the composition
-you paste it into.
+Open `compositions/components/grid-pixelate-wipe.html` and paste its contents into your composition. See the comment header in the file for detailed instructions.
{/* hf:generated-footer */}
diff --git a/docs/catalog/components/halftone-dissolve.mdx b/docs/catalog/components/halftone-dissolve.mdx
new file mode 100644
index 0000000000..fdf3eceab0
--- /dev/null
+++ b/docs/catalog/components/halftone-dissolve.mdx
@@ -0,0 +1,462 @@
+---
+title: "Halftone Dissolve"
+description: "Scene A dissolves into scene B through a growing halftone dot field: accent ink dots pop onto a fixed grid smallest-first, each opens into a window onto B, until the windows merge and B fully replaces A."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html halftone-dissolve.html
+
+
+
+
+
+ Halftone Dissolve
+
+
+
+
+
+
+
+
+
+
+ A
+
+
+
+
+
+ B
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/halftone-dissolve.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/halftone-dissolve.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `motion-primitive` `transition` `texture` `halftone` `dissolve`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/headline-slam.mdx b/docs/catalog/components/headline-slam.mdx
new file mode 100644
index 0000000000..1666ff4b8c
--- /dev/null
+++ b/docs/catalog/components/headline-slam.mdx
@@ -0,0 +1,279 @@
+---
+title: "Headline Slam"
+description: "A heavyweight headline scales down into frame, lands with a deterministic three-frame shake, holds with subtle drift, and whips upward on exit."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html headline-slam.html
+
+
+
+
+
+ Headline Slam
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/headline-slam.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/headline-slam.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `motion-primitive` `typography` `headline` `slam` `impact` `exit`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/hw-arrow.mdx b/docs/catalog/components/hw-arrow.mdx
index f493c0272f..6490adb1bc 100644
--- a/docs/catalog/components/hw-arrow.mdx
+++ b/docs/catalog/components/hw-arrow.mdx
@@ -3,13 +3,13 @@ title: "Hand-Drawn Arrow"
description: "Wobbled draw-on arrow with straight, gentle, and swoop curve presets; boils while on screen"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add hw-arrow
-```
+
That writes `compositions/components/hw-arrow.html`, plus 1 supporting file under `assets/fonts/`.
@@ -20,6 +20,233 @@ Open `compositions/components/hw-arrow.html` and copy what is inside into your o
A component has no size or duration of its own. It takes both from the composition
you paste it into.
+## Source
+
+
+
+```html
+
+
+
+
+
+
+
+
+
+
+
point at things
+
+
+
+
+
+
+
+
+```
+
+
+
{/* hf:generated-footer */}
Tagged `handwritten` `annotation` `arrow` `overlay`.
diff --git a/docs/catalog/components/hw-boil.mdx b/docs/catalog/components/hw-boil.mdx
index 5883808aaf..ffa4323e1c 100644
--- a/docs/catalog/components/hw-boil.mdx
+++ b/docs/catalog/components/hw-boil.mdx
@@ -3,13 +3,13 @@ title: "Hand-Drawn Boil"
description: "Hand-drawn jitter that re-poses every N frames, as seek-safe helpers: pose derives from quantized timeline time through a seeded hash; includes the shared onUpdate dispatcher and a wobbled-ellipse path generator"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add hw-boil
-```
+
That writes `compositions/components/hw-boil.html`, plus 1 supporting file under `assets/fonts/`.
@@ -20,6 +20,241 @@ Open `compositions/components/hw-boil.html` and copy what is inside into your ow
A component has no size or duration of its own. It takes both from the composition
you paste it into.
+## Source
+
+
+
+```html
+
+
+
+
+
+
+
+
+
+
+
+
the boil
+
FRAME DROP 3
+
FRAME DROP 1
+
TEXT, AMP 1.2
+
+
+
+
+
+```
+
+
+
{/* hf:generated-footer */}
Tagged `handwritten` `effect` `annotation`.
diff --git a/docs/catalog/components/hw-box-label.mdx b/docs/catalog/components/hw-box-label.mdx
index 323da55c7b..73983cd5c4 100644
--- a/docs/catalog/components/hw-box-label.mdx
+++ b/docs/catalog/components/hw-box-label.mdx
@@ -3,13 +3,13 @@ title: "Hand-Drawn Box Label"
description: "Wobbled rounded rectangle draws around a region with a handwritten label above or centered"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add hw-box-label
-```
+
That writes `compositions/components/hw-box-label.html`, plus 1 supporting file under `assets/fonts/`.
@@ -20,6 +20,229 @@ Open `compositions/components/hw-box-label.html` and copy what is inside into yo
A component has no size or duration of its own. It takes both from the composition
you paste it into.
+## Source
+
+
+
+```html
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
{/* hf:generated-footer */}
Tagged `handwritten` `annotation` `overlay`.
diff --git a/docs/catalog/components/hw-callout-circle.mdx b/docs/catalog/components/hw-callout-circle.mdx
index 9066ff2afb..3aa6e8fd8d 100644
--- a/docs/catalog/components/hw-callout-circle.mdx
+++ b/docs/catalog/components/hw-callout-circle.mdx
@@ -3,13 +3,13 @@ title: "Scribble Callout Circle"
description: "Wobbled ellipse draws around a target with optional scribble fill, curved connector, and handwritten label"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add hw-callout-circle
-```
+
That writes `compositions/components/hw-callout-circle.html`, plus 1 supporting file under `assets/fonts/`.
@@ -20,6 +20,329 @@ Open `compositions/components/hw-callout-circle.html` and copy what is inside in
A component has no size or duration of its own. It takes both from the composition
you paste it into.
+## Source
+
+
+
+```html
+
+
+
+
+
+
+
+
+
+
+
+
subject
+
+
+
+
+
+
+
+
+
+```
+
+
+
{/* hf:generated-footer */}
Tagged `handwritten` `annotation` `callout` `overlay`.
diff --git a/docs/catalog/components/hw-underline.mdx b/docs/catalog/components/hw-underline.mdx
index 04bf6f266e..ba8cb6e4dc 100644
--- a/docs/catalog/components/hw-underline.mdx
+++ b/docs/catalog/components/hw-underline.mdx
@@ -3,13 +3,13 @@ title: "Squiggle Marks"
description: "Hand-drawn squiggle underline, double-pass strikethrough, and bracket marks that draw on"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add hw-underline
-```
+
That writes `compositions/components/hw-underline.html`, plus 1 supporting file under `assets/fonts/`.
@@ -20,6 +20,272 @@ Open `compositions/components/hw-underline.html` and copy what is inside into yo
A component has no size or duration of its own. It takes both from the composition
you paste it into.
+## Source
+
+
+
+```html
+
+
+
+
+
+
+
+
+
+
+
+
underline the point
+
cross this out
+
bracket the aside
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
{/* hf:generated-footer */}
Tagged `handwritten` `annotation` `text-treatment`.
diff --git a/docs/catalog/components/icon-morph-beat.mdx b/docs/catalog/components/icon-morph-beat.mdx
new file mode 100644
index 0000000000..9ca14aa163
--- /dev/null
+++ b/docs/catalog/components/icon-morph-beat.mdx
@@ -0,0 +1,300 @@
+---
+title: "Icon Morph Beat"
+description: "An icon morphs between authored state silhouettes, shifts to an accent color, and marks completion with one restrained pulse."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html icon-morph-beat.html
+
+
+
+
+
+ Icon Morph Beat
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/icon-morph-beat.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/icon-morph-beat.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `motion-primitive` `product-demo` `icon` `morph` `state-change` `completion`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/icon-swap.mdx b/docs/catalog/components/icon-swap.mdx
new file mode 100644
index 0000000000..0755fcbc01
--- /dev/null
+++ b/docs/catalog/components/icon-swap.mdx
@@ -0,0 +1,151 @@
+---
+title: "Icon Swap"
+description: "A scale-and-blur icon swap primitive for toolbar and action state changes"
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html icon-swap.html
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/icon-swap.html`.
+
+## Usage
+
+Open `compositions/components/icon-swap.html` and paste its contents into your composition. See the comment header in the file for detailed instructions.
+
+{/* hf:generated-footer */}
+
+Tagged `video-primitive` `transition-primitive` `transitions-dev-port` `icon` `swap`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/ink-bleed-reveal.mdx b/docs/catalog/components/ink-bleed-reveal.mdx
new file mode 100644
index 0000000000..40302b7745
--- /dev/null
+++ b/docs/catalog/components/ink-bleed-reveal.mdx
@@ -0,0 +1,489 @@
+---
+title: "Ink Bleed Reveal"
+description: "Liquid ink blooms through paper under a gooey blur-plus-threshold filter, merges, then contracts as a crisp slotted mark resolves beneath it, with static seeded paper grain riding the result."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html ink-bleed-reveal.html
+
+
+
+
+
+ Ink Bleed Reveal
+
+
+
+
+
+
+
+
+
+
+
+ H
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/ink-bleed-reveal.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/ink-bleed-reveal.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `motion-primitive` `texture` `reveal` `gooey` `svg-filter` `deterministic` `experiment`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/inline-highlight.mdx b/docs/catalog/components/inline-highlight.mdx
new file mode 100644
index 0000000000..58f8077758
--- /dev/null
+++ b/docs/catalog/components/inline-highlight.mdx
@@ -0,0 +1,151 @@
+---
+title: "Inline Highlight"
+description: "A clean marker-style inline highlight that animates behind text using a CSS scale variable"
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/inline-highlight.html`.
+
+## Variables
+
+Every one of these has a default, so the piece works untouched. Set the ones you
+want to change on the element:
+
+| Variable | Default | Accepts | What it does |
+| --- | --- | --- | --- |
+| `tint` | `yellow` | `yellow`, `green`, `blue`, `violet` | Marker colour. Green, blue and violet ride --brand, --accent and --accent-2. |
+| `thickness` | `standard` | `thin`, `standard`, `thick` | Height of the marker band behind the text, as a share of the font size. |
+| `origin` | `left` | `left`, `right`, `center` | Edge the marker grows out of as the scale variable runs from 0 to 1. |
+
+Set them with `data-variable-values` on the element that mounts it. These are the
+defaults, so this behaves exactly like the preview above until you change one:
+
+```html wrap
+
+```
+
+## Source
+
+
+
+```html
+
+
+
+
+
+
+
+```
+
+
+
+## Usage
+
+Open `compositions/components/inline-highlight.html` and paste its contents into your composition. See the comment header in the file for detailed instructions.
+
+{/* hf:generated-footer */}
+
+Tagged `motion-primitive` `text` `highlight` `caption`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/input-feedback.mdx b/docs/catalog/components/input-feedback.mdx
new file mode 100644
index 0000000000..9c33c6735a
--- /dev/null
+++ b/docs/catalog/components/input-feedback.mdx
@@ -0,0 +1,194 @@
+---
+title: "Input Feedback"
+description: "A transitions.dev-inspired input feedback primitive with shake, clear affordance, and success state"
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html input-feedback.html
+
+
+
+
+
+ mia@example.com
+
+ OK
+
+
Looks good.
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/input-feedback.html`.
+
+## Usage
+
+Open `compositions/components/input-feedback.html` and paste its contents into your composition. See the comment header in the file for detailed instructions.
+
+{/* hf:generated-footer */}
+
+Tagged `transition-primitive` `transitions-dev-port` `input` `feedback`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/iris-reveal.mdx b/docs/catalog/components/iris-reveal.mdx
new file mode 100644
index 0000000000..20a6596bed
--- /dev/null
+++ b/docs/catalog/components/iris-reveal.mdx
@@ -0,0 +1,520 @@
+---
+title: "Iris Reveal"
+description: "A circle clip-path opens from an authored origin revealing state B over state A in one confident pass, then holds on B. Classic register dims and desaturates the before state so the after state lands in full color; a thin accent rim rides the iris edge. Callers fill the named before/after slot panels; token-styled defaults render when a slot is left empty."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html iris-reveal.html
+
+
+
+
+
+ Iris Reveal
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/iris-reveal.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/iris-reveal.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `transition` `iris` `circle-reveal` `clip-path` `bridge` `slots`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/keyframe-scrub-stack.mdx b/docs/catalog/components/keyframe-scrub-stack.mdx
new file mode 100644
index 0000000000..fe807b4d8e
--- /dev/null
+++ b/docs/catalog/components/keyframe-scrub-stack.mdx
@@ -0,0 +1,121 @@
+---
+title: "Keyframe Scrub Stack"
+description: "A keyframe-sequenced stack of cards with offset timing and easing presets."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/keyframe-scrub-stack.html`.
+
+## Source
+
+
+
+```html
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Usage
+
+Open `compositions/components/keyframe-scrub-stack.html` and paste its contents into your composition. The comment header describes the timeline integration and any optional dependency setup.
+
+{/* hf:generated-footer */}
+
+Tagged `advanced-motion` `anime-inspired` `hyperframes-native`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/kinetic-type-swap.mdx b/docs/catalog/components/kinetic-type-swap.mdx
new file mode 100644
index 0000000000..7c3ee5b984
--- /dev/null
+++ b/docs/catalog/components/kinetic-type-swap.mdx
@@ -0,0 +1,415 @@
+---
+title: "Kinetic Type Swap"
+description: "A held sentence keeps its fixed text in place while one widest-word masked slot rolls through alternatives and settles on the final option."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html kinetic-type-swap.html
+
+
+
+
+
+ Kinetic Type Swap
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/kinetic-type-swap.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/kinetic-type-swap.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `motion-primitive` `text-effects` `kinetic-type` `word-swap` `reveal`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/light-sweep-pass.mdx b/docs/catalog/components/light-sweep-pass.mdx
new file mode 100644
index 0000000000..e10f09f6db
--- /dev/null
+++ b/docs/catalog/components/light-sweep-pass.mdx
@@ -0,0 +1,519 @@
+---
+title: "Light Sweep Pass"
+description: "A traveling key light re-shades a slotted scene: a soft diagonal gradient band crosses the frame once while every per-element highlight and shadow shifts in lockstep (all driven by one --light-x property), then the light settles into a resting key. Quiet, expensive-feeling; the scene itself never moves. Callers fill the named scene slot; a token hero-and-cards default renders when it is left empty."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html light-sweep-pass.html
+
+
+
+
+
+ Light Sweep Pass
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/light-sweep-pass.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/light-sweep-pass.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `motion-primitive` `overlay` `light` `sweep` `slots` `deterministic`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/line-by-line-slide.mdx b/docs/catalog/components/line-by-line-slide.mdx
new file mode 100644
index 0000000000..e4a0888f09
--- /dev/null
+++ b/docs/catalog/components/line-by-line-slide.mdx
@@ -0,0 +1,144 @@
+---
+title: "Line-by-Line Slide"
+description: "Each line enters from the left with staggered slide and exits to the right."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html line-by-line-slide.html
+
+
+
+ Design fasterRender cleanerShip louder
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/line-by-line-slide.html`.
+
+## Usage
+
+Open `compositions/components/line-by-line-slide.html` and paste its contents into your composition. See the comment header in the file for detailed instructions.
+
+{/* hf:generated-footer */}
+
+Tagged `motion-primitive` `remocn-port` `typography`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/line-swap.mdx b/docs/catalog/components/line-swap.mdx
new file mode 100644
index 0000000000..0cd6974293
--- /dev/null
+++ b/docs/catalog/components/line-swap.mdx
@@ -0,0 +1,351 @@
+---
+title: "Line Swap"
+description: "A masked full-line beat replacement: line A holds center then exits up through an overflow-hidden mask as line B enters bottom-up on the same beat, with an optional accent underline drawing beneath one word of line B."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html line-swap.html
+
+
+
+
+
+ Line Swap
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/line-swap.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/line-swap.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `motion-primitive` `text-effects` `swap` `beat` `deterministic`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/locked-nucleus-orbit.mdx b/docs/catalog/components/locked-nucleus-orbit.mdx
new file mode 100644
index 0000000000..526cd8d81e
--- /dev/null
+++ b/docs/catalog/components/locked-nucleus-orbit.mdx
@@ -0,0 +1,395 @@
+---
+title: "Locked Nucleus Orbit"
+description: "A fixed center nucleus anchors deterministic satellite orbits that settle into a composed lockup."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html locked-nucleus-orbit.html
+
+
+
+
+
+ Locked Nucleus Orbit
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/locked-nucleus-orbit.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/locked-nucleus-orbit.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `motion-primitive` `intro` `reveal` `orbit` `lockup` `deterministic`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/logo-brand-close.mdx b/docs/catalog/components/logo-brand-close.mdx
new file mode 100644
index 0000000000..ebe8c3fd8f
--- /dev/null
+++ b/docs/catalog/components/logo-brand-close.mdx
@@ -0,0 +1,409 @@
+---
+title: "Logo Brand Close"
+description: "A display-scale wordmark cascades letter by letter into a centered lockup, the accent brand period lands last, an optional tagline and wide-tracked mono URL settle beneath, and the finished identity holds dead still to the end of the film."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html logo-brand-close.html
+
+
+
+
+
+ Logo Brand Close
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/logo-brand-close.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/logo-brand-close.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `motion-primitive` `typography` `brand` `logo` `end-card` `close`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/logo-sting.mdx b/docs/catalog/components/logo-sting.mdx
new file mode 100644
index 0000000000..0a15cf5d8b
--- /dev/null
+++ b/docs/catalog/components/logo-sting.mdx
@@ -0,0 +1,222 @@
+---
+title: "Logo Sting"
+description: "A wordmark slams into its final scale, fires one accent ring and one white impact frame, then holds completely still."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html logo-sting.html
+
+
+
+
+
+ Logo Sting
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/logo-sting.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/logo-sting.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `motion-primitive` `brand` `logo` `sting` `impact` `reveal`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/logo-wall.mdx b/docs/catalog/components/logo-wall.mdx
new file mode 100644
index 0000000000..2106ca2c82
--- /dev/null
+++ b/docs/catalog/components/logo-wall.mdx
@@ -0,0 +1,341 @@
+---
+title: "Logo Wall"
+description: "A trusted-by wall of placeholder lettermark logos that fades and scales into place with a deterministic per-cell stagger."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html logo-wall.html
+
+
+
+
+
+ Logo Wall
+
+
+
+
+
+
+
+
+
+
Trusted by teams
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/logo-wall.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/logo-wall.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `data` `logos` `social-proof` `stagger` `prove`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/marker-highlight.mdx b/docs/catalog/components/marker-highlight.mdx
new file mode 100644
index 0000000000..6bb900b579
--- /dev/null
+++ b/docs/catalog/components/marker-highlight.mdx
@@ -0,0 +1,404 @@
+---
+title: "Marker Highlight"
+description: "Display text settles in, then one hand-drawn marker stroke (highlight, circle, underline, or scribble) draws over the emphasized word on cue."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html marker-highlight.html
+
+
+
+
+
+ Marker Highlight
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/marker-highlight.html`.
+
+## Usage
+
+Open `compositions/components/marker-highlight.html` and paste its contents into your composition. See the comment header in the file for detailed instructions.
+
+{/* hf:generated-footer */}
+
+Tagged `motion-primitive` `typography` `emphasis` `marker` `deterministic`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/match-cut.mdx b/docs/catalog/components/match-cut.mdx
new file mode 100644
index 0000000000..89869f61a0
--- /dev/null
+++ b/docs/catalog/components/match-cut.mdx
@@ -0,0 +1,351 @@
+---
+title: "Match Cut"
+description: "A circle accelerates into a hard single-frame scene swap, matches the incoming circle exactly, and continues into a smaller resting pose."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html match-cut.html
+
+
+
+
+
+ Match Cut
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Match complete
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/match-cut.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/match-cut.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `motion-primitive` `transition` `match-cut` `hard-cut` `continuity`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/matrix-decode.mdx b/docs/catalog/components/matrix-decode.mdx
new file mode 100644
index 0000000000..c6aaf15d03
--- /dev/null
+++ b/docs/catalog/components/matrix-decode.mdx
@@ -0,0 +1,167 @@
+---
+title: "Matrix Decode"
+description: "Random scramble resolves left-to-right into the target text."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html matrix-decode.html
+
+
+
+ 00000000000
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/matrix-decode.html`.
+
+## Usage
+
+Open `compositions/components/matrix-decode.html` and paste its contents into your composition. See the comment header in the file for detailed instructions.
+
+{/* hf:generated-footer */}
+
+Tagged `motion-primitive` `remocn-port` `typography`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/menu-morph.mdx b/docs/catalog/components/menu-morph.mdx
new file mode 100644
index 0000000000..89b53d981c
--- /dev/null
+++ b/docs/catalog/components/menu-morph.mdx
@@ -0,0 +1,200 @@
+---
+title: "Menu Morph"
+description: "A transitions.dev-inspired hamburger and plus-menu morph primitive for compact action menus"
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html menu-morph.html
+
+
+
+
+
+
Text
+
Image
+
Audio
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/menu-morph.html`.
+
+## Usage
+
+Open `compositions/components/menu-morph.html` and paste its contents into your composition. See the comment header in the file for detailed instructions.
+
+{/* hf:generated-footer */}
+
+Tagged `video-primitive` `transition-primitive` `transitions-dev-port` `menu` `morph`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/mesh-gradient-bg.mdx b/docs/catalog/components/mesh-gradient-bg.mdx
new file mode 100644
index 0000000000..f90bd383e6
--- /dev/null
+++ b/docs/catalog/components/mesh-gradient-bg.mdx
@@ -0,0 +1,138 @@
+---
+title: "Mesh Gradient Background"
+description: "A render-safe mesh gradient using animated radial layers."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/mesh-gradient-bg.html`.
+
+## Source
+
+
+
+```html
+
+
+
+
+
+
+
+
Mesh Gradient Background
+
A render-safe mesh gradient using animated radial layers.
+
+
+
+
+
+
+
+```
+
+
+
+## Usage
+
+Open `compositions/components/mesh-gradient-bg.html` and paste its contents into your composition. See the comment header in the file for timeline integration guidance.
+
+{/* hf:generated-footer */}
+
+Tagged `effect` `remocn-port`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/micro-transitions.mdx b/docs/catalog/components/micro-transitions.mdx
new file mode 100644
index 0000000000..b31f5a1996
--- /dev/null
+++ b/docs/catalog/components/micro-transitions.mdx
@@ -0,0 +1,303 @@
+---
+title: "Micro Transitions"
+description: "A transitions.dev-inspired pack of badge, dropdown, modal, tabs, tooltip, and success-check micro transitions"
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html micro-transitions.html
+
+
+
+
3
+
+ Actions
+
Export, duplicate, archive
+
+
+ Ready to publish?All checks passed.
+
+
DraftLive
+
Copied
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/micro-transitions.html`.
+
+## Usage
+
+Open `compositions/components/micro-transitions.html` and paste its contents into your composition. See the comment header in the file for detailed instructions.
+
+{/* hf:generated-footer */}
+
+Tagged `transition-primitive` `motion-primitive` `transitions-dev-port` `ui` `transition` `microinteraction`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/mk-emphasis-type.mdx b/docs/catalog/components/mk-emphasis-type.mdx
index c5561ebd8a..f4985a88fd 100644
--- a/docs/catalog/components/mk-emphasis-type.mdx
+++ b/docs/catalog/components/mk-emphasis-type.mdx
@@ -3,13 +3,13 @@ title: "Background Emphasis Type"
description: "Oversized low-contrast background word drifting slowly behind the subject — typography as texture"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add mk-emphasis-type
-```
+
That writes one file: `compositions/components/mk-emphasis-type.html`.
@@ -20,6 +20,112 @@ Open `compositions/components/mk-emphasis-type.html` and copy what is inside int
A component has no size or duration of its own. It takes both from the composition
you paste it into.
+## Source
+
+
+
+```html
+
+
+
+
+
+
+
+
+
+
+
+ Emphasis
+
+
+
+
+
+
+```
+
+
+
{/* hf:generated-footer */}
Tagged `typography` `text-treatment` `minimal`.
diff --git a/docs/catalog/components/mk-usage-arc.mdx b/docs/catalog/components/mk-usage-arc.mdx
index 340ed69214..3714277173 100644
--- a/docs/catalog/components/mk-usage-arc.mdx
+++ b/docs/catalog/components/mk-usage-arc.mdx
@@ -3,13 +3,13 @@ title: "Hairline Arc Gauge"
description: "Thin circular gauge that draws on while its percentage counts up; one helper call drives both"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add mk-usage-arc
-```
+
That writes one file: `compositions/components/mk-usage-arc.html`.
@@ -20,6 +20,174 @@ Open `compositions/components/mk-usage-arc.html` and copy what is inside into yo
A component has no size or duration of its own. It takes both from the composition
you paste it into.
+## Source
+
+
+
+```html
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0%
+ Usage
+
+
+
+
+
+
+
+```
+
+
+
{/* hf:generated-footer */}
Tagged `data-viz` `gauge` `minimal`.
diff --git a/docs/catalog/components/modal-morph.mdx b/docs/catalog/components/modal-morph.mdx
new file mode 100644
index 0000000000..323cbfb87e
--- /dev/null
+++ b/docs/catalog/components/modal-morph.mdx
@@ -0,0 +1,564 @@
+---
+title: "Modal Morph"
+description: "A small card expands into a full panel, shared-element style: both layouts measured once at mount, the container morphs by transform only (never width/height tweens) while keyed children counter-scale and re-flow onto their own measured targets as pure functions of time."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html modal-morph.html
+
+
+
+
+
+ Modal Morph
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
OPEN
+
DETAILS
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/modal-morph.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/modal-morph.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `motion-primitive` `structure` `flip` `shared-element` `modal` `deterministic` `experiment`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/morph-swap.mdx b/docs/catalog/components/morph-swap.mdx
new file mode 100644
index 0000000000..d2c0a82f23
--- /dev/null
+++ b/docs/catalog/components/morph-swap.mdx
@@ -0,0 +1,429 @@
+---
+title: "Morph Swap"
+description: "Two slotted siblings stacked at one shared center: A holds, then condenses or reshapes into B on a shared 50% 50% transform origin. Condense shrink-fades A exactly as B scales up; reshape morphs the silhouette on scaleX/scaleY, never width or height tweens. Token card defaults render when a slot is left empty."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html morph-swap.html
+
+
+
+
+
+ Morph Swap
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/morph-swap.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/morph-swap.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `transition` `morph` `swap` `condense` `reshape` `holdable` `slots`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/morph-text.mdx b/docs/catalog/components/morph-text.mdx
index 66b9051859..d9d0bed484 100644
--- a/docs/catalog/components/morph-text.mdx
+++ b/docs/catalog/components/morph-text.mdx
@@ -3,22 +3,264 @@ title: "Morph Text"
description: "Gooey text morph — cycles through an editable word list using SVG threshold + GSAP-driven blur for a fluid, satisfying transition effect"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add morph-text
-```
+
That writes one file: `compositions/components/morph-text.html`.
-## Paste it into your composition
+## Source
+
+
+
+```html
+
+
+
+
+
+ Morph Text
+
+
+
+
+
+
+
+
+
+
+
Do more with less.
+
Built for what's next.
+
Fast. Focused. Powerful.
+
Your work, amplified.
+
Start free today.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Usage
-Open `compositions/components/morph-text.html` and copy what is inside into your own composition.
+Open `compositions/components/morph-text.html` and paste its contents into your composition.
-A component has no size or duration of its own. It takes both from the composition
-you paste it into.
+Edit the `` list to change the statements that cycle through. Each `
` accepts `data-font` (CSS font-family) and `data-color` (hex) attributes. Adjust `data-morph-speed` (seconds per transition) and `data-morph-pause` (hold time) on the root element.
{/* hf:generated-footer */}
diff --git a/docs/catalog/components/motion-blur.mdx b/docs/catalog/components/motion-blur.mdx
index f8c1a6b138..9904b247f5 100644
--- a/docs/catalog/components/motion-blur.mdx
+++ b/docs/catalog/components/motion-blur.mdx
@@ -3,23 +3,315 @@ title: "Motion Blur"
description: "Velocity-driven motion blur — samples element position each frame and applies a one-sided SVG feGaussianBlur ghost trail proportional to speed"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add motion-blur
-```
+
That writes one file: `compositions/components/motion-blur.html`.
-## Paste it into your composition
+## Source
+
+
+
+```html
+
+
+
+
+
+```
+
+
+
+## Usage
+
+Paste the snippet into your composition, then call `attachMotionBlur()` after your GSAP tweens and before registering `window.__timelines`.
+
+```html
+
+tl.set(document.body, {}, DATA_DURATION);
+
+attachMotionBlur("#my-box", tl, {
+ axis: "x", // "x" | "y" | "both"
+ blurMax: 40, // max blur radius in px (default 20)
+});
+
+window.__timelines = window.__timelines || {};
+window.__timelines["my-composition"] = tl;
+```
+
+## How it works
+
+Each target element gets its own SVG filter. On every timeline seek, `attachMotionBlur` samples the element's GSAP `x`/`y` position, computes velocity, and drives three SVG filter primitives:
+
+1. **Ghost copies** — three faded, blurred copies of the element placed behind it at increasing offsets proportional to speed. Inherently one-sided: no forward blur.
+2. **Top blur** — a small symmetric Gaussian at the current position so the element looks in-motion rather than crisp on top of the trail.
+
+Blur scales linearly with velocity up to `blurMax`. Both the ghost trail and top blur clear automatically when the element decelerates to rest.
-Open `compositions/components/motion-blur.html` and copy what is inside into your own composition.
-The file opens with a comment header that walks you through it.
+## Options
-A component has no size or duration of its own. It takes both from the composition
-you paste it into.
+| Option | Default | Description |
+| --- | --- | --- |
+| `axis` | `"both"` | Motion axis — `"x"`, `"y"`, or `"both"` |
+| `blurScale` | `0.008` | Blur per px/s of velocity |
+| `blurMax` | `20` | Max blur radius on the motion axis (px) |
+| `stretchScale` | `0.0002` | scaleX/Y added per px/s (requires `stretchMax > 0`) |
+| `stretchMax` | `0` | Max stretch above 1.0 — disabled by default |
{/* hf:generated-footer */}
diff --git a/docs/catalog/components/multi-device-splay.mdx b/docs/catalog/components/multi-device-splay.mdx
new file mode 100644
index 0000000000..b8549c1866
--- /dev/null
+++ b/docs/catalog/components/multi-device-splay.mdx
@@ -0,0 +1,769 @@
+---
+title: "Multi Device Splay"
+description: "Phone, tablet, and desktop product mockups fan from a centered stack into a proud splayed arrangement with a subtle idle float."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html multi-device-splay.html
+
+
+
+
+
+ Multi Device Splay
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/multi-device-splay.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/multi-device-splay.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `motion-primitive` `device` `phone` `tablet` `desktop` `splay`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/multiplayer-cursors.mdx b/docs/catalog/components/multiplayer-cursors.mdx
new file mode 100644
index 0000000000..11be49602b
--- /dev/null
+++ b/docs/catalog/components/multiplayer-cursors.mdx
@@ -0,0 +1,471 @@
+---
+title: "Multiplayer Cursors"
+description: "Labeled collaborator cursors with token-derived colors and soft glows drift from spread positions into a shared center zone, proving live multiplayer presence."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html multiplayer-cursors.html
+
+
+
+
+
+ Multiplayer Cursors
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/multiplayer-cursors.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/multiplayer-cursors.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `cursor` `pointer` `multiplayer` `collaboration` `presence` `loop` `prove`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/native-notification-pop.mdx b/docs/catalog/components/native-notification-pop.mdx
new file mode 100644
index 0000000000..001aede6ff
--- /dev/null
+++ b/docs/catalog/components/native-notification-pop.mdx
@@ -0,0 +1,498 @@
+---
+title: "Native Notification Pop"
+description: "One system-faithful notification banner (iOS or macOS) drops in over any scene on an accurate interruptible spring: fast arrival, soft overshoot, settled mass, backdrop blur, app dot, title, one body line. Holds; tucks away only via exit."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html native-notification-pop.html
+
+
+
+
+
+ Native Notification Pop
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/native-notification-pop.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/native-notification-pop.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `motion-primitive` `product-demo` `overlay` `notification` `spring`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/notification-pileup.mdx b/docs/catalog/components/notification-pileup.mdx
new file mode 100644
index 0000000000..bad93d7418
--- /dev/null
+++ b/docs/catalog/components/notification-pileup.mdx
@@ -0,0 +1,505 @@
+---
+title: "Notification Pileup"
+description: "Mobile notification cards arrive faster and faster, each new alert pushing the existing stack downward into a dense, anxious tower."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html notification-pileup.html
+
+
+
+
+
+ Notification Pileup
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/notification-pileup.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/notification-pileup.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `notification` `mobile` `ui-props` `overload` `pileup` `loop` `agitate`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/notification-stack.mdx b/docs/catalog/components/notification-stack.mdx
new file mode 100644
index 0000000000..7b0afa9d63
--- /dev/null
+++ b/docs/catalog/components/notification-stack.mdx
@@ -0,0 +1,429 @@
+---
+title: "Notification Stack"
+description: "1 to 5 token notification cards slide-settle into a vertical stack on cues, newest on top; one card grows slightly and brightens as the focus while the rest dim by position."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html notification-stack.html
+
+
+
+
+
+ Notification Stack
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/notification-stack.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/notification-stack.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `motion-primitive` `product-demo` `notification` `stack` `stagger`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/number-pop-in.mdx b/docs/catalog/components/number-pop-in.mdx
new file mode 100644
index 0000000000..23360e8c91
--- /dev/null
+++ b/docs/catalog/components/number-pop-in.mdx
@@ -0,0 +1,159 @@
+---
+title: "Number Pop In"
+description: "A transitions.dev-inspired digit pop-in with blur, lift, and staggered value reveal"
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html number-pop-in.html
+
+
+
+ 5.7k
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/number-pop-in.html`.
+
+## Usage
+
+Open `compositions/components/number-pop-in.html` and paste its contents into your composition. See the comment header in the file for detailed instructions.
+
+{/* hf:generated-footer */}
+
+Tagged `video-primitive` `transition-primitive` `transitions-dev-port` `number` `pop`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/number-wheel.mdx b/docs/catalog/components/number-wheel.mdx
new file mode 100644
index 0000000000..d9adc1f171
--- /dev/null
+++ b/docs/catalog/components/number-wheel.mdx
@@ -0,0 +1,181 @@
+---
+title: "Number Wheel"
+description: "A rolling digit counter primitive for metrics, prices, counts, and scoreboards"
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/number-wheel.html`.
+
+## Variables
+
+Every one of these has a default, so the piece works untouched. Set the ones you
+want to change on the element:
+
+| Variable | Default | Accepts | What it does |
+| --- | --- | --- | --- |
+| `spin` | `single` | `single`, `double`, `triple` | How many full 0 to 9 revolutions each column adds before it lands, which is how far the reel travels in the same time. |
+| `spacing` | `standard` | `tight`, `standard`, `wide` | Gap between the digit columns. |
+| `tone` | `inherit` | `inherit`, `ink`, `paper`, `accent` | Digit colour: inherit keeps the surrounding text colour, ink suits light frames, paper suits dark ones, accent rides --brand. |
+
+Set them with `data-variable-values` on the element that mounts it. These are the
+defaults, so this behaves exactly like the preview above until you change one:
+
+```html wrap
+
+```
+
+## Source
+
+
+
+```html
+
+
+
+
+
+
+
+```
+
+
+
+## Usage
+
+Open `compositions/components/number-wheel.html` and paste its contents into your composition. See the comment header in the file for detailed instructions.
+
+{/* hf:generated-footer */}
+
+Tagged `video-primitive` `motion-primitive` `number` `counter` `data`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/offset-path-traveler.mdx b/docs/catalog/components/offset-path-traveler.mdx
new file mode 100644
index 0000000000..85d9b5b916
--- /dev/null
+++ b/docs/catalog/components/offset-path-traveler.mdx
@@ -0,0 +1,329 @@
+---
+title: "Offset Path Traveler"
+description: "A slotted traveler follows an authored path with tangent rotation, curved entry, and curved exit."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html offset-path-traveler.html
+
+
+
+
+
+ Offset Path Traveler
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/offset-path-traveler.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/offset-path-traveler.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `motion-primitive` `product-demo` `path` `traveler` `auto-rotate`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/onboarding-stepper-flow.mdx b/docs/catalog/components/onboarding-stepper-flow.mdx
new file mode 100644
index 0000000000..2cbf2fa3df
--- /dev/null
+++ b/docs/catalog/components/onboarding-stepper-flow.mdx
@@ -0,0 +1,129 @@
+---
+title: "Onboarding Stepper Flow"
+description: "A composed onboarding flow with milestone rail, active step card, and next-action button"
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/onboarding-stepper-flow.html`.
+
+## Source
+
+
+
+```html
+
+
+
+
+ 123
+
+
+ Step 2 of 3
+ Choose your visual style
+
Pick a direction so the agent can generate matching motion primitives.
+
+
+
+
+
+
+
+```
+
+
+
+## Usage
+
+Open `compositions/components/onboarding-stepper-flow.html` and paste its contents into your composition. See the comment header in the file for detailed instructions.
+
+{/* hf:generated-footer */}
+
+Tagged `ui-flow` `remocn-port` `onboarding` `stepper`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/ordered-dither-pass.mdx b/docs/catalog/components/ordered-dither-pass.mdx
new file mode 100644
index 0000000000..0002931379
--- /dev/null
+++ b/docs/catalog/components/ordered-dither-pass.mdx
@@ -0,0 +1,553 @@
+---
+title: "Ordered Dither Pass"
+description: "Bayer-matrix ordered dithering quantizes a slotted scene (rasterized once at mount): the image emerges from pure 2-tone noise to clean, or dissolves the reverse. Stateless per frame, never error diffusion."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html ordered-dither-pass.html
+
+
+
+
+
+ Ordered Dither Pass
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/ordered-dither-pass.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/ordered-dither-pass.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `motion-primitive` `experiment` `texture` `dither` `transition` `quantize`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/outline-draw.mdx b/docs/catalog/components/outline-draw.mdx
new file mode 100644
index 0000000000..fe64375b31
--- /dev/null
+++ b/docs/catalog/components/outline-draw.mdx
@@ -0,0 +1,215 @@
+---
+title: "Outline Draw"
+description: "A rounded outline that proves a callout by drawing clockwise as a hollow conic-gradient border with a clean closure."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html outline-draw.html
+
+
+
+
+
+ Outline Draw
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/outline-draw.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/outline-draw.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `motion-primitive` `effects` `outline` `border` `mask` `proof`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/oversized-cursor.mdx b/docs/catalog/components/oversized-cursor.mdx
new file mode 100644
index 0000000000..b8d5b860e2
--- /dev/null
+++ b/docs/catalog/components/oversized-cursor.mdx
@@ -0,0 +1,464 @@
+---
+title: "Oversized Cursor"
+description: "A deliberately oversized macOS-style pointer that enters off-screen, travels to a target, clicks to ignite a visible response, then exits"
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html oversized-cursor.html
+
+
+
+
+
+ Oversized Cursor
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/oversized-cursor.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/oversized-cursor.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `motion-primitive` `actor` `cursor` `pointer` `interaction`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/overwhelm-surround.mdx b/docs/catalog/components/overwhelm-surround.mdx
new file mode 100644
index 0000000000..fd1f65a655
--- /dev/null
+++ b/docs/catalog/components/overwhelm-surround.mdx
@@ -0,0 +1,416 @@
+---
+title: "Overwhelm Surround"
+description: "Tasks, tabs, pings, and notification bubbles accelerate inward around a calm central subject, turning overload into visible spatial pressure."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html overwhelm-surround.html
+
+
+
+
+
+ Overwhelm Surround
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/overwhelm-surround.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/overwhelm-surround.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `effects` `agitate` `overwhelm` `pressure` `notifications`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/page-slide.mdx b/docs/catalog/components/page-slide.mdx
new file mode 100644
index 0000000000..81f958637e
--- /dev/null
+++ b/docs/catalog/components/page-slide.mdx
@@ -0,0 +1,159 @@
+---
+title: "Page Slide"
+description: "A transitions.dev-inspired page slide primitive with outgoing and incoming panels"
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html page-slide.html
+
+
+
+ Dashboard
+ Analytics
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/page-slide.html`.
+
+## Usage
+
+Open `compositions/components/page-slide.html` and paste its contents into your composition. See the comment header in the file for detailed instructions.
+
+{/* hf:generated-footer */}
+
+Tagged `video-primitive` `transition-primitive` `transitions-dev-port` `page` `slide`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/pan-stations.mdx b/docs/catalog/components/pan-stations.mdx
new file mode 100644
index 0000000000..ed3cda5450
--- /dev/null
+++ b/docs/catalog/components/pan-stations.mdx
@@ -0,0 +1,406 @@
+---
+title: "Pan Stations"
+description: "A lateral camera move across a continuous row of labeled feature stations, with a steady dwell at each stop before the next pan."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html pan-stations.html
+
+
+
+
+
+ Pan Stations
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/pan-stations.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/pan-stations.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `camera` `pan` `stations` `features` `exhibit` `agitate` `cross-shelved`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/panel-reveal.mdx b/docs/catalog/components/panel-reveal.mdx
new file mode 100644
index 0000000000..217facef55
--- /dev/null
+++ b/docs/catalog/components/panel-reveal.mdx
@@ -0,0 +1,172 @@
+---
+title: "Panel Reveal"
+description: "A panel reveal primitive with height expansion and content fade"
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html panel-reveal.html
+
+
+
+ Motion tokens
+
+
Duration 420ms
+
Easing power3.out
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/panel-reveal.html`.
+
+## Usage
+
+Open `compositions/components/panel-reveal.html` and paste its contents into your composition. See the comment header in the file for detailed instructions.
+
+{/* hf:generated-footer */}
+
+Tagged `transition-primitive` `transitions-dev-port` `panel` `reveal`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/parallax-device-dive.mdx b/docs/catalog/components/parallax-device-dive.mdx
new file mode 100644
index 0000000000..098b1547fd
--- /dev/null
+++ b/docs/catalog/components/parallax-device-dive.mdx
@@ -0,0 +1,493 @@
+---
+title: "Parallax Device Dive"
+description: "A canonical phone rises into view before the camera pushes through its screen and layered app UI expands to fill the frame."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html parallax-device-dive.html
+
+
+
+
+
+ Parallax Device Dive
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Overview
+
+
+
HF
+
+
+
+
Weekly activity
+
24.8k +18%
+
+
+
+
+
+
+
+
+
+
+
+
+
Conversion
+
8.4%
+
+
+
Active users
+
12,604
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/parallax-device-dive.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/parallax-device-dive.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `motion-primitive` `camera` `device` `phone` `parallax` `transition`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/parallax-unzoom.mdx b/docs/catalog/components/parallax-unzoom.mdx
index 1fbeef7c0f..840d2182f8 100644
--- a/docs/catalog/components/parallax-unzoom.mdx
+++ b/docs/catalog/components/parallax-unzoom.mdx
@@ -3,23 +3,131 @@ title: "Parallax Unzoom"
description: "Reveal transition — focus card scales down from full frame as siblings parallax in to form a grid (reverse of parallax-zoom)"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add parallax-unzoom
-```
+
That writes one file: `compositions/components/parallax-unzoom.html`.
-## Paste it into your composition
+## Source
+
+
+
+```html
+
+
+
+
+
+
+
+```
+
+
-Open `compositions/components/parallax-unzoom.html` and copy what is inside into your own composition.
-The file opens with a comment header that walks you through it.
+## Usage
-A component has no size or duration of its own. It takes both from the composition
-you paste it into.
+Open `compositions/components/parallax-unzoom.html` and paste its contents into your composition. See the comment header in the file for detailed instructions.
{/* hf:generated-footer */}
diff --git a/docs/catalog/components/parallax-zoom.mdx b/docs/catalog/components/parallax-zoom.mdx
index 21b895f518..93a2e00344 100644
--- a/docs/catalog/components/parallax-zoom.mdx
+++ b/docs/catalog/components/parallax-zoom.mdx
@@ -3,23 +3,127 @@ title: "Parallax Zoom"
description: "Center card scales up to fill the frame while siblings parallax outward — inspired by the eBay Playbook hero transition"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add parallax-zoom
-```
+
That writes one file: `compositions/components/parallax-zoom.html`.
-## Paste it into your composition
+## Source
+
+
+
+```html
+
+
+
+
+
+
+
+```
+
+
-Open `compositions/components/parallax-zoom.html` and copy what is inside into your own composition.
-The file opens with a comment header that walks you through it.
+## Usage
-A component has no size or duration of its own. It takes both from the composition
-you paste it into.
+Open `compositions/components/parallax-zoom.html` and paste its contents into your composition. See the comment header in the file for detailed instructions.
{/* hf:generated-footer */}
diff --git a/docs/catalog/components/particle-image-reveal.mdx b/docs/catalog/components/particle-image-reveal.mdx
new file mode 100644
index 0000000000..94ab0188eb
--- /dev/null
+++ b/docs/catalog/components/particle-image-reveal.mdx
@@ -0,0 +1,434 @@
+---
+title: "Particle Image Reveal"
+description: "A seeded deterministic particle field converges and settles while a slotted image reveals beneath it, the trail thinning until the image holds clean."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html particle-image-reveal.html
+
+
+
+
+
+ Particle Image Reveal
+
+
+
+
+
+
+
+
+
+
+ H
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/particle-image-reveal.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/particle-image-reveal.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `motion-primitive` `intros-reveals` `particles` `reveal` `canvas` `deterministic`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/particle-text-dissolve.mdx b/docs/catalog/components/particle-text-dissolve.mdx
new file mode 100644
index 0000000000..3f0c0fbe1f
--- /dev/null
+++ b/docs/catalog/components/particle-text-dissolve.mdx
@@ -0,0 +1,456 @@
+---
+title: "Particle Text Dissolve"
+description: "Text assembles from a seeded particle cloud (or dissolves into it): per-particle targets sampled once from the rendered text bitmap at mount, table-driven particles, zero per-particle tweens, one onUpdate painter."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html particle-text-dissolve.html
+
+
+
+
+
+ Particle Text Dissolve
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/particle-text-dissolve.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/particle-text-dissolve.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `motion-primitive` `text-effects` `particles` `canvas` `deterministic` `experiment`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/per-word-crossfade.mdx b/docs/catalog/components/per-word-crossfade.mdx
new file mode 100644
index 0000000000..fc4be7476b
--- /dev/null
+++ b/docs/catalog/components/per-word-crossfade.mdx
@@ -0,0 +1,154 @@
+---
+title: "Per-Word Crossfade"
+description: "Words gently fade into place with a short vertical drift for calm keynote rhythm."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html per-word-crossfade.html
+
+
+
+ Createoncereuseeverywhere
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/per-word-crossfade.html`.
+
+## Usage
+
+Open `compositions/components/per-word-crossfade.html` and paste its contents into your composition. See the comment header in the file for detailed instructions.
+
+{/* hf:generated-footer */}
+
+Tagged `motion-primitive` `remocn-port` `typography`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/per-word-rise.mdx b/docs/catalog/components/per-word-rise.mdx
new file mode 100644
index 0000000000..54a3f311ef
--- /dev/null
+++ b/docs/catalog/components/per-word-rise.mdx
@@ -0,0 +1,358 @@
+---
+title: "Per Word Rise"
+description: "Words or characters rise into place in a controlled blur-to-sharp cascade, settle softly on landing, and hold still until the cut (optional fade or up exit)."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html per-word-rise.html
+
+
+
+
+
+ Per Word Rise
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/per-word-rise.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/per-word-rise.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `motion-primitive` `text-effects` `typography` `stagger` `reveal`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/perspective-marquee.mdx b/docs/catalog/components/perspective-marquee.mdx
new file mode 100644
index 0000000000..3279983126
--- /dev/null
+++ b/docs/catalog/components/perspective-marquee.mdx
@@ -0,0 +1,175 @@
+---
+title: "Perspective Marquee"
+description: "A 3D tilted marquee with depth feel as items roll toward the horizon."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html perspective-marquee.html
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/perspective-marquee.html`.
+
+## Usage
+
+Open `compositions/components/perspective-marquee.html` and paste its contents into your composition. See the comment header in the file for detailed instructions.
+
+{/* hf:generated-footer */}
+
+Tagged `motion-primitive` `remocn-port` `typography`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/physical-exit.mdx b/docs/catalog/components/physical-exit.mdx
new file mode 100644
index 0000000000..605f0a81d0
--- /dev/null
+++ b/docs/catalog/components/physical-exit.mdx
@@ -0,0 +1,289 @@
+---
+title: "Physical Exit"
+description: "A card exits with physical momentum in toss, drop, or slide mode, carrying acceleration and rotation through the final offscreen pose without fading."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html physical-exit.html
+
+
+
+
+
+ Physical Exit
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/physical-exit.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/physical-exit.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `motion-primitive` `exit` `momentum` `toss` `drop` `slide`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/press-ripple.mdx b/docs/catalog/components/press-ripple.mdx
new file mode 100644
index 0000000000..01070d91e8
--- /dev/null
+++ b/docs/catalog/components/press-ripple.mdx
@@ -0,0 +1,415 @@
+---
+title: "Press Ripple"
+description: "A cursor decel-arrives from off-stage, lands slightly off-center on a caller-positioned target, compresses with it in lockstep, releases with ink ripple rings, then exits off-stage while the pressed state holds."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html press-ripple.html
+
+
+
+
+
+ Press Ripple
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/press-ripple.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/press-ripple.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `motion-primitive` `product-demo` `cursor` `press` `ripple` `payoff`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/pull-back-reveal.mdx b/docs/catalog/components/pull-back-reveal.mdx
new file mode 100644
index 0000000000..fe6df83490
--- /dev/null
+++ b/docs/catalog/components/pull-back-reveal.mdx
@@ -0,0 +1,378 @@
+---
+title: "Pull Back Reveal"
+description: "A tight stat detail holds, then one decelerating camera pull-back reveals the headline and supporting cards that recontextualize it."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html pull-back-reveal.html
+
+
+
+
+
+ Pull Back Reveal
+
+
+
+
+
+
+
+
+
+
+
+
Net growth
+
+
Across every active workspace
+
+
+
+
Retention
+
94%
+
+
+
+
+
Teams
+
48
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/pull-back-reveal.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/pull-back-reveal.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `motion-primitive` `camera` `pull-back` `reveal` `recontextualize`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/pull-to-refresh.mdx b/docs/catalog/components/pull-to-refresh.mdx
new file mode 100644
index 0000000000..1a713888ac
--- /dev/null
+++ b/docs/catalog/components/pull-to-refresh.mdx
@@ -0,0 +1,721 @@
+---
+title: "Pull to Refresh"
+description: "A mobile list pulls through nonlinear rubber-band resistance, arms at a threshold, commits to a bounded loading indicator, then snaps exactly back to rest."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html pull-to-refresh.html
+
+
+
+
+
+ Pull to Refresh
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Pull to refresh
+ Release to refresh
+ Refreshing
+
+
+
+
+
+
Activity
+
Updated now
+
+
Search activity
+
+
+
AL
+
+
Alex shared a draft
+
Launch sequence, ready for review
+
+
Now
+
+
+
MK
+
+
Mika left feedback
+
Three comments on the new flow
+
+
4m
+
+
+
NO
+
+
Noah published an update
+
Mobile preview is available
+
+
18m
+
+
+
SR
+
+
Sara joined the project
+
Workspace access granted
+
+
1h
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/pull-to-refresh.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/pull-to-refresh.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `pointer` `pointers` `mobile` `gesture` `interaction` `refresh` `demonstrate`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/push-in.mdx b/docs/catalog/components/push-in.mdx
new file mode 100644
index 0000000000..0fb1b34bfe
--- /dev/null
+++ b/docs/catalog/components/push-in.mdx
@@ -0,0 +1,220 @@
+---
+title: "Push In"
+description: "A centered headline gains focus through one slow, continuous camera push and a gentle fade out."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html push-in.html
+
+
+
+
+
+ Push In
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/push-in.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/push-in.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `motion-primitive` `camera` `push-in` `focus` `emphasize` `holdable`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/radial-surround.mdx b/docs/catalog/components/radial-surround.mdx
new file mode 100644
index 0000000000..dbf48f1e8d
--- /dev/null
+++ b/docs/catalog/components/radial-surround.mdx
@@ -0,0 +1,474 @@
+---
+title: "Radial Surround"
+description: "Labeled hairline chips assemble around a centered subject on an elliptical ring, then optionally converge inward with a subtle edge dim. The center never moves: surrounded, not zoomed."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html radial-surround.html
+
+
+
+
+
+ Radial Surround
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/radial-surround.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/radial-surround.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `motion-primitive` `problem-setup` `radial` `ring` `surround` `converge`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/rgb-glitch-text.mdx b/docs/catalog/components/rgb-glitch-text.mdx
new file mode 100644
index 0000000000..f8be800a4d
--- /dev/null
+++ b/docs/catalog/components/rgb-glitch-text.mdx
@@ -0,0 +1,149 @@
+---
+title: "RGB Glitch Text"
+description: "RGB-offset text copies jitter briefly for a controlled glitch window."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html rgb-glitch-text.html
+
+
+
+ GLITCHGLITCHGLITCH
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/rgb-glitch-text.html`.
+
+## Usage
+
+Open `compositions/components/rgb-glitch-text.html` and paste its contents into your composition. See the comment header in the file for detailed instructions.
+
+{/* hf:generated-footer */}
+
+Tagged `motion-primitive` `remocn-port` `typography`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/rubber-band-bumper.mdx b/docs/catalog/components/rubber-band-bumper.mdx
new file mode 100644
index 0000000000..94e86ec5bd
--- /dev/null
+++ b/docs/catalog/components/rubber-band-bumper.mdx
@@ -0,0 +1,373 @@
+---
+title: "Rubber Band Bumper"
+description: "An outgoing panel pulls against increasing resistance, holds at tension, then snaps past an edge with overshoot as the incoming panel settles behind it."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html rubber-band-bumper.html
+
+
+
+
+
+ Rubber Band Bumper
+
+
+
+
+
+
+
+
+
+ NEXT
+
Clean release
+
The incoming scene settles behind the snap.
+
+
+
+
+
+
+
+
+ CURRENT
+
Hold the tension
+
Each pull travels less as resistance builds.
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/rubber-band-bumper.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/rubber-band-bumper.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `motion-primitive` `transition` `rubber-band` `resistance` `overshoot`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/scan-band.mdx b/docs/catalog/components/scan-band.mdx
new file mode 100644
index 0000000000..d6dd129789
--- /dev/null
+++ b/docs/catalog/components/scan-band.mdx
@@ -0,0 +1,258 @@
+---
+title: "Scan Band"
+description: "A diagonal distortion band sweeps once across a clean wordmark, revealing clipped red and cyan offsets only inside the moving band."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html scan-band.html
+
+
+
+
+
+ Scan Band
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/scan-band.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/scan-band.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `motion-primitive` `typography` `scan` `chromatic` `distortion` `wordmark`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/scramble-reveal.mdx b/docs/catalog/components/scramble-reveal.mdx
new file mode 100644
index 0000000000..ccba6d1e62
--- /dev/null
+++ b/docs/catalog/components/scramble-reveal.mdx
@@ -0,0 +1,331 @@
+---
+title: "Scramble Reveal"
+description: "A deterministic hacker-style text reveal that cycles fixed glyph rows and locks the target string from left to right."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html scramble-reveal.html
+
+
+
+
+
+ Scramble Reveal
+
+
+
+
+
+
+
+
+
+ >_
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/scramble-reveal.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/scramble-reveal.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `motion-primitive` `text-effects` `scramble` `reveal` `deterministic`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/screen-flow-carousel.mdx b/docs/catalog/components/screen-flow-carousel.mdx
new file mode 100644
index 0000000000..da9037dec6
--- /dev/null
+++ b/docs/catalog/components/screen-flow-carousel.mdx
@@ -0,0 +1,618 @@
+---
+title: "Screen Flow Carousel"
+description: "Two to five app screens ride a horizontal rail: one primary at center, neighbors receded, advancing on cues with a velocity-matched throw and a smooth long-tail catch while a mono caption swaps with each advance. Screens are slots with token skeleton defaults."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html screen-flow-carousel.html
+
+
+
+
+
+ Screen Flow Carousel
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/screen-flow-carousel.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/screen-flow-carousel.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `product-demo` `feature-tour` `carousel` `rail` `slot` `screens`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/scroll-camera-story.mdx b/docs/catalog/components/scroll-camera-story.mdx
new file mode 100644
index 0000000000..c690b1a7a5
--- /dev/null
+++ b/docs/catalog/components/scroll-camera-story.mdx
@@ -0,0 +1,847 @@
+---
+title: "Scroll Camera Story"
+description: "A compressed forced-scroll cinematic pass: a tall scene of slotted sections travels past the camera top to bottom, depth layers parallax at different rates, each section rises as the camera reaches it, and the pass decelerates into a held final section."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html scroll-camera-story.html
+
+
+
+
+
+ Scroll Camera Story
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 01
+
+
+
+
+
+
+
+
+
+
+ 02
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 03
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 04
+
+
+
+
+ >_
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/scroll-camera-story.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/scroll-camera-story.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `camera` `scroll` `parallax` `story` `sections` `slot` `servo`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/scroll-feed.mdx b/docs/catalog/components/scroll-feed.mdx
new file mode 100644
index 0000000000..fb7d74ceb1
--- /dev/null
+++ b/docs/catalog/components/scroll-feed.mdx
@@ -0,0 +1,439 @@
+---
+title: "Scroll Feed"
+description: "A loop-friendly column of varied skeleton post cards scrolls upward with subtle motion trails and an agitated pace."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html scroll-feed.html
+
+
+
+
+
+ Scroll Feed
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/scroll-feed.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/scroll-feed.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `motion-primitive` `effects` `scroll` `feed` `loop` `agitation`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/segmentation-flood.mdx b/docs/catalog/components/segmentation-flood.mdx
new file mode 100644
index 0000000000..8a7989d0ba
--- /dev/null
+++ b/docs/catalog/components/segmentation-flood.mdx
@@ -0,0 +1,559 @@
+---
+title: "Segmentation Flood"
+description: "Machine-vision read of a slotted subject: translucent accent segmentation masks flood on in quantized scanline steps, each region gets a thin bracket and mono label chip, a deterministic 2-frame HUD flicker rides the pass, then the labeled read settles clean."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html segmentation-flood.html
+
+
+
+
+
+ Segmentation Flood
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/segmentation-flood.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/segmentation-flood.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `motion-primitive` `product-demo` `ai` `hud` `canvas` `deterministic` `experiment`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/separator.mdx b/docs/catalog/components/separator.mdx
new file mode 100644
index 0000000000..a771ce8ad5
--- /dev/null
+++ b/docs/catalog/components/separator.mdx
@@ -0,0 +1,281 @@
+---
+title: "Separator"
+description: "A one-pixel structural separator with horizontal and vertical variants plus a seek-safe progress reveal"
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html separator.html
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/separator.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/separator.html` and copy what is inside into your own composition.
+The file opens with a comment header that walks you through it.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `video-primitive` `remocn-port` `separator` `layout`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/settings-toggle-flow.mdx b/docs/catalog/components/settings-toggle-flow.mdx
new file mode 100644
index 0000000000..f16d7b7afc
--- /dev/null
+++ b/docs/catalog/components/settings-toggle-flow.mdx
@@ -0,0 +1,125 @@
+---
+title: "Settings Toggle Flow"
+description: "A composed settings flow with preference rows, toggle switches, and active-state feedback"
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/settings-toggle-flow.html`.
+
+## Source
+
+
+
+```html
+
+
+
+
+
Auto captionsGenerate timed captions
+
+
+
+
Brand kitApply saved colors
+
+
+
+
Sound effectsLayer subtle UI sounds
+
+
+
+
+
+
+
+```
+
+
+
+## Usage
+
+Open `compositions/components/settings-toggle-flow.html` and paste its contents into your composition. See the comment header in the file for detailed instructions.
+
+{/* hf:generated-footer */}
+
+Tagged `ui-flow` `remocn-port` `settings` `toggle`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/shared-axis-y.mdx b/docs/catalog/components/shared-axis-y.mdx
new file mode 100644
index 0000000000..a2a2209407
--- /dev/null
+++ b/docs/catalog/components/shared-axis-y.mdx
@@ -0,0 +1,137 @@
+---
+title: "Shared Axis Y"
+description: "Per-word vertical shared-axis transition for sharp editorial swaps."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html shared-axis-y.html
+
+
+
+ PlanDebugAsk
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/shared-axis-y.html`.
+
+## Usage
+
+Open `compositions/components/shared-axis-y.html` and paste its contents into your composition. See the comment header in the file for detailed instructions.
+
+{/* hf:generated-footer */}
+
+Tagged `motion-primitive` `remocn-port` `typography`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/shared-axis-z.mdx b/docs/catalog/components/shared-axis-z.mdx
new file mode 100644
index 0000000000..c81d0cb4cf
--- /dev/null
+++ b/docs/catalog/components/shared-axis-z.mdx
@@ -0,0 +1,136 @@
+---
+title: "Shared Axis Z"
+description: "Scale-based shared-axis transition for focus shifts and context depth."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html shared-axis-z.html
+
+
+
+ Zoomcontext
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/shared-axis-z.html`.
+
+## Usage
+
+Open `compositions/components/shared-axis-z.html` and paste its contents into your composition. See the comment header in the file for detailed instructions.
+
+{/* hf:generated-footer */}
+
+Tagged `motion-primitive` `remocn-port` `typography`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/shimmer-sweep.mdx b/docs/catalog/components/shimmer-sweep.mdx
index ede8830937..3f5ec76059 100644
--- a/docs/catalog/components/shimmer-sweep.mdx
+++ b/docs/catalog/components/shimmer-sweep.mdx
@@ -3,23 +3,94 @@ title: "Shimmer Sweep"
description: "Animated light sweep across text or elements using a CSS gradient mask — ideal for AI accents and premium reveals"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add shimmer-sweep
-```
+
That writes one file: `compositions/components/shimmer-sweep.html`.
-## Paste it into your composition
+## Source
+
+
+
+```html
+
+
+
+
+
+
+
+```
+
+
-Open `compositions/components/shimmer-sweep.html` and copy what is inside into your own composition.
-The file opens with a comment header that walks you through it.
+## Usage
-A component has no size or duration of its own. It takes both from the composition
-you paste it into.
+Open `compositions/components/shimmer-sweep.html` and paste its contents into your composition. See the comment header in the file for detailed instructions.
{/* hf:generated-footer */}
diff --git a/docs/catalog/components/signup-flow.mdx b/docs/catalog/components/signup-flow.mdx
new file mode 100644
index 0000000000..3d33055b51
--- /dev/null
+++ b/docs/catalog/components/signup-flow.mdx
@@ -0,0 +1,117 @@
+---
+title: "Signup Flow"
+description: "A composed signup flow with social action, email field, password field, and submit button"
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/signup-flow.html`.
+
+## Source
+
+
+
+```html
+
+
+
+
Create account
+
+
or
+
email@company.com
+
Password
+
+
+
+
+
+
+```
+
+
+
+## Usage
+
+Open `compositions/components/signup-flow.html` and paste its contents into your composition. See the comment header in the file for detailed instructions.
+
+{/* hf:generated-footer */}
+
+Tagged `ui-flow` `remocn-port` `signup` `form`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/simulated-cursor.mdx b/docs/catalog/components/simulated-cursor.mdx
new file mode 100644
index 0000000000..f25c906a10
--- /dev/null
+++ b/docs/catalog/components/simulated-cursor.mdx
@@ -0,0 +1,180 @@
+---
+title: "Simulated Cursor"
+description: "A lightweight cursor pointer and click pulse for product walkthroughs and agent UI demos"
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html simulated-cursor.html
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/simulated-cursor.html`.
+
+## Usage
+
+Open `compositions/components/simulated-cursor.html` and paste its contents into your composition. See the comment header in the file for detailed instructions.
+
+{/* hf:generated-footer */}
+
+Tagged `video-primitive` `motion-primitive` `cursor` `ui` `walkthrough`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/skeleton-reveal.mdx b/docs/catalog/components/skeleton-reveal.mdx
new file mode 100644
index 0000000000..41c40562d2
--- /dev/null
+++ b/docs/catalog/components/skeleton-reveal.mdx
@@ -0,0 +1,169 @@
+---
+title: "Skeleton Reveal"
+description: "A skeleton loader transition that pulses, then cross-fades into content"
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html skeleton-reveal.html
+
+
+
+
+
Jane Cooperjane@example.com
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/skeleton-reveal.html`.
+
+## Usage
+
+Open `compositions/components/skeleton-reveal.html` and paste its contents into your composition. See the comment header in the file for detailed instructions.
+
+{/* hf:generated-footer */}
+
+Tagged `video-primitive` `transition-primitive` `transitions-dev-port` `skeleton` `reveal`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/slit-scan-reveal.mdx b/docs/catalog/components/slit-scan-reveal.mdx
new file mode 100644
index 0000000000..a8a5bf24bd
--- /dev/null
+++ b/docs/catalog/components/slit-scan-reveal.mdx
@@ -0,0 +1,374 @@
+---
+title: "Slit Scan Reveal"
+description: "The frame's rows sample an authored subject at offset times: a canvas painter draws row slices of one pure position function evaluated at t minus offset(row), smearing arrival through time until the offsets collapse to zero and the mark holds coherent."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html slit-scan-reveal.html
+
+
+
+
+
+ Slit Scan Reveal
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/slit-scan-reveal.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/slit-scan-reveal.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `motion-primitive` `time` `slit-scan` `canvas` `deterministic` `experiment`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/slot-machine-roll.mdx b/docs/catalog/components/slot-machine-roll.mdx
new file mode 100644
index 0000000000..e0a39ec872
--- /dev/null
+++ b/docs/catalog/components/slot-machine-roll.mdx
@@ -0,0 +1,175 @@
+---
+title: "Slot Machine Roll"
+description: "A vertical reel scrolls characters from one value to another."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html slot-machine-roll.html
+
+
+
+ 0 A0 70 K
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/slot-machine-roll.html`.
+
+## Usage
+
+Open `compositions/components/slot-machine-roll.html` and paste its contents into your composition. See the comment header in the file for detailed instructions.
+
+{/* hf:generated-footer */}
+
+Tagged `video-primitive` `motion-primitive` `remocn-port` `typography`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/soft-blob-touch.mdx b/docs/catalog/components/soft-blob-touch.mdx
new file mode 100644
index 0000000000..1c83686d58
--- /dev/null
+++ b/docs/catalog/components/soft-blob-touch.mdx
@@ -0,0 +1,557 @@
+---
+title: "Soft Blob Touch"
+description: "A granular soft blob idles with slow internal drift; a scripted touch dot decel-arrives, the blob deforms toward it with an attraction bulge, then recovers with a velocity-preserving spring. No hard edges anywhere."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html soft-blob-touch.html
+
+
+
+
+
+ Soft Blob Touch
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/soft-blob-touch.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/soft-blob-touch.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `motion-primitive` `product-demo` `material` `blob` `touch` `grain`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/soft-blur-in.mdx b/docs/catalog/components/soft-blur-in.mdx
new file mode 100644
index 0000000000..e97dbd5067
--- /dev/null
+++ b/docs/catalog/components/soft-blur-in.mdx
@@ -0,0 +1,142 @@
+---
+title: "Soft Blur In"
+description: "A soft opacity, blur, and lift reveal for headlines, captions, and product UI callouts"
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/soft-blur-in.html`.
+
+## Variables
+
+Every one of these has a default, so the piece works untouched. Set the ones you
+want to change on the element:
+
+| Variable | Default | Accepts | What it does |
+| --- | --- | --- | --- |
+| `distance` | `standard` | `close`, `standard`, `far` | How far the element is offset before it slides home: 14px, 28px or 52px. |
+| `direction` | `up` | `up`, `down` | up starts the element below its resting place so it rises in, down starts it above so it drops in. |
+| `blur` | `standard` | `soft`, `standard`, `heavy` | Starting blur radius, from a light haze to a full smear. |
+
+Set them with `data-variable-values` on the element that mounts it. These are the
+defaults, so this behaves exactly like the preview above until you change one:
+
+```html wrap
+
+```
+
+## Source
+
+
+
+```html
+
+
+
+
+
+
+
+```
+
+
+
+## Usage
+
+Open `compositions/components/soft-blur-in.html` and paste its contents into your composition. See the comment header in the file for detailed instructions.
+
+{/* hf:generated-footer */}
+
+Tagged `motion-primitive` `text` `reveal` `blur`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/split-tilt-cards.mdx b/docs/catalog/components/split-tilt-cards.mdx
new file mode 100644
index 0000000000..125d410077
--- /dev/null
+++ b/docs/catalog/components/split-tilt-cards.mdx
@@ -0,0 +1,613 @@
+---
+title: "Split Tilt Cards"
+description: "Two equal-weight cards arrive from opposite wings with mirrored rotateY book-open tilts under one shared perspective, pill badges spring-pop at each inner edge, and the pair holds with a barely-there phase-opposed idle float. Card bodies are content slots with token skeleton defaults."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html split-tilt-cards.html
+
+
+
+
+
+ Split Tilt Cards
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/split-tilt-cards.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/split-tilt-cards.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `motion-primitive` `layout` `compare` `holdable` `book-open` `tilt` `slots`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/spotlight-card.mdx b/docs/catalog/components/spotlight-card.mdx
new file mode 100644
index 0000000000..5c5e430224
--- /dev/null
+++ b/docs/catalog/components/spotlight-card.mdx
@@ -0,0 +1,142 @@
+---
+title: "Spotlight Card"
+description: "A card with a scripted cursor spotlight and lit border."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/spotlight-card.html`.
+
+## Source
+
+
+
+```html
+
+
+
+
+
+
+
+
Spotlight Card
+
A card with a scripted cursor spotlight and lit border.
+
+
+
+
+
+
+
+```
+
+
+
+## Usage
+
+Open `compositions/components/spotlight-card.html` and paste its contents into your composition. See the comment header in the file for timeline integration guidance.
+
+{/* hf:generated-footer */}
+
+Tagged `effect` `remocn-port`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/spring-pop.mdx b/docs/catalog/components/spring-pop.mdx
new file mode 100644
index 0000000000..da29354123
--- /dev/null
+++ b/docs/catalog/components/spring-pop.mdx
@@ -0,0 +1,237 @@
+---
+title: "Spring Pop"
+description: "A badge pops in from a visible near-rest scale, overshoots full size once, and settles cleanly."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html spring-pop.html
+
+
+
+
+
+ Spring Pop
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/spring-pop.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/spring-pop.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `motion-primitive` `effects` `spring` `overshoot` `pop` `reveal`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/spring-stack-shuffle.mdx b/docs/catalog/components/spring-stack-shuffle.mdx
new file mode 100644
index 0000000000..f490fe9cab
--- /dev/null
+++ b/docs/catalog/components/spring-stack-shuffle.mdx
@@ -0,0 +1,649 @@
+---
+title: "Spring Stack Shuffle"
+description: "A stack of 3 to 5 slotted cards reshuffles on cues: the back card throws over the top and lands at the front with real mass, the rest compress and resettle; cues that land mid-flight redirect the moving cards with velocity preserved."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html spring-stack-shuffle.html
+
+
+
+
+
+ Spring Stack Shuffle
+
+
+
+
+
+
+
+
+
+
+
+
+
01
+
+
+
+
+
+
+
+
+
+
+
+
+
02
+
+
+
+
+
+
+
+
+
+
+
+
+
03
+
+
+
+
+
+
+
+
+
+
+
+
+
04
+
+
+
+
+
+
+
+
+
+
+
+
+
05
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/spring-stack-shuffle.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/spring-stack-shuffle.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `motion-primitive` `product-demo` `physics` `stack` `interruptible-spring`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/stagger-cascade.mdx b/docs/catalog/components/stagger-cascade.mdx
new file mode 100644
index 0000000000..0021c68dad
--- /dev/null
+++ b/docs/catalog/components/stagger-cascade.mdx
@@ -0,0 +1,300 @@
+---
+title: "Stagger Cascade"
+description: "A responsive grid of tile cards that fades and travels into place with an evenly spaced per-item GSAP stagger. The ordered cascade is the only visual mechanic."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html stagger-cascade.html
+
+
+
+
+
+ Stagger Cascade
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/stagger-cascade.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/stagger-cascade.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `effects` `grid` `stagger` `entrance` `exhibit`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/stagger-lattice.mdx b/docs/catalog/components/stagger-lattice.mdx
new file mode 100644
index 0000000000..e9c2b5f59b
--- /dev/null
+++ b/docs/catalog/components/stagger-lattice.mdx
@@ -0,0 +1,132 @@
+---
+title: "Stagger Lattice"
+description: "A staggered grid reveal inspired by Anime.js v4 stagger utilities, implemented with GSAP for HyperFrames."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/stagger-lattice.html`.
+
+## Source
+
+
+
+```html
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Usage
+
+Open `compositions/components/stagger-lattice.html` and paste its contents into your composition. The comment header describes the timeline integration and any optional dependency setup.
+
+{/* hf:generated-footer */}
+
+Tagged `advanced-motion` `anime-inspired` `hyperframes-native`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/staggered-fade-up.mdx b/docs/catalog/components/staggered-fade-up.mdx
new file mode 100644
index 0000000000..94a7991816
--- /dev/null
+++ b/docs/catalog/components/staggered-fade-up.mdx
@@ -0,0 +1,159 @@
+---
+title: "Staggered Fade Up"
+description: "Words fade in and slide up one after another with configurable delay."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html staggered-fade-up.html
+
+
+
+ Staggeredfadeup
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/staggered-fade-up.html`.
+
+## Usage
+
+Open `compositions/components/staggered-fade-up.html` and paste its contents into your composition. See the comment header in the file for detailed instructions.
+
+{/* hf:generated-footer */}
+
+Tagged `video-primitive` `motion-primitive` `remocn-port` `typography`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/star-rating-fill.mdx b/docs/catalog/components/star-rating-fill.mdx
new file mode 100644
index 0000000000..2f1ac6d416
--- /dev/null
+++ b/docs/catalog/components/star-rating-fill.mdx
@@ -0,0 +1,340 @@
+---
+title: "Star Rating Fill"
+description: "A token-driven star row whose colored layer sweeps to a rating, preserves the fractional final star, and can count the value in sync."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html star-rating-fill.html
+
+
+
+
+
+ Star Rating Fill
+
+
+
+
+
+
+
+
+
+
+
+
+
0.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/star-rating-fill.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/star-rating-fill.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `data` `rating` `stars` `fractional` `fill` `prove`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/state-chip-rail.mdx b/docs/catalog/components/state-chip-rail.mdx
new file mode 100644
index 0000000000..14a123fd73
--- /dev/null
+++ b/docs/catalog/components/state-chip-rail.mdx
@@ -0,0 +1,405 @@
+---
+title: "State Chip Rail"
+description: "A rail of mono status chips advances a seek-safe data-state snap machine on a cue schedule: active chip ink on surface, done chips dim, pending chips hollow, optional badges pop beside one state."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html state-chip-rail.html
+
+
+
+
+
+ State Chip Rail
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/state-chip-rail.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/state-chip-rail.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `motion-primitive` `product-demo` `state-machine` `status` `chips` `rail`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/sticky-mock-swap.mdx b/docs/catalog/components/sticky-mock-swap.mdx
new file mode 100644
index 0000000000..c936e5882d
--- /dev/null
+++ b/docs/catalog/components/sticky-mock-swap.mdx
@@ -0,0 +1,507 @@
+---
+title: "Sticky Mock Swap"
+description: "A pinned product mock cross-fades through accent-tinted feature states while matching captions rise, hold, and exit beside it."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html sticky-mock-swap.html
+
+
+
+
+
+ Sticky Mock Swap
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/sticky-mock-swap.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/sticky-mock-swap.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `motion-primitive` `product-demo` `sticky` `mock` `crossfade` `feature-tour`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/stitched-text-draw.mdx b/docs/catalog/components/stitched-text-draw.mdx
new file mode 100644
index 0000000000..5a01119003
--- /dev/null
+++ b/docs/catalog/components/stitched-text-draw.mdx
@@ -0,0 +1,907 @@
+---
+title: "Stitched Text Draw"
+description: "Text drawn as thread stitches: a single-stroke display alphabet draws via attribute-driven dashoffset with stitch-tuned dash patterns, seeded angle jitter, needle-hole dots, a leading needle, and a thread-tail overshoot per letter."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html stitched-text-draw.html
+
+
+
+
+
+ Stitched Text Draw
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/stitched-text-draw.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/stitched-text-draw.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `motion-primitive` `experiment` `type` `craft` `stitch` `deterministic`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/stop-motion-cadence.mdx b/docs/catalog/components/stop-motion-cadence.mdx
new file mode 100644
index 0000000000..8e47c4c87d
--- /dev/null
+++ b/docs/catalog/components/stop-motion-cadence.mdx
@@ -0,0 +1,509 @@
+---
+title: "Stop Motion Cadence"
+description: "The stepped-time law as a demo primitive: one driver quantizes timeline time to floor(t * fps) / fps and feeds ALL motion; four token paper-cut shapes throw-and-land with squash on hits, 2-frame boil jitter seeded per step, and sparkle accents living exactly 2 to 3 frames."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html stop-motion-cadence.html
+
+
+
+
+
+ Stop Motion Cadence
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/stop-motion-cadence.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/stop-motion-cadence.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `motion-primitive` `time-law` `stop-motion` `stepped` `boil` `deterministic` `experiment`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/store-badge-lockup.mdx b/docs/catalog/components/store-badge-lockup.mdx
new file mode 100644
index 0000000000..da84bf6294
--- /dev/null
+++ b/docs/catalog/components/store-badge-lockup.mdx
@@ -0,0 +1,347 @@
+---
+title: "Store Badge Lockup"
+description: "Settles a short headline above equal-size App Store and Google Play badges as a token-driven mobile end-card call to action."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html store-badge-lockup.html
+
+
+
+
+
+ Store Badge Lockup
+
+
+
+
+
+
+
+
+
+
+
+
+ A
+
+
+ Download on the
+ App Store
+
+
+
+
+
+
+
+
+ GET IT ON
+ Google Play
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/store-badge-lockup.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/store-badge-lockup.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `prop` `ui-props` `mobile` `store-badges` `cta` `ask`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/strikethrough-replace.mdx b/docs/catalog/components/strikethrough-replace.mdx
new file mode 100644
index 0000000000..2393e83e55
--- /dev/null
+++ b/docs/catalog/components/strikethrough-replace.mdx
@@ -0,0 +1,152 @@
+---
+title: "Strikethrough Replace"
+description: "Draw a strike line across old text, then reveal the replacement."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html strikethrough-replace.html
+
+
+
+ SlowFast
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/strikethrough-replace.html`.
+
+## Usage
+
+Open `compositions/components/strikethrough-replace.html` and paste its contents into your composition. See the comment header in the file for detailed instructions.
+
+{/* hf:generated-footer */}
+
+Tagged `motion-primitive` `remocn-port` `typography`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/success-check.mdx b/docs/catalog/components/success-check.mdx
new file mode 100644
index 0000000000..763d5934e1
--- /dev/null
+++ b/docs/catalog/components/success-check.mdx
@@ -0,0 +1,174 @@
+---
+title: "Success Check"
+description: "A success check primitive with ring pop, path draw, and subtle rotate blur"
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html success-check.html
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/success-check.html`.
+
+## Usage
+
+Open `compositions/components/success-check.html` and paste its contents into your composition. See the comment header in the file for detailed instructions.
+
+{/* hf:generated-footer */}
+
+Tagged `video-primitive` `transition-primitive` `transitions-dev-port` `success` `check`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/svg-line-draw-loader.mdx b/docs/catalog/components/svg-line-draw-loader.mdx
new file mode 100644
index 0000000000..a7fa794d50
--- /dev/null
+++ b/docs/catalog/components/svg-line-draw-loader.mdx
@@ -0,0 +1,112 @@
+---
+title: "SVG Line Draw Loader"
+description: "An Anime.js-style path drawing loader implemented as a seekable GSAP stroke timeline."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/svg-line-draw-loader.html`.
+
+## Source
+
+
+
+```html
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Usage
+
+Open `compositions/components/svg-line-draw-loader.html` and paste its contents into your composition. The comment header describes the timeline integration and any optional dependency setup.
+
+{/* hf:generated-footer */}
+
+Tagged `video-primitive` `advanced-motion` `anime-inspired` `hyperframes-native`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/svg-mask-reveal.mdx b/docs/catalog/components/svg-mask-reveal.mdx
new file mode 100644
index 0000000000..1da52bab26
--- /dev/null
+++ b/docs/catalog/components/svg-mask-reveal.mdx
@@ -0,0 +1,358 @@
+---
+title: "SVG Mask Reveal"
+description: "A soft token-colored sweep reveals media only through an editable SVG wordmark mask."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html svg-mask-reveal.html
+
+
+
+
+
+ SVG Mask Reveal
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/svg-mask-reveal.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/svg-mask-reveal.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `effect` `svg` `mask` `wordmark` `reveal` `exhibit`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/svg-stroke-trace.mdx b/docs/catalog/components/svg-stroke-trace.mdx
new file mode 100644
index 0000000000..5653c78029
--- /dev/null
+++ b/docs/catalog/components/svg-stroke-trace.mdx
@@ -0,0 +1,271 @@
+---
+title: "SVG Stroke Trace"
+description: "An authored SVG path draws from its measured length, holds with subtle drift, and optionally fills when the path is closed."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html svg-stroke-trace.html
+
+
+
+
+
+ SVG Stroke Trace
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/svg-stroke-trace.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/svg-stroke-trace.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `motion-primitive` `intro` `reveal` `svg` `stroke` `line-draw`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/swipe-rail.mdx b/docs/catalog/components/swipe-rail.mdx
new file mode 100644
index 0000000000..b685573cd8
--- /dev/null
+++ b/docs/catalog/components/swipe-rail.mdx
@@ -0,0 +1,400 @@
+---
+title: "Swipe Rail"
+description: "A contact circle leads a horizontal card rail through a fast drag, momentum carry, and settled snap to the next card."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html swipe-rail.html
+
+
+
+
+
+ Swipe Rail
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/swipe-rail.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/swipe-rail.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `motion-primitive` `interaction` `gesture` `swipe` `cards` `rail`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/tabs-slide-indicator.mdx b/docs/catalog/components/tabs-slide-indicator.mdx
new file mode 100644
index 0000000000..8335e5aa8b
--- /dev/null
+++ b/docs/catalog/components/tabs-slide-indicator.mdx
@@ -0,0 +1,187 @@
+---
+title: "Tabs Slide Indicator"
+description: "A pill indicator transition that slides between active tabs"
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html tabs-slide-indicator.html
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/tabs-slide-indicator.html`.
+
+## Usage
+
+Open `compositions/components/tabs-slide-indicator.html` and paste its contents into your composition. See the comment header in the file for detailed instructions.
+
+{/* hf:generated-footer */}
+
+Tagged `transition-primitive` `transitions-dev-port` `tabs` `indicator`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/telemetry-hud.mdx b/docs/catalog/components/telemetry-hud.mdx
new file mode 100644
index 0000000000..4e54f616ab
--- /dev/null
+++ b/docs/catalog/components/telemetry-hud.mdx
@@ -0,0 +1,595 @@
+---
+title: "Telemetry HUD"
+description: "Quiet mono debug-HUD readouts frame a slotted subject: corner brackets draw on, label:value lines tick their values on cues, one readout emphasized in accent. The subject never moves; the HUD breathes zero."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html telemetry-hud.html
+
+
+
+
+
+ Telemetry HUD
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/telemetry-hud.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/telemetry-hud.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `motion-primitive` `product-demo` `hud` `telemetry` `deterministic`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/terminal-simulator.mdx b/docs/catalog/components/terminal-simulator.mdx
new file mode 100644
index 0000000000..1d46876b60
--- /dev/null
+++ b/docs/catalog/components/terminal-simulator.mdx
@@ -0,0 +1,129 @@
+---
+title: "Terminal Simulator"
+description: "A terminal window types commands and streams log output."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/terminal-simulator.html`.
+
+## Source
+
+
+
+```html
+
+
+
+
Terminal Simulator
+
+
index.html style.css timeline.js
+
+
+
+
+
$ hyperframes render --skill=terminal-simulator
+
+
+
+
+
+```
+
+
+
+## Usage
+
+Open `compositions/components/terminal-simulator.html` and paste its contents into your composition. See the comment header in the file for timeline integration guidance.
+
+{/* hf:generated-footer */}
+
+Tagged `code-animation` `remocn-port`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/testimonial-card.mdx b/docs/catalog/components/testimonial-card.mdx
new file mode 100644
index 0000000000..4e0e5f51b5
--- /dev/null
+++ b/docs/catalog/components/testimonial-card.mdx
@@ -0,0 +1,371 @@
+---
+title: "Testimonial Card"
+description: "Reveals a customer quote at reading pace, then settles its avatar, author name, and handle beneath as a clean proof beat."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html testimonial-card.html
+
+
+
+
+
+ Testimonial Card
+
+
+
+
+
+
+
+
+
+
+
+ ★★★★★
+ ★★★★★
+
+ 5 / 5
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/testimonial-card.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/testimonial-card.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `prop` `ui-props` `testimonial` `social-proof` `quote` `prove`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/testimonial-proof-card.mdx b/docs/catalog/components/testimonial-proof-card.mdx
new file mode 100644
index 0000000000..fe45af0a42
--- /dev/null
+++ b/docs/catalog/components/testimonial-proof-card.mdx
@@ -0,0 +1,537 @@
+---
+title: "Testimonial Proof Card"
+description: "A quote card whose testimonial reveals per-line through a soft mask, with an avatar disc (initials default, image slot), mono name and role, an optional company text mark, and one emphasis substring underlined in accent ink after the quote lands."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html testimonial-proof-card.html
+
+
+
+
+
+ Testimonial Proof Card
+
+
+
+
+
+
+
+
+
“
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/testimonial-proof-card.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/testimonial-proof-card.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `motion-primitive` `proof` `testimonial` `quote` `social-proof` `deterministic`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/text-shimmer.mdx b/docs/catalog/components/text-shimmer.mdx
new file mode 100644
index 0000000000..6ed5e6f9ab
--- /dev/null
+++ b/docs/catalog/components/text-shimmer.mdx
@@ -0,0 +1,220 @@
+---
+title: "Text Shimmer"
+description: "A static headline receives one clean specular gradient sweep through its glyphs, then returns to its ordinary text color."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html text-shimmer.html
+
+
+
+
+
+ Text Shimmer
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/text-shimmer.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/text-shimmer.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `motion-primitive` `text-effects` `shimmer` `specular` `emphasis`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/text-stagger.mdx b/docs/catalog/components/text-stagger.mdx
new file mode 100644
index 0000000000..5f9dc7142d
--- /dev/null
+++ b/docs/catalog/components/text-stagger.mdx
@@ -0,0 +1,171 @@
+---
+title: "Text Stagger"
+description: "A transitions.dev-inspired text stagger primitive with enter, shimmer, and exit-ready words"
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html text-stagger.html
+
+
+
+ Build
+ motion
+ systems
+ fast
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/text-stagger.html`.
+
+## Usage
+
+Open `compositions/components/text-stagger.html` and paste its contents into your composition. See the comment header in the file for detailed instructions.
+
+{/* hf:generated-footer */}
+
+Tagged `video-primitive` `transition-primitive` `transitions-dev-port` `text` `stagger`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/text-state-swap.mdx b/docs/catalog/components/text-state-swap.mdx
new file mode 100644
index 0000000000..5f88e45e95
--- /dev/null
+++ b/docs/catalog/components/text-state-swap.mdx
@@ -0,0 +1,152 @@
+---
+title: "Text State Swap"
+description: "A text state swap primitive with outgoing blur and incoming lift"
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html text-state-swap.html
+
+
+
+ Saving draftSaved
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/text-state-swap.html`.
+
+## Usage
+
+Open `compositions/components/text-state-swap.html` and paste its contents into your composition. See the comment header in the file for detailed instructions.
+
+{/* hf:generated-footer */}
+
+Tagged `video-primitive` `transition-primitive` `transitions-dev-port` `text` `swap`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/texture-mask-text.mdx b/docs/catalog/components/texture-mask-text.mdx
index bda1928dc4..7774b1a675 100644
--- a/docs/catalog/components/texture-mask-text.mdx
+++ b/docs/catalog/components/texture-mask-text.mdx
@@ -3,6 +3,8 @@ title: "Texture Mask Text"
description: "CSS luminance masks that cut holes through letterforms - 66 pre-built texture masks from ambientCG PBR color maps"
---
+import { InstallCommand } from "/snippets/install-command.jsx";
+
Brick
@@ -32,18 +34,397 @@ description: "CSS luminance masks that cut holes through letterforms - 66 pre-bu
## Install
-```bash Terminal
-npx hyperframes add texture-mask-text
-```
+
That writes `compositions/components/texture-mask-text/texture-mask-text.html`, plus 66 supporting files under `assets/texture-mask-text/masks/`.
-## Paste it into your composition
+## Source
+
+
+
+```html
+
+
+
+```
+
+
## Ask an agent for it
@@ -478,6 +859,10 @@ window.__timelines["my-composition"] = tl;
+## Usage
+
+After `npx hyperframes add texture-mask-text`, the installed snippet lives at `compositions/components/texture-mask-text/texture-mask-text.html` inside your current HyperFrames project. Open that file and paste the real `
+
+
+
+
+
+```
+
+
+
+## Usage
+
+Open `compositions/components/three-orbiting-cards.html` and paste its contents into your composition. The comment header describes the timeline integration and any optional dependency setup.
+
+{/* hf:generated-footer */}
+
+Tagged `video-primitive` `three-js` `webgl` `hyperframes-native`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/ticker-takeover.mdx b/docs/catalog/components/ticker-takeover.mdx
new file mode 100644
index 0000000000..aa8ce0a1ab
--- /dev/null
+++ b/docs/catalog/components/ticker-takeover.mdx
@@ -0,0 +1,363 @@
+---
+title: "Ticker Takeover"
+description: "A mono ticker rolls through options, locks on a final word with an accent flash, and promotes it into a full-frame headline."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html ticker-takeover.html
+
+
+
+
+
+ Ticker Takeover
+
+
+
+
+
+
+
+
+
signal
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/ticker-takeover.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/ticker-takeover.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `motion-primitive` `typography` `ticker` `slot-machine` `headline` `reveal`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/tilt-card.mdx b/docs/catalog/components/tilt-card.mdx
new file mode 100644
index 0000000000..cbfe3928f3
--- /dev/null
+++ b/docs/catalog/components/tilt-card.mdx
@@ -0,0 +1,195 @@
+---
+title: "Tilt Card"
+description: "A transitions.dev-inspired tilt card primitive with depth layers and hover-style parallax"
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html tilt-card.html
+
+
+
+
+
+ Primitive
+ Agent-ready motion
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/tilt-card.html`.
+
+## Usage
+
+Open `compositions/components/tilt-card.html` and paste its contents into your composition. See the comment header in the file for detailed instructions.
+
+{/* hf:generated-footer */}
+
+Tagged `video-primitive` `transition-primitive` `transitions-dev-port` `card` `tilt`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/titlecard-calm.mdx b/docs/catalog/components/titlecard-calm.mdx
new file mode 100644
index 0000000000..dbee0caf67
--- /dev/null
+++ b/docs/catalog/components/titlecard-calm.mdx
@@ -0,0 +1,230 @@
+---
+title: "Titlecard Calm"
+description: "A restrained title card where a mono kicker and generous grotesque headline fade upward, drift almost imperceptibly, and exit cleanly."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html titlecard-calm.html
+
+
+
+
+
+ Titlecard Calm
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/titlecard-calm.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/titlecard-calm.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `motion-primitive` `typography` `title-card` `calm` `orient`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/titlecard-lockup.mdx b/docs/catalog/components/titlecard-lockup.mdx
new file mode 100644
index 0000000000..0c666ab950
--- /dev/null
+++ b/docs/catalog/components/titlecard-lockup.mdx
@@ -0,0 +1,363 @@
+---
+title: "Titlecard Lockup"
+description: "The calm breather titlecard: an optional mono kicker fades up, the wordmark settles dead-center with one restrained move, a hairline rule draws left to right, a mono label fades beneath, and the lockup holds truly still."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html titlecard-lockup.html
+
+
+
+
+
+ Titlecard Lockup
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/titlecard-lockup.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/titlecard-lockup.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `motion-primitive` `typography` `title-card` `lockup` `breather` `orient`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/toggle-flip.mdx b/docs/catalog/components/toggle-flip.mdx
new file mode 100644
index 0000000000..068aab3a77
--- /dev/null
+++ b/docs/catalog/components/toggle-flip.mdx
@@ -0,0 +1,466 @@
+---
+title: "Toggle Flip"
+description: "An oversized UI toggle switch that flips with real physicality: thumb overshoot, track color crossfade, and a soft press-compress before release. The reference prop of the ui-props family."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html toggle-flip.html
+
+
+
+
+
+ Toggle Flip
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/toggle-flip.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/toggle-flip.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `prop` `ui-props` `toggle` `interaction` `reference-prop` `demonstrate`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/top-down-letters.mdx b/docs/catalog/components/top-down-letters.mdx
new file mode 100644
index 0000000000..ab85701187
--- /dev/null
+++ b/docs/catalog/components/top-down-letters.mdx
@@ -0,0 +1,151 @@
+---
+title: "Top-Down Letters"
+description: "Letters descend from above in a pronounced staircase with zero blur."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html top-down-letters.html
+
+
+
+ CASCADE
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/top-down-letters.html`.
+
+## Usage
+
+Open `compositions/components/top-down-letters.html` and paste its contents into your composition. See the comment header in the file for detailed instructions.
+
+{/* hf:generated-footer */}
+
+Tagged `video-primitive` `motion-primitive` `remocn-port` `typography`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/touch-indicator.mdx b/docs/catalog/components/touch-indicator.mdx
new file mode 100644
index 0000000000..6e479b0e13
--- /dev/null
+++ b/docs/catalog/components/touch-indicator.mdx
@@ -0,0 +1,420 @@
+---
+title: "Touch Indicator"
+description: "A translucent contact-circle gesture actor for mobile UI scenes: it touches the glass, causes a same-frame response, and lifts. Tap or swipe, picked by variable."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html touch-indicator.html
+
+
+
+
+
+ Touch Indicator
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/touch-indicator.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/touch-indicator.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `motion-primitive` `mobile` `gesture` `touch` `pointer`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/tracing-beam.mdx b/docs/catalog/components/tracing-beam.mdx
new file mode 100644
index 0000000000..be2a23b631
--- /dev/null
+++ b/docs/catalog/components/tracing-beam.mdx
@@ -0,0 +1,441 @@
+---
+title: "Tracing Beam"
+description: "A glowing dash follows one SVG path through three UI elements, lifting and brightening each element in sequence."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html tracing-beam.html
+
+
+
+
+
+ Tracing Beam
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
01
+
+
Step one
+
+
+
+
+
+
+
+
+
+
02
+
+
Step two
+
+
+
+
+
+
+
+
+
+
03
+
+
Step three
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/tracing-beam.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/tracing-beam.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `motion-primitive` `product-demo` `attention` `beam` `path` `spotlight`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/tracking-in.mdx b/docs/catalog/components/tracking-in.mdx
new file mode 100644
index 0000000000..ff0b4465af
--- /dev/null
+++ b/docs/catalog/components/tracking-in.mdx
@@ -0,0 +1,154 @@
+---
+title: "Tracking In"
+description: "A precise letter-spacing reveal for premium headings and interface labels"
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/tracking-in.html`.
+
+## Variables
+
+Every one of these has a default, so the piece works untouched. Set the ones you
+want to change on the element:
+
+| Variable | Default | Accepts | What it does |
+| --- | --- | --- | --- |
+| `tracking` | `standard` | `tight`, `standard`, `wide` | Multiplies the letter-spacing the timeline drives, so the reveal starts and settles proportionally wider or tighter. |
+| `rise` | `standard` | `subtle`, `standard`, `bold` | Vertical offset the text starts from, which the timeline reads as the start of its travel and eases to zero. |
+| `tone` | `inherit` | `inherit`, `ink`, `paper`, `accent` | Text colour: inherit keeps the surrounding page colour, ink suits light frames, paper dark ones, accent rides --brand. |
+
+Set them with `data-variable-values` on the element that mounts it. These are the
+defaults, so this behaves exactly like the preview above until you change one:
+
+```html wrap
+
+```
+
+## Source
+
+
+
+```html
+
+
+
+
+
+
+
+```
+
+
+
+## Usage
+
+Open `compositions/components/tracking-in.html` and paste its contents into your composition. See the comment header in the file for detailed instructions.
+
+{/* hf:generated-footer */}
+
+Tagged `motion-primitive` `text` `reveal` `typography`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/trust-strip.mdx b/docs/catalog/components/trust-strip.mdx
new file mode 100644
index 0000000000..327d4d8837
--- /dev/null
+++ b/docs/catalog/components/trust-strip.mdx
@@ -0,0 +1,268 @@
+---
+title: "Trust Strip"
+description: "A monochrome trust row of wide-tracked mono wordmarks that fade in with an opacity-only left-to-right stagger, then hold dead still."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html trust-strip.html
+
+
+
+
+
+ Trust Strip
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/trust-strip.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/trust-strip.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `motion-primitive` `proof` `trust` `logo-strip` `wordmarks`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/type-match-cut.mdx b/docs/catalog/components/type-match-cut.mdx
new file mode 100644
index 0000000000..032bb03efa
--- /dev/null
+++ b/docs/catalog/components/type-match-cut.mdx
@@ -0,0 +1,449 @@
+---
+title: "Type Match Cut"
+description: "A headline splits vertically around an incoming panel, which grows from the negative space and takes the frame as the words exit through opposite edges."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html type-match-cut.html
+
+
+
+
+
+ Type Match Cut
+
+
+
+
+
+
+
+
+
+
+
+ New editor
+ Ready
+
+
+
+
+
+
+
+
+ ▶
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/type-match-cut.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/type-match-cut.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `motion-primitive` `transition` `typography` `match-cut` `continuity`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/typed-prompt.mdx b/docs/catalog/components/typed-prompt.mdx
new file mode 100644
index 0000000000..d40896f047
--- /dev/null
+++ b/docs/catalog/components/typed-prompt.mdx
@@ -0,0 +1,426 @@
+---
+title: "Typed Prompt"
+description: "A prompt line types itself in chunked human cadence behind a deterministic blinking caret, with optional backspace-and-retype correction of the final word."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+"},{"id":"cadence","type":"enum","role":"timing","label":"Cadence","description":"Keystroke rhythm: uniform fixed steps or seeded human chunks.","default":"human","options":[{"value":"uniform","label":"Uniform"},{"value":"human","label":"Human"}]},{"id":"caret","type":"enum","role":"style","label":"Caret","description":"Blink runs integer sine cycles during typing then goes solid.","default":"blink","options":[{"value":"blink","label":"Blink"},{"value":"solid","label":"Solid"}]},{"id":"correction","type":"string","role":"content","label":"Correction","description":"Mistyped word typed in place of the final word, then backspaced and corrected. Empty disables.","default":""},{"id":"cues","type":"string","role":"timing","label":"Cues","description":"Comma-separated seconds relative to mount start; cue N anchors the start of word N. Empty uses the authored rhythm.","default":""},{"id":"accent","type":"enum","role":"style","label":"Accent","description":"Color of the prompt glyph and caret.","default":"green","options":[{"value":"green","label":"Green"},{"value":"blue","label":"Blue"},{"value":"violet","label":"Violet"}]},{"id":"exit","type":"enum","role":"timing","label":"Exit","description":"Outgoing transition. Frame roots own transitions; none holds the end frame.","default":"none","options":[{"value":"none","label":"None"},{"value":"fade","label":"Fade"},{"value":"up","label":"Up"}]}]}
+>
+
+```html typed-prompt.html
+
+
+
+
+
+ Typed Prompt
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/typed-prompt.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/typed-prompt.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `motion-primitive` `product-demo` `typing` `prompt` `deterministic`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/typewriter.mdx b/docs/catalog/components/typewriter.mdx
new file mode 100644
index 0000000000..29cada586c
--- /dev/null
+++ b/docs/catalog/components/typewriter.mdx
@@ -0,0 +1,160 @@
+---
+title: "Typewriter"
+description: "Character-by-character text reveal with a deterministic blinking cursor."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html typewriter.html
+
+
+
+ hyperframes add typewriter
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/typewriter.html`.
+
+## Usage
+
+Open `compositions/components/typewriter.html` and paste its contents into your composition. See the comment header in the file for detailed instructions.
+
+{/* hf:generated-footer */}
+
+Tagged `video-primitive` `motion-primitive` `remocn-port` `typography`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/ui-focus-zoom.mdx b/docs/catalog/components/ui-focus-zoom.mdx
new file mode 100644
index 0000000000..d81698ca5f
--- /dev/null
+++ b/docs/catalog/components/ui-focus-zoom.mdx
@@ -0,0 +1,606 @@
+---
+title: "UI Focus Zoom"
+description: "A full app surface establishes with one settle, then the camera zooms and pans to an anchored region on its cue and holds the zoomed state, with an optional soft focus halo at the anchor. The surface is a slot with a token-styled skeleton default."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html ui-focus-zoom.html
+
+
+
+
+
+ UI Focus Zoom
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/ui-focus-zoom.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/ui-focus-zoom.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `camera` `product-demo` `zoom` `focus` `pan` `slot` `servo`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/variable-axis-type.mdx b/docs/catalog/components/variable-axis-type.mdx
new file mode 100644
index 0000000000..30027ad0c5
--- /dev/null
+++ b/docs/catalog/components/variable-axis-type.mdx
@@ -0,0 +1,234 @@
+---
+title: "Variable Axis Type"
+description: "A locked one-line headline whose weight or width axis morphs into a decisive emphasis beat."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html variable-axis-type.html
+
+
+
+
+
+ Variable Axis Type
+
+
+
+
+
+
+
+
+
+
+
+
+
IMPACT
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/variable-axis-type.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/variable-axis-type.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `typography` `variable-font` `kinetic-type` `axis` `emphasize`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/variable-font-flex.mdx b/docs/catalog/components/variable-font-flex.mdx
new file mode 100644
index 0000000000..889ad2148f
--- /dev/null
+++ b/docs/catalog/components/variable-font-flex.mdx
@@ -0,0 +1,346 @@
+---
+title: "Variable Font Flex"
+description: "A word lands while its variable-font weight and width axes flex from hairline-condensed to black-wide with per-character stagger; font-size eases inversely so the letterforms gain mass while the box holds."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html variable-font-flex.html
+
+
+
+
+
+ Variable Font Flex
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/variable-font-flex.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/variable-font-flex.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `motion-primitive` `experiment` `type` `variable-font` `deterministic`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/vector-editor-rig.mdx b/docs/catalog/components/vector-editor-rig.mdx
new file mode 100644
index 0000000000..5289627edc
--- /dev/null
+++ b/docs/catalog/components/vector-editor-rig.mdx
@@ -0,0 +1,837 @@
+---
+title: "Vector Editor Rig"
+description: "A dark design-tool app chrome with a live vector pen path, sequential anchor points, bezier handles, a selection frame, and theme-driven blue accents."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html vector-editor-rig.html
+
+
+
+
+
+ Vector Editor Rig
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Vector
+
+
+
+
+ 100%
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/vector-editor-rig.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/vector-editor-rig.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `prop` `ui-props` `demonstrate` `vector` `design-tool` `pen-tool` `bezier` `app-chrome`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/velocity-throw-snap.mdx b/docs/catalog/components/velocity-throw-snap.mdx
new file mode 100644
index 0000000000..5f9743a2e8
--- /dev/null
+++ b/docs/catalog/components/velocity-throw-snap.mdx
@@ -0,0 +1,526 @@
+---
+title: "Velocity Throw Snap"
+description: "A five-shot rail whips past on a fast decaying curve, then overshoots and snaps the selected hero shot exactly to center."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html velocity-throw-snap.html
+
+
+
+
+
+ Velocity Throw Snap
+
+
+
+
+
+
+
+
+
+
+
+ 01
+
+
+
+
+
+
+
+
+
+ 02
+
+
+
+
+
+
+
+
+
+ 03
+
+
+
+
+
+
+
+
+
+ 04
+
+
+
+
+
+
+
+
+
+ 05
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/velocity-throw-snap.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/velocity-throw-snap.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `motion-primitive` `feature-tour` `rail` `velocity` `throw` `snap` `physics`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/vignette.mdx b/docs/catalog/components/vignette.mdx
index 11484a9e78..e2bcc0ecc9 100644
--- a/docs/catalog/components/vignette.mdx
+++ b/docs/catalog/components/vignette.mdx
@@ -3,23 +3,79 @@ title: "Vignette"
description: "Cinematic radial vignette overlay using a pure-CSS gradient — darkens the edges to pull focus toward the center"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add vignette
-```
+
That writes one file: `compositions/components/vignette.html`.
-## Paste it into your composition
+## Source
+
+
+
+```html
+
+
+
+
+
+
+
+```
+
+
-Open `compositions/components/vignette.html` and copy what is inside into your own composition.
-The file opens with a comment header that walks you through it.
+## Usage
-A component has no size or duration of its own. It takes both from the composition
-you paste it into.
+Open `compositions/components/vignette.html` and paste its contents into your composition. See the comment header in the file for detailed instructions.
{/* hf:generated-footer */}
diff --git a/docs/catalog/components/vox-annotate.mdx b/docs/catalog/components/vox-annotate.mdx
new file mode 100644
index 0000000000..e601d25464
--- /dev/null
+++ b/docs/catalog/components/vox-annotate.mdx
@@ -0,0 +1,519 @@
+---
+title: "Vox Annotate"
+description: "The Vox-style annotate gesture: a keyword in a held sentence gets a hand-drawn marker while a thin connector draws up to a mono callout label, all as one choreographed beat on the cue."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html vox-annotate.html
+
+
+
+
+
+ Vox Annotate
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/vox-annotate.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/vox-annotate.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `motion-primitive` `typography` `annotation` `marker` `deterministic`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/whip-pan-cut.mdx b/docs/catalog/components/whip-pan-cut.mdx
new file mode 100644
index 0000000000..cc930147f2
--- /dev/null
+++ b/docs/catalog/components/whip-pan-cut.mdx
@@ -0,0 +1,529 @@
+---
+title: "Whip Pan Cut"
+description: "A full-frame whip pan: scene A whips off laterally with capped directional motion blur while scene B enters in the same direction at matched velocity, on a speed-ramp profile with a decelerating catch. Both scenes ride one strip, so seam velocity is exact by construction. Callers fill the named before/after slot panels; token-styled defaults render when a slot is left empty."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html whip-pan-cut.html
+
+
+
+
+
+ Whip Pan Cut
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/whip-pan-cut.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/whip-pan-cut.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `transition` `whip-pan` `motion-blur` `velocity-match` `speed-ramp` `bridge` `slots`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/whiteboard-ink.mdx b/docs/catalog/components/whiteboard-ink.mdx
new file mode 100644
index 0000000000..93b91f8c75
--- /dev/null
+++ b/docs/catalog/components/whiteboard-ink.mdx
@@ -0,0 +1,582 @@
+---
+title: "Whiteboard Ink"
+description: "A whiteboard sketch draws one measured stroke at a time while a pen nib follows the active tip. Preset sketches (bulb, flow, rocket) or your own multi-stroke SVG paths via the strokes slot; a path marked data-ink=accent rides the accent token."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html whiteboard-ink.html
+
+
+
+
+
+ Whiteboard Ink
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/whiteboard-ink.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/whiteboard-ink.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `motion-primitive` `intro` `reveal` `svg` `whiteboard` `line-draw` `slot`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/wordmark-tiles.mdx b/docs/catalog/components/wordmark-tiles.mdx
new file mode 100644
index 0000000000..f9e56c418b
--- /dev/null
+++ b/docs/catalog/components/wordmark-tiles.mdx
@@ -0,0 +1,402 @@
+---
+title: "Wordmark Tiles"
+description: "A wordmark resolves from deterministic color noise into correctly cropped glyph tiles through a spatially modulated GSAP wave."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html wordmark-tiles.html
+
+
+
+
+
+ Wordmark Tiles
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/wordmark-tiles.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/wordmark-tiles.html` and copy what is inside into your own composition.
+
+A component has no size or duration of its own. It takes both from the composition
+you paste it into.
+
+{/* hf:generated-footer */}
+
+Tagged `typography` `wordmark` `tiles` `raster` `reveal`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/x-follow-card.mdx b/docs/catalog/components/x-follow-card.mdx
new file mode 100644
index 0000000000..1595f5cb83
--- /dev/null
+++ b/docs/catalog/components/x-follow-card.mdx
@@ -0,0 +1,126 @@
+---
+title: "X Follow Card"
+description: "A social follow card with avatar, handle, and follower motion."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/x-follow-card.html`.
+
+## Source
+
+
+
+```html
+
+
+
+
+
+
+
X Follow Card
+
A social follow card with avatar, handle, and follower motion.
+
+
+
30.6K
+
+
+
+
+
+
+
+
+```
+
+
+
+## Usage
+
+Open `compositions/components/x-follow-card.html` and paste its contents into your composition. See the comment header in the file for timeline integration guidance.
+
+{/* hf:generated-footer */}
+
+Tagged `social-overlay` `remocn-port`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/catalog/components/yt-camera-move.mdx b/docs/catalog/components/yt-camera-move.mdx
index ea6276c194..b328267498 100644
--- a/docs/catalog/components/yt-camera-move.mdx
+++ b/docs/catalog/components/yt-camera-move.mdx
@@ -3,13 +3,13 @@ title: "Camera Punch-In"
description: "Dynamic zoom, slide, and 3D tilt-pan helpers for any wrapper (video, include, card) with cubic-easing defaults and an edge-defocus pulse overlay"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add yt-camera-move
-```
+
That writes one file: `compositions/components/yt-camera-move.html`.
@@ -20,6 +20,190 @@ Open `compositions/components/yt-camera-move.html` and copy what is inside into
A component has no size or duration of its own. It takes both from the composition
you paste it into.
+## Source
+
+
+
+```html
+
+
+
+
+
+
+
+
+
+
+
+
+
FOOTAGE
+
+
+
+
+
+
+
+```
+
+
+
{/* hf:generated-footer */}
Tagged `camera` `zoom` `effect` `creator`.
diff --git a/docs/catalog/components/yt-circle-pointer.mdx b/docs/catalog/components/yt-circle-pointer.mdx
index 1893960f12..5f1581d3c4 100644
--- a/docs/catalog/components/yt-circle-pointer.mdx
+++ b/docs/catalog/components/yt-circle-pointer.mdx
@@ -3,13 +3,13 @@ title: "Pointer Circle + Countdown"
description: "Draw-on annotation ellipse around a target plus a countdown chip that pulses each tick"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add yt-circle-pointer
-```
+
That writes one file: `compositions/components/yt-circle-pointer.html`.
@@ -20,6 +20,183 @@ Open `compositions/components/yt-circle-pointer.html` and copy what is inside in
A component has no size or duration of its own. It takes both from the composition
you paste it into.
+## Source
+
+
+
+```html
+
+
+
+
+
+
+
+
+
+
+
the thing
+
+
+
+
+ 5sec
+
+
+
+
+
+
+```
+
+
+
{/* hf:generated-footer */}
Tagged `annotation` `countdown` `overlay`.
diff --git a/docs/catalog/components/yt-feather-highlight.mdx b/docs/catalog/components/yt-feather-highlight.mdx
index fdb6e72ec9..a09cfee2d0 100644
--- a/docs/catalog/components/yt-feather-highlight.mdx
+++ b/docs/catalog/components/yt-feather-highlight.mdx
@@ -3,13 +3,13 @@ title: "Feathered Spotlight"
description: "Dims the frame except a feathered ellipse; the hole's position and size are CSS variables, so helpers glide the spotlight between targets"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add yt-feather-highlight
-```
+
That writes one file: `compositions/components/yt-feather-highlight.html`.
@@ -20,6 +20,160 @@ Open `compositions/components/yt-feather-highlight.html` and copy what is inside
A component has no size or duration of its own. It takes both from the composition
you paste it into.
+## Source
+
+
+
+```html
+
+
+
+
+
+
+
+
+
+
+
+
A
+
B
+
+
+
+
+
+
+
+```
+
+
+
{/* hf:generated-footer */}
Tagged `highlight` `spotlight` `effect` `overlay`.
diff --git a/docs/catalog/components/yt-screen-warp.mdx b/docs/catalog/components/yt-screen-warp.mdx
index 5e6213c895..a9be92d70e 100644
--- a/docs/catalog/components/yt-screen-warp.mdx
+++ b/docs/catalog/components/yt-screen-warp.mdx
@@ -3,13 +3,13 @@ title: "On-Screen Display Effect"
description: "Grid, scanline, vignette, and sheen overlay plus a 3D-warp wrapper class that makes footage read as if playing on a physical display"
---
-
+import { InstallCommand } from "/snippets/install-command.jsx";
+
+
## Install
-```bash Terminal
-npx hyperframes add yt-screen-warp
-```
+
That writes one file: `compositions/components/yt-screen-warp.html`.
@@ -20,6 +20,138 @@ Open `compositions/components/yt-screen-warp.html` and copy what is inside into
A component has no size or duration of its own. It takes both from the composition
you paste it into.
+## Source
+
+
+
+```html
+
+
+
+
+
+
+
+
+
+
+
+
on screen
+
+
+
+
+
+
+
+```
+
+
+
{/* hf:generated-footer */}
Tagged `effect` `overlay` `texture`.
diff --git a/docs/catalog/components/zoom-through-transition.mdx b/docs/catalog/components/zoom-through-transition.mdx
new file mode 100644
index 0000000000..9c70d1c649
--- /dev/null
+++ b/docs/catalog/components/zoom-through-transition.mdx
@@ -0,0 +1,323 @@
+---
+title: "Zoom Through Transition"
+description: "A transition that zooms through a focal card into the next scene."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html zoom-through-transition.html
+
+
+
+
+
+ Zoom Through Transition
+
+
+
+
+
+
+
+ >
+
Before
+
Zoom Through Transition
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/zoom-through-transition.html`.
+
+## Usage
+
+Open `compositions/components/zoom-through-transition.html` and paste its contents into your composition. See the comment header in the file for timeline integration guidance.
+
+{/* hf:generated-footer */}
+
+Tagged `transition-primitive` `remocn-port`.
+
+## Related topics
+
+- [Browse the complete Catalog](/catalog)
+- [Add assets and Catalog items in Studio](/studio/assets-and-blocks)
+- [Build a richer composition](/go-further)
diff --git a/docs/custom.css b/docs/custom.css
index 3352c918a6..8ade317b65 100644
--- a/docs/custom.css
+++ b/docs/custom.css
@@ -233,6 +233,178 @@ samp {
font-family: "IBM Plex Mono", "SF Mono", "Fira Code", monospace;
}
+/* ── Code block copy button ── */
+
+/*
+ * One button, every code block on the site, and all of it is Tailwind
+ * utilities on the element itself. The shipped bundle has no `--copy-*`
+ * custom property, no documented class and no docs.json key for it (its only
+ * button tokens, `--button-*`, belong to the