'use client' import { Button } from '@/components/ui/button' import { Dialog, DialogContent, 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 { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from '@/components/ui/select' import { Textarea } from '@/components/ui/textarea' import { AlertTriangle, Check, Loader2, MessageSquarePlus } from 'lucide-react' import { useState } from 'react' import { useForm } from 'react-hook-form' import { z } from 'zod' import { zodResolver } from '@hookform/resolvers/zod' import { toast } from '@/hooks/use-toast' import axios from 'axios' const SupportFormSchema = z.object({ name: z.string().min(1, { message: 'Name is required' }), email: z.string().email({ message: 'Invalid email address' }), phone: z.string().optional(), category: z.enum(['general', 'technical'], { message: 'Support category is required', }), message: z.string().min(1, { message: 'Message is required' }), }) export default function SupportButton() { const [open, setOpen] = useState(false) const form = useForm({ resolver: zodResolver(SupportFormSchema), defaultValues: { name: '', email: '', phone: '', category: 'general', message: '', }, }) const onSubmit = async (data: any) => { try { const response = await axios.post('/api/customer-support', data) const result = response.data toast({ title: 'Support request submitted', description: result.message, }) } catch (error) { form.setError('root.serverError', { message: 'Error submitting support request', }) toast({ title: 'Error submitting support request', description: 'Please try again later', }) } } const onOpenChange = (open: boolean) => { setOpen(open) if (!open) { form.reset() } } return ( Contact Support
( Support Category )} /> ( Name )} /> ( Email )} /> ( Phone (Optional) )} /> ( Message