"use client"; import { useState, useMemo } from "react"; import { Eye } from "lucide-react"; import { Tabs, TabsList, TabsTrigger } from "@/components/ui/tabs"; import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow, } from "@/components/ui/table"; import { cn } from "@/lib/utils"; import Link from "next/link"; export default function ApproverTable() { const [activeCategory, setActiveCategory] = useState("Semua"); const categories = [ "Semua", "Online Media", "Social Media", "Videotron", "Radio Polri", "TV Polri", "Majalah Digital", ]; const data = [ { id: 1, no: 1, media: "Media Online", title: "Lorem ipsum dolor sit amet consectetur. Tempor mi scelerisque enim semper sed nibh. Eget sit molestie.", status: "Tertunda", }, { id: 2, no: 2, media: "Media Sosial", title: "Lorem ipsum dolor sit amet consectetur. Ultricies pellentesque ullamcorper mattis pellentesque. Amet eu ut.", status: "Tertunda", }, { id: 3, no: 3, media: "Videotron", title: "Lorem ipsum dolor sit amet consectetur. Nisl orci magna ridiculus egestas. Eu sit ut vitae interdum. Aenean.", status: "Tertunda", }, { id: 4, no: 4, media: "Radio Polri", title: "Lorem ipsum dolor sit amet consectetur. Tincidunt sem tellus interdum pharetra pharetra arcu. Sapien varius.", status: "Tertunda", }, { id: 5, no: 5, media: "TV Polri", title: "Lorem ipsum dolor sit amet consectetur. Ac purus diam eget nulla turpis elementum. Est vestibulum nibh.", status: "Selesai", }, { id: 6, no: 6, media: "Majalah Digital", title: "Lorem ipsum dolor sit amet consectetur. Eget odio magna id velit lacus tellus. Fermentum molestie viverra.", status: "Selesai", }, ]; // ✅ Filter data berdasarkan kategori aktif const filteredData = useMemo(() => { if (activeCategory === "Semua") return data; return data.filter( (item) => item.media.toLowerCase() === activeCategory.toLowerCase() ); }, [activeCategory]); return (
{/* ✅ Tabs Navigation */} {categories.map((cat) => ( {cat} ))} {/* ✅ Table from shadcn/ui */}
No Media Judul Campaign Status Tindakan {filteredData.length > 0 ? ( filteredData.map((item, index) => ( {/* ✅ Nomor selalu mulai dari 1 sesuai hasil filter */} {index + 1} {item.media} {item.title} {item.status} )) ) : ( Tidak ada data untuk kategori ini )}
{/* ✅ Pagination */}
Rows per page: {filteredData.length}
{filteredData.length > 0 ? `1–${filteredData.length} of ${filteredData.length}` : "0 of 0"}
); }