Files
kit-ui/app/layout.tsx

75 lines
2.5 KiB
TypeScript

import type { Metadata } from 'next';
import './globals.css';
import { Providers } from '@/components/providers/Providers';
const siteUrl = process.env.NEXT_PUBLIC_SITE_URL || 'http://localhost:3000';
export const metadata: Metadata = {
title: 'Kit - Your Creative Toolkit',
description: 'A curated collection of creative and utility tools for developers and creators. Features file conversion, image editing, and color manipulation.',
keywords: ['tools', 'utilities', 'file converter', 'image editor', 'color palette', 'creative toolkit', 'convert', 'paint', 'pastel', 'open source'],
metadataBase: new URL(siteUrl),
icons: {
icon: '/icon.png',
shortcut: '/icon.png',
apple: '/icon.png',
},
robots: {
index: true,
follow: true,
googleBot: {
index: true,
follow: true,
'max-video-preview': -1,
'max-image-preview': 'large',
'max-snippet': -1,
},
},
};
export default function RootLayout({
children,
}: Readonly<{
children: React.ReactNode;
}>) {
const umamiScript = process.env.UMAMI_SCRIPT;
const umamiId = process.env.UMAMI_ID;
const isProd = process.env.NODE_ENV === 'production';
return (
<html lang="en" className="dark" suppressHydrationWarning>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1" />
{isProd && umamiScript && umamiId && (
<script defer src={umamiScript} data-website-id={umamiId}></script>
)}
<script
dangerouslySetInnerHTML={{
__html: `
(function() {
try {
var theme = localStorage.getItem('theme');
var isLanding = window.location.pathname === '/';
if (isLanding) {
document.documentElement.classList.add('dark');
document.documentElement.classList.remove('light');
} else if (theme === 'light' || (!theme && window.matchMedia('(prefers-color-scheme: light)').matches)) {
document.documentElement.classList.add('light');
document.documentElement.classList.remove('dark');
} else {
document.documentElement.classList.add('dark');
document.documentElement.classList.remove('light');
}
} catch (e) {}
})();
`,
}}
/>
</head>
<body className="antialiased">
{children}
</body>
</html>
);
}