/
githubmirror
/
ui
Обзор
Документация
Войти
/
githubmirror
/
ui
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
apps/v4/app/layout.tsx
127 строк
4 KB
shadcn
feat: add Base UI toast (#11266)
23 июл 2026, 18:58
Не верифицирован
23 июл 2026, 18:58
6cd3f4c
Код
Авторство
О чём код?
import type { Metadata } from "next" import { NuqsAdapter } from "nuqs/adapters/next/app" import { META_THEME_COLORS, siteConfig } from "@/lib/config" import { DOCS_SIDEBAR_SCROLL_RESTORE_SCRIPT } from "@/lib/docs-sidebar-scroll" import { fontVariables } from "@/lib/fonts" import { cn } from "@/lib/utils" import { ActiveThemeProvider } from "@/components/active-theme" import { Analytics } from "@/components/analytics" import { TailwindIndicator } from "@/components/tailwind-indicator" import { ThemeProvider } from "@/components/theme-provider" import { TooltipProvider as BaseTooltipProvider } from "@/registry/bases/base/ui/tooltip" import { Toaster } from "@/registry/bases/radix/ui/sonner" import { TooltipProvider as RadixTooltipProvider } from "@/registry/bases/radix/ui/tooltip" import { Toaster as BaseToaster } from "@/styles/base-nova/ui/toast" import "@/app/globals.css" import "@/app/(app)/(typeset)/typeset.css" export const metadata: Metadata = { title: { default: siteConfig.name, template: `%s - ${siteConfig.name}`, }, metadataBase: new URL(process.env.NEXT_PUBLIC_APP_URL!), description: siteConfig.description, keywords: ["Next.js", "React", "Tailwind CSS", "Components", "shadcn"], authors: [ { name: "shadcn", url: "https://shadcn.com", }, ], creator: "shadcn", openGraph: { type: "website", locale: "en_US", url: process.env.NEXT_PUBLIC_APP_URL!, title: siteConfig.name, description: siteConfig.description, siteName: siteConfig.name, images: [ { url: `${process.env.NEXT_PUBLIC_APP_URL}/opengraph-image.png`, width: 1200, height: 630, alt: siteConfig.name, }, ], }, twitter: { card: "summary_large_image", title: siteConfig.name, description: siteConfig.description, images: [`${process.env.NEXT_PUBLIC_APP_URL}/opengraph-image.png`], creator: "@shadcn", }, icons: { icon: "/favicon.ico", shortcut: "/favicon-16x16.png", apple: "/apple-touch-icon.png", }, manifest: `${siteConfig.url}/site.webmanifest`, alternates: { types: { "application/rss+xml": `${siteConfig.url}/rss.xml`, }, }, } export default function RootLayout({ children, }: Readonly<{ children: React.ReactNode }>) { return ( <html lang="en" suppressHydrationWarning className={cn( fontVariables, "[--header-height:calc(var(--spacing)*14)] lg:[--header-height:calc(var(--spacing)*16)]" )} > <head> <script dangerouslySetInnerHTML={{ __html: DOCS_SIDEBAR_SCROLL_RESTORE_SCRIPT, }} /> <script dangerouslySetInnerHTML={{ __html: ` try { if (localStorage.theme === 'dark' || ((!('theme' in localStorage) || localStorage.theme === 'system') && window.matchMedia('(prefers-color-scheme: dark)').matches)) { document.querySelector('meta[name="theme-color"]').setAttribute('content', '${META_THEME_COLORS.dark}') } } catch (_) {} `, }} /> <meta name="theme-color" content={META_THEME_COLORS.light} /> </head> <body className={cn( "group/body overscroll-none antialiased [--footer-height:calc(var(--spacing)*14)] xl:[--footer-height:calc(var(--spacing)*24)]" )} > <ThemeProvider> <ActiveThemeProvider> <NuqsAdapter> <BaseTooltipProvider delay={0}> <RadixTooltipProvider delayDuration={0}> {children} <Toaster position="top-center" /> <BaseToaster /> </RadixTooltipProvider> </BaseTooltipProvider> </NuqsAdapter> <TailwindIndicator /> <Analytics /> </ActiveThemeProvider> </ThemeProvider> </body> </html> ) }