diff --git a/addons/van_jsx/package.json b/addons/van_jsx/package.json
index 9cd89255..7609e5ef 100644
--- a/addons/van_jsx/package.json
+++ b/addons/van_jsx/package.json
@@ -1,13 +1,14 @@
 {
   "name": "vanjs-jsx",
-  "version": "0.1.0",
+  "version": "0.2.0",
   "type": "module",
-  "types": "./src/index.d.ts",
   "description": "jsx-runtime for vanjs",
+  "types": "./src/index.d.ts",
   "exports": {
     ".": {
       "require": "./src/index.js",
-      "import": "./src/index.js"
+      "import": "./src/index.js",
+      "types": "./src/index.d.ts"
     },
     "./jsx-runtime": {
       "require": "./src/jsx-runtime.js",
diff --git a/addons/van_jsx/src/createElement.d.ts b/addons/van_jsx/src/createElement.d.ts
new file mode 100644
index 00000000..d1db49f2
--- /dev/null
+++ b/addons/van_jsx/src/createElement.d.ts
@@ -0,0 +1,13 @@
+import * as CSS from "csstype";
+import { State } from "vanjs-core";
+import { Primitive } from "./type";
+export type VanElement = Element;
+export type JSXElementType<P> = (props: P) => VanNode | VanElement;
+export type PrimitiveChild = Primitive | State<Primitive>;
+export type VanNode = VanElement | PrimitiveChild | VanNode[] | (() => VanNode) | null;
+declare const createElement: (jsxTag: string | Function, { children, style, ref, ...props }: {
+    children?: VanNode | undefined;
+    style?: CSS.Properties<0 | (string & {}), string & {}> | (() => CSS.Properties) | undefined;
+    ref?: State<Element> | undefined;
+}) => any;
+export default createElement;
diff --git a/addons/van_jsx/src/createElement.js b/addons/van_jsx/src/createElement.js
new file mode 100644
index 00000000..16486003
--- /dev/null
+++ b/addons/van_jsx/src/createElement.js
@@ -0,0 +1,33 @@
+import van from "vanjs-core";
+import { setAttribute } from "./hyper";
+const createElement = (jsxTag, { children, style, ref, ...props }) => {
+    if (typeof jsxTag === "string") {
+        // TODO VanNode to VanElement
+        const ele = van.tags[jsxTag](children);
+        for (const [key, value] of Object.entries(props ?? {})) {
+            // Auto Update Attribute
+            if (typeof value === "function" && !key.startsWith("on")) {
+                van.derive(() => {
+                    let attr = value();
+                    setAttribute(ele, key, attr);
+                });
+                continue;
+            }
+            // Add Event Listener
+            if (typeof value === "function" && key.startsWith("on")) {
+                ele.addEventListener(key.replace("on", "").toLowerCase(), value);
+                continue;
+            }
+            setAttribute(ele, key, value);
+            continue;
+        }
+        if (ref != null) {
+            ref.val = ele;
+        }
+        return ele;
+    }
+    if (typeof jsxTag === "function") {
+        return jsxTag({ ...props, ref, style, children });
+    }
+};
+export default createElement;
diff --git a/addons/van_jsx/src/hyper.d.ts b/addons/van_jsx/src/hyper.d.ts
new file mode 100644
index 00000000..e7245d93
--- /dev/null
+++ b/addons/van_jsx/src/hyper.d.ts
@@ -0,0 +1,3 @@
+import * as CSS from "csstype";
+export declare const styleToString: (style: CSS.Properties) => string;
+export declare const setAttribute: (element: Element, key: string, value: unknown) => void;
diff --git a/addons/van_jsx/src/hyper.js b/addons/van_jsx/src/hyper.js
new file mode 100644
index 00000000..352b3aa2
--- /dev/null
+++ b/addons/van_jsx/src/hyper.js
@@ -0,0 +1,37 @@
+export const styleToString = (style) => {
+    return Object.entries(style).reduce((acc, key) => acc +
+        key[0]
+            .split(/(?=[A-Z])/)
+            .join("-")
+            .toLowerCase() +
+        ":" +
+        key[1] +
+        ";", "");
+};
+export const setAttribute = (element, key, value) => {
+    // Convert Style Object
+    if (key === "style") {
+        const attr = styleToString(value);
+        element.setAttribute(key, attr);
+        return;
+    }
+    if (typeof value === "number") {
+        if (key === "tabIndex") {
+            element.setAttribute("tabindex", value.toString());
+            return;
+        }
+    }
+    // Set String Attribute
+    if (typeof value === "string") {
+        if (key === "className") {
+            element.setAttribute("class", value);
+            return;
+        }
+        if (key === "htmlFor") {
+            element.setAttribute("for", value);
+            return;
+        }
+        element.setAttribute(key, value);
+        return;
+    }
+};
diff --git a/addons/van_jsx/src/index.d.ts b/addons/van_jsx/src/index.d.ts
index dafd7a34..14a10fa7 100644
--- a/addons/van_jsx/src/index.d.ts
+++ b/addons/van_jsx/src/index.d.ts
@@ -1,7 +1,6 @@
 import { State, StateView } from "vanjs-core";
-
 export declare function createState<T>(initialValue: T): State<T>;
 export declare function createState<T>(initialValue: T | null): StateView<T>;
 export declare function createState<T = undefined>(): State<T | undefined>;
-export * from "./jsx-runtime";
+export { default as createElement, default as jsx, default as jsxDEV, } from "./createElement";
 export * from "./type";
diff --git a/addons/van_jsx/src/index.js b/addons/van_jsx/src/index.js
index fc409308..7b7832dc 100644
--- a/addons/van_jsx/src/index.js
+++ b/addons/van_jsx/src/index.js
@@ -1,7 +1,6 @@
 import van from "vanjs-core";
-
 export function createState(v) {
-  return van.state(v);
+    return van.state(v);
 }
-
-export * from "./jsx-runtime";
+export { default as createElement, default as jsx, default as jsxDEV, } from "./createElement";
+export * from "./type";
diff --git a/addons/van_jsx/src/jsx-dev-runtime.d.ts b/addons/van_jsx/src/jsx-dev-runtime.d.ts
index 6020639b..00923971 100644
--- a/addons/van_jsx/src/jsx-dev-runtime.d.ts
+++ b/addons/van_jsx/src/jsx-dev-runtime.d.ts
@@ -1 +1,2 @@
+export * from "./index";
 export * from "./jsx-runtime";
diff --git a/addons/van_jsx/src/jsx-dev-runtime.js b/addons/van_jsx/src/jsx-dev-runtime.js
index 6020639b..00923971 100644
--- a/addons/van_jsx/src/jsx-dev-runtime.js
+++ b/addons/van_jsx/src/jsx-dev-runtime.js
@@ -1 +1,2 @@
+export * from "./index";
 export * from "./jsx-runtime";
diff --git a/addons/van_jsx/src/jsx-internal.d.ts b/addons/van_jsx/src/jsx-internal.d.ts
deleted file mode 100644
index 4796c100..00000000
--- a/addons/van_jsx/src/jsx-internal.d.ts
+++ /dev/null
@@ -1,31 +0,0 @@
-import * as CSS from "csstype";
-import { State, ChildDom } from "vanjs-core";
-import { FunctionChild } from "./type";
-
-type OriginalElement = HTMLElement;
-type JSXProp<T, K extends keyof T> = T[K] | (() => T[K]) | State<T[K]>;
-
-export declare namespace JSX {
-  type HTMLAttributes<T> = {
-    [K in keyof Omit<T, "children" | "style">]?: JSXProp<T, K>;
-  } & Partial<{ children: ChildDom; style: CSS.Properties; ref: State<T> }>;
-
-  type SVGAttributes<T> = {
-    [K in keyof Omit<T, "children" | "style">]?: JSXProp<T, K>;
-  } & Partial<{ children: ChildDom; style: CSS.Properties; ref: State<T> }>;
-
-  export type ElementType = string | FunctionChild<any>;
-  export interface Element extends OriginalElement {}
-  export interface ElementAttributesProperty {
-    props: {};
-  }
-  export interface ElementChildrenAttribute {
-    children: {};
-  }
-  export interface IntrinsicAttributes {}
-  export type IntrinsicElements = {
-    [K in keyof HTMLElementTagNameMap]: HTMLElementTagNameMap[K] extends HTMLElement
-      ? HTMLAttributes<HTMLElementTagNameMap[K]>
-      : SVGAttributes<HTMLElementTagNameMap[K]>;
-  };
-}
diff --git a/addons/van_jsx/src/jsx-runtime.d.ts b/addons/van_jsx/src/jsx-runtime.d.ts
index 58bd2e08..e0eb3a40 100644
--- a/addons/van_jsx/src/jsx-runtime.d.ts
+++ b/addons/van_jsx/src/jsx-runtime.d.ts
@@ -1,21 +1,19 @@
-import * as CSS from "csstype";
-import { State, ChildDom } from "vanjs-core";
-
-export declare const jsx: (
-  jsxTag: string | Function,
-  {
-    children,
-    style,
-    ref,
-    ...props
-  }: {
-    children?: ChildDom;
-    style?:
-      | CSS.Properties<0 | (string & {}), string & {}>
-      | (() => CSS.Properties)
-      | undefined;
-    ref?: State<Element> | undefined;
-  }
-) => any;
-export { jsx as jsxDEV, jsx as jsxs };
-export type { JSX } from "./jsx-internal";
+import { JSXElementType, VanElement } from "./createElement";
+import { InnerElement, Key, TagOption } from "./type";
+export declare namespace JSX {
+    type ElementType = string | JSXElementType<any>;
+    interface ElementAttributesProperty {
+        props: object;
+    }
+    interface ElementChildrenAttribute {
+        children: object;
+    }
+    interface Element extends VanElement {
+    }
+    interface IntrinsicAttributes {
+        key?: Key;
+    }
+    type IntrinsicElements = {
+        [K in keyof InnerElement]: TagOption<K>;
+    };
+}
diff --git a/addons/van_jsx/src/jsx-runtime.js b/addons/van_jsx/src/jsx-runtime.js
deleted file mode 100644
index e829ab12..00000000
--- a/addons/van_jsx/src/jsx-runtime.js
+++ /dev/null
@@ -1,49 +0,0 @@
-import van from "vanjs-core";
-
-const styleToString = (style) => {
-  return Object.entries(style).reduce(
-    (acc, key) =>
-      acc +
-      key[0]
-        .split(/(?=[A-Z])/)
-        .join("-")
-        .toLowerCase() +
-      ":" +
-      key[1] +
-      ";",
-    ""
-  );
-};
-
-const mergeStyle = (props, style) => {
-  if (typeof style === "function") {
-    return {
-      ...props,
-      style: () => {
-        return styleToString(style());
-      },
-    };
-  }
-  if (style == null) {
-    return props;
-  }
-  return {
-    ...props,
-    style: styleToString(style),
-  };
-};
-
-export const jsx = (jsxTag, { children, style, ref, ...props }) => {
-  if (typeof jsxTag === "string") {
-    const ele = van.tags[jsxTag](mergeStyle(props, style), children);
-    if (ref != null) {
-      ref.val = ele;
-    }
-    return ele;
-  }
-  if (typeof jsxTag === "function") {
-    return jsxTag({ ...props, ref, style, children });
-  }
-};
-
-export { jsx as jsxDEV, jsx as jsxs };
diff --git a/addons/van_jsx/src/type.d.ts b/addons/van_jsx/src/type.d.ts
index 9e00db13..f7479693 100644
--- a/addons/van_jsx/src/type.d.ts
+++ b/addons/van_jsx/src/type.d.ts
@@ -1,12 +1,1423 @@
-import { ChildDom } from "vanjs-core";
-
-export type PropsWithChildren<TProps> = TProps & {
-  children?: ChildDom | undefined;
-};
-
-export interface FunctionComponent<TProps = {}> {
-  (props: PropsWithChildren<TProps>, context?: any): ChildDom | null;
+import CSS from "csstype";
+import { State } from "vanjs-core";
+import { VanNode } from "./createElement";
+export type Primitive = string | number | boolean | bigint;
+export type Key = number | string | symbol;
+export type PrimitiveChild = Primitive;
+interface EventHandler<E extends Event = Event> {
+    (event: E): void;
+}
+export interface DOMAttributes {
+    onCopy?: EventHandler<ClipboardEvent> | undefined;
+    onCopyCapture?: EventHandler<ClipboardEvent> | undefined;
+    onCut?: EventHandler<ClipboardEvent> | undefined;
+    onCutCapture?: EventHandler<ClipboardEvent> | undefined;
+    onPaste?: EventHandler<ClipboardEvent> | undefined;
+    onPasteCapture?: EventHandler<ClipboardEvent> | undefined;
+    onCompositionEnd?: EventHandler<CompositionEvent> | undefined;
+    onCompositionEndCapture?: EventHandler<CompositionEvent> | undefined;
+    onCompositionStart?: EventHandler<CompositionEvent> | undefined;
+    onCompositionStartCapture?: EventHandler<CompositionEvent> | undefined;
+    onCompositionUpdate?: EventHandler<CompositionEvent> | undefined;
+    onCompositionUpdateCapture?: EventHandler<CompositionEvent> | undefined;
+    onFocus?: EventHandler<FocusEvent> | undefined;
+    onFocusCapture?: EventHandler<FocusEvent> | undefined;
+    onBlur?: EventHandler<FocusEvent> | undefined;
+    onBlurCapture?: EventHandler<FocusEvent> | undefined;
+    onChange?: EventHandler<Event> | undefined;
+    onChangeCapture?: EventHandler<Event> | undefined;
+    onBeforeInput?: EventHandler<Event> | undefined;
+    onBeforeInputCapture?: EventHandler<Event> | undefined;
+    onInput?: EventHandler<Event> | undefined;
+    onInputCapture?: EventHandler<Event> | undefined;
+    onReset?: EventHandler<Event> | undefined;
+    onResetCapture?: EventHandler<Event> | undefined;
+    onSubmit?: EventHandler<Event> | undefined;
+    onSubmitCapture?: EventHandler<Event> | undefined;
+    onInvalid?: EventHandler<Event> | undefined;
+    onInvalidCapture?: EventHandler<Event> | undefined;
+    onLoad?: EventHandler | undefined;
+    onLoadCapture?: EventHandler | undefined;
+    onError?: EventHandler | undefined;
+    onErrorCapture?: EventHandler | undefined;
+    onKeyDown?: EventHandler<KeyboardEvent> | undefined;
+    onKeyDownCapture?: EventHandler<KeyboardEvent> | undefined;
+    /** @deprecated */
+    onKeyPress?: EventHandler<KeyboardEvent> | undefined;
+    /** @deprecated */
+    onKeyPressCapture?: EventHandler<KeyboardEvent> | undefined;
+    onKeyUp?: EventHandler<KeyboardEvent> | undefined;
+    onKeyUpCapture?: EventHandler<KeyboardEvent> | undefined;
+    onAbort?: EventHandler | undefined;
+    onAbortCapture?: EventHandler | undefined;
+    onCanPlay?: EventHandler | undefined;
+    onCanPlayCapture?: EventHandler | undefined;
+    onCanPlayThrough?: EventHandler | undefined;
+    onCanPlayThroughCapture?: EventHandler | undefined;
+    onDurationChange?: EventHandler | undefined;
+    onDurationChangeCapture?: EventHandler | undefined;
+    onEmptied?: EventHandler | undefined;
+    onEmptiedCapture?: EventHandler | undefined;
+    onEncrypted?: EventHandler | undefined;
+    onEncryptedCapture?: EventHandler | undefined;
+    onEnded?: EventHandler | undefined;
+    onEndedCapture?: EventHandler | undefined;
+    onLoadedData?: EventHandler | undefined;
+    onLoadedDataCapture?: EventHandler | undefined;
+    onLoadedMetadata?: EventHandler | undefined;
+    onLoadedMetadataCapture?: EventHandler | undefined;
+    onLoadStart?: EventHandler | undefined;
+    onLoadStartCapture?: EventHandler | undefined;
+    onPause?: EventHandler | undefined;
+    onPauseCapture?: EventHandler | undefined;
+    onPlay?: EventHandler | undefined;
+    onPlayCapture?: EventHandler | undefined;
+    onPlaying?: EventHandler | undefined;
+    onPlayingCapture?: EventHandler | undefined;
+    onProgress?: EventHandler | undefined;
+    onProgressCapture?: EventHandler | undefined;
+    onRateChange?: EventHandler | undefined;
+    onRateChangeCapture?: EventHandler | undefined;
+    onSeeked?: EventHandler | undefined;
+    onSeekedCapture?: EventHandler | undefined;
+    onSeeking?: EventHandler | undefined;
+    onSeekingCapture?: EventHandler | undefined;
+    onStalled?: EventHandler | undefined;
+    onStalledCapture?: EventHandler | undefined;
+    onSuspend?: EventHandler | undefined;
+    onSuspendCapture?: EventHandler | undefined;
+    onTimeUpdate?: EventHandler | undefined;
+    onTimeUpdateCapture?: EventHandler | undefined;
+    onVolumeChange?: EventHandler | undefined;
+    onVolumeChangeCapture?: EventHandler | undefined;
+    onWaiting?: EventHandler | undefined;
+    onWaitingCapture?: EventHandler | undefined;
+    onAuxClick?: EventHandler<MouseEvent> | undefined;
+    onAuxClickCapture?: EventHandler<MouseEvent> | undefined;
+    onClick?: EventHandler<MouseEvent> | undefined;
+    onClickCapture?: EventHandler<MouseEvent> | undefined;
+    onContextMenu?: EventHandler<MouseEvent> | undefined;
+    onContextMenuCapture?: EventHandler<MouseEvent> | undefined;
+    onDoubleClick?: EventHandler<MouseEvent> | undefined;
+    onDoubleClickCapture?: EventHandler<MouseEvent> | undefined;
+    onDrag?: EventHandler<DragEvent> | undefined;
+    onDragCapture?: EventHandler<DragEvent> | undefined;
+    onDragEnd?: EventHandler<DragEvent> | undefined;
+    onDragEndCapture?: EventHandler<DragEvent> | undefined;
+    onDragEnter?: EventHandler<DragEvent> | undefined;
+    onDragEnterCapture?: EventHandler<DragEvent> | undefined;
+    onDragExit?: EventHandler<DragEvent> | undefined;
+    onDragExitCapture?: EventHandler<DragEvent> | undefined;
+    onDragLeave?: EventHandler<DragEvent> | undefined;
+    onDragLeaveCapture?: EventHandler<DragEvent> | undefined;
+    onDragOver?: EventHandler<DragEvent> | undefined;
+    onDragOverCapture?: EventHandler<DragEvent> | undefined;
+    onDragStart?: EventHandler<DragEvent> | undefined;
+    onDragStartCapture?: EventHandler<DragEvent> | undefined;
+    onDrop?: EventHandler<DragEvent> | undefined;
+    onDropCapture?: EventHandler<DragEvent> | undefined;
+    onMouseDown?: EventHandler<MouseEvent> | undefined;
+    onMouseDownCapture?: EventHandler<MouseEvent> | undefined;
+    onMouseEnter?: EventHandler<MouseEvent> | undefined;
+    onMouseLeave?: EventHandler<MouseEvent> | undefined;
+    onMouseMove?: EventHandler<MouseEvent> | undefined;
+    onMouseMoveCapture?: EventHandler<MouseEvent> | undefined;
+    onMouseOut?: EventHandler<MouseEvent> | undefined;
+    onMouseOutCapture?: EventHandler<MouseEvent> | undefined;
+    onMouseOver?: EventHandler<MouseEvent> | undefined;
+    onMouseOverCapture?: EventHandler<MouseEvent> | undefined;
+    onMouseUp?: EventHandler<MouseEvent> | undefined;
+    onMouseUpCapture?: EventHandler<MouseEvent> | undefined;
+    onSelect?: EventHandler | undefined;
+    onSelectCapture?: EventHandler | undefined;
+    onTouchCancel?: EventHandler<TouchEvent> | undefined;
+    onTouchCancelCapture?: EventHandler<TouchEvent> | undefined;
+    onTouchEnd?: EventHandler<TouchEvent> | undefined;
+    onTouchEndCapture?: EventHandler<TouchEvent> | undefined;
+    onTouchMove?: EventHandler<TouchEvent> | undefined;
+    onTouchMoveCapture?: EventHandler<TouchEvent> | undefined;
+    onTouchStart?: EventHandler<TouchEvent> | undefined;
+    onTouchStartCapture?: EventHandler<TouchEvent> | undefined;
+    onPointerDown?: EventHandler<PointerEvent> | undefined;
+    onPointerDownCapture?: EventHandler<PointerEvent> | undefined;
+    onPointerMove?: EventHandler<PointerEvent> | undefined;
+    onPointerMoveCapture?: EventHandler<PointerEvent> | undefined;
+    onPointerUp?: EventHandler<PointerEvent> | undefined;
+    onPointerUpCapture?: EventHandler<PointerEvent> | undefined;
+    onPointerCancel?: EventHandler<PointerEvent> | undefined;
+    onPointerCancelCapture?: EventHandler<PointerEvent> | undefined;
+    onPointerEnter?: EventHandler<PointerEvent> | undefined;
+    onPointerEnterCapture?: EventHandler<PointerEvent> | undefined;
+    onPointerLeave?: EventHandler<PointerEvent> | undefined;
+    onPointerLeaveCapture?: EventHandler<PointerEvent> | undefined;
+    onPointerOver?: EventHandler<PointerEvent> | undefined;
+    onPointerOverCapture?: EventHandler<PointerEvent> | undefined;
+    onPointerOut?: EventHandler<PointerEvent> | undefined;
+    onPointerOutCapture?: EventHandler<PointerEvent> | undefined;
+    onGotPointerCapture?: EventHandler<PointerEvent> | undefined;
+    onGotPointerCaptureCapture?: EventHandler<PointerEvent> | undefined;
+    onLostPointerCapture?: EventHandler<PointerEvent> | undefined;
+    onLostPointerCaptureCapture?: EventHandler<PointerEvent> | undefined;
+    onScroll?: EventHandler<UIEvent> | undefined;
+    onScrollCapture?: EventHandler<UIEvent> | undefined;
+    onWheel?: EventHandler<WheelEvent> | undefined;
+    onWheelCapture?: EventHandler<WheelEvent> | undefined;
+    onAnimationStart?: EventHandler<AnimationEvent> | undefined;
+    onAnimationStartCapture?: EventHandler<AnimationEvent> | undefined;
+    onAnimationEnd?: EventHandler<AnimationEvent> | undefined;
+    onAnimationEndCapture?: EventHandler<AnimationEvent> | undefined;
+    onAnimationIteration?: EventHandler<AnimationEvent> | undefined;
+    onAnimationIterationCapture?: EventHandler<AnimationEvent> | undefined;
+    onTransitionEnd?: EventHandler<TransitionEvent> | undefined;
+    onTransitionEndCapture?: EventHandler<TransitionEvent> | undefined;
+}
+type Booleanish = boolean | "true" | "false";
+type CrossOrigin = "anonymous" | "use-credentials" | "" | undefined;
+interface AriaAttributes {
+    /** Identifies the currently active element when DOM focus is on a composite widget, textbox, group, or application. */
+    "aria-activedescendant"?: string | undefined;
+    /** Indicates whether assistive technologies will present all, or only parts of, the changed region based on the change notifications defined by the aria-relevant attribute. */
+    "aria-atomic"?: Booleanish | undefined;
+    /**
+     * Indicates whether inputting text could trigger display of one or more predictions of the user's intended value for an input and specifies how predictions would be
+     * presented if they are made.
+     */
+    "aria-autocomplete"?: "none" | "inline" | "list" | "both" | undefined;
+    /** Indicates an element is being modified and that assistive technologies MAY want to wait until the modifications are complete before exposing them to the user. */
+    "aria-busy"?: Booleanish | undefined;
+    /**
+     * Indicates the current "checked" state of checkboxes, radio buttons, and other widgets.
+     * @see aria-pressed @see aria-selected.
+     */
+    "aria-checked"?: boolean | "false" | "mixed" | "true" | undefined;
+    /**
+     * Defines the total number of columns in a table, grid, or treegrid.
+     * @see aria-colindex.
+     */
+    "aria-colcount"?: number | undefined;
+    /**
+     * Defines an element's column index or position with respect to the total number of columns within a table, grid, or treegrid.
+     * @see aria-colcount @see aria-colspan.
+     */
+    "aria-colindex"?: number | undefined;
+    /**
+     * Defines the number of columns spanned by a cell or gridcell within a table, grid, or treegrid.
+     * @see aria-colindex @see aria-rowspan.
+     */
+    "aria-colspan"?: number | undefined;
+    /**
+     * Identifies the element (or elements) whose contents or presence are controlled by the current element.
+     * @see aria-owns.
+     */
+    "aria-controls"?: string | undefined;
+    /** Indicates the element that represents the current item within a container or set of related elements. */
+    "aria-current"?: boolean | "false" | "true" | "page" | "step" | "location" | "date" | "time" | undefined;
+    /**
+     * Identifies the element (or elements) that describes the object.
+     * @see aria-labelledby
+     */
+    "aria-describedby"?: string | undefined;
+    /**
+     * Identifies the element that provides a detailed, extended description for the object.
+     * @see aria-describedby.
+     */
+    "aria-details"?: string | undefined;
+    /**
+     * Indicates that the element is perceivable but disabled, so it is not editable or otherwise operable.
+     * @see aria-hidden @see aria-readonly.
+     */
+    "aria-disabled"?: Booleanish | undefined;
+    /**
+     * Indicates what functions can be performed when a dragged object is released on the drop target.
+     * @deprecated in ARIA 1.1
+     */
+    "aria-dropeffect"?: "none" | "copy" | "execute" | "link" | "move" | "popup" | undefined;
+    /**
+     * Identifies the element that provides an error message for the object.
+     * @see aria-invalid @see aria-describedby.
+     */
+    "aria-errormessage"?: string | undefined;
+    /** Indicates whether the element, or another grouping element it controls, is currently expanded or collapsed. */
+    "aria-expanded"?: Booleanish | undefined;
+    /**
+     * Identifies the next element (or elements) in an alternate reading order of content which, at the user's discretion,
+     * allows assistive technology to override the general default of reading in document source order.
+     */
+    "aria-flowto"?: string | undefined;
+    /**
+     * Indicates an element's "grabbed" state in a drag-and-drop operation.
+     * @deprecated in ARIA 1.1
+     */
+    "aria-grabbed"?: Booleanish | undefined;
+    /** Indicates the availability and type of interactive popup element, such as menu or dialog, that can be triggered by an element. */
+    "aria-haspopup"?: boolean | "false" | "true" | "menu" | "listbox" | "tree" | "grid" | "dialog" | undefined;
+    /**
+     * Indicates whether the element is exposed to an accessibility API.
+     * @see aria-disabled.
+     */
+    "aria-hidden"?: Booleanish | undefined;
+    /**
+     * Indicates the entered value does not conform to the format expected by the application.
+     * @see aria-errormessage.
+     */
+    "aria-invalid"?: boolean | "false" | "true" | "grammar" | "spelling" | undefined;
+    /** Indicates keyboard shortcuts that an author has implemented to activate or give focus to an element. */
+    "aria-keyshortcuts"?: string | undefined;
+    /**
+     * Defines a string value that labels the current element.
+     * @see aria-labelledby.
+     */
+    "aria-label"?: string | undefined;
+    /**
+     * Identifies the element (or elements) that labels the current element.
+     * @see aria-describedby.
+     */
+    "aria-labelledby"?: string | undefined;
+    /** Defines the hierarchical level of an element within a structure. */
+    "aria-level"?: number | undefined;
+    /** Indicates that an element will be updated, and describes the types of updates the user agents, assistive technologies, and user can expect from the live region. */
+    "aria-live"?: "off" | "assertive" | "polite" | undefined;
+    /** Indicates whether an element is modal when displayed. */
+    "aria-modal"?: Booleanish | undefined;
+    /** Indicates whether a text box accepts multiple lines of input or only a single line. */
+    "aria-multiline"?: Booleanish | undefined;
+    /** Indicates that the user may select more than one item from the current selectable descendants. */
+    "aria-multiselectable"?: Booleanish | undefined;
+    /** Indicates whether the element's orientation is horizontal, vertical, or unknown/ambiguous. */
+    "aria-orientation"?: "horizontal" | "vertical" | undefined;
+    /**
+     * Identifies an element (or elements) in order to define a visual, functional, or contextual parent/child relationship
+     * between DOM elements where the DOM hierarchy cannot be used to represent the relationship.
+     * @see aria-controls.
+     */
+    "aria-owns"?: string | undefined;
+    /**
+     * Defines a short hint (a word or short phrase) intended to aid the user with data entry when the control has no value.
+     * A hint could be a sample value or a brief description of the expected format.
+     */
+    "aria-placeholder"?: string | undefined;
+    /**
+     * Defines an element's number or position in the current set of listitems or treeitems. Not required if all elements in the set are present in the DOM.
+     * @see aria-setsize.
+     */
+    "aria-posinset"?: number | undefined;
+    /**
+     * Indicates the current "pressed" state of toggle buttons.
+     * @see aria-checked @see aria-selected.
+     */
+    "aria-pressed"?: boolean | "false" | "mixed" | "true" | undefined;
+    /**
+     * Indicates that the element is not editable, but is otherwise operable.
+     * @see aria-disabled.
+     */
+    "aria-readonly"?: Booleanish | undefined;
+    /**
+     * Indicates what notifications the user agent will trigger when the accessibility tree within a live region is modified.
+     * @see aria-atomic.
+     */
+    "aria-relevant"?: "additions" | "additions removals" | "additions text" | "all" | "removals" | "removals additions" | "removals text" | "text" | "text additions" | "text removals" | undefined;
+    /** Indicates that user input is required on the element before a form may be submitted. */
+    "aria-required"?: Booleanish | undefined;
+    /** Defines a human-readable, author-localized description for the role of an element. */
+    "aria-roledescription"?: string | undefined;
+    /**
+     * Defines the total number of rows in a table, grid, or treegrid.
+     * @see aria-rowindex.
+     */
+    "aria-rowcount"?: number | undefined;
+    /**
+     * Defines an element's row index or position with respect to the total number of rows within a table, grid, or treegrid.
+     * @see aria-rowcount @see aria-rowspan.
+     */
+    "aria-rowindex"?: number | undefined;
+    /**
+     * Defines the number of rows spanned by a cell or gridcell within a table, grid, or treegrid.
+     * @see aria-rowindex @see aria-colspan.
+     */
+    "aria-rowspan"?: number | undefined;
+    /**
+     * Indicates the current "selected" state of various widgets.
+     * @see aria-checked @see aria-pressed.
+     */
+    "aria-selected"?: Booleanish | undefined;
+    /**
+     * Defines the number of items in the current set of listitems or treeitems. Not required if all elements in the set are present in the DOM.
+     * @see aria-posinset.
+     */
+    "aria-setsize"?: number | undefined;
+    /** Indicates if items in a table or grid are sorted in ascending or descending order. */
+    "aria-sort"?: "none" | "ascending" | "descending" | "other" | undefined;
+    /** Defines the maximum allowed value for a range widget. */
+    "aria-valuemax"?: number | undefined;
+    /** Defines the minimum allowed value for a range widget. */
+    "aria-valuemin"?: number | undefined;
+    /**
+     * Defines the current value for a range widget.
+     * @see aria-valuetext.
+     */
+    "aria-valuenow"?: number | undefined;
+    /** Defines the human readable text alternative of aria-valuenow for a range widget. */
+    "aria-valuetext"?: string | undefined;
+}
+type AriaRole = "alert" | "alertdialog" | "application" | "article" | "banner" | "button" | "cell" | "checkbox" | "columnheader" | "combobox" | "complementary" | "contentinfo" | "definition" | "dialog" | "directory" | "document" | "feed" | "figure" | "form" | "grid" | "gridcell" | "group" | "heading" | "img" | "link" | "list" | "listbox" | "listitem" | "log" | "main" | "marquee" | "math" | "menu" | "menubar" | "menuitem" | "menuitemcheckbox" | "menuitemradio" | "navigation" | "none" | "note" | "option" | "presentation" | "progressbar" | "radio" | "radiogroup" | "region" | "row" | "rowgroup" | "rowheader" | "scrollbar" | "search" | "searchbox" | "separator" | "slider" | "spinbutton" | "status" | "switch" | "tab" | "table" | "tablist" | "tabpanel" | "term" | "textbox" | "timer" | "toolbar" | "tooltip" | "tree" | "treegrid" | "treeitem" | (string & object);
+interface EventHandler<E extends Event = Event> {
+    (event: E): void;
+}
+export interface DOMAttributes {
+    onCopy?: EventHandler<ClipboardEvent> | undefined;
+    onCopyCapture?: EventHandler<ClipboardEvent> | undefined;
+    onCut?: EventHandler<ClipboardEvent> | undefined;
+    onCutCapture?: EventHandler<ClipboardEvent> | undefined;
+    onPaste?: EventHandler<ClipboardEvent> | undefined;
+    onPasteCapture?: EventHandler<ClipboardEvent> | undefined;
+    onCompositionEnd?: EventHandler<CompositionEvent> | undefined;
+    onCompositionEndCapture?: EventHandler<CompositionEvent> | undefined;
+    onCompositionStart?: EventHandler<CompositionEvent> | undefined;
+    onCompositionStartCapture?: EventHandler<CompositionEvent> | undefined;
+    onCompositionUpdate?: EventHandler<CompositionEvent> | undefined;
+    onCompositionUpdateCapture?: EventHandler<CompositionEvent> | undefined;
+    onFocus?: EventHandler<FocusEvent> | undefined;
+    onFocusCapture?: EventHandler<FocusEvent> | undefined;
+    onBlur?: EventHandler<FocusEvent> | undefined;
+    onBlurCapture?: EventHandler<FocusEvent> | undefined;
+    onChange?: EventHandler<Event> | undefined;
+    onChangeCapture?: EventHandler<Event> | undefined;
+    onBeforeInput?: EventHandler<Event> | undefined;
+    onBeforeInputCapture?: EventHandler<Event> | undefined;
+    onInput?: EventHandler<Event> | undefined;
+    onInputCapture?: EventHandler<Event> | undefined;
+    onReset?: EventHandler<Event> | undefined;
+    onResetCapture?: EventHandler<Event> | undefined;
+    onSubmit?: EventHandler<Event> | undefined;
+    onSubmitCapture?: EventHandler<Event> | undefined;
+    onInvalid?: EventHandler<Event> | undefined;
+    onInvalidCapture?: EventHandler<Event> | undefined;
+    onLoad?: EventHandler | undefined;
+    onLoadCapture?: EventHandler | undefined;
+    onError?: EventHandler | undefined;
+    onErrorCapture?: EventHandler | undefined;
+    onKeyDown?: EventHandler<KeyboardEvent> | undefined;
+    onKeyDownCapture?: EventHandler<KeyboardEvent> | undefined;
+    /** @deprecated */
+    onKeyPress?: EventHandler<KeyboardEvent> | undefined;
+    /** @deprecated */
+    onKeyPressCapture?: EventHandler<KeyboardEvent> | undefined;
+    onKeyUp?: EventHandler<KeyboardEvent> | undefined;
+    onKeyUpCapture?: EventHandler<KeyboardEvent> | undefined;
+    onAbort?: EventHandler | undefined;
+    onAbortCapture?: EventHandler | undefined;
+    onCanPlay?: EventHandler | undefined;
+    onCanPlayCapture?: EventHandler | undefined;
+    onCanPlayThrough?: EventHandler | undefined;
+    onCanPlayThroughCapture?: EventHandler | undefined;
+    onDurationChange?: EventHandler | undefined;
+    onDurationChangeCapture?: EventHandler | undefined;
+    onEmptied?: EventHandler | undefined;
+    onEmptiedCapture?: EventHandler | undefined;
+    onEncrypted?: EventHandler | undefined;
+    onEncryptedCapture?: EventHandler | undefined;
+    onEnded?: EventHandler | undefined;
+    onEndedCapture?: EventHandler | undefined;
+    onLoadedData?: EventHandler | undefined;
+    onLoadedDataCapture?: EventHandler | undefined;
+    onLoadedMetadata?: EventHandler | undefined;
+    onLoadedMetadataCapture?: EventHandler | undefined;
+    onLoadStart?: EventHandler | undefined;
+    onLoadStartCapture?: EventHandler | undefined;
+    onPause?: EventHandler | undefined;
+    onPauseCapture?: EventHandler | undefined;
+    onPlay?: EventHandler | undefined;
+    onPlayCapture?: EventHandler | undefined;
+    onPlaying?: EventHandler | undefined;
+    onPlayingCapture?: EventHandler | undefined;
+    onProgress?: EventHandler | undefined;
+    onProgressCapture?: EventHandler | undefined;
+    onRateChange?: EventHandler | undefined;
+    onRateChangeCapture?: EventHandler | undefined;
+    onSeeked?: EventHandler | undefined;
+    onSeekedCapture?: EventHandler | undefined;
+    onSeeking?: EventHandler | undefined;
+    onSeekingCapture?: EventHandler | undefined;
+    onStalled?: EventHandler | undefined;
+    onStalledCapture?: EventHandler | undefined;
+    onSuspend?: EventHandler | undefined;
+    onSuspendCapture?: EventHandler | undefined;
+    onTimeUpdate?: EventHandler | undefined;
+    onTimeUpdateCapture?: EventHandler | undefined;
+    onVolumeChange?: EventHandler | undefined;
+    onVolumeChangeCapture?: EventHandler | undefined;
+    onWaiting?: EventHandler | undefined;
+    onWaitingCapture?: EventHandler | undefined;
+    onAuxClick?: EventHandler<MouseEvent> | undefined;
+    onAuxClickCapture?: EventHandler<MouseEvent> | undefined;
+    onClick?: EventHandler<MouseEvent> | undefined;
+    onClickCapture?: EventHandler<MouseEvent> | undefined;
+    onContextMenu?: EventHandler<MouseEvent> | undefined;
+    onContextMenuCapture?: EventHandler<MouseEvent> | undefined;
+    onDoubleClick?: EventHandler<MouseEvent> | undefined;
+    onDoubleClickCapture?: EventHandler<MouseEvent> | undefined;
+    onDrag?: EventHandler<DragEvent> | undefined;
+    onDragCapture?: EventHandler<DragEvent> | undefined;
+    onDragEnd?: EventHandler<DragEvent> | undefined;
+    onDragEndCapture?: EventHandler<DragEvent> | undefined;
+    onDragEnter?: EventHandler<DragEvent> | undefined;
+    onDragEnterCapture?: EventHandler<DragEvent> | undefined;
+    onDragExit?: EventHandler<DragEvent> | undefined;
+    onDragExitCapture?: EventHandler<DragEvent> | undefined;
+    onDragLeave?: EventHandler<DragEvent> | undefined;
+    onDragLeaveCapture?: EventHandler<DragEvent> | undefined;
+    onDragOver?: EventHandler<DragEvent> | undefined;
+    onDragOverCapture?: EventHandler<DragEvent> | undefined;
+    onDragStart?: EventHandler<DragEvent> | undefined;
+    onDragStartCapture?: EventHandler<DragEvent> | undefined;
+    onDrop?: EventHandler<DragEvent> | undefined;
+    onDropCapture?: EventHandler<DragEvent> | undefined;
+    onMouseDown?: EventHandler<MouseEvent> | undefined;
+    onMouseDownCapture?: EventHandler<MouseEvent> | undefined;
+    onMouseEnter?: EventHandler<MouseEvent> | undefined;
+    onMouseLeave?: EventHandler<MouseEvent> | undefined;
+    onMouseMove?: EventHandler<MouseEvent> | undefined;
+    onMouseMoveCapture?: EventHandler<MouseEvent> | undefined;
+    onMouseOut?: EventHandler<MouseEvent> | undefined;
+    onMouseOutCapture?: EventHandler<MouseEvent> | undefined;
+    onMouseOver?: EventHandler<MouseEvent> | undefined;
+    onMouseOverCapture?: EventHandler<MouseEvent> | undefined;
+    onMouseUp?: EventHandler<MouseEvent> | undefined;
+    onMouseUpCapture?: EventHandler<MouseEvent> | undefined;
+    onSelect?: EventHandler | undefined;
+    onSelectCapture?: EventHandler | undefined;
+    onTouchCancel?: EventHandler<TouchEvent> | undefined;
+    onTouchCancelCapture?: EventHandler<TouchEvent> | undefined;
+    onTouchEnd?: EventHandler<TouchEvent> | undefined;
+    onTouchEndCapture?: EventHandler<TouchEvent> | undefined;
+    onTouchMove?: EventHandler<TouchEvent> | undefined;
+    onTouchMoveCapture?: EventHandler<TouchEvent> | undefined;
+    onTouchStart?: EventHandler<TouchEvent> | undefined;
+    onTouchStartCapture?: EventHandler<TouchEvent> | undefined;
+    onPointerDown?: EventHandler<PointerEvent> | undefined;
+    onPointerDownCapture?: EventHandler<PointerEvent> | undefined;
+    onPointerMove?: EventHandler<PointerEvent> | undefined;
+    onPointerMoveCapture?: EventHandler<PointerEvent> | undefined;
+    onPointerUp?: EventHandler<PointerEvent> | undefined;
+    onPointerUpCapture?: EventHandler<PointerEvent> | undefined;
+    onPointerCancel?: EventHandler<PointerEvent> | undefined;
+    onPointerCancelCapture?: EventHandler<PointerEvent> | undefined;
+    onPointerEnter?: EventHandler<PointerEvent> | undefined;
+    onPointerEnterCapture?: EventHandler<PointerEvent> | undefined;
+    onPointerLeave?: EventHandler<PointerEvent> | undefined;
+    onPointerLeaveCapture?: EventHandler<PointerEvent> | undefined;
+    onPointerOver?: EventHandler<PointerEvent> | undefined;
+    onPointerOverCapture?: EventHandler<PointerEvent> | undefined;
+    onPointerOut?: EventHandler<PointerEvent> | undefined;
+    onPointerOutCapture?: EventHandler<PointerEvent> | undefined;
+    onGotPointerCapture?: EventHandler<PointerEvent> | undefined;
+    onGotPointerCaptureCapture?: EventHandler<PointerEvent> | undefined;
+    onLostPointerCapture?: EventHandler<PointerEvent> | undefined;
+    onLostPointerCaptureCapture?: EventHandler<PointerEvent> | undefined;
+    onScroll?: EventHandler<UIEvent> | undefined;
+    onScrollCapture?: EventHandler<UIEvent> | undefined;
+    onWheel?: EventHandler<WheelEvent> | undefined;
+    onWheelCapture?: EventHandler<WheelEvent> | undefined;
+    onAnimationStart?: EventHandler<AnimationEvent> | undefined;
+    onAnimationStartCapture?: EventHandler<AnimationEvent> | undefined;
+    onAnimationEnd?: EventHandler<AnimationEvent> | undefined;
+    onAnimationEndCapture?: EventHandler<AnimationEvent> | undefined;
+    onAnimationIteration?: EventHandler<AnimationEvent> | undefined;
+    onAnimationIterationCapture?: EventHandler<AnimationEvent> | undefined;
+    onTransitionEnd?: EventHandler<TransitionEvent> | undefined;
+    onTransitionEndCapture?: EventHandler<TransitionEvent> | undefined;
+}
+export interface ReactiveAttributes<T> {
+    ref?: State<T | null>;
+    children?: VanNode;
+    key?: Key;
+}
+export interface HTMLAttributes<T> extends AriaAttributes, DOMAttributes, ReactiveAttributes<T> {
+    accessKey?: string | undefined;
+    autoFocus?: boolean | undefined;
+    className?: string | undefined;
+    contentEditable?: Booleanish | "inherit" | undefined;
+    contextMenu?: string | undefined;
+    dir?: string | undefined;
+    draggable?: Booleanish | undefined;
+    hidden?: boolean | undefined;
+    id?: string | undefined;
+    lang?: string | undefined;
+    nonce?: string | undefined;
+    placeholder?: string | undefined;
+    slot?: string | undefined;
+    spellCheck?: Booleanish | undefined;
+    style?: CSS.Properties | undefined;
+    tabIndex?: number | undefined;
+    title?: string | undefined;
+    translate?: "yes" | "no" | undefined;
+    radioGroup?: string | undefined;
+    role?: AriaRole | undefined;
+    about?: string | undefined;
+    content?: string | undefined;
+    datatype?: string | undefined;
+    inlist?: unknown;
+    prefix?: string | undefined;
+    property?: string | undefined;
+    rel?: string | undefined;
+    resource?: string | undefined;
+    rev?: string | undefined;
+    typeof?: string | undefined;
+    vocab?: string | undefined;
+    autoCapitalize?: string | undefined;
+    autoCorrect?: string | undefined;
+    autoSave?: string | undefined;
+    color?: string | undefined;
+    itemProp?: string | undefined;
+    itemScope?: boolean | undefined;
+    itemType?: string | undefined;
+    itemID?: string | undefined;
+    itemRef?: string | undefined;
+    results?: number | undefined;
+    security?: string | undefined;
+    unselectable?: "on" | "off" | undefined;
+    /**
+     * Hints at the type of data that might be entered by the user while editing the element or its contents
+     * @see https://html.spec.whatwg.org/multipage/interaction.html#input-modalities:-the-inputmode-attribute
+     */
+    inputMode?: "none" | "text" | "tel" | "url" | "email" | "numeric" | "decimal" | "search" | undefined;
+    /**
+     * Specify that a standard HTML element should behave like a defined custom built-in element
+     * @see https://html.spec.whatwg.org/multipage/custom-elements.html#attr-is
+     */
+    is?: string | undefined;
+}
+export interface SVGAttributes<T> extends AriaAttributes, DOMAttributes, ReactiveAttributes<T> {
+    className?: string | undefined;
+    color?: string | undefined;
+    height?: number | string | undefined;
+    id?: string | undefined;
+    lang?: string | undefined;
+    max?: number | string | undefined;
+    media?: string | undefined;
+    method?: string | undefined;
+    min?: number | string | undefined;
+    name?: string | undefined;
+    style?: CSS.Properties | undefined;
+    target?: string | undefined;
+    type?: string | undefined;
+    width?: number | string | undefined;
+    role?: AriaRole | undefined;
+    tabIndex?: number | undefined;
+    crossOrigin?: CrossOrigin;
+    accentHeight?: number | string | undefined;
+    accumulate?: "none" | "sum" | undefined;
+    additive?: "replace" | "sum" | undefined;
+    alignmentBaseline?: "auto" | "baseline" | "before-edge" | "text-before-edge" | "middle" | "central" | "after-edge" | "text-after-edge" | "ideographic" | "alphabetic" | "hanging" | "mathematical" | "inherit" | undefined;
+    allowReorder?: "no" | "yes" | undefined;
+    alphabetic?: number | string | undefined;
+    amplitude?: number | string | undefined;
+    arabicForm?: "initial" | "medial" | "terminal" | "isolated" | undefined;
+    ascent?: number | string | undefined;
+    attributeName?: string | undefined;
+    attributeType?: string | undefined;
+    autoReverse?: Booleanish | undefined;
+    azimuth?: number | string | undefined;
+    baseFrequency?: number | string | undefined;
+    baselineShift?: number | string | undefined;
+    baseProfile?: number | string | undefined;
+    bbox?: number | string | undefined;
+    begin?: number | string | undefined;
+    bias?: number | string | undefined;
+    by?: number | string | undefined;
+    calcMode?: number | string | undefined;
+    capHeight?: number | string | undefined;
+    clip?: number | string | undefined;
+    clipPath?: string | undefined;
+    clipPathUnits?: number | string | undefined;
+    clipRule?: number | string | undefined;
+    colorInterpolation?: number | string | undefined;
+    colorInterpolationFilters?: "auto" | "sRGB" | "linearRGB" | "inherit" | undefined;
+    colorProfile?: number | string | undefined;
+    colorRendering?: number | string | undefined;
+    contentScriptType?: number | string | undefined;
+    contentStyleType?: number | string | undefined;
+    cursor?: number | string | undefined;
+    cx?: number | string | undefined;
+    cy?: number | string | undefined;
+    d?: string | undefined;
+    decelerate?: number | string | undefined;
+    descent?: number | string | undefined;
+    diffuseConstant?: number | string | undefined;
+    direction?: number | string | undefined;
+    display?: number | string | undefined;
+    divisor?: number | string | undefined;
+    dominantBaseline?: number | string | undefined;
+    dur?: number | string | undefined;
+    dx?: number | string | undefined;
+    dy?: number | string | undefined;
+    edgeMode?: number | string | undefined;
+    elevation?: number | string | undefined;
+    enableBackground?: number | string | undefined;
+    end?: number | string | undefined;
+    exponent?: number | string | undefined;
+    externalResourcesRequired?: Booleanish | undefined;
+    fill?: string | undefined;
+    fillOpacity?: number | string | undefined;
+    fillRule?: "nonzero" | "evenodd" | "inherit" | undefined;
+    filter?: string | undefined;
+    filterRes?: number | string | undefined;
+    filterUnits?: number | string | undefined;
+    floodColor?: number | string | undefined;
+    floodOpacity?: number | string | undefined;
+    focusable?: Booleanish | "auto" | undefined;
+    fontFamily?: string | undefined;
+    fontSize?: number | string | undefined;
+    fontSizeAdjust?: number | string | undefined;
+    fontStretch?: number | string | undefined;
+    fontStyle?: number | string | undefined;
+    fontVariant?: number | string | undefined;
+    fontWeight?: number | string | undefined;
+    format?: number | string | undefined;
+    fr?: number | string | undefined;
+    from?: number | string | undefined;
+    fx?: number | string | undefined;
+    fy?: number | string | undefined;
+    g1?: number | string | undefined;
+    g2?: number | string | undefined;
+    glyphName?: number | string | undefined;
+    glyphOrientationHorizontal?: number | string | undefined;
+    glyphOrientationVertical?: number | string | undefined;
+    glyphRef?: number | string | undefined;
+    gradientTransform?: string | undefined;
+    gradientUnits?: string | undefined;
+    hanging?: number | string | undefined;
+    horizAdvX?: number | string | undefined;
+    horizOriginX?: number | string | undefined;
+    href?: string | undefined;
+    ideographic?: number | string | undefined;
+    imageRendering?: number | string | undefined;
+    in2?: number | string | undefined;
+    in?: string | undefined;
+    intercept?: number | string | undefined;
+    k1?: number | string | undefined;
+    k2?: number | string | undefined;
+    k3?: number | string | undefined;
+    k4?: number | string | undefined;
+    k?: number | string | undefined;
+    kernelMatrix?: number | string | undefined;
+    kernelUnitLength?: number | string | undefined;
+    kerning?: number | string | undefined;
+    keyPoints?: number | string | undefined;
+    keySplines?: number | string | undefined;
+    keyTimes?: number | string | undefined;
+    lengthAdjust?: number | string | undefined;
+    letterSpacing?: number | string | undefined;
+    lightingColor?: number | string | undefined;
+    limitingConeAngle?: number | string | undefined;
+    local?: number | string | undefined;
+    markerEnd?: string | undefined;
+    markerHeight?: number | string | undefined;
+    markerMid?: string | undefined;
+    markerStart?: string | undefined;
+    markerUnits?: number | string | undefined;
+    markerWidth?: number | string | undefined;
+    mask?: string | undefined;
+    maskContentUnits?: number | string | undefined;
+    maskUnits?: number | string | undefined;
+    mathematical?: number | string | undefined;
+    mode?: number | string | undefined;
+    numOctaves?: number | string | undefined;
+    offset?: number | string | undefined;
+    opacity?: number | string | undefined;
+    operator?: number | string | undefined;
+    order?: number | string | undefined;
+    orient?: number | string | undefined;
+    orientation?: number | string | undefined;
+    origin?: number | string | undefined;
+    overflow?: number | string | undefined;
+    overlinePosition?: number | string | undefined;
+    overlineThickness?: number | string | undefined;
+    paintOrder?: number | string | undefined;
+    panose1?: number | string | undefined;
+    path?: string | undefined;
+    pathLength?: number | string | undefined;
+    patternContentUnits?: string | undefined;
+    patternTransform?: number | string | undefined;
+    patternUnits?: string | undefined;
+    pointerEvents?: number | string | undefined;
+    points?: string | undefined;
+    pointsAtX?: number | string | undefined;
+    pointsAtY?: number | string | undefined;
+    pointsAtZ?: number | string | undefined;
+    preserveAlpha?: Booleanish | undefined;
+    preserveAspectRatio?: string | undefined;
+    primitiveUnits?: number | string | undefined;
+    r?: number | string | undefined;
+    radius?: number | string | undefined;
+    refX?: number | string | undefined;
+    refY?: number | string | undefined;
+    renderingIntent?: number | string | undefined;
+    repeatCount?: number | string | undefined;
+    repeatDur?: number | string | undefined;
+    requiredExtensions?: number | string | undefined;
+    requiredFeatures?: number | string | undefined;
+    restart?: number | string | undefined;
+    result?: string | undefined;
+    rotate?: number | string | undefined;
+    rx?: number | string | undefined;
+    ry?: number | string | undefined;
+    scale?: number | string | undefined;
+    seed?: number | string | undefined;
+    shapeRendering?: number | string | undefined;
+    slope?: number | string | undefined;
+    spacing?: number | string | undefined;
+    specularConstant?: number | string | undefined;
+    specularExponent?: number | string | undefined;
+    speed?: number | string | undefined;
+    spreadMethod?: string | undefined;
+    startOffset?: number | string | undefined;
+    stdDeviation?: number | string | undefined;
+    stemh?: number | string | undefined;
+    stemv?: number | string | undefined;
+    stitchTiles?: number | string | undefined;
+    stopColor?: string | undefined;
+    stopOpacity?: number | string | undefined;
+    strikethroughPosition?: number | string | undefined;
+    strikethroughThickness?: number | string | undefined;
+    string?: number | string | undefined;
+    stroke?: string | undefined;
+    strokeDasharray?: string | number | undefined;
+    strokeDashoffset?: string | number | undefined;
+    strokeLinecap?: "butt" | "round" | "square" | "inherit" | undefined;
+    strokeLinejoin?: "miter" | "round" | "bevel" | "inherit" | undefined;
+    strokeMiterlimit?: number | string | undefined;
+    strokeOpacity?: number | string | undefined;
+    strokeWidth?: number | string | undefined;
+    surfaceScale?: number | string | undefined;
+    systemLanguage?: number | string | undefined;
+    tableValues?: number | string | undefined;
+    targetX?: number | string | undefined;
+    targetY?: number | string | undefined;
+    textAnchor?: string | undefined;
+    textDecoration?: number | string | undefined;
+    textLength?: number | string | undefined;
+    textRendering?: number | string | undefined;
+    to?: number | string | undefined;
+    transform?: string | undefined;
+    u1?: number | string | undefined;
+    u2?: number | string | undefined;
+    underlinePosition?: number | string | undefined;
+    underlineThickness?: number | string | undefined;
+    unicode?: number | string | undefined;
+    unicodeBidi?: number | string | undefined;
+    unicodeRange?: number | string | undefined;
+    unitsPerEm?: number | string | undefined;
+    vAlphabetic?: number | string | undefined;
+    values?: string | undefined;
+    vectorEffect?: number | string | undefined;
+    version?: string | undefined;
+    vertAdvY?: number | string | undefined;
+    vertOriginX?: number | string | undefined;
+    vertOriginY?: number | string | undefined;
+    vHanging?: number | string | undefined;
+    vIdeographic?: number | string | undefined;
+    viewBox?: string | undefined;
+    viewTarget?: number | string | undefined;
+    visibility?: number | string | undefined;
+    vMathematical?: number | string | undefined;
+    widths?: number | string | undefined;
+    wordSpacing?: number | string | undefined;
+    writingMode?: number | string | undefined;
+    x1?: number | string | undefined;
+    x2?: number | string | undefined;
+    x?: number | string | undefined;
+    xChannelSelector?: string | undefined;
+    xHeight?: number | string | undefined;
+    xlinkActuate?: string | undefined;
+    xlinkArcrole?: string | undefined;
+    xlinkHref?: string | undefined;
+    xlinkRole?: string | undefined;
+    xlinkShow?: string | undefined;
+    xlinkTitle?: string | undefined;
+    xlinkType?: string | undefined;
+    xmlBase?: string | undefined;
+    xmlLang?: string | undefined;
+    xmlns?: string | undefined;
+    xmlnsXlink?: string | undefined;
+    xmlSpace?: string | undefined;
+    y1?: number | string | undefined;
+    y2?: number | string | undefined;
+    y?: number | string | undefined;
+    yChannelSelector?: string | undefined;
+    z?: number | string | undefined;
+    zoomAndPan?: string | undefined;
+}
+type HTMLAttributeAnchorTarget = "_self" | "_blank" | "_parent" | "_top" | (string & object);
+type HTMLAttributeReferrerPolicy = "" | "no-referrer" | "no-referrer-when-downgrade" | "origin" | "origin-when-cross-origin" | "same-origin" | "strict-origin" | "strict-origin-when-cross-origin" | "unsafe-url";
+export interface AnchorHTMLAttributes<T> extends HTMLAttributes<T> {
+    download?: unknown;
+    href?: string | undefined;
+    hrefLang?: string | undefined;
+    media?: string | undefined;
+    ping?: string | undefined;
+    target?: HTMLAttributeAnchorTarget | undefined;
+    type?: string | undefined;
+    referrerPolicy?: HTMLAttributeReferrerPolicy | undefined;
+}
+export interface AreaHTMLAttributes<T> extends HTMLAttributes<T> {
+    alt?: string | undefined;
+    coords?: string | undefined;
+    download?: unknown;
+    href?: string | undefined;
+    hrefLang?: string | undefined;
+    media?: string | undefined;
+    referrerPolicy?: HTMLAttributeReferrerPolicy | undefined;
+    shape?: string | undefined;
+    target?: string | undefined;
+}
+export interface MediaHTMLAttributes<T> extends HTMLAttributes<T> {
+    autoPlay?: boolean | undefined;
+    controls?: boolean | undefined;
+    controlsList?: string | undefined;
+    crossOrigin?: CrossOrigin;
+    loop?: boolean | undefined;
+    mediaGroup?: string | undefined;
+    muted?: boolean | undefined;
+    playsInline?: boolean | undefined;
+    preload?: string | undefined;
+    src?: string | undefined;
+}
+export interface AudioHTMLAttributes<T> extends MediaHTMLAttributes<T> {
+}
+export interface BaseHTMLAttributes<T> extends HTMLAttributes<T> {
+    href?: string | undefined;
+    target?: string | undefined;
+}
+export interface BlockquoteHTMLAttributes<T> extends HTMLAttributes<T> {
+    cite?: string | undefined;
+}
+export interface ButtonHTMLAttributes<T> extends HTMLAttributes<T> {
+    disabled?: boolean | undefined;
+    form?: string | undefined;
+    formAction?: string | undefined;
+    formEncType?: string | undefined;
+    formMethod?: string | undefined;
+    formNoValidate?: boolean | undefined;
+    formTarget?: string | undefined;
+    name?: string | undefined;
+    type?: "submit" | "reset" | "button" | undefined;
+    value?: string | ReadonlyArray<string> | number | undefined;
+}
+export interface CanvasHTMLAttributes<T> extends HTMLAttributes<T> {
+    height?: number | string | undefined;
+    width?: number | string | undefined;
+}
+export interface ColHTMLAttributes<T> extends HTMLAttributes<T> {
+    span?: number | undefined;
+    width?: number | string | undefined;
+}
+export interface ColgroupHTMLAttributes<T> extends HTMLAttributes<T> {
+    span?: number | undefined;
+}
+export interface DataHTMLAttributes<T> extends HTMLAttributes<T> {
+    value?: string | ReadonlyArray<string> | number | undefined;
+}
+export interface DetailsHTMLAttributes<T> extends HTMLAttributes<T> {
+    open?: boolean | undefined;
+    onToggle?: Event | undefined;
+}
+export interface DelHTMLAttributes<T> extends HTMLAttributes<T> {
+    cite?: string | undefined;
+    dateTime?: string | undefined;
+}
+export interface DialogHTMLAttributes<T> extends HTMLAttributes<T> {
+    onCancel?: Event | undefined;
+    onClose?: Event | undefined;
+    open?: boolean | undefined;
+}
+export interface EmbedHTMLAttributes<T> extends HTMLAttributes<T> {
+    height?: number | string | undefined;
+    src?: string | undefined;
+    type?: string | undefined;
+    width?: number | string | undefined;
+}
+export interface FieldsetHTMLAttributes<T> extends HTMLAttributes<T> {
+    disabled?: boolean | undefined;
+    form?: string | undefined;
+    name?: string | undefined;
+}
+export interface FormHTMLAttributes<T> extends HTMLAttributes<T> {
+    acceptCharset?: string | undefined;
+    action?: string | undefined;
+    autoComplete?: string | undefined;
+    encType?: string | undefined;
+    method?: string | undefined;
+    name?: string | undefined;
+    noValidate?: boolean | undefined;
+    target?: string | undefined;
+}
+export interface HtmlHTMLAttributes<T> extends HTMLAttributes<T> {
+    manifest?: string | undefined;
+}
+export interface IframeHTMLAttributes<T> extends HTMLAttributes<T> {
+    allow?: string | undefined;
+    allowFullScreen?: boolean | undefined;
+    allowTransparency?: boolean | undefined;
+    /** @deprecated */
+    frameBorder?: number | string | undefined;
+    height?: number | string | undefined;
+    loading?: "eager" | "lazy" | undefined;
+    /** @deprecated */
+    marginHeight?: number | undefined;
+    /** @deprecated */
+    marginWidth?: number | undefined;
+    name?: string | undefined;
+    referrerPolicy?: HTMLAttributeReferrerPolicy | undefined;
+    sandbox?: string | undefined;
+    /** @deprecated */
+    scrolling?: string | undefined;
+    seamless?: boolean | undefined;
+    src?: string | undefined;
+    srcDoc?: string | undefined;
+    width?: number | string | undefined;
+}
+export interface ImgHTMLAttributes<T> extends HTMLAttributes<T> {
+    alt?: string | undefined;
+    crossOrigin?: CrossOrigin;
+    decoding?: "async" | "auto" | "sync" | undefined;
+    height?: number | string | undefined;
+    loading?: "eager" | "lazy" | undefined;
+    referrerPolicy?: HTMLAttributeReferrerPolicy | undefined;
+    sizes?: string | undefined;
+    src?: string | undefined;
+    srcSet?: string | undefined;
+    useMap?: string | undefined;
+    width?: number | string | undefined;
+}
+export interface InsHTMLAttributes<T> extends HTMLAttributes<T> {
+    cite?: string | undefined;
+    dateTime?: string | undefined;
+}
+type HTMLInputTypeAttribute = "button" | "checkbox" | "color" | "date" | "datetime-local" | "email" | "file" | "hidden" | "image" | "month" | "number" | "password" | "radio" | "range" | "reset" | "search" | "submit" | "tel" | "text" | "time" | "url" | "week" | (string & object);
+export interface InputHTMLAttributes<T> extends HTMLAttributes<T> {
+    accept?: string | undefined;
+    alt?: string | undefined;
+    autoComplete?: string | undefined;
+    capture?: boolean | "user" | "environment" | undefined;
+    checked?: boolean | undefined;
+    disabled?: boolean | undefined;
+    enterKeyHint?: "enter" | "done" | "go" | "next" | "previous" | "search" | "send" | undefined;
+    form?: string | undefined;
+    formAction?: string | undefined;
+    formEncType?: string | undefined;
+    formMethod?: string | undefined;
+    formNoValidate?: boolean | undefined;
+    formTarget?: string | undefined;
+    height?: number | string | undefined;
+    list?: string | undefined;
+    max?: number | string | undefined;
+    maxLength?: number | undefined;
+    min?: number | string | undefined;
+    minLength?: number | undefined;
+    multiple?: boolean | undefined;
+    name?: string | undefined;
+    pattern?: string | undefined;
+    placeholder?: string | undefined;
+    readOnly?: boolean | undefined;
+    required?: boolean | undefined;
+    size?: number | undefined;
+    src?: string | undefined;
+    step?: number | string | undefined;
+    type?: HTMLInputTypeAttribute | undefined;
+    value?: string | ReadonlyArray<string> | number | undefined;
+    width?: number | string | undefined;
+    onChange?: EventHandler<Event> | undefined;
+}
+export interface KeygenHTMLAttributes<T> extends HTMLAttributes<T> {
+    challenge?: string | undefined;
+    disabled?: boolean | undefined;
+    form?: string | undefined;
+    keyType?: string | undefined;
+    keyParams?: string | undefined;
+    name?: string | undefined;
 }
-
-export type ComponentType<TProps = {}> = FunctionComponent<TProps>;
-export type FunctionChild<TProps> = (props: TProps) => ChildDom;
+export interface LabelHTMLAttributes<T> extends HTMLAttributes<T> {
+    form?: string | undefined;
+    htmlFor?: string | undefined;
+}
+export interface LiHTMLAttributes<T> extends HTMLAttributes<T> {
+    value?: string | ReadonlyArray<string> | number | undefined;
+}
+export interface LinkHTMLAttributes<T> extends HTMLAttributes<T> {
+    as?: string | undefined;
+    crossOrigin?: CrossOrigin;
+    fetchPriority?: "high" | "low" | "auto";
+    href?: string | undefined;
+    hrefLang?: string | undefined;
+    integrity?: string | undefined;
+    media?: string | undefined;
+    imageSrcSet?: string | undefined;
+    referrerPolicy?: HTMLAttributeReferrerPolicy | undefined;
+    sizes?: string | undefined;
+    type?: string | undefined;
+    charSet?: string | undefined;
+}
+export interface MapHTMLAttributes<T> extends HTMLAttributes<T> {
+    name?: string | undefined;
+}
+export interface MenuHTMLAttributes<T> extends HTMLAttributes<T> {
+    type?: string | undefined;
+}
+export interface MetaHTMLAttributes<T> extends HTMLAttributes<T> {
+    charSet?: string | undefined;
+    httpEquiv?: string | undefined;
+    name?: string | undefined;
+    media?: string | undefined;
+}
+export interface MeterHTMLAttributes<T> extends HTMLAttributes<T> {
+    form?: string | undefined;
+    high?: number | undefined;
+    low?: number | undefined;
+    max?: number | string | undefined;
+    min?: number | string | undefined;
+    optimum?: number | undefined;
+    value?: string | ReadonlyArray<string> | number | undefined;
+}
+export interface QuoteHTMLAttributes<T> extends HTMLAttributes<T> {
+    cite?: string | undefined;
+}
+export interface ObjectHTMLAttributes<T> extends HTMLAttributes<T> {
+    classID?: string | undefined;
+    data?: string | undefined;
+    form?: string | undefined;
+    height?: number | string | undefined;
+    name?: string | undefined;
+    type?: string | undefined;
+    useMap?: string | undefined;
+    width?: number | string | undefined;
+    wmode?: string | undefined;
+}
+export interface OlHTMLAttributes<T> extends HTMLAttributes<T> {
+    reversed?: boolean | undefined;
+    start?: number | undefined;
+    type?: "1" | "a" | "A" | "i" | "I" | undefined;
+}
+export interface OptgroupHTMLAttributes<T> extends HTMLAttributes<T> {
+    disabled?: boolean | undefined;
+    label?: string | undefined;
+}
+export interface OptionHTMLAttributes<T> extends HTMLAttributes<T> {
+    disabled?: boolean | undefined;
+    label?: string | undefined;
+    selected?: boolean | undefined;
+    value?: string | ReadonlyArray<string> | number | undefined;
+}
+export interface OutputHTMLAttributes<T> extends HTMLAttributes<T> {
+    form?: string | undefined;
+    htmlFor?: string | undefined;
+    name?: string | undefined;
+}
+export interface ParamHTMLAttributes<T> extends HTMLAttributes<T> {
+    name?: string | undefined;
+    value?: string | ReadonlyArray<string> | number | undefined;
+}
+export interface ProgressHTMLAttributes<T> extends HTMLAttributes<T> {
+    max?: number | string | undefined;
+    value?: string | ReadonlyArray<string> | number | undefined;
+}
+export interface SlotHTMLAttributes<T> extends HTMLAttributes<T> {
+    name?: string | undefined;
+}
+export interface ScriptHTMLAttributes<T> extends HTMLAttributes<T> {
+    async?: boolean | undefined;
+    /** @deprecated */
+    charSet?: string | undefined;
+    crossOrigin?: CrossOrigin;
+    defer?: boolean | undefined;
+    integrity?: string | undefined;
+    noModule?: boolean | undefined;
+    referrerPolicy?: HTMLAttributeReferrerPolicy | undefined;
+    src?: string | undefined;
+    type?: string | undefined;
+}
+export interface SelectHTMLAttributes<T> extends HTMLAttributes<T> {
+    autoComplete?: string | undefined;
+    disabled?: boolean | undefined;
+    form?: string | undefined;
+    multiple?: boolean | undefined;
+    name?: string | undefined;
+    required?: boolean | undefined;
+    size?: number | undefined;
+    value?: string | ReadonlyArray<string> | number | undefined;
+    onChange?: EventHandler<Event> | undefined;
+}
+export interface SourceHTMLAttributes<T> extends HTMLAttributes<T> {
+    height?: number | string | undefined;
+    media?: string | undefined;
+    sizes?: string | undefined;
+    src?: string | undefined;
+    srcSet?: string | undefined;
+    type?: string | undefined;
+    width?: number | string | undefined;
+}
+export interface StyleHTMLAttributes<T> extends HTMLAttributes<T> {
+    media?: string | undefined;
+    scoped?: boolean | undefined;
+    type?: string | undefined;
+}
+export interface TableHTMLAttributes<T> extends HTMLAttributes<T> {
+    cellPadding?: number | string | undefined;
+    cellSpacing?: number | string | undefined;
+    summary?: string | undefined;
+    width?: number | string | undefined;
+}
+export interface TextareaHTMLAttributes<T> extends HTMLAttributes<T> {
+    autoComplete?: string | undefined;
+    cols?: number | undefined;
+    dirName?: string | undefined;
+    disabled?: boolean | undefined;
+    form?: string | undefined;
+    maxLength?: number | undefined;
+    minLength?: number | undefined;
+    name?: string | undefined;
+    placeholder?: string | undefined;
+    readOnly?: boolean | undefined;
+    required?: boolean | undefined;
+    rows?: number | undefined;
+    value?: string | ReadonlyArray<string> | number | undefined;
+    wrap?: string | undefined;
+    onChange?: EventHandler<Event> | undefined;
+}
+export interface TdHTMLAttributes<T> extends HTMLAttributes<T> {
+    align?: "left" | "center" | "right" | "justify" | "char" | undefined;
+    colSpan?: number | undefined;
+    headers?: string | undefined;
+    rowSpan?: number | undefined;
+    scope?: string | undefined;
+    abbr?: string | undefined;
+    height?: number | string | undefined;
+    width?: number | string | undefined;
+    valign?: "top" | "middle" | "bottom" | "baseline" | undefined;
+}
+export interface ThHTMLAttributes<T> extends HTMLAttributes<T> {
+    align?: "left" | "center" | "right" | "justify" | "char" | undefined;
+    colSpan?: number | undefined;
+    headers?: string | undefined;
+    rowSpan?: number | undefined;
+    scope?: string | undefined;
+    abbr?: string | undefined;
+}
+export interface TimeHTMLAttributes<T> extends HTMLAttributes<T> {
+    dateTime?: string | undefined;
+}
+export interface TrackHTMLAttributes<T> extends HTMLAttributes<T> {
+    default?: boolean | undefined;
+    kind?: string | undefined;
+    label?: string | undefined;
+    src?: string | undefined;
+    srcLang?: string | undefined;
+}
+export interface VideoHTMLAttributes<T> extends MediaHTMLAttributes<T> {
+    height?: number | string | undefined;
+    playsInline?: boolean | undefined;
+    poster?: string | undefined;
+    width?: number | string | undefined;
+    disablePictureInPicture?: boolean | undefined;
+    disableRemotePlayback?: boolean | undefined;
+}
+export interface WebViewHTMLAttributes<T> extends HTMLAttributes<T> {
+    allowFullScreen?: boolean | undefined;
+    allowpopups?: boolean | undefined;
+    autosize?: boolean | undefined;
+    blinkfeatures?: string | undefined;
+    disableblinkfeatures?: string | undefined;
+    disableguestresize?: boolean | undefined;
+    disablewebsecurity?: boolean | undefined;
+    guestinstance?: string | undefined;
+    httpreferrer?: string | undefined;
+    nodeintegration?: boolean | undefined;
+    partition?: string | undefined;
+    plugins?: boolean | undefined;
+    preload?: string | undefined;
+    src?: string | undefined;
+    useragent?: string | undefined;
+    webpreferences?: string | undefined;
+}
+export interface InnerElement {
+    a: AnchorHTMLAttributes<HTMLAnchorElement>;
+    abbr: HTMLAttributes<HTMLElement>;
+    address: HTMLAttributes<HTMLElement>;
+    area: AreaHTMLAttributes<HTMLAreaElement>;
+    article: HTMLAttributes<HTMLElement>;
+    aside: HTMLAttributes<HTMLElement>;
+    audio: AudioHTMLAttributes<HTMLAudioElement>;
+    b: HTMLAttributes<HTMLElement>;
+    base: BaseHTMLAttributes<HTMLBaseElement>;
+    bdi: HTMLAttributes<HTMLElement>;
+    bdo: HTMLAttributes<HTMLElement>;
+    big: HTMLAttributes<HTMLElement>;
+    blockquote: BlockquoteHTMLAttributes<HTMLQuoteElement>;
+    body: HTMLAttributes<HTMLBodyElement>;
+    br: HTMLAttributes<HTMLBRElement>;
+    button: ButtonHTMLAttributes<HTMLButtonElement>;
+    canvas: CanvasHTMLAttributes<HTMLCanvasElement>;
+    caption: HTMLAttributes<HTMLElement>;
+    cite: HTMLAttributes<HTMLElement>;
+    code: HTMLAttributes<HTMLElement>;
+    col: ColHTMLAttributes<HTMLTableColElement>;
+    colgroup: ColgroupHTMLAttributes<HTMLTableColElement>;
+    data: DataHTMLAttributes<HTMLDataElement>;
+    datalist: HTMLAttributes<HTMLDataListElement>;
+    dd: HTMLAttributes<HTMLElement>;
+    del: DelHTMLAttributes<HTMLModElement>;
+    details: DetailsHTMLAttributes<HTMLDetailsElement>;
+    dfn: HTMLAttributes<HTMLElement>;
+    dialog: DialogHTMLAttributes<HTMLDialogElement>;
+    div: HTMLAttributes<HTMLDivElement>;
+    dl: HTMLAttributes<HTMLDListElement>;
+    dt: HTMLAttributes<HTMLElement>;
+    em: HTMLAttributes<HTMLElement>;
+    embed: EmbedHTMLAttributes<HTMLEmbedElement>;
+    fieldset: FieldsetHTMLAttributes<HTMLFieldSetElement>;
+    figcaption: HTMLAttributes<HTMLElement>;
+    figure: HTMLAttributes<HTMLElement>;
+    footer: HTMLAttributes<HTMLElement>;
+    form: FormHTMLAttributes<HTMLFormElement>;
+    h1: HTMLAttributes<HTMLHeadingElement>;
+    h2: HTMLAttributes<HTMLHeadingElement>;
+    h3: HTMLAttributes<HTMLHeadingElement>;
+    h4: HTMLAttributes<HTMLHeadingElement>;
+    h5: HTMLAttributes<HTMLHeadingElement>;
+    h6: HTMLAttributes<HTMLHeadingElement>;
+    head: HTMLAttributes<HTMLHeadElement>;
+    header: HTMLAttributes<HTMLElement>;
+    hgroup: HTMLAttributes<HTMLElement>;
+    hr: HTMLAttributes<HTMLHRElement>;
+    html: HtmlHTMLAttributes<HTMLHtmlElement>;
+    i: HTMLAttributes<HTMLElement>;
+    iframe: IframeHTMLAttributes<HTMLIFrameElement>;
+    img: ImgHTMLAttributes<HTMLImageElement>;
+    input: InputHTMLAttributes<HTMLInputElement>;
+    ins: InsHTMLAttributes<HTMLModElement>;
+    kbd: HTMLAttributes<HTMLElement>;
+    keygen: KeygenHTMLAttributes<HTMLElement>;
+    label: LabelHTMLAttributes<HTMLLabelElement>;
+    legend: HTMLAttributes<HTMLLegendElement>;
+    li: LiHTMLAttributes<HTMLLIElement>;
+    link: LinkHTMLAttributes<HTMLLinkElement>;
+    main: HTMLAttributes<HTMLElement>;
+    map: MapHTMLAttributes<HTMLMapElement>;
+    mark: HTMLAttributes<HTMLElement>;
+    menu: MenuHTMLAttributes<HTMLElement>;
+    menuitem: HTMLAttributes<HTMLElement>;
+    meta: MetaHTMLAttributes<HTMLMetaElement>;
+    meter: MeterHTMLAttributes<HTMLMeterElement>;
+    nav: HTMLAttributes<HTMLElement>;
+    noindex: HTMLAttributes<HTMLElement>;
+    noscript: HTMLAttributes<HTMLElement>;
+    object: ObjectHTMLAttributes<HTMLObjectElement>;
+    ol: OlHTMLAttributes<HTMLOListElement>;
+    optgroup: OptgroupHTMLAttributes<HTMLOptGroupElement>;
+    option: OptionHTMLAttributes<HTMLOptionElement>;
+    output: OutputHTMLAttributes<HTMLOutputElement>;
+    p: HTMLAttributes<HTMLParagraphElement>;
+    param: ParamHTMLAttributes<HTMLParamElement>;
+    picture: HTMLAttributes<HTMLElement>;
+    pre: HTMLAttributes<HTMLPreElement>;
+    progress: ProgressHTMLAttributes<HTMLProgressElement>;
+    q: QuoteHTMLAttributes<HTMLQuoteElement>;
+    rp: HTMLAttributes<HTMLElement>;
+    rt: HTMLAttributes<HTMLElement>;
+    ruby: HTMLAttributes<HTMLElement>;
+    s: HTMLAttributes<HTMLElement>;
+    samp: HTMLAttributes<HTMLElement>;
+    slot: SlotHTMLAttributes<HTMLSlotElement>;
+    script: ScriptHTMLAttributes<HTMLScriptElement>;
+    section: HTMLAttributes<HTMLElement>;
+    select: SelectHTMLAttributes<HTMLSelectElement>;
+    small: HTMLAttributes<HTMLElement>;
+    source: SourceHTMLAttributes<HTMLSourceElement>;
+    span: HTMLAttributes<HTMLSpanElement>;
+    strong: HTMLAttributes<HTMLElement>;
+    style: StyleHTMLAttributes<HTMLStyleElement>;
+    sub: HTMLAttributes<HTMLElement>;
+    summary: HTMLAttributes<HTMLElement>;
+    sup: HTMLAttributes<HTMLElement>;
+    table: TableHTMLAttributes<HTMLTableElement>;
+    template: HTMLAttributes<HTMLTemplateElement>;
+    tbody: HTMLAttributes<HTMLTableSectionElement>;
+    td: TdHTMLAttributes<HTMLTableDataCellElement>;
+    textarea: TextareaHTMLAttributes<HTMLTextAreaElement>;
+    tfoot: HTMLAttributes<HTMLTableSectionElement>;
+    th: ThHTMLAttributes<HTMLTableHeaderCellElement>;
+    thead: HTMLAttributes<HTMLTableSectionElement>;
+    time: TimeHTMLAttributes<HTMLTimeElement>;
+    title: HTMLAttributes<HTMLTitleElement>;
+    tr: HTMLAttributes<HTMLTableRowElement>;
+    track: TrackHTMLAttributes<HTMLTrackElement>;
+    u: HTMLAttributes<HTMLElement>;
+    ul: HTMLAttributes<HTMLUListElement>;
+    var: HTMLAttributes<HTMLElement>;
+    video: VideoHTMLAttributes<HTMLVideoElement>;
+    wbr: HTMLAttributes<HTMLElement>;
+    webview: WebViewHTMLAttributes<HTMLElement>;
+    svg: SVGAttributes<SVGSVGElement>;
+    animate: SVGAttributes<SVGElement>;
+    animateMotion: SVGAttributes<SVGElement>;
+    animateTransform: SVGAttributes<SVGElement>;
+    circle: SVGAttributes<SVGCircleElement>;
+    clipPath: SVGAttributes<SVGClipPathElement>;
+    defs: SVGAttributes<SVGDefsElement>;
+    desc: SVGAttributes<SVGDescElement>;
+    ellipse: SVGAttributes<SVGEllipseElement>;
+    feBlend: SVGAttributes<SVGFEBlendElement>;
+    feColorMatrix: SVGAttributes<SVGFEColorMatrixElement>;
+    feComponentTransfer: SVGAttributes<SVGFEComponentTransferElement>;
+    feComposite: SVGAttributes<SVGFECompositeElement>;
+    feConvolveMatrix: SVGAttributes<SVGFEConvolveMatrixElement>;
+    feDiffuseLighting: SVGAttributes<SVGFEDiffuseLightingElement>;
+    feDisplacementMap: SVGAttributes<SVGFEDisplacementMapElement>;
+    feDistantLight: SVGAttributes<SVGFEDistantLightElement>;
+    feDropShadow: SVGAttributes<SVGFEDropShadowElement>;
+    feFlood: SVGAttributes<SVGFEFloodElement>;
+    feFuncA: SVGAttributes<SVGFEFuncAElement>;
+    feFuncB: SVGAttributes<SVGFEFuncBElement>;
+    feFuncG: SVGAttributes<SVGFEFuncGElement>;
+    feFuncR: SVGAttributes<SVGFEFuncRElement>;
+    feGaussianBlur: SVGAttributes<SVGFEGaussianBlurElement>;
+    feImage: SVGAttributes<SVGFEImageElement>;
+    feMerge: SVGAttributes<SVGFEMergeElement>;
+    feMergeNode: SVGAttributes<SVGFEMergeNodeElement>;
+    feMorphology: SVGAttributes<SVGFEMorphologyElement>;
+    feOffset: SVGAttributes<SVGFEOffsetElement>;
+    fePointLight: SVGAttributes<SVGFEPointLightElement>;
+    feSpecularLighting: SVGAttributes<SVGFESpecularLightingElement>;
+    feSpotLight: SVGAttributes<SVGFESpotLightElement>;
+    feTile: SVGAttributes<SVGFETileElement>;
+    feTurbulence: SVGAttributes<SVGFETurbulenceElement>;
+    filter: SVGAttributes<SVGFilterElement>;
+    foreignObject: SVGAttributes<SVGForeignObjectElement>;
+    g: SVGAttributes<SVGGElement>;
+    image: SVGAttributes<SVGImageElement>;
+    line: SVGAttributes<SVGLineElement>;
+    linearGradient: SVGAttributes<SVGLinearGradientElement>;
+    marker: SVGAttributes<SVGMarkerElement>;
+    mask: SVGAttributes<SVGMaskElement>;
+    metadata: SVGAttributes<SVGMetadataElement>;
+    mpath: SVGAttributes<SVGElement>;
+    path: SVGAttributes<SVGPathElement>;
+    pattern: SVGAttributes<SVGPatternElement>;
+    polygon: SVGAttributes<SVGPolygonElement>;
+    polyline: SVGAttributes<SVGPolylineElement>;
+    radialGradient: SVGAttributes<SVGRadialGradientElement>;
+    rect: SVGAttributes<SVGRectElement>;
+    stop: SVGAttributes<SVGStopElement>;
+    switch: SVGAttributes<SVGSwitchElement>;
+    symbol: SVGAttributes<SVGSymbolElement>;
+    text: SVGAttributes<SVGTextElement>;
+    textPath: SVGAttributes<SVGTextPathElement>;
+    tspan: SVGAttributes<SVGTSpanElement>;
+    use: SVGAttributes<SVGUseElement>;
+    view: SVGAttributes<SVGViewElement>;
+}
+type OrVanAttribute<T extends DOMAttributes> = {
+    [K in keyof T]: T[K] | (() => T[K]) | State<T[K]>;
+};
+export type TagOption<K extends keyof InnerElement> = OrVanAttribute<Omit<InnerElement[K], "ref" | "children" | "key">> & Pick<InnerElement[K], "ref" | "children" | "key">;
+export {};