diff --git a/docs/catalog/blocks/magic-book.mdx b/docs/catalog/blocks/magic-book.mdx
new file mode 100644
index 000000000..ac767c420
--- /dev/null
+++ b/docs/catalog/blocks/magic-book.mdx
@@ -0,0 +1,50 @@
+---
+title: "Magic Book"
+description: "A cinematic 3D spellbook dissolve with glowing rings, magical dust, and GPGPU particle vapor."
+---
+
+# Magic Book
+
+A cinematic 3D spellbook dissolve with glowing rings, magical dust, and GPGPU particle vapor.
+
+`vfx` `3d` `particles` `cinematic`
+
+
+
+## Install
+
+
+
+```bash Terminal
+npx hyperframes add magic-book
+```
+
+
+
+## Details
+
+| Property | Value |
+| --- | --- |
+| Type | Block |
+| Dimensions | 1920 x 1080 |
+| Duration | 8s |
+
+## Files
+
+| File | Target | Type |
+| --- | --- | --- |
+| `magic-book.html` | `compositions/magic-book.html` | hyperframes:composition |
+| `scene.gltf` | `compositions/scene.gltf` | asset |
+| `scene.bin` | `compositions/scene.bin` | asset |
+| `textures/material_0_baseColor.png` | `compositions/textures/material_0_baseColor.png` | asset |
+| `textures/material_0_emissive.png` | `compositions/textures/material_0_emissive.png` | asset |
+| `textures/material_0_metallicRoughness.png` | `compositions/textures/material_0_metallicRoughness.png` | asset |
+| `textures/material_0_normal.png` | `compositions/textures/material_0_normal.png` | asset |
+
+## Usage
+
+After installing, add the block to your host composition:
+
+```html
+
+```
diff --git a/docs/docs.json b/docs/docs.json
index 57affc5a0..310d524b3 100644
--- a/docs/docs.json
+++ b/docs/docs.json
@@ -161,6 +161,7 @@
"catalog/blocks/app-showcase",
"catalog/blocks/apple-money-count",
"catalog/blocks/blue-sweater-intro-video",
+ "catalog/blocks/magic-book",
"catalog/blocks/north-korea-locked-down",
"catalog/blocks/nyc-paris-flight",
"catalog/blocks/ui-3d-reveal",
diff --git a/docs/public/catalog-index.json b/docs/public/catalog-index.json
index 736651727..087c733fe 100644
--- a/docs/public/catalog-index.json
+++ b/docs/public/catalog-index.json
@@ -230,6 +230,20 @@
"href": "/catalog/blocks/macos-notification",
"preview": "https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/macos-notification.png"
},
+ {
+ "name": "magic-book",
+ "type": "block",
+ "title": "Magic Book",
+ "description": "A cinematic 3D spellbook dissolve with glowing rings, magical dust, and GPGPU particle vapor.",
+ "tags": [
+ "vfx",
+ "3d",
+ "particles",
+ "cinematic"
+ ],
+ "href": "/catalog/blocks/magic-book",
+ "preview": "https://static.heygen.ai/hyperframes-oss/docs/images/catalog/blocks/magic-book.png"
+ },
{
"name": "north-korea-locked-down",
"type": "block",
diff --git a/registry/blocks/magic-book/magic-book.html b/registry/blocks/magic-book/magic-book.html
new file mode 100644
index 000000000..1927924e9
--- /dev/null
+++ b/registry/blocks/magic-book/magic-book.html
@@ -0,0 +1,900 @@
+
+
+
+
+
+ Magic Book
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/registry/blocks/magic-book/registry-item.json b/registry/blocks/magic-book/registry-item.json
new file mode 100644
index 000000000..9e41725da
--- /dev/null
+++ b/registry/blocks/magic-book/registry-item.json
@@ -0,0 +1,50 @@
+{
+ "$schema": "https://hyperframes.heygen.com/schema/registry-item.json",
+ "name": "magic-book",
+ "type": "hyperframes:block",
+ "title": "Magic Book",
+ "description": "A cinematic 3D spellbook dissolve with glowing rings, magical dust, and GPGPU particle vapor.",
+ "tags": ["vfx", "3d", "particles", "cinematic"],
+ "dimensions": {
+ "width": 1920,
+ "height": 1080
+ },
+ "duration": 8,
+ "files": [
+ {
+ "path": "magic-book.html",
+ "target": "compositions/magic-book.html",
+ "type": "hyperframes:composition"
+ },
+ {
+ "path": "scene.gltf",
+ "target": "compositions/scene.gltf",
+ "type": "asset"
+ },
+ {
+ "path": "scene.bin",
+ "target": "compositions/scene.bin",
+ "type": "asset"
+ },
+ {
+ "path": "textures/material_0_baseColor.png",
+ "target": "compositions/textures/material_0_baseColor.png",
+ "type": "asset"
+ },
+ {
+ "path": "textures/material_0_emissive.png",
+ "target": "compositions/textures/material_0_emissive.png",
+ "type": "asset"
+ },
+ {
+ "path": "textures/material_0_metallicRoughness.png",
+ "target": "compositions/textures/material_0_metallicRoughness.png",
+ "type": "asset"
+ },
+ {
+ "path": "textures/material_0_normal.png",
+ "target": "compositions/textures/material_0_normal.png",
+ "type": "asset"
+ }
+ ]
+}
diff --git a/registry/blocks/magic-book/scene.bin b/registry/blocks/magic-book/scene.bin
new file mode 100644
index 000000000..9ea084036
Binary files /dev/null and b/registry/blocks/magic-book/scene.bin differ
diff --git a/registry/blocks/magic-book/scene.gltf b/registry/blocks/magic-book/scene.gltf
new file mode 100644
index 000000000..3e6c070ac
--- /dev/null
+++ b/registry/blocks/magic-book/scene.gltf
@@ -0,0 +1,255 @@
+{
+ "accessors": [
+ {
+ "bufferView": 2,
+ "componentType": 5126,
+ "count": 996,
+ "max": [
+ 14.8149995803833,
+ 21.734699249267578,
+ 9.111300468444824
+ ],
+ "min": [
+ -16.324199676513672,
+ -21.736099243164063,
+ -2.6331000328063965
+ ],
+ "type": "VEC3"
+ },
+ {
+ "bufferView": 2,
+ "byteOffset": 11952,
+ "componentType": 5126,
+ "count": 996,
+ "max": [
+ 1.0,
+ 1.0,
+ 1.0
+ ],
+ "min": [
+ -1.0,
+ -1.0,
+ -1.0
+ ],
+ "type": "VEC3"
+ },
+ {
+ "bufferView": 3,
+ "componentType": 5126,
+ "count": 996,
+ "max": [
+ 0.9999990463256836,
+ 1.0,
+ 0.9999607801437378,
+ 1.0
+ ],
+ "min": [
+ -0.9999960064888,
+ -1.0,
+ -1.0,
+ -1.0
+ ],
+ "type": "VEC4"
+ },
+ {
+ "bufferView": 1,
+ "componentType": 5126,
+ "count": 996,
+ "max": [
+ 0.9912999868392944,
+ 0.9923999905586243
+ ],
+ "min": [
+ 0.00930000003427267,
+ 0.00989999994635582
+ ],
+ "type": "VEC2"
+ },
+ {
+ "bufferView": 0,
+ "componentType": 5125,
+ "count": 3912,
+ "type": "SCALAR"
+ }
+ ],
+ "asset": {
+ "extras": {
+ "author": "Jom (https://sketchfab.com/jom239300891)",
+ "license": "CC-BY-4.0 (http://creativecommons.org/licenses/by/4.0/)",
+ "source": "https://sketchfab.com/3d-models/magic-book-628b850d708f4b858ae0b2615bb39ce0",
+ "title": "Magic Book"
+ },
+ "generator": "Sketchfab-12.67.0",
+ "version": "2.0"
+ },
+ "bufferViews": [
+ {
+ "buffer": 0,
+ "byteLength": 15648,
+ "name": "floatBufferViews",
+ "target": 34963
+ },
+ {
+ "buffer": 0,
+ "byteLength": 7968,
+ "byteOffset": 15648,
+ "byteStride": 8,
+ "name": "floatBufferViews",
+ "target": 34962
+ },
+ {
+ "buffer": 0,
+ "byteLength": 23904,
+ "byteOffset": 23616,
+ "byteStride": 12,
+ "name": "floatBufferViews",
+ "target": 34962
+ },
+ {
+ "buffer": 0,
+ "byteLength": 15936,
+ "byteOffset": 47520,
+ "byteStride": 16,
+ "name": "floatBufferViews",
+ "target": 34962
+ }
+ ],
+ "buffers": [
+ {
+ "byteLength": 63456,
+ "uri": "scene.bin"
+ }
+ ],
+ "images": [
+ {
+ "uri": "textures/material_0_baseColor.png"
+ },
+ {
+ "uri": "textures/material_0_metallicRoughness.png"
+ },
+ {
+ "uri": "textures/material_0_emissive.png"
+ },
+ {
+ "uri": "textures/material_0_normal.png"
+ }
+ ],
+ "materials": [
+ {
+ "doubleSided": true,
+ "emissiveFactor": [
+ 1.0,
+ 1.0,
+ 1.0
+ ],
+ "emissiveTexture": {
+ "index": 2
+ },
+ "name": "material_0",
+ "normalTexture": {
+ "index": 3,
+ "scale": 0.5679306402439024
+ },
+ "occlusionTexture": {
+ "index": 1
+ },
+ "pbrMetallicRoughness": {
+ "baseColorTexture": {
+ "index": 0
+ },
+ "metallicRoughnessTexture": {
+ "index": 1
+ }
+ }
+ }
+ ],
+ "meshes": [
+ {
+ "name": "Object_0",
+ "primitives": [
+ {
+ "attributes": {
+ "NORMAL": 1,
+ "POSITION": 0,
+ "TANGENT": 2,
+ "TEXCOORD_0": 3
+ },
+ "indices": 4,
+ "material": 0,
+ "mode": 4
+ }
+ ]
+ }
+ ],
+ "nodes": [
+ {
+ "children": [
+ 1
+ ],
+ "matrix": [
+ 1.0,
+ 0.0,
+ 0.0,
+ 0.0,
+ 0.0,
+ 2.220446049250313e-16,
+ -1.0,
+ 0.0,
+ 0.0,
+ 1.0,
+ 2.220446049250313e-16,
+ 0.0,
+ 0.0,
+ 0.0,
+ 0.0,
+ 1.0
+ ],
+ "name": "Sketchfab_model"
+ },
+ {
+ "children": [
+ 2
+ ],
+ "name": "874089382cd441bd86502b6eb1e42cb4.obj.cleaner.materialmerger.gles"
+ },
+ {
+ "mesh": 0,
+ "name": "Object_2"
+ }
+ ],
+ "samplers": [
+ {
+ "magFilter": 9729,
+ "minFilter": 9987,
+ "wrapS": 10497,
+ "wrapT": 10497
+ }
+ ],
+ "scene": 0,
+ "scenes": [
+ {
+ "name": "Sketchfab_Scene",
+ "nodes": [
+ 0
+ ]
+ }
+ ],
+ "textures": [
+ {
+ "sampler": 0,
+ "source": 0
+ },
+ {
+ "sampler": 0,
+ "source": 1
+ },
+ {
+ "sampler": 0,
+ "source": 2
+ },
+ {
+ "sampler": 0,
+ "source": 3
+ }
+ ]
+}
diff --git a/registry/blocks/magic-book/textures/material_0_baseColor.png b/registry/blocks/magic-book/textures/material_0_baseColor.png
new file mode 100644
index 000000000..87d076b24
Binary files /dev/null and b/registry/blocks/magic-book/textures/material_0_baseColor.png differ
diff --git a/registry/blocks/magic-book/textures/material_0_emissive.png b/registry/blocks/magic-book/textures/material_0_emissive.png
new file mode 100644
index 000000000..abbe7dba0
Binary files /dev/null and b/registry/blocks/magic-book/textures/material_0_emissive.png differ
diff --git a/registry/blocks/magic-book/textures/material_0_metallicRoughness.png b/registry/blocks/magic-book/textures/material_0_metallicRoughness.png
new file mode 100644
index 000000000..2ae843ab1
Binary files /dev/null and b/registry/blocks/magic-book/textures/material_0_metallicRoughness.png differ
diff --git a/registry/blocks/magic-book/textures/material_0_normal.png b/registry/blocks/magic-book/textures/material_0_normal.png
new file mode 100644
index 000000000..4d379b8c4
Binary files /dev/null and b/registry/blocks/magic-book/textures/material_0_normal.png differ
diff --git a/registry/registry.json b/registry/registry.json
index 9becb0bbd..1b7922c44 100644
--- a/registry/registry.json
+++ b/registry/registry.json
@@ -119,6 +119,10 @@
"name": "ui-3d-reveal",
"type": "hyperframes:block"
},
+ {
+ "name": "magic-book",
+ "type": "hyperframes:block"
+ },
{
"name": "domain-warp-dissolve",
"type": "hyperframes:block"