diff --git a/seamless/types/html.py b/seamless/types/html.py
index 2373b26..7e1477b 100644
--- a/seamless/types/html.py
+++ b/seamless/types/html.py
@@ -4,6 +4,7 @@
if TYPE_CHECKING:
from ..styling import StyleObject
from .. import JS
+ from . import Renderable, Primitive
from .events import *
@@ -127,7 +128,7 @@ class HTMLEventProps(TypedDict, total=False):
on_waiting: EventFunction[Event]
-class HTMLElement(TypedDict, total=False, closed=False):
+class HTMLElement(TypedDict, total=False):
access_key: str
auto_capitalize: str
class_name: str | Iterable[str]
@@ -148,11 +149,11 @@ class HTMLElement(TypedDict, total=False, closed=False):
init: "JS"
+class HTMLElementProps(HTMLElement, AriaProps, HTMLEventProps, closed=True):
-class HTMLElementProps(HTMLElement, AriaProps, HTMLEventProps):
- pass
+ __extra_items__: "Renderable | Primitive"
-class HTMLAnchorElement(HTMLElementProps, total=False, closed=False):
+class HTMLAnchorElement(HTMLElementProps, total=False):
download: str
href: str
href_lang: str
@@ -163,7 +164,7 @@ class HTMLAnchorElement(HTMLElementProps, total=False, closed=False):
type: str
-class HTMLAreaElement(HTMLElementProps, total=False, closed=False):
+class HTMLAreaElement(HTMLElementProps, total=False):
alt: str
coords: str
download: str
@@ -176,7 +177,7 @@ class HTMLAreaElement(HTMLElementProps, total=False, closed=False):
target: str
-class HTMLAudioElement(HTMLElementProps, total=False, closed=False):
+class HTMLAudioElement(HTMLElementProps, total=False):
auto_play: str
controls: str
loop: str
@@ -185,20 +186,20 @@ class HTMLAudioElement(HTMLElementProps, total=False, closed=False):
src: str
-class HTMLBRElement(HTMLElementProps, total=False, closed=False):
+class HTMLBRElement(HTMLElementProps, total=False):
pass # No additional attributes
-class HTMLBaseElement(HTMLElementProps, total=False, closed=False):
+class HTMLBaseElement(HTMLElementProps, total=False):
href: str
target: str
-class HTMLBodyElement(HTMLElementProps, total=False, closed=False):
+class HTMLBodyElement(HTMLElementProps, total=False):
background: str
-class HTMLButtonElement(HTMLElementProps, total=False, closed=False):
+class HTMLButtonElement(HTMLElementProps, total=False):
auto_focus: str
disabled: str
form: str
@@ -212,45 +213,45 @@ class HTMLButtonElement(HTMLElementProps, total=False, closed=False):
value: str
-class HTMLCanvasElement(HTMLElementProps, total=False, closed=False):
+class HTMLCanvasElement(HTMLElementProps, total=False):
height: str
width: str
-class HTMLDataElement(HTMLElementProps, total=False, closed=False):
+class HTMLDataElement(HTMLElementProps, total=False):
value: str
-class HTMLDataListElement(HTMLElementProps, total=False, closed=False):
+class HTMLDataListElement(HTMLElementProps, total=False):
pass # No additional attributes
-class HTMLDetailsElement(HTMLElementProps, total=False, closed=False):
+class HTMLDetailsElement(HTMLElementProps, total=False):
open: str
-class HTMLDialogElement(HTMLElementProps, total=False, closed=False):
+class HTMLDialogElement(HTMLElementProps, total=False):
open: str
-class HTMLDivElement(HTMLElementProps, total=False, closed=False):
+class HTMLDivElement(HTMLElementProps, total=False):
pass # No additional attributes
-class HTMLEmbedElement(HTMLElementProps, total=False, closed=False):
+class HTMLEmbedElement(HTMLElementProps, total=False):
height: str
src: str
type: str
width: str
-class HTMLFieldSetElement(HTMLElementProps, total=False, closed=False):
+class HTMLFieldSetElement(HTMLElementProps, total=False):
disabled: str
form: str
name: str
-class HTMLFormElement(HTMLElementProps, total=False, closed=False):
+class HTMLFormElement(HTMLElementProps, total=False):
accept_charset: str
action: str
auto_complete: str
@@ -261,23 +262,23 @@ class HTMLFormElement(HTMLElementProps, total=False, closed=False):
target: str
-class HTMLHRElement(HTMLElementProps, total=False, closed=False):
+class HTMLHRElement(HTMLElementProps, total=False):
pass # No additional attributes
-class HTMLHeadElement(HTMLElementProps, total=False, closed=False):
+class HTMLHeadElement(HTMLElementProps, total=False):
pass # No additional attributes
-class HTMLHeadingElement(HTMLElementProps, total=False, closed=False):
+class HTMLHeadingElement(HTMLElementProps, total=False):
pass # No additional attributes
-class HTMLHtmlElement(HTMLElementProps, total=False, closed=False):
+class HTMLHtmlElement(HTMLElementProps, total=False):
pass # No additional attributes
-class HTMLIFrameElement(HTMLElementProps, total=False, closed=False):
+class HTMLIFrameElement(HTMLElementProps, total=False):
allow: str
allow_fullscreen: str
csp: str
@@ -295,7 +296,7 @@ class HTMLIFrameElement(HTMLElementProps, total=False, closed=False):
width: str
-class HTMLImageElement(HTMLElementProps, total=False, closed=False):
+class HTMLImageElement(HTMLElementProps, total=False):
alt: str
cross_origin: str
decoding: str
@@ -312,7 +313,7 @@ class HTMLImageElement(HTMLElementProps, total=False, closed=False):
width: str
-class HTMLInputElement(HTMLElementProps, total=False, closed=False):
+class HTMLInputElement(HTMLElementProps, total=False):
accept: str
alt: str
auto_complete: str
@@ -350,19 +351,19 @@ class HTMLInputElement(HTMLElementProps, total=False, closed=False):
width: str
-class HTMLListItemElement(HTMLElementProps, total=False, closed=False):
+class HTMLListItemElement(HTMLElementProps, total=False):
value: str
-class HTMLLabelElement(HTMLElementProps, total=False, closed=False):
+class HTMLLabelElement(HTMLElementProps, total=False):
html_for: str
-class HTMLLegendElement(HTMLElementProps, total=False, closed=False):
+class HTMLLegendElement(HTMLElementProps, total=False):
align: str
-class HTMLLinkElement(HTMLElementProps, total=False, closed=False):
+class HTMLLinkElement(HTMLElementProps, total=False):
html_as: str
cross_origin: str
disabled: str
@@ -375,28 +376,28 @@ class HTMLLinkElement(HTMLElementProps, total=False, closed=False):
type: str
-class HTMLMapElement(HTMLElementProps, total=False, closed=False):
+class HTMLMapElement(HTMLElementProps, total=False):
name: str
-class HTMLDocumentMetaElement(HTMLElementProps, total=False, closed=False):
+class HTMLDocumentMetaElement(HTMLElementProps, total=False):
name: str
content: str
-class HTMLPragmaMetaElement(HTMLElementProps, total=False, closed=False):
+class HTMLPragmaMetaElement(HTMLElementProps, total=False):
http_equiv: str
-class HTMLCharsetMetaElement(HTMLElementProps, total=False, closed=False):
+class HTMLCharsetMetaElement(HTMLElementProps, total=False):
charset: str
-class HTMLUserMetaElement(HTMLElementProps, total=False, closed=False):
+class HTMLUserMetaElement(HTMLElementProps, total=False):
itemprop: str
-class HTMLMeterElement(HTMLElementProps, total=False, closed=False):
+class HTMLMeterElement(HTMLElementProps, total=False):
form: str
high: str
low: str
@@ -406,12 +407,12 @@ class HTMLMeterElement(HTMLElementProps, total=False, closed=False):
value: str
-class HTMLModElement(HTMLElementProps, total=False, closed=False):
+class HTMLModElement(HTMLElementProps, total=False):
cite: str
datetime: str
-class HTMLObjectElement(HTMLElementProps, total=False, closed=False):
+class HTMLObjectElement(HTMLElementProps, total=False):
data: str
form: str
height: str
@@ -421,56 +422,56 @@ class HTMLObjectElement(HTMLElementProps, total=False, closed=False):
width: str
-class HTMLOrderedListElement(HTMLElementProps, total=False, closed=False):
+class HTMLOrderedListElement(HTMLElementProps, total=False):
reversed: str
start: str
-class HTMLOptGroupElement(HTMLElementProps, total=False, closed=False):
+class HTMLOptGroupElement(HTMLElementProps, total=False):
disabled: str
label: str
-class HTMLOptionElement(HTMLElementProps, total=False, closed=False):
+class HTMLOptionElement(HTMLElementProps, total=False):
disabled: str
label: str
selected: str
value: str
-class HTMLOutputElement(HTMLElementProps, total=False, closed=False):
+class HTMLOutputElement(HTMLElementProps, total=False):
html_for: str # 'for' is a reserved keyword in Python, so using 'html_for'
form: str
name: str
-class HTMLParagraphElement(HTMLElementProps, total=False, closed=False):
+class HTMLParagraphElement(HTMLElementProps, total=False):
pass # No additional attributes
-class HTMLParamElement(HTMLElementProps, total=False, closed=False):
+class HTMLParamElement(HTMLElementProps, total=False):
name: str
value: str
-class HTMLPictureElement(HTMLElementProps, total=False, closed=False):
+class HTMLPictureElement(HTMLElementProps, total=False):
pass # No additional attributes
-class HTMLPreElement(HTMLElementProps, total=False, closed=False):
+class HTMLPreElement(HTMLElementProps, total=False):
pass # No additional attributes
-class HTMLProgressElement(HTMLElementProps, total=False, closed=False):
+class HTMLProgressElement(HTMLElementProps, total=False):
max: str
value: str
-class HTMLQuoteElement(HTMLElementProps, total=False, closed=False):
+class HTMLQuoteElement(HTMLElementProps, total=False):
cite: str
-class HTMLScriptElement(HTMLElementProps, total=False, closed=False):
+class HTMLScriptElement(HTMLElementProps, total=False):
async_: bool # 'async' is a reserved keyword in Python, so using 'async_'
cross_origin: str
defer: bool
@@ -481,7 +482,7 @@ class HTMLScriptElement(HTMLElementProps, total=False, closed=False):
type: str
-class HTMLSelectElement(HTMLElementProps, total=False, closed=False):
+class HTMLSelectElement(HTMLElementProps, total=False):
auto_complete: str
auto_focus: str
disabled: str
@@ -492,11 +493,11 @@ class HTMLSelectElement(HTMLElementProps, total=False, closed=False):
size: str
-class HTMLSlotElement(HTMLElementProps, total=False, closed=False):
+class HTMLSlotElement(HTMLElementProps, total=False):
name: str
-class HTMLSourceElement(HTMLElementProps, total=False, closed=False):
+class HTMLSourceElement(HTMLElementProps, total=False):
media: str
sizes: str
src: str
@@ -504,21 +505,21 @@ class HTMLSourceElement(HTMLElementProps, total=False, closed=False):
type: str
-class HTMLSpanElement(HTMLElementProps, total=False, closed=False):
+class HTMLSpanElement(HTMLElementProps, total=False):
pass # No additional attributes
-class HTMLStyleElement(HTMLElementProps, total=False, closed=False):
+class HTMLStyleElement(HTMLElementProps, total=False):
media: str
nonce: str
scoped: str
-class HTMLTableCaptionElement(HTMLElementProps, total=False, closed=False):
+class HTMLTableCaptionElement(HTMLElementProps, total=False):
pass # No additional attributes
-class HTMLTableCellElement(HTMLElementProps, total=False, closed=False):
+class HTMLTableCellElement(HTMLElementProps, total=False):
abbr: str
colspan: str
headers: str
@@ -526,7 +527,7 @@ class HTMLTableCellElement(HTMLElementProps, total=False, closed=False):
scope: str
-class HTMLTableColElement(HTMLElementProps, total=False, closed=False):
+class HTMLTableColElement(HTMLElementProps, total=False):
span: str
@@ -534,7 +535,7 @@ class HTMLTableDataCellElement(HTMLTableCellElement):
pass # Inherits attributes from HTMLTableCellElement
-class HTMLTableElement(HTMLElementProps, total=False, closed=False):
+class HTMLTableElement(HTMLElementProps, total=False):
border: str
cellpadding: str
cellspacing: str
@@ -548,7 +549,7 @@ class HTMLTableHeaderCellElement(HTMLTableCellElement):
pass # Inherits attributes from HTMLTableCellElement
-class HTMLTableRowElement(HTMLElementProps, total=False, closed=False):
+class HTMLTableRowElement(HTMLElementProps, total=False):
align: str
bgcolor: str
ch: str
@@ -556,18 +557,18 @@ class HTMLTableRowElement(HTMLElementProps, total=False, closed=False):
v_align: str
-class HTMLTableSectionElement(HTMLElementProps, total=False, closed=False):
+class HTMLTableSectionElement(HTMLElementProps, total=False):
align: str
ch: str
choff: str
v_align: str
-class HTMLTemplateElement(HTMLElementProps, total=False, closed=False):
+class HTMLTemplateElement(HTMLElementProps, total=False):
pass # No additional attributes
-class HTMLTextAreaElement(HTMLElementProps, total=False, closed=False):
+class HTMLTextAreaElement(HTMLElementProps, total=False):
auto_complete: str
auto_focus: str
cols: str
@@ -584,15 +585,15 @@ class HTMLTextAreaElement(HTMLElementProps, total=False, closed=False):
wrap: str
-class HTMLTimeElement(HTMLElementProps, total=False, closed=False):
+class HTMLTimeElement(HTMLElementProps, total=False):
datetime: str
-class HTMLTitleElement(HTMLElementProps, total=False, closed=False):
+class HTMLTitleElement(HTMLElementProps, total=False):
pass # No additional attributes
-class HTMLTrackElement(HTMLElementProps, total=False, closed=False):
+class HTMLTrackElement(HTMLElementProps, total=False):
default: str
kind: str
label: str
@@ -600,11 +601,11 @@ class HTMLTrackElement(HTMLElementProps, total=False, closed=False):
srclang: str
-class HTMLUnorderedListElement(HTMLElementProps, total=False, closed=False):
+class HTMLUnorderedListElement(HTMLElementProps, total=False):
pass # No additional attributes
-class HTMLVideoElement(HTMLElementProps, total=False, closed=False):
+class HTMLVideoElement(HTMLElementProps, total=False):
auto_play: str
controls: str
cross_origin: str