"use client" import { Loader2, UsersIcon } from "lucide-react" import { type ComponentProps, useContext, useMemo, useState } from "react" import { AuthUIContext } from "../../lib/auth-ui-provider" import { cn, getLocalizedError } from "../../lib/utils" import type { AuthLocalization } from "../../localization/auth-localization" import type { Team } from "../../types/auth-hooks" import type { Refetch } from "../../types/refetch" import type { SettingsCardClassNames } from "../settings/shared/settings-card" import { Button } from "../ui/button" import { Card } from "../ui/card" import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle } from "../ui/dialog" import { Field, FieldLabel } from "../ui/field" import { Input } from "../ui/input" interface UpdateTeamDialogProps extends ComponentProps { classNames?: SettingsCardClassNames team: Team localization?: AuthLocalization refetch?: Refetch } export function UpdateTeamDialog({ classNames, team, localization: localizationProp, refetch, onOpenChange, ...props }: UpdateTeamDialogProps) { const { authClient, localization: contextLocalization, toast, localizeErrors } = useContext(AuthUIContext) const localization = useMemo( () => ({ ...contextLocalization, ...localizationProp }), [contextLocalization, localizationProp] ) const [isUpdating, setIsUpdating] = useState(false) const [name, setName] = useState(team.name) const handleUpdate = async () => { try { setIsUpdating(true) await authClient.organization.updateTeam({ teamId: team.id, data: { name }, fetchOptions: { throw: true } }) toast({ variant: "success", message: localization.UPDATE_TEAM_SUCCESS }) await refetch?.() onOpenChange?.(false) } catch (error) { toast({ variant: "error", message: getLocalizedError({ error, localization, localizeErrors }) }) } finally { setIsUpdating(false) } } return ( e.preventDefault()} > {localization.UPDATE_TEAM} {localization.UPDATE_TEAM_DESCRIPTION}
{team.name}
{localization?.TEAM}
{localization.TEAM_NAME} setName(e.target.value)} placeholder={localization.TEAM_NAME_PLACEHOLDER} required value={name} />
) }