"use client"; import { useState, useEffect } from "react"; import { useRouter } from "next/navigation"; import { useAuth } from "../../hooks/useAuth"; import { useCountries } from "../../hooks/useCountries"; import Sidebar from "../../components/Sidebar"; import Header from "../../components/Header"; import CountryCard from "../../components/CountryCard"; import { countryAPI } from "../../lib/api"; import { toast } from "react-toastify"; import { Plus, X, Globe } from "lucide-react"; export default function CountriesPage() { const router = useRouter(); const { user, loading, isAdmin } = useAuth(); const { countries, refetch } = useCountries(); const [showModal, setShowModal] = useState(false); const [form, setForm] = useState({ name: "", code: "", flag_emoji: "", vfs_url: "", processing_time: "", visa_types: "", requirements: "" }); useEffect(() => { if (!loading && !user) router.push("/login"); }, [user, loading, router]); const handleCreate = async (e: React.FormEvent) => { e.preventDefault(); try { const visa_types = form.visa_types.split(",").map((s) => s.trim()).filter(Boolean); const requirements = form.requirements.split("\n").map((s) => s.trim()).filter(Boolean); await countryAPI.create({ ...form, visa_types, requirements }); toast.success("Country created"); setShowModal(false); setForm({ name: "", code: "", flag_emoji: "", vfs_url: "", processing_time: "", visa_types: "", requirements: "" }); refetch(); } catch (error: any) { toast.error(error.response?.data?.message || "Failed to create country"); } }; const handleDelete = async (id: string) => { if (!confirm("Delete this country?")) return; try { await countryAPI.delete(id); toast.success("Country deleted"); refetch(); } catch (error: any) { toast.error(error.response?.data?.message || "Failed to delete"); } }; if (loading || !user) return null; return (

Countries

Manage visa destinations

{isAdmin && ( )}
{countries.map((country) => (
{isAdmin && ( )}
))}
{showModal && (

Add Country

setForm({ ...form, name: e.target.value })} className="input w-full" placeholder="France" />
setForm({ ...form, code: e.target.value.toUpperCase() })} className="input w-full" placeholder="FR" />
setForm({ ...form, flag_emoji: e.target.value })} className="input w-full" placeholder="🇫🇷" />
setForm({ ...form, processing_time: e.target.value })} className="input w-full" placeholder="15-20 days" />
setForm({ ...form, vfs_url: e.target.value })} className="input w-full" placeholder="https://..." />
setForm({ ...form, visa_types: e.target.value })} className="input w-full" placeholder="Tourist, Business, Student" />