New non-destructive route /site-finder/analysis/[cad]/ptica rendering the existing /analyze data in the «ПТИЦА» operator-terminal cockpit. The light analysis page, Section1-6, globals.css and package.json are untouched. PR#1 scope: app-shell (topbar + 4 tabs + left rail), hero (dark Leaflet map + parcel passport KV-grid + Buildability radial gauge + invest-score block), and the Development Scan card grid — wired to useParcelAnalyzeQuery / ParcelAnalysis. Data honesty: real fields render live (passport egrn.*, district, utilities.summary, median_price, pipeline_24mo); absent fields show muted placeholders with source captions (buildability/risk = derived proxy «предв.»; invest/buy-signal «после прогноза»; КСИТ/height/ОКС/economy «—») via typed ptica-adapt.ts — no fake numbers presented as live. Dark theme is a CSS-module scoped under .pticaRoot[data-theme=dark] (cannot leak to the light app); IBM Plex Mono added via next/font (no dep/lockfile change). Leaflet via dynamic(ssr:false). TS strict, no any. Deferred to follow-up PRs: Scenarios (forecast), Reports+Compare tabs, 16 detail drawers, Three.js 3D massing.
37 lines
932 B
TypeScript
37 lines
932 B
TypeScript
import type { Metadata } from "next";
|
|
import { IBM_Plex_Mono } from "next/font/google";
|
|
|
|
import { RouteGuard } from "@/components/auth/RouteGuard";
|
|
|
|
import "./globals.css";
|
|
import { Providers } from "./providers";
|
|
|
|
// ПТИЦА cockpit numerals (mono). next/font is bundled — no package.json change.
|
|
// Cyrillic + latin subsets so mono digits/labels render in the dark cockpit.
|
|
const plexMono = IBM_Plex_Mono({
|
|
subsets: ["latin", "cyrillic"],
|
|
weight: ["400", "500", "600"],
|
|
variable: "--font-plex-mono",
|
|
display: "swap",
|
|
});
|
|
|
|
export const metadata: Metadata = {
|
|
title: "GenDesign",
|
|
description: "Generative Design + Site Finder",
|
|
};
|
|
|
|
export default function RootLayout({
|
|
children,
|
|
}: {
|
|
children: React.ReactNode;
|
|
}) {
|
|
return (
|
|
<html lang="ru" className={plexMono.variable}>
|
|
<body>
|
|
<Providers>
|
|
<RouteGuard>{children}</RouteGuard>
|
|
</Providers>
|
|
</body>
|
|
</html>
|
|
);
|
|
}
|