/* ============================================ USER MANAGEMENT — Roles & directory sync ============================================ */ const USERS = [ { name: "Rio Pratama", email: "rio.pratama@bjp-industries.id", dept: "Maintenance · Line 3", role: "Operator", status: "active", lastSeen: "now", sso: true }, { name: "Anwar Santoso", email: "anwar.santoso@bjp-industries.id", dept: "Plant Operations", role: "Operator", status: "active", lastSeen: "12 min ago", sso: true }, { name: "Maya Indrawan", email: "maya.indrawan@bjp-industries.id", dept: "Process Engineering", role: "User", status: "active", lastSeen: "1 h ago", sso: true }, { name: "Surya Permana", email: "surya.permana@bjp-industries.id", dept: "Reliability", role: "Operator", status: "active", lastSeen: "today", sso: true }, { name: "Hadi Wijaya", email: "hadi.wijaya@bjp-industries.id", dept: "Quality Assurance", role: "User", status: "active", lastSeen: "today", sso: true }, { name: "Dewi Lestari", email: "dewi.lestari@bjp-industries.id", dept: "Plant IT", role: "Admin", status: "active", lastSeen: "now", sso: true }, { name: "Bayu Nugroho", email: "bayu.nugroho@bjp-industries.id", dept: "EHS / Safety", role: "Admin", status: "active", lastSeen: "2 d ago", sso: true }, { name: "Tirta Anggoro", email: "tirta.anggoro@bjp-industries.id", dept: "Maintenance · Line 1", role: "User", status: "pending", lastSeen: "—", sso: false }, { name: "Putri Sari", email: "putri.sari@bjp-industries.id", dept: "Process Engineering", role: "User", status: "active", lastSeen: "3 d ago", sso: true }, { name: "Eko Saputra", email: "eko.saputra@bjp-contractor.id", dept: "External · Vendor", role: "User", status: "suspended",lastSeen: "21 d ago", sso: false }, ]; function UsersScreen() { const [users, setUsers] = useState(USERS); const updateRole = (email, role) => { setUsers(prev => prev.map(u => u.email === email ? { ...u, role } : u)); }; return ( <>

User Management

{users.filter(u => u.status === "active").length} active · {users.filter(u => u.status === "pending").length} pending · {users.filter(u => u.status === "suspended").length} suspended · last directory sync 14:00 today

{/* Roles legend */}
u.role === "User").length} icon={} /> u.role === "Operator").length} icon={} /> u.role === "Admin").length} icon={} />
{users.map(u => ( ))}
User Department Status SSO Role Last Seen
{u.name.split(" ").map(n => n[0]).join("").slice(0, 2)}
{u.name}
{u.email}
{u.dept} {u.status === "active" && Active} {u.status === "pending" && Pending} {u.status === "suspended" && Suspended} {u.sso ? SSO : Password} {u.lastSeen}
); } function RoleCard({ role, desc, count, icon }) { return (
{icon}
{role}
{count} member{count !== 1 ? "s" : ""}
{role.toUpperCase()}
{desc}
); } window.UsersScreen = UsersScreen;