040e1df685
- Major UI updates across dashboard, analytics, posts, trades, settings - New landing page, robots/sitemap, contact/privacy/terms pages - Updated globals.css with extensive styling and new landing.css - Refactor signedRequest, realtime data hook, and dashboard store Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
70 lines
2.1 KiB
TypeScript
70 lines
2.1 KiB
TypeScript
import type { Metadata, Viewport } from 'next'
|
|
import Script from 'next/script'
|
|
import './[locale]/globals.css'
|
|
|
|
const siteTitle = 'Trump Alpha'
|
|
const siteDescription = 'Track Trump social posts, AI-scored BTC and ETH signals, and auto-trader performance in one live dashboard.'
|
|
const siteUrl = process.env.NEXT_PUBLIC_SITE_URL
|
|
|
|
export const metadata: Metadata = {
|
|
metadataBase: siteUrl ? new URL(siteUrl) : undefined,
|
|
title: {
|
|
default: `${siteTitle} | Trade Trump's Truth Social posts, automatically`,
|
|
template: `%s | ${siteTitle}`,
|
|
},
|
|
description: siteDescription,
|
|
applicationName: siteTitle,
|
|
keywords: [
|
|
'Trump Alpha',
|
|
'TrumpSignal',
|
|
'crypto signals',
|
|
'BTC trading',
|
|
'ETH trading',
|
|
'AI trading dashboard',
|
|
'Trump social sentiment',
|
|
'Hyperliquid bot',
|
|
],
|
|
openGraph: {
|
|
title: `${siteTitle} | Trade Trump's Truth Social posts, automatically`,
|
|
description: siteDescription,
|
|
siteName: siteTitle,
|
|
type: 'website',
|
|
},
|
|
twitter: {
|
|
card: 'summary_large_image',
|
|
title: `${siteTitle} | Trade Trump's Truth Social posts, automatically`,
|
|
description: siteDescription,
|
|
},
|
|
}
|
|
|
|
export const viewport: Viewport = {
|
|
themeColor: '#0f0d0a',
|
|
width: 'device-width',
|
|
initialScale: 1,
|
|
viewportFit: 'cover',
|
|
}
|
|
|
|
export default function RootLayout({ children }: { children: React.ReactNode }) {
|
|
return (
|
|
<html lang="en">
|
|
<head>
|
|
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossOrigin="anonymous" />
|
|
<link
|
|
href="https://fonts.googleapis.com/css2?family=Geist:wght@400;500;600;700;800&family=Geist+Mono:wght@400;500;600&display=swap"
|
|
rel="stylesheet"
|
|
/>
|
|
</head>
|
|
<body>
|
|
{/* Umami analytics — loaded after interactive so it never blocks render */}
|
|
<Script
|
|
src="https://stats.bitnews.day/script.js"
|
|
data-website-id="708f06cc-3bd0-4b49-8e81-69289b7f1b42"
|
|
strategy="afterInteractive"
|
|
/>
|
|
{children}
|
|
</body>
|
|
</html>
|
|
)
|
|
}
|