"use client"; import { useState } from "react"; import { Button } from "@/app/_components/ui/button"; import { Sheet, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, } from "@/app/_components/ui/sheet"; import { Input } from "@/app/_components/ui/input"; import { Label } from "@/app/_components/ui/label"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "@/app/_components/ui/select"; import { User } from "./users-table"; interface AddUserSheetProps { open: boolean; onOpenChange: (open: boolean) => void; onSave: ( userData: Omit & { password: string } ) => void; } export function AddUserSheet({ open, onOpenChange, onSave, }: AddUserSheetProps) { const [userData, setUserData] = useState< Omit & { password: string } >({ email: "", firstName: "", lastName: "", avatar: "/placeholder.svg?height=40&width=40", role: "user", status: "active", password: "", }); const [errors, setErrors] = useState>({}); const validateForm = () => { const newErrors: Record = {}; if (!userData.email) { newErrors.email = "Email is required"; } else if (!/\S+@\S+\.\S+/.test(userData.email)) { newErrors.email = "Email is invalid"; } if (!userData.password) { newErrors.password = "Password is required"; } else if (userData.password.length < 6) { newErrors.password = "Password must be at least 6 characters"; } if (!userData.firstName) { newErrors.firstName = "First name is required"; } if (!userData.lastName) { newErrors.lastName = "Last name is required"; } setErrors(newErrors); return Object.keys(newErrors).length === 0; }; const handleSubmit = () => { if (validateForm()) { onSave(userData); // Reset form setUserData({ email: "", firstName: "", lastName: "", avatar: "/placeholder.svg?height=40&width=40", role: "user", status: "active", password: "", }); setErrors({}); } }; const handleInputChange = (field: keyof typeof userData, value: string) => { setUserData((prev) => ({ ...prev, [field]: value })); // Clear error when field is edited if (errors[field]) { setErrors((prev) => { const newErrors = { ...prev }; delete newErrors[field]; return newErrors; }); } }; return ( Add New User Create a new user account with Supabase authentication.
handleInputChange("email", e.target.value)} className="col-span-3" /> {errors.email && (

{errors.email}

)}
handleInputChange("password", e.target.value)} className="col-span-3" /> {errors.password && (

{errors.password}

)}
handleInputChange("firstName", e.target.value)} className="col-span-3" /> {errors.firstName && (

{errors.firstName}

)}
handleInputChange("lastName", e.target.value)} className="col-span-3" /> {errors.lastName && (

{errors.lastName}

)}
); }