"use client"; import { Table, TableBody, TableCell, TableHeader, TableRow, } from "../ui/table"; import Badge from "../ui/badge/Badge"; import Image from "next/image"; import { fullDataUser } from "@/interface/admin"; type SortColumn = "created_at" | "updated_at" | "display_name" | "email"; interface Role { id: string; name: string; } interface BasicTableOneProps { data: fullDataUser[]; onSort: (column: SortColumn) => void; onViewDetail: (user: fullDataUser) => void; sortBy?: SortColumn; sortOrder?: "asc" | "desc"; onFilterRole?: (role: string) => void; selectedRole?: string; roles?: Role[]; } export default function BasicTableOne({ data, onSort, onViewDetail, sortBy, sortOrder, onFilterRole, selectedRole, roles = [], }: BasicTableOneProps) { const formatDate = (dateString: string) => { if (!dateString) return "-"; const date = new Date(dateString); return date.toLocaleDateString("en-GB", { day: "2-digit", month: "short", year: "numeric", }); }; const SortIcon = ({ column }: { column: SortColumn }) => { const isActive = sortBy === column; return (
); }; return (
onSort("display_name")} > Người dùng
onSort("email")} > Email
Trạng thái
onSort("created_at")} > Ngày tham gia
onSort("updated_at")} > Cập nhật
Thao tác
{data.length > 0 ? ( data.map((user) => (
{user.profile?.avatar_url ? ( ) : ( {user.profile?.display_name?.charAt(0) || "U"} )}
{user.profile?.display_name || "N/A"} ID: {user.id.slice(0, 8)}...
{user.email}
{user.roles?.map((role) => ( {role.name} )) || ( No Role )}
{user.is_deleted ? "Bị khóa" : "Hoạt động"} {formatDate(user.created_at)} {formatDate(user.updated_at)}
)) ) : (

Không tìm thấy dữ liệu người dùng

)}
); }