"use client"; import { useEffect, useState } from "react"; import { Card, CardContent } from "@/components/ui/card"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Badge } from "@/components/ui/badge"; import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow, } from "@/components/ui/table"; import { Search, Filter, Eye, Pencil, Trash2, Plus } from "lucide-react"; import Link from "next/link"; import { getArticlePagination } from "@/service/article"; import { formatDate } from "@/utils/global"; import { close, loading } from "@/config/swal"; export default function NewsImage() { const [articles, setArticles] = useState([]); const [page, setPage] = useState(1); const [totalPage, setTotalPage] = useState(1); const [search, setSearch] = useState(""); useEffect(() => { fetchData(); }, [page, search]); async function fetchData() { loading(); const req = { limit: "10", page: page, search: search, source: "internal", // jika ingin filter image/internal sort: "desc", sortBy: "created_at", }; const res = await getArticlePagination(req); const data = res?.data?.data || []; setArticles(data); setTotalPage(res?.data?.meta?.totalPage || 1); close(); } const statusVariant = (status: string) => { switch (status?.toLowerCase()) { case "publish": return "bg-green-100 text-green-700"; case "pending": return "bg-yellow-100 text-yellow-700"; case "draft": return "bg-gray-200 text-gray-600"; case "reject": return "bg-red-100 text-red-600"; default: return "bg-gray-200 text-gray-600"; } }; return (
{/* ================= HEADER ================= */}

News & Articles

Create and manage news articles and blog posts

{/* ================= SEARCH ================= */}
setSearch(e.target.value)} />
{/* ================= TABLE ================= */} Article Category Author Status Date Actions {articles.length > 0 ? ( articles.map((article, index) => ( {article.title} {article?.categories ?.map((c: any) => c.title) .join(", ")} {article.customCreatorName || article.createdByName} {article.publishStatus} {formatDate(article.createdAt)} )) ) : ( No data available )}
{/* ================= PAGINATION ================= */}

Page {page} of {totalPage}

); }