diff --git a/docs/catalog/components/kinetic-center-build.mdx b/docs/catalog/components/kinetic-center-build.mdx
new file mode 100644
index 000000000..1a8d1e62d
--- /dev/null
+++ b/docs/catalog/components/kinetic-center-build.mdx
@@ -0,0 +1,645 @@
+---
+title: "Kinetic Center Build"
+description: "Words enter from the right and push the growing phrase left until the final line locks centered."
+---
+
+import { InstallCommand } from "/snippets/install-command.jsx";
+import { VariablesExplorer } from "/snippets/variables-explorer.jsx";
+
+
+
+```html kinetic-center-build.html
+
+
+
+
+
+ Kinetic Center Build
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+## Install
+
+
+
+That writes one file: `compositions/components/kinetic-center-build.html`.
+
+## Paste it into your composition
+
+Open `compositions/components/kinetic-center-build.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.
+
+## 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 |
+| -------------- | ------------------ | -------------------------- | ---------------------------------------------------------------------------- |
+| `text` | `Words push left.` | string | Short phrase that builds one word at a time. |
+| `font_size` | `72` | 36px to 160px, step 2px | Maximum text size in pixels. Longer phrases shrink to stay inside the frame. |
+| `entry_offset` | `88` | 20px to 160px, step 4px | Horizontal distance each new word travels before it lands. |
+| `color` | `#171717` | color | Text color for the full phrase. |
+| `font_weight` | `600` | `500`, `600`, `700`, `800` | Weight used by every word in the phrase. |
+
+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
+
+
+
+
+
+ Kinetic Center Build
+
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+{/* hf:generated-footer */}
+
+Tagged `motion-primitive` `text-effects` `kinetic-type` `reveal` `remocn-port`.
+
+Created by [Remocn](https://github.com/Remocn/remocn).
+
+## 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/docs.json b/docs/docs.json
index 8ac6b1932..f2744d4f0 100644
--- a/docs/docs.json
+++ b/docs/docs.json
@@ -297,6 +297,7 @@
"catalog/blocks/hw-title",
"catalog/blocks/hw-write-title",
"catalog/components/inline-highlight",
+ "catalog/components/kinetic-center-build",
"catalog/components/kinetic-type-swap",
"catalog/components/line-by-line-slide",
"catalog/components/line-swap",
diff --git a/docs/public/catalog-index.json b/docs/public/catalog-index.json
index 0d0f29033..721a0e265 100644
--- a/docs/public/catalog-index.json
+++ b/docs/public/catalog-index.json
@@ -2241,6 +2241,21 @@
"href": "/catalog/components/keyframe-scrub-stack",
"preview": "https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/keyframe-scrub-stack.png"
},
+ {
+ "name": "kinetic-center-build",
+ "type": "component",
+ "title": "Kinetic Center Build",
+ "description": "Words enter from the right and push the growing phrase left until the final line locks centered.",
+ "tags": [
+ "motion-primitive",
+ "text-effects",
+ "kinetic-type",
+ "reveal",
+ "remocn-port"
+ ],
+ "href": "/catalog/components/kinetic-center-build",
+ "preview": "https://static.heygen.ai/hyperframes-oss/docs/images/catalog/components/kinetic-center-build.png"
+ },
{
"name": "kinetic-type-swap",
"type": "component",
diff --git a/docs/public/catalog/components/kinetic-center-build.json b/docs/public/catalog/components/kinetic-center-build.json
new file mode 100644
index 000000000..186af952f
--- /dev/null
+++ b/docs/public/catalog/components/kinetic-center-build.json
@@ -0,0 +1,3 @@
+{
+ "html": "\n\n\n \n \n \n \n\n\n \n \n\n"
+}
diff --git a/registry/catalog-artifact/local-vectors.bin b/registry/catalog-artifact/local-vectors.bin
index 9a7755d02..2affb288b 100644
Binary files a/registry/catalog-artifact/local-vectors.bin and b/registry/catalog-artifact/local-vectors.bin differ
diff --git a/registry/catalog-artifact/local-vectors.json b/registry/catalog-artifact/local-vectors.json
index f99edde1b..af3bca1dd 100644
--- a/registry/catalog-artifact/local-vectors.json
+++ b/registry/catalog-artifact/local-vectors.json
@@ -2,7 +2,7 @@
"model": "bge-small-en-v1.5",
"modelRevision": "ea104dacec62c0de699686887e3f920caeb4f3e3",
"dimensions": 384,
- "revision": "2611d04335aacf5a70649019f948e5ba2f474c38bc45cd59e179d71294cd8cb8",
+ "revision": "fa440b4e9cf8dd760a65776d39a118a57e02fb52c1b0efd9c1d2e9ec04b11930",
"names": [
"ai-chat-reveal",
"animated-bar-chart",
@@ -156,6 +156,7 @@
"ios26-liquid-glass",
"iris-reveal",
"keyframe-scrub-stack",
+ "kinetic-center-build",
"kinetic-type-swap",
"light-leak",
"light-sweep-pass",
diff --git a/registry/components/kinetic-center-build/demo.html b/registry/components/kinetic-center-build/demo.html
new file mode 100644
index 000000000..9cd36d3d2
--- /dev/null
+++ b/registry/components/kinetic-center-build/demo.html
@@ -0,0 +1,86 @@
+
+
+
+
+
+
+ Kinetic Center Build Demo
+
+
+
+
+
+
+
+
+
+
diff --git a/registry/components/kinetic-center-build/kinetic-center-build.html b/registry/components/kinetic-center-build/kinetic-center-build.html
new file mode 100644
index 000000000..809e8467f
--- /dev/null
+++ b/registry/components/kinetic-center-build/kinetic-center-build.html
@@ -0,0 +1,284 @@
+
+
+
+
+
+ Kinetic Center Build
+
+
+
+
+
+
+
+
+
+
+
diff --git a/registry/components/kinetic-center-build/registry-item.json b/registry/components/kinetic-center-build/registry-item.json
new file mode 100644
index 000000000..fe2d37d95
--- /dev/null
+++ b/registry/components/kinetic-center-build/registry-item.json
@@ -0,0 +1,85 @@
+{
+ "$schema": "https://hyperframes.heygen.com/schema/registry-item.json",
+ "name": "kinetic-center-build",
+ "type": "hyperframes:component",
+ "title": "Kinetic Center Build",
+ "description": "Words enter from the right and push the growing phrase left until the final line locks centered.",
+ "tags": ["motion-primitive", "text-effects", "kinetic-type", "reveal", "remocn-port"],
+ "jobs": ["reveal"],
+ "family": "text-effects",
+ "profile": "build",
+ "author": "Remocn",
+ "authorUrl": "https://github.com/Remocn/remocn",
+ "license": "MIT",
+ "syncPoints": [
+ {
+ "id": "phrase-locked",
+ "phase": "in",
+ "offset": 1.2,
+ "description": "Calibrated to the default three-word text; custom word counts change the lock time."
+ }
+ ],
+ "files": [
+ {
+ "path": "kinetic-center-build.html",
+ "target": "compositions/components/kinetic-center-build.html",
+ "type": "hyperframes:snippet"
+ }
+ ],
+ "variables": [
+ {
+ "id": "text",
+ "type": "string",
+ "role": "content",
+ "label": "Text",
+ "description": "Short phrase that builds one word at a time.",
+ "default": "Words push left."
+ },
+ {
+ "id": "font_size",
+ "type": "number",
+ "role": "style",
+ "label": "Font size",
+ "description": "Maximum text size in pixels. Longer phrases shrink to stay inside the frame.",
+ "default": 72,
+ "min": 36,
+ "max": 160,
+ "step": 2,
+ "unit": "px"
+ },
+ {
+ "id": "entry_offset",
+ "type": "number",
+ "role": "motion",
+ "label": "Entry offset",
+ "description": "Horizontal distance each new word travels before it lands.",
+ "default": 88,
+ "min": 20,
+ "max": 160,
+ "step": 4,
+ "unit": "px"
+ },
+ {
+ "id": "color",
+ "type": "color",
+ "role": "style",
+ "label": "Color",
+ "description": "Text color for the full phrase.",
+ "default": "#171717"
+ },
+ {
+ "id": "font_weight",
+ "type": "enum",
+ "role": "style",
+ "label": "Font weight",
+ "description": "Weight used by every word in the phrase.",
+ "default": "600",
+ "options": [
+ { "value": "500", "label": "Medium" },
+ { "value": "600", "label": "Semibold" },
+ { "value": "700", "label": "Bold" },
+ { "value": "800", "label": "Extra bold" }
+ ]
+ }
+ ]
+}
diff --git a/registry/registry.json b/registry/registry.json
index 6372021e2..aa25fe38a 100644
--- a/registry/registry.json
+++ b/registry/registry.json
@@ -995,6 +995,10 @@
"name": "keyframe-scrub-stack",
"type": "hyperframes:component"
},
+ {
+ "name": "kinetic-center-build",
+ "type": "hyperframes:component"
+ },
{
"name": "kinetic-type-swap",
"type": "hyperframes:component"
@@ -1533,6 +1537,6 @@
}
],
"catalogArtifact": {
- "revision": "2611d04335aacf5a70649019f948e5ba2f474c38bc45cd59e179d71294cd8cb8"
+ "revision": "fa440b4e9cf8dd760a65776d39a118a57e02fb52c1b0efd9c1d2e9ec04b11930"
}
}