Skip to main content

Crate makeover_layout

Crate makeover_layout 

Source
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.