f34ae9eb00
Module rename across page H1, navbar tab, URL (/en/btc → /en/macro), all metadata/JSON-LD, sitemap, llms.txt, opengraph image, and SystemControl copy. Old /btc route fully removed. New components/btc/MacroPanel.tsx polls /api/macro/snapshot and lays out the 8 indicators in four sections (Valuation / Bottom trigger reference / Market structure / Sentiment & flows / Positioning) with tone-coloured values, current-band threshold chips, and a single CoinGlass / source chart link per card. Composite -100..+100 needle pulses on score change. Also fixes the pinned bottom-reversal alert on the homepage, which still linked to the now-404 /en/btc — now routes to /en/macro. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
58 lines
1.5 KiB
TypeScript
58 lines
1.5 KiB
TypeScript
import { getPosts } from '@/lib/api'
|
|
import type { Metadata } from 'next'
|
|
import DashboardClient from './DashboardClient'
|
|
|
|
export const revalidate = 30
|
|
|
|
const siteUrl = process.env.NEXT_PUBLIC_SITE_URL || 'https://trumpsignal.com'
|
|
|
|
interface OverviewPageProps {
|
|
params: Promise<{ locale: string }>
|
|
}
|
|
|
|
export async function generateMetadata({ params }: OverviewPageProps): Promise<Metadata> {
|
|
const { locale } = await params
|
|
const isZh = false // i18n shelved — Chinese branches kept as dead code for future revival; see messages/zh.json
|
|
|
|
const title = isZh
|
|
? 'Trump Alpha 信号总览'
|
|
: 'Trump Alpha Signal Monitor'
|
|
const description = isZh
|
|
? '实时查看 Trump Truth Social 信号、Macro Vibes 宏观氛围、KOL 观点和 talks-vs-trades 分歧,一页掌握核心加密信号。'
|
|
: 'Track Trump Truth Social signals, Macro Vibes (crypto macro regime), KOL calls, and talks-vs-trades divergence in one live crypto dashboard.'
|
|
const path = `${siteUrl}/${locale}`
|
|
|
|
return {
|
|
title,
|
|
description,
|
|
alternates: {
|
|
canonical: path,
|
|
languages: {
|
|
en: `${siteUrl}/en`,
|
|
'x-default': `${siteUrl}/en`,
|
|
},
|
|
},
|
|
openGraph: {
|
|
title,
|
|
description,
|
|
url: path,
|
|
locale: isZh ? 'zh_CN' : 'en_US',
|
|
alternateLocale: isZh ? ['en_US'] : ['zh_CN'],
|
|
},
|
|
twitter: {
|
|
title,
|
|
description,
|
|
},
|
|
}
|
|
}
|
|
|
|
export default async function OverviewPage() {
|
|
const posts = await getPosts(500, 1).catch(() => [])
|
|
|
|
return (
|
|
<DashboardClient
|
|
initialPosts={posts}
|
|
/>
|
|
)
|
|
}
|