Design scarecrow · campaign engine
A working port of Julia's Campaign Designer Figma page — three formats deep rather than all seven. The form on the left derives itself from the chosen format; the surface on the right is really rendered from that state, so every field, colour, countdown and art preset you touch is live. Nothing here is a screenshot.
01
Julia drew two header treatments (v01 Cancel / Save campaign, v02 Save draft / Publish with a big preview canvas). This takes v02's canvas and caption — the thing that makes the editor feel like a design tool — and keeps v01's compact field column.
Campaigns
Preview
Format derives the form. Switching format doesn't grey controls out — they leave, and one muted line at the foot of the group says what left and why. Values are kept, so you can fill everything in once and move between formats. That's Julia's rule; the interesting part is that it makes the format registry a real object rather than a convention, because the same table has to drive the validator, this form, the renderer and bulk edit's shared-field intersection.
02
Every specimen below is the campaign you're editing above — same document, different size. Nothing restyles: blocks come off, and the heading steps down the ramp. Julia's field matrix, rendered rather than tabulated.
03
Split, centred, left. Plus the two content variations: a single countdown pill (never the banner's four cells — there is no vertical room), and rotation with a pause control, because auto-advancing text without one fails reduced-motion users.
04
Chip, spinwheel, text. The spinwheel is the one component Julia flagged as missing from Tangible UI — so here it is in about forty lines of CSS (repeating-conic-gradient + color-mix), taking its fill from Accent 2 as her note requires. Hover one. It is not a blocker; it is a TUI pull request.
05
Julia's open question was "background art waits on an upload control; Tangible UI has no file field yet, so the form uses a select of presets." Presets don't have to mean placeholder — these are CSS, they tint themselves from Accent 2, they cost no bytes, and they cannot arrive at the wrong aspect ratio. An uploader can land later as one more entry in the same list.
06
Left: the campaign as authored — every field, including the ones this format can't show. Right: what delivery hands the renderer for the current format. The difference between the two columns is the format registry.
Authored document
Delivered payload
07
Things the drawings can leave implicit and an implementation cannot. Each one is a question for Julia or a decision for us — not a defect in the design.
Resolved here, needs a nod
Still open
Not carried over from the earlier kitchen sink, deliberately: the rotating letter-by-letter strip, the navbar-absorbing placement, and the hero-collapses-on-scroll study. They were fun and they are not v1.