"use client"; import { zodResolver } from "@hookform/resolvers/zod"; import { authClient } from "@repo/auth/client"; import { SettingsItem } from "@saas/shared/components/SettingsItem"; import { useRouter } from "@shared/hooks/router"; import { Button } from "@ui/components/button"; import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage, } from "@ui/components/form"; import { PasswordInput } from "@ui/components/password-input"; import { useTranslations } from "next-intl"; import { useForm } from "react-hook-form"; import { toast } from "sonner"; import { z } from "zod"; const formSchema = z.object({ currentPassword: z.string().min(1), newPassword: z.string().min(8), }); export function ChangePasswordForm() { const t = useTranslations(); const router = useRouter(); const form = useForm>({ resolver: zodResolver(formSchema), defaultValues: { currentPassword: "", newPassword: "", }, }); const onSubmit = form.handleSubmit(async (values) => { const { error } = await authClient.changePassword({ ...values, revokeOtherSessions: true, }); if (error) { toast.error( t( "settings.account.security.changePassword.notifications.error", ), ); return; } toast.success( t("settings.account.security.changePassword.notifications.success"), ); form.reset({}); router.refresh(); }); return (
( {t( "settings.account.security.changePassword.currentPassword", )} )} /> ( {t( "settings.account.security.changePassword.newPassword", )} )} />
); }