Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | 1x 1x 1x 1x | import type { Metadata } from 'next';
import { Inter } from 'next/font/google';
import type { ReactNode } from 'react';
import { CodeBlockHydrator } from '@/components/CodeBlockHydrator';
import { Footer } from '@/components/Footer';
import { Header } from '@/components/Header';
import { InlineTabsHydrator } from '@/components/InlineTabsHydrator';
import { Sidebar } from '@/components/Sidebar';
import { StorybookThemeToggle } from '@/components/StorybookThemeToggle';
import { ThemeProvider } from '@/components/ThemeProvider';
import { ToastProvider } from '@/components/ui/Toast';
import '../globals.css';
const inter = Inter({
variable: '--font-inter',
subsets: ['latin'],
});
export const metadata: Metadata = {
title: 'Lightning Design System 2 - Salesforce UX',
};
const themeInitScript = `(() => {
try {
const stored = localStorage.getItem('slds-theme');
const theme = stored === 'light' || stored === 'dark' ? stored :
window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';
document.documentElement.setAttribute('data-theme', theme);
} catch (e) {}
})();`;
export default function FrontendLayout({ children }: Readonly<{ children: ReactNode }>) {
return (
<html lang="en" className={inter.variable} suppressHydrationWarning>
<head>
<script dangerouslySetInnerHTML={{ __html: themeInitScript }} />
</head>
<body>
<ThemeProvider>
<ToastProvider>
<Header />
<div className="site-layout">
<Sidebar />
<div className="site-content">
<main className="site-main">{children}</main>
<Footer />
</div>
</div>
<CodeBlockHydrator />
<StorybookThemeToggle />
<InlineTabsHydrator />
</ToastProvider>
</ThemeProvider>
</body>
</html>
);
}
|