import { json } from "@remix-run/node"; import { useLoaderData } from "@remix-run/react"; import { Users, UserCheck, UserX, MoreHorizontal, Eye, Edit, Trash2 } from "lucide-react"; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "~/components/ui/card"; import { Button } from "~/components/ui/button"; import { Badge } from "~/components/ui/badge"; import { Avatar, AvatarFallback, AvatarImage } from "~/components/ui/avatar"; import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow, } from "~/components/ui/table"; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, } from "~/components/ui/dropdown-menu"; export const loader = async () => { const userData = { summary: { totalUsers: 1234, activeUsers: 1100, pendingVerification: 15, collectors: 45 }, users: [ { id: 1, name: "Ahmad Rizki", email: "ahmad.rizki@example.com", role: "Masyarakat", status: "active", joinDate: "2024-01-15", totalTransactions: 25, avatar: "" }, { id: 2, name: "Siti Nurhaliza", email: "siti.nurhaliza@example.com", role: "Pengepul", status: "pending", joinDate: "2024-06-20", totalTransactions: 0, avatar: "" }, { id: 3, name: "Budi Santoso", email: "budi.santoso@example.com", role: "Masyarakat", status: "active", joinDate: "2024-03-10", totalTransactions: 42, avatar: "" } ] }; return json({ userData }); }; export default function UserManagement() { const { userData } = useLoaderData(); return (
{/* Header */}

Manajemen Pengguna

Kelola semua pengguna platform RIjig

{/* Summary Cards */}
Total Pengguna
{userData.summary.totalUsers.toLocaleString()}

terdaftar di platform

Pengguna Aktif
{userData.summary.activeUsers.toLocaleString()}

pengguna terverifikasi

Menunggu Verifikasi
{userData.summary.pendingVerification}

perlu ditinjau

Total Pengepul
{userData.summary.collectors}

pengepul aktif

{/* Users Table */} Daftar Pengguna Semua pengguna yang terdaftar di platform Pengguna Email Role Status Tanggal Bergabung Total Transaksi Aksi {userData.users.map((user) => (
{user.name.split(' ').map(n => n[0]).join('')}
{user.name}
{user.email} {user.role} {user.status === "active" ? "Aktif" : "Pending"} {new Date(user.joinDate).toLocaleDateString('id-ID')} {user.totalTransactions} Lihat Detail Edit Hapus
))}
); }