Root causes behind the cockpit looking «криво/косо»:
- Inter was never loaded — app referenced literal "Inter" but only IBM Plex
Mono went through next/font, so the whole cockpit rendered in -apple-system
(wider metrics → rail labels overflow, tabular numbers misalign). Load Inter
via next/font/google (latin+cyrillic) and wire --font-ui/body to it.
- Map legend overlay (z-index 4) was buried under Leaflet panes (200-700):
give .leaflet-container its own stacking context (position:absolute; z-index:1)
like the prototype, so the overlay + tools surface.
- Drop the Leaflet attribution flag/"Leaflet" prefix (prefix={false}) while
keeping the © Esri/Maxar/CARTO data credits.
- RECOMMENDED PRODUCT rendered 15 degenerate full-red −1.00 bars: filter mix to
the recommended class, show an honest empty state on degenerate signal, cap
rows, and stop labels wrapping (nowrap+ellipsis).
- ПТИЦА wordmark is now a Link → /site-finder (home), with a focus ring.
46 lines
1.2 KiB
TypeScript
46 lines
1.2 KiB
TypeScript
import type { Metadata } from "next";
|
|
import { IBM_Plex_Mono, Inter } from "next/font/google";
|
|
|
|
import { RouteGuard } from "@/components/auth/RouteGuard";
|
|
|
|
import "./globals.css";
|
|
import { Providers } from "./providers";
|
|
|
|
// App UI typeface (Inter). next/font is bundled — no package.json change.
|
|
// Cyrillic + latin subsets so RU labels render correctly across the app.
|
|
const inter = Inter({
|
|
subsets: ["latin", "cyrillic"],
|
|
weight: ["400", "500", "600", "700"],
|
|
variable: "--font-inter",
|
|
display: "swap",
|
|
});
|
|
|
|
// ПТИЦА 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={`${inter.variable} ${plexMono.variable}`}>
|
|
<body>
|
|
<Providers>
|
|
<RouteGuard>{children}</RouteGuard>
|
|
</Providers>
|
|
</body>
|
|
</html>
|
|
);
|
|
}
|