import type { KnowledgeEntryWithTags } from "@mosaic/shared"; import { EntryStatus } from "@mosaic/shared"; import Link from "next/link"; import { FileText, Eye, Users, Lock } from "lucide-react"; interface EntryCardProps { entry: KnowledgeEntryWithTags; } const statusConfig = { [EntryStatus.DRAFT]: { label: "Draft", className: "bg-gray-100 text-gray-700", icon: "📝", }, [EntryStatus.PUBLISHED]: { label: "Published", className: "bg-green-100 text-green-700", icon: "✅", }, [EntryStatus.ARCHIVED]: { label: "Archived", className: "bg-amber-100 text-amber-700", icon: "📦", }, }; const visibilityIcons = { PRIVATE: , WORKSPACE: , PUBLIC: , }; export function EntryCard({ entry }: EntryCardProps) { const statusInfo = statusConfig[entry.status]; const visibilityIcon = visibilityIcons[entry.visibility]; return (
{/* Title */}

{entry.title}

{/* Summary */} {entry.summary && (

{entry.summary}

)} {/* Tags */} {entry.tags && entry.tags.length > 0 && (
{entry.tags.map((tag) => ( {tag.name} ))}
)} {/* Metadata row */}
{/* Status */} {statusInfo.icon} {statusInfo.label} {/* Visibility */} {visibilityIcon} {entry.visibility.toLowerCase()} {/* Updated date */} Updated {new Date(entry.updatedAt).toLocaleDateString("en-US", { month: "short", day: "numeric", year: "numeric", })}
); }