"use client"; import { useMemo, useState } from "react"; import Link from "next/link"; import { useI18n } from "@/lib/i18n"; import type { Discussion, DiscussionDetail } from "@/lib/types"; const CATEGORIES = ["全部", "签证", "远程工作", "住宿", "安全", "社区"]; interface Props { discussions: Discussion[]; featured?: DiscussionDetail | null; } export default function CommunityHubClient({ discussions, featured }: Props) { const { t } = useI18n(); const [category, setCategory] = useState("全部"); const [q, setQ] = useState(""); const filtered = useMemo(() => { let list = discussions; if (category !== "全部") list = list.filter((d) => d.category === category); if (q.trim()) { const s = q.toLowerCase(); list = list.filter( (d) => d.title.toLowerCase().includes(s) || d.excerpt.toLowerCase().includes(s) || d.tags.some((tag) => tag.toLowerCase().includes(s)) ); } return list; }, [discussions, category, q]); return (
{t.community.tag}

{t.community.title}

{t.community.subtitle}

{t.community.bannerTitle}

{t.community.bannerDesc}

{t.community.bannerCta}
{featured && featured.replies.length > 0 && (
📌 {t.community.hot}

{featured.title}

{featured.excerpt}

{featured.replies.slice(0, 2).map((r) => (
{r.author_emoji} {r.author} {r.content}
))}
{t.community.readMore} →
)}
{t.community.newTopic} setQ(e.target.value)} />
{CATEGORIES.map((c) => ( ))}
{filtered.map((d) => ( {d.is_pinned && 📌}
{d.author_emoji}

{d.title}

{d.author} · {d.category} · {d.created_at}

{d.excerpt}

💬 {d.reply_count} ❤️ {d.like_count} {d.tags.map((tag) => ( {tag} ))}
))}
{filtered.length === 0 && (

{t.community.empty}

)}
); }