"use client"; import * as React from "react"; import { useRouter } from "next/navigation"; import { setOrganizationProviderVisibility, setOrganizationSuspended, updateOrganizationLimits, type AdminActionResult } from "@/actions/admin"; import { Button } from "@/components/ui/button"; import { Input, Textarea } from "@/components/ui/input"; import { Field, Hint, Label } from "@/components/ui/label"; import { Switch } from "@/components/ui/switch"; import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle } from "@/components/ui/dialog"; import { ResultMessage } from "./action-button"; export function OrgProviderVisibilitySwitch({ orgId, enabled }: { orgId: string; enabled: boolean }) { const router = useRouter(); const [pending, start] = React.useTransition(); const [result, setResult] = React.useState(null); return (
start(async () => { const r = await setOrganizationProviderVisibility(orgId, v); setResult(r); if (r.ok) router.refresh(); }) } />
When on, `debug: true` responses include real upstream provider names for this customer. Off for everyone by default.
); } export function OrgSuspendSwitch({ orgId, suspended }: { orgId: string; suspended: boolean }) { const router = useRouter(); const [pending, start] = React.useTransition(); const [open, setOpen] = React.useState(false); const [reason, setReason] = React.useState(""); const [result, setResult] = React.useState(null); const apply = (v: boolean) => start(async () => { const r = await setOrganizationSuspended(orgId, v, reason); setResult(r); if (r.ok) { setOpen(false); setReason(""); router.refresh(); } }); return (
(v ? setOpen(true) : apply(false))} />
Suspended organizations get `FORBIDDEN` on every API call and see a banner in the dashboard.
Suspend this organization? All API keys stop working immediately. Members can still sign in to read logs and contact support.