diff --git a/astro-app/src/components/ProjectCard.tsx b/astro-app/src/components/ProjectCard.tsx index 287b103..905773d 100644 --- a/astro-app/src/components/ProjectCard.tsx +++ b/astro-app/src/components/ProjectCard.tsx @@ -1,16 +1,36 @@ -import { ExternalLink, Heart, MessageCircle, Repeat2, Eye } from 'lucide-react'; +import { ExternalLink, Heart, MessageCircle, Repeat2, Eye, Twitter, Check, X } from 'lucide-react'; import { formatDistanceToNow } from 'date-fns'; +import { useState, useEffect } from 'react'; import type { TwitterProject } from '@/lib/csv-loader'; +import { markProjectAsSeen, markProjectAsUnseen, isProjectSeen } from '@/lib/seen-projects'; +import { Button } from './ui/button'; interface ProjectCardProps { project: TwitterProject; + onSeenStatusChange?: () => void; } -export function ProjectCard({ project }: ProjectCardProps) { +export function ProjectCard({ project, onSeenStatusChange }: ProjectCardProps) { const formattedDate = formatDistanceToNow(new Date(project.created_at), { addSuffix: true }); + const [seen, setSeen] = useState(false); + + useEffect(() => { + setSeen(isProjectSeen(project.id)); + }, [project.id]); + + const toggleSeen = () => { + if (seen) { + markProjectAsUnseen(project.id); + setSeen(false); + } else { + markProjectAsSeen(project.id); + setSeen(true); + } + onSeenStatusChange?.(); + }; return ( -
{project.project_description}