import React, { useState } from "react"; import { motion, AnimatePresence } from "motion/react"; import { LineChart, HardDrive, Terminal, Brain, Copy, Check, FileCode, Server, Cpu, GitBranch } from "lucide-react"; import { ScramblerText } from "./DynamicTextEffects"; import { PROJECTS } from "../data"; import type { ProjectItem } from "../types"; const ProjectIconMap: Record> = { brain: Brain, "line-chart": LineChart, "hard-drive": HardDrive, terminal: Terminal, "file-code": FileCode, server: Server, cpu: Cpu, "git-branch": GitBranch, }; function resolveIcon(iconName?: string): React.ComponentType<{ className?: string }> { if (iconName && iconName in ProjectIconMap) { return ProjectIconMap[iconName]; } return FileCode; } function HeroCard({ project }: { project: ProjectItem }) { return (
{project.image && ( <>
)}
{project.category && ( {project.category} )}

{project.title}

); } function IconCard({ project }: { project: ProjectItem }) { const Icon = resolveIcon(project.icon); return (

{project.title}

{project.tags && project.tags.length > 0 && (
{project.tags.map((tag) => ( {tag} ))}
)}
); } function TerminalCard({ project }: { project: ProjectItem }) { const [copied, setCopied] = useState(false); const copyCommand = () => { if (project.terminalCommand) { navigator.clipboard.writeText(project.terminalCommand); setCopied(true); setTimeout(() => setCopied(false), 2000); } }; return (
{project.category && ( )}

{project.title}

{project.terminalCommand}
{copied ? ( ) : ( )}
{project.image && (
{`${project.title}
)}
); } export default function SelectedWorks() { return (

Selected Works

{PROJECTS.map((project, index) => ( {project.terminalCommand ? ( ) : project.image ? ( ) : ( )} ))}
); }