import "~/styles/globals.css"; import { type Metadata } from "next"; import { Geist, Geist_Mono, Instrument_Serif } from "next/font/google"; import { TRPCReactProvider } from "~/trpc/react"; import { Toaster } from "~/components/ui/sonner"; import { AnimationPreferencesProvider } from "~/components/providers/animation-preferences-provider"; import { MotionBackground } from "~/components/layout/motion-background"; import { ThemeProvider } from "~/components/providers/theme-provider"; import { ColorThemeProvider } from "~/components/providers/color-theme-provider"; import { UmamiScript } from "~/components/analytics/umami-script"; export const metadata: Metadata = { title: "beenvoice - Invoicing Made Simple", description: "Simple and efficient invoicing for freelancers and small businesses", icons: [{ rel: "icon", url: "/favicon.ico" }], }; const geistSans = Geist({ subsets: ["latin"], variable: "--font-geist-sans", display: "swap", }); const geistMono = Geist_Mono({ subsets: ["latin"], variable: "--font-geist-mono", display: "swap", }); const instrumentSerif = Instrument_Serif({ subsets: ["latin"], variable: "--font-serif", display: "swap", weight: "400", }); export default function RootLayout({ children, }: Readonly<{ children: React.ReactNode }>) { return (
{/* Inline early theme and animation preference script to avoid FOUC */}