import React from 'react'; import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; import { Badge } from '@/components/ui/badge'; import { Button } from '@/components/ui/button'; import { formatDistanceToNow } from 'date-fns'; import { FileText, Calendar, User, Eye, ArrowRight, MoreHorizontal } from 'lucide-react'; import { useSortable } from '@dnd-kit/sortable'; import { CSS } from '@dnd-kit/utilities'; import { cn } from '@/lib/utils'; export interface Article { id: string; title: string; slug: string; status: string; priority: 'high' | 'medium' | 'low'; due_date?: string; assignee?: string; date_created: string; } interface ArticleCardProps { article: Article; onPreview: (id: string) => void; } export const ArticleCard = ({ article, onPreview }: ArticleCardProps) => { const { attributes, listeners, setNodeRef, transform, transition, isDragging } = useSortable({ id: article.id, data: { status: article.status } }); const style = { transform: CSS.Transform.toString(transform), transition, }; const getPriorityColor = (p: string) => { switch (p) { case 'high': return 'bg-red-500/10 text-red-500 border-red-500/20'; case 'medium': return 'bg-yellow-500/10 text-yellow-500 border-yellow-500/20'; case 'low': return 'bg-blue-500/10 text-blue-500 border-blue-500/20'; default: return 'bg-zinc-500/10 text-zinc-500 border-zinc-500/20'; } }; return (
{/* Priority & Date */}
{article.priority || 'medium'} {article.due_date && (
{new Date(article.due_date).toLocaleDateString(undefined, { month: 'short', day: 'numeric' })}
)}
{/* Title */}

{article.title}

{/* Footer Infos */}
{article.assignee && (
)} {formatDistanceToNow(new Date(article.date_created), { addSuffix: true })}
); };