import { useMutation, useSuspenseQuery } from "@tanstack/react-query"; import { useNavigate, useSearch } from "@tanstack/react-router"; import { Users, Settings as SettingsIcon } from "lucide-react"; import { toast } from "sonner"; import { getRegistrationStatusOptions, setRegistrationStatusMutation, } from "~/client/api-client/@tanstack/react-query.gen"; import { Card, CardContent, CardDescription, CardTitle } from "~/client/components/ui/card"; import { Label } from "~/client/components/ui/label"; import { Switch } from "~/client/components/ui/switch"; import { Tabs, TabsContent, TabsList, TabsTrigger } from "~/client/components/ui/tabs"; import type { AppContext } from "~/context"; import { UserManagement } from "~/client/modules/settings/components/user-management"; type Props = { appContext: AppContext; }; export function AdminPage({ appContext }: Props) { const { tab } = useSearch({ from: "/(dashboard)/admin/" }); const activeTab = tab || "users"; const navigate = useNavigate(); const registrationStatus = useSuspenseQuery({ ...getRegistrationStatusOptions(), }); const updateRegistrationStatusMutation = useMutation({ ...setRegistrationStatusMutation(), onSuccess: () => { toast.success("Registration settings updated"); }, onError: (error) => { toast.error("Failed to update registration settings", { description: error.message, }); }, }); const onTabChange = (value: string) => { void navigate({ to: ".", search: () => ({ tab: value }) }); }; return (
Users System
User Management Manage users, roles and permissions
System Settings Manage system-wide settings

When enabled, new users can sign up

updateRegistrationStatusMutation.mutate({ body: { enabled: checked } }) } disabled={updateRegistrationStatusMutation.isPending} />
); }