Expand description
The renderer-agnostic half of the make-family design system.
makeover answers what colour, and varies by theme. makeover-geometry
answers how much space, and varies by density and surface. This crate
answers what the thing is, and varies by nothing.
§The deferral rule
A description names intents and relationships, never values. Say
Fill::Raised, never #D9DDF4. Say Gap::Peer, never 6px. What is
left once colour and spacing are deferred is composition: which edges
are lit, what inverts on press, what nests in what.
The constraint that shapes all of it: a renderer that can only paint
rectangles has to be able to express the result. egui has no
box-shadow: inset and one stroke per widget with no per-side control; a
terminal has box-drawing characters and one cell of resolution, and cannot
draw a two-tone lit edge at all. A description that assumes per-side edges
is a CSS description wearing a neutral name. So this crate names the
intent — this region is a well — and each renderer chooses an expression
it can actually produce, including dropping half of one.
§Scope of this first cut
Depth only: the bevel and the surfaces it shapes. That much is settled,
and settled the hard way — the vocabulary here was read off audiofiles’
ui::theme and ui::widgets, which are the only implementation written
by a consumer with no CSS, then checked against both webview apps. All
three agreed once Balanced Breakfast’s fills were corrected.
Deliberately absent, because each is a naming decision rather than a transcription: badge versus chip, toast versus banner, the list row’s parts, heading levels, segmented controls, and whether a description names loading state at all. Those are tracked as subtasks of the extraction task and land as they are settled. Guessing at them now is how a description becomes a framework.
Enums§
- Bevel
- Which way the light falls across a two-tone edge.
- Depth
- How a region sits relative to the surface behind it.
- Edge
- One side of a bevel, named by the intent it takes.
- Fill
- A surface intent a region is filled with.
Traits§
- Intent
- A colour intent this crate refers to but never resolves.