"use client" import { useState } from "react" import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, } from "@/components/ui/dialog" import { Button } from "@/components/ui/button" import { Label } from "@/components/ui/label" import { Input } from "@/components/ui/input" import { Textarea } from "@/components/ui/textarea" import { Switch } from "@/components/ui/switch" import { createUser } from "@/app/protected/(admin)/dashboard/user-management/action" import { toast } from "sonner" interface AddUserDialogProps { open: boolean onOpenChange: (open: boolean) => void onUserAdded: () => void } export function AddUserDialog({ open, onOpenChange, onUserAdded }: AddUserDialogProps) { const [loading, setLoading] = useState(false) const [formData, setFormData] = useState({ email: "", password: "", phone: "", metadata: "{}", emailConfirm: true, }) const handleInputChange = (e: React.ChangeEvent) => { const { name, value } = e.target setFormData((prev) => ({ ...prev, [name]: value })) } const handleSwitchChange = (checked: boolean) => { setFormData((prev) => ({ ...prev, emailConfirm: checked })) } const handleSubmit = async (e: React.FormEvent) => { e.preventDefault() setLoading(true) try { let metadata = {} try { metadata = JSON.parse(formData.metadata) } catch (error) { toast.error("Invalid JSON. Please check your metadata format.") setLoading(false) return } await createUser({ email: formData.email, password: formData.password, phone: formData.phone, user_metadata: metadata, email_confirm: formData.emailConfirm, }) toast.success("User created successfully.") onUserAdded() onOpenChange(false) setFormData({ email: "", password: "", phone: "", metadata: "{}", emailConfirm: true, }) } catch (error) { toast.error("Failed to create user.") } finally { setLoading(false) } } return ( Add User Create a new user account with email and password.