diff --git a/public/r/ASCIIText.json b/public/r/ASCIIText.json index 40ac23e..85475ce 100644 --- a/public/r/ASCIIText.json +++ b/public/r/ASCIIText.json @@ -1 +1 @@ -{"name":"ASCIIText","title":"ASCIIText","description":"Renders text with an animated ASCII background for a retro feel.","type":"registry:component","add":"when-added","files":[{"type":"registry:component","role":"file","content":"\n\n\n\n\n\n\n","path":"ASCIIText/AsciiText.vue","_imports_":[],"registryDependencies":[],"dependencies":[],"devDependencies":[]}],"registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"three","version":"^0.178.0"}],"devDependencies":[],"categories":["TextAnimations"]} \ No newline at end of file +{"name":"ASCIIText","title":"ASCIIText","description":"Renders text with an animated ASCII background for a retro feel.","type":"registry:component","add":"when-added","files":[{"type":"registry:component","role":"file","content":"\n\n\n\n\n\n\n","path":"ASCIIText/ASCIIText.vue","_imports_":[],"registryDependencies":[],"dependencies":[],"devDependencies":[]}],"registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"three","version":"^0.178.0"}],"devDependencies":[],"categories":["TextAnimations"]} \ No newline at end of file diff --git a/public/r/Ballpit.json b/public/r/Ballpit.json index 49698da..2729b9d 100644 --- a/public/r/Ballpit.json +++ b/public/r/Ballpit.json @@ -1 +1 @@ -{"name":"Ballpit","title":"Ballpit","description":"Physics ball pit simulation with bouncing colorful spheres.","type":"registry:component","add":"when-added","files":[{"type":"registry:component","role":"file","content":"\n\n\n","path":"Ballpit/Ballpit.vue","_imports_":[],"registryDependencies":[],"dependencies":[],"devDependencies":[]}],"registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"gsap","version":"^3.13.0"},{"ecosystem":"js","name":"three","version":"^0.178.0"}],"devDependencies":[],"categories":["Backgrounds"]} \ No newline at end of file +{"name":"Ballpit","title":"Ballpit","description":"Physics ball pit simulation with bouncing colorful spheres.","type":"registry:component","add":"when-added","files":[{"type":"registry:component","role":"file","content":"\n\n\n","path":"Ballpit/Ballpit.vue","_imports_":[],"registryDependencies":[],"dependencies":[],"devDependencies":[]}],"registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"gsap","version":"^3.13.0"},{"ecosystem":"js","name":"three","version":"^0.178.0"}],"devDependencies":[],"categories":["Backgrounds"]} \ No newline at end of file diff --git a/public/r/ClickSpark.json b/public/r/ClickSpark.json index 2dc37c7..cd8d257 100644 --- a/public/r/ClickSpark.json +++ b/public/r/ClickSpark.json @@ -1 +1 @@ -{"name":"ClickSpark","title":"ClickSpark","description":"Creates particle spark bursts at click position.","type":"registry:component","add":"when-added","files":[{"type":"registry:component","role":"file","content":"\n\n\n","path":"ClickSpark/ClickSpark.vue","_imports_":[],"registryDependencies":[],"dependencies":[],"devDependencies":[]}],"registryDependencies":[],"dependencies":[],"devDependencies":[],"categories":["Animations"]} \ No newline at end of file +{"name":"ClickSpark","title":"ClickSpark","description":"Creates particle spark bursts at click position.","type":"registry:component","add":"when-added","files":[{"type":"registry:component","role":"file","content":"\n\n\n","path":"ClickSpark/ClickSpark.vue","_imports_":[],"registryDependencies":[],"dependencies":[],"devDependencies":[]}],"registryDependencies":[],"dependencies":[],"devDependencies":[],"categories":["Animations"]} \ No newline at end of file diff --git a/public/r/CountUp.json b/public/r/CountUp.json index 8613b2c..d724da3 100644 --- a/public/r/CountUp.json +++ b/public/r/CountUp.json @@ -1 +1 @@ -{"name":"CountUp","title":"CountUp","description":"Animated number counter supporting formatting and decimals.","type":"registry:component","add":"when-added","files":[{"type":"registry:component","role":"file","content":"\n\n\n","path":"CountUp/CountUp.vue","_imports_":[],"registryDependencies":[],"dependencies":[],"devDependencies":[]}],"registryDependencies":[],"dependencies":[],"devDependencies":[],"categories":["Animations"]} \ No newline at end of file +{"name":"CountUp","title":"CountUp","description":"Animated number counter supporting formatting and decimals.","type":"registry:component","add":"when-added","files":[{"type":"registry:component","role":"file","content":"\n\n\n","path":"CountUp/CountUp.vue","_imports_":[],"registryDependencies":[],"dependencies":[],"devDependencies":[]}],"registryDependencies":[],"dependencies":[],"devDependencies":[],"categories":["TextAnimations"]} \ No newline at end of file diff --git a/public/r/Cubes.json b/public/r/Cubes.json index 5580e70..712b304 100644 --- a/public/r/Cubes.json +++ b/public/r/Cubes.json @@ -1 +1 @@ -{"name":"Cubes","title":"Cubes","description":"3D rotating cube cluster. Supports auto-rotation or hover interaction.","type":"registry:component","add":"when-added","files":[{"type":"registry:component","role":"file","content":"\n\n\n","path":"Cubes/Cubes.vue","_imports_":[],"registryDependencies":[],"dependencies":[],"devDependencies":[]}],"registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"gsap","version":"^3.13.0"}],"devDependencies":[],"categories":["Animations"]} \ No newline at end of file +{"name":"Cubes","title":"Cubes","description":"3D rotating cube cluster. Supports auto-rotation or hover interaction.","type":"registry:component","add":"when-added","files":[{"type":"registry:component","role":"file","content":"\n\n\n","path":"Cubes/Cubes.vue","_imports_":[],"registryDependencies":[],"dependencies":[],"devDependencies":[]}],"registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"gsap","version":"^3.13.0"}],"devDependencies":[],"categories":["Animations"]} \ No newline at end of file diff --git a/public/r/DecryptedText.json b/public/r/DecryptedText.json index 6eef904..a97fd02 100644 --- a/public/r/DecryptedText.json +++ b/public/r/DecryptedText.json @@ -1 +1 @@ -{"name":"DecryptedText","title":"DecryptedText","description":"Hacker-style decryption cycling random glyphs until resolving to real text.","type":"registry:component","add":"when-added","files":[{"type":"registry:component","role":"file","content":"\n\n\n","path":"DecryptedText/DecryptedText.vue","_imports_":[],"registryDependencies":[],"dependencies":[],"devDependencies":[]}],"registryDependencies":[],"dependencies":[],"devDependencies":[],"categories":["TextAnimations"]} \ No newline at end of file +{"name":"DecryptedText","title":"DecryptedText","description":"Hacker-style decryption cycling random glyphs until resolving to real text.","type":"registry:component","add":"when-added","files":[{"type":"registry:component","role":"file","content":"\n\n\n","path":"DecryptedText/DecryptedText.vue","_imports_":[],"registryDependencies":[],"dependencies":[],"devDependencies":[]}],"registryDependencies":[],"dependencies":[],"devDependencies":[],"categories":["TextAnimations"]} \ No newline at end of file diff --git a/public/r/Dock.json b/public/r/Dock.json index e9d6c8b..665b660 100644 --- a/public/r/Dock.json +++ b/public/r/Dock.json @@ -1 +1 @@ -{"name":"Dock","title":"Dock","description":"macOS style magnifying dock with proximity scaling of icons.","type":"registry:component","add":"when-added","files":[{"type":"registry:component","role":"file","content":"\n\n\n\n\n","path":"Dock/Dock.vue","_imports_":[],"registryDependencies":[],"dependencies":[],"devDependencies":[]}],"registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"motion-v","version":"^1.5.0"}],"devDependencies":[],"categories":["Components"]} \ No newline at end of file +{"name":"Dock","title":"Dock","description":"macOS style magnifying dock with proximity scaling of icons.","type":"registry:component","add":"when-added","files":[{"type":"registry:component","role":"file","content":"\n\n\n\n\n","path":"Dock/Dock.vue","_imports_":[],"registryDependencies":[],"dependencies":[],"devDependencies":[]}],"registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"motion-v","version":"^1.5.0"}],"devDependencies":[],"categories":["Components"]} \ No newline at end of file diff --git a/public/r/InfiniteMenu.json b/public/r/InfiniteMenu.json index 4a39bdb..12c27b2 100644 --- a/public/r/InfiniteMenu.json +++ b/public/r/InfiniteMenu.json @@ -1 +1 @@ -{"name":"InfiniteMenu","title":"InfiniteMenu","description":"Horizontally looping menu effect that scrolls endlessly with seamless wrap.","type":"registry:component","add":"when-added","files":[{"type":"registry:component","role":"file","content":"\n\n\n","path":"InfiniteMenu/InfiniteMenu.vue","_imports_":[],"registryDependencies":[],"dependencies":[],"devDependencies":[]}],"registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"gl-matrix","version":"^3.4.3"}],"devDependencies":[],"categories":["Components"]} \ No newline at end of file +{"name":"InfiniteMenu","title":"InfiniteMenu","description":"Horizontally looping menu effect that scrolls endlessly with seamless wrap.","type":"registry:component","add":"when-added","files":[{"type":"registry:component","role":"file","content":"\n\n\n","path":"InfiniteMenu/InfiniteMenu.vue","_imports_":[],"registryDependencies":[],"dependencies":[],"devDependencies":[]}],"registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"gl-matrix","version":"^3.4.3"}],"devDependencies":[],"categories":["Components"]} \ No newline at end of file diff --git a/public/r/InfiniteScroll.json b/public/r/InfiniteScroll.json index 5978840..3ec3df3 100644 --- a/public/r/InfiniteScroll.json +++ b/public/r/InfiniteScroll.json @@ -1 +1 @@ -{"name":"InfiniteScroll","title":"InfiniteScroll","description":"Infinite scrolling container auto-loads content near viewport end.","type":"registry:component","add":"when-added","files":[{"type":"registry:component","role":"file","content":"\n\n\n\n\n","path":"InfiniteScroll/InfiniteScroll.vue","_imports_":[],"registryDependencies":[],"dependencies":[],"devDependencies":[]}],"registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"gsap","version":"^3.13.0"}],"devDependencies":[],"categories":["Components"]} \ No newline at end of file +{"name":"InfiniteScroll","title":"InfiniteScroll","description":"Infinite scrolling container auto-loads content near viewport end.","type":"registry:component","add":"when-added","files":[{"type":"registry:component","role":"file","content":"\n\n\n\n\n","path":"InfiniteScroll/InfiniteScroll.vue","_imports_":[],"registryDependencies":[],"dependencies":[],"devDependencies":[]}],"registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"gsap","version":"^3.13.0"}],"devDependencies":[],"categories":["Components"]} \ No newline at end of file diff --git a/public/r/LetterGlitch.json b/public/r/LetterGlitch.json index 1fd5c8f..c24a7b4 100644 --- a/public/r/LetterGlitch.json +++ b/public/r/LetterGlitch.json @@ -1 +1 @@ -{"name":"LetterGlitch","title":"LetterGlitch","description":"Matrix style letter animation.","type":"registry:component","add":"when-added","files":[{"type":"registry:component","role":"file","content":"\n\n\n\n\n","path":"LetterGlitch/LetterGlitch.vue","_imports_":[],"registryDependencies":[],"dependencies":[],"devDependencies":[]}],"registryDependencies":[],"dependencies":[],"devDependencies":[],"categories":["Backgrounds"]} \ No newline at end of file +{"name":"LetterGlitch","title":"LetterGlitch","description":"Matrix style letter animation.","type":"registry:component","add":"when-added","files":[{"type":"registry:component","role":"file","content":"\n\n\n\n\n","path":"LetterGlitch/LetterGlitch.vue","_imports_":[],"registryDependencies":[],"dependencies":[],"devDependencies":[]}],"registryDependencies":[],"dependencies":[],"devDependencies":[],"categories":["Backgrounds"]} \ No newline at end of file diff --git a/public/r/MagicBento.json b/public/r/MagicBento.json index 8e1d2b6..ff98ca5 100644 --- a/public/r/MagicBento.json +++ b/public/r/MagicBento.json @@ -1 +1 @@ -{"name":"MagicBento","title":"MagicBento","description":"Interactive bento grid tiles expand + animate with various options.","type":"registry:component","add":"when-added","files":[{"type":"registry:component","role":"file","content":"\n\n\n\n\n","path":"MagicBento/MagicBento.vue","_imports_":[],"registryDependencies":[],"dependencies":[],"devDependencies":[]}],"registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"gsap","version":"^3.13.0"}],"devDependencies":[],"categories":["Components"]} \ No newline at end of file +{"name":"MagicBento","title":"MagicBento","description":"Interactive bento grid tiles expand + animate with various options.","type":"registry:component","add":"when-added","files":[{"type":"registry:component","role":"file","content":"\n\n\n\n\n","path":"MagicBento/MagicBento.vue","_imports_":[],"registryDependencies":[],"dependencies":[],"devDependencies":[]}],"registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"gsap","version":"^3.13.0"}],"devDependencies":[],"categories":["Components"]} \ No newline at end of file diff --git a/public/r/MetallicPaint.json b/public/r/MetallicPaint.json index 89dca36..fb447f1 100644 --- a/public/r/MetallicPaint.json +++ b/public/r/MetallicPaint.json @@ -1 +1 @@ -{"name":"MetallicPaint","title":"MetallicPaint","description":"Liquid metallic paint shader which can be applied to SVG elements.","type":"registry:component","add":"when-added","files":[{"type":"registry:component","role":"file","content":"\n\n\n","path":"MetallicPaint/MetallicPaint.vue","_imports_":[],"registryDependencies":[],"dependencies":[],"devDependencies":[]},{"type":"registry:component","role":"file","content":"export function parseImage(file: File): Promise<{ imageData: ImageData; pngBlob: Blob }> {\n const canvas = document.createElement('canvas');\n const ctx = canvas.getContext('2d');\n\n return new Promise((resolve, reject) => {\n if (!file || !ctx) {\n reject(new Error('Invalid file or context'));\n return;\n }\n\n const img = new Image();\n img.crossOrigin = 'anonymous';\n img.onload = function () {\n if (file.type === 'image/svg+xml') {\n img.width = 1000;\n img.height = 1000;\n }\n\n const MAX_SIZE = 1000;\n const MIN_SIZE = 500;\n let width = img.naturalWidth;\n let height = img.naturalHeight;\n\n if (width > MAX_SIZE || height > MAX_SIZE || width < MIN_SIZE || height < MIN_SIZE) {\n if (width > height) {\n if (width > MAX_SIZE) {\n height = Math.round((height * MAX_SIZE) / width);\n width = MAX_SIZE;\n } else if (width < MIN_SIZE) {\n height = Math.round((height * MIN_SIZE) / width);\n width = MIN_SIZE;\n }\n } else {\n if (height > MAX_SIZE) {\n width = Math.round((width * MAX_SIZE) / height);\n height = MAX_SIZE;\n } else if (height < MIN_SIZE) {\n width = Math.round((width * MIN_SIZE) / height);\n height = MIN_SIZE;\n }\n }\n }\n\n canvas.width = width;\n canvas.height = height;\n\n const shapeCanvas = document.createElement('canvas');\n shapeCanvas.width = width;\n shapeCanvas.height = height;\n const shapeCtx = shapeCanvas.getContext('2d')!;\n shapeCtx.drawImage(img, 0, 0, width, height);\n\n const shapeImageData = shapeCtx.getImageData(0, 0, width, height);\n const data = shapeImageData.data;\n const shapeMask = new Array(width * height).fill(false);\n for (let y = 0; y < height; y++) {\n for (let x = 0; x < width; x++) {\n const idx4 = (y * width + x) * 4;\n const r = data[idx4];\n const g = data[idx4 + 1];\n const b = data[idx4 + 2];\n const a = data[idx4 + 3];\n shapeMask[y * width + x] = !((r === 255 && g === 255 && b === 255 && a === 255) || a === 0);\n }\n }\n\n function inside(x: number, y: number) {\n if (x < 0 || x >= width || y < 0 || y >= height) return false;\n return shapeMask[y * width + x];\n }\n\n const boundaryMask = new Array(width * height).fill(false);\n for (let y = 0; y < height; y++) {\n for (let x = 0; x < width; x++) {\n const idx = y * width + x;\n if (!shapeMask[idx]) continue;\n let isBoundary = false;\n for (let ny = y - 1; ny <= y + 1 && !isBoundary; ny++) {\n for (let nx = x - 1; nx <= x + 1 && !isBoundary; nx++) {\n if (!inside(nx, ny)) {\n isBoundary = true;\n }\n }\n }\n if (isBoundary) {\n boundaryMask[idx] = true;\n }\n }\n }\n\n const interiorMask = new Array(width * height).fill(false);\n for (let y = 1; y < height - 1; y++) {\n for (let x = 1; x < width - 1; x++) {\n const idx = y * width + x;\n if (\n shapeMask[idx] &&\n shapeMask[idx - 1] &&\n shapeMask[idx + 1] &&\n shapeMask[idx - width] &&\n shapeMask[idx + width]\n ) {\n interiorMask[idx] = true;\n }\n }\n }\n\n const u = new Float32Array(width * height).fill(0);\n const newU = new Float32Array(width * height).fill(0);\n const C = 0.01;\n const ITERATIONS = 300;\n\n function getU(x: number, y: number, arr: Float32Array) {\n if (x < 0 || x >= width || y < 0 || y >= height) return 0;\n if (!shapeMask[y * width + x]) return 0;\n return arr[y * width + x];\n }\n\n for (let iter = 0; iter < ITERATIONS; iter++) {\n for (let y = 0; y < height; y++) {\n for (let x = 0; x < width; x++) {\n const idx = y * width + x;\n if (!shapeMask[idx] || boundaryMask[idx]) {\n newU[idx] = 0;\n continue;\n }\n const sumN = getU(x + 1, y, u) + getU(x - 1, y, u) + getU(x, y + 1, u) + getU(x, y - 1, u);\n newU[idx] = (C + sumN) / 4;\n }\n }\n u.set(newU);\n }\n\n let maxVal = 0;\n for (let i = 0; i < width * height; i++) {\n if (u[i] > maxVal) maxVal = u[i];\n }\n const alpha = 2.0;\n const outImg = ctx.createImageData(width, height);\n\n for (let y = 0; y < height; y++) {\n for (let x = 0; x < width; x++) {\n const idx = y * width + x;\n const px = idx * 4;\n if (!shapeMask[idx]) {\n outImg.data[px] = 255;\n outImg.data[px + 1] = 255;\n outImg.data[px + 2] = 255;\n outImg.data[px + 3] = 255;\n } else {\n const raw = u[idx] / maxVal;\n const remapped = Math.pow(raw, alpha);\n const gray = 255 * (1 - remapped);\n outImg.data[px] = gray;\n outImg.data[px + 1] = gray;\n outImg.data[px + 2] = gray;\n outImg.data[px + 3] = 255;\n }\n }\n }\n ctx.putImageData(outImg, 0, 0);\n\n canvas.toBlob(blob => {\n if (!blob) {\n reject(new Error('Failed to create PNG blob'));\n return;\n }\n resolve({\n imageData: outImg,\n pngBlob: blob\n });\n }, 'image/png');\n };\n\n img.onerror = () => reject(new Error('Failed to load image'));\n img.src = URL.createObjectURL(file);\n });\n}\n","path":"MetallicPaint/parseImage.ts","_imports_":[],"registryDependencies":[],"dependencies":[],"devDependencies":[]}],"registryDependencies":[],"dependencies":[],"devDependencies":[],"categories":["Animations"]} \ No newline at end of file +{"name":"MetallicPaint","title":"MetallicPaint","description":"Liquid metallic paint shader which can be applied to SVG elements.","type":"registry:component","add":"when-added","files":[{"type":"registry:component","role":"file","content":"\n\n\n","path":"MetallicPaint/MetallicPaint.vue","_imports_":[],"registryDependencies":[],"dependencies":[],"devDependencies":[]}],"registryDependencies":[],"dependencies":[],"devDependencies":[],"categories":["Animations"]} \ No newline at end of file diff --git a/public/r/PixelBlast.json b/public/r/PixelBlast.json index c82b21f..0bcb70e 100644 --- a/public/r/PixelBlast.json +++ b/public/r/PixelBlast.json @@ -1 +1 @@ -{"name":"PixelBlast","title":"PixelBlast","description":"Exploding pixel particle bursts with optional liquid postprocessing.","type":"registry:component","add":"when-added","files":[{"type":"registry:component","role":"file","content":"\n\n\n","path":"PixelBlast/PixelBlast.vue","_imports_":[],"registryDependencies":[],"dependencies":[],"devDependencies":[]}],"registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"postprocessing","version":"^6.37.6"},{"ecosystem":"js","name":"three","version":"^0.178.0"}],"devDependencies":[],"categories":["Backgrounds"]} \ No newline at end of file +{"name":"PixelBlast","title":"PixelBlast","description":"Exploding pixel particle bursts with optional liquid postprocessing.","type":"registry:component","add":"when-added","files":[{"type":"registry:component","role":"file","content":"\n\n\n","path":"PixelBlast/PixelBlast.vue","_imports_":[],"registryDependencies":[],"dependencies":[],"devDependencies":[]}],"registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"postprocessing","version":"^6.37.6"},{"ecosystem":"js","name":"three","version":"^0.178.0"}],"devDependencies":[],"categories":["Backgrounds"]} \ No newline at end of file diff --git a/public/r/PixelSnow.json b/public/r/PixelSnow.json new file mode 100644 index 0000000..025a875 --- /dev/null +++ b/public/r/PixelSnow.json @@ -0,0 +1 @@ +{"name":"PixelSnow","title":"PixelSnow","description":"Falling pixelated snow effect with customizable density and speed.","type":"registry:component","add":"when-added","files":[{"type":"registry:component","role":"file","content":"\n\n\n","path":"PixelSnow/PixelSnow.vue","_imports_":[],"registryDependencies":[],"dependencies":[],"devDependencies":[]}],"registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"three","version":"^0.178.0"}],"devDependencies":[],"categories":["Backgrounds"]} \ No newline at end of file diff --git a/public/r/PixelTrail.json b/public/r/PixelTrail.json new file mode 100644 index 0000000..f1a01ac --- /dev/null +++ b/public/r/PixelTrail.json @@ -0,0 +1 @@ +{"name":"PixelTrail","title":"PixelTrail","description":"Pixel grid trail effect that follows cursor movement with customizable gooey filter.","type":"registry:component","add":"when-added","files":[{"type":"registry:component","role":"file","content":"\n\n\n","path":"PixelTrail/PixelTrail.vue","_imports_":[],"registryDependencies":[],"dependencies":[],"devDependencies":[]}],"registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"three","version":"^0.178.0"}],"devDependencies":[],"categories":["Animations"]} \ No newline at end of file diff --git a/public/r/RotatingText.json b/public/r/RotatingText.json index 0adde8c..68c31bb 100644 --- a/public/r/RotatingText.json +++ b/public/r/RotatingText.json @@ -1 +1 @@ -{"name":"RotatingText","title":"RotatingText","description":"Cycles through multiple phrases with 3D rotate / flip transitions.","type":"registry:component","add":"when-added","files":[{"type":"registry:component","role":"file","content":"\n\n\n","path":"RotatingText/RotatingText.vue","_imports_":[],"registryDependencies":[],"dependencies":[],"devDependencies":[]}],"registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"motion-v","version":"^1.5.0"}],"devDependencies":[],"categories":["TextAnimations"]} \ No newline at end of file +{"name":"RotatingText","title":"RotatingText","description":"Cycles through multiple phrases with 3D rotate / flip transitions.","type":"registry:component","add":"when-added","files":[{"type":"registry:component","role":"file","content":"\n\n\n","path":"RotatingText/RotatingText.vue","_imports_":[],"registryDependencies":[],"dependencies":[],"devDependencies":[]}],"registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"motion-v","version":"^1.5.0"}],"devDependencies":[],"categories":["TextAnimations"]} \ No newline at end of file diff --git a/public/r/Shuffle.json b/public/r/Shuffle.json new file mode 100644 index 0000000..ed86190 --- /dev/null +++ b/public/r/Shuffle.json @@ -0,0 +1 @@ +{"name":"Shuffle","title":"Shuffle","description":"GSAP-powered slot machine style text shuffle animation with scroll trigger.","type":"registry:component","add":"when-added","files":[{"type":"registry:component","role":"file","content":"\n\n\n","path":"Shuffle/Shuffle.vue","_imports_":[],"registryDependencies":[],"dependencies":[],"devDependencies":[]}],"registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"gsap","version":"^3.13.0"}],"devDependencies":[],"categories":["TextAnimations"]} \ No newline at end of file diff --git a/public/r/StickerPeel.json b/public/r/StickerPeel.json index 70d0847..a28a84b 100644 --- a/public/r/StickerPeel.json +++ b/public/r/StickerPeel.json @@ -1 +1 @@ -{"name":"StickerPeel","title":"StickerPeel","description":"Sticker corner lift + peel interaction using 3D transform and shadow depth.","type":"registry:component","add":"when-added","files":[{"type":"registry:component","role":"file","content":"\n\n\n\n\n","path":"StickerPeel/StickerPeel.vue","_imports_":[],"registryDependencies":[],"dependencies":[],"devDependencies":[]}],"registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"gsap","version":"^3.13.0"}],"devDependencies":[],"categories":["Animations"]} \ No newline at end of file +{"name":"StickerPeel","title":"StickerPeel","description":"Sticker corner lift + peel interaction using 3D transform and shadow depth.","type":"registry:component","add":"when-added","files":[{"type":"registry:component","role":"file","content":"\n\n\n\n\n","path":"StickerPeel/StickerPeel.vue","_imports_":[],"registryDependencies":[],"dependencies":[],"devDependencies":[]}],"registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"gsap","version":"^3.13.0"}],"devDependencies":[],"categories":["Animations"]} \ No newline at end of file diff --git a/public/r/TargetCursor.json b/public/r/TargetCursor.json index 28052b5..edd7fba 100644 --- a/public/r/TargetCursor.json +++ b/public/r/TargetCursor.json @@ -1 +1 @@ -{"name":"TargetCursor","title":"TargetCursor","description":"A cursor follow animation with 4 corners that lock onto targets.","type":"registry:component","add":"when-added","files":[{"type":"registry:component","role":"file","content":"\n\n\n","path":"TargetCursor/TargetCursor.vue","_imports_":[],"registryDependencies":[],"dependencies":[],"devDependencies":[]}],"registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"gsap","version":"^3.13.0"}],"devDependencies":[],"categories":["Animations"]} \ No newline at end of file +{"name":"TargetCursor","title":"TargetCursor","description":"A cursor follow animation with 4 corners that lock onto targets.","type":"registry:component","add":"when-added","files":[{"type":"registry:component","role":"file","content":"\n\n\n","path":"TargetCursor/TargetCursor.vue","_imports_":[],"registryDependencies":[],"dependencies":[],"devDependencies":[]}],"registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"gsap","version":"^3.13.0"}],"devDependencies":[],"categories":["Animations"]} \ No newline at end of file diff --git a/public/r/TextCursor.json b/public/r/TextCursor.json index 988900f..110d2a8 100644 --- a/public/r/TextCursor.json +++ b/public/r/TextCursor.json @@ -1 +1 @@ -{"name":"TextCursor","title":"TextCursor","description":"Make any text element follow your cursor, leaving a trail of copies behind it.","type":"registry:component","add":"when-added","files":[{"type":"registry:component","role":"file","content":"\n\n\n\n\n","path":"TextCursor/TextCursor.vue","_imports_":[],"registryDependencies":[],"dependencies":[],"devDependencies":[]}],"registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"motion-v","version":"^1.5.0"}],"devDependencies":[],"categories":["TextAnimations"]} \ No newline at end of file +{"name":"TextCursor","title":"TextCursor","description":"Make any text element follow your cursor, leaving a trail of copies behind it.","type":"registry:component","add":"when-added","files":[{"type":"registry:component","role":"file","content":"\n\n\n\n\n","path":"TextCursor/TextCursor.vue","_imports_":[],"registryDependencies":[],"dependencies":[],"devDependencies":[]}],"registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"motion-v","version":"^1.5.0"}],"devDependencies":[],"categories":["TextAnimations"]} \ No newline at end of file diff --git a/public/r/TrueFocus.json b/public/r/TrueFocus.json index ba293a3..5f95aa2 100644 --- a/public/r/TrueFocus.json +++ b/public/r/TrueFocus.json @@ -1 +1 @@ -{"name":"TrueFocus","title":"TrueFocus","description":"Applies dynamic blur / clarity based over a series of words in order.","type":"registry:component","add":"when-added","files":[{"type":"registry:component","role":"file","content":"\n\n\n","path":"TrueFocus/TrueFocus.vue","_imports_":[],"registryDependencies":[],"dependencies":[],"devDependencies":[]}],"registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"motion-v","version":"^1.5.0"}],"devDependencies":[],"categories":["TextAnimations"]} \ No newline at end of file +{"name":"TrueFocus","title":"TrueFocus","description":"Applies dynamic blur / clarity based over a series of words in order.","type":"registry:component","add":"when-added","files":[{"type":"registry:component","role":"file","content":"\n\n\n","path":"TrueFocus/TrueFocus.vue","_imports_":[],"registryDependencies":[],"dependencies":[],"devDependencies":[]}],"registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"motion-v","version":"^1.5.0"}],"devDependencies":[],"categories":["TextAnimations"]} \ No newline at end of file diff --git a/public/r/registry.json b/public/r/registry.json index 9eeede5..af2454a 100644 --- a/public/r/registry.json +++ b/public/r/registry.json @@ -1 +1,2459 @@ -{"name":"@vue-bits","authors":["David Haz"],"bugs":"https://github.com/DavidHDev/vue-bits/issues","description":"An open source collection of animated, interactive & fully customizable Vue components for building stunning, memorable user interfaces.","homepage":"https://vue-bits.dev","repository":"https://github.com/DavidHDev/vue-bits","tags":["vue","javascript","components","web","vuejs","css-animations","component-library","ui-components","3d","ui-library","tailwind","tailwindcss","components","components-library"],"type":"distributed","items":[{"name":"AnimatedContent","title":"AnimatedContent","description":"Wrapper that animates any children on scroll or mount with configurable direction, distance, duration and easing.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"gsap","version":"^3.13.0"}],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"AnimatedContent/AnimatedContent.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["Animations"]},{"name":"BlobCursor","title":"BlobCursor","description":"Organic blob cursor that smoothly follows the pointer with inertia and elastic morphing.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"gsap","version":"^3.13.0"}],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"BlobCursor/BlobCursor.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["Animations"]},{"name":"ClickSpark","title":"ClickSpark","description":"Creates particle spark bursts at click position.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"ClickSpark/ClickSpark.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["Animations"]},{"name":"Crosshair","title":"Crosshair","description":"Custom crosshair cursor with tracking, and link hover effects.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"gsap","version":"^3.13.0"}],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"Crosshair/Crosshair.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["Animations"]},{"name":"Cubes","title":"Cubes","description":"3D rotating cube cluster. Supports auto-rotation or hover interaction.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"gsap","version":"^3.13.0"}],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"Cubes/Cubes.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["Animations"]},{"name":"ElectricBorder","title":"ElectricBorder","description":"Jittery electric energy border with animated arcs, glow and adjustable intensity.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"ElectricBorder/ElectricBorder.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["Animations"]},{"name":"FadeContent","title":"FadeContent","description":"Simple directional fade / slide entrance wrapper with threshold-based activation.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"FadeContent/FadeContent.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["Animations"]},{"name":"GlareHover","title":"GlareHover","description":"Adds a realistic moving glare highlight on hover over any element.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"GlareHover/GlareHover.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["Animations"]},{"name":"GradualBlur","title":"GradualBlur","description":"Progressively un-blurs content based on scroll or trigger creating a cinematic reveal.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"mathjs","version":"^14.6.0"}],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"GradualBlur/GradualBlur.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["Animations"]},{"name":"GhostCursor","title":"GhostCursor","description":"Semi-transparent ghost cursor that smoothly follows the real cursor with a trailing effect.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"three","version":"^0.178.0"}],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"GhostCursor/GhostCursor.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["Animations"]},{"name":"ImageTrail","title":"ImageTrail","description":"Cursor-based image trail with several built-in variants.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"gsap","version":"^3.13.0"}],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"ImageTrail/ImageTrail.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["Animations"]},{"name":"LogoLoop","title":"LogoLoop","description":"Continuously looping marquee of brand or tech logos with seamless repeat and hover pause.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"LogoLoop/LogoLoop.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["Animations"]},{"name":"Magnet","title":"Magnet","description":"Elements magnetically ease toward the cursor then settle back with spring physics.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"Magnet/Magnet.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["Animations"]},{"name":"MagnetLines","title":"MagnetLines","description":"Animated field lines bend toward the cursor.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"MagnetLines/MagnetLines.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["Animations"]},{"name":"MetaBalls","title":"MetaBalls","description":"Liquid metaball blobs that merge and separate with smooth implicit surface animation.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"ogl","version":"^1.0.11"}],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"MetaBalls/MetaBalls.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["Animations"]},{"name":"MetallicPaint","title":"MetallicPaint","description":"Liquid metallic paint shader which can be applied to SVG elements.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"MetallicPaint/MetallicPaint.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]},{"type":"registry:component","role":"file","path":"MetallicPaint/parseImage.ts","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["Animations"]},{"name":"Noise","title":"Noise","description":"Animated film grain / noise overlay adding subtle texture and motion.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"Noise/Noise.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["Animations"]},{"name":"PixelTransition","title":"PixelTransition","description":"Pixel dissolve transition for content reveal on hover.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"gsap","version":"^3.13.0"}],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"PixelTransition/PixelTransition.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["Animations"]},{"name":"Ribbons","title":"Ribbons","description":"Flowing responsive ribbons/cursor trail driven by physics and pointer motion.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"ogl","version":"^1.0.11"}],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"Ribbons/Ribbons.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["Animations"]},{"name":"ShapeBlur","title":"ShapeBlur","description":"Morphing blurred geometric shape. The effect occurs on hover.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"three","version":"^0.178.0"}],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"ShapeBlur/ShapeBlur.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["Animations"]},{"name":"SplashCursor","title":"SplashCursor","description":"Liquid splash burst at cursor with curling ripples and waves.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"SplashCursor/SplashCursor.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["Animations"]},{"name":"StarBorder","title":"StarBorder","description":"Animated star / sparkle border orbiting content with twinkle pulses.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"StarBorder/StarBorder.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["Animations"]},{"name":"StickerPeel","title":"StickerPeel","description":"Sticker corner lift + peel interaction using 3D transform and shadow depth.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"gsap","version":"^3.13.0"}],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"StickerPeel/StickerPeel.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["Animations"]},{"name":"TargetCursor","title":"TargetCursor","description":"A cursor follow animation with 4 corners that lock onto targets.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"gsap","version":"^3.13.0"}],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"TargetCursor/TargetCursor.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["Animations"]},{"name":"LaserFlow","title":"LaserFlow","description":"Dynamic laser light that flows onto a surface, customizable effect.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"three","version":"^0.178.0"}],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"LaserFlow/LaserFlow.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["Animations"]},{"name":"CountUp","title":"CountUp","description":"Animated number counter supporting formatting and decimals.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"CountUp/CountUp.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["Animations"]},{"name":"ASCIIText","title":"ASCIIText","description":"Renders text with an animated ASCII background for a retro feel.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"three","version":"^0.178.0"}],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"ASCIIText/AsciiText.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["TextAnimations"]},{"name":"BlurText","title":"BlurText","description":"Text starts blurred then crisply resolves for a soft-focus reveal effect.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"motion-v","version":"^1.5.0"}],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"BlurText/BlurText.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["TextAnimations"]},{"name":"CircularText","title":"CircularText","description":"Layouts characters around a circle with optional rotation animation.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"motion-v","version":"^1.5.0"}],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"CircularText/CircularText.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["TextAnimations"]},{"name":"CurvedLoop","title":"CurvedLoop","description":"Flowing looping text path along a customizable curve with drag interaction.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"CurvedLoop/CurvedLoop.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["TextAnimations"]},{"name":"DecryptedText","title":"DecryptedText","description":"Hacker-style decryption cycling random glyphs until resolving to real text.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"DecryptedText/DecryptedText.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["TextAnimations"]},{"name":"FallingText","title":"FallingText","description":"Characters fall with gravity + bounce creating a playful entrance.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"matter-js","version":"^0.20.0"}],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"FallingText/FallingText.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["TextAnimations"]},{"name":"FuzzyText","title":"FuzzyText","description":"Vibrating fuzzy text with controllable hover intensity.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"FuzzyText/FuzzyText.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["TextAnimations"]},{"name":"GlitchText","title":"GlitchText","description":"RGB split and distortion glitch effect with jitter effects.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"GlitchText/GlitchText.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["TextAnimations"]},{"name":"GradientText","title":"GradientText","description":"Animated gradient sweep across live text with speed and color control.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"GradientText/GradientText.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["TextAnimations"]},{"name":"RotatingText","title":"RotatingText","description":"Cycles through multiple phrases with 3D rotate / flip transitions.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"motion-v","version":"^1.5.0"}],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"RotatingText/RotatingText.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["TextAnimations"]},{"name":"ScrambleText","title":"ScrambleText","description":"Detects cursor position and applies a distortion effect to text.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"gsap","version":"^3.13.0"}],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"ScrambleText/ScrambleText.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["TextAnimations"]},{"name":"ScrollFloat","title":"ScrollFloat","description":"Text gently floats / parallax shifts on scroll.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"gsap","version":"^3.13.0"}],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"ScrollFloat/ScrollFloat.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["TextAnimations"]},{"name":"ScrollReveal","title":"ScrollReveal","description":"Text gently unblurs and reveals on scroll.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"gsap","version":"^3.13.0"}],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"ScrollReveal/ScrollReveal.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["TextAnimations"]},{"name":"ScrollVelocity","title":"ScrollVelocity","description":"Text marquee animatio - speed and distortion scale with user's scroll velocity.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"gsap","version":"^3.13.0"}],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"ScrollVelocity/ScrollVelocity.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["TextAnimations"]},{"name":"ShinyText","title":"ShinyText","description":"Metallic sheen sweeps across text producing a reflective highlight.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"ShinyText/ShinyText.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["TextAnimations"]},{"name":"SplitText","title":"SplitText","description":"Splits text into characters / words for staggered entrance animation.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"gsap","version":"^3.13.0"}],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"SplitText/SplitText.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["TextAnimations"]},{"name":"TextCursor","title":"TextCursor","description":"Make any text element follow your cursor, leaving a trail of copies behind it.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"motion-v","version":"^1.5.0"}],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"TextCursor/TextCursor.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["TextAnimations"]},{"name":"TextPressure","title":"TextPressure","description":"Characters scale / warp interactively based on pointer pressure zone.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"TextPressure/TextPressure.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["TextAnimations"]},{"name":"TextType","title":"TextType","description":"Typewriter effect with blinking cursor and adjustable typing cadence.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"gsap","version":"^3.13.0"}],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"TextType/TextType.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["TextAnimations"]},{"name":"TrueFocus","title":"TrueFocus","description":"Applies dynamic blur / clarity based over a series of words in order.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"motion-v","version":"^1.5.0"}],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"TrueFocus/TrueFocus.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["TextAnimations"]},{"name":"VariableProximity","title":"VariableProximity","description":"Letter styling changes continuously with pointer distance mapping.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"VariableProximity/VariableProximity.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["TextAnimations"]},{"name":"AnimatedList","title":"AnimatedList","description":"List items enter with staggered motion variants for polished reveals.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"motion-v","version":"^1.5.0"}],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"AnimatedList/AnimatedList.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["Components"]},{"name":"BounceCards","title":"BounceCards","description":"Cards bounce that bounce in on mount.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"gsap","version":"^3.13.0"}],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"BounceCards/BounceCards.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["Components"]},{"name":"BubbleMenu","title":"BubbleMenu","description":"Floating circular expanding menu with staggered item reveal.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"gsap","version":"^3.13.0"}],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"BubbleMenu/BubbleMenu.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["Components"]},{"name":"CardNav","title":"CardNav","description":"Expandable navigation bar with card panels revealing nested links.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"gsap","version":"^3.13.0"}],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"CardNav/CardNav.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["Components"]},{"name":"CardSwap","title":"CardSwap","description":"Cards animate position swapping with smooth layout transitions.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"gsap","version":"^3.13.0"}],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"CardSwap/CardSwap.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["Components"]},{"name":"Carousel","title":"Carousel","description":"Responsive carousel with touch gestures, looping and transitions.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"motion-v","version":"^1.5.0"}],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"Carousel/Carousel.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["Components"]},{"name":"ChromaGrid","title":"ChromaGrid","description":"A responsive grid of grayscale tiles. Hovering the grid reaveals their colors.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"gsap","version":"^3.13.0"}],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"ChromaGrid/ChromaGrid.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["Components"]},{"name":"CircularGallery","title":"CircularGallery","description":"Circular orbit gallery rotating images.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"ogl","version":"^1.0.11"}],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"CircularGallery/CircularGallery.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["Components"]},{"name":"Counter","title":"Counter","description":"Flexible animated counter supporting increments + easing.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"motion-v","version":"^1.5.0"}],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"Counter/Counter.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["Components"]},{"name":"DecayCard","title":"DecayCard","description":"Hover parallax effect that disintegrates the content of a card.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"gsap","version":"^3.13.0"}],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"DecayCard/DecayCard.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["Components"]},{"name":"Dock","title":"Dock","description":"macOS style magnifying dock with proximity scaling of icons.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"motion-v","version":"^1.5.0"}],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"Dock/Dock.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["Components"]},{"name":"DomeGallery","title":"DomeGallery","description":"Immersive 3D dome gallery projecting images on a hemispheric surface.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"DomeGallery/DomeGallery.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["Components"]},{"name":"ElasticSlider","title":"ElasticSlider","description":"Slider handle stretches elastically then snaps with spring physics.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"ElasticSlider/ElasticSlider.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["Components"]},{"name":"FlowingMenu","title":"FlowingMenu","description":"Liquid flowing active indicator glides between menu items.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"gsap","version":"^3.13.0"}],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"FlowingMenu/FlowingMenu.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["Components"]},{"name":"FlyingPosters","title":"FlyingPosters","description":"3D posters rotate on scroll infinitely.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"ogl","version":"^1.0.11"}],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"FlyingPosters/FlyingPosters.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["Components"]},{"name":"Folder","title":"Folder","description":"Interactive folder opens to reveal nested content smooth motion.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"Folder/Folder.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["Components"]},{"name":"GlassIcons","title":"GlassIcons","description":"Icon set styled with frosted glass blur.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"GlassIcons/GlassIcons.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["Components"]},{"name":"GlassSurface","title":"GlassSurface","description":"Advanced Apple-style glass surface with real-time distortion + lighting.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"GlassSurface/GlassSurface.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["Components"]},{"name":"GooeyNav","title":"GooeyNav","description":"Navigation indicator morphs with gooey blob transitions between items.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"GooeyNav/GooeyNav.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["Components"]},{"name":"InfiniteMenu","title":"InfiniteMenu","description":"Horizontally looping menu effect that scrolls endlessly with seamless wrap.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"gl-matrix","version":"^3.4.3"}],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"InfiniteMenu/InfiniteMenu.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["Components"]},{"name":"InfiniteScroll","title":"InfiniteScroll","description":"Infinite scrolling container auto-loads content near viewport end.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"gsap","version":"^3.13.0"}],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"InfiniteScroll/InfiniteScroll.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["Components"]},{"name":"MagicBento","title":"MagicBento","description":"Interactive bento grid tiles expand + animate with various options.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"gsap","version":"^3.13.0"}],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"MagicBento/MagicBento.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["Components"]},{"name":"Masonry","title":"Masonry","description":"Responsive masonry layout with animated reflow + gaps optimization.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"gsap","version":"^3.13.0"}],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"Masonry/Masonry.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["Components"]},{"name":"PillNav","title":"PillNav","description":"Minimal pill nav with sliding active highlight + smooth easing.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"gsap","version":"^3.13.0"}],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"PillNav/PillNav.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["Components"]},{"name":"PixelCard","title":"PixelCard","description":"Card content revealed through pixel expansion transition.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"PixelCard/PixelCard.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["Components"]},{"name":"ProfileCard","title":"ProfileCard","description":"Animated profile card glare with 3D hover effect.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"ProfileCard/ProfileCard.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["Components"]},{"name":"ScrollStack","title":"ScrollStack","description":"Overlapping card stack reveals on scroll with depth layering.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"lenis","version":"^1.3.8"}],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"ScrollStack/ScrollStack.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["Components"]},{"name":"SpotlightCard","title":"SpotlightCard","description":"Dynamic spotlight follows cursor casting gradient illumination.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"SpotlightCard/SpotlightCard.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["Components"]},{"name":"Stack","title":"Stack","description":"Layered stack with swipe animations and smooth transitions.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"motion-v","version":"^1.5.0"}],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"Stack/Stack.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["Components"]},{"name":"Stepper","title":"Stepper","description":"Animated multi-step progress indicator with active state transitions.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"motion-v","version":"^1.5.0"}],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"Stepper/Stepper.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["Components"]},{"name":"TiltedCard","title":"TiltedCard","description":"3D perspective tilt card reacting to pointer.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"motion-v","version":"^1.5.0"}],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"TiltedCard/TiltedCard.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["Components"]},{"name":"StaggeredMenu","title":"StaggeredMenu","description":"Menu with staggered item animations and smooth transitions on open/close.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"gsap","version":"^3.13.0"}],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"StaggeredMenu/StaggeredMenu.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["Components"]},{"name":"Aurora","title":"Aurora","description":"Flowing aurora gradient background.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"ogl","version":"^1.0.11"}],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"Aurora/Aurora.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["Backgrounds"]},{"name":"Balatro","title":"Balatro","description":"The balatro shader, fully customizalbe and interactive.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"ogl","version":"^1.0.11"}],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"Balatro/Balatro.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["Backgrounds"]},{"name":"Ballpit","title":"Ballpit","description":"Physics ball pit simulation with bouncing colorful spheres.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"gsap","version":"^3.13.0"},{"ecosystem":"js","name":"three","version":"^0.178.0"}],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"Ballpit/Ballpit.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["Backgrounds"]},{"name":"Beams","title":"Beams","description":"Crossing animated ribbons with customizable properties.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"three","version":"^0.178.0"}],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"Beams/Beams.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["Backgrounds"]},{"name":"ColorBends","title":"ColorBends","description":"Vibrant color bends with smooth flowing animation.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"three","version":"^0.178.0"}],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"ColorBends/ColorBends.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["Backgrounds"]},{"name":"DarkVeil","title":"DarkVeil","description":"Subtle dark background with a smooth animation and postprocessing.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"ogl","version":"^1.0.11"}],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"DarkVeil/DarkVeil.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["Backgrounds"]},{"name":"Dither","title":"Dither","description":"Retro dithered noise shader background.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"ogl","version":"^1.0.11"}],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"Dither/Dither.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["Backgrounds"]},{"name":"DotGrid","title":"DotGrid","description":"Animated dot grid with cursor interactions.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"gsap","version":"^3.13.0"}],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"DotGrid/DotGrid.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["Backgrounds"]},{"name":"FaultyTerminal","title":"FaultyTerminal","description":"Terminal CRT scanline squares effect with flicker + noise.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"ogl","version":"^1.0.11"}],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"FaultyTerminal/FaultyTerminal.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["Backgrounds"]},{"name":"FloatingLines","title":"FloatingLines","description":"3D floating lines that react to cursor movement.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"three","version":"^0.178.0"}],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"FloatingLines/FloatingLines.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["Backgrounds"]},{"name":"Galaxy","title":"Galaxy","description":"Parallax realistic starfield with pointer interactions.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"ogl","version":"^1.0.11"}],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"Galaxy/Galaxy.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["Backgrounds"]},{"name":"GradientBlinds","title":"GradientBlinds","description":"Layered gradient blinds with spotlight and noise distortion.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"ogl","version":"^1.0.11"}],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"GradientBlinds/GradientBlinds.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["Backgrounds"]},{"name":"GridDistortion","title":"GridDistortion","description":"Warped grid mesh distorts smoothly reacting to cursor.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"three","version":"^0.178.0"}],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"GridDistortion/GridDistortion.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["Backgrounds"]},{"name":"GridMotion","title":"GridMotion","description":"Perspective moving grid lines based on cusror position.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"gsap","version":"^3.13.0"}],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"GridMotion/GridMotion.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["Backgrounds"]},{"name":"Hyperspeed","title":"Hyperspeed","description":"Animated lines continously moving to simulate hyperspace travel on click hold.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"three","version":"^0.178.0"},{"ecosystem":"js","name":"postprocessing","version":"^6.37.6"}],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"Hyperspeed/Hyperspeed.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]},{"type":"registry:component","role":"file","path":"Hyperspeed/HyperspeedPresets.ts","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["Backgrounds"]},{"name":"Iridescence","title":"Iridescence","description":"Slick iridescent shader with shifting waves.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"ogl","version":"^1.0.11"}],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"Iridescence/Iridescence.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["Backgrounds"]},{"name":"LetterGlitch","title":"LetterGlitch","description":"Matrix style letter animation.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"LetterGlitch/LetterGlitch.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["Backgrounds"]},{"name":"LightRays","title":"LightRays","description":"Volumetric light rays/beams with customizable direction.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"ogl","version":"^1.0.11"}],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"LightRays/LightRays.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["Backgrounds"]},{"name":"Lightning","title":"Lightning","description":"Procedural lightning bolts with branching and glow flicker.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"Lightning/Lightning.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["Backgrounds"]},{"name":"LiquidChrome","title":"LiquidChrome","description":"Liquid metallic chrome shader with flowing reflective surface.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"ogl","version":"^1.0.11"}],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"LiquidChrome/LiquidChrome.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["Backgrounds"]},{"name":"Orb","title":"Orb","description":"Floating energy orb with customizable hover effect.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"ogl","version":"^1.0.11"}],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"Orb/Orb.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["Backgrounds"]},{"name":"Particles","title":"Particles","description":"Configurable particle system.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"ogl","version":"^1.0.11"}],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"Particles/Particles.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["Backgrounds"]},{"name":"PixelBlast","title":"PixelBlast","description":"Exploding pixel particle bursts with optional liquid postprocessing.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"postprocessing","version":"^6.37.6"},{"ecosystem":"js","name":"three","version":"^0.178.0"}],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"PixelBlast/PixelBlast.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["Backgrounds"]},{"name":"Plasma","title":"Plasma","description":"Organic plasma gradients swirl + morph with smooth turbulence.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"ogl","version":"^1.0.11"}],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"Plasma/Plasma.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["Backgrounds"]},{"name":"Prism","title":"Prism","description":"Rotating prism with configurable intensity, size, and colors.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"ogl","version":"^1.0.11"}],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"Prism/Prism.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["Backgrounds"]},{"name":"PrismaticBurst","title":"PrismaticBurst","description":"Burst of light rays with controllable color, distortion, amount.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"ogl","version":"^1.0.11"}],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"PrismaticBurst/PrismaticBurst.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["Backgrounds"]},{"name":"RippleGrid","title":"RippleGrid","description":"A grid that continously animates with a ripple effect.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"ogl","version":"^1.0.11"}],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"RippleGrid/RippleGrid.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["Backgrounds"]},{"name":"Silk","title":"Silk","description":"Smooth waves background with soft lighting.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"ogl","version":"^1.0.11"}],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"Silk/Silk.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["Backgrounds"]},{"name":"Squares","title":"Squares","description":"Animated squares with scaling + direction customization.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"Squares/Squares.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["Backgrounds"]},{"name":"Threads","title":"Threads","description":"Animated pattern of lines forming a fabric-like motion.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"ogl","version":"^1.0.11"}],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"Threads/Threads.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["Backgrounds"]},{"name":"Waves","title":"Waves","description":"Layered lines that form smooth wave patterns with animation.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"Waves/Waves.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["Backgrounds"]},{"name":"LiquidEther","title":"LiquidEther","description":"Interactive liquid shader with flowing distortion and customizable colors.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"three","version":"^0.178.0"}],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"LiquidEther/LiquidEther.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["Backgrounds"]},{"name":"LightPillar","title":"LightPillar","description":"Vertical pillar of light with glow effects.","type":"registry:component","add":"when-added","registryDependencies":[],"dependencies":[{"ecosystem":"js","name":"three","version":"^0.178.0"}],"devDependencies":[],"files":[{"type":"registry:component","role":"file","path":"LightPillar/LightPillar.vue","registryDependencies":[],"dependencies":[],"devDependencies":[]}],"categories":["Backgrounds"]}]} \ No newline at end of file +{ + "name": "@vue-bits", + "authors": ["David Haz"], + "bugs": "https://github.com/DavidHDev/vue-bits/issues", + "description": "An open source collection of animated, interactive & fully customizable Vue components for building stunning, memorable user interfaces.", + "homepage": "https://vue-bits.dev", + "repository": "https://github.com/DavidHDev/vue-bits", + "tags": [ + "vue", + "javascript", + "components", + "web", + "vuejs", + "css-animations", + "component-library", + "ui-components", + "3d", + "ui-library", + "tailwind", + "tailwindcss", + "components", + "components-library" + ], + "type": "distributed", + "items": [ + { + "name": "AnimatedContent", + "title": "AnimatedContent", + "description": "Wrapper that animates any children on scroll or mount with configurable direction, distance, duration and easing.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [{ "ecosystem": "js", "name": "gsap", "version": "^3.13.0" }], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "AnimatedContent/AnimatedContent.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["Animations"] + }, + { + "name": "BlobCursor", + "title": "BlobCursor", + "description": "Organic blob cursor that smoothly follows the pointer with inertia and elastic morphing.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [{ "ecosystem": "js", "name": "gsap", "version": "^3.13.0" }], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "BlobCursor/BlobCursor.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["Animations"] + }, + { + "name": "ClickSpark", + "title": "ClickSpark", + "description": "Creates particle spark bursts at click position.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "ClickSpark/ClickSpark.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["Animations"] + }, + { + "name": "Crosshair", + "title": "Crosshair", + "description": "Custom crosshair cursor with tracking, and link hover effects.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [{ "ecosystem": "js", "name": "gsap", "version": "^3.13.0" }], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "Crosshair/Crosshair.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["Animations"] + }, + { + "name": "Cubes", + "title": "Cubes", + "description": "3D rotating cube cluster. Supports auto-rotation or hover interaction.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [{ "ecosystem": "js", "name": "gsap", "version": "^3.13.0" }], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "Cubes/Cubes.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["Animations"] + }, + { + "name": "ElectricBorder", + "title": "ElectricBorder", + "description": "Jittery electric energy border with animated arcs, glow and adjustable intensity.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "ElectricBorder/ElectricBorder.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["Animations"] + }, + { + "name": "FadeContent", + "title": "FadeContent", + "description": "Simple directional fade / slide entrance wrapper with threshold-based activation.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "FadeContent/FadeContent.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["Animations"] + }, + { + "name": "GlareHover", + "title": "GlareHover", + "description": "Adds a realistic moving glare highlight on hover over any element.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "GlareHover/GlareHover.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["Animations"] + }, + { + "name": "GradualBlur", + "title": "GradualBlur", + "description": "Progressively un-blurs content based on scroll or trigger creating a cinematic reveal.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [{ "ecosystem": "js", "name": "mathjs", "version": "^14.6.0" }], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "GradualBlur/GradualBlur.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["Animations"] + }, + { + "name": "GhostCursor", + "title": "GhostCursor", + "description": "Semi-transparent ghost cursor that smoothly follows the real cursor with a trailing effect.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [{ "ecosystem": "js", "name": "three", "version": "^0.178.0" }], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "GhostCursor/GhostCursor.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["Animations"] + }, + { + "name": "ImageTrail", + "title": "ImageTrail", + "description": "Cursor-based image trail with several built-in variants.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [{ "ecosystem": "js", "name": "gsap", "version": "^3.13.0" }], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "ImageTrail/ImageTrail.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["Animations"] + }, + { + "name": "LogoLoop", + "title": "LogoLoop", + "description": "Continuously looping marquee of brand or tech logos with seamless repeat and hover pause.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "LogoLoop/LogoLoop.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["Animations"] + }, + { + "name": "Magnet", + "title": "Magnet", + "description": "Elements magnetically ease toward the cursor then settle back with spring physics.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "Magnet/Magnet.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["Animations"] + }, + { + "name": "MagnetLines", + "title": "MagnetLines", + "description": "Animated field lines bend toward the cursor.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "MagnetLines/MagnetLines.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["Animations"] + }, + { + "name": "MetaBalls", + "title": "MetaBalls", + "description": "Liquid metaball blobs that merge and separate with smooth implicit surface animation.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [{ "ecosystem": "js", "name": "ogl", "version": "^1.0.11" }], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "MetaBalls/MetaBalls.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["Animations"] + }, + { + "name": "MetallicPaint", + "title": "MetallicPaint", + "description": "Liquid metallic paint shader which can be applied to SVG elements.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "MetallicPaint/MetallicPaint.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["Animations"] + }, + { + "name": "Noise", + "title": "Noise", + "description": "Animated film grain / noise overlay adding subtle texture and motion.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "Noise/Noise.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["Animations"] + }, + { + "name": "PixelTransition", + "title": "PixelTransition", + "description": "Pixel dissolve transition for content reveal on hover.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [{ "ecosystem": "js", "name": "gsap", "version": "^3.13.0" }], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "PixelTransition/PixelTransition.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["Animations"] + }, + { + "name": "Ribbons", + "title": "Ribbons", + "description": "Flowing responsive ribbons/cursor trail driven by physics and pointer motion.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [{ "ecosystem": "js", "name": "ogl", "version": "^1.0.11" }], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "Ribbons/Ribbons.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["Animations"] + }, + { + "name": "ShapeBlur", + "title": "ShapeBlur", + "description": "Morphing blurred geometric shape. The effect occurs on hover.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [{ "ecosystem": "js", "name": "three", "version": "^0.178.0" }], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "ShapeBlur/ShapeBlur.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["Animations"] + }, + { + "name": "SplashCursor", + "title": "SplashCursor", + "description": "Liquid splash burst at cursor with curling ripples and waves.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "SplashCursor/SplashCursor.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["Animations"] + }, + { + "name": "StarBorder", + "title": "StarBorder", + "description": "Animated star / sparkle border orbiting content with twinkle pulses.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "StarBorder/StarBorder.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["Animations"] + }, + { + "name": "StickerPeel", + "title": "StickerPeel", + "description": "Sticker corner lift + peel interaction using 3D transform and shadow depth.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [{ "ecosystem": "js", "name": "gsap", "version": "^3.13.0" }], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "StickerPeel/StickerPeel.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["Animations"] + }, + { + "name": "TargetCursor", + "title": "TargetCursor", + "description": "A cursor follow animation with 4 corners that lock onto targets.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [{ "ecosystem": "js", "name": "gsap", "version": "^3.13.0" }], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "TargetCursor/TargetCursor.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["Animations"] + }, + { + "name": "LaserFlow", + "title": "LaserFlow", + "description": "Dynamic laser light that flows onto a surface, customizable effect.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [{ "ecosystem": "js", "name": "three", "version": "^0.178.0" }], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "LaserFlow/LaserFlow.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["Animations"] + }, + { + "name": "PixelTrail", + "title": "PixelTrail", + "description": "Pixel grid trail effect that follows cursor movement with customizable gooey filter.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [{ "ecosystem": "js", "name": "three", "version": "^0.178.0" }], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "PixelTrail/PixelTrail.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["Animations"] + }, + { + "name": "ASCIIText", + "title": "ASCIIText", + "description": "Renders text with an animated ASCII background for a retro feel.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [{ "ecosystem": "js", "name": "three", "version": "^0.178.0" }], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "ASCIIText/ASCIIText.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["TextAnimations"] + }, + { + "name": "CountUp", + "title": "CountUp", + "description": "Animated number counter supporting formatting and decimals.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "CountUp/CountUp.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["TextAnimations"] + }, + { + "name": "BlurText", + "title": "BlurText", + "description": "Text starts blurred then crisply resolves for a soft-focus reveal effect.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [{ "ecosystem": "js", "name": "motion-v", "version": "^1.5.0" }], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "BlurText/BlurText.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["TextAnimations"] + }, + { + "name": "CircularText", + "title": "CircularText", + "description": "Layouts characters around a circle with optional rotation animation.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [{ "ecosystem": "js", "name": "motion-v", "version": "^1.5.0" }], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "CircularText/CircularText.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["TextAnimations"] + }, + { + "name": "CurvedLoop", + "title": "CurvedLoop", + "description": "Flowing looping text path along a customizable curve with drag interaction.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "CurvedLoop/CurvedLoop.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["TextAnimations"] + }, + { + "name": "DecryptedText", + "title": "DecryptedText", + "description": "Hacker-style decryption cycling random glyphs until resolving to real text.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "DecryptedText/DecryptedText.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["TextAnimations"] + }, + { + "name": "FallingText", + "title": "FallingText", + "description": "Characters fall with gravity + bounce creating a playful entrance.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [{ "ecosystem": "js", "name": "matter-js", "version": "^0.20.0" }], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "FallingText/FallingText.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["TextAnimations"] + }, + { + "name": "FuzzyText", + "title": "FuzzyText", + "description": "Vibrating fuzzy text with controllable hover intensity.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "FuzzyText/FuzzyText.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["TextAnimations"] + }, + { + "name": "GlitchText", + "title": "GlitchText", + "description": "RGB split and distortion glitch effect with jitter effects.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "GlitchText/GlitchText.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["TextAnimations"] + }, + { + "name": "GradientText", + "title": "GradientText", + "description": "Animated gradient sweep across live text with speed and color control.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "GradientText/GradientText.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["TextAnimations"] + }, + { + "name": "RotatingText", + "title": "RotatingText", + "description": "Cycles through multiple phrases with 3D rotate / flip transitions.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [{ "ecosystem": "js", "name": "motion-v", "version": "^1.5.0" }], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "RotatingText/RotatingText.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["TextAnimations"] + }, + { + "name": "ScrambleText", + "title": "ScrambleText", + "description": "Detects cursor position and applies a distortion effect to text.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [{ "ecosystem": "js", "name": "gsap", "version": "^3.13.0" }], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "ScrambleText/ScrambleText.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["TextAnimations"] + }, + { + "name": "ScrollFloat", + "title": "ScrollFloat", + "description": "Text gently floats / parallax shifts on scroll.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [{ "ecosystem": "js", "name": "gsap", "version": "^3.13.0" }], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "ScrollFloat/ScrollFloat.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["TextAnimations"] + }, + { + "name": "ScrollReveal", + "title": "ScrollReveal", + "description": "Text gently unblurs and reveals on scroll.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [{ "ecosystem": "js", "name": "gsap", "version": "^3.13.0" }], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "ScrollReveal/ScrollReveal.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["TextAnimations"] + }, + { + "name": "ScrollVelocity", + "title": "ScrollVelocity", + "description": "Text marquee animatio - speed and distortion scale with user's scroll velocity.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [{ "ecosystem": "js", "name": "gsap", "version": "^3.13.0" }], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "ScrollVelocity/ScrollVelocity.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["TextAnimations"] + }, + { + "name": "ShinyText", + "title": "ShinyText", + "description": "Metallic sheen sweeps across text producing a reflective highlight.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "ShinyText/ShinyText.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["TextAnimations"] + }, + { + "name": "SplitText", + "title": "SplitText", + "description": "Splits text into characters / words for staggered entrance animation.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [{ "ecosystem": "js", "name": "gsap", "version": "^3.13.0" }], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "SplitText/SplitText.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["TextAnimations"] + }, + { + "name": "TextCursor", + "title": "TextCursor", + "description": "Make any text element follow your cursor, leaving a trail of copies behind it.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [{ "ecosystem": "js", "name": "motion-v", "version": "^1.5.0" }], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "TextCursor/TextCursor.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["TextAnimations"] + }, + { + "name": "TextPressure", + "title": "TextPressure", + "description": "Characters scale / warp interactively based on pointer pressure zone.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "TextPressure/TextPressure.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["TextAnimations"] + }, + { + "name": "TextType", + "title": "TextType", + "description": "Typewriter effect with blinking cursor and adjustable typing cadence.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [{ "ecosystem": "js", "name": "gsap", "version": "^3.13.0" }], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "TextType/TextType.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["TextAnimations"] + }, + { + "name": "TrueFocus", + "title": "TrueFocus", + "description": "Applies dynamic blur / clarity based over a series of words in order.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [{ "ecosystem": "js", "name": "motion-v", "version": "^1.5.0" }], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "TrueFocus/TrueFocus.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["TextAnimations"] + }, + { + "name": "VariableProximity", + "title": "VariableProximity", + "description": "Letter styling changes continuously with pointer distance mapping.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "VariableProximity/VariableProximity.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["TextAnimations"] + }, + { + "name": "Shuffle", + "title": "Shuffle", + "description": "GSAP-powered slot machine style text shuffle animation with scroll trigger.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [{ "ecosystem": "js", "name": "gsap", "version": "^3.13.0" }], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "Shuffle/Shuffle.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["TextAnimations"] + }, + { + "name": "AnimatedList", + "title": "AnimatedList", + "description": "List items enter with staggered motion variants for polished reveals.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [{ "ecosystem": "js", "name": "motion-v", "version": "^1.5.0" }], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "AnimatedList/AnimatedList.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["Components"] + }, + { + "name": "BounceCards", + "title": "BounceCards", + "description": "Cards bounce that bounce in on mount.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [{ "ecosystem": "js", "name": "gsap", "version": "^3.13.0" }], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "BounceCards/BounceCards.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["Components"] + }, + { + "name": "BubbleMenu", + "title": "BubbleMenu", + "description": "Floating circular expanding menu with staggered item reveal.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [{ "ecosystem": "js", "name": "gsap", "version": "^3.13.0" }], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "BubbleMenu/BubbleMenu.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["Components"] + }, + { + "name": "CardNav", + "title": "CardNav", + "description": "Expandable navigation bar with card panels revealing nested links.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [{ "ecosystem": "js", "name": "gsap", "version": "^3.13.0" }], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "CardNav/CardNav.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["Components"] + }, + { + "name": "CardSwap", + "title": "CardSwap", + "description": "Cards animate position swapping with smooth layout transitions.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [{ "ecosystem": "js", "name": "gsap", "version": "^3.13.0" }], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "CardSwap/CardSwap.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["Components"] + }, + { + "name": "Carousel", + "title": "Carousel", + "description": "Responsive carousel with touch gestures, looping and transitions.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [{ "ecosystem": "js", "name": "motion-v", "version": "^1.5.0" }], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "Carousel/Carousel.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["Components"] + }, + { + "name": "ChromaGrid", + "title": "ChromaGrid", + "description": "A responsive grid of grayscale tiles. Hovering the grid reaveals their colors.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [{ "ecosystem": "js", "name": "gsap", "version": "^3.13.0" }], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "ChromaGrid/ChromaGrid.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["Components"] + }, + { + "name": "CircularGallery", + "title": "CircularGallery", + "description": "Circular orbit gallery rotating images.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [{ "ecosystem": "js", "name": "ogl", "version": "^1.0.11" }], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "CircularGallery/CircularGallery.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["Components"] + }, + { + "name": "Counter", + "title": "Counter", + "description": "Flexible animated counter supporting increments + easing.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [{ "ecosystem": "js", "name": "motion-v", "version": "^1.5.0" }], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "Counter/Counter.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["Components"] + }, + { + "name": "DecayCard", + "title": "DecayCard", + "description": "Hover parallax effect that disintegrates the content of a card.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [{ "ecosystem": "js", "name": "gsap", "version": "^3.13.0" }], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "DecayCard/DecayCard.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["Components"] + }, + { + "name": "Dock", + "title": "Dock", + "description": "macOS style magnifying dock with proximity scaling of icons.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [{ "ecosystem": "js", "name": "motion-v", "version": "^1.5.0" }], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "Dock/Dock.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["Components"] + }, + { + "name": "DomeGallery", + "title": "DomeGallery", + "description": "Immersive 3D dome gallery projecting images on a hemispheric surface.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "DomeGallery/DomeGallery.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["Components"] + }, + { + "name": "ElasticSlider", + "title": "ElasticSlider", + "description": "Slider handle stretches elastically then snaps with spring physics.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "ElasticSlider/ElasticSlider.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["Components"] + }, + { + "name": "FlowingMenu", + "title": "FlowingMenu", + "description": "Liquid flowing active indicator glides between menu items.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [{ "ecosystem": "js", "name": "gsap", "version": "^3.13.0" }], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "FlowingMenu/FlowingMenu.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["Components"] + }, + { + "name": "FlyingPosters", + "title": "FlyingPosters", + "description": "3D posters rotate on scroll infinitely.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [{ "ecosystem": "js", "name": "ogl", "version": "^1.0.11" }], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "FlyingPosters/FlyingPosters.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["Components"] + }, + { + "name": "Folder", + "title": "Folder", + "description": "Interactive folder opens to reveal nested content smooth motion.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "Folder/Folder.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["Components"] + }, + { + "name": "GlassIcons", + "title": "GlassIcons", + "description": "Icon set styled with frosted glass blur.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "GlassIcons/GlassIcons.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["Components"] + }, + { + "name": "GlassSurface", + "title": "GlassSurface", + "description": "Advanced Apple-style glass surface with real-time distortion + lighting.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "GlassSurface/GlassSurface.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["Components"] + }, + { + "name": "GooeyNav", + "title": "GooeyNav", + "description": "Navigation indicator morphs with gooey blob transitions between items.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "GooeyNav/GooeyNav.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["Components"] + }, + { + "name": "InfiniteMenu", + "title": "InfiniteMenu", + "description": "Horizontally looping menu effect that scrolls endlessly with seamless wrap.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [{ "ecosystem": "js", "name": "gl-matrix", "version": "^3.4.3" }], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "InfiniteMenu/InfiniteMenu.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["Components"] + }, + { + "name": "InfiniteScroll", + "title": "InfiniteScroll", + "description": "Infinite scrolling container auto-loads content near viewport end.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [{ "ecosystem": "js", "name": "gsap", "version": "^3.13.0" }], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "InfiniteScroll/InfiniteScroll.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["Components"] + }, + { + "name": "MagicBento", + "title": "MagicBento", + "description": "Interactive bento grid tiles expand + animate with various options.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [{ "ecosystem": "js", "name": "gsap", "version": "^3.13.0" }], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "MagicBento/MagicBento.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["Components"] + }, + { + "name": "Masonry", + "title": "Masonry", + "description": "Responsive masonry layout with animated reflow + gaps optimization.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [{ "ecosystem": "js", "name": "gsap", "version": "^3.13.0" }], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "Masonry/Masonry.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["Components"] + }, + { + "name": "PillNav", + "title": "PillNav", + "description": "Minimal pill nav with sliding active highlight + smooth easing.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [{ "ecosystem": "js", "name": "gsap", "version": "^3.13.0" }], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "PillNav/PillNav.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["Components"] + }, + { + "name": "PixelCard", + "title": "PixelCard", + "description": "Card content revealed through pixel expansion transition.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "PixelCard/PixelCard.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["Components"] + }, + { + "name": "ProfileCard", + "title": "ProfileCard", + "description": "Animated profile card glare with 3D hover effect.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "ProfileCard/ProfileCard.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["Components"] + }, + { + "name": "ScrollStack", + "title": "ScrollStack", + "description": "Overlapping card stack reveals on scroll with depth layering.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [{ "ecosystem": "js", "name": "lenis", "version": "^1.3.8" }], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "ScrollStack/ScrollStack.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["Components"] + }, + { + "name": "SpotlightCard", + "title": "SpotlightCard", + "description": "Dynamic spotlight follows cursor casting gradient illumination.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "SpotlightCard/SpotlightCard.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["Components"] + }, + { + "name": "Stack", + "title": "Stack", + "description": "Layered stack with swipe animations and smooth transitions.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [{ "ecosystem": "js", "name": "motion-v", "version": "^1.5.0" }], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "Stack/Stack.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["Components"] + }, + { + "name": "Stepper", + "title": "Stepper", + "description": "Animated multi-step progress indicator with active state transitions.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [{ "ecosystem": "js", "name": "motion-v", "version": "^1.5.0" }], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "Stepper/Stepper.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["Components"] + }, + { + "name": "TiltedCard", + "title": "TiltedCard", + "description": "3D perspective tilt card reacting to pointer.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [{ "ecosystem": "js", "name": "motion-v", "version": "^1.5.0" }], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "TiltedCard/TiltedCard.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["Components"] + }, + { + "name": "StaggeredMenu", + "title": "StaggeredMenu", + "description": "Menu with staggered item animations and smooth transitions on open/close.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [{ "ecosystem": "js", "name": "gsap", "version": "^3.13.0" }], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "StaggeredMenu/StaggeredMenu.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["Components"] + }, + { + "name": "Aurora", + "title": "Aurora", + "description": "Flowing aurora gradient background.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [{ "ecosystem": "js", "name": "ogl", "version": "^1.0.11" }], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "Aurora/Aurora.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["Backgrounds"] + }, + { + "name": "Balatro", + "title": "Balatro", + "description": "The balatro shader, fully customizalbe and interactive.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [{ "ecosystem": "js", "name": "ogl", "version": "^1.0.11" }], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "Balatro/Balatro.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["Backgrounds"] + }, + { + "name": "Ballpit", + "title": "Ballpit", + "description": "Physics ball pit simulation with bouncing colorful spheres.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [ + { "ecosystem": "js", "name": "gsap", "version": "^3.13.0" }, + { "ecosystem": "js", "name": "three", "version": "^0.178.0" } + ], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "Ballpit/Ballpit.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["Backgrounds"] + }, + { + "name": "Beams", + "title": "Beams", + "description": "Crossing animated ribbons with customizable properties.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [{ "ecosystem": "js", "name": "three", "version": "^0.178.0" }], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "Beams/Beams.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["Backgrounds"] + }, + { + "name": "ColorBends", + "title": "ColorBends", + "description": "Vibrant color bends with smooth flowing animation.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [{ "ecosystem": "js", "name": "three", "version": "^0.178.0" }], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "ColorBends/ColorBends.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["Backgrounds"] + }, + { + "name": "DarkVeil", + "title": "DarkVeil", + "description": "Subtle dark background with a smooth animation and postprocessing.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [{ "ecosystem": "js", "name": "ogl", "version": "^1.0.11" }], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "DarkVeil/DarkVeil.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["Backgrounds"] + }, + { + "name": "Dither", + "title": "Dither", + "description": "Retro dithered noise shader background.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [{ "ecosystem": "js", "name": "ogl", "version": "^1.0.11" }], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "Dither/Dither.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["Backgrounds"] + }, + { + "name": "DotGrid", + "title": "DotGrid", + "description": "Animated dot grid with cursor interactions.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [{ "ecosystem": "js", "name": "gsap", "version": "^3.13.0" }], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "DotGrid/DotGrid.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["Backgrounds"] + }, + { + "name": "FaultyTerminal", + "title": "FaultyTerminal", + "description": "Terminal CRT scanline squares effect with flicker + noise.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [{ "ecosystem": "js", "name": "ogl", "version": "^1.0.11" }], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "FaultyTerminal/FaultyTerminal.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["Backgrounds"] + }, + { + "name": "FloatingLines", + "title": "FloatingLines", + "description": "3D floating lines that react to cursor movement.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [{ "ecosystem": "js", "name": "three", "version": "^0.178.0" }], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "FloatingLines/FloatingLines.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["Backgrounds"] + }, + { + "name": "Galaxy", + "title": "Galaxy", + "description": "Parallax realistic starfield with pointer interactions.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [{ "ecosystem": "js", "name": "ogl", "version": "^1.0.11" }], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "Galaxy/Galaxy.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["Backgrounds"] + }, + { + "name": "GradientBlinds", + "title": "GradientBlinds", + "description": "Layered gradient blinds with spotlight and noise distortion.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [{ "ecosystem": "js", "name": "ogl", "version": "^1.0.11" }], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "GradientBlinds/GradientBlinds.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["Backgrounds"] + }, + { + "name": "GridDistortion", + "title": "GridDistortion", + "description": "Warped grid mesh distorts smoothly reacting to cursor.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [{ "ecosystem": "js", "name": "three", "version": "^0.178.0" }], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "GridDistortion/GridDistortion.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["Backgrounds"] + }, + { + "name": "GridMotion", + "title": "GridMotion", + "description": "Perspective moving grid lines based on cusror position.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [{ "ecosystem": "js", "name": "gsap", "version": "^3.13.0" }], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "GridMotion/GridMotion.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["Backgrounds"] + }, + { + "name": "Hyperspeed", + "title": "Hyperspeed", + "description": "Animated lines continously moving to simulate hyperspace travel on click hold.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [ + { "ecosystem": "js", "name": "three", "version": "^0.178.0" }, + { "ecosystem": "js", "name": "postprocessing", "version": "^6.37.6" } + ], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "Hyperspeed/Hyperspeed.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + }, + { + "type": "registry:component", + "role": "file", + "path": "Hyperspeed/HyperspeedPresets.ts", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["Backgrounds"] + }, + { + "name": "Iridescence", + "title": "Iridescence", + "description": "Slick iridescent shader with shifting waves.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [{ "ecosystem": "js", "name": "ogl", "version": "^1.0.11" }], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "Iridescence/Iridescence.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["Backgrounds"] + }, + { + "name": "LetterGlitch", + "title": "LetterGlitch", + "description": "Matrix style letter animation.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "LetterGlitch/LetterGlitch.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["Backgrounds"] + }, + { + "name": "LightRays", + "title": "LightRays", + "description": "Volumetric light rays/beams with customizable direction.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [{ "ecosystem": "js", "name": "ogl", "version": "^1.0.11" }], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "LightRays/LightRays.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["Backgrounds"] + }, + { + "name": "Lightning", + "title": "Lightning", + "description": "Procedural lightning bolts with branching and glow flicker.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "Lightning/Lightning.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["Backgrounds"] + }, + { + "name": "LiquidChrome", + "title": "LiquidChrome", + "description": "Liquid metallic chrome shader with flowing reflective surface.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [{ "ecosystem": "js", "name": "ogl", "version": "^1.0.11" }], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "LiquidChrome/LiquidChrome.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["Backgrounds"] + }, + { + "name": "Orb", + "title": "Orb", + "description": "Floating energy orb with customizable hover effect.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [{ "ecosystem": "js", "name": "ogl", "version": "^1.0.11" }], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "Orb/Orb.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["Backgrounds"] + }, + { + "name": "Particles", + "title": "Particles", + "description": "Configurable particle system.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [{ "ecosystem": "js", "name": "ogl", "version": "^1.0.11" }], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "Particles/Particles.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["Backgrounds"] + }, + { + "name": "PixelBlast", + "title": "PixelBlast", + "description": "Exploding pixel particle bursts with optional liquid postprocessing.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [ + { "ecosystem": "js", "name": "postprocessing", "version": "^6.37.6" }, + { "ecosystem": "js", "name": "three", "version": "^0.178.0" } + ], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "PixelBlast/PixelBlast.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["Backgrounds"] + }, + { + "name": "Plasma", + "title": "Plasma", + "description": "Organic plasma gradients swirl + morph with smooth turbulence.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [{ "ecosystem": "js", "name": "ogl", "version": "^1.0.11" }], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "Plasma/Plasma.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["Backgrounds"] + }, + { + "name": "Prism", + "title": "Prism", + "description": "Rotating prism with configurable intensity, size, and colors.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [{ "ecosystem": "js", "name": "ogl", "version": "^1.0.11" }], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "Prism/Prism.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["Backgrounds"] + }, + { + "name": "PrismaticBurst", + "title": "PrismaticBurst", + "description": "Burst of light rays with controllable color, distortion, amount.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [{ "ecosystem": "js", "name": "ogl", "version": "^1.0.11" }], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "PrismaticBurst/PrismaticBurst.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["Backgrounds"] + }, + { + "name": "RippleGrid", + "title": "RippleGrid", + "description": "A grid that continously animates with a ripple effect.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [{ "ecosystem": "js", "name": "ogl", "version": "^1.0.11" }], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "RippleGrid/RippleGrid.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["Backgrounds"] + }, + { + "name": "Silk", + "title": "Silk", + "description": "Smooth waves background with soft lighting.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [{ "ecosystem": "js", "name": "ogl", "version": "^1.0.11" }], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "Silk/Silk.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["Backgrounds"] + }, + { + "name": "Squares", + "title": "Squares", + "description": "Animated squares with scaling + direction customization.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "Squares/Squares.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["Backgrounds"] + }, + { + "name": "Threads", + "title": "Threads", + "description": "Animated pattern of lines forming a fabric-like motion.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [{ "ecosystem": "js", "name": "ogl", "version": "^1.0.11" }], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "Threads/Threads.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["Backgrounds"] + }, + { + "name": "Waves", + "title": "Waves", + "description": "Layered lines that form smooth wave patterns with animation.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "Waves/Waves.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["Backgrounds"] + }, + { + "name": "LiquidEther", + "title": "LiquidEther", + "description": "Interactive liquid shader with flowing distortion and customizable colors.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [{ "ecosystem": "js", "name": "three", "version": "^0.178.0" }], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "LiquidEther/LiquidEther.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["Backgrounds"] + }, + { + "name": "LightPillar", + "title": "LightPillar", + "description": "Vertical pillar of light with glow effects.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [{ "ecosystem": "js", "name": "three", "version": "^0.178.0" }], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "LightPillar/LightPillar.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["Backgrounds"] + }, + { + "name": "PixelSnow", + "title": "PixelSnow", + "description": "Falling pixelated snow effect with customizable density and speed.", + "type": "registry:component", + "add": "when-added", + "registryDependencies": [], + "dependencies": [{ "ecosystem": "js", "name": "three", "version": "^0.178.0" }], + "devDependencies": [], + "files": [ + { + "type": "registry:component", + "role": "file", + "path": "PixelSnow/PixelSnow.vue", + "registryDependencies": [], + "dependencies": [], + "devDependencies": [] + } + ], + "categories": ["Backgrounds"] + } + ] +} diff --git a/src/constants/Categories.ts b/src/constants/Categories.ts index 58a81aa..6b489ba 100644 --- a/src/constants/Categories.ts +++ b/src/constants/Categories.ts @@ -11,8 +11,7 @@ export const NEW = [ 'Pixel Blast', 'Pixel Snow', ]; - -export const UPDATED = []; +export const UPDATED = ['Metallic Paint']; // Used for main sidebar navigation export const CATEGORIES = [ diff --git a/src/constants/Components.ts b/src/constants/Components.ts index 658867b..eefff81 100644 --- a/src/constants/Components.ts +++ b/src/constants/Components.ts @@ -42,7 +42,7 @@ const textAnimations = { 'falling-text': () => import("../demo/TextAnimations/FallingTextDemo.vue"), 'text-cursor': () => import("../demo/TextAnimations/TextCursorDemo.vue"), 'decrypted-text': () => import("../demo/TextAnimations/DecryptedTextDemo.vue"), - 'ascii-text': () => import("../demo/TextAnimations/AsciiTextDemo.vue"), + 'ascii-text': () => import("../demo/TextAnimations/ASCIITextDemo.vue"), 'scramble-text': () => import("../demo/TextAnimations/ScrambleTextDemo.vue"), 'true-focus': () => import("../demo/TextAnimations/TrueFocusDemo.vue"), 'scroll-float': () => import("../demo/TextAnimations/ScrollFloatDemo.vue"), diff --git a/src/constants/Information.ts b/src/constants/Information.ts index 4228e90..82c076b 100644 --- a/src/constants/Information.ts +++ b/src/constants/Information.ts @@ -225,11 +225,11 @@ export const componentMetadata: ComponentMetadata = { //! Text Animations ------------------------------------------------------------------------------------------------------------------------------- - 'TextAnimations/AsciiText': { + 'TextAnimations/ASCIIText': { videoUrl: '/assets/videos/asciitext.webm', description: 'Renders text with an animated ASCII background for a retro feel.', category: 'TextAnimations', - name: 'AsciiText', + name: 'ASCIIText', docsUrl: 'https://vue-bits.dev/text-animations/ascii-text', tags: [] }, diff --git a/src/constants/code/Animations/metallicPaintCode.ts b/src/constants/code/Animations/metallicPaintCode.ts index 87e7b12..3f1fb59 100644 --- a/src/constants/code/Animations/metallicPaintCode.ts +++ b/src/constants/code/Animations/metallicPaintCode.ts @@ -1,45 +1,47 @@ import code from '@content/Animations/MetallicPaint/MetallicPaint.vue?raw'; -import utility from '@content/Animations/MetallicPaint/parseImage.ts?raw'; import { createCodeObject } from '@/types/code'; export const metallicPaint = createCodeObject(code, 'Animations/MetallicPaint', { - usage: ` + usage: ` - const imageData = ref(null); +` }); diff --git a/src/constants/code/TextAnimations/asciiTextCode.ts b/src/constants/code/TextAnimations/asciiTextCode.ts index c8e1af4..90e9464 100644 --- a/src/constants/code/TextAnimations/asciiTextCode.ts +++ b/src/constants/code/TextAnimations/asciiTextCode.ts @@ -1,12 +1,12 @@ -import code from '@/content/TextAnimations/AsciiText/AsciiText.vue?raw'; +import code from '@/content/TextAnimations/ASCIIText/ASCIIText.vue?raw'; import { createCodeObject } from '../../../types/code'; -export const asciiText = createCodeObject(code, 'TextAnimations/AsciiText', { +export const asciiText = createCodeObject(code, 'TextAnimations/ASCIIText', { installation: `npm install three @types/three`, usage: `