htmforge.components
Complete component reference for htmforge v0.3.0+.
Block F: DataTable Enhancements
htmforge.components.table.DataTable(**data)
Bases: Component
Rendert eine einfache Datentabelle mit optionalem HTMX-Reload.
Source code in htmforge/core/component.py
render()
Erstellt div.table-wrapper > table.table mit thead/tbody.
Source code in htmforge/components/table.py
htmforge.components.table.ColumnDef
Bases: BaseModel
Spaltenkonfiguration fuer DataTable.
Fields
key: Schlüssel für dict_rows oder Index-Position label: Angezeigter Spaltenname (default = key) sortable: Ob die Spalte klickbar/sortierbar ist width: Optionale CSS-Breite z.B. "120px" oder "10%"
display_label
property
Gibt label zurück, falls gesetzt, sonst key.
Block G: New Components
Spinner
htmforge.components.spinner.Spinner(**data)
Bases: Component
Barrierefreier Ladeindikator mit Groessenvarianten.
Example
Spinner().to_html() '
'
Source code in htmforge/core/component.py
render()
Rendert den Spinner mit Größenklasse und Accessibility-Attributen.
htmforge.components.spinner.SpinnerSize
Bases: StrEnum
Verfügbare Spinner-Größen.
Tabs
htmforge.components.tabs.Tabs(**data)
Bases: Component
Rendert eine Tab-Leiste. Jeder Tab laedt seinen Inhalt via HTMX.
Fields
tabs: list of (label, hx_url) tuples active: index of the active tab (0-based) target: CSS selector for the content panel to swap into tab_cls: extra CSS class on the tab bar wrapper div
Source code in htmforge/core/component.py
render()
Rendert die Tab-Leiste mit aktiven/inaktiven Tabs.
Source code in htmforge/components/tabs.py
Toast
htmforge.components.toast.Toast(**data)
Bases: Component
Timed notification box, HTMX OOB-swap kompatibel.
Renders a div with id=toast_id for HTMX out-of-band swapping. Use hx-swap-oob="true" in HTMX responses to inject toasts.
Fields
message: str — notification text variant: ToastVariant — visual style toast_id: str — HTML id, default "toast" duration_ms: int — auto-dismiss after ms via JS, 0 = no auto-dismiss
Source code in htmforge/core/component.py
render()
Rendert die Toast-Benachrichtigung mit OOB-Swap-Support.
Source code in htmforge/components/toast.py
htmforge.components.toast.ToastVariant
Bases: StrEnum
Verfügbare Toast-Varianten.
Accordion
htmforge.components.accordion.Accordion(**data)
Bases: Component
Mehrere aufklappbare Abschnitte auf Basis von details/summary.
Fields
items: list of (title, content) tuples open_index: int | None — index of initially open item, None = all closed item_cls: str — extra CSS class on each details element
Source code in htmforge/core/component.py
render()
Rendert das Accordion mit aufklappbaren Items.
Source code in htmforge/components/accordion.py
Dropdown
htmforge.components.dropdown.Dropdown(**data)
Bases: Component
Trigger-Button mit verstecktem Menü, HTMX-togglebar.
Renders
div(cls="dropdown") button(label, hx_get=toggle_url, hx_target="#dropdown_id-menu", hx_swap=HxSwap.OUTER_HTML, cls="dropdown-trigger") div(id=f"{dropdown_id}-menu", cls="dropdown-menu") For each (label, url): a(label, href=url, cls="dropdown-item")
Fields
label: str — trigger button label items: list of (label, url) tuples dropdown_id: str — unique HTML id prefix, default "dropdown" toggle_url: str — HTMX URL to reload/toggle menu, default ""
Source code in htmforge/core/component.py
render()
Rendert das Dropdown-Menü mit Trigger-Button.
Source code in htmforge/components/dropdown.py
Block H: Forms System
htmforge.components.forms.SelectField(**data)
Bases: Component
Dropdown-Auswahlliste mit typisierten Optionen.
Fields
name: str — name-Attribut des select options: list[tuple[str, str]] — (label, value) Paare selected: str — aktuell ausgewählter value label_text: str — Beschriftung über dem Select required: bool — Pflichtfeld error: str — Fehlermeldung (rendert div.field-error) field_id: str — HTML id, default = name
Source code in htmforge/core/component.py
render()
Rendert ein beschriftetes select-Element.
Source code in htmforge/components/forms.py
htmforge.components.forms.CheckboxField(**data)
Bases: Component
Einzelne Checkbox mit Label.
Fields
name: str — name-Attribut label_text: str — Beschriftung neben der Checkbox checked: bool — Vorausgewählt value: str — value-Attribut, default "1" required: bool — Pflichtfeld error: str — Fehlermeldung field_id: str — HTML id, default = name
Source code in htmforge/core/component.py
render()
Rendert eine Checkbox mit Label.
Source code in htmforge/components/forms.py
htmforge.components.forms.RadioGroup(**data)
Bases: Component
Gruppe von Radio-Buttons aus einer Options-Liste.
Fields
name: str — gemeinsames name-Attribut aller Radios options: list[tuple[str, str]] — (label, value) Paare selected: str — aktuell ausgewählter value legend_text: str — Gruppenbezeichnung im fieldset required: bool — Pflichtfeld auf erstem Radio error: str — Fehlermeldung
Source code in htmforge/core/component.py
render()
Rendert eine Gruppe von Radio-Buttons im Fieldset.
Source code in htmforge/components/forms.py
htmforge.components.forms.FormGroup(**data)
Bases: Component
Layout-Container fuer mehrere Formularfelder.
Fields
fields: list[Component] — Felder die gerendert werden legend_text: str — optionale Gruppenbezeichnung group_cls: str — extra CSS-Klasse auf dem wrapper div
Source code in htmforge/core/component.py
render()
Rendert eine Feldgruppe mit optionaler Legend.
Source code in htmforge/components/forms.py
htmforge.components.forms.Form(**data)
Bases: Component
Formular-Container mit HTMX-Submit-Unterstuetzung.
Fields
action: str — form action URL method: str — "get" or "post", default "post" fields: list[Component] — Formularfelder submit_label: str — Beschriftung des Submit-Buttons, default "Absenden" errors: dict[str, str] — Validierungsfehler {field_name: message} Wenn gesetzt, werden Fehler automatisch an passende Felder weitergegeben. hx_post: str — HTMX POST URL (optional, overrides action for HTMX) hx_target: str — HTMX target selector hx_swap: HxSwap | None — HTMX swap strategy
Source code in htmforge/core/component.py
render()
Rendert das Formular mit auto-error-Injection.
Source code in htmforge/components/forms.py
v0.2.x Components
Layout & Structure
htmforge.components.page.Page(**data)
Bases: Component
Abstrakte Basisklasse fuer vollstaendige HTML-Dokumente mit DOCTYPE.
Subklassen implementieren :meth:_body_content um den Seiteninhalt
bereitzustellen. :meth:to_html haengt automatisch <!DOCTYPE html>
voran.
Example
from htmforge.components.page import Page from htmforge.core.element import Element
class MyPage(Page): ... users: list[str] = [] ... ... def _body_content(self) -> list[Element | str | None]: ... from htmforge.elements import li, ul ... return [ul(*[li(u) for u in self.users])] ... page = MyPage(title="Users", users=["Ada", "Grace"]) page.to_html().startswith("<!DOCTYPE html>") True
Source code in htmforge/core/component.py
render()
Rendert das vollstaendige <html>-Dokument ohne DOCTYPE.
Source code in htmforge/components/page.py
Data Display
htmforge.components.alert.Alert(**data)
Bases: Component
Rendert eine Alert-Box mit optionalem Dismiss-Button.
Source code in htmforge/core/component.py
render()
Erstellt ein <div> mit Variantenklasse und optionalem Schliessen.
Source code in htmforge/components/alert.py
htmforge.components.alert.AlertVariant
Bases: StrEnum
Unterstuetzte Alert-Varianten.
htmforge.components.badge.Badge(**data)
Bases: Component
Rendert ein kleines Inline-Label mit Variantenklasse.
Example
Badge(text="3", variant=BadgeVariant.DANGER).to_html() '3'
Source code in htmforge/core/component.py
htmforge.components.badge.BadgeVariant
Bases: StrEnum
Unterstuetzte Badge-Varianten.
htmforge.components.breadcrumb.Breadcrumb(**data)
Bases: Component
Rendert eine Breadcrumb-Navigation als <nav> mit geordneter Liste.
Items sind (label, url)-Tupel.
url=None markiert die aktuelle Seite und wird als <span> gerendert.
Source code in htmforge/core/component.py
render()
Erstellt <nav> mit <ol> und <li>-Eintraegen.
Source code in htmforge/components/breadcrumb.py
htmforge.components.pagination.Pagination(**data)
Bases: Component
Rendert Previous/Next und Seitenlinks fuer HTMX-Navigation.
Source code in htmforge/core/component.py
render()
Erstellt eine <ul> mit Seitenlinks inklusive Previous/Next.
Source code in htmforge/components/pagination.py
Navigation & Interaction
htmforge.components.modal.Modal(**data)
Bases: Component
Trigger-Button + leeres Dialog-Overlay, Inhalt wird per HTMX geladen.
Renders
Fields
modal_id: str — unique HTML id for the
Source code in htmforge/core/component.py
render()
Erstellt den Trigger-Button und das <dialog>-Overlay.
Source code in htmforge/components/modal.py
htmforge.components.search_input.SearchInput(**data)
Bases: Component
Text-Input mit automatischem hx-trigger keyup-Debounce.
</div>
Fields
name: str — input name attribute
search_url: str — URL for hx-get (custom field, not Component.hx_get)
search_target: str — CSS selector for swap target
(custom field, not Component.hx_target)
placeholder: str = "Suchen…"
debounce_ms: int = 300
indicator: str = "" — optional hx-indicator selector
Source code in htmforge/core/component.py
render()
Erstellt den Such-Input mit Debounce und optionalem Indicator.
Source code in htmforge/components/search_input.py
</div>
Fields
name: str — input name attribute search_url: str — URL for hx-get (custom field, not Component.hx_get) search_target: str — CSS selector for swap target (custom field, not Component.hx_target) placeholder: str = "Suchen…" debounce_ms: int = 300 indicator: str = "" — optional hx-indicator selector
Source code in htmforge/core/component.py
render()
Erstellt den Such-Input mit Debounce und optionalem Indicator.
Source code in htmforge/components/search_input.py
Legacy FormField
htmforge.components.form_field.FormField(**data)
Bases: Component
Rendert ein beschriftetes Eingabefeld mit optionaler Fehleranzeige.
Example
from htmforge.components.form_field import FormField, InputType field = FormField( ... name="username", ... label_text="Benutzername", ... required=True, ... ) "required" in field.to_html() True
Source code in htmforge/core/component.py
render()
Erstellt div > label + input [+ div.field-error].
Source code in htmforge/components/form_field.py
htmforge.components.form_field.InputType
Bases: StrEnum
Unterstuetzte <input>-Typen.