Introduces a Christmas theme that activates in December, including themed colors, subtle background patterns, and snowflake effects on loading screens. Adds a reusable SnowLoader component and utility for December detection. Updates layout and loading components to conditionally apply decorations and styles only during December.
94 lines
3.0 KiB
TypeScript
94 lines
3.0 KiB
TypeScript
import { Inter } from "next/font/google"
|
|
import "./globals.css"
|
|
import { ThemeProvider } from "@/components/layout/theme-provider"
|
|
import { Toaster } from "sonner"
|
|
import type React from "react"
|
|
import { NotificationProvider } from "@/lib/notification-context"
|
|
import { Metadata, Viewport } from "next"
|
|
import KeepOnlineWrapper from "@/components/layout/KeepOnlineWrapper"
|
|
import { ChristmasDecorations } from "@/components/christmas-decorations"
|
|
import { isDecember } from "@/lib/utils/christmas"
|
|
|
|
const inter = Inter({ subsets: ["latin"] })
|
|
|
|
export const metadata: Metadata = {
|
|
title: "Ember | E-Commerce Management Platform",
|
|
description: "Transform your e-commerce experience with Ember, a comprehensive platform that integrates secure cryptocurrency payments, efficient order management, and advanced analytics to help you optimize performance, boost sales, and expand your customer base",
|
|
keywords: "e-commerce, marketplace, cryptocurrency payments, order management, vendor platform, online business",
|
|
authors: [{ name: "Ember" }],
|
|
creator: "Ember ",
|
|
publisher: "Ember",
|
|
generator: "Next.js",
|
|
applicationName: "Ember",
|
|
referrer: "origin-when-cross-origin",
|
|
formatDetection: {
|
|
email: false,
|
|
address: false,
|
|
telephone: false,
|
|
},
|
|
robots: {
|
|
index: false,
|
|
follow: false,
|
|
googleBot: {
|
|
index: true,
|
|
follow: true,
|
|
"max-image-preview": "large",
|
|
"max-video-preview": -1,
|
|
"max-snippet": -1,
|
|
},
|
|
},
|
|
openGraph: {
|
|
title: "Ember | E-Commerce Management Platform",
|
|
description: "Transform your e-commerce experience with Ember, a comprehensive platform that integrates secure cryptocurrency payments, efficient order management, and advanced analytics to help you optimize performance, boost sales, and expand your customer base",
|
|
siteName: "Ember",
|
|
locale: "en_GB",
|
|
type: "website",
|
|
images: [
|
|
{
|
|
url: "/og-image.jpg",
|
|
width: 1200,
|
|
height: 630,
|
|
alt: "Ember - Streamlined E-commerce Management",
|
|
},
|
|
],
|
|
},
|
|
}
|
|
|
|
export const viewport: Viewport = {
|
|
width: "device-width",
|
|
initialScale: 1,
|
|
maximumScale: 3,
|
|
userScalable: true,
|
|
viewportFit: "cover",
|
|
themeColor: [
|
|
{ media: "(prefers-color-scheme: dark)", color: "#000000" },
|
|
{ media: "(prefers-color-scheme: light)", color: "#D53F8C" },
|
|
],
|
|
};
|
|
|
|
export default function RootLayout({
|
|
children,
|
|
}: {
|
|
children: React.ReactNode
|
|
}) {
|
|
const isDec = isDecember()
|
|
|
|
return (
|
|
<html lang="en" suppressHydrationWarning className={isDec ? "christmas-theme" : ""}>
|
|
<body className={inter.className}>
|
|
<ThemeProvider attribute="class" defaultTheme="dark" enableSystem disableTransitionOnChange>
|
|
<NotificationProvider>
|
|
{isDec && <ChristmasDecorations />}
|
|
<Toaster
|
|
theme="dark"
|
|
richColors
|
|
position="top-right"
|
|
/>
|
|
<KeepOnlineWrapper />
|
|
{children}
|
|
</NotificationProvider>
|
|
</ThemeProvider>
|
|
</body>
|
|
</html>
|
|
)
|
|
} |