/* ============================================================
   AfricaMart Admin — Activity log, Admins & roles, Settings
   ============================================================ */

/* ---------- Activity / audit log ---------- */
function ActivityModule({ search }) {
  const { Card, Badge, SectionHeader, TabBar, Btn } = window.ModernTilesDesignSystem_50dd07;
  const [filter, setFilter] = aUseState("All");
  const TYPES = { All: null, Control: "control", Moderation: "moderation", Payments: "payment", Disputes: "dispute", Alerts: "alert" };
  let rows = window.ADM.ACTIVITY.filter(a => !search || (a.action + a.actor).toLowerCase().includes(search.toLowerCase()));
  if (TYPES[filter]) rows = rows.filter(a => a.type === TYPES[filter]);

  return React.createElement("div", null,
    React.createElement(SectionHeader, { title: "Activity log", subtitle: "Full audit trail of platform and admin actions" },
      React.createElement(Btn, { variant: "muted", size: "md", onClick: () => {} }, React.createElement(AdmIcon, { name: "download", size: 14 }), "Export log")),
    React.createElement(TabBar, { tabs: Object.keys(TYPES), active: filter, onChange: setFilter }),
    React.createElement(Card, null,
      React.createElement("div", { style: { padding: "6px 20px 14px" } },
        rows.map(a => React.createElement(ActivityRow, { key: a.id, a })),
        rows.length === 0 && React.createElement("div", { style: { textAlign: "center", padding: "30px 0", color: "#A09288", fontSize: 13 } }, "No matching events."))));
}

/* ---------- Admins & roles ---------- */
function TeamModule({ toast, confirm }) {
  const { Card, CardHeader, DataTable, Badge, Btn, SectionHeader } = window.ModernTilesDesignSystem_50dd07;
  const ADM = window.ADM;

  const cols = [
    { key: "name", label: "Admin", render: (_, r) => React.createElement("div", { style: { display: "flex", alignItems: "center", gap: 10 } },
      React.createElement(Avatar, { name: r.name, size: 32, color: "#2A4E62" }),
      React.createElement("div", null,
        React.createElement("div", { style: { fontSize: 13, fontWeight: 600, color: "#1A1614" } }, r.name),
        React.createElement("div", { style: { fontSize: 11.5, color: "#857870", fontFamily: "'JetBrains Mono',monospace" } }, r.email))) },
    { key: "role", label: "Role", render: v => React.createElement(Badge, { status: v === "Super admin" ? "info" : "neutral", label: v }) },
    { key: "twofa", label: "2FA", render: v => v ? React.createElement("span", { style: { display: "inline-flex", alignItems: "center", gap: 4, fontSize: 11.5, color: "#1A6B45", fontWeight: 600 } }, React.createElement(AdmIcon, { name: "shield-check", size: 13 }), "On") : React.createElement("span", { style: { display: "inline-flex", alignItems: "center", gap: 4, fontSize: 11.5, color: "#A05C08", fontWeight: 600 } }, React.createElement(AdmIcon, { name: "alert-triangle", size: 13 }), "Off") },
    { key: "lastSeen", label: "Last seen", muted: true, nowrap: true, render: v => v === "Online" ? React.createElement("span", { style: { display: "inline-flex", alignItems: "center", gap: 5, color: "#1A6B45", fontWeight: 600, fontSize: 12 } }, React.createElement("span", { style: { width: 6, height: 6, borderRadius: "50%", background: "#2E9B64" } }), "Online") : v },
    { key: "status", label: "Status", render: v => React.createElement(Badge, { status: v === "active" ? "success" : "info", label: v }) },
    { key: "_a", label: "", align: "right", render: (_, r) => React.createElement("div", { style: { display: "flex", gap: 6, justifyContent: "flex-end" } },
      React.createElement(Btn, { variant: "muted", size: "sm", onClick: () => toast("Editing " + r.name) }, "Edit"),
      r.role !== "Super admin" && React.createElement(Btn, { variant: "ghost", size: "sm", onClick: () => confirm({ danger: true, title: "Remove " + r.name + "?", body: "This revokes all admin access immediately.", confirmLabel: "Remove", icon: "user-x", onConfirm: () => toast(r.name + " removed", true) }) }, "Remove")) },
  ];

  return React.createElement("div", null,
    React.createElement(SectionHeader, { title: "Admins & roles", subtitle: ADM.ADMIN_USERS.length + " team members · " + ADM.ROLES.length + " roles" },
      React.createElement(Btn, { variant: "primary", size: "md", onClick: () => toast("Invite sent") }, React.createElement(AdmIcon, { name: "plus", size: 14 }), "Invite admin")),
    React.createElement("div", { style: { display: "grid", gridTemplateColumns: "1.5fr 1fr", gap: 14 } },
      React.createElement(Card, null,
        React.createElement(CardHeader, { title: "Team members" }),
        React.createElement(DataTable, { columns: cols, rows: ADM.ADMIN_USERS })),
      React.createElement(Card, null,
        React.createElement(CardHeader, { title: "Roles & permissions" }),
        React.createElement("div", { style: { padding: "6px 18px 16px" } },
          ADM.ROLES.map(r => React.createElement("div", { key: r.name, style: { padding: "11px 0", borderBottom: "1px solid #F7F4F0" } },
            React.createElement("div", { style: { display: "flex", alignItems: "center", gap: 8 } },
              React.createElement(AdmIcon, { name: "key-round", size: 14, color: "#C5622C" }),
              React.createElement("span", { style: { fontSize: 13, fontWeight: 600, color: "#1A1614" } }, r.name),
              React.createElement("span", { style: { marginLeft: "auto", fontSize: 11, color: "#A09288" } }, r.members + (r.members === 1 ? " member" : " members"))),
            React.createElement("div", { style: { fontSize: 11.5, color: "#857870", marginTop: 4, lineHeight: 1.5, paddingLeft: 22 } }, r.perms)))))));
}

/* ---------- Settings ---------- */
function SettingsModule({ toast }) {
  const { Card, CardHeader, Btn, SectionHeader, StatRow } = window.ModernTilesDesignSystem_50dd07;
  const [toggles, setToggles] = aUseState({ autoVerify: false, escrow: true, fraudAI: true, manualPayout: false, holdHighRisk: true });
  const T = ({ k, label, sub }) => React.createElement("div", { style: { display: "flex", alignItems: "center", gap: 12, padding: "12px 0", borderBottom: "1px solid #F7F4F0" } },
    React.createElement("div", { style: { flex: 1 } },
      React.createElement("div", { style: { fontSize: 13, fontWeight: 500, color: "#1A1614" } }, label),
      React.createElement("div", { style: { fontSize: 11.5, color: "#857870", marginTop: 2 } }, sub)),
    React.createElement("button", { onClick: () => { setToggles(s => ({ ...s, [k]: !s[k] })); toast(label + (toggles[k] ? " disabled" : " enabled")); },
      style: { width: 40, height: 23, borderRadius: 100, border: "none", cursor: "pointer", background: toggles[k] ? "#1A6B45" : "#D6CBC4", position: "relative", transition: "background .2s", flexShrink: 0 } },
      React.createElement("span", { style: { position: "absolute", top: 2.5, left: toggles[k] ? 20 : 2.5, width: 18, height: 18, borderRadius: "50%", background: "#fff", transition: "left .2s var(--ease-out,ease)", boxShadow: "0 1px 3px rgba(0,0,0,.2)" } })));

  return React.createElement("div", null,
    React.createElement(SectionHeader, { title: "Settings", subtitle: "Platform configuration & policy" }),
    React.createElement("div", { style: { display: "grid", gridTemplateColumns: "1fr 1fr", gap: 14 } },
      React.createElement(Card, null,
        React.createElement(CardHeader, { title: "Trust & safety" }),
        React.createElement("div", { style: { padding: "2px 18px 14px" } },
          React.createElement(T, { k: "autoVerify", label: "Auto-verify low-risk accounts", sub: "Skip manual KYC when risk score is low" }),
          React.createElement(T, { k: "fraudAI", label: "AI fraud detection", sub: "Flag anomalous orders and accounts automatically" }),
          React.createElement(T, { k: "holdHighRisk", label: "Hold payouts for high-risk", sub: "Require manual release on flagged suppliers" }))),
      React.createElement(Card, null,
        React.createElement(CardHeader, { title: "Payments" }),
        React.createElement("div", { style: { padding: "2px 18px 14px" } },
          React.createElement(T, { k: "escrow", label: "Escrow on all orders", sub: "Hold buyer funds until delivery confirmed" }),
          React.createElement(T, { k: "manualPayout", label: "Manual payout approval", sub: "Finance must approve each supplier payout" })),
        React.createElement("div", { style: { padding: "0 18px 16px" } },
          React.createElement("div", { style: { background: "#FDFCFA", border: "1px solid #F0EBE5", borderRadius: 10, padding: "4px 14px" } },
            React.createElement(StatRow, { label: "Platform commission", value: "4.9%", mono: true }),
            React.createElement(StatRow, { label: "Payout schedule", value: "Weekly (Fri)" }),
            React.createElement(StatRow, { label: "Settlement currency", value: "USD" }))))),
    React.createElement("div", { style: { marginTop: 14, display: "flex", justifyContent: "flex-end", gap: 8 } },
      React.createElement(Btn, { variant: "muted", onClick: () => toast("Changes discarded") }, "Discard"),
      React.createElement(Btn, { variant: "primary", onClick: () => toast("Settings saved") }, "Save changes")));
}

Object.assign(window, { ActivityModule, TeamModule, SettingsModule });
