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.isPinned && ( Pinned )} {article.isFeatured && ( Featured )} {article.title} {article.excerpt} {formatDate(article.publishedAt!)} {article.tags?.map((tag) => ( {tag} ))} ); } return ( {article.imageUrl && ( )} {article.isPinned && ( Pinned )} {article.isFeatured && ( Featured )} {article.title} {article.excerpt} {formatDate(article.publishedAt!)} {article.tags?.slice(0, 2).map((tag) => ( {tag} ))} ); }
{article.excerpt}