test9 / src /app /layout.tsx
simikkk's picture
Upload 82 files
35420f5 verified
Raw
History Blame Contribute Delete
1.84 kB
import type { Metadata } from "next";
import { Geist, Geist_Mono } from "next/font/google";
import "./globals.css";
import { Toaster } from "sonner";
import { ThemeProvider } from 'next-themes';
const geistSans = Geist({
variable: "--font-geist-sans",
subsets: ["latin"],
});
const geistMono = Geist_Mono({
variable: "--font-geist-mono",
subsets: ["latin"],
});
export const metadata: Metadata = {
title: "OmniParse AI — Invoice Processing in Seconds",
description:
"AI-powered invoice processing. Upload PDFs or images and extract vendor, dates, amounts, and line items as structured data. Export to CSV, JSON, or connect via API.",
keywords: [
"invoice processing",
"OCR",
"AI extraction",
"automated accounting",
"document processing",
],
icons: {
icon: "data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'><rect width='32' height='32' rx='8' fill='%23F59E0B'/><path d='M8 10h6v2H10v3h4v2h-4v3h4v2H8V10zm10 0h2l2 4 2-4h2v12h-2.5v-7.5L20 19h-.2l-1.3-2.5V22H16V10z' fill='%2309090B'/></svg>",
},
};
export default function RootLayout({
children,
}: Readonly<{
children: React.ReactNode;
}>) {
return (
<html lang="en" suppressHydrationWarning className="dark">
<body
className={`${geistSans.variable} ${geistMono.variable} antialiased bg-background text-foreground noise-overlay`}
>
<ThemeProvider attribute="class" defaultTheme="dark" enableSystem disableTransitionOnChange>
{children}
</ThemeProvider>
<Toaster
position="bottom-right"
toastOptions={{
style: {
background: "#1C1C1F",
border: "1px solid rgba(255,255,255,0.08)",
color: "#FAFAFA",
},
}}
/>
</body>
</html>
);
}