import { Card, CardContent } from "@/components/ui/card"; import { Badge } from "@/components/ui/badge"; import type { Article, MediaOutlet } from "@shared/schema"; interface ArticleCardProps { article: Article; outlet: MediaOutlet; viewMode?: "grid" | "list"; } export default function ArticleCard({ article, outlet, viewMode = "grid" }: ArticleCardProps) { const handleClick = () => { window.location.href = `/articles/${article.slug}`; }; const formatDate = (date: string | Date) => { const d = new Date(date); const now = new Date(); const diffTime = Math.abs(now.getTime() - d.getTime()); const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24)); if (diffDays === 1) return "1 day ago"; if (diffDays < 7) return `${diffDays} days ago`; return d.toLocaleDateString(); }; if (viewMode === "list") { return (
{article.imageUrl && ( {article.title} )}
{article.isPinned && ( Pinned )} {article.isFeatured && ( Featured )}

{article.title}

{article.excerpt}

{formatDate(article.publishedAt!)} {article.tags?.map((tag) => ( {tag} ))}
); } return ( {article.imageUrl && ( {article.title} )}
{article.isPinned && ( Pinned )} {article.isFeatured && ( Featured )}

{article.title}

{article.excerpt}

{formatDate(article.publishedAt!)}
{article.tags?.slice(0, 2).map((tag) => ( {tag} ))}
); }