type Props = { [key: string]: any; }; export type ComponentType = | "div" | "button" | "input" | "span" | "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "p" | "a" | "img" | "ul" | "li" | "ol" | "form" | "label" | "select" | "option" | "textarea" | "table" | "tr" | "td" | "th" | "thead" | "tbody" | "tfoot" | "input" | "section" | "header" | "footer" | "nav" | "aside" | "article" | "main" | "figure" | "figcaption" | "blockquote" | "cite" | "abbr" | "address" | "time" | "code" | "pre" | "samp" | "kbd" | "var" | "dfn" | "mark" | "small" | "sub" | "sup" | "del" | "ins" | "u" | "s" | "b" | "i" | "strong" | "em" | "q" | "span" | "br" | "hr" | "canvas" | "video" | "audio" | "iframe" | "embed" | "object" | "param" | "source" | "track" | "map" | "area" | "svg" | "math" | "button" | "datalist" | "fieldset" | "legend" | "meter" | "progress" | "output" | "details" | "summary" | "dialog" | "menu" | "menuitem" | "script" | "noscript" | "slot" | "template" | "caption" | "col" | "colgroup" | "frame" | "frameset" | "head" | "tbody" | "thead" | "tfoot" | "tr" | "th" | "td" | "title" | "base" | "link" | "meta" | "style" | "area" | "base" | "img" | "track" | "input" | "button" | "select" | "textarea" | "label" | "form"; export type Child = Component | string | HTMLElement; export type Children = Child[] | string; export declare class Component { type: string; props: Props; children: Child[]; constructor(type: string, children?: Children, props?: Props); addChild(child: Child): this; render(): HTMLElement; } /** * Button component */ export declare class Button extends Component { constructor(children: Children, props?: any); } /** * Container component * */ export declare class Container extends Component { constructor(children: Children, props?: any); } /** * Box component */ export declare class Box extends Component { constructor(children?: Children, props?: any); } export {};