"use client"; import { TableCell, TableRow, Table, TableHeader, TableColumn, TableBody, Pagination, Dropdown, DropdownTrigger, DropdownMenu, DropdownItem, Input, User, Card, Divider, Chip, ChipProps, } from "@nextui-org/react"; import { Button } from "@nextui-org/button"; import React, { Key, useCallback, useMemo, useState } from "react"; import { AddIcon, CreateIconIon, DeleteIcon, DotsYIcon, EyeFilledIcon, EyeIconMdi, } from "@/components/icons"; import Link from "next/link"; type UserObject = { id: number; name: string; status: string; description: string; moduleName: string; pathUrl: string; }; const statusColorMap = { active: "success", paused: "danger", vacation: "warning", }; export default function MenuDataTable() { type TableRow = (typeof menuDataTable)[0]; const columns = [ { name: "No", uid: "no" }, { name: "Name", uid: "name" }, { name: "Description", uid: "description" }, { name: "Module Name", uid: "moduleName" }, { name: "Path URL", uid: "pathUrl" }, { name: "Status", uid: "status" }, { name: "Action", uid: "actions" }, ]; const menuDataTable = [ { id: 1, name: "AI Journalist ", status: "active", description: "AI Journalist", moduleName: "Multipool Acts", pathUrl: "/admin/acts", }, { id: 2, name: "AI Journalist ", status: "active", description: "AI Journalist", moduleName: "Multipool Acts", pathUrl: "/admin/acts", }, { id: 3, name: "AI Journalist ", status: "active", description: "AI Journalist", moduleName: "Multipool Acts", pathUrl: "/admin/acts", }, { id: 4, name: "AI Journalist ", status: "active", description: "AI Journalist", moduleName: "Multipool Acts", pathUrl: "/admin/acts", }, { id: 5, name: "AI Journalist ", status: "active", description: "AI Journalist", moduleName: "Multipool Acts", pathUrl: "/admin/acts", }, ]; const renderCell = useCallback((menuData: TableRow, columnKey: Key) => { const cellValue = menuData[columnKey as keyof UserObject]; const statusColorMap: Record = { active: "success", cancel: "danger", pending: "warning", }; switch (columnKey) { case "no": return (
{menuData.id}
) case "name": return (
{menuData.name}
) case "description": return (
{menuData.description}
) case "status": return (
{cellValue}
); case "actions": return (
Detail Edit Delete
); default: return cellValue; } }, []); return ( <>
{(column) => ( {column.name} )} {(item) => ( {(columnKey) => ( {renderCell(item, columnKey)} )} )}
); }