import type { HtmlNode } from "./jsx-runtime.ts"; /** * Base class for Flow page layouts — persistent shell UI wrapped around page content. * * @remarks * A layout wraps page content with shell UI (nav, sidebars, footers) that outlives page * navigation. On `flow:navigate`, pages that share the same layout class only swap their * `[data-flow-root]` content; the layout shell stays mounted and is never re-rendered or * re-sent over the socket. Attach one with `static layout = AppLayout` on a {@link Component} * (or override {@link Component.layout} for the JSX-native form). * * @example * ```tsx * export class AppLayout extends Layout { * static head = ``; * * render(slot: HtmlNode) { * return ( *