Skip to content

StateView

Unified loading, empty, error, permission, offline, and success surface.

Import from hedron import StateView
Distribution hedron
Backend activity No
Normal render mode RenderMode.FRAGMENT

Live demo

Empty

No pipelines yet. Create a pipeline to start ingesting data.

The preview is a local docs simulation (not a running Hedron server). Interactive demos show a “Simulated HTMX” trace when applicable.

Basic use

from hedron import Button, StateView
component = StateView('No pipelines yet', kind='empty', description='Create a pipeline to start ingesting data.', actions=Button('New pipeline'))

Compose under Page for full documents, or return from a fragment route for HTMX swaps.

How it works

StateView chooses an appropriate live-region role and always shows a textual kind label so state is never color- or icon-only.

This component's core behavior is server-rendered HTML and does not require a browser runtime. The preview is ordinary semantic HTML, so keyboard, form, link, and disclosure behavior comes from the platform.

Constructor and parameters

StateView(title, *nodes, *, kind='empty', description=None, detail=None, actions=None, id=None, class_=None)
Parameter Type Meaning
title str Primary message for the state.
kind loading | empty | error | permission | offline | success Closed state vocabulary.
description / detail str | None Optional supporting copy.
actions NodeLike | None Optional recovery or next-step controls.

Composition and backend behavior

Keep StateView at the smallest semantic boundary. Fragment routes should return only the replaced region and preserve stable target IDs across success, validation, empty, loading, and error responses.

StateView is primarily presentational; keep any mutation on an explicit action or component route.

Accessibility

Prefer StateView for empty tables, failed loads, and permission blocks instead of ad-hoc cards.

Security

Escaping and SafeUrl / TrustedHtml are framework concerns; authorization and data exposure remain application code. Redact secrets before rendering.

Common mistakes

  • Do not use StateView for ordinary inline validation—use FormErrors or Alert.
  • Do not copy docs-preview JavaScript into an application server.

Testing

from hedron import RenderMode, render

result = render(component, mode=RenderMode.FRAGMENT)
assert result.html
assert not result.diagnostics

All component demos · Built-in API · Testing