// File: app/(dashboard)/admin/users/page.tsx "use client"; import { useState } from "react"; import { Plus, Search, MoreHorizontal, Shield, Building2, Mail } from "lucide-react"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Badge } from "@/components/ui/badge"; import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow, } from "@/components/ui/table"; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger, } from "@/components/ui/dropdown-menu"; import { Card, CardContent, CardHeader, CardTitle, } from "@/components/ui/card"; import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar"; // Type สำหรับข้อมูล User (Mockup) type User = { id: string; username: string; firstName: string; lastName: string; email: string; role: string; organization: string; status: "Active" | "Inactive" | "Locked"; lastLogin: string; }; // Mock Data (อ้างอิงจาก Data Dictionary: users table) const mockUsers: User[] = [ { id: "1", username: "superadmin", firstName: "Super", lastName: "Admin", email: "superadmin@example.com", role: "Superadmin", organization: "System", status: "Active", lastLogin: "2025-11-26 10:00", }, { id: "2", username: "admin_pat", firstName: "Admin", lastName: "PAT", email: "admin@pat.or.th", role: "Org Admin", organization: "กทท.", status: "Active", lastLogin: "2025-11-26 09:30", }, { id: "3", username: "dc_team", firstName: "DC", lastName: "Team", email: "dc@team.co.th", role: "Document Control", organization: "TEAM", status: "Active", lastLogin: "2025-11-25 16:45", }, { id: "4", username: "viewer_en", firstName: "Viewer", lastName: "EN", email: "view@en-consult.com", role: "Viewer", organization: "EN", status: "Inactive", lastLogin: "2025-11-20 11:00", }, ]; export default function UsersPage() { const [searchTerm, setSearchTerm] = useState(""); // Filter logic (Client-side mockup) const filteredUsers = mockUsers.filter((user) => user.username.toLowerCase().includes(searchTerm.toLowerCase()) || user.email.toLowerCase().includes(searchTerm.toLowerCase()) || user.firstName.toLowerCase().includes(searchTerm.toLowerCase()) ); const getStatusBadgeVariant = (status: string) => { switch (status) { case "Active": return "success"; case "Inactive": return "secondary"; case "Locked": return "destructive"; default: return "default"; } }; const getInitials = (firstName: string, lastName: string) => { return `${firstName[0]}${lastName[0]}`.toUpperCase(); }; return (
{/* Header */}

Users Management

จัดการผู้ใช้งาน กำหนดสิทธิ์ และดูสถานะการเข้าใช้งาน

{/* Filters */}
setSearchTerm(e.target.value)} />
{/* Add more filters (Role, Org) here if needed */}
{/* Desktop View: Table */}
User Role Organization Status Last Login Actions {filteredUsers.map((user) => (
{getInitials(user.firstName, user.lastName)}
{user.username} {user.email}
{user.role}
{user.organization}
{user.status} {user.lastLogin} Actions alert(`Edit user ${user.id}`)}> Edit Details alert(`Reset password for ${user.id}`)}> Reset Password alert(`Delete user ${user.id}`)}> Deactivate User
))}
{/* Mobile View: Cards */}
{filteredUsers.map((user) => ( {user.username} {user.status}
{user.email}
{user.role}
{user.organization}
Last login: {user.lastLogin}
))}
); }