design: file every generator by what it owns, and dress it in ten languages #74

Merged
PerishFire merged 1 commit from land/design-overhaul into main 2026-08-14 03:30:34 +00:00
Owner

The four buckets were content, control, layout, and surface, and only one
of them survived an audit: control was exactly the set of components that
own a focusable element. The rest were one axis with its values blurred.
Every generator is filed now by what it takes responsibility for, and the
rooms are mark, arrange, enclose, focus, layer, and document.

That axis pays. Three generators turned out to be compositions wearing a
name: Badge was Tag at look quiet, Spin was Meter with no value, and Page
was Frame with a title that Head already carries. Forty one generators
where a naive count of the work would have said forty four.

The substrate is its own package. @perish/token holds forty four atoms, a
contract that refuses a theme which omits one or invents one, and eleven
palettes. The design plugin carries the sass importer that makes pkg:
specifiers resolve, so a consumer configures nothing new.

Ten design languages ride on it: Swiss, Material, Terminal, Cupertino,
Carbon, Ant, Brutal, Relief, Glass, Folio. They share one proof screen,
one set of generators, and no CSS of their own. Every atom they asked for
and could not find is recorded in LEDGER.md beside the render that found
it, and so is every mistake made on the way to them.

The app layer writes no CSS and no native tag. That is what turns the
proof screen into an instrument: a layout it cannot reach is a gap in the
vocabulary, and a structure it cannot write is a missing generator.

Contrast is asserted rather than hoped for, the cascade is banded rather
than ordered by accident, a component answers to its own box rather than
to the window, and pnpm look holds a text baseline of how all of it
appears.

The four buckets were content, control, layout, and surface, and only one of them survived an audit: control was exactly the set of components that own a focusable element. The rest were one axis with its values blurred. Every generator is filed now by what it takes responsibility for, and the rooms are mark, arrange, enclose, focus, layer, and document. That axis pays. Three generators turned out to be compositions wearing a name: Badge was Tag at look quiet, Spin was Meter with no value, and Page was Frame with a title that Head already carries. Forty one generators where a naive count of the work would have said forty four. The substrate is its own package. @perish/token holds forty four atoms, a contract that refuses a theme which omits one or invents one, and eleven palettes. The design plugin carries the sass importer that makes pkg: specifiers resolve, so a consumer configures nothing new. Ten design languages ride on it: Swiss, Material, Terminal, Cupertino, Carbon, Ant, Brutal, Relief, Glass, Folio. They share one proof screen, one set of generators, and no CSS of their own. Every atom they asked for and could not find is recorded in LEDGER.md beside the render that found it, and so is every mistake made on the way to them. The app layer writes no CSS and no native tag. That is what turns the proof screen into an instrument: a layout it cannot reach is a gap in the vocabulary, and a structure it cannot write is a missing generator. Contrast is asserted rather than hoped for, the cascade is banded rather than ordered by accident, a component answers to its own box rather than to the window, and pnpm look holds a text baseline of how all of it appears.
design: file every generator by what it owns, and dress it in ten languages
All checks were successful
guard / guard (pull_request) Successful in 1m30s
guard / guard (push) Successful in 1m27s
62e7015e64
The four buckets were content, control, layout, and surface, and only one
of them survived an audit: control was exactly the set of components that
own a focusable element. The rest were one axis with its values blurred.
Every generator is filed now by what it takes responsibility for, and the
rooms are mark, arrange, enclose, focus, layer, and document.

That axis pays. Three generators turned out to be compositions wearing a
name: Badge was Tag at look quiet, Spin was Meter with no value, and Page
was Frame with a title that Head already carries. Forty one generators
where a naive count of the work would have said forty four.

The substrate is its own package. @perish/token holds forty four atoms, a
contract that refuses a theme which omits one or invents one, and eleven
palettes. The design plugin carries the sass importer that makes pkg:
specifiers resolve, so a consumer configures nothing new.

Ten design languages ride on it: Swiss, Material, Terminal, Cupertino,
Carbon, Ant, Brutal, Relief, Glass, Folio. They share one proof screen,
one set of generators, and no CSS of their own. Every atom they asked for
and could not find is recorded in LEDGER.md beside the render that found
it, and so is every mistake made on the way to them.

The app layer writes no CSS and no native tag. That is what turns the
proof screen into an instrument: a layout it cannot reach is a gap in the
vocabulary, and a structure it cannot write is a missing generator.

Contrast is asserted rather than hoped for, the cascade is banded rather
than ordered by accident, a component answers to its own box rather than
to the window, and pnpm look holds a text baseline of how all of it
appears.

Land-Source: design-overhaul@b5d1c0a02b9ab4bc820c53a925cbe88c33f45f67
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
PerishFire/design!74
No description provided.