"use client"; import { useState, useMemo } from "react"; import { useLocale, useTranslation } from "@/i18n/navigation"; import { useTheme } from "@/app/context/ThemeContext"; import { MembersMap } from "@/app/lib/charts"; import { MAP_CITIES } from "@/app/data/map-cities"; export default function MembersMapPage() { const { t } = useTranslation("membersMap"); const locale = useLocale(); const { theme } = useTheme(); const [hoveredCity, setHoveredCity] = useState(null); const totalMembers = useMemo( () => MAP_CITIES.reduce((sum, c) => sum + c.nomadsNow, 0), [] ); const sortedCities = useMemo( () => [...MAP_CITIES].sort((a, b) => b.nomadsNow - a.nomadsNow), [] ); return (

{t("title")}

{t("subtitle")}

{hoveredCity && (

{locale === "zh" ? hoveredCity.name : hoveredCity.nameEn} {hoveredCity.emoji}

{hoveredCity.nomadsNow} {t("nomadsInCity")}

)}

{t("totalMembers")}

{totalMembers.toLocaleString()}+

{t("cities")}

    {sortedCities.map((city) => (
  • setHoveredCity(city)} onMouseLeave={() => setHoveredCity(null)} > {city.emoji} {locale === "zh" ? city.name : city.nameEn} {city.nomadsNow}
  • ))}

{t("demoHint")}

); }