"use client" import { useState, useEffect } from "react" import { useForm } from "react-hook-form" import { zodResolver } from "@hookform/resolvers/zod" import * as z from "zod" import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, } from "@/components/ui/dialog" import { Button } from "@/components/ui/button" import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage, } from "@/components/ui/form" import { Input } from "@/components/ui/input" import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "@/components/ui/select" import { Switch } from "@/components/ui/switch" import { User } from "@/types" const userFormSchema = z.object({ name: z.string().min(1, "Name is required"), email: z.string().email("Invalid email address"), role: z.string().min(1, "Role is required"), active: z.boolean(), }) type UserFormValues = z.infer interface UserFormDialogProps { open: boolean onOpenChange: (open: boolean) => void user?: User | null } export function UserFormDialog({ open, onOpenChange, user }: UserFormDialogProps) { const isEditing = !!user const form = useForm({ resolver: zodResolver(userFormSchema), defaultValues: { name: "", email: "", role: "sales", active: true, }, }) useEffect(() => { if (user) { form.reset({ name: user.name, email: user.email, role: user.role, active: user.active, }) } else { form.reset({ name: "", email: "", role: "sales", active: true }) } }, [user, form]) function onSubmit(values: UserFormValues) { console.log(values) onOpenChange(false) } return ( {isEditing ? "Edit User" : "Add New User"} {isEditing ? "Update the user's information and permissions." : "Create a new user account."}
( Name )} /> ( Email )} /> ( Role )} /> {!isEditing && ( ( Password )} /> )} (
Active

User can access the system

)} />
) }