"use client"; import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow, } from "../../components/ui/table"; import { Badge } from "../../components/ui/badge"; import { EllipsisVertical, Inbox, Loader2, Pencil, Trash } from "lucide-react"; import getSentimentBadge from "./SentimentBadge"; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, } from "../ui/dropdown-menu"; import { useReviewTable } from "@/src/hooks/useReviewTable"; import { Pagination, PaginationContent, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, } from "../ui/pagination"; import { useSearchParams } from "next/navigation"; export function ReviewTable() { const searchParams = useSearchParams(); const selectedBrand = searchParams.get("brand"); const { currentData, isLoading, pagination } = useReviewTable( 10, selectedBrand, ); const { currentPage, totalPages, nextPage, prevPage, goToPage } = pagination; if (isLoading) { return (

Memuat data ulasan...

); } return (
Produk Ulasan & Kata Kunci Tanggal Sentimen Confidence Score {currentData.length === 0 ? (

Belum ada data

Belum ada ulasan yang dianalisis oleh sistem.

) : ( currentData.map((review, index) => (
{review.product?.brand || "Generic"}
{review.product?.name || "Unknown Product"}

{review.content}

{review.keywords && review.keywords.length > 0 && (
{review.keywords.slice(0, 5).map((k, i) => ( {k} ))}
)}
{review.createdAt ? new Date(review.createdAt).toLocaleDateString("id-ID", { day: "numeric", month: "short", year: "numeric", }) : "-"} {getSentimentBadge(review.sentiment ?? null)} {review.confidenceScore ? `${(review.confidenceScore * 100).toFixed(1)}%` : "-"} {/* Edit Delete */}
)) )}
{totalPages > 1 && (
{ e.preventDefault(); prevPage(); }} className={ currentPage === 1 ? "pointer-events-none opacity-50" : "cursor-pointer" } /> {[...Array(totalPages)].map((_, i) => ( { e.preventDefault(); goToPage(i + 1); }} isActive={currentPage === i + 1} > {i + 1} ))} { e.preventDefault(); nextPage(); }} className={ currentPage === totalPages ? "pointer-events-none opacity-50" : "cursor-pointer" } />
)}
); }