import 'reflect-metadata'; /** * @Layout(viewName, opts?) — Page component decorator. * * Marks a WireComponent as a full-page component and specifies the Edge layout * template that should wrap its rendered output on the initial page request. * * The layout template receives two variables: * - `$body` — the rendered component HTML (unescaped, use {{{ $body }}}) * - `$title` — the string from @Title, or null if not set * * Example layout template (`resources/views/layouts/adowire.edge`): * ```html * * * * {{ $title ?? 'My App' }} * @!adowireStyles() * * * {{{ $body }}} * @!adowireScripts() * * * ``` * * Usage: * ```ts * @Layout('layouts/adowire') * export default class Counter extends WireComponent { ... } * * @Layout('layouts/adowire', { slot: 'main' }) * export default class PostIndex extends WireComponent { ... } * ``` * * On initial SSR (via the @adowire Edge tag) the component HTML is wrapped inside * the layout template automatically. On subsequent AJAX updates the layout is * already on the page — only the inner component HTML is returned. * * @param name Edge view name of the layout template (e.g. `layouts/adowire`) * @param opts Optional `slot` name (default: `'main'`) — reserved for future * named-slot support; currently the layout uses `{{{ $body }}}`. */ export declare function Layout(name: string, opts?: { slot?: string; }): (target: Function) => void;