"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 (
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 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.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 && (
)}
))
)}
)}
);
}