"use client" import { useEffect, useState } from "react" import { Button } from "@/components/ui/button" import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow, } from "@/components/ui/table" import { Plus, MessageSquare } from "lucide-react" import { useRouter } from "next/navigation" import { ticketsApi, type Ticket } from "@/lib/api" import { Badge } from "@/components/ui/badge" import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, } from "@/components/ui/dialog" import { Input } from "@/components/ui/input" import { Label } from "@/components/ui/label" import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "@/components/ui/select" import { Textarea } from "@/components/ui/textarea" import { toast } from "sonner" export default function TicketsPage() { const router = useRouter() const [tickets, setTickets] = useState([]) const [loading, setLoading] = useState(true) const [isCreateOpen, setIsCreateOpen] = useState(false) const [newTicket, setNewTicket] = useState({ subject: "", priority: "medium", message: "" }) const fetchTickets = async () => { try { const data = await ticketsApi.list() setTickets(data || []) } catch (error) { console.error(error) toast.error("Failed to load tickets") } finally { setLoading(false) } } useEffect(() => { fetchTickets() }, []) const handleCreate = async () => { if (!newTicket.subject) return try { await ticketsApi.create(newTicket) toast.success("Ticket created") setIsCreateOpen(false) setNewTicket({ subject: "", priority: "medium", message: "" }) fetchTickets() } catch (error) { toast.error("Failed to create ticket") } } const getStatusColor = (status: string) => { switch (status) { case 'open': return 'bg-blue-500' case 'in_progress': return 'bg-yellow-500' case 'closed': return 'bg-gray-500' default: return 'bg-gray-500' } } const getPriorityColor = (priority: string) => { switch (priority) { case 'high': return 'text-red-600 font-bold' case 'medium': return 'text-yellow-600' case 'low': return 'text-green-600' default: return '' } } return (

Support Tickets

Manage your support requests

Create Support Ticket Describe your issue and we'll get back to you.
setNewTicket({ ...newTicket, subject: e.target.value })} />