mirror of
https://github.com/jnsahaj/tweakcn.git
synced 2026-09-24 23:31:41 +08:00
89 lines
4.7 KiB
TypeScript
89 lines
4.7 KiB
TypeScript
import { NuqsAdapter } from "nuqs/adapters/next/app";
|
|
import type { Metadata, Viewport } from "next";
|
|
import { ThemeProvider } from "@/components/theme-provider";
|
|
import { Toaster } from "@/components/ui/toaster";
|
|
import { TooltipProvider } from "@/components/ui/tooltip";
|
|
import { ThemeScript } from "@/components/theme-script";
|
|
import "./globals.css";
|
|
import { PostHogInit } from "@/components/posthog-init";
|
|
import { Suspense } from "react";
|
|
|
|
export const metadata: Metadata = {
|
|
title: "Beautiful themes for shadcn/ui — tweakcn | Theme Editor & Generator",
|
|
description:
|
|
"Customize theme for shadcn/ui with tweakcn's interactive editor. Supports Tailwind CSS v4, Shadcn UI, and custom styles. Modify properties, preview changes, and get the code in real time.",
|
|
keywords:
|
|
"theme editor, theme generator, shadcn, ui, components, react, tailwind, button, editor, visual editor, component editor, web development, frontend, design system, UI components, React components, Tailwind CSS, shadcn/ui themes",
|
|
authors: [{ name: "Sahaj Jain" }],
|
|
openGraph: {
|
|
title: "Beautiful themes for shadcn/ui — tweakcn | Theme Editor & Generator",
|
|
description:
|
|
"Customize theme for shadcn/ui with tweakcn's interactive editor. Supports Tailwind CSS v4, Shadcn UI, and custom styles. Modify properties, preview changes, and get the code in real time.",
|
|
url: "https://tweakcn.com/",
|
|
siteName: "tweakcn",
|
|
images: [
|
|
{
|
|
url: "https://tweakcn.com/og-image.png",
|
|
width: 1200,
|
|
height: 630,
|
|
},
|
|
],
|
|
locale: "en_US",
|
|
type: "website",
|
|
},
|
|
twitter: {
|
|
card: "summary_large_image",
|
|
title: "Beautiful themes for shadcn/ui — tweakcn | Theme Editor & Generator",
|
|
description:
|
|
"Customize theme for shadcn/ui with tweakcn's interactive editor. Supports Tailwind CSS v4, Shadcn UI, and custom styles. Modify properties, preview changes, and get the code in real time.",
|
|
images: ["https://tweakcn.com/og-image.png"],
|
|
},
|
|
robots: "index, follow",
|
|
};
|
|
|
|
export const viewport: Viewport = {
|
|
width: "device-width",
|
|
initialScale: 1.0,
|
|
};
|
|
|
|
export default function RootLayout({ children }: { children: React.ReactNode }) {
|
|
return (
|
|
<html lang="en">
|
|
<head>
|
|
<ThemeScript />
|
|
<link rel="apple-touch-icon" href="/apple-touch-icon.png" />
|
|
<link rel="icon" href="/favicon.ico" sizes="any" />
|
|
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png" />
|
|
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png" />
|
|
<link
|
|
rel="apple-touch-icon"
|
|
href="/apple-touch-icon.png"
|
|
type="image/png"
|
|
sizes="180x180"
|
|
/>
|
|
<link rel="manifest" href="/site.webmanifest" />
|
|
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossOrigin="anonymous" />
|
|
<link
|
|
href="https://fonts.googleapis.com/css2?family=Architects+Daughter&family=DM+Sans:ital,opsz,wght@0,9..40,100..1000;1,9..40,100..1000&family=Fira+Code:wght@300..700&family=Geist+Mono:wght@100..900&family=Geist:wght@100..900&family=IBM+Plex+Mono:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;1,100;1,200;1,300;1,400;1,500;1,600;1,700&family=IBM+Plex+Sans:ital,wght@0,100..700;1,100..700&family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&family=JetBrains+Mono:ital,wght@0,100..800;1,100..800&family=Libre+Baskerville:ital,wght@0,400;0,700;1,400&family=Lora:ital,wght@0,400..700;1,400..700&family=Merriweather:ital,opsz,wght@0,18..144,300..900;1,18..144,300..900&family=Montserrat:ital,wght@0,100..900;1,100..900&family=Open+Sans:ital,wght@0,300..800;1,300..800&family=Outfit:wght@100..900&family=Oxanium:wght@200..800&family=Playfair+Display:ital,wght@0,400..900;1,400..900&family=Plus+Jakarta+Sans:ital,wght@0,200..800;1,200..800&family=Poppins:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&family=Roboto+Mono:ital,wght@0,100..700;1,100..700&family=Roboto:ital,wght@0,100..900;1,100..900&family=Source+Code+Pro:ital,wght@0,200..900;1,200..900&family=Source+Serif+4:ital,opsz,wght@0,8..60,200..900;1,8..60,200..900&family=Space+Grotesk:wght@300..700&family=Space+Mono:ital,wght@0,400;0,700;1,400;1,700&display=swap"
|
|
rel="stylesheet"
|
|
/>
|
|
<meta name="darkreader-lock" />
|
|
</head>
|
|
<body>
|
|
<NuqsAdapter>
|
|
<Suspense>
|
|
<ThemeProvider defaultTheme="light">
|
|
<TooltipProvider>
|
|
<Toaster />
|
|
{children}
|
|
</TooltipProvider>
|
|
</ThemeProvider>
|
|
</Suspense>
|
|
</NuqsAdapter>
|
|
<PostHogInit />
|
|
</body>
|
|
</html>
|
|
);
|
|
}
|