"use client" import { useState } from "react" import { ChevronDown, ChevronUp, MoreHorizontal, ArrowUpDown, Search, Download, Trash2, Edit, Eye } from "lucide-react" import { Button } from "@/components/ui/button" import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuSeparator, DropdownMenuTrigger, } from "@/components/ui/dropdown-menu" import { Input } from "@/components/ui/input" import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from "@/components/ui/card" import { Badge } from "@/components/ui/badge" interface User { id: string name: string email: string status: "active" | "inactive" | "pending" role: string lastActive: string } const users: User[] = [ { id: "1", name: "Alex Johnson", email: "alex@example.com", status: "active", role: "Admin", lastActive: "Just now", }, { id: "2", name: "Sarah Williams", email: "sarah@example.com", status: "active", role: "Editor", lastActive: "2 hours ago", }, { id: "3", name: "Michael Brown", email: "michael@example.com", status: "inactive", role: "Viewer", lastActive: "3 days ago", }, { id: "4", name: "Emily Davis", email: "emily@example.com", status: "pending", role: "Editor", lastActive: "5 mins ago", }, { id: "5", name: "David Wilson", email: "david@example.com", status: "active", role: "Admin", lastActive: "1 hour ago", }, ] export function DataTableBlock() { const [sortField, setSortField] = useState(null) const [sortDirection, setSortDirection] = useState<"asc" | "desc">("asc") const [searchTerm, setSearchTerm] = useState("") const handleSort = (field: keyof User) => { if (sortField === field) { setSortDirection(sortDirection === "asc" ? "desc" : "asc") } else { setSortField(field) setSortDirection("asc") } } const filteredUsers = users.filter( (user) => user.name.toLowerCase().includes(searchTerm.toLowerCase()) || user.email.toLowerCase().includes(searchTerm.toLowerCase()) || user.role.toLowerCase().includes(searchTerm.toLowerCase()), ) const sortedUsers = [...filteredUsers].sort((a, b) => { if (!sortField) return 0 const aValue = a[sortField] const bValue = b[sortField] if (aValue < bValue) return sortDirection === "asc" ? -1 : 1 if (aValue > bValue) return sortDirection === "asc" ? 1 : -1 return 0 }) return (
Users Manage your team members and their access.
setSearchTerm(e.target.value)} />
{sortedUsers.map((user) => ( ))}
handleSort("name")}> Name {sortField === "name" ? ( sortDirection === "asc" ? ( ) : ( ) ) : ( )}
handleSort("email")}> Email {sortField === "email" ? ( sortDirection === "asc" ? ( ) : ( ) ) : ( )}
handleSort("status")}> Status {sortField === "status" ? ( sortDirection === "asc" ? ( ) : ( ) ) : ( )}
handleSort("role")}> Role {sortField === "role" ? ( sortDirection === "asc" ? ( ) : ( ) ) : ( )}
handleSort("lastActive")}> Last Active {sortField === "lastActive" ? ( sortDirection === "asc" ? ( ) : ( ) ) : ( )}
Actions
{user.name} {user.email} {user.status.charAt(0).toUpperCase() + user.status.slice(1)} {user.role} {user.lastActive} View Edit Delete
Showing 5 of 100 users
) }