\n \n setWordRef(el as HTMLSpanElement, index)\"\n class=\"relative font-black text-7xl transition-[filter,color] duration-300 ease-in-out cursor-pointer\"\n :style=\"{\n filter: index === currentIndex ? 'blur(0px)' : `blur(${blurAmount}px)`,\n '--border-color': borderColor,\n '--glow-color': glowColor,\n transition: `filter ${animationDuration}s ease`\n }\"\n @mouseenter=\"handleMouseEnter(index)\"\n @mouseleave=\"handleMouseLeave\"\n >\n {{ word }}\n \n\n = 0 ? 1 : 0\n }\"\n :transition=\"{\n duration: animationDuration\n }\"\n :style=\"{\n '--border-color': borderColor,\n '--glow-color': glowColor\n }\"\n >\n \n\n \n\n \n\n \n \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 \n setWordRef(el as HTMLSpanElement, index)\"\n class=\"relative font-black text-7xl transition-[filter,color] duration-300 ease-in-out cursor-pointer\"\n :style=\"{\n filter: index === currentIndex ? 'blur(0px)' : `blur(${blurAmount}px)`,\n '--border-color': borderColor,\n '--glow-color': glowColor,\n transition: `filter ${animationDuration}s ease`\n }\"\n @mouseenter=\"handleMouseEnter(index)\"\n @mouseleave=\"handleMouseLeave\"\n >\n {{ word }}\n \n\n = 0 ? 1 : 0\n }\"\n :transition=\"{\n duration: animationDuration\n }\"\n :style=\"{\n '--border-color': borderColor,\n '--glow-color': glowColor\n }\"\n >\n \n\n \n\n \n\n \n \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 a783f34..af2454a 100644
--- a/public/r/registry.json
+++ b/public/r/registry.json
@@ -549,19 +549,19 @@
"categories": ["Animations"]
},
{
- "name": "CountUp",
- "title": "CountUp",
- "description": "Animated number counter supporting formatting and decimals.",
+ "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": [],
+ "dependencies": [{ "ecosystem": "js", "name": "three", "version": "^0.178.0" }],
"devDependencies": [],
"files": [
{
"type": "registry:component",
"role": "file",
- "path": "CountUp/CountUp.vue",
+ "path": "PixelTrail/PixelTrail.vue",
"registryDependencies": [],
"dependencies": [],
"devDependencies": []
@@ -582,7 +582,28 @@
{
"type": "registry:component",
"role": "file",
- "path": "ASCIIText/AsciiText.vue",
+ "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": []
@@ -1010,6 +1031,27 @@
],
"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",
@@ -2391,6 +2433,27 @@
}
],
"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/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/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: `