65 lines
1.8 KiB
TypeScript
65 lines
1.8 KiB
TypeScript
import type { Metadata } from "next";
|
|
import { Geist, Geist_Mono } from "next/font/google";
|
|
import "./globals.css";
|
|
import Link from "next/link";
|
|
|
|
const geistSans = Geist({
|
|
variable: "--font-geist-sans",
|
|
subsets: ["latin"],
|
|
});
|
|
|
|
const geistMono = Geist_Mono({
|
|
variable: "--font-geist-mono",
|
|
subsets: ["latin"],
|
|
});
|
|
|
|
export const metadata: Metadata = {
|
|
title: "Arbitrage Engine",
|
|
description: "Funding rate arbitrage monitoring system",
|
|
};
|
|
|
|
export default function RootLayout({
|
|
children,
|
|
}: Readonly<{
|
|
children: React.ReactNode;
|
|
}>) {
|
|
return (
|
|
<html lang="zh" className="dark">
|
|
<body
|
|
className={`${geistSans.variable} ${geistMono.variable} antialiased min-h-screen bg-slate-900 text-slate-100`}
|
|
>
|
|
{/* Top nav */}
|
|
<nav className="border-b border-slate-700 bg-slate-900/80 backdrop-blur sticky top-0 z-50">
|
|
<div className="max-w-6xl mx-auto px-4 h-14 flex items-center gap-8">
|
|
<span className="font-bold text-cyan-400 tracking-tight text-lg">
|
|
⚡ Arbitrage Engine
|
|
</span>
|
|
<div className="flex gap-6 text-sm">
|
|
<Link
|
|
href="/"
|
|
className="text-slate-300 hover:text-cyan-400 transition-colors"
|
|
>
|
|
仪表盘
|
|
</Link>
|
|
<Link
|
|
href="/history"
|
|
className="text-slate-300 hover:text-cyan-400 transition-colors"
|
|
>
|
|
历史
|
|
</Link>
|
|
<Link
|
|
href="/about"
|
|
className="text-slate-300 hover:text-cyan-400 transition-colors"
|
|
>
|
|
说明
|
|
</Link>
|
|
</div>
|
|
</div>
|
|
</nav>
|
|
|
|
<main className="max-w-6xl mx-auto px-4 py-8">{children}</main>
|
|
</body>
|
|
</html>
|
|
);
|
|
}
|