diff --git a/package-lock.json b/package-lock.json
index e3a91c5..ab1b398 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -30,7 +30,7 @@
"@tailwindcss/vite": "^4.1.11",
"@tsconfig/node22": "^22.0.2",
"@types/node": "^22.15.32",
- "@types/three": "^0.178.0",
+ "@types/three": "^0.178.1",
"@vitejs/plugin-vue": "^6.0.0",
"@vitejs/plugin-vue-jsx": "^5.0.0",
"@vue/eslint-config-typescript": "^14.5.1",
@@ -2997,9 +2997,9 @@
"license": "MIT"
},
"node_modules/@types/three": {
- "version": "0.178.0",
- "resolved": "https://registry.npmjs.org/@types/three/-/three-0.178.0.tgz",
- "integrity": "sha512-1IpVbMKbEAAWjyn0VTdVcNvI1h1NlTv3CcnwMr3NNBv/gi3PL0/EsWROnXUEkXBxl94MH5bZvS8h0WnBRmR/pQ==",
+ "version": "0.178.1",
+ "resolved": "https://registry.npmjs.org/@types/three/-/three-0.178.1.tgz",
+ "integrity": "sha512-WSabew1mgWgRx2RfLfKY+9h4wyg6U94JfLbZEGU245j/WY2kXqU0MUfghS+3AYMV5ET1VlILAgpy77cB6a3Itw==",
"license": "MIT",
"dependencies": {
"@dimforge/rapier3d-compat": "~0.12.0",
diff --git a/package.json b/package.json
index a02c2e3..6afcf0c 100644
--- a/package.json
+++ b/package.json
@@ -38,7 +38,7 @@
"@tailwindcss/vite": "^4.1.11",
"@tsconfig/node22": "^22.0.2",
"@types/node": "^22.15.32",
- "@types/three": "^0.178.0",
+ "@types/three": "^0.178.1",
"@vitejs/plugin-vue": "^6.0.0",
"@vitejs/plugin-vue-jsx": "^5.0.0",
"@vue/eslint-config-typescript": "^14.5.1",
diff --git a/src/constants/Categories.ts b/src/constants/Categories.ts
index 1a4c567..d6d3fdc 100644
--- a/src/constants/Categories.ts
+++ b/src/constants/Categories.ts
@@ -44,6 +44,7 @@ export const CATEGORIES = [
'Magnet',
'Cubes',
'Blob Cursor',
+ 'Pixel Trail'
]
},
{
diff --git a/src/constants/Components.ts b/src/constants/Components.ts
index f511256..4e415b9 100644
--- a/src/constants/Components.ts
+++ b/src/constants/Components.ts
@@ -12,6 +12,7 @@ const animations = {
'count-up': () => import('../demo/Animations/CountUpDemo.vue'),
'splash-cursor': () => import('../demo/Animations/SplashCursorDemo.vue'),
'blob-cursor': () => import('../demo/Animations/BlobCursorDemo.vue'),
+ 'pixel-trail': () => import('../demo/Animations/PixelTrailDemo.vue')
};
const textAnimations = {
diff --git a/src/constants/code/Animations/pixelTrailCode.ts b/src/constants/code/Animations/pixelTrailCode.ts
new file mode 100644
index 0000000..52f95da
--- /dev/null
+++ b/src/constants/code/Animations/pixelTrailCode.ts
@@ -0,0 +1,21 @@
+import code from '@/content/Animations/PixelTrail/PixelTrail.vue?raw';
+import type { CodeObject } from '../../../types/code';
+
+export const pixelTrail: CodeObject = {
+ cli: `npx jsrepo add https://vue-bits.dev/ui/Animations/PixelTrail`,
+ usage: `
+
+
+
+`,
+ code
+};
diff --git a/src/content/Animations/PixelTrail/PixelTrail.vue b/src/content/Animations/PixelTrail/PixelTrail.vue
new file mode 100644
index 0000000..6a98880
--- /dev/null
+++ b/src/content/Animations/PixelTrail/PixelTrail.vue
@@ -0,0 +1,458 @@
+
+
+
+
+
+
+
+
diff --git a/src/demo/Animations/PixelTrailDemo.vue b/src/demo/Animations/PixelTrailDemo.vue
new file mode 100644
index 0000000..94ec94b
--- /dev/null
+++ b/src/demo/Animations/PixelTrailDemo.vue
@@ -0,0 +1,86 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+