168 lines
6.8 KiB
TypeScript
168 lines
6.8 KiB
TypeScript
import type { Metadata, Viewport } from 'next';
|
|
import './globals.css';
|
|
import { SiteHeader } from '../components/site-header';
|
|
import { SiteFooter } from '../components/site-footer';
|
|
|
|
export const viewport: Viewport = {
|
|
width: 'device-width',
|
|
initialScale: 1.0,
|
|
};
|
|
|
|
export const metadata: Metadata = {
|
|
title: 'MotorSignal | The ride intelligence platform',
|
|
description: 'Motorcycle telemetry, ride history, and connected rider tools.',
|
|
};
|
|
|
|
const tailwindConfigScript = `
|
|
tailwind.config = {
|
|
darkMode: "class",
|
|
theme: {
|
|
extend: {
|
|
colors: {
|
|
"brand": {
|
|
"bg": "#080c13",
|
|
"card": "#0f1420",
|
|
"cardAlt": "#141c2c",
|
|
"border": "#1f2a3f",
|
|
"borderLight": "#2c3b57",
|
|
"cyan": "#00f2fe",
|
|
"emerald": "#10b981",
|
|
"neonYellow": "#f59e0b",
|
|
"glow": "rgba(0, 242, 254, 0.15)"
|
|
},
|
|
"tertiary-fixed-dim": "#7bd0ff",
|
|
"surface": "#0f131c",
|
|
"on-secondary-fixed-variant": "#005227",
|
|
"primary-fixed": "#6ff6ff",
|
|
"surface-container-low": "#181c24",
|
|
"on-primary-container": "#006a70",
|
|
"on-background": "#dfe2ee",
|
|
"inverse-on-surface": "#2c3039",
|
|
"secondary-fixed": "#60ff98",
|
|
"primary": "#e0fdff",
|
|
"background": "#0f131c",
|
|
"secondary": "#f5fff3",
|
|
"primary-container": "#00f2fe",
|
|
"on-primary-fixed-variant": "#004f53",
|
|
"on-tertiary-fixed-variant": "#004c69",
|
|
"error": "#ffb4ab",
|
|
"tertiary-container": "#b2e1ff",
|
|
"surface-bright": "#353942",
|
|
"surface-container-highest": "#31353e",
|
|
"on-secondary-container": "#007239",
|
|
"surface-container": "#1c2028",
|
|
"primary-fixed-dim": "#00dce6",
|
|
"surface-variant": "#31353e",
|
|
"surface-container-high": "#262a33",
|
|
"surface-dim": "#0f131c",
|
|
"tertiary": "#f1f8ff",
|
|
"inverse-primary": "#00696f",
|
|
"on-primary-fixed": "#002022",
|
|
"tertiary-fixed": "#c4e7ff",
|
|
"on-error": "#690005",
|
|
"secondary-container": "#34ff8c",
|
|
"on-error-container": "#ffdad6",
|
|
"surface-tint": "#00dce6",
|
|
"on-tertiary-fixed": "#001e2c",
|
|
"on-tertiary-container": "#00678c",
|
|
"on-primary": "#00373a",
|
|
"on-tertiary": "#00354a",
|
|
"outline-variant": "#3a494b",
|
|
"outline": "#849495",
|
|
"on-secondary-fixed": "#00210c",
|
|
"inverse-surface": "#dfe2ee",
|
|
"surface-container-lowest": "#0a0e16",
|
|
"error-container": "#93000a",
|
|
"on-surface": "#dfe2ee",
|
|
"on-secondary": "#003919",
|
|
"secondary-fixed-dim": "#00e478",
|
|
"on-surface-variant": "#b9cacb"
|
|
},
|
|
borderRadius: {
|
|
"DEFAULT": "0.125rem",
|
|
"lg": "0.25rem",
|
|
"xl": "0.5rem",
|
|
"full": "0.75rem"
|
|
},
|
|
spacing: {
|
|
"space-lg": "1.5rem",
|
|
"gutter-desktop": "2rem",
|
|
"space-xl": "2rem",
|
|
"container-max": "1280px",
|
|
"gutter-tablet": "1.5rem",
|
|
"space-sm": "0.75rem",
|
|
"space-4xl": "6rem",
|
|
"space-xs": "0.5rem",
|
|
"space-2xs": "0.25rem",
|
|
"space-3xl": "4rem",
|
|
"gutter-mobile": "1rem",
|
|
"space-2xl": "3rem",
|
|
"space-md": "1rem"
|
|
},
|
|
fontFamily: {
|
|
"telemetry-metric-md": ["Space Grotesk"],
|
|
"body-lg": ["Plus Jakarta Sans"],
|
|
"label-md": ["Plus Jakarta Sans"],
|
|
"code-mono": ["Space Grotesk"],
|
|
"body-sm": ["Plus Jakarta Sans"],
|
|
"label-caps": ["Space Grotesk"],
|
|
"body-md": ["Plus Jakarta Sans"],
|
|
"headline-xl": ["Space Grotesk"],
|
|
"headline-lg": ["Space Grotesk"],
|
|
"headline-sm": ["Space Grotesk"],
|
|
"display-hero-mobile": ["Space Grotesk"],
|
|
"headline-md": ["Space Grotesk"],
|
|
"headline-xl-mobile": ["Space Grotesk"],
|
|
"telemetry-metric-xl": ["Space Grotesk"],
|
|
"display-hero": ["Space Grotesk"]
|
|
},
|
|
fontSize: {
|
|
"telemetry-metric-md": ["32px", { lineHeight: "36px", letterSpacing: "-0.03em", fontWeight: "700" }],
|
|
"body-lg": ["18px", { lineHeight: "28px", letterSpacing: "0em", fontWeight: "400" }],
|
|
"label-md": ["13px", { lineHeight: "18px", letterSpacing: "0.01em", fontWeight: "600" }],
|
|
"code-mono": ["12px", { lineHeight: "16px", letterSpacing: "0.04em", fontWeight: "500" }],
|
|
"body-sm": ["13px", { lineHeight: "20px", letterSpacing: "0.005em", fontWeight: "400" }],
|
|
"label-caps": ["11px", { lineHeight: "14px", letterSpacing: "0.12em", fontWeight: "700" }],
|
|
"body-md": ["15px", { lineHeight: "24px", letterSpacing: "0em", fontWeight: "400" }],
|
|
"headline-xl": ["40px", { lineHeight: "48px", letterSpacing: "-0.02em", fontWeight: "700" }],
|
|
"headline-lg": ["28px", { lineHeight: "36px", letterSpacing: "-0.015em", fontWeight: "600" }],
|
|
"headline-sm": ["18px", { lineHeight: "26px", letterSpacing: "-0.005em", fontWeight: "600" }],
|
|
"display-hero-mobile": ["36px", { lineHeight: "44px", letterSpacing: "-0.02em", fontWeight: "700" }],
|
|
"headline-md": ["22px", { lineHeight: "30px", letterSpacing: "-0.01em", fontWeight: "600" }],
|
|
"headline-xl-mobile": ["28px", { lineHeight: "36px", letterSpacing: "-0.01em", fontWeight: "700" }],
|
|
"telemetry-metric-xl": ["48px", { lineHeight: "48px", letterSpacing: "-0.04em", fontWeight: "700" }],
|
|
"display-hero": ["56px", { lineHeight: "64px", letterSpacing: "-0.03em", fontWeight: "700" }]
|
|
}
|
|
}
|
|
}
|
|
};
|
|
`;
|
|
|
|
export default function RootLayout({ children }: Readonly<{ children: React.ReactNode }>) {
|
|
return (
|
|
<html lang="en" className="dark">
|
|
<head>
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossOrigin="" />
|
|
<link
|
|
href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500;600&family=Plus+Jakarta+Sans:ital,wght@0,300..800;1,300..800&family=Space+Grotesk:wght@300..700&display=swap"
|
|
rel="stylesheet"
|
|
/>
|
|
<link
|
|
href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200"
|
|
rel="stylesheet"
|
|
/>
|
|
<script src="https://cdn.tailwindcss.com"></script>
|
|
<script dangerouslySetInnerHTML={{ __html: tailwindConfigScript }} />
|
|
</head>
|
|
<body>
|
|
<SiteHeader />
|
|
<main>{children}</main>
|
|
<SiteFooter />
|
|
</body>
|
|
</html>
|
|
);
|
|
}
|
|
|