Composites
Marketing heroes, sections, and feature grids.
JSON-defined screen
A dashboard defined entirely as data and rendered through an allowlist of real components.
JsonRender
Deliverability
Every element on this screen came from a data structure, not from code.
Last 30 days
| Campaign | Domain | Status |
|---|---|---|
| Spring outreach | mail.example.com | Delivered |
| Product launch | send.example.com | Queued |
The same screen with a node the registry does not allow. It is refused and said, not silently dropped — a screen quietly missing a section is the worse failure.
This section could not be rendered.
- root.children.1 — unknown type "iframe"
Hero
The marketing hero and its parts, in the split (copy + media) layout.
HeroHeroEyebrowHeroTitleHeroDescriptionHeroActionsHeroMedia
Build screens by assembling
A marketing hero in the split layout: copy on the left, a media slot on the right — all on the design tokens.
Section & Feature grid
A marketing section wrapper, its header, and a responsive grid of features.
SectionSectionHeaderFeatureGridFeature
Everything composes
Section, header, and a responsive feature grid — the marketing building blocks.
Static-first
Prerendered pages, served from the edge.
Token-themed
Re-theme the whole system by CSS vars.
Accessible
Base UI primitives, keyboard-first.
Search filter rail
The whole lead-search filter rail, exactly as the sales app renders it — six dimensions, suggestion vocabularies with related-value ranking, the AI entry beside it and the honest cost note. Exhibited so the screen can be reviewed and edited here rather than on the live app: every list, price and parser shown is invented and passed in, so nothing on it can reach a provider or bill a search. The component holds no domain data at all, which is what lets it live in the design system and what lets this gallery depend on nothing app-side.
SearchFilterFormAiSearchEntry
Saved & recent searches
The other half of an idle search console: saved searches on the left with a per-row control, recent ones on the right. The whole row is the link rather than a Load button, because loading a search is a navigation — a search is already a URL, so restoring one means going to it, and Back walks out. Rows arrive already reduced to display text, so the panel knows nothing about what a filter is called or how a filter set becomes a URL; the values here are invented and the rows navigate nowhere.
SearchLibraryPanel
Sending domains
The full-stack sending-domain panel: register a domain, publish the DNS records it returns, and watch it verify. Worker-coupled logic lives in @package/email-web.
SendingDomainsPanel
Register a domain
Registration returns the DNS records to publish — DKIM to prove the domain is yours, and a bounce subdomain that keeps deliverability signals aligned. You publish them at your DNS provider; nothing is changed there for you. Until the domain verifies, sending from it is refused.
Your domains
Publish the DNS records shown on each domain at your DNS provider. Verification usually completes within minutes of the records resolving, and is re-checked automatically.
- outreach.acme.comWaiting for DNS
- CNAME
k1._domainkey.outreach.acme.comk1.dkim.amazonses.com - MX 10
bounce.outreach.acme.comfeedback-smtp.us-east-1.amazonses.com - TXT
bounce.outreach.acme.comv=spf1 include:amazonses.com ~all
- CNAME
- mail.acme.comVerifiedVerified Jul 20, 9:30 AM
Email send confirmation
Confirmation of an email sent from a minted platform address: outcome status, sender, recipients, subject, and the outbox row recording it.
SendConfirmationPanel
- From
- inbox-a1b2c3d4@sendry.ai
- To
- prospect@example.com
Recorded in the outbox as outbox-fixture-1 · provider message 0100019283a1b2c3-fixture
Inbox
Received messages across the workspace’s minted platform addresses: sender, subject, preview, and received time.
InboxPanel
- prospect@example.comAug 5, 9:14 AMRe: Following up on our conversationThanks for reaching out — Tuesday works for a quick call.
- noreply@vendor.exampleAug 4, 5:02 PMYour account statement is ready