Skip to content

feat(design): Add the 0.2.0 primitives, tokens and the intent kind - #3

Merged
nfebe merged 11 commits into
mainfrom
feat/dashboard-primitives
Sep 9, 2026
Merged

feat(design): Add the 0.2.0 primitives, tokens and the intent kind#3
nfebe merged 11 commits into
mainfrom
feat/dashboard-primitives

Conversation

@nfebe

@nfebe nfebe commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

Moves the components and tokens each consumer was keeping its own copy of into this package, and adds a ninth knowledge kind.

The new kind is intent, for what a project exists to do and what it deliberately is not. Nine hues is past the point where colour alone tells them apart, so anything drawing by kind needs a second channel.

Everything from 0.1.0 keeps working unchanged.

nfebe added 11 commits September 1, 2026 06:26
The dashboard maintained its own copies of the shared components and its
own fork of the theme, so the two surfaces drifted apart and a fix in one
never reached the other. The pieces it had that this package did not are
the reason it could not simply drop them.

Adds a failed read with a retry, a list placeholder, a dismissible action
error, page navigation, themed line art, and a theme switch. The two
loading treatments are now one component: the richer spinner, with the
source of the work named in the line beneath it.

The error and the theme switch take what they show rather than reading it
from shared state, so an application keeps whatever it already uses to
hold one and nothing here depends on a particular framework.
The dashboard defined its own scale for how bad a finding is and its own
ordered palette for a row of figures, which is why it could not take the
preset as it stood.

Both are now part of the shared vocabulary, so a severity means the same
colour wherever it is shown.
A switcher whose options are not all available has to say so on the option
rather than hiding it, and a reader scanning a row of five words finds the one
they want by its mark before its label. Without either, an application that
needs them writes the strip out by hand, which is how the same control came to
exist in two designs across six screens.

Also takes a tighter size, for a strip inside a panel header rather than one
standing beside a page title.
A modal is right for a question with an answer. It is wrong for writing
something: it floats in the middle of the window, it is only as tall as what is
in it, and it covers the thing being written about.

This comes in from either side at the full height of the window, takes a share
of the width rather than a fixed one, and holds the page still behind it. Below
the small breakpoint it takes the whole width, because two fifths of a phone is
a column too narrow to write in.

Five panels across the applications were each drawing their own version of this,
which is why they open from different sides at different widths.
Knowledge can be filed as intent: what a project exists to do, who it is
for, and what it deliberately is not. It carries its own colour, picker
entry and description wherever kinds are shown.

The palette is spaced by hue rather than picked by eye. Intent took the
gap near 298 degrees. The other wide gap falls in the green that
collapses onto pink for a red-green colourblind reader.
@nfebe
nfebe merged commit aa58afa into main Sep 9, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant