/** * @fileoverview Document shell — html + body + provider in one component. * @module packages/ui/providers/saasflare-shell * @package ui * * Server component that renders the full document shell with the design-system * state locked in at SSR time. Single source of truth for brand-locked apps: * * export default function RootLayout({ children }) { * return ( * * {children} * * ) * } * * Renders: * * * {children} * * * * Because the data-attributes are baked into the SSR HTML, the pre-hydration * script is redundant and disabled. Zero FOUT, zero inline JS. * * Three-tier ownership model: * - SaasflareShell → the document (html + body + context + attrs) * - SaasflareProvider → the context (when you already own html + body) * - SaasflareScript → the pre-hydration script (strict-CSP use case) * * ── When NOT to use SaasflareShell ───────────────────────────────────────── * For showcases / user palette-switchers (runtime palette changes via a * ThemeToggle writing to localStorage), use `SaasflareProvider` directly and * omit `palette` — the inline script reads localStorage before paint. */ import type { ReactNode } from "react"; import { type SaasflareProviderProps } from "./saasflare-provider"; /** Props for {@link SaasflareShell}. */ export interface SaasflareShellProps extends Omit { children: ReactNode; /** Value for ``. @default "en" */ lang?: string; /** * Optional className applied to ``. Use this for `next/font` * variable classNames, which scope the loaded font's CSS variable: * * const inter = Inter({ subsets: ["latin"], variable: "--font-sans" }) * */ className?: string; /** Optional className applied to ``. */ bodyClassName?: string; /** Optional children rendered inside a `` element. */ head?: ReactNode; } /** * Full document shell that locks the Saasflare design-system state in at * SSR time. Replaces manual `` + `` + `` * wiring in the Next.js root layout. * * @component * @package ui */ export declare function SaasflareShell({ children, lang, className, bodyClassName, head, palette, surface, radius, animated, theme, smoothScrolling, storageKey, themeStorageKey, }: SaasflareShellProps): import("react/jsx-runtime").JSX.Element;