diff --git a/docs/catalog/components/bottom-up-letters.mdx b/docs/catalog/components/bottom-up-letters.mdx
new file mode 100644
index 0000000000..19c258b675
--- /dev/null
+++ b/docs/catalog/components/bottom-up-letters.mdx
@@ -0,0 +1,38 @@
+---
+title: "Bottom Up Letters"
+description: "Splits text into letters and reveals each glyph from below with deterministic staggered timing"
+---
+
+# Bottom Up Letters
+
+Splits text into letters and reveals each glyph from below with deterministic staggered timing
+
+`motion-primitive` `text` `letters` `reveal`
+
+
+
+## Install
+
+
+
+```bash Terminal
+npx hyperframes add bottom-up-letters
+```
+
+
+
+## Details
+
+| Property | Value |
+| --- | --- |
+| Type | Component |
+
+## Files
+
+| File | Target | Type |
+| --- | --- | --- |
+| `bottom-up-letters.html` | `compositions/components/bottom-up-letters.html` | hyperframes:snippet |
+
+## 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.
diff --git a/docs/catalog/components/dynamic-grid.mdx b/docs/catalog/components/dynamic-grid.mdx
new file mode 100644
index 0000000000..97d525925a
--- /dev/null
+++ b/docs/catalog/components/dynamic-grid.mdx
@@ -0,0 +1,38 @@
+---
+title: "Dynamic Grid"
+description: "A responsive animated grid background driven by CSS variables for SaaS, code, and data scenes"
+---
+
+# Dynamic Grid
+
+A responsive animated grid background driven by CSS variables for SaaS, code, and data scenes
+
+`motion-primitive` `background` `grid` `ui`
+
+
+
+## Install
+
+
+
+```bash Terminal
+npx hyperframes add dynamic-grid
+```
+
+
+
+## Details
+
+| Property | Value |
+| --- | --- |
+| Type | Component |
+
+## Files
+
+| File | Target | Type |
+| --- | --- | --- |
+| `dynamic-grid.html` | `compositions/components/dynamic-grid.html` | hyperframes:snippet |
+
+## Usage
+
+Open `compositions/components/dynamic-grid.html` and paste its contents into your composition. See the comment header in the file for detailed instructions.
diff --git a/docs/catalog/components/fade-through.mdx b/docs/catalog/components/fade-through.mdx
new file mode 100644
index 0000000000..277b9295d9
--- /dev/null
+++ b/docs/catalog/components/fade-through.mdx
@@ -0,0 +1,38 @@
+---
+title: "Fade Through"
+description: "A calm transition primitive that fades one layer out, passes through a wash, and reveals the next layer"
+---
+
+# Fade Through
+
+A calm transition primitive that fades one layer out, passes through a wash, and reveals the next layer
+
+`motion-primitive` `transition` `fade` `scene`
+
+
+
+## Install
+
+
+
+```bash Terminal
+npx hyperframes add fade-through
+```
+
+
+
+## Details
+
+| Property | Value |
+| --- | --- |
+| Type | Component |
+
+## Files
+
+| File | Target | Type |
+| --- | --- | --- |
+| `fade-through.html` | `compositions/components/fade-through.html` | hyperframes:snippet |
+
+## Usage
+
+Open `compositions/components/fade-through.html` and paste its contents into your composition. See the comment header in the file for detailed instructions.
diff --git a/docs/catalog/components/inline-highlight.mdx b/docs/catalog/components/inline-highlight.mdx
new file mode 100644
index 0000000000..3bc285e218
--- /dev/null
+++ b/docs/catalog/components/inline-highlight.mdx
@@ -0,0 +1,38 @@
+---
+title: "Inline Highlight"
+description: "A clean marker-style inline highlight that animates behind text using a CSS scale variable"
+---
+
+# Inline Highlight
+
+A clean marker-style inline highlight that animates behind text using a CSS scale variable
+
+`motion-primitive` `text` `highlight` `caption`
+
+
+
+## Install
+
+
+
+```bash Terminal
+npx hyperframes add inline-highlight
+```
+
+
+
+## Details
+
+| Property | Value |
+| --- | --- |
+| Type | Component |
+
+## Files
+
+| File | Target | Type |
+| --- | --- | --- |
+| `inline-highlight.html` | `compositions/components/inline-highlight.html` | hyperframes:snippet |
+
+## Usage
+
+Open `compositions/components/inline-highlight.html` and paste its contents into your composition. See the comment header in the file for detailed instructions.
diff --git a/docs/catalog/components/number-wheel.mdx b/docs/catalog/components/number-wheel.mdx
new file mode 100644
index 0000000000..76afe4ff98
--- /dev/null
+++ b/docs/catalog/components/number-wheel.mdx
@@ -0,0 +1,38 @@
+---
+title: "Number Wheel"
+description: "A rolling digit counter primitive for metrics, prices, counts, and scoreboards"
+---
+
+# Number Wheel
+
+A rolling digit counter primitive for metrics, prices, counts, and scoreboards
+
+`motion-primitive` `number` `counter` `data`
+
+
+
+## Install
+
+
+
+```bash Terminal
+npx hyperframes add number-wheel
+```
+
+
+
+## Details
+
+| Property | Value |
+| --- | --- |
+| Type | Component |
+
+## Files
+
+| File | Target | Type |
+| --- | --- | --- |
+| `number-wheel.html` | `compositions/components/number-wheel.html` | hyperframes:snippet |
+
+## Usage
+
+Open `compositions/components/number-wheel.html` and paste its contents into your composition. See the comment header in the file for detailed instructions.
diff --git a/docs/catalog/components/simulated-cursor.mdx b/docs/catalog/components/simulated-cursor.mdx
new file mode 100644
index 0000000000..24bc682c47
--- /dev/null
+++ b/docs/catalog/components/simulated-cursor.mdx
@@ -0,0 +1,38 @@
+---
+title: "Simulated Cursor"
+description: "A lightweight cursor pointer and click pulse for product walkthroughs and agent UI demos"
+---
+
+# Simulated Cursor
+
+A lightweight cursor pointer and click pulse for product walkthroughs and agent UI demos
+
+`motion-primitive` `cursor` `ui` `walkthrough`
+
+
+
+## Install
+
+
+
+```bash Terminal
+npx hyperframes add simulated-cursor
+```
+
+
+
+## Details
+
+| Property | Value |
+| --- | --- |
+| Type | Component |
+
+## Files
+
+| File | Target | Type |
+| --- | --- | --- |
+| `simulated-cursor.html` | `compositions/components/simulated-cursor.html` | hyperframes:snippet |
+
+## Usage
+
+Open `compositions/components/simulated-cursor.html` and paste its contents into your composition. See the comment header in the file for detailed instructions.
diff --git a/docs/catalog/components/soft-blur-in.mdx b/docs/catalog/components/soft-blur-in.mdx
new file mode 100644
index 0000000000..8b4210581f
--- /dev/null
+++ b/docs/catalog/components/soft-blur-in.mdx
@@ -0,0 +1,38 @@
+---
+title: "Soft Blur In"
+description: "A soft opacity, blur, and lift reveal for headlines, captions, and product UI callouts"
+---
+
+# Soft Blur In
+
+A soft opacity, blur, and lift reveal for headlines, captions, and product UI callouts
+
+`motion-primitive` `text` `reveal` `blur`
+
+
+
+## Install
+
+
+
+```bash Terminal
+npx hyperframes add soft-blur-in
+```
+
+
+
+## Details
+
+| Property | Value |
+| --- | --- |
+| Type | Component |
+
+## Files
+
+| File | Target | Type |
+| --- | --- | --- |
+| `soft-blur-in.html` | `compositions/components/soft-blur-in.html` | hyperframes:snippet |
+
+## 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.
diff --git a/docs/catalog/components/tracking-in.mdx b/docs/catalog/components/tracking-in.mdx
new file mode 100644
index 0000000000..9e0efaa3e7
--- /dev/null
+++ b/docs/catalog/components/tracking-in.mdx
@@ -0,0 +1,38 @@
+---
+title: "Tracking In"
+description: "A precise letter-spacing reveal for premium headings and interface labels"
+---
+
+# Tracking In
+
+A precise letter-spacing reveal for premium headings and interface labels
+
+`motion-primitive` `text` `reveal` `typography`
+
+
+
+## Install
+
+
+
+```bash Terminal
+npx hyperframes add tracking-in
+```
+
+
+
+## Details
+
+| Property | Value |
+| --- | --- |
+| Type | Component |
+
+## Files
+
+| File | Target | Type |
+| --- | --- | --- |
+| `tracking-in.html` | `compositions/components/tracking-in.html` | hyperframes:snippet |
+
+## Usage
+
+Open `compositions/components/tracking-in.html` and paste its contents into your composition. See the comment header in the file for detailed instructions.
diff --git a/docs/docs.json b/docs/docs.json
index 7e8ac25996..825e2bfc6a 100644
--- a/docs/docs.json
+++ b/docs/docs.json
@@ -238,6 +238,19 @@
"catalog/blocks/world-map"
]
},
+ {
+ "group": "Motion Primitives",
+ "pages": [
+ "catalog/components/bottom-up-letters",
+ "catalog/components/dynamic-grid",
+ "catalog/components/fade-through",
+ "catalog/components/inline-highlight",
+ "catalog/components/number-wheel",
+ "catalog/components/simulated-cursor",
+ "catalog/components/soft-blur-in",
+ "catalog/components/tracking-in"
+ ]
+ },
{
"group": "Effects",
"pages": [
diff --git a/docs/public/catalog-index.json b/docs/public/catalog-index.json
index 9262a03b44..8916595a00 100644
--- a/docs/public/catalog-index.json
+++ b/docs/public/catalog-index.json
@@ -41,6 +41,20 @@
"href": "/catalog/blocks/blue-sweater-intro-video",
"preview": "https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/blue-sweater-intro-video.png"
},
+ {
+ "name": "bottom-up-letters",
+ "type": "component",
+ "title": "Bottom Up Letters",
+ "description": "Splits text into letters and reveals each glyph from below with deterministic staggered timing",
+ "tags": [
+ "motion-primitive",
+ "text",
+ "letters",
+ "reveal"
+ ],
+ "href": "/catalog/components/bottom-up-letters",
+ "preview": "https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/bottom-up-letters.png"
+ },
{
"name": "caption-blend-difference",
"type": "component",
@@ -337,6 +351,34 @@
"href": "/catalog/blocks/domain-warp-dissolve",
"preview": "https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/domain-warp-dissolve.png"
},
+ {
+ "name": "dynamic-grid",
+ "type": "component",
+ "title": "Dynamic Grid",
+ "description": "A responsive animated grid background driven by CSS variables for SaaS, code, and data scenes",
+ "tags": [
+ "motion-primitive",
+ "background",
+ "grid",
+ "ui"
+ ],
+ "href": "/catalog/components/dynamic-grid",
+ "preview": "https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/dynamic-grid.png"
+ },
+ {
+ "name": "fade-through",
+ "type": "component",
+ "title": "Fade Through",
+ "description": "A calm transition primitive that fades one layer out, passes through a wash, and reveals the next layer",
+ "tags": [
+ "motion-primitive",
+ "transition",
+ "fade",
+ "scene"
+ ],
+ "href": "/catalog/components/fade-through",
+ "preview": "https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/fade-through.png"
+ },
{
"name": "flash-through-white",
"type": "block",
@@ -414,6 +456,20 @@
"href": "/catalog/components/grid-pixelate-wipe",
"preview": "https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/grid-pixelate-wipe.png"
},
+ {
+ "name": "inline-highlight",
+ "type": "component",
+ "title": "Inline Highlight",
+ "description": "A clean marker-style inline highlight that animates behind text using a CSS scale variable",
+ "tags": [
+ "motion-primitive",
+ "text",
+ "highlight",
+ "caption"
+ ],
+ "href": "/catalog/components/inline-highlight",
+ "preview": "https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/inline-highlight.png"
+ },
{
"name": "motion-blur",
"type": "component",
@@ -580,6 +636,20 @@
"href": "/catalog/blocks/north-korea-locked-down",
"preview": "https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/north-korea-locked-down.png"
},
+ {
+ "name": "number-wheel",
+ "type": "component",
+ "title": "Number Wheel",
+ "description": "A rolling digit counter primitive for metrics, prices, counts, and scoreboards",
+ "tags": [
+ "motion-primitive",
+ "number",
+ "counter",
+ "data"
+ ],
+ "href": "/catalog/components/number-wheel",
+ "preview": "https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/number-wheel.png"
+ },
{
"name": "nyc-paris-flight",
"type": "block",
@@ -689,6 +759,34 @@
"href": "/catalog/components/shimmer-sweep",
"preview": "https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/shimmer-sweep.png"
},
+ {
+ "name": "simulated-cursor",
+ "type": "component",
+ "title": "Simulated Cursor",
+ "description": "A lightweight cursor pointer and click pulse for product walkthroughs and agent UI demos",
+ "tags": [
+ "motion-primitive",
+ "cursor",
+ "ui",
+ "walkthrough"
+ ],
+ "href": "/catalog/components/simulated-cursor",
+ "preview": "https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/simulated-cursor.png"
+ },
+ {
+ "name": "soft-blur-in",
+ "type": "component",
+ "title": "Soft Blur In",
+ "description": "A soft opacity, blur, and lift reveal for headlines, captions, and product UI callouts",
+ "tags": [
+ "motion-primitive",
+ "text",
+ "reveal",
+ "blur"
+ ],
+ "href": "/catalog/components/soft-blur-in",
+ "preview": "https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/soft-blur-in.png"
+ },
{
"name": "spain-map",
"type": "block",
@@ -769,6 +867,20 @@
"href": "/catalog/blocks/tiktok-follow",
"preview": "https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/tiktok-follow.png"
},
+ {
+ "name": "tracking-in",
+ "type": "component",
+ "title": "Tracking In",
+ "description": "A precise letter-spacing reveal for premium headings and interface labels",
+ "tags": [
+ "motion-primitive",
+ "text",
+ "reveal",
+ "typography"
+ ],
+ "href": "/catalog/components/tracking-in",
+ "preview": "https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/tracking-in.png"
+ },
{
"name": "transitions-3d",
"type": "block",
diff --git a/packages/core/src/registry/catalogGeneratorInstructions.test.ts b/packages/core/src/registry/catalogGeneratorInstructions.test.ts
index 5871339b43..8336a13019 100644
--- a/packages/core/src/registry/catalogGeneratorInstructions.test.ts
+++ b/packages/core/src/registry/catalogGeneratorInstructions.test.ts
@@ -16,3 +16,21 @@ describe("catalog generator texture instructions", () => {
expect(generatorSource).toContain("real \\`
+
+
+
+
diff --git a/registry/components/bottom-up-letters/demo.html b/registry/components/bottom-up-letters/demo.html
new file mode 100644
index 0000000000..35bec6c747
--- /dev/null
+++ b/registry/components/bottom-up-letters/demo.html
@@ -0,0 +1,73 @@
+
+
+
+
+
+ Bottom Up Letters - Demo
+
+
+
+
+
+
+
diff --git a/registry/components/bottom-up-letters/registry-item.json b/registry/components/bottom-up-letters/registry-item.json
new file mode 100644
index 0000000000..3f822b3f93
--- /dev/null
+++ b/registry/components/bottom-up-letters/registry-item.json
@@ -0,0 +1,18 @@
+{
+ "$schema": "https://hyperframes.heygen.com/schema/registry-item.json",
+ "name": "bottom-up-letters",
+ "type": "hyperframes:component",
+ "title": "Bottom Up Letters",
+ "description": "Splits text into letters and reveals each glyph from below with deterministic staggered timing",
+ "tags": ["motion-primitive", "text", "letters", "reveal"],
+ "files": [
+ {
+ "path": "bottom-up-letters.html",
+ "target": "compositions/components/bottom-up-letters.html",
+ "type": "hyperframes:snippet"
+ }
+ ],
+ "preview": {
+ "poster": "https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/bottom-up-letters.png"
+ }
+}
diff --git a/registry/components/dynamic-grid/demo.html b/registry/components/dynamic-grid/demo.html
new file mode 100644
index 0000000000..627c6d598e
--- /dev/null
+++ b/registry/components/dynamic-grid/demo.html
@@ -0,0 +1,93 @@
+
+
+
+
+
+ Dynamic Grid - Demo
+
+
+
+
+
+
+
+
Dynamic grid motion
+
+ A web-native background primitive for product demos, explainers, and data scenes.
+
+
+
+
+
+
diff --git a/registry/components/dynamic-grid/dynamic-grid.html b/registry/components/dynamic-grid/dynamic-grid.html
new file mode 100644
index 0000000000..169f8e5380
--- /dev/null
+++ b/registry/components/dynamic-grid/dynamic-grid.html
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
diff --git a/registry/components/dynamic-grid/registry-item.json b/registry/components/dynamic-grid/registry-item.json
new file mode 100644
index 0000000000..21041513f4
--- /dev/null
+++ b/registry/components/dynamic-grid/registry-item.json
@@ -0,0 +1,18 @@
+{
+ "$schema": "https://hyperframes.heygen.com/schema/registry-item.json",
+ "name": "dynamic-grid",
+ "type": "hyperframes:component",
+ "title": "Dynamic Grid",
+ "description": "A responsive animated grid background driven by CSS variables for SaaS, code, and data scenes",
+ "tags": ["motion-primitive", "background", "grid", "ui"],
+ "files": [
+ {
+ "path": "dynamic-grid.html",
+ "target": "compositions/components/dynamic-grid.html",
+ "type": "hyperframes:snippet"
+ }
+ ],
+ "preview": {
+ "poster": "https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/dynamic-grid.png"
+ }
+}
diff --git a/registry/components/fade-through/demo.html b/registry/components/fade-through/demo.html
new file mode 100644
index 0000000000..1d77709e81
--- /dev/null
+++ b/registry/components/fade-through/demo.html
@@ -0,0 +1,75 @@
+
+
+
+
+
+ Fade Through - Demo
+
+
+
+
+
+
+
diff --git a/registry/components/fade-through/fade-through.html b/registry/components/fade-through/fade-through.html
new file mode 100644
index 0000000000..8a80a4b75c
--- /dev/null
+++ b/registry/components/fade-through/fade-through.html
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
diff --git a/registry/components/fade-through/registry-item.json b/registry/components/fade-through/registry-item.json
new file mode 100644
index 0000000000..afb8f12b48
--- /dev/null
+++ b/registry/components/fade-through/registry-item.json
@@ -0,0 +1,18 @@
+{
+ "$schema": "https://hyperframes.heygen.com/schema/registry-item.json",
+ "name": "fade-through",
+ "type": "hyperframes:component",
+ "title": "Fade Through",
+ "description": "A calm transition primitive that fades one layer out, passes through a wash, and reveals the next layer",
+ "tags": ["motion-primitive", "transition", "fade", "scene"],
+ "files": [
+ {
+ "path": "fade-through.html",
+ "target": "compositions/components/fade-through.html",
+ "type": "hyperframes:snippet"
+ }
+ ],
+ "preview": {
+ "poster": "https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/fade-through.png"
+ }
+}
diff --git a/registry/components/inline-highlight/demo.html b/registry/components/inline-highlight/demo.html
new file mode 100644
index 0000000000..238493fe65
--- /dev/null
+++ b/registry/components/inline-highlight/demo.html
@@ -0,0 +1,81 @@
+
+
+
+
+
+ Inline Highlight - Demo
+
+
+
+
+
+
+ Turn the important words into
+ animated emphasis without rebuilding the scene.
+
+
+
+
+
diff --git a/registry/components/inline-highlight/inline-highlight.html b/registry/components/inline-highlight/inline-highlight.html
new file mode 100644
index 0000000000..9cf87de4c5
--- /dev/null
+++ b/registry/components/inline-highlight/inline-highlight.html
@@ -0,0 +1,39 @@
+
+
+
+
+
diff --git a/registry/components/inline-highlight/registry-item.json b/registry/components/inline-highlight/registry-item.json
new file mode 100644
index 0000000000..635c0e7dbd
--- /dev/null
+++ b/registry/components/inline-highlight/registry-item.json
@@ -0,0 +1,18 @@
+{
+ "$schema": "https://hyperframes.heygen.com/schema/registry-item.json",
+ "name": "inline-highlight",
+ "type": "hyperframes:component",
+ "title": "Inline Highlight",
+ "description": "A clean marker-style inline highlight that animates behind text using a CSS scale variable",
+ "tags": ["motion-primitive", "text", "highlight", "caption"],
+ "files": [
+ {
+ "path": "inline-highlight.html",
+ "target": "compositions/components/inline-highlight.html",
+ "type": "hyperframes:snippet"
+ }
+ ],
+ "preview": {
+ "poster": "https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/inline-highlight.png"
+ }
+}
diff --git a/registry/components/number-wheel/demo.html b/registry/components/number-wheel/demo.html
new file mode 100644
index 0000000000..2a96b9ef7a
--- /dev/null
+++ b/registry/components/number-wheel/demo.html
@@ -0,0 +1,116 @@
+
+
+
+
+
+ Number Wheel - Demo
+
+
+
+
+
+
+
diff --git a/registry/components/number-wheel/number-wheel.html b/registry/components/number-wheel/number-wheel.html
new file mode 100644
index 0000000000..82031a4048
--- /dev/null
+++ b/registry/components/number-wheel/number-wheel.html
@@ -0,0 +1,73 @@
+
+
+
+
+
+
+
diff --git a/registry/components/number-wheel/registry-item.json b/registry/components/number-wheel/registry-item.json
new file mode 100644
index 0000000000..408c71de26
--- /dev/null
+++ b/registry/components/number-wheel/registry-item.json
@@ -0,0 +1,18 @@
+{
+ "$schema": "https://hyperframes.heygen.com/schema/registry-item.json",
+ "name": "number-wheel",
+ "type": "hyperframes:component",
+ "title": "Number Wheel",
+ "description": "A rolling digit counter primitive for metrics, prices, counts, and scoreboards",
+ "tags": ["motion-primitive", "number", "counter", "data"],
+ "files": [
+ {
+ "path": "number-wheel.html",
+ "target": "compositions/components/number-wheel.html",
+ "type": "hyperframes:snippet"
+ }
+ ],
+ "preview": {
+ "poster": "https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/number-wheel.png"
+ }
+}
diff --git a/registry/components/simulated-cursor/demo.html b/registry/components/simulated-cursor/demo.html
new file mode 100644
index 0000000000..77a7bdb903
--- /dev/null
+++ b/registry/components/simulated-cursor/demo.html
@@ -0,0 +1,123 @@
+
+
+
+
+
+ Simulated Cursor - Demo
+
+
+
+
+
+
+
Point at the action without screen recording.
+
Generate video
+
+
+
+
+
+
diff --git a/registry/components/simulated-cursor/registry-item.json b/registry/components/simulated-cursor/registry-item.json
new file mode 100644
index 0000000000..04c09e987b
--- /dev/null
+++ b/registry/components/simulated-cursor/registry-item.json
@@ -0,0 +1,18 @@
+{
+ "$schema": "https://hyperframes.heygen.com/schema/registry-item.json",
+ "name": "simulated-cursor",
+ "type": "hyperframes:component",
+ "title": "Simulated Cursor",
+ "description": "A lightweight cursor pointer and click pulse for product walkthroughs and agent UI demos",
+ "tags": ["motion-primitive", "cursor", "ui", "walkthrough"],
+ "files": [
+ {
+ "path": "simulated-cursor.html",
+ "target": "compositions/components/simulated-cursor.html",
+ "type": "hyperframes:snippet"
+ }
+ ],
+ "preview": {
+ "poster": "https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/simulated-cursor.png"
+ }
+}
diff --git a/registry/components/simulated-cursor/simulated-cursor.html b/registry/components/simulated-cursor/simulated-cursor.html
new file mode 100644
index 0000000000..0f616297a8
--- /dev/null
+++ b/registry/components/simulated-cursor/simulated-cursor.html
@@ -0,0 +1,51 @@
+
+
+
+
+
+
+
diff --git a/registry/components/soft-blur-in/demo.html b/registry/components/soft-blur-in/demo.html
new file mode 100644
index 0000000000..128dd4baf6
--- /dev/null
+++ b/registry/components/soft-blur-in/demo.html
@@ -0,0 +1,102 @@
+
+
+
+
+
+ Soft Blur In - Demo
+
+
+
+
+
+
+
Motion Primitive
+
Soft blur reveals that feel cinematic.
+
+ Use it for titles, labels, stats, and scene intros without adding a framework.
+
+
+
+
+
+
diff --git a/registry/components/soft-blur-in/registry-item.json b/registry/components/soft-blur-in/registry-item.json
new file mode 100644
index 0000000000..21bc1639de
--- /dev/null
+++ b/registry/components/soft-blur-in/registry-item.json
@@ -0,0 +1,18 @@
+{
+ "$schema": "https://hyperframes.heygen.com/schema/registry-item.json",
+ "name": "soft-blur-in",
+ "type": "hyperframes:component",
+ "title": "Soft Blur In",
+ "description": "A soft opacity, blur, and lift reveal for headlines, captions, and product UI callouts",
+ "tags": ["motion-primitive", "text", "reveal", "blur"],
+ "files": [
+ {
+ "path": "soft-blur-in.html",
+ "target": "compositions/components/soft-blur-in.html",
+ "type": "hyperframes:snippet"
+ }
+ ],
+ "preview": {
+ "poster": "https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/soft-blur-in.png"
+ }
+}
diff --git a/registry/components/soft-blur-in/soft-blur-in.html b/registry/components/soft-blur-in/soft-blur-in.html
new file mode 100644
index 0000000000..121cc4fb1c
--- /dev/null
+++ b/registry/components/soft-blur-in/soft-blur-in.html
@@ -0,0 +1,30 @@
+
+
+
+
+
diff --git a/registry/components/tracking-in/demo.html b/registry/components/tracking-in/demo.html
new file mode 100644
index 0000000000..0a315e166f
--- /dev/null
+++ b/registry/components/tracking-in/demo.html
@@ -0,0 +1,87 @@
+
+
+
+
+
+ Tracking In - Demo
+
+
+
+
+
+
+
Editorial motion
+
TRACKING IN
+
+
+
+
+
diff --git a/registry/components/tracking-in/registry-item.json b/registry/components/tracking-in/registry-item.json
new file mode 100644
index 0000000000..e28221c37b
--- /dev/null
+++ b/registry/components/tracking-in/registry-item.json
@@ -0,0 +1,18 @@
+{
+ "$schema": "https://hyperframes.heygen.com/schema/registry-item.json",
+ "name": "tracking-in",
+ "type": "hyperframes:component",
+ "title": "Tracking In",
+ "description": "A precise letter-spacing reveal for premium headings and interface labels",
+ "tags": ["motion-primitive", "text", "reveal", "typography"],
+ "files": [
+ {
+ "path": "tracking-in.html",
+ "target": "compositions/components/tracking-in.html",
+ "type": "hyperframes:snippet"
+ }
+ ],
+ "preview": {
+ "poster": "https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/tracking-in.png"
+ }
+}
diff --git a/registry/components/tracking-in/tracking-in.html b/registry/components/tracking-in/tracking-in.html
new file mode 100644
index 0000000000..abeccd5e51
--- /dev/null
+++ b/registry/components/tracking-in/tracking-in.html
@@ -0,0 +1,28 @@
+
+
+
+
+
diff --git a/registry/registry.json b/registry/registry.json
index 32babd0aad..18103cab06 100644
--- a/registry/registry.json
+++ b/registry/registry.json
@@ -79,6 +79,38 @@
"name": "shimmer-sweep",
"type": "hyperframes:component"
},
+ {
+ "name": "soft-blur-in",
+ "type": "hyperframes:component"
+ },
+ {
+ "name": "tracking-in",
+ "type": "hyperframes:component"
+ },
+ {
+ "name": "bottom-up-letters",
+ "type": "hyperframes:component"
+ },
+ {
+ "name": "inline-highlight",
+ "type": "hyperframes:component"
+ },
+ {
+ "name": "number-wheel",
+ "type": "hyperframes:component"
+ },
+ {
+ "name": "simulated-cursor",
+ "type": "hyperframes:component"
+ },
+ {
+ "name": "fade-through",
+ "type": "hyperframes:component"
+ },
+ {
+ "name": "dynamic-grid",
+ "type": "hyperframes:component"
+ },
{
"name": "grid-pixelate-wipe",
"type": "hyperframes:component"
diff --git a/scripts/generate-catalog-pages.ts b/scripts/generate-catalog-pages.ts
index 5b1db86f11..2cfce945f6 100644
--- a/scripts/generate-catalog-pages.ts
+++ b/scripts/generate-catalog-pages.ts
@@ -502,7 +502,7 @@ function main(): void {
const publicDir = join(docsDir, "public");
mkdirSync(publicDir, { recursive: true });
const indexPath = join(publicDir, "catalog-index.json");
- writeFileSync(indexPath, JSON.stringify(catalogIndex, null, 2) + "\n", "utf-8");
+ writeFileSync(indexPath, JSON.stringify(catalogIndex, null, 4) + "\n", "utf-8");
console.log(`\n ✓ public/catalog-index.json (${catalogIndex.length} items)`);
// Update docs.json navigation with generated catalog pages.
@@ -527,8 +527,11 @@ function main(): void {
"CSS Transitions": 5,
Showcases: 6,
Data: 7,
- Effects: 8,
- Blocks: 9,
+ "Motion Primitives": 8,
+ "Text Effects": 9,
+ Effects: 10,
+ Blocks: 11,
+ "Code Snippets": 12,
};
// fallow-ignore-next-line complexity
@@ -542,6 +545,9 @@ function main(): void {
// Code animations (morph, flight, diff, …) — keyed on the code-animation tag so
// they group separately from the static code-snippet themes.
if (tags.includes("code-animation")) return "Code Animations";
+ if (tags.includes("motion-primitive")) return "Motion Primitives";
+ if (tags.includes("text-effect")) return "Text Effects";
+ if (entry.name.startsWith("code-snippet-")) return "Code Snippets";
// Single-tag mapping
if (tags.includes("social")) return "Social Overlays";
if (tags.includes("transition"))