One asset, one business idea: a verified field, a score, a cursor. Never a scene.
A library of small useful signs
No big animated template. Each asset carries one Data/B2B idea, stays static by default, and can receive a local micro-motion. The site is image-free outside identity assets: these signs are its imagery.
The same kind lives in a hero, a card, a split or a grid. The catalog describes intentions, not page positions.
The static rendering is the reference. Motion is a parameter (animated: true), and reduced-motion restores the static state.
Every label is a real field name or a real value. A metric renders only when the JSON carries a sourced assetValue.
Every asset, with its real usage
Rendered by visual-assets/BlitzAsset.astro from catalog.ts. The footer of each cell counts the pages that mount it (field `asset` in the content JSON). UNUSED means available, not deprecated.
API & JSON
10 ASSETSPeople & companies
13 ASSETSData & signals
24 ASSETSFlows & operations
10 ASSETSThe assets the pages actually lean on
Counted at build time across products, use cases, teams and the hub pages. When a new page needs a proof, start from what the site already speaks.
| JSON field | Rendered by | Frame | Pages |
|---|---|---|---|
sections[].asset (split) | CodeSplit · UseCaseSplit · HubSplit | Dark 556×448 panel or bordered proof frame | Products, use cases, hubs |
sections[].items[].asset | FeatureLead · GrayCards · ProductTabs | Cell media, 12:7 ratio | Products, hubs, teams |
sections[].asset (apis) | RelatedApis | P1 proof frame with the endpoint eyebrow | Use cases |
hero.asset | PageHero media zone | Optional; framed heroes use a MotionScene instead | Internal pages |
signature (not asset) | SignatureBand · UseCaseSplit showcase · Figure | One canvas, one intention | Every directory |
One sign per business role
Lucide provides the universal signs. The Blitz registry (icon-registry.ts) fixes one pictogram per role so the same meaning keeps the same sign on every page. Specs and automations ask for a role, never for a file.
API & JSON
6 ROLESPeople & companies
9 ROLESData & signals
6 ROLESFlows & operations
6 ROLESSame component, different content
Five props change what an asset says without changing the visual language: variant, label, value, tone and animated. alt is descriptive when the asset informs, omitted when it decorates.
Astro
<BlitzAsset kind="verified-field" variant="WORK EMAIL" label="maya@acme.com" tone="success" alt="A verified work email" />
<BlitzAsset kind="metric" value="65M+" label="COMPANIES" /> {/* value comes from the JSON, never a default */}
<BlitzAsset kind="resolver" variant="PHONE" animated /> {/* the catalog decides the motion: pulse */}JSON
{
"kind": "features",
"items": [
{ "title": "Typed fields, not text blobs", "text": "…", "asset": "json-object" },
{ "title": "Keys that survive your joins", "text": "…", "asset": "resolver" }
]
}Live variants, brand signatures and diagram scenes live on the Motion page: every asset with a motion is shown there static and live, side by side.