JSON block
The raw payload, laid out rather than interpreted. Every other information block picks fields, names them and renders each by its type; this one deliberately does not, because a developer reading a webhook body or a provider's raw response needs the exact shape and keys, not our reading of them.
It is not a code block
No monospace, no dark chrome, no theme. It sits in an InfoBlock like any other section and keeps the page's own type, so a payload reads as part of the detail rather than as an embedded terminal. The only colour is the key, which carries the ink half of the split primary — the step that clears AA on a dark ground.
Seller detail
<InfoBlock title="Seller detail" size="sm">
<JsonBlock value={event.payload} />
</InfoBlock>When NOT to reach for it
If you know the fields are id, amount and status, name them: use information blocks. A payload dump where named fields would do tells the reader you did not know the shape.
Import
Copy this import at the top of the file where you compose it.
import { JsonBlock } from "@/components/patterns/json-block";