UNPKG

alinea

Version:
20 lines (19 loc) 722 B
import type { FieldsDefinition, Type } from './Type.js'; export interface PageData { type: Type; fields: Record<string, any>; } export type Page<Children extends Record<string, Page> = Record<string, never>> = Children & { [Page.Data]: PageData; }; export declare namespace Page { const Data: unique symbol; function data(page: Page): PageData; function isPage(page: any): page is Page; } export interface PageConfig<Definition, Children> { type: Type<Definition>; fields?: Partial<Type.Infer<Definition>>; children?: Children; } export declare function page<Fields extends FieldsDefinition, Children extends Record<string, Page>>(config: PageConfig<Fields, Children>): Page<Children>;