import { useT } from "@agent-native/core/client/i18n"; import { IconChevronRight } from "@tabler/icons-react"; import { Link } from "react-router"; import { useAdminNavGroups, type AdminNavGroup, } from "../../components/admin-navigation"; import { DispatchShell } from "../../components/dispatch-shell"; export function meta() { return [{ title: "Admin — Dispatch" }]; } export default function AdminOverviewRoute() { const t = useT(); const groups = useAdminNavGroups(); return ( {groups.map((group, index) => ( ))} ); } const GROUP_DESCRIPTIONS: Record = { workspace: "Apps, resources, and workspace setup", operations: "Monitor runs, metrics, and audit history", automation: "Control scheduled work and delivery", connections: "Manage integrations, secrets, and messaging", "agent-platform": "Manage connected agents and dreams", "workspace-extensions": "Tools added by this workspace", }; const GROUP_TONES = [ "bg-primary/10 text-primary", "bg-secondary text-secondary-foreground", "bg-accent text-accent-foreground", "bg-muted text-foreground", ] as const; function AdminAreaCard({ group, index, }: { group: AdminNavGroup; index: number; }) { const t = useT(); const GroupIcon = group.items[0]?.icon; const tone = GROUP_TONES[index % GROUP_TONES.length]; return ( {GroupIcon ? : null} {t(group.labelKey, { defaultValue: group.label })} {GROUP_DESCRIPTIONS[group.id] || "Workspace tools and controls"} {group.items .filter((item) => item.id !== "admin-overview") .map((item) => { const ItemIcon = item.icon; return ( {ItemIcon ? : null} {t(`dispatch.nav.${item.id}`, { defaultValue: item.label, })} ); })} ); }
{GROUP_DESCRIPTIONS[group.id] || "Workspace tools and controls"}