"use client"; import { zodResolver } from "@hookform/resolvers/zod"; import { useForm } from "react-hook-form"; import { z } from "zod"; import { useToast } from "./hooks/use-toast"; import { invoke } from "@tauri-apps/api/core"; import { useNavigate } from "react-router-dom"; import { Button } from "@/components/ui/button"; import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage, } from "@/components/ui/form"; import { Input } from "@/components/ui/input"; import { Checkbox } from "@/components/ui/checkbox"; import { validate_password } from "./global"; const formSchema = z.object({ username: z.string().min(3, { message: "Username must be at least 3 characters long.", }), password: z .string() .min(8, { message: "Password must be at least 8 characters long.", }) .refine(async (password) => await validate_password(password), { message: "Password must contain at least one uppercase letter, one lowercase letter, one number, and one special character.", }), }); const Sign_in = () => { const nav = useNavigate(); const form = useForm({ resolver: zodResolver(formSchema), defaultValues: { username: "", password: "", }, }); const { toast } = useToast(); async function onSubmit(_values: any) { const version: string = await invoke("get_app_version"); toast({ title: "Success: Signed in", description: `Loading Angel Panel v${version}...`, }); setTimeout(() => { nav("/dash"); }, 2500); } return (