"use client"; import { useState } from "react"; import type { Project } from "@/data/content"; import SimpleGallery from "./SimpleGallery"; import Link from "next/link"; import "../styles/project-card.css"; type Props = { project: Project; visible: boolean; selected: boolean; setSelected: (selected: any) => void; }; export default function ProjectCard({ project, visible, selected = false, setSelected }: Props) { const [hovered, setHovered] = useState(false); function projectTagsComponent(project: Project){ return (
{project.tags.map((tag) => ( {tag} ))}
); } function notSelectedComponent(){ return (
setHovered(true)} onMouseLeave={() => setHovered(false)} onClick={() => setSelected(project.id)} className="project-card" style={{ width: "100%", 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)} className="project-card project-card-selected" key={project.id} style={{ minWidth: "10em", maxWidth: "90vw", textDecoration: "none", padding: 28, marginTop: 3, 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 && ( )} {project.link && (
See More Link
)}
); } function imgComponent(){ return ( {`${project.title} ); } if (selected) { return selectedComponent(); } else { return notSelectedComponent(); } }