import { createUser } from "@/api/user" import { Button } from "@/components/ui/button" import { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, } from "@/components/ui/dialog" import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage, } from "@/components/ui/form" import { Input } from "@/components/ui/input" import { ScrollArea } from "@/components/ui/scroll-area" import { IconButton } from "@/components/xui/icon-button" import { ModelUser } from "@/types" import { zodResolver } from "@hookform/resolvers/zod" import { useState } from "react" import { useForm } from "react-hook-form" import { useTranslation } from "react-i18next" import { KeyedMutator } from "swr" import { z } from "zod" interface UserCardProps { mutate: KeyedMutator } const userFormSchema = z.object({ username: z.string().min(1), password: z.string().min(8).max(72), }) export const UserCard: React.FC = ({ mutate }) => { const { t } = useTranslation() const form = useForm>({ resolver: zodResolver(userFormSchema), defaultValues: { username: "", password: "", }, resetOptions: { keepDefaultValues: false, }, }) const [open, setOpen] = useState(false) const onSubmit = async (values: z.infer) => { await createUser(values) setOpen(false) await mutate() form.reset() } return (
{t("NewUser")}
( {t("Username")} )} /> ( {t("Password")} )} />
) }