- Create CreatePlanModal component with Headless UI Dialog - Implement dark mode support throughout plans UI - Update plans/page.tsx with professional card layout - Update plans/[id]/page.tsx with consistent styling - Add proper spacing, typography, and color consistency - Implement smooth animations and transitions - Add success/error message feedback - Improve form UX with better input styling
65 lines
1.7 KiB
TypeScript
65 lines
1.7 KiB
TypeScript
import type { Metadata } from "next";
|
|
import { Arimo, Open_Sans, Fira_Code } from "next/font/google";
|
|
import "./globals.css";
|
|
import LayoutWrapper from "./LayoutWrapper";
|
|
import { ThemeProvider } from "next-themes";
|
|
import { getAgencyLogo } from "@/lib/server-api";
|
|
|
|
const arimo = Arimo({
|
|
variable: "--font-arimo",
|
|
subsets: ["latin"],
|
|
weight: ["400", "500", "600", "700"],
|
|
});
|
|
|
|
const openSans = Open_Sans({
|
|
variable: "--font-open-sans",
|
|
subsets: ["latin"],
|
|
weight: ["600", "700"],
|
|
});
|
|
|
|
const firaCode = Fira_Code({
|
|
variable: "--font-fira-code",
|
|
subsets: ["latin"],
|
|
weight: ["400", "600"],
|
|
});
|
|
|
|
export async function generateMetadata(): Promise<Metadata> {
|
|
const logoUrl = await getAgencyLogo();
|
|
|
|
// Adicionar timestamp para forçar atualização do favicon
|
|
const faviconUrl = logoUrl
|
|
? `${logoUrl}?v=${Date.now()}`
|
|
: '/favicon.ico';
|
|
|
|
return {
|
|
title: "Aggios - Dashboard",
|
|
description: "Plataforma SaaS para agências digitais",
|
|
icons: {
|
|
icon: faviconUrl,
|
|
shortcut: faviconUrl,
|
|
apple: faviconUrl,
|
|
},
|
|
};
|
|
}
|
|
|
|
export default function RootLayout({
|
|
children,
|
|
}: Readonly<{
|
|
children: React.ReactNode;
|
|
}>) {
|
|
return (
|
|
<html lang="pt-BR" suppressHydrationWarning>
|
|
<head>
|
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/remixicon@4.3.0/fonts/remixicon.css" />
|
|
</head>
|
|
<body className={`${arimo.variable} ${openSans.variable} ${firaCode.variable} antialiased`} suppressHydrationWarning>
|
|
<ThemeProvider attribute="class" defaultTheme="light" enableSystem={false}>
|
|
<LayoutWrapper>
|
|
{children}
|
|
</LayoutWrapper>
|
|
</ThemeProvider>
|
|
</body>
|
|
</html>
|
|
);
|
|
}
|