function AdminScreen() { const [tab, setTab] = useState("users"); const roleColor = (r) => ({ "Admin": "danger", "Editor": "primary", "Analyst": "ok", "Data Engineer": "warn", "Governance Lead": "primary", "Executive Viewer": "primary", "Viewer": "", }[r] || ""); const permMatrix = [ { role: "Admin", dash: "F", data: "F", user: "F", alert: "F", audit: "F" }, { role: "Editor", dash: "F", data: "E", user: "V", alert: "E", audit: "V" }, { role: "Analyst", dash: "E", data: "E", user: "-", alert: "V", audit: "-" }, { role: "Data Engineer", dash: "V", data: "F", user: "-", alert: "V", audit: "V" }, { role: "Governance Lead", dash: "V", data: "E", user: "V", alert: "V", audit: "F" }, { role: "Executive Viewer", dash: "V", data: "V", user: "-", alert: "V", audit: "-" }, { role: "Viewer", dash: "V", data: "-", user: "-", alert: "-", audit: "-" }, ]; const pKey = (v) => ({ F: "Full", E: "Edit", V: "View", "-": "—" }[v] || v); const pColor = (v) => ({ F: "var(--ok)", E: "var(--primary)", V: "var(--ink-2)", "-": "var(--ink-4)" }[v]); const pBg = (v) => ({ F: "var(--ok-tint)", E: "var(--primary-tint)", V: "var(--panel-2)", "-": "transparent" }[v]); return (
| User | Role | Department | MFA | Last active | |
|---|---|---|---|---|---|
|
{u.name.split(' ').map(n => n[0]).slice(0, 2).join('')}
{u.name}
{u.email}
|
{u.role} | {u.dept} |
{u.mfa ? |
{u.last} |
|
| Role | Dashboards | Data Sources | User Mgmt | Alerts | Audit Log | Users |
|---|---|---|---|---|---|---|
| {p.role} | {["dash","data","user","alert","audit"].map(k => ({pKey(p[k])} | ))}{[4, 22, 68, 12, 3, 6, 133][i]} |