"use client"; import { useEffect, useState } from "react"; import Link from "next/link"; import { c2api } from "@/lib/c2api"; import { useAuth } from "@/components/AuthProvider"; import { useNodes } from "@/lib/useNodes"; import { getCurrentSubscription, getPlan, type Subscription } from "@/lib/billing"; import { Card, CardHeader } from "@/components/ui/Card"; import { Badge } from "@/components/ui/Badge"; import { Button } from "@/components/ui/Button"; import { Skeleton } from "@/components/ui/Skeleton"; function StatTile({ label, value }: { label: string; value: string | number }) { return (

{label}

{value}

); } export default function OrganizationSettingsPage() { const { nodes } = useNodes(); const { isOrgOwner, isAdmin } = useAuth(); const [memberCount, setMemberCount] = useState(null); const [sub, setSub] = useState(null); const [orgName, setOrgName] = useState(""); const [savedName, setSavedName] = useState(""); const [orgLoading, setOrgLoading] = useState(true); const [saving, setSaving] = useState(false); const [saveError, setSaveError] = useState(null); const canEdit = isOrgOwner || isAdmin; useEffect(() => { c2api.listUsers().then((u) => setMemberCount(u.length)).catch(() => setMemberCount(null)); getCurrentSubscription().then(setSub); c2api.getOrg() .then((org) => { setOrgName(org.name); setSavedName(org.name); }) .catch(() => {}) .finally(() => setOrgLoading(false)); }, []); async function handleSave() { setSaving(true); setSaveError(null); try { const res = await c2api.updateOrg(orgName.trim()); setSavedName(res.name); setOrgName(res.name); } catch (err) { setSaveError(err instanceof Error ? err.message : "Could not save."); } finally { setSaving(false); } } const plan = sub ? getPlan(sub.planId) : null; return (
setOrgName(e.target.value)} className="w-full bg-gray-800 border border-gray-700 rounded-lg px-3 py-2 text-white text-sm focus:outline-none focus:border-indigo-500 disabled:opacity-50" />
{saveError &&

{saveError}

}
{plan.name} plan ) : ( ) } />
Manage plan & billing → Manage members →
); }