"use client"; import { useEffect, useState } from "react"; import type { Project } from "@/data/content"; import SimpleGallery from "./SimpleGallery"; type Props = { project: Project; visible: boolean; selected: boolean; setSelected: (selected: any) => void; setExpandedHeight: (activeId: number) => void; }; export default function ProjectCard({ project, visible, selected = false, setSelected, setExpandedHeight}: Props) { const [hovered, setHovered] = useState(false); const [expandedImage, setExpandedImage] = useState(false); function projectTagsComponent(project: Project){ return (
{project.tags.map((tag) => ( {tag} ))}
); } function notSelectedComponent(){ return (
setHovered(true)} onMouseLeave={() => setHovered(false)} onClick={() => setSelected(project.id)} style={{ height: "100%", minWidth: "10em", textDecoration: "none", padding: 28, overflow: "hidden", background: hovered ? "var(--surface-hover)" : "var(--surface)", border: `1px solid ${hovered ? "var(--accent)" : "var(--border)"}`, borderRadius: 8, transition: "all 0.35s cubic-bezier(0.16, 1, 0.3, 1)", transform: visible ? hovered ? "translateY(-3px)" : "translateY(0)" : "translateY(12px)", opacity: visible ? 1 : 0, boxShadow: hovered ? "0 8px 32px rgba(0,0,0,0.12)" : "none", pointerEvents: "auto", cursor: "pointer" }}>
{project.title}
{project.year}
{projectTagsComponent(project)}

{project.description}

{project.images && project.images.length > 0 && imgComponent()}
); } function selectedComponent(){ return (
setHovered(true)} onMouseLeave={() => setHovered(false)} onClick={() => setSelected(project.id)} style={{ height: "100%", minWidth: "10em", overflow: "hidden", textDecoration: "none", padding: 28, background: hovered ? "var(--surface-hover)" : "var(--surface)", border: `2px solid var(--accent)`, borderRadius: 8, transition: "all 0.35s cubic-bezier(0.16, 1, 0.3, 1)", transform: visible ? "translateY(-3px)" : "translateY(0)", opacity: visible ? 1 : 0, boxShadow: hovered ? "0 8px 32px rgba(0,0,0,0.12)" : "none", pointerEvents: "auto", cursor: "pointer" }}>
{project.title}
{project.year}
{projectTagsComponent(project)}

{project.description}

{project.images && project.images.length > 0 && ( { setExpandedHeight(height); setExpandedImage(height > 0); }} /> )}
); } function imgComponent(){ return ( {`${project.title} ); } useEffect(() => { if (!selected) { if (expandedImage) { setExpandedHeight(0); setExpandedImage(false); } } }); if (selected) { return selectedComponent(); } else { return notSelectedComponent(); } }