diff --git a/src/constants/Categories.ts b/src/constants/Categories.ts
index a3c00c7..6de8594 100644
--- a/src/constants/Categories.ts
+++ b/src/constants/Categories.ts
@@ -45,6 +45,7 @@ export const CATEGORIES = [
'Magnet',
'Cubes',
'Blob Cursor',
+ 'Meta Balls',
'Image Trail',
]
},
diff --git a/src/constants/Components.ts b/src/constants/Components.ts
index d026786..8fb37fa 100644
--- a/src/constants/Components.ts
+++ b/src/constants/Components.ts
@@ -13,6 +13,7 @@ const animations = {
'splash-cursor': () => import('../demo/Animations/SplashCursorDemo.vue'),
'noise': () => import('../demo/Animations/NoiseDemo.vue'),
'blob-cursor': () => import('../demo/Animations/BlobCursorDemo.vue'),
+ 'meta-balls': () => import('../demo/Animations/MetaBallsDemo.vue'),
'image-trail': () => import('../demo/Animations/ImageTrailDemo.vue'),
};
diff --git a/src/constants/code/Animations/metaBallsCode.ts b/src/constants/code/Animations/metaBallsCode.ts
new file mode 100644
index 0000000..54d85f1
--- /dev/null
+++ b/src/constants/code/Animations/metaBallsCode.ts
@@ -0,0 +1,26 @@
+import code from '@/content/Animations/MetaBalls/MetaBalls.vue?raw';
+import type { CodeObject } from '../../../types/code';
+
+export const metaBalls: CodeObject = {
+ cli: `npx jsrepo add https://vue-bits.dev/ui/Animations/MetaBalls`,
+ installation: `npm i ogl`,
+ usage: `
+
+
+
+`,
+ code
+};
diff --git a/src/content/Animations/MetaBalls/MetaBalls.vue b/src/content/Animations/MetaBalls/MetaBalls.vue
new file mode 100644
index 0000000..224f453
--- /dev/null
+++ b/src/content/Animations/MetaBalls/MetaBalls.vue
@@ -0,0 +1,269 @@
+
+
+
+
+
diff --git a/src/demo/Animations/MetaBallsDemo.vue b/src/demo/Animations/MetaBallsDemo.vue
new file mode 100644
index 0000000..a4f1480
--- /dev/null
+++ b/src/demo/Animations/MetaBallsDemo.vue
@@ -0,0 +1,217 @@
+
+
+
+
+
+
+
+
+
+
+ {
+ ballCount = val;
+ }
+ "
+ />
+
+ {
+ speed = val;
+ }
+ "
+ />
+
+ {
+ animationSize = val;
+ }
+ "
+ />
+
+ {
+ clumpFactor = val;
+ }
+ "
+ />
+
+
+
+ {
+ hoverSmoothness = val;
+ }
+ "
+ />
+
+ {
+ cursorBallSize = val;
+ }
+ "
+ />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+