import { useEffect, useState } from "react"; import { getJSON, itemsOrEmpty, type Category } from "../../api"; import { CategoryIcon } from "../../components/CategoryIcon"; import { SectionHeader } from "../../components/SectionHeader"; import { langQuery, useI18n } from "../../i18n"; import { cleanCategoryDisplayName } from "../../utils/categoryDisplay"; const FIGMA_CATEGORY_ORDER = [ "project-ppt", "daily-class", "official-announcement", "academy-materials", "global-evangelism", "daily-poster", "community-tweets", "video-hub", "subsidy-policy", "how-to", "official-assets", "media-coverage", "academy-video", "general", ]; function figmaCategoryRank(category: Category): number { const index = FIGMA_CATEGORY_ORDER.indexOf(category.slug); return index === -1 ? FIGMA_CATEGORY_ORDER.length : index; } export function CategoriesPage() { const { t, lang } = useI18n(); const [cats, setCats] = useState([]); const [unavailableOpen, setUnavailableOpen] = useState(false); const [err, setErr] = useState(null); useEffect(() => { getJSON( `/api/categories?lang=${encodeURIComponent(langQuery(lang))}`, ) .then((items) => setCats( itemsOrEmpty(items).sort( (a, b) => figmaCategoryRank(a) - figmaCategoryRank(b), ), ), ) .catch((e) => setErr(String(e))); }, [lang]); if (err) { return (
{err}
); } return (
{cats.map((category) => ( ))}
{unavailableOpen ? (
setUnavailableOpen(false)} >
event.stopPropagation()} >
{t("featureUnavailable")}

{t("featureUnavailableDesc")}

) : null}
); }