← back to Homesonspec
apps/web/src/app/layout.tsx
62 lines
import type { Metadata } from "next";
import Link from "next/link";
import { Fraunces, Inter } from "next/font/google";
import "./globals.css";
// Display serif + body sans, exposed as CSS variables the @theme layer reads.
const display = Fraunces({
subsets: ["latin"],
variable: "--font-fraunces",
weight: ["400", "500", "600", "700"],
style: ["normal", "italic"],
});
const sans = Inter({ subsets: ["latin"], variable: "--font-inter" });
export const metadata: Metadata = {
title: "HomesOnSpec — Every new home. Every builder. One search.",
description:
"Discover, compare, and contact builders for newly constructed homes. Verified from the source, with live verification labels — new builders and markets added continuously.",
};
export default function RootLayout({ children }: { children: React.ReactNode }) {
return (
<html lang="en" className={`${display.variable} ${sans.variable}`}>
<body className="min-h-screen bg-neutral-50 font-sans text-neutral-900 antialiased">
{/* Live inventory only — every listing is real builder data with a verification label. */}
<div className="bg-brand-950 px-4 py-1.5 text-center text-xs font-medium text-brand-100">
Early preview — every listing is verified from the builder’s own website and shows its
verification label and last-verified time. New builders are added continuously.
</div>
<header className="sticky top-0 z-[500] border-b border-neutral-200/70 bg-white/85 backdrop-blur">
<nav className="mx-auto flex max-w-7xl items-center justify-between px-4 py-3">
<Link href="/" className="font-display text-xl font-semibold tracking-tight text-brand-800">
HomesOnSpec<span className="text-accent-500">.</span>
</Link>
<div className="flex items-center gap-1 text-sm text-neutral-600">
<Link href="/search" className="rounded-full px-3 py-1.5 hover:bg-brand-50 hover:text-brand-700">Search</Link>
<Link href="/map" className="rounded-full px-3 py-1.5 hover:bg-brand-50 hover:text-brand-700">Map</Link>
<Link href="/builders" className="rounded-full px-3 py-1.5 hover:bg-brand-50 hover:text-brand-700">Builders</Link>
<Link href="/compare" className="rounded-full px-3 py-1.5 hover:bg-brand-50 hover:text-brand-700">Compare</Link>
<Link href="/saved" className="rounded-full px-3 py-1.5 hover:bg-brand-50 hover:text-brand-700">Saved</Link>
<Link href="/contact" className="btn-accent ml-2">Contact a builder</Link>
</div>
</nav>
</header>
<main>{children}</main>
<footer className="mt-16 border-t border-neutral-200 bg-white py-10 text-center text-xs text-neutral-500">
<p className="font-display text-sm text-brand-800">
Every new home. Every builder. One search.
</p>
<p className="mt-1">Verified from the source.</p>
<p className="mt-3">
Builder inclusion never implies sponsorship. Organic results are never mixed with paid placement.
</p>
</footer>
</body>
</html>
);
}