"use client" import { useState } from "react" import { Switch } from "@/components/ui/switch" import { setMemberApprovalRequired } from "@/actions" import { SINGLE_TENANT_ORG_DOMAIN } from "@/lib/constants" import { isServiceError } from "@/lib/utils" import { useToast } from "@/components/hooks/use-toast" interface MemberApprovalRequiredToggleProps { memberApprovalRequired: boolean onToggleChange?: (checked: boolean) => void forceMemberApprovalRequired?: string } export function MemberApprovalRequiredToggle({ memberApprovalRequired, onToggleChange, forceMemberApprovalRequired }: MemberApprovalRequiredToggleProps) { const [enabled, setEnabled] = useState(memberApprovalRequired) const [isLoading, setIsLoading] = useState(false) const { toast } = useToast() const handleToggle = async (checked: boolean) => { setIsLoading(true) try { const result = await setMemberApprovalRequired(SINGLE_TENANT_ORG_DOMAIN, checked) if (isServiceError(result)) { toast({ title: "Error", description: "Failed to update member approval setting", variant: "destructive", }) return } setEnabled(checked) onToggleChange?.(checked) } catch (error) { console.error("Error updating member approval setting:", error) toast({ title: "Error", description: "Failed to update member approval setting", variant: "destructive", }) } finally { setIsLoading(false) } } const isDisabled = isLoading || forceMemberApprovalRequired !== undefined; const showForceMessage = forceMemberApprovalRequired !== undefined; return (

Require approval for new members

When enabled, new users will need approval from an organization owner before they can access your deployment.

{showForceMessage && (

The FORCE_MEMBER_APPROVAL_REQUIRED environment variable is set, so this cannot be changed from the UI.

)}
) }