Skip to content

Error State

Where a flow dead-ends, the system answers in the ship's-log voice. ErrorState frames the classic not-found anatomy — stage, panel, title, message, actions — in a .ch-frame panel with aurum corner ticks, a mono uppercase signal line, and a big display code. Four variants cover the explorer's dead-ends; awaiting-broadcast is a waiting tone (role=status, pulsing beacon), not a failure.

Variants

Each variant ships default copy, code, and signal line; every string is overridable per prop. Panels here are embedded — drop the embedded prop for the full min-height stage.

not-found
<ErrorState variant="not-found" actions={<ButtonLink href="/">Back to harbor</ButtonLink>} />
  • --ch-primary
  • --ch-surface
  • --ch-border-strong
  • --ch-fg-muted

The generic 404 — neutral tone, gold display code.

tx-not-found
<ErrorState variant="tx-not-found" detail={txid} />
  • --ch-primary
  • --ch-bg-raised
  • --ch-border-faint
  • --ch-fg-faint

A transaction ID the chain has never seen — pass the queried ID via detail.

awaiting-broadcast
MempoolPending

Awaiting transaction broadcast

The transaction is signed and queued. Holding for the network to pick it up — this usually takes a few seconds.

<ErrorState variant="awaiting-broadcast" />
  • --ch-primary
  • --ch-primary-bright
  • --ch-surface
  • --ch-fg-muted

A waiting tone, not a failure — role=status, the beacon and code pulse (static under reduced motion).

invalid-address
<ErrorState variant="invalid-address" detail={address} />
  • --ch-danger
  • --ch-surface
  • --ch-border-strong
  • --ch-fg-muted

Checksum failure — danger tone on code, status word, and beacon.

Full-page stage

The default (non-embedded) render centers the panel in a min-height stage for route-level 404 and dead-end pages.

Default stage
<ErrorState variant="not-found" actions={actions} />

Drop this straight into a not-found.tsx or an explorer dead-end route.

Custom copy

Every string — code, eyebrow, status, title, message — overrides independently, and tone recolors the panel; the variant keeps supplying whatever is not passed.

Overridden
Block indexBeyond tip

Block not found

Height 9,999,999 is beyond the current chain tip. Come back in a few decades.

<ErrorState variant="tx-not-found" code="H?" eyebrow="Block index" status="Beyond tip" tone="pending" title="Block not found" message="…" />

A tx-not-found shell recast as a block-height miss, with the tone flipped to pending.