"use client"; import { useEffect, useState } from "react"; import { Card, CardHeader, CardTitle, CardDescription, CardContent, } from "~/components/ui/card"; import { Badge } from "~/components/ui/badge"; import { Button } from "~/components/ui/button"; import Link from "next/link"; import { ArrowUpRight, Play, BookOpen, FolderGit2, Github } from "lucide-react"; import { projects } from "~/lib/data"; import Image from "next/image"; import { CardSkeleton } from "~/components/ui/skeletons"; export default function ProjectsPage() { const [loading, setLoading] = useState(true); useEffect(() => { setLoading(false); }, []); const featuredProjects = projects.filter((p) => p.featured); const otherProjects = projects.filter((p) => !p.featured); return (

Projects

A collection of my academic research, professional work, and personal projects spanning robotics, web development, and embedded systems.

{/* Featured Projects */}

Featured Work

{loading ? ( <> ) : ( featuredProjects.map((project, index) => (
{/* Project Image */} {project.image && (
{project.imageAlt
)} {/* Project Content */}
{project.title} {project.description}

{project.longDescription}

{project.tags.map((tag) => ( {tag} ))}
{project.link && project.link.startsWith("/") && ( )} {project.websiteLink && ( )} {project.gitLink && ( )} {project.link && !project.link.startsWith("/") && !project.websiteLink && !project.gitLink && ( )}
)) )}
{/* Other Projects */} {otherProjects.length > 0 && (

Additional Projects

{loading ? ( <> ) : ( otherProjects.map((project, index) => (
{project.image && (
{project.imageAlt
)}
{project.title}
{project.description}
{project.tags.map((tag) => ( {tag} ))}
{project.link && project.link.startsWith("/") && ( )} {project.websiteLink && ( )} {project.gitLink && ( )} {project.link && !project.link.startsWith("/") && !project.websiteLink && !project.gitLink && ( )}
)) )}
)}
); }