Skip to main content

kozan_core/html/
mod.rs

1//! HTML element types — like Chrome's `core/html/`.
2//!
3//! # Architecture
4//!
5//! ## Trait hierarchy (mirrors Chrome)
6//!
7//! ```text
8//! HtmlElement                         ← Global HTML attributes, actions
9//!   ├── FormControlElement            ← Disabled, name, form, validity
10//!   │     └── TextControlElement      ← Value, placeholder, selection
11//!   ├── MediaElement                  ← Src, play, pause, muted, controls
12//!   └── ReplacedElement              ← Intrinsic dimensions
13//! ```
14//!
15//! ## Element categories
16//!
17//! | Category | Trait | Elements |
18//! |----------|-------|----------|
19//! | Simple | `HtmlElement` | div, span, p, h1-h6, section, article, ... |
20//! | Form control | `FormControlElement` | button, input, select, textarea |
21//! | Text control | `TextControlElement` | input (text types), textarea |
22//! | Media | `MediaElement` | audio, video |
23//! | Replaced | `ReplacedElement` | img, canvas, video |
24
25// ---- Category traits ----
26pub mod form_control;
27pub mod html_element;
28pub mod media_element;
29pub mod replaced;
30
31// ---- Concrete elements ----
32mod html_anchor_element;
33mod html_body_element;
34mod html_div_element;
35mod html_heading_element;
36mod html_list_elements;
37mod html_paragraph_element;
38mod html_section_elements;
39mod html_span_element;
40mod html_text_elements;
41
42// Form controls.
43mod html_button_element;
44mod html_form_element;
45mod html_input_element;
46mod html_label_element;
47mod html_select_element;
48mod html_textarea_element;
49
50// Replaced + media elements.
51mod html_audio_element;
52mod html_canvas_element;
53mod html_image_element;
54mod html_video_element;
55
56// ---- Re-exports: traits ----
57pub use form_control::{FormControlElement, TextControlElement};
58pub use html_element::HtmlElement;
59pub use media_element::MediaElement;
60pub use replaced::{IntrinsicSizing, ReplacedElement};
61
62// ---- Re-exports: simple elements ----
63pub use html_anchor_element::{AnchorData, HtmlAnchorElement};
64pub use html_body_element::HtmlBodyElement;
65pub use html_div_element::HtmlDivElement;
66pub use html_heading_element::{HeadingData, HtmlHeadingElement};
67pub use html_paragraph_element::HtmlParagraphElement;
68pub use html_span_element::HtmlSpanElement;
69
70// Section elements.
71pub use html_section_elements::{
72    HtmlAddressElement, HtmlArticleElement, HtmlAsideElement, HtmlDetailsElement,
73    HtmlFigCaptionElement, HtmlFigureElement, HtmlFooterElement, HtmlHeaderElement,
74    HtmlMainElement, HtmlNavElement, HtmlSectionElement, HtmlSummaryElement,
75};
76
77// List elements.
78pub use html_list_elements::{
79    HtmlDListElement, HtmlDdElement, HtmlDtElement, HtmlLiElement, HtmlOListElement,
80    HtmlUListElement, OListData,
81};
82
83// Text-level elements.
84pub use html_text_elements::{
85    HtmlAbbrElement, HtmlBElement, HtmlBlockquoteElement, HtmlBrElement, HtmlCiteElement,
86    HtmlCodeElement, HtmlEmElement, HtmlHrElement, HtmlIElement, HtmlKbdElement, HtmlMarkElement,
87    HtmlPreElement, HtmlQElement, HtmlSElement, HtmlSmallElement, HtmlStrongElement,
88    HtmlSubElement, HtmlSupElement, HtmlTimeElement, HtmlUElement, HtmlVarElement, HtmlWbrElement,
89};
90
91// ---- Re-exports: form controls ----
92pub use html_button_element::{ButtonData, HtmlButtonElement};
93pub use html_form_element::{FormData, HtmlFormElement};
94pub use html_input_element::{HtmlInputElement, InputData, InputType};
95pub use html_label_element::{HtmlLabelElement, LabelData};
96pub use html_select_element::{HtmlSelectElement, SelectData};
97pub use html_textarea_element::{HtmlTextAreaElement, TextAreaData};
98
99// ---- Re-exports: replaced + media elements ----
100pub use html_audio_element::HtmlAudioElement;
101pub use html_canvas_element::{CanvasData, HtmlCanvasElement};
102pub use html_image_element::{HtmlImageElement, ImageData};
103pub use html_video_element::{HtmlVideoElement, VideoData};