import { Hono } from "hono"; import { BaseLayout } from "../layouts/base.js"; import { PageHeader, Card, EmptyState, ErrorDisplay } from "../components/index.js"; import { getSessionWithPermissions, hasAnyAdminPermission, canManageMembers, canManageCategories, canViewModLog, canManageRoles, } from "../lib/session.js"; import { isProgrammingError } from "../lib/errors.js"; import { logger } from "../lib/logger.js"; // ─── Types ───────────────────────────────────────────────────────────────── interface MemberEntry { did: string; handle: string; role: string; roleUri: string | null; joinedAt: string | null; } interface RoleEntry { id: string; name: string; uri: string; priority: number; } interface CategoryEntry { id: string; did: string; uri: string; name: string; description: string | null; sortOrder: number | null; } interface BoardEntry { id: string; name: string; description: string | null; sortOrder: number | null; categoryUri: string; uri: string; } // ─── Helpers ─────────────────────────────────────────────────────────────── function formatJoinedDate(isoString: string | null): string { if (!isoString) return "—"; const d = new Date(isoString); if (isNaN(d.getTime())) return "—"; return d.toLocaleDateString("en-US", { month: "short", day: "numeric", year: "numeric", }); } // ─── Components ──────────────────────────────────────────────────────────── function MemberRow({ member, roles, showRoleControls, errorMsg = null, }: { member: MemberEntry; roles: RoleEntry[]; showRoleControls: boolean; errorMsg?: string | null; }) { return (
You don't have permission to access the admin panel.
Members
View and assign member roles
Structure
Manage categories and boards
Mod Log
Audit trail of moderation actions
You don't have permission to manage members.
| Handle | Role | Joined | {showRoleControls &&Assign Role | }
|---|
You don't have permission to manage forum structure.
You don't have permission to manage forum structure.
You don't have permission to manage forum structure.
You don't have permission to manage forum structure.
You don't have permission to manage forum structure.
You don't have permission to manage forum structure.
You don't have permission to manage forum structure.