Files
react.dev/src/app/layout.tsx
Jimmy Lai 0eb0f889b1 feat: migrate React.dev to the App Router (#7437)
* update version to latest + move folders around

* getting home page working

* make the mdx setup work

* bypass mdxname

* split out mdx components

* re-add meta mdx logic

* replace mdxName usage

* fix code blocks

* fix max width

* convert mdx post processing to actual plugins

* fix tailwind

* fix incorrect iframe props

* cleanup mdx dic

* make it actually build

* align fonts

* fix uwu script

* fix search

* remove _app

* make it actually build

* replace next-watch-remote with custom setup

* clean up logs + clean up inline scripts

* add rss handler

* remove rss generation

* remove rss generation

* support MDX components for TOC

* clean up log + bump cache

* fix toc

* add back translations + add new overlay

* use MDX link instead of Next.js links for translation

* fix analytics

* add myself to the contributors

* fix blinking sidebar

* avoid rendering toc on the client

* plugin metadata

* simplify metadata

* fix title

* clean up metadata

* add back error decoder

* Update src/content/learn/index.md

---------

Co-authored-by: Ricky <rickhanlonii@gmail.com>
2025-02-01 11:35:16 -05:00

158 lines
4.1 KiB
TypeScript

import {siteConfig} from '../siteConfig';
import {Analytics} from 'components/Analytics';
import {ScrollHandler} from 'components/SafariScrollHandler';
import '@docsearch/css';
import '../styles/algolia.css';
import '../styles/index.css';
import '../styles/sandpack.css';
import {Suspense} from 'react';
import {DevContentRefresher} from 'components/DevContentRefresher';
import {ThemeScript} from 'components/ThemeScript';
import {UwuScript} from 'components/UwuScript';
import {Metadata} from 'next';
export const viewport = {
themeColor: [
{media: '(prefers-color-scheme: light)', color: '#23272f'},
{media: '(prefers-color-scheme: dark)', color: '#23272f'},
],
};
export const metadata: Metadata = {
description:
'React is the library for web and native user interfaces. Build user interfaces out of individual pieces called components written in JavaScript.',
openGraph: {
siteName: 'React',
type: 'website',
images: [{url: '/images/og-default.png'}],
},
twitter: {
card: 'summary_large_image',
site: '@reactjs',
creator: '@reactjs',
images: ['/images/og-default.png'],
},
verification: {
google: 'sIlAGs48RulR4DdP95YSWNKZIEtCqQmRjzn-Zq-CcD0',
},
other: {
'msapplication-TileColor': '#2b5797',
'fb:app_id': '623268441017527',
},
icons: {
icon: [
{url: '/favicon-16x16.png', sizes: '16x16', type: 'image/png'},
{url: '/favicon-32x32.png', sizes: '32x32', type: 'image/png'},
],
apple: [
{url: '/apple-touch-icon.png', sizes: '180x180', type: 'image/png'},
],
other: [
{rel: 'mask-icon', url: '/safari-pinned-tab.svg', color: '#404756'},
],
},
manifest: '/site.webmanifest',
};
function FontPreload() {
return (
<>
<link
rel="preload"
href="/fonts/Source-Code-Pro-Regular.woff2"
as="font"
type="font/woff2"
crossOrigin="anonymous"
/>
<link
rel="preload"
href="/fonts/Optimistic_Display_W_Md.woff2"
as="font"
type="font/woff2"
crossOrigin="anonymous"
/>
<link
rel="preload"
href="/fonts/Optimistic_Display_W_SBd.woff2"
as="font"
type="font/woff2"
crossOrigin="anonymous"
/>
<link
rel="preload"
href="/fonts/Optimistic_Display_W_MdIt.woff2"
as="font"
type="font/woff2"
crossOrigin="anonymous"
/>
<link
rel="preload"
href="/fonts/Optimistic_Text_W_BdIt.woff2"
as="font"
type="font/woff2"
crossOrigin="anonymous"
/>
<link
rel="preload"
href="/fonts/Optimistic_Display_W_Bd.woff2"
as="font"
type="font/woff2"
crossOrigin="anonymous"
/>
<link
rel="preload"
href="/fonts/Optimistic_Text_W_Md.woff2"
as="font"
type="font/woff2"
crossOrigin="anonymous"
/>
<link
rel="preload"
href="/fonts/Optimistic_Text_W_Bd.woff2"
as="font"
type="font/woff2"
crossOrigin="anonymous"
/>
<link
rel="preload"
href="/fonts/Optimistic_Text_W_Rg.woff2"
as="font"
type="font/woff2"
crossOrigin="anonymous"
/>
<link
rel="preload"
href="/fonts/Optimistic_Text_W_It.woff2"
as="font"
type="font/woff2"
crossOrigin="anonymous"
/>
</>
);
}
export default function RootLayout({children}: {children: React.ReactNode}) {
return (
<html
lang={siteConfig.languageCode}
dir={siteConfig.isRTL ? 'rtl' : 'ltr'}
suppressHydrationWarning>
<head>
<FontPreload />
</head>
<body className="font-text font-medium antialiased text-lg bg-wash dark:bg-wash-dark text-secondary dark:text-secondary-dark leading-base">
<ScrollHandler />
<ThemeScript />
<UwuScript />
{process.env.NODE_ENV !== 'production' && <DevContentRefresher />}
{children}
<Suspense fallback={null}>
<Analytics />
</Suspense>
</body>
</html>
);
}