diff --git a/web/src/app/blogs/BlogsClient.tsx b/web/src/app/blogs/BlogsClient.tsx
index 85076a0..6d52831 100644
--- a/web/src/app/blogs/BlogsClient.tsx
+++ b/web/src/app/blogs/BlogsClient.tsx
@@ -100,10 +100,7 @@ export default function BlogsClient({
/>
{/* Blogs Grid */}
-
+
{filteredBlogs.map((blog) => (
{
- const cardRef = useRef(null);
-
- const glowRef = useRef(null);
-
- useEffect(() => {
- const card = cardRef.current;
-
- const glow = glowRef.current;
-
- if (!card || !glow) return;
-
- const handleMouseMove = (e: MouseEvent) => {
- const rect = card.getBoundingClientRect();
-
- const x = e.clientX - rect.left;
-
- const y = e.clientY - rect.top;
-
- const rotateX = (y / rect.height - 0.5) * -10;
-
- const rotateY = (x / rect.width - 0.5) * 10;
-
- // Card tilt
- gsap.to(card, {
- rotateX,
- rotateY,
- duration: 0.4,
- ease: 'power2.out',
- transformPerspective: 1000,
- });
-
- // Glow follows mouse exactly
- gsap.to(glow, {
- x,
- y,
- duration: 0.25,
- ease: 'power3.out',
- });
- };
-
- const handleMouseEnter = () => {
- gsap.to(glow, {
- opacity: 0.12,
- scale: 1,
- duration: 0.3,
- });
- };
-
- const handleMouseLeave = () => {
- gsap.to(card, {
- rotateX: 0,
- rotateY: 0,
- duration: 0.5,
- ease: 'power2.out',
- });
-
- gsap.to(glow, {
- opacity: 0,
- scale: 0.8,
- duration: 0.4,
- ease: 'power2.out',
- });
- };
-
- card.addEventListener('mousemove', handleMouseMove);
-
- card.addEventListener('mouseenter', handleMouseEnter);
-
- card.addEventListener('mouseleave', handleMouseLeave);
-
- return () => {
- card.removeEventListener('mousemove', handleMouseMove);
-
- card.removeEventListener('mouseenter', handleMouseEnter);
-
- card.removeEventListener('mouseleave', handleMouseLeave);
- };
- }, []);
-
return (
-
+
- {/* Moving Glow Ball */}
-
-
{category}