forked from git.gladyson/openmonetis
- Card de Status de Pagamento com totais pagos/pendentes e lista de boletos individuais - Validação obrigatória de categoria/conta/cartão no dialog de lançamento (client + server) - SEO completo na landing: Open Graph, Twitter Card, JSON-LD, sitemap.xml, robots.txt - Imagens convertidas de PNG para WebP (performance) - HTML lang corrigido para pt-BR; template de título dinâmico Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
39 lines
1.1 KiB
TypeScript
39 lines
1.1 KiB
TypeScript
import { Analytics } from "@vercel/analytics/next";
|
|
import { SpeedInsights } from "@vercel/speed-insights/next";
|
|
import type { Metadata } from "next";
|
|
import { ThemeProvider } from "@/components/theme-provider";
|
|
import { Toaster } from "@/components/ui/sonner";
|
|
import { allFontVariables } from "@/public/fonts/font_index";
|
|
import "./globals.css";
|
|
|
|
export const metadata: Metadata = {
|
|
title: {
|
|
default: "OpenMonetis | Suas finanças, do seu jeito",
|
|
template: "%s | OpenMonetis",
|
|
},
|
|
description:
|
|
"Controle suas finanças pessoais de forma simples e transparente.",
|
|
};
|
|
|
|
export default function RootLayout({
|
|
children,
|
|
}: Readonly<{
|
|
children: React.ReactNode;
|
|
}>) {
|
|
return (
|
|
<html lang="pt-BR" className={allFontVariables} suppressHydrationWarning>
|
|
<head>
|
|
<meta name="apple-mobile-web-app-title" content="OpenMonetis" />
|
|
</head>
|
|
<body className="antialiased" suppressHydrationWarning>
|
|
<ThemeProvider attribute="class" defaultTheme="light">
|
|
{children}
|
|
<Toaster position="top-right" />
|
|
</ThemeProvider>
|
|
<Analytics />
|
|
<SpeedInsights />
|
|
</body>
|
|
</html>
|
|
);
|
|
}
|