import type { Metadata, Viewport } from "next"; import Script from "next/script"; import { Cal_Sans, Geist_Mono, Bricolage_Grotesque } from "next/font/google"; import localFont from "next/font/local"; import { Toaster } from "@/components/ui/sonner"; import { SiteHeader } from "@/components/site-header"; import { SiteTopBanner } from "@/components/site-top-banner"; import { ListeCekmecesiLazy } from "@/components/manuel-liste/liste-cekmecesi-lazy"; import { TercihProfiliKapisiLazy } from "@/components/manuel-liste/tercih-profili-kapisi-lazy"; import { HeaderGate } from "@/components/header-gate"; import { ProgressiveBlur } from "@/components/ui/skiper-ui/skiper41"; import { DevPanel } from "@/components/dev/dev-panel"; import { ScrollFlow } from "@/components/scroll-flow"; import { JsonLd, organizationJsonLd, webSiteJsonLd, SITE_URL } from "@/lib/seo"; import "./globals.css"; const calSans = Cal_Sans({ variable: "--font-cal-sans", weight: "400", subsets: ["latin", "latin-ext"], }); const clarityCity = localFont({ variable: "--font-clarity-city", src: [ { path: "../fonts/ClarityCity-Regular.woff2", weight: "400" }, { path: "../fonts/ClarityCity-Medium.woff2", weight: "500" }, { path: "../fonts/ClarityCity-SemiBold.woff2", weight: "600" }, { path: "../fonts/ClarityCity-Bold.woff2", weight: "700" }, { path: "../fonts/ClarityCity-ExtraBold.woff2", weight: "800" }, ], }); const geistMono = Geist_Mono({ variable: "--font-geist-mono", subsets: ["latin"], // Yalnızca markdown/kod bloklarında kullanılıyor; landing'de preload israfı preload: false, }); const bricolage = Bricolage_Grotesque({ variable: "--font-bricolage-grotesque", subsets: ["latin", "latin-ext"], axes: ["opsz"], }); export const metadata: Metadata = { metadataBase: new URL(SITE_URL), title: { default: "KolayTercih — Yapay Zekâ Destekli YKS Tercih Danışmanı", template: "%s — KolayTercih", }, description: "YKS sıralamana göre gerçek YÖK Atlas verisiyle dengeli 24 tercihlik liste. İnsan danışmanın onda bir fiyatına, yapay zekâ destekli tercih danışmanlığı.", applicationName: "KolayTercih", openGraph: { type: "website", locale: "tr_TR", siteName: "KolayTercih", url: "/", title: "KolayTercih — Yapay Zekâ Destekli YKS Tercih Danışmanı", description: "YKS sıralamana göre gerçek YÖK Atlas verisiyle dengeli 24 tercihlik liste. Yapay zekâ destekli tercih danışmanlığı.", }, twitter: { card: "summary_large_image" }, robots: { index: true, follow: true }, }; export const viewport: Viewport = { themeColor: "#f8fafc", }; export default function RootLayout({ children, }: Readonly<{ children: React.ReactNode; }>) { return ( 'e bağlı ResizeObserver // ile izliyor; html sabit %100 kalınca lazy yüklenen içerik sonrası limit // bayatlıyor ve sayfa sonunda scroll kilitleniyor. html auto yükseklikte // içerikle büyümeli, viewport tabanı body'deki min-h-dvh'den gelir. className={`${calSans.variable} ${clarityCity.variable} ${geistMono.variable} ${bricolage.variable} antialiased`} > {/* Rybbit analitik — beforeInteractive her zaman içine defer olarak enjekte edilir. Yalnızca prod build'de: Rybbit localhost'u da takip ettiği için dev trafiği prod verisini kirletmesin (DevPanel ile aynı kapı). mask-patterns: /sonuc URL'i ham başarı sıralamasını, /odeme/sonuc sipariş kimliğini taşıyor — path tek satırda toplanır. */} {process.env.NODE_ENV === "production" ? (