import * as react_jsx_runtime from 'react/jsx-runtime'; import { ReactNode } from 'react'; declare const CORE_LAYOUT_IDS: { readonly SINGLE_COLUMN: "core:single-column"; readonly TWO_COLUMN: "core:two-column"; }; /** * Registry mapping each known layout id to the union of valid section names * for that layout. Plugins can augment this interface to add type-safe section * names for their custom layouts. * * @example * ```ts * declare module "@medusajs/dashboard/components" { * interface LayoutSectionRegistry { * "my-plugin:three-column": "main" | "left" | "right" * } * } * ``` */ interface LayoutSectionRegistry { [CORE_LAYOUT_IDS.SINGLE_COLUMN]: "main"; [CORE_LAYOUT_IDS.TWO_COLUMN]: "main" | "side"; } type Layouts = keyof LayoutSectionRegistry; type SectionNameFor = LayoutSectionRegistry[TLayoutId]; type LayoutComposerProps = { /** * The prefix used to derive widget injection zones, typically corresponds to the page. * E.g. `"login"`, `"product.list"`, `"product.details"` etc. */ widgetsZonePrefix: string; /** * The id of the layout that should be used to render the page. E.g `"core:two-column"` or `"core:single-column"`. */ preferredLayoutId: TLayoutId; /** * The content to render in each section of the layout, keyed by the * section names valid for `preferredLayoutId`. */ sections: Record, ReactNode>; /** * Data passed to the layout components(core + widgets) as props */ data?: TData; /** * Whether to render an `Outlet` after the layout, used to render modals such as drawers and dialogs. * * @default true */ hasOutlet?: boolean; }; declare const LayoutComposer: ({ widgetsZonePrefix, preferredLayoutId, sections, data, hasOutlet, }: LayoutComposerProps) => react_jsx_runtime.JSX.Element | null; export { LayoutComposer };