"use client"; import { useState } from "react"; import { Link, useTranslation } from "@/i18n/navigation"; import { cities } from "@/app/data/cities"; import { apiFetch } from "@/app/lib/api-client"; const CITY_OPTIONS = cities.map((c) => ({ value: c.name, label: `${c.icon} ${c.name}` })); const CITY_BY_NAME = new Map(cities.map((city) => [city.name, city])); export default function HostMeetupPage() { const { t } = useTranslation("hostMeetup"); const [submitted, setSubmitted] = useState(false); const [submitting, setSubmitting] = useState(false); const [form, setForm] = useState({ city: "", date: "", time: "19:00", venue: "", address: "", description: "", maxAttendees: "20", }); const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); const city = CITY_BY_NAME.get(form.city); setSubmitting(true); try { await apiFetch("/api/meetups", { method: "POST", body: JSON.stringify({ city: form.city, emoji: city?.icon || "📍", date: form.date, time: form.time, venue: form.venue, address: form.address, description: form.description, rsvpCount: 1, gradientFrom: city?.gradientFrom || "#ff4d4f", gradientTo: city?.gradientTo || "#ff7a45", attendees: [], isUpcoming: true, status: "pending", }), }); setSubmitted(true); } finally { setSubmitting(false); } }; if (submitted) { return (
🎉

{t("successTitle")}

{t("successDesc")}

setSubmitted(false)} className="px-6 py-3 rounded-xl border border-gray-200 dark:border-gray-700 text-gray-700 dark:text-gray-300 font-medium hover:bg-gray-50 dark:hover:bg-gray-800 transition-colors" > {t("createAnother")} {t("viewMeetups")}
); } return (
← {t("backToMeetups")}

{t("title")}

{t("subtitle")}

setForm((f) => ({ ...f, date: e.target.value }))} className="form-input w-full border border-gray-200 dark:border-gray-700 rounded-xl px-4 py-3 bg-white dark:bg-gray-800 text-gray-900 dark:text-gray-100" />
setForm((f) => ({ ...f, time: e.target.value }))} className="form-input w-full border border-gray-200 dark:border-gray-700 rounded-xl px-4 py-3 bg-white dark:bg-gray-800 text-gray-900 dark:text-gray-100" />
setForm((f) => ({ ...f, venue: e.target.value }))} className="form-input w-full border border-gray-200 dark:border-gray-700 rounded-xl px-4 py-3 bg-white dark:bg-gray-800 text-gray-900 dark:text-gray-100 placeholder-gray-400" />
setForm((f) => ({ ...f, address: e.target.value }))} className="form-input w-full border border-gray-200 dark:border-gray-700 rounded-xl px-4 py-3 bg-white dark:bg-gray-800 text-gray-900 dark:text-gray-100 placeholder-gray-400" />