import Breadcrumbs from "@/components/ui/breadcrumbs"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { useUsers } from "@/store/admin/users"; import { useCallback, type FC } from "react"; import { useForm } from "react-hook-form"; import { Link, useNavigate } from "react-router"; interface FormData { fullName: string; email: string; phoneNumber: string; password: string; repeatPassword: string; isAdmin: boolean; } const AdminCreateUserPage: FC = () => { const { register, handleSubmit, formState: { errors }, } = useForm(); const createUser = useUsers((state) => state.createUser); const navigate = useNavigate(); const onSubmit = useCallback( async (data: FormData) => { console.log("Form submitted:", data); const success = await createUser({ email: data.email, full_name: data.fullName, password: data.password, is_admin: data.isAdmin, }); if (success) { navigate("/admin/users"); } }, [createUser, navigate], ); return (
{/* Personal Information */}

User Personal Info

Name

{errors.fullName && ( {errors.fullName.message} )}

Email Address

{errors.email && ( {errors.email.message} )}

Password

{ if (password.length < 8) { return "Password must be at least 8 characters long"; } if (!password.match(/[a-zA-Z]+/gi)) { return "Password must contain characters"; } if (password.split("").every((c) => c.toLowerCase() == c)) { return "Password should contain at least 1 uppercase character"; } if (!password.match(/\d+/gi)) { return "Password should contain at least 1 digit"; } }, })} className="dark:text-gray-100 border border-gray-300 dark:border-gray-700 rounded placeholder:text-gray-600 text-sm p-2 focus:outline-none focus:ring-2 focus:ring-blue-500" /> {errors.password && ( {errors.password.message} )}

Repeat Password

{ if (repeatPassword != password) { return "Password does not match"; } }, })} className="dark:text-gray-100 border border-gray-300 dark:border-gray-700 rounded placeholder:text-gray-600 text-sm p-2 focus:outline-none focus:ring-2 focus:ring-blue-500" /> {errors.repeatPassword && ( {errors.repeatPassword.message} )}
{/* Final Section */}

Final Customization & Submit

); }; export default AdminCreateUserPage;