Merge remote-tracking branch 'origin/main'

Fixed conflicts in keyword cloud page and API route
This commit is contained in:
2026-02-01 17:02:17 +08:00
2 changed files with 88 additions and 47 deletions
+5 -46
View File
@@ -2,12 +2,8 @@ import { KeywordCloud } from "./components/KeywordCloud";
import { getTranslations } from "next-intl/server";
interface PageProps {
params?: Promise<{
locale?: string | string[];
}>;
searchParams?: Promise<{
quarter?: string | string[];
}>;
params: Promise<{ locale: string }>;
searchParams: Promise<{ quarter?: string }>;
}
export async function generateMetadata({ params }: PageProps) {
@@ -23,47 +19,10 @@ export async function generateMetadata({ params }: PageProps) {
}
export default async function KeywordCloudPage({ searchParams, params }: PageProps) {
const resolvedParams = (await params) ?? {};
const rawLocale = resolvedParams.locale;
const locale = (Array.isArray(rawLocale) ? rawLocale[0] : rawLocale) ?? "zh";
const resolvedSearchParams = (await searchParams) ?? {};
const { locale } = await params;
const resolvedSearchParams = await searchParams;
const t = await getTranslations("keywordCloud");
// 如果 URL 中有 quarter 参数,使用它;否则使用默认季度
const rawQuarter = resolvedSearchParams.quarter;
const quarter = (Array.isArray(rawQuarter) ? rawQuarter[0] : rawQuarter) || "2024-Q1";
const texts = {
loading: t("loading"),
loadFailed: t("loadFailed"),
retry: t("retry"),
hotKeyword: t("hotKeyword"),
};
return (
<main className="relative z-10 max-w-6xl mx-auto px-4 pb-32 overflow-visible">
{/* 页面标题 */}
<header className="relative z-10 pt-16 pb-8 text-center max-w-4xl mx-auto px-4">
<div className="inline-block bg-accent dark:bg-purple-700 border-2 border-black px-3 py-1 font-display font-bold text-xs mb-4 shadow-hard-sm rotate-[-2deg]">
{t("badge")}
</div>
<h1 className="font-display text-5xl md:text-7xl font-bold mb-6 tracking-tighter leading-tight">
{t("title")}{" "}
<span
className="text-transparent bg-clip-text bg-gradient-to-r from-blue-500 to-purple-500"
style={{ WebkitTextStroke: "1.5px black" }}
>
{t("titleHighlight")}
</span>
</h1>
<p className="text-lg md:text-xl max-w-2xl mx-auto font-medium text-gray-700 dark:text-gray-300 mb-8">
{t("subtitle")}
</p>
</header>
{/* 词云组件 */}
<KeywordCloud initialQuarter={quarter} locale={locale} texts={texts} />
</main>
);
const quarter = resolvedSearchParams.quarter || "2024-Q1";
}