import { useState } from "react"; import { Form, required, useNotify, useTranslate } from "ra-core"; import { Layout } from "@/components/supabase/layout"; import type { FieldValues, SubmitHandler } from "react-hook-form"; import { TextInput } from "@/components/admin/text-input"; import { Button } from "@/components/ui/button"; import { supabase } from "@/components/atomic-crm/providers/supabase/supabase"; import { useNavigate, Link } from "react-router"; interface FormData { password: string; confirm: string; } export const ChangePasswordPage = () => { const [loading, setLoading] = useState(false); const notify = useNotify(); const translate = useTranslate(); const navigate = useNavigate(); const validate = (values: FormData) => { const errors: Record = {}; if (!values.password) { errors.password = translate("ra.validation.required"); } else if (values.password.length < 6) { errors.password = translate("crm.auth.password_min_length"); } if (!values.confirm) { errors.confirm = translate("ra.validation.required"); } else if (values.password !== values.confirm) { errors.confirm = translate("crm.auth.passwords_do_not_match"); } return errors; }; const submit = async (values: FormData) => { try { setLoading(true); const { error } = await supabase.auth.updateUser({ password: values.password, }); if (error) { throw error; } notify(translate("crm.auth.password_updated"), { type: "success" }); navigate("/"); } catch (error: any) { notify( typeof error === "string" ? error : typeof error === "undefined" || !error.message ? translate("crm.auth.failed_to_update_password") : error.message, { type: "warning", messageArgs: { _: typeof error === "string" ? error : error && error.message ? error.message : undefined, }, }, ); } finally { setLoading(false); } }; return (

{translate("crm.auth.set_new_password")}

{translate("crm.auth.choose_password_details")}

className="space-y-6" onSubmit={submit as SubmitHandler} validate={validate} >
{translate("crm.auth.back_to_login")}
); }; ChangePasswordPage.path = "change-password";