Components and blocks
Components
Small reusable controls expose a stable template contract: Button, Input, Tabs, Dialog and others. Combine them using includes or the block tag.
{% load wdj %}{% include "wdj/components/button.html" with label="Save" type="submit" variant="primary" only %}
Blocks
Blocks compose several controls into an application section. PageHeader, ResourceList and DeleteResource adapt Kumo compositions. The other blocks are wdj-owned.
{% load wdj %}{% wdj_component "wdj/components/settings_section.html" title="Profile" description="Manage your public name." %} {% include "wdj/components/input.html" with name="name" label="Name" only %}{% endwdj_component %}
Choose the state owner
Keep data, permissions and validation in Django. Use HTMX for server fragments and Alpine for local UI state. Native form and navigation semantics remain available.