-
- {portfolio.title}
-
-
- {portfolio.tags.map((tag, index) => (
-
- {tag.name}
-
- ))}
-
-
- {portfolio.description}
-
-
-
+
);
}
diff --git a/components/landing/portfolio.tsx b/components/landing/portfolio.tsx
index ead00a4..d306a86 100644
--- a/components/landing/portfolio.tsx
+++ b/components/landing/portfolio.tsx
@@ -2,13 +2,14 @@
import axios from 'axios';
import { useRef, useState } from 'react';
+import { m, useInView } from 'framer-motion';
import { CopyPlus, Loader2 } from 'lucide-react';
-import { LazyMotion, domAnimation, m, useInView } from 'framer-motion';
-import type getInformation from '@/data/information';
import { slideInFromTop } from '@/lib/motion';
import { Button } from '@/components/ui/button';
+import type getInformation from '@/data/information';
import { useToast } from '@/components/ui/use-toast';
+import LazyMotionLayout from '@/components/ui/lazy-motion';
import PortfolioCard from '@/components/landing/portfolio-card';
type PortfolioProps = Pick<
@@ -54,7 +55,7 @@ export default function Portfolio({ portfolioWithBlur }: PortfolioProps) {
};
return (
-
+
)}
-
+
);
}
diff --git a/components/landing/qualification.tsx b/components/landing/qualification.tsx
index 1e9e411..8853cbd 100644
--- a/components/landing/qualification.tsx
+++ b/components/landing/qualification.tsx
@@ -1,10 +1,11 @@
'use client';
import { useRef } from 'react';
+import { m, useInView } from 'framer-motion';
import { Briefcase, GraduationCap } from 'lucide-react';
-import { LazyMotion, domAnimation, m, useInView } from 'framer-motion';
import type getInformation from '@/data/information';
+import LazyMotionLayout from '@/components/ui/lazy-motion';
import { slideInFromRight, slideInFromTop } from '@/lib/motion';
import QualificationCard from '@/components/landing/qualification-card';
import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs';
@@ -22,7 +23,7 @@ export default function Qualification({
const isInView = useInView(ref, { once: true });
return (
-
+
-
+
);
}
diff --git a/components/landing/tool.tsx b/components/landing/tool.tsx
index 2249feb..f3b0c7e 100644
--- a/components/landing/tool.tsx
+++ b/components/landing/tool.tsx
@@ -2,10 +2,11 @@
import { useRef } from 'react';
import Image from 'next/image';
-import { LazyMotion, domAnimation, m, useInView } from 'framer-motion';
+import { m, useInView } from 'framer-motion';
import { cn } from '@/lib/utils';
import type getInformation from '@/data/information';
+import LazyMotionLayout from '@/components/ui/lazy-motion';
import { slideInFromRight, slideInFromTop } from '@/lib/motion';
type ToolProps = Pick
>, 'tool'>;
@@ -15,7 +16,7 @@ export default function Tool({ tool }: ToolProps) {
const isInView = useInView(ref, { once: true });
return (
-
+
-
+
);
}
diff --git a/components/main/footer.tsx b/components/main/footer.tsx
index ac0ec08..c8235f7 100644
--- a/components/main/footer.tsx
+++ b/components/main/footer.tsx
@@ -2,11 +2,12 @@
import Link from 'next/link';
import { useRef } from 'react';
+import { m, useInView } from 'framer-motion';
import type { Miscellaneous } from '@prisma/client';
import { Facebook, Instagram, Linkedin, Twitter } from 'lucide-react';
-import { LazyMotion, domAnimation, m, useInView } from 'framer-motion';
import { Button } from '@/components/ui/button';
+import LazyMotionLayout from '@/components/ui/lazy-motion';
import { slideInFromLeft, slideInFromRight } from '@/lib/motion';
interface FooterProps {
@@ -18,7 +19,7 @@ export default function Footer({ miscellaneous }: FooterProps) {
const isInView = useInView(ref, { once: true });
return (
-
+
-