import { LoaderFunctionArgs, json } from "@remix-run/node"; import { useLoaderData, Link } from "@remix-run/react"; import { Button } from "~/components/ui/button"; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "~/components/ui/card"; import { Badge } from "~/components/ui/badge"; import { Input } from "~/components/ui/input"; import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "~/components/ui/table"; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger } from "~/components/ui/dropdown-menu"; import { Plus, Search, MoreHorizontal, Edit, Trash2, Eye, FileText } from "lucide-react"; // Mock data - ganti dengan data dari database const mockArtikel = [ { id: "1", title: "Cara Memilah Sampah yang Benar", category: "Edukasi", status: "published", author: "Admin", createdAt: "2024-01-15", views: 245 }, { id: "2", title: "Manfaat Daur Ulang untuk Lingkungan", category: "Tips", status: "draft", author: "Admin", createdAt: "2024-01-14", views: 0 } ]; export async function loader({ request }: LoaderFunctionArgs) { // Di sini Anda akan fetch data dari database return json({ artikel: mockArtikel }); } export default function ArtikelBlogIndex() { const { artikel } = useLoaderData(); return (
{/* Header Actions */}
} />
{/* Stats Cards */}
Total Artikel
{artikel.length}
Published
{artikel.filter((a) => a.status === "published").length}
Draft
{artikel.filter((a) => a.status === "draft").length}
Total Views
{artikel.reduce((sum, a) => sum + a.views, 0)}
{/* Artikel Table */} Daftar Artikel & Blog Kelola semua artikel dan blog post Anda Judul Kategori Status Author Tanggal Views Actions {artikel.map((item) => ( {item.title} {item.category} {item.status} {item.author} {item.createdAt} {item.views} Edit Preview Delete ))}
); }