"use client"; import { useState, useEffect, use } from "react"; import { motion } from "framer-motion"; import jsonData from "@/json/data.json"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { faGithub } from "@fortawesome/free-brands-svg-icons"; import { faArrowUpRightFromSquare } from "@fortawesome/free-solid-svg-icons"; import NotFound from "@/app/not-found"; import Image from "next/image"; import FixedButon from "@/components/FixedButton"; import { faChevronLeft } from "@fortawesome/free-solid-svg-icons"; import { faChevronDown } from "@fortawesome/free-solid-svg-icons"; import { faChevronUp } from "@fortawesome/free-solid-svg-icons"; function ScrollDownButton() { const [isAtBottom, setIsAtBottom] = useState(false); const handleScroll = () => { const scrollTop = document.documentElement.scrollTop || document.body.scrollTop; if (scrollTop < document.documentElement.scrollHeight - document.documentElement.clientHeight) { window.scrollTo({ top: document.documentElement.scrollHeight, behavior: "smooth", }); setIsAtBottom(true); } else { window.scrollTo({ top: 0, behavior: "smooth", }); setIsAtBottom(false); } }; return (
); } function Page(props) { const params = use(props.params); const [data, setData] = useState(null); useEffect(() => { const selectedData = jsonData.Projects.find( (item) => item.slug === params.slug ); if (selectedData === undefined) { setData("404"); } else { setData(selectedData); } }, [params.slug]); if (data === "404") { return ( <> ); } else if (!data) { return (
{/* images */}
); } return (

Project

{data.title}

Technology

{data.tech.join(", ")}

Year

{data.year}

{data.preview && ( )} {data.code && (

Source Code

Github{" "}

)}

Description

{data.desc.map((desc, index) => (

{desc}

))}
{/* images */}
{data.images.map((image, index) => ( {`Project ))}
); } export default Page;