Explorar o código

Implement raw HTML elements (#627)

Kabir Goel %!s(int64=2) %!d(string=hai) anos
pai
achega
de0f80dba6

+ 1 - 0
pynecone/__init__.py

@@ -3,6 +3,7 @@
 Anything imported here will be available in the default Pynecone import as `pc.*`.
 """
 
+from . import el
 from .app import App, UploadFile
 from .base import Base
 from .components import *

+ 3 - 0
pynecone/el/__init__.py

@@ -0,0 +1,3 @@
+"""The el package exports raw HTML elements."""
+
+from .elements import *

+ 5 - 0
pynecone/el/constants/__init__.py

@@ -0,0 +1,5 @@
+"""Constants used to compile element classes."""
+
+from .html import *
+from .pynecone import *
+from .react import *

+ 343 - 0
pynecone/el/constants/html.py

@@ -0,0 +1,343 @@
+"""HTML constants."""
+
+# See https://html.spec.whatwg.org/#elements-3.
+ELEMENTS = {
+    "a",
+    "abbr",
+    "address",
+    "area",
+    "article",
+    "aside",
+    "audio",
+    "b",
+    "base",
+    "bdi",
+    "bdo",
+    "blockquote",
+    "body",
+    "br",
+    "button",
+    "canvas",
+    "caption",
+    "cite",
+    "code",
+    "col",
+    "colgroup",
+    "data",
+    "datalist",
+    "dd",
+    "del",
+    "details",
+    "dfn",
+    "dialog",
+    "div",
+    "dl",
+    "dt",
+    "em",
+    "embed",
+    "fieldset",
+    "figcaption",
+    "figure",
+    "footer",
+    "form",
+    "h1",
+    "h2",
+    "h3",
+    "h4",
+    "h5",
+    "h6",
+    "head",
+    "header",
+    "hr",
+    "html",
+    "i",
+    "iframe",
+    "img",
+    "input",
+    "ins",
+    "kbd",
+    "label",
+    "legend",
+    "li",
+    "link",
+    "main",
+    "map",
+    "mark",
+    "math",
+    "menu",
+    "meta",
+    "meter",
+    "nav",
+    "noscript",
+    "object",
+    "ol",
+    "optgroup",
+    "option",
+    "output",
+    "p",
+    "picture",
+    "portal",
+    "pre",
+    "progress",
+    "q",
+    "rp",
+    "rt",
+    "ruby",
+    "s",
+    "samp",
+    "script",
+    "section",
+    "select",
+    "slot",
+    "small",
+    "source",
+    "span",
+    "strong",
+    "style",
+    "sub",
+    "summary",
+    "sup",
+    "svg",
+    "table",
+    "tbody",
+    "td",
+    "template",
+    "textarea",
+    "tfoot",
+    "th",
+    "thead",
+    "time",
+    "title",
+    "tr",
+    "track",
+    "u",
+    "ul",
+    "var",
+    "video",
+    "wbr",
+}
+
+# See https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes.
+ATTR_TO_ELEMENTS = {
+    "accept": {"form", "input"},
+    "accept-charset": {"form"},
+    "accesskey": ELEMENTS,
+    "action": {"form"},
+    "align": {
+        "applet",
+        "caption",
+        "col",
+        "colgroup",
+        "hr",
+        "iframe",
+        "img",
+        "table",
+        "tbody",
+        "td",
+        "tfoot",
+        "th",
+        "thead",
+        "tr",
+    },
+    "allow": {"iframe"},
+    "alt": {"applet", "area", "img", "input"},
+    "async": {"script"},
+    "autocapitalize": ELEMENTS,
+    "autocomplete": {"form", "input", "select", "textarea"},
+    "autofocus": {"button", "input", "keygen", "select", "textarea"},
+    "autoplay": {"audio", "video"},
+    "background": {"body", "table", "td", "th"},
+    "bgcolor": {
+        "body",
+        "col",
+        "colgroup",
+        "marquee",
+        "table",
+        "tbody",
+        "tfoot",
+        "td",
+        "th",
+        "tr",
+    },
+    "border": {"img", "object", "table"},
+    "buffered": {"audio", "video"},
+    "capture": {"input"},
+    "challenge": {"keygen"},
+    "charset": {"meta", "script"},
+    "checked": {"input"},
+    "cite": {"blockquote", "del", "ins", "q"},
+    "class": ELEMENTS,
+    "code": {"applet"},
+    "codebase": {"applet"},
+    "color": {"font", "hr"},
+    "cols": {"textarea"},
+    "colspan": {"td", "th"},
+    "content": {"meta"},
+    "contenteditable": ELEMENTS,
+    "contextmenu": ELEMENTS,
+    "controls": {"audio", "video"},
+    "coords": {"area"},
+    "crossorigin": {"audio", "img", "link", "script", "video"},
+    "csp": {"iframe"},
+    "data": {"object"},
+    "datetime": {"del", "ins", "time"},
+    "decoding": {"img"},
+    "default": {"track"},
+    "defer": {"script"},
+    "dir": ELEMENTS,
+    "dirname": {"input", "textarea"},
+    "disabled": {
+        "button",
+        "fieldset",
+        "input",
+        "keygen",
+        "optgroup",
+        "option",
+        "select",
+        "textarea",
+    },
+    "download": {"a", "area"},
+    "draggable": ELEMENTS,
+    "enctype": {"form"},
+    "enterkeyhint": ELEMENTS,
+    "for": {"label", "output"},
+    "form": {
+        "button",
+        "fieldset",
+        "input",
+        "keygen",
+        "label",
+        "meter",
+        "object",
+        "output",
+        "progress",
+        "select",
+        "textarea",
+    },
+    "formaction": {"button", "input"},
+    "formenctype": {"button", "input"},
+    "formmethod": {"button", "input"},
+    "formnovalidate": {"button", "input"},
+    "formtarget": {"button", "input"},
+    "headers": {"td", "th"},
+    "height": {"canvas", "embed", "iframe", "img", "input", "object", "video"},
+    "hidden": ELEMENTS,
+    "high": {"meter"},
+    "href": {"a", "area", "base", "link"},
+    "hreflang": {"a", "area", "link"},
+    "http-equiv": {"meta"},
+    "icon": {"command"},
+    "id": ELEMENTS,
+    "integrity": {"link", "script"},
+    "intrinsicsize": {"img"},
+    "inputmode": ELEMENTS,
+    "ismap": {"img"},
+    "itemprop": ELEMENTS,
+    "keytype": {"keygen"},
+    "kind": {"track"},
+    "label": {"optgroup", "option", "track"},
+    "lang": ELEMENTS,
+    "language": {"script"},
+    "loading": {"img", "iframe"},
+    "list": {"input"},
+    "loop": {"audio", "bgsound", "marquee", "video"},
+    "low": {"meter"},
+    "manifest": {"html"},
+    "max": {"input", "meter", "progress"},
+    "maxlength": {"input", "textarea"},
+    "minlength": {"input", "textarea"},
+    "media": {"a", "area", "link", "source", "style"},
+    "method": {"form"},
+    "min": {"input", "meter"},
+    "multiple": {"input", "select"},
+    "muted": {"audio", "video"},
+    "name": {
+        "button",
+        "form",
+        "fieldset",
+        "iframe",
+        "input",
+        "keygen",
+        "object",
+        "output",
+        "select",
+        "textarea",
+        "map",
+        "meta",
+        "param",
+    },
+    "novalidate": {"form"},
+    "open": {"details", "dialog"},
+    "optimum": {"meter"},
+    "pattern": {"input"},
+    "ping": {"a", "area"},
+    "placeholder": {"input", "textarea"},
+    "playsinline": {"video"},
+    "poster": {"video"},
+    "preload": {"audio", "video"},
+    "readonly": {"input", "textarea"},
+    "referrerpolicy": {"a", "area", "iframe", "img", "link", "script"},
+    "rel": {"a", "area", "link"},
+    "required": {"input", "select", "textarea"},
+    "reversed": {"ol"},
+    "role": ELEMENTS,
+    "rows": {"textarea"},
+    "rowspan": {"td", "th"},
+    "sandbox": {"iframe"},
+    "scope": {"th"},
+    "scoped": {"style"},
+    "selected": {"option"},
+    "shape": {"a", "area"},
+    "size": {"input", "select"},
+    "sizes": {"link", "img", "source"},
+    "slot": ELEMENTS,
+    "span": {"col", "colgroup"},
+    "spellcheck": ELEMENTS,
+    "src": {
+        "audio",
+        "embed",
+        "iframe",
+        "img",
+        "input",
+        "script",
+        "source",
+        "track",
+        "video",
+    },
+    "srcdoc": {"iframe"},
+    "srclang": {"track"},
+    "srcset": {"img", "source"},
+    "start": {"ol"},
+    "step": {"input"},
+    "style": ELEMENTS,
+    "summary": {"table"},
+    "tabindex": ELEMENTS,
+    "target": {"a", "area", "base", "form"},
+    "title": ELEMENTS,
+    "translate": ELEMENTS,
+    "type": {
+        "button",
+        "input",
+        "embed",
+        "object",
+        "ol",
+        "script",
+        "source",
+        "style",
+        "menu",
+        "link",
+    },
+    "usemap": {"img", "input", "object"},
+    "value": {
+        "button",
+        "data",
+        "input",
+        "li",
+        "meter",
+        "option",
+        "progress",
+        "param",
+    },
+    "width": {"canvas", "embed", "iframe", "img", "input", "object", "video"},
+    "wrap": {"textarea"},
+}

+ 51 - 0
pynecone/el/constants/pynecone.py

@@ -0,0 +1,51 @@
+"""Constants used to compile element classes."""
+
+from collections import defaultdict
+
+from pynecone.utils import to_snake_case
+
+from .html import ATTR_TO_ELEMENTS
+from .react import POSSIBLE_STANDARD_NAMES
+
+# Maps HTML attributes that are invalid Python identifiers to their Pynecone
+# prop equivalents.
+ATTR_TO_PROP_OVERRIDES = {
+    "async": "async_",  # `async` is a reserved keyword in Python.
+}
+
+
+def attr_to_prop(attr_name: str) -> str:
+    """Convert an HTML attribute name to its Pynecone name.
+
+    This function first uses React's `possibleStandardNames` to convert the
+    HTML attribute name to its standard React name, then converts the standard
+    name to a Pynecone name.
+
+    Args:
+        attr_name: The HTML attribute name.
+
+    Returns:
+        A Pynecone prop name that maps to the HTML attribute.
+    """
+    if attr_name in ATTR_TO_PROP_OVERRIDES:
+        return ATTR_TO_PROP_OVERRIDES[attr_name]
+    return to_snake_case(POSSIBLE_STANDARD_NAMES.get(attr_name, attr_name))
+
+
+# Names of HTML attributes that are provided by Pynecone out of the box.
+PYNECONE_PROVIDED_ATTRS = {"class", "id", "style"}
+
+# ATTR_TO_ELEMENTS contains HTML attribute names, which might be invalid as
+# Pynecone prop names. PROP_TO_ELEMENTS contains the corresponding Pynecone
+# prop names. It omits props that are provided by Pynecone out of the box.
+PROP_TO_ELEMENTS = {
+    attr_to_prop(attr_name): elements
+    for attr_name, elements in ATTR_TO_ELEMENTS.items()
+    if attr_name not in PYNECONE_PROVIDED_ATTRS
+}
+
+# Invert PROP_TO_ELEMENTS to enable easier lookup.
+ELEMENT_TO_PROPS = defaultdict(list)
+for prop, elements in PROP_TO_ELEMENTS.items():
+    for el in elements:
+        ELEMENT_TO_PROPS[el].append(prop)

+ 501 - 0
pynecone/el/constants/react.py

@@ -0,0 +1,501 @@
+"""Constants used to compile element classes.
+
+Ported from React DOM's possibleStandardNames.js. See the following link for
+more information:
+
+https://github.com/facebook/react/blob/d1ad984db1591b131d16739a24dee4ba44886a09/packages/react-dom-bindings/src/shared/possibleStandardNames.js
+"""
+
+# Possible misspellings of React prop names, including incorrect casing.
+POSSIBLE_STANDARD_NAMES = {
+    # HTML
+    "accept": "accept",
+    "acceptcharset": "acceptCharset",
+    "accept-charset": "acceptCharset",
+    "accesskey": "accessKey",
+    "action": "action",
+    "allowfullscreen": "allowFullScreen",
+    "alt": "alt",
+    "as": "as",
+    "async": "async",
+    "autocapitalize": "autoCapitalize",
+    "autocomplete": "autoComplete",
+    "autocorrect": "autoCorrect",
+    "autofocus": "autoFocus",
+    "autoplay": "autoPlay",
+    "autosave": "autoSave",
+    "capture": "capture",
+    "cellpadding": "cellPadding",
+    "cellspacing": "cellSpacing",
+    "challenge": "challenge",
+    "charset": "charSet",
+    "checked": "checked",
+    "children": "children",
+    "cite": "cite",
+    "class": "className",
+    "classid": "classID",
+    "classname": "className",
+    "cols": "cols",
+    "colspan": "colSpan",
+    "content": "content",
+    "contenteditable": "contentEditable",
+    "contextmenu": "contextMenu",
+    "controls": "controls",
+    "controlslist": "controlsList",
+    "coords": "coords",
+    "crossorigin": "crossOrigin",
+    "dangerouslysetinnerhtml": "dangerouslySetInnerHTML",
+    "data": "data",
+    "datetime": "dateTime",
+    "default": "default",
+    "defaultchecked": "defaultChecked",
+    "defaultvalue": "defaultValue",
+    "defer": "defer",
+    "dir": "dir",
+    "disabled": "disabled",
+    "disablepictureinpicture": "disablePictureInPicture",
+    "disableremoteplayback": "disableRemotePlayback",
+    "download": "download",
+    "draggable": "draggable",
+    "enctype": "encType",
+    "enterkeyhint": "enterKeyHint",
+    "fetchpriority": "fetchPriority",
+    "for": "htmlFor",
+    "form": "form",
+    "formmethod": "formMethod",
+    "formaction": "formAction",
+    "formenctype": "formEncType",
+    "formnovalidate": "formNoValidate",
+    "formtarget": "formTarget",
+    "frameborder": "frameBorder",
+    "headers": "headers",
+    "height": "height",
+    "hidden": "hidden",
+    "high": "high",
+    "href": "href",
+    "hreflang": "hrefLang",
+    "htmlfor": "htmlFor",
+    "httpequiv": "httpEquiv",
+    "http-equiv": "httpEquiv",
+    "icon": "icon",
+    "id": "id",
+    "imagesizes": "imageSizes",
+    "imagesrcset": "imageSrcSet",
+    "innerhtml": "innerHTML",
+    "inputmode": "inputMode",
+    "integrity": "integrity",
+    "is": "is",
+    "itemid": "itemID",
+    "itemprop": "itemProp",
+    "itemref": "itemRef",
+    "itemscope": "itemScope",
+    "itemtype": "itemType",
+    "keyparams": "keyParams",
+    "keytype": "keyType",
+    "kind": "kind",
+    "label": "label",
+    "lang": "lang",
+    "list": "list",
+    "loop": "loop",
+    "low": "low",
+    "manifest": "manifest",
+    "marginwidth": "marginWidth",
+    "marginheight": "marginHeight",
+    "max": "max",
+    "maxlength": "maxLength",
+    "media": "media",
+    "mediagroup": "mediaGroup",
+    "method": "method",
+    "min": "min",
+    "minlength": "minLength",
+    "multiple": "multiple",
+    "muted": "muted",
+    "name": "name",
+    "nomodule": "noModule",
+    "nonce": "nonce",
+    "novalidate": "noValidate",
+    "open": "open",
+    "optimum": "optimum",
+    "pattern": "pattern",
+    "placeholder": "placeholder",
+    "playsinline": "playsInline",
+    "poster": "poster",
+    "preload": "preload",
+    "profile": "profile",
+    "radiogroup": "radioGroup",
+    "readonly": "readOnly",
+    "referrerpolicy": "referrerPolicy",
+    "rel": "rel",
+    "required": "required",
+    "reversed": "reversed",
+    "role": "role",
+    "rows": "rows",
+    "rowspan": "rowSpan",
+    "sandbox": "sandbox",
+    "scope": "scope",
+    "scoped": "scoped",
+    "scrolling": "scrolling",
+    "seamless": "seamless",
+    "selected": "selected",
+    "shape": "shape",
+    "size": "size",
+    "sizes": "sizes",
+    "span": "span",
+    "spellcheck": "spellCheck",
+    "src": "src",
+    "srcdoc": "srcDoc",
+    "srclang": "srcLang",
+    "srcset": "srcSet",
+    "start": "start",
+    "step": "step",
+    "style": "style",
+    "summary": "summary",
+    "tabindex": "tabIndex",
+    "target": "target",
+    "title": "title",
+    "type": "type",
+    "usemap": "useMap",
+    "value": "value",
+    "width": "width",
+    "wmode": "wmode",
+    "wrap": "wrap",
+    # SVG
+    "about": "about",
+    "accentheight": "accentHeight",
+    "accent-height": "accentHeight",
+    "accumulate": "accumulate",
+    "additive": "additive",
+    "alignmentbaseline": "alignmentBaseline",
+    "alignment-baseline": "alignmentBaseline",
+    "allowreorder": "allowReorder",
+    "alphabetic": "alphabetic",
+    "amplitude": "amplitude",
+    "arabicform": "arabicForm",
+    "arabic-form": "arabicForm",
+    "ascent": "ascent",
+    "attributename": "attributeName",
+    "attributetype": "attributeType",
+    "autoreverse": "autoReverse",
+    "azimuth": "azimuth",
+    "basefrequency": "baseFrequency",
+    "baselineshift": "baselineShift",
+    "baseline-shift": "baselineShift",
+    "baseprofile": "baseProfile",
+    "bbox": "bbox",
+    "begin": "begin",
+    "bias": "bias",
+    "by": "by",
+    "calcmode": "calcMode",
+    "capheight": "capHeight",
+    "cap-height": "capHeight",
+    "clip": "clip",
+    "clippath": "clipPath",
+    "clip-path": "clipPath",
+    "clippathunits": "clipPathUnits",
+    "cliprule": "clipRule",
+    "clip-rule": "clipRule",
+    "color": "color",
+    "colorinterpolation": "colorInterpolation",
+    "color-interpolation": "colorInterpolation",
+    "colorinterpolationfilters": "colorInterpolationFilters",
+    "color-interpolation-filters": "colorInterpolationFilters",
+    "colorprofile": "colorProfile",
+    "color-profile": "colorProfile",
+    "colorrendering": "colorRendering",
+    "color-rendering": "colorRendering",
+    "contentscripttype": "contentScriptType",
+    "contentstyletype": "contentStyleType",
+    "cursor": "cursor",
+    "cx": "cx",
+    "cy": "cy",
+    "d": "d",
+    "datatype": "datatype",
+    "decelerate": "decelerate",
+    "descent": "descent",
+    "diffuseconstant": "diffuseConstant",
+    "direction": "direction",
+    "display": "display",
+    "divisor": "divisor",
+    "dominantbaseline": "dominantBaseline",
+    "dominant-baseline": "dominantBaseline",
+    "dur": "dur",
+    "dx": "dx",
+    "dy": "dy",
+    "edgemode": "edgeMode",
+    "elevation": "elevation",
+    "enablebackground": "enableBackground",
+    "enable-background": "enableBackground",
+    "end": "end",
+    "exponent": "exponent",
+    "externalresourcesrequired": "externalResourcesRequired",
+    "fill": "fill",
+    "fillopacity": "fillOpacity",
+    "fill-opacity": "fillOpacity",
+    "fillrule": "fillRule",
+    "fill-rule": "fillRule",
+    "filter": "filter",
+    "filterres": "filterRes",
+    "filterunits": "filterUnits",
+    "floodopacity": "floodOpacity",
+    "flood-opacity": "floodOpacity",
+    "floodcolor": "floodColor",
+    "flood-color": "floodColor",
+    "focusable": "focusable",
+    "fontfamily": "fontFamily",
+    "font-family": "fontFamily",
+    "fontsize": "fontSize",
+    "font-size": "fontSize",
+    "fontsizeadjust": "fontSizeAdjust",
+    "font-size-adjust": "fontSizeAdjust",
+    "fontstretch": "fontStretch",
+    "font-stretch": "fontStretch",
+    "fontstyle": "fontStyle",
+    "font-style": "fontStyle",
+    "fontvariant": "fontVariant",
+    "font-variant": "fontVariant",
+    "fontweight": "fontWeight",
+    "font-weight": "fontWeight",
+    "format": "format",
+    "from": "from",
+    "fx": "fx",
+    "fy": "fy",
+    "g1": "g1",
+    "g2": "g2",
+    "glyphname": "glyphName",
+    "glyph-name": "glyphName",
+    "glyphorientationhorizontal": "glyphOrientationHorizontal",
+    "glyph-orientation-horizontal": "glyphOrientationHorizontal",
+    "glyphorientationvertical": "glyphOrientationVertical",
+    "glyph-orientation-vertical": "glyphOrientationVertical",
+    "glyphref": "glyphRef",
+    "gradienttransform": "gradientTransform",
+    "gradientunits": "gradientUnits",
+    "hanging": "hanging",
+    "horizadvx": "horizAdvX",
+    "horiz-adv-x": "horizAdvX",
+    "horizoriginx": "horizOriginX",
+    "horiz-origin-x": "horizOriginX",
+    "ideographic": "ideographic",
+    "imagerendering": "imageRendering",
+    "image-rendering": "imageRendering",
+    "in2": "in2",
+    "in": "in",
+    "inlist": "inlist",
+    "intercept": "intercept",
+    "k1": "k1",
+    "k2": "k2",
+    "k3": "k3",
+    "k4": "k4",
+    "k": "k",
+    "kernelmatrix": "kernelMatrix",
+    "kernelunitlength": "kernelUnitLength",
+    "kerning": "kerning",
+    "keypoints": "keyPoints",
+    "keysplines": "keySplines",
+    "keytimes": "keyTimes",
+    "lengthadjust": "lengthAdjust",
+    "letterspacing": "letterSpacing",
+    "letter-spacing": "letterSpacing",
+    "lightingcolor": "lightingColor",
+    "lighting-color": "lightingColor",
+    "limitingconeangle": "limitingConeAngle",
+    "local": "local",
+    "markerend": "markerEnd",
+    "marker-end": "markerEnd",
+    "markerheight": "markerHeight",
+    "markermid": "markerMid",
+    "marker-mid": "markerMid",
+    "markerstart": "markerStart",
+    "marker-start": "markerStart",
+    "markerunits": "markerUnits",
+    "markerwidth": "markerWidth",
+    "mask": "mask",
+    "maskcontentunits": "maskContentUnits",
+    "maskunits": "maskUnits",
+    "mathematical": "mathematical",
+    "mode": "mode",
+    "numoctaves": "numOctaves",
+    "offset": "offset",
+    "opacity": "opacity",
+    "operator": "operator",
+    "order": "order",
+    "orient": "orient",
+    "orientation": "orientation",
+    "origin": "origin",
+    "overflow": "overflow",
+    "overlineposition": "overlinePosition",
+    "overline-position": "overlinePosition",
+    "overlinethickness": "overlineThickness",
+    "overline-thickness": "overlineThickness",
+    "paintorder": "paintOrder",
+    "paint-order": "paintOrder",
+    "panose1": "panose1",
+    "panose-1": "panose1",
+    "pathlength": "pathLength",
+    "patterncontentunits": "patternContentUnits",
+    "patterntransform": "patternTransform",
+    "patternunits": "patternUnits",
+    "pointerevents": "pointerEvents",
+    "pointer-events": "pointerEvents",
+    "points": "points",
+    "pointsatx": "pointsAtX",
+    "pointsaty": "pointsAtY",
+    "pointsatz": "pointsAtZ",
+    "prefix": "prefix",
+    "preservealpha": "preserveAlpha",
+    "preserveaspectratio": "preserveAspectRatio",
+    "primitiveunits": "primitiveUnits",
+    "property": "property",
+    "r": "r",
+    "radius": "radius",
+    "refx": "refX",
+    "refy": "refY",
+    "renderingintent": "renderingIntent",
+    "rendering-intent": "renderingIntent",
+    "repeatcount": "repeatCount",
+    "repeatdur": "repeatDur",
+    "requiredextensions": "requiredExtensions",
+    "requiredfeatures": "requiredFeatures",
+    "resource": "resource",
+    "restart": "restart",
+    "result": "result",
+    "results": "results",
+    "rotate": "rotate",
+    "rx": "rx",
+    "ry": "ry",
+    "scale": "scale",
+    "security": "security",
+    "seed": "seed",
+    "shaperendering": "shapeRendering",
+    "shape-rendering": "shapeRendering",
+    "slope": "slope",
+    "spacing": "spacing",
+    "specularconstant": "specularConstant",
+    "specularexponent": "specularExponent",
+    "speed": "speed",
+    "spreadmethod": "spreadMethod",
+    "startoffset": "startOffset",
+    "stddeviation": "stdDeviation",
+    "stemh": "stemh",
+    "stemv": "stemv",
+    "stitchtiles": "stitchTiles",
+    "stopcolor": "stopColor",
+    "stop-color": "stopColor",
+    "stopopacity": "stopOpacity",
+    "stop-opacity": "stopOpacity",
+    "strikethroughposition": "strikethroughPosition",
+    "strikethrough-position": "strikethroughPosition",
+    "strikethroughthickness": "strikethroughThickness",
+    "strikethrough-thickness": "strikethroughThickness",
+    "string": "string",
+    "stroke": "stroke",
+    "strokedasharray": "strokeDasharray",
+    "stroke-dasharray": "strokeDasharray",
+    "strokedashoffset": "strokeDashoffset",
+    "stroke-dashoffset": "strokeDashoffset",
+    "strokelinecap": "strokeLinecap",
+    "stroke-linecap": "strokeLinecap",
+    "strokelinejoin": "strokeLinejoin",
+    "stroke-linejoin": "strokeLinejoin",
+    "strokemiterlimit": "strokeMiterlimit",
+    "stroke-miterlimit": "strokeMiterlimit",
+    "strokewidth": "strokeWidth",
+    "stroke-width": "strokeWidth",
+    "strokeopacity": "strokeOpacity",
+    "stroke-opacity": "strokeOpacity",
+    "suppresscontenteditablewarning": "suppressContentEditableWarning",
+    "suppresshydrationwarning": "suppressHydrationWarning",
+    "surfacescale": "surfaceScale",
+    "systemlanguage": "systemLanguage",
+    "tablevalues": "tableValues",
+    "targetx": "targetX",
+    "targety": "targetY",
+    "textanchor": "textAnchor",
+    "text-anchor": "textAnchor",
+    "textdecoration": "textDecoration",
+    "text-decoration": "textDecoration",
+    "textlength": "textLength",
+    "textrendering": "textRendering",
+    "text-rendering": "textRendering",
+    "to": "to",
+    "transform": "transform",
+    "transformorigin": "transformOrigin",
+    "transform-origin": "transformOrigin",
+    "typeof": "typeof",
+    "u1": "u1",
+    "u2": "u2",
+    "underlineposition": "underlinePosition",
+    "underline-position": "underlinePosition",
+    "underlinethickness": "underlineThickness",
+    "underline-thickness": "underlineThickness",
+    "unicode": "unicode",
+    "unicodebidi": "unicodeBidi",
+    "unicode-bidi": "unicodeBidi",
+    "unicoderange": "unicodeRange",
+    "unicode-range": "unicodeRange",
+    "unitsperem": "unitsPerEm",
+    "units-per-em": "unitsPerEm",
+    "unselectable": "unselectable",
+    "valphabetic": "vAlphabetic",
+    "v-alphabetic": "vAlphabetic",
+    "values": "values",
+    "vectoreffect": "vectorEffect",
+    "vector-effect": "vectorEffect",
+    "version": "version",
+    "vertadvy": "vertAdvY",
+    "vert-adv-y": "vertAdvY",
+    "vertoriginx": "vertOriginX",
+    "vert-origin-x": "vertOriginX",
+    "vertoriginy": "vertOriginY",
+    "vert-origin-y": "vertOriginY",
+    "vhanging": "vHanging",
+    "v-hanging": "vHanging",
+    "videographic": "vIdeographic",
+    "v-ideographic": "vIdeographic",
+    "viewbox": "viewBox",
+    "viewtarget": "viewTarget",
+    "visibility": "visibility",
+    "vmathematical": "vMathematical",
+    "v-mathematical": "vMathematical",
+    "vocab": "vocab",
+    "widths": "widths",
+    "wordspacing": "wordSpacing",
+    "word-spacing": "wordSpacing",
+    "writingmode": "writingMode",
+    "writing-mode": "writingMode",
+    "x1": "x1",
+    "x2": "x2",
+    "x": "x",
+    "xchannelselector": "xChannelSelector",
+    "xheight": "xHeight",
+    "x-height": "xHeight",
+    "xlinkactuate": "xlinkActuate",
+    "xlink:actuate": "xlinkActuate",
+    "xlinkarcrole": "xlinkArcrole",
+    "xlink:arcrole": "xlinkArcrole",
+    "xlinkhref": "xlinkHref",
+    "xlink:href": "xlinkHref",
+    "xlinkrole": "xlinkRole",
+    "xlink:role": "xlinkRole",
+    "xlinkshow": "xlinkShow",
+    "xlink:show": "xlinkShow",
+    "xlinktitle": "xlinkTitle",
+    "xlink:title": "xlinkTitle",
+    "xlinktype": "xlinkType",
+    "xlink:type": "xlinkType",
+    "xmlbase": "xmlBase",
+    "xml:base": "xmlBase",
+    "xmllang": "xmlLang",
+    "xml:lang": "xmlLang",
+    "xmlns": "xmlns",
+    "xml:space": "xmlSpace",
+    "xmlnsxlink": "xmlnsXlink",
+    "xmlns:xlink": "xmlnsXlink",
+    "xmlspace": "xmlSpace",
+    "y1": "y1",
+    "y2": "y2",
+    "y": "y",
+    "ychannelselector": "yChannelSelector",
+    "z": "z",
+    "zoomandpan": "zoomAndPan",
+}

+ 45 - 0
pynecone/el/element.py

@@ -0,0 +1,45 @@
+"""Base class definition for raw HTML elements."""
+
+from pynecone import utils
+from pynecone.components.component import Component
+
+
+class Element(Component):
+    """The base class for all raw HTML elements.
+
+    The key difference between `Element` and `Component` is that elements do not
+    use Chakra's `sx` prop, instead passing styles directly to the React style
+    prop.
+    """
+
+    def render(self) -> str:
+        """Render the element.
+
+        Returns:
+            The code to render the element.
+        """
+        tag = self._render()
+        return str(
+            tag.add_props(
+                **self.event_triggers,
+                key=self.key,
+                id=self.id,
+                style=self.style,
+                class_name=self.class_name,
+            ).set(
+                contents=utils.join(
+                    [str(tag.contents)] + [child.render() for child in self.children]
+                ).strip(),
+            )
+        )
+
+    def __eq__(self, other):
+        """Two elements are equal if they have the same tag.
+
+        Args:
+            other: The other element.
+
+        Returns:
+            True if the elements have the same tag, False otherwise.
+        """
+        return isinstance(other, Element) and self.tag == other.tag

+ 3325 - 0
pynecone/el/elements/__init__.py

@@ -0,0 +1,3325 @@
+"""Element classes. This is an auto-generated file. Do not edit. See ../generate.py."""
+from typing import Union
+
+from pynecone.el.element import Element
+from pynecone.var import Var as PCVar
+
+
+class A(Element):  # noqa: E742
+    """Display the a element."""
+
+    tag = "a"
+
+    access_key: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    download: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    href: PCVar[Union[str, int, bool]]
+    href_lang: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    media: PCVar[Union[str, int, bool]]
+    ping: PCVar[Union[str, int, bool]]
+    referrer_policy: PCVar[Union[str, int, bool]]
+    rel: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    shape: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    target: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+
+
+a = A.create
+
+
+class Abbr(Element):  # noqa: E742
+    """Display the abbr element."""
+
+    tag = "abbr"
+
+    access_key: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+
+
+abbr = Abbr.create
+
+
+class Address(Element):  # noqa: E742
+    """Display the address element."""
+
+    tag = "address"
+
+    access_key: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+
+
+address = Address.create
+
+
+class Area(Element):  # noqa: E742
+    """Display the area element."""
+
+    tag = "area"
+
+    access_key: PCVar[Union[str, int, bool]]
+    alt: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    coords: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    download: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    href: PCVar[Union[str, int, bool]]
+    href_lang: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    media: PCVar[Union[str, int, bool]]
+    ping: PCVar[Union[str, int, bool]]
+    referrer_policy: PCVar[Union[str, int, bool]]
+    rel: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    shape: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    target: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+
+
+area = Area.create
+
+
+class Article(Element):  # noqa: E742
+    """Display the article element."""
+
+    tag = "article"
+
+    access_key: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+
+
+article = Article.create
+
+
+class Aside(Element):  # noqa: E742
+    """Display the aside element."""
+
+    tag = "aside"
+
+    access_key: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+
+
+aside = Aside.create
+
+
+class Audio(Element):  # noqa: E742
+    """Display the audio element."""
+
+    tag = "audio"
+
+    access_key: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    auto_play: PCVar[Union[str, int, bool]]
+    buffered: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    controls: PCVar[Union[str, int, bool]]
+    cross_origin: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    loop: PCVar[Union[str, int, bool]]
+    muted: PCVar[Union[str, int, bool]]
+    preload: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    src: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+
+
+audio = Audio.create
+
+
+class B(Element):  # noqa: E742
+    """Display the b element."""
+
+    tag = "b"
+
+    access_key: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+
+
+b = B.create
+
+
+class Base(Element):  # noqa: E742
+    """Display the base element."""
+
+    tag = "base"
+
+    access_key: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    href: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    target: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+
+
+base = Base.create
+
+
+class Bdi(Element):  # noqa: E742
+    """Display the bdi element."""
+
+    tag = "bdi"
+
+    access_key: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+
+
+bdi = Bdi.create
+
+
+class Bdo(Element):  # noqa: E742
+    """Display the bdo element."""
+
+    tag = "bdo"
+
+    access_key: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+
+
+bdo = Bdo.create
+
+
+class Blockquote(Element):  # noqa: E742
+    """Display the blockquote element."""
+
+    tag = "blockquote"
+
+    access_key: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    cite: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+
+
+blockquote = Blockquote.create
+
+
+class Body(Element):  # noqa: E742
+    """Display the body element."""
+
+    tag = "body"
+
+    access_key: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    background: PCVar[Union[str, int, bool]]
+    bgcolor: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+
+
+body = Body.create
+
+
+class Br(Element):  # noqa: E742
+    """Display the br element."""
+
+    tag = "br"
+
+    access_key: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+
+
+br = Br.create
+
+
+class Button(Element):  # noqa: E742
+    """Display the button element."""
+
+    tag = "button"
+
+    access_key: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    auto_focus: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    disabled: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    form: PCVar[Union[str, int, bool]]
+    form_action: PCVar[Union[str, int, bool]]
+    form_enc_type: PCVar[Union[str, int, bool]]
+    form_method: PCVar[Union[str, int, bool]]
+    form_no_validate: PCVar[Union[str, int, bool]]
+    form_target: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    name: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+    type: PCVar[Union[str, int, bool]]
+    value: PCVar[Union[str, int, bool]]
+
+
+button = Button.create
+
+
+class Canvas(Element):  # noqa: E742
+    """Display the canvas element."""
+
+    tag = "canvas"
+
+    access_key: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    height: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+    width: PCVar[Union[str, int, bool]]
+
+
+canvas = Canvas.create
+
+
+class Caption(Element):  # noqa: E742
+    """Display the caption element."""
+
+    tag = "caption"
+
+    access_key: PCVar[Union[str, int, bool]]
+    align: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+
+
+caption = Caption.create
+
+
+class Cite(Element):  # noqa: E742
+    """Display the cite element."""
+
+    tag = "cite"
+
+    access_key: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+
+
+cite = Cite.create
+
+
+class Code(Element):  # noqa: E742
+    """Display the code element."""
+
+    tag = "code"
+
+    access_key: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+
+
+code = Code.create
+
+
+class Col(Element):  # noqa: E742
+    """Display the col element."""
+
+    tag = "col"
+
+    access_key: PCVar[Union[str, int, bool]]
+    align: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    bgcolor: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    span: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+
+
+col = Col.create
+
+
+class Colgroup(Element):  # noqa: E742
+    """Display the colgroup element."""
+
+    tag = "colgroup"
+
+    access_key: PCVar[Union[str, int, bool]]
+    align: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    bgcolor: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    span: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+
+
+colgroup = Colgroup.create
+
+
+class Data(Element):  # noqa: E742
+    """Display the data element."""
+
+    tag = "data"
+
+    access_key: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+    value: PCVar[Union[str, int, bool]]
+
+
+data = Data.create
+
+
+class Datalist(Element):  # noqa: E742
+    """Display the datalist element."""
+
+    tag = "datalist"
+
+    access_key: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+
+
+datalist = Datalist.create
+
+
+class Dd(Element):  # noqa: E742
+    """Display the dd element."""
+
+    tag = "dd"
+
+    access_key: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+
+
+dd = Dd.create
+
+
+class Del(Element):  # noqa: E742
+    """Display the del element."""
+
+    tag = "del"
+
+    access_key: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    cite: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    date_time: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+
+
+del_ = Del.create
+
+
+class Details(Element):  # noqa: E742
+    """Display the details element."""
+
+    tag = "details"
+
+    access_key: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    open: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+
+
+details = Details.create
+
+
+class Dfn(Element):  # noqa: E742
+    """Display the dfn element."""
+
+    tag = "dfn"
+
+    access_key: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+
+
+dfn = Dfn.create
+
+
+class Dialog(Element):  # noqa: E742
+    """Display the dialog element."""
+
+    tag = "dialog"
+
+    access_key: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    open: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+
+
+dialog = Dialog.create
+
+
+class Div(Element):  # noqa: E742
+    """Display the div element."""
+
+    tag = "div"
+
+    access_key: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+
+
+div = Div.create
+
+
+class Dl(Element):  # noqa: E742
+    """Display the dl element."""
+
+    tag = "dl"
+
+    access_key: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+
+
+dl = Dl.create
+
+
+class Dt(Element):  # noqa: E742
+    """Display the dt element."""
+
+    tag = "dt"
+
+    access_key: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+
+
+dt = Dt.create
+
+
+class Em(Element):  # noqa: E742
+    """Display the em element."""
+
+    tag = "em"
+
+    access_key: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+
+
+em = Em.create
+
+
+class Embed(Element):  # noqa: E742
+    """Display the embed element."""
+
+    tag = "embed"
+
+    access_key: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    height: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    src: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+    type: PCVar[Union[str, int, bool]]
+    width: PCVar[Union[str, int, bool]]
+
+
+embed = Embed.create
+
+
+class Fieldset(Element):  # noqa: E742
+    """Display the fieldset element."""
+
+    tag = "fieldset"
+
+    access_key: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    disabled: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    form: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    name: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+
+
+fieldset = Fieldset.create
+
+
+class Figcaption(Element):  # noqa: E742
+    """Display the figcaption element."""
+
+    tag = "figcaption"
+
+    access_key: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+
+
+figcaption = Figcaption.create
+
+
+class Figure(Element):  # noqa: E742
+    """Display the figure element."""
+
+    tag = "figure"
+
+    access_key: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+
+
+figure = Figure.create
+
+
+class Footer(Element):  # noqa: E742
+    """Display the footer element."""
+
+    tag = "footer"
+
+    access_key: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+
+
+footer = Footer.create
+
+
+class Form(Element):  # noqa: E742
+    """Display the form element."""
+
+    tag = "form"
+
+    accept: PCVar[Union[str, int, bool]]
+    accept_charset: PCVar[Union[str, int, bool]]
+    access_key: PCVar[Union[str, int, bool]]
+    action: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    auto_complete: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enc_type: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    method: PCVar[Union[str, int, bool]]
+    name: PCVar[Union[str, int, bool]]
+    no_validate: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    target: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+
+
+form = Form.create
+
+
+class H1(Element):  # noqa: E742
+    """Display the h1 element."""
+
+    tag = "h1"
+
+    access_key: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+
+
+h1 = H1.create
+
+
+class H2(Element):  # noqa: E742
+    """Display the h2 element."""
+
+    tag = "h2"
+
+    access_key: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+
+
+h2 = H2.create
+
+
+class H3(Element):  # noqa: E742
+    """Display the h3 element."""
+
+    tag = "h3"
+
+    access_key: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+
+
+h3 = H3.create
+
+
+class H4(Element):  # noqa: E742
+    """Display the h4 element."""
+
+    tag = "h4"
+
+    access_key: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+
+
+h4 = H4.create
+
+
+class H5(Element):  # noqa: E742
+    """Display the h5 element."""
+
+    tag = "h5"
+
+    access_key: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+
+
+h5 = H5.create
+
+
+class H6(Element):  # noqa: E742
+    """Display the h6 element."""
+
+    tag = "h6"
+
+    access_key: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+
+
+h6 = H6.create
+
+
+class Head(Element):  # noqa: E742
+    """Display the head element."""
+
+    tag = "head"
+
+    access_key: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+
+
+head = Head.create
+
+
+class Header(Element):  # noqa: E742
+    """Display the header element."""
+
+    tag = "header"
+
+    access_key: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+
+
+header = Header.create
+
+
+class Hr(Element):  # noqa: E742
+    """Display the hr element."""
+
+    tag = "hr"
+
+    access_key: PCVar[Union[str, int, bool]]
+    align: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    color: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+
+
+hr = Hr.create
+
+
+class Html(Element):  # noqa: E742
+    """Display the html element."""
+
+    tag = "html"
+
+    access_key: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    manifest: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+
+
+html = Html.create
+
+
+class I(Element):  # noqa: E742
+    """Display the i element."""
+
+    tag = "i"
+
+    access_key: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+
+
+i = I.create
+
+
+class Iframe(Element):  # noqa: E742
+    """Display the iframe element."""
+
+    tag = "iframe"
+
+    access_key: PCVar[Union[str, int, bool]]
+    align: PCVar[Union[str, int, bool]]
+    allow: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    csp: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    height: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    loading: PCVar[Union[str, int, bool]]
+    name: PCVar[Union[str, int, bool]]
+    referrer_policy: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    sandbox: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    src: PCVar[Union[str, int, bool]]
+    src_doc: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+    width: PCVar[Union[str, int, bool]]
+
+
+iframe = Iframe.create
+
+
+class Img(Element):  # noqa: E742
+    """Display the img element."""
+
+    tag = "img"
+
+    access_key: PCVar[Union[str, int, bool]]
+    align: PCVar[Union[str, int, bool]]
+    alt: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    border: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    cross_origin: PCVar[Union[str, int, bool]]
+    decoding: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    height: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    intrinsicsize: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    ismap: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    loading: PCVar[Union[str, int, bool]]
+    referrer_policy: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    sizes: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    src: PCVar[Union[str, int, bool]]
+    src_set: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+    use_map: PCVar[Union[str, int, bool]]
+    width: PCVar[Union[str, int, bool]]
+
+
+img = Img.create
+
+
+class Input(Element):  # noqa: E742
+    """Display the input element."""
+
+    tag = "input"
+
+    accept: PCVar[Union[str, int, bool]]
+    access_key: PCVar[Union[str, int, bool]]
+    alt: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    auto_complete: PCVar[Union[str, int, bool]]
+    auto_focus: PCVar[Union[str, int, bool]]
+    capture: PCVar[Union[str, int, bool]]
+    checked: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    dirname: PCVar[Union[str, int, bool]]
+    disabled: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    form: PCVar[Union[str, int, bool]]
+    form_action: PCVar[Union[str, int, bool]]
+    form_enc_type: PCVar[Union[str, int, bool]]
+    form_method: PCVar[Union[str, int, bool]]
+    form_no_validate: PCVar[Union[str, int, bool]]
+    form_target: PCVar[Union[str, int, bool]]
+    height: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    list: PCVar[Union[str, int, bool]]
+    max: PCVar[Union[str, int, bool]]
+    max_length: PCVar[Union[str, int, bool]]
+    min_length: PCVar[Union[str, int, bool]]
+    min: PCVar[Union[str, int, bool]]
+    multiple: PCVar[Union[str, int, bool]]
+    name: PCVar[Union[str, int, bool]]
+    pattern: PCVar[Union[str, int, bool]]
+    placeholder: PCVar[Union[str, int, bool]]
+    read_only: PCVar[Union[str, int, bool]]
+    required: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    size: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    src: PCVar[Union[str, int, bool]]
+    step: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+    type: PCVar[Union[str, int, bool]]
+    use_map: PCVar[Union[str, int, bool]]
+    value: PCVar[Union[str, int, bool]]
+    width: PCVar[Union[str, int, bool]]
+
+
+input = Input.create
+
+
+class Ins(Element):  # noqa: E742
+    """Display the ins element."""
+
+    tag = "ins"
+
+    access_key: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    cite: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    date_time: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+
+
+ins = Ins.create
+
+
+class Kbd(Element):  # noqa: E742
+    """Display the kbd element."""
+
+    tag = "kbd"
+
+    access_key: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+
+
+kbd = Kbd.create
+
+
+class Label(Element):  # noqa: E742
+    """Display the label element."""
+
+    tag = "label"
+
+    access_key: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    html_for: PCVar[Union[str, int, bool]]
+    form: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+
+
+label = Label.create
+
+
+class Legend(Element):  # noqa: E742
+    """Display the legend element."""
+
+    tag = "legend"
+
+    access_key: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+
+
+legend = Legend.create
+
+
+class Li(Element):  # noqa: E742
+    """Display the li element."""
+
+    tag = "li"
+
+    access_key: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+    value: PCVar[Union[str, int, bool]]
+
+
+li = Li.create
+
+
+class Link(Element):  # noqa: E742
+    """Display the link element."""
+
+    tag = "link"
+
+    access_key: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    cross_origin: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    href: PCVar[Union[str, int, bool]]
+    href_lang: PCVar[Union[str, int, bool]]
+    integrity: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    media: PCVar[Union[str, int, bool]]
+    referrer_policy: PCVar[Union[str, int, bool]]
+    rel: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    sizes: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+    type: PCVar[Union[str, int, bool]]
+
+
+link = Link.create
+
+
+class Main(Element):  # noqa: E742
+    """Display the main element."""
+
+    tag = "main"
+
+    access_key: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+
+
+main = Main.create
+
+
+class Map(Element):  # noqa: E742
+    """Display the map element."""
+
+    tag = "map"
+
+    access_key: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    name: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+
+
+map = Map.create
+
+
+class Mark(Element):  # noqa: E742
+    """Display the mark element."""
+
+    tag = "mark"
+
+    access_key: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+
+
+mark = Mark.create
+
+
+class Math(Element):  # noqa: E742
+    """Display the math element."""
+
+    tag = "math"
+
+    access_key: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+
+
+math = Math.create
+
+
+class Menu(Element):  # noqa: E742
+    """Display the menu element."""
+
+    tag = "menu"
+
+    access_key: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+    type: PCVar[Union[str, int, bool]]
+
+
+menu = Menu.create
+
+
+class Meta(Element):  # noqa: E742
+    """Display the meta element."""
+
+    tag = "meta"
+
+    access_key: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    char_set: PCVar[Union[str, int, bool]]
+    content: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    http_equiv: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    name: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+
+
+meta = Meta.create
+
+
+class Meter(Element):  # noqa: E742
+    """Display the meter element."""
+
+    tag = "meter"
+
+    access_key: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    form: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    high: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    low: PCVar[Union[str, int, bool]]
+    max: PCVar[Union[str, int, bool]]
+    min: PCVar[Union[str, int, bool]]
+    optimum: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+    value: PCVar[Union[str, int, bool]]
+
+
+meter = Meter.create
+
+
+class Nav(Element):  # noqa: E742
+    """Display the nav element."""
+
+    tag = "nav"
+
+    access_key: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+
+
+nav = Nav.create
+
+
+class Noscript(Element):  # noqa: E742
+    """Display the noscript element."""
+
+    tag = "noscript"
+
+    access_key: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+
+
+noscript = Noscript.create
+
+
+class Object(Element):  # noqa: E742
+    """Display the object element."""
+
+    tag = "object"
+
+    access_key: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    border: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    data: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    form: PCVar[Union[str, int, bool]]
+    height: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    name: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+    type: PCVar[Union[str, int, bool]]
+    use_map: PCVar[Union[str, int, bool]]
+    width: PCVar[Union[str, int, bool]]
+
+
+object = Object.create
+
+
+class Ol(Element):  # noqa: E742
+    """Display the ol element."""
+
+    tag = "ol"
+
+    access_key: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    reversed: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    start: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+    type: PCVar[Union[str, int, bool]]
+
+
+ol = Ol.create
+
+
+class Optgroup(Element):  # noqa: E742
+    """Display the optgroup element."""
+
+    tag = "optgroup"
+
+    access_key: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    disabled: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    label: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+
+
+optgroup = Optgroup.create
+
+
+class Option(Element):  # noqa: E742
+    """Display the option element."""
+
+    tag = "option"
+
+    access_key: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    disabled: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    label: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    selected: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+    value: PCVar[Union[str, int, bool]]
+
+
+option = Option.create
+
+
+class Output(Element):  # noqa: E742
+    """Display the output element."""
+
+    tag = "output"
+
+    access_key: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    html_for: PCVar[Union[str, int, bool]]
+    form: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    name: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+
+
+output = Output.create
+
+
+class P(Element):  # noqa: E742
+    """Display the p element."""
+
+    tag = "p"
+
+    access_key: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+
+
+p = P.create
+
+
+class Picture(Element):  # noqa: E742
+    """Display the picture element."""
+
+    tag = "picture"
+
+    access_key: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+
+
+picture = Picture.create
+
+
+class Portal(Element):  # noqa: E742
+    """Display the portal element."""
+
+    tag = "portal"
+
+    access_key: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+
+
+portal = Portal.create
+
+
+class Pre(Element):  # noqa: E742
+    """Display the pre element."""
+
+    tag = "pre"
+
+    access_key: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+
+
+pre = Pre.create
+
+
+class Progress(Element):  # noqa: E742
+    """Display the progress element."""
+
+    tag = "progress"
+
+    access_key: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    form: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    max: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+    value: PCVar[Union[str, int, bool]]
+
+
+progress = Progress.create
+
+
+class Q(Element):  # noqa: E742
+    """Display the q element."""
+
+    tag = "q"
+
+    access_key: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    cite: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+
+
+q = Q.create
+
+
+class Rp(Element):  # noqa: E742
+    """Display the rp element."""
+
+    tag = "rp"
+
+    access_key: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+
+
+rp = Rp.create
+
+
+class Rt(Element):  # noqa: E742
+    """Display the rt element."""
+
+    tag = "rt"
+
+    access_key: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+
+
+rt = Rt.create
+
+
+class Ruby(Element):  # noqa: E742
+    """Display the ruby element."""
+
+    tag = "ruby"
+
+    access_key: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+
+
+ruby = Ruby.create
+
+
+class S(Element):  # noqa: E742
+    """Display the s element."""
+
+    tag = "s"
+
+    access_key: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+
+
+s = S.create
+
+
+class Samp(Element):  # noqa: E742
+    """Display the samp element."""
+
+    tag = "samp"
+
+    access_key: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+
+
+samp = Samp.create
+
+
+class Script(Element):  # noqa: E742
+    """Display the script element."""
+
+    tag = "script"
+
+    access_key: PCVar[Union[str, int, bool]]
+    async_: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    char_set: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    cross_origin: PCVar[Union[str, int, bool]]
+    defer: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    integrity: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    language: PCVar[Union[str, int, bool]]
+    referrer_policy: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    src: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+    type: PCVar[Union[str, int, bool]]
+
+
+script = Script.create
+
+
+class Section(Element):  # noqa: E742
+    """Display the section element."""
+
+    tag = "section"
+
+    access_key: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+
+
+section = Section.create
+
+
+class Select(Element):  # noqa: E742
+    """Display the select element."""
+
+    tag = "select"
+
+    access_key: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    auto_complete: PCVar[Union[str, int, bool]]
+    auto_focus: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    disabled: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    form: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    multiple: PCVar[Union[str, int, bool]]
+    name: PCVar[Union[str, int, bool]]
+    required: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    size: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+
+
+select = Select.create
+
+
+class Slot(Element):  # noqa: E742
+    """Display the slot element."""
+
+    tag = "slot"
+
+    access_key: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+
+
+slot = Slot.create
+
+
+class Small(Element):  # noqa: E742
+    """Display the small element."""
+
+    tag = "small"
+
+    access_key: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+
+
+small = Small.create
+
+
+class Source(Element):  # noqa: E742
+    """Display the source element."""
+
+    tag = "source"
+
+    access_key: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    media: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    sizes: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    src: PCVar[Union[str, int, bool]]
+    src_set: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+    type: PCVar[Union[str, int, bool]]
+
+
+source = Source.create
+
+
+class Span(Element):  # noqa: E742
+    """Display the span element."""
+
+    tag = "span"
+
+    access_key: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+
+
+span = Span.create
+
+
+class Strong(Element):  # noqa: E742
+    """Display the strong element."""
+
+    tag = "strong"
+
+    access_key: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+
+
+strong = Strong.create
+
+
+class Style(Element):  # noqa: E742
+    """Display the style element."""
+
+    tag = "style"
+
+    access_key: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    media: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    scoped: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+    type: PCVar[Union[str, int, bool]]
+
+
+style = Style.create
+
+
+class Sub(Element):  # noqa: E742
+    """Display the sub element."""
+
+    tag = "sub"
+
+    access_key: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+
+
+sub = Sub.create
+
+
+class Summary(Element):  # noqa: E742
+    """Display the summary element."""
+
+    tag = "summary"
+
+    access_key: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+
+
+summary = Summary.create
+
+
+class Sup(Element):  # noqa: E742
+    """Display the sup element."""
+
+    tag = "sup"
+
+    access_key: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+
+
+sup = Sup.create
+
+
+class Svg(Element):  # noqa: E742
+    """Display the svg element."""
+
+    tag = "svg"
+
+    access_key: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+
+
+svg = Svg.create
+
+
+class Table(Element):  # noqa: E742
+    """Display the table element."""
+
+    tag = "table"
+
+    access_key: PCVar[Union[str, int, bool]]
+    align: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    background: PCVar[Union[str, int, bool]]
+    bgcolor: PCVar[Union[str, int, bool]]
+    border: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    summary: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+
+
+table = Table.create
+
+
+class Tbody(Element):  # noqa: E742
+    """Display the tbody element."""
+
+    tag = "tbody"
+
+    access_key: PCVar[Union[str, int, bool]]
+    align: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    bgcolor: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+
+
+tbody = Tbody.create
+
+
+class Td(Element):  # noqa: E742
+    """Display the td element."""
+
+    tag = "td"
+
+    access_key: PCVar[Union[str, int, bool]]
+    align: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    background: PCVar[Union[str, int, bool]]
+    bgcolor: PCVar[Union[str, int, bool]]
+    col_span: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    headers: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    row_span: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+
+
+td = Td.create
+
+
+class Template(Element):  # noqa: E742
+    """Display the template element."""
+
+    tag = "template"
+
+    access_key: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+
+
+template = Template.create
+
+
+class Textarea(Element):  # noqa: E742
+    """Display the textarea element."""
+
+    tag = "textarea"
+
+    access_key: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    auto_complete: PCVar[Union[str, int, bool]]
+    auto_focus: PCVar[Union[str, int, bool]]
+    cols: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    dirname: PCVar[Union[str, int, bool]]
+    disabled: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    form: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    max_length: PCVar[Union[str, int, bool]]
+    min_length: PCVar[Union[str, int, bool]]
+    name: PCVar[Union[str, int, bool]]
+    placeholder: PCVar[Union[str, int, bool]]
+    read_only: PCVar[Union[str, int, bool]]
+    required: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    rows: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+    wrap: PCVar[Union[str, int, bool]]
+
+
+textarea = Textarea.create
+
+
+class Tfoot(Element):  # noqa: E742
+    """Display the tfoot element."""
+
+    tag = "tfoot"
+
+    access_key: PCVar[Union[str, int, bool]]
+    align: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    bgcolor: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+
+
+tfoot = Tfoot.create
+
+
+class Th(Element):  # noqa: E742
+    """Display the th element."""
+
+    tag = "th"
+
+    access_key: PCVar[Union[str, int, bool]]
+    align: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    background: PCVar[Union[str, int, bool]]
+    bgcolor: PCVar[Union[str, int, bool]]
+    col_span: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    headers: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    row_span: PCVar[Union[str, int, bool]]
+    scope: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+
+
+th = Th.create
+
+
+class Thead(Element):  # noqa: E742
+    """Display the thead element."""
+
+    tag = "thead"
+
+    access_key: PCVar[Union[str, int, bool]]
+    align: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+
+
+thead = Thead.create
+
+
+class Time(Element):  # noqa: E742
+    """Display the time element."""
+
+    tag = "time"
+
+    access_key: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    date_time: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+
+
+time = Time.create
+
+
+class Title(Element):  # noqa: E742
+    """Display the title element."""
+
+    tag = "title"
+
+    access_key: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+
+
+title = Title.create
+
+
+class Tr(Element):  # noqa: E742
+    """Display the tr element."""
+
+    tag = "tr"
+
+    access_key: PCVar[Union[str, int, bool]]
+    align: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    bgcolor: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+
+
+tr = Tr.create
+
+
+class Track(Element):  # noqa: E742
+    """Display the track element."""
+
+    tag = "track"
+
+    access_key: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    default: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    kind: PCVar[Union[str, int, bool]]
+    label: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    src: PCVar[Union[str, int, bool]]
+    src_lang: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+
+
+track = Track.create
+
+
+class U(Element):  # noqa: E742
+    """Display the u element."""
+
+    tag = "u"
+
+    access_key: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+
+
+u = U.create
+
+
+class Ul(Element):  # noqa: E742
+    """Display the ul element."""
+
+    tag = "ul"
+
+    access_key: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+
+
+ul = Ul.create
+
+
+class Var(Element):  # noqa: E742
+    """Display the var element."""
+
+    tag = "var"
+
+    access_key: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+
+
+var = Var.create
+
+
+class Video(Element):  # noqa: E742
+    """Display the video element."""
+
+    tag = "video"
+
+    access_key: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    auto_play: PCVar[Union[str, int, bool]]
+    buffered: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    controls: PCVar[Union[str, int, bool]]
+    cross_origin: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    height: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    loop: PCVar[Union[str, int, bool]]
+    muted: PCVar[Union[str, int, bool]]
+    plays_inline: PCVar[Union[str, int, bool]]
+    poster: PCVar[Union[str, int, bool]]
+    preload: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    src: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+    width: PCVar[Union[str, int, bool]]
+
+
+video = Video.create
+
+
+class Wbr(Element):  # noqa: E742
+    """Display the wbr element."""
+
+    tag = "wbr"
+
+    access_key: PCVar[Union[str, int, bool]]
+    auto_capitalize: PCVar[Union[str, int, bool]]
+    content_editable: PCVar[Union[str, int, bool]]
+    context_menu: PCVar[Union[str, int, bool]]
+    dir: PCVar[Union[str, int, bool]]
+    draggable: PCVar[Union[str, int, bool]]
+    enter_key_hint: PCVar[Union[str, int, bool]]
+    hidden: PCVar[Union[str, int, bool]]
+    input_mode: PCVar[Union[str, int, bool]]
+    item_prop: PCVar[Union[str, int, bool]]
+    lang: PCVar[Union[str, int, bool]]
+    role: PCVar[Union[str, int, bool]]
+    slot: PCVar[Union[str, int, bool]]
+    spell_check: PCVar[Union[str, int, bool]]
+    tab_index: PCVar[Union[str, int, bool]]
+    title: PCVar[Union[str, int, bool]]
+    translate: PCVar[Union[str, int, bool]]
+
+
+wbr = Wbr.create

+ 108 - 0
pynecone/el/precompile.py

@@ -0,0 +1,108 @@
+"""Dynamically compile classes for all HTML elements and output them to the
+elements directory.
+
+This script generates the element classes in the pynecone.el.elements module.
+Run as follows:
+
+    python -m pynecone.el.precompile
+
+Make sure to delete the __init__.py file in the elements directory before
+running this script.
+"""
+
+import os
+
+from pynecone.compiler.templates import join
+
+from .constants import ELEMENT_TO_PROPS, ELEMENTS
+
+FILE_DIR = os.path.dirname(os.path.realpath(__file__))
+ELEMENTS_DIR = os.path.join(FILE_DIR, "elements")
+INIT_PY_PATH = os.path.join(ELEMENTS_DIR, "__init__.py")
+
+
+def element_path(element: str) -> str:
+    """Get the name of the Python file for the given element.
+
+    Args:
+        element: The name of the element. For example, `a` or `div`.
+
+    Returns:
+        The name of the Python file for the given element.
+    """
+    return os.path.join(ELEMENTS_DIR, f"{element}.py")
+
+
+PROP = "    {prop}: PCVar[Union[str, int, bool]]".format
+
+
+def compile_pyclass_props(element: str) -> str:
+    """Compile props for an element.
+
+    Args:
+        element: The name of the element. For example, `a` or `div`.
+
+    Returns:
+        A string containing compiled props for the element.
+    """
+    return join(PROP(prop=prop) for prop in ELEMENT_TO_PROPS[element])
+
+
+PYCLASS = join(
+    [
+        "",
+        "class {name}(Element):  # noqa: E742",
+        '    """Display the {element} element."""',
+        "",
+        '    tag = "{element}"',
+        "",
+        "{props}",
+        "",
+        "",
+        "{call_name} = {name}.create",
+        "",
+    ]
+).format
+
+
+def compile_pyclass(element: str) -> str:
+    """Compile a Python class for an element.
+
+    Args:
+        element: The name of the element. For example, `a` or `div`.
+
+    Returns:
+        A string containing a Python class for the element.
+    """
+    name = element.capitalize()
+    props = compile_pyclass_props(element)
+
+    # Handle the `del` element, which is a Python keyword. Note that the class
+    # name is still `Del`.
+    call_name = "del_" if element == "del" else element
+
+    return PYCLASS(
+        name=name,
+        element=element,
+        props=props,
+        call_name=call_name,
+    )
+
+
+INIT_PY = [
+    '"""Element classes. This is an auto-generated file. Do not edit. See ../generate.py."""',
+    "from typing import Union",
+    "",
+    "from pynecone.el.element import Element",
+    "from pynecone.var import Var as PCVar",
+    "",
+]
+
+
+for element in sorted(ELEMENTS):
+    INIT_PY.append(compile_pyclass(element))
+
+
+os.makedirs(ELEMENTS_DIR, exist_ok=True)
+with open(INIT_PY_PATH, "w+") as f:
+    f.write(join(INIT_PY))