diff --git a/app/page.tsx b/app/page.tsx index 59c1cbd..779e8a6 100644 --- a/app/page.tsx +++ b/app/page.tsx @@ -1,24 +1,31 @@ import About from "@/components/about"; -import Contact from "@/components/contact"; import Hero from "@/components/hero"; import Navbar from "@/components/navbar"; import Projects from "@/components/projects"; import Resume from "@/components/resume"; +import Transition from "@/components/transition"; const Home: React.FC = () => { return ( -
+
+ {/* Top Navigation Bar Section */} {/* Hero Section */} - + + + {/* About Section */} - + + + {/* Projects Section */} - - {/* Contacts Section */} - {/* */} + + + {/* Resume Section */} - + + +
); }; diff --git a/components/about.tsx b/components/about.tsx index c5ecd59..a1a14a0 100644 --- a/components/about.tsx +++ b/components/about.tsx @@ -3,7 +3,7 @@ import Background from "./background"; const About: React.FC = () => { return ( -
+
{/*
*/}
diff --git a/components/animated_box_hover.tsx b/components/animated_box_hover.tsx new file mode 100644 index 0000000..3c82cf5 --- /dev/null +++ b/components/animated_box_hover.tsx @@ -0,0 +1,38 @@ +"use client"; +import { motion } from "framer-motion"; +import Link from "next/link"; + +interface Props { + children: React.ReactNode; +} + +const HoverBox: React.FC = ({ children }) => { + return ( + + {/* biome-ignore lint/a11y/noSvgWithoutTitle: draws path */} + + + + {children} + + ); +}; + +export default HoverBox; diff --git a/components/hero.tsx b/components/hero.tsx index c54f927..9aac8e7 100644 --- a/components/hero.tsx +++ b/components/hero.tsx @@ -7,7 +7,7 @@ import { motion } from "framer-motion"; const Hero: React.FC = () => { return ( -
+

diff --git a/components/navbar.tsx b/components/navbar.tsx index 3c378fc..5d1eec8 100644 --- a/components/navbar.tsx +++ b/components/navbar.tsx @@ -1,34 +1,49 @@ +"use client"; +import { motion } from "framer-motion"; import Link from "next/link"; +import HoverBox from "./animated_box_hover"; const Navbar: React.FC = () => { return ( - //
-
+
diff --git a/components/project-card.tsx b/components/project-card.tsx index 52f9345..bd79222 100644 --- a/components/project-card.tsx +++ b/components/project-card.tsx @@ -1,4 +1,7 @@ +"use client"; import Link from "next/link"; +import { motion } from "framer-motion"; +import { useState } from "react"; interface Props { link: string; @@ -12,6 +15,13 @@ const ProjectCard: React.FC = ({ image, title, }: Props) => { + const [isHovered, setIsHovered] = useState(false); + + // Small delay to allow hover-out before hiding the large image + const handleMouseLeave = () => { + setTimeout(() => setIsHovered(false), 200); + }; + return ( //
@@ -23,11 +33,16 @@ const ProjectCard: React.FC = ({
- {title} + setIsHovered(true)} + onMouseLeave={handleMouseLeave} + > + {title} +

@@ -35,6 +50,23 @@ const ProjectCard: React.FC = ({

+ {isHovered && ( + + + + )}
); }; diff --git a/components/projects.tsx b/components/projects.tsx index e918a48..fd8b4ae 100644 --- a/components/projects.tsx +++ b/components/projects.tsx @@ -3,7 +3,7 @@ import ProjectCard from "./project-card"; const Projects: React.FC = () => { return ( -
+

{ return ( -

+

Resume diff --git a/components/transition.tsx b/components/transition.tsx new file mode 100644 index 0000000..8b0c086 --- /dev/null +++ b/components/transition.tsx @@ -0,0 +1,24 @@ +"use client"; + +import { motion } from "framer-motion"; + +interface Props { + children: React.ReactNode; +} + +const Transition: React.FC = ({ children }) => { + return ( + + {children} + + ); +}; + +export default Transition;