import type { Metadata } from "next"
import { Geist, Geist_Mono } from "next/font/google"
import { Toaster } from "@/components/ui/toaster"
import { UmamiAnalytics } from "@/components/analytics/umami"
import { CookieConsent } from "@/components/shared/cookie-consent"
import "./globals.css"

const geistSans = Geist({
  variable: "--font-geist-sans",
  subsets: ["latin"],
})

const geistMono = Geist_Mono({
  variable: "--font-geist-mono",
  subsets: ["latin"],
})

export const metadata: Metadata = {
  metadataBase: new URL(process.env.NEXT_PUBLIC_APP_URL ?? "https://propertymanagement.network"),
  applicationName: "Property Management Network",
  title: {
    default: "Property Management Network — Built for Independent Landlords",
    template: "%s | Property Management Network",
  },
  description:
    "Manage your rental properties, tenants, rent, maintenance, and leases from one dashboard. Built for independent landlords with 1–20 properties.",
  keywords: ["property management", "landlord software", "rent tracker", "tenant management"],
  openGraph: {
    title: "Property Management Network — Built for Independent Landlords",
    description: "One dashboard to manage all your rental properties.",
    type: "website",
    url: "/",
    siteName: "Property Management Network",
    locale: "en_US",
  },
  twitter: {
    card: "summary_large_image",
    title: "Property Management Network — Built for Independent Landlords",
    description: "One dashboard to manage all your rental properties.",
    creator: "@propertymgmtnet",
    site: "@propertymgmtnet",
  },
  robots: {
    index: true,
    follow: true,
    googleBot: {
      index: true,
      follow: true,
      "max-image-preview": "large",
      "max-snippet": -1,
      "max-video-preview": -1,
    },
  },
  verification: {
    // Set GOOGLE_SITE_VERIFICATION in the environment to emit the
    // <meta name="google-site-verification"> tag. Left undefined => tag omitted.
    google: process.env.GOOGLE_SITE_VERIFICATION,
  },
}

export default function RootLayout({
  children,
}: Readonly<{
  children: React.ReactNode
}>) {
  return (
    <html
      lang="en"
      className={`${geistSans.variable} ${geistMono.variable} h-full antialiased`}
    >
      <body suppressHydrationWarning className="min-h-full flex flex-col bg-[#09090b] text-white">
        {children}
        <Toaster />
        <CookieConsent />
        <UmamiAnalytics />
      </body>
    </html>
  )
}
