The float-label input family the CRM record forms use (e.g. crm AddPersonForm). Controlled by the consumer; the label floats on focus/fill.
We never share it.
This field is required.
RecordListsearchable record table · row select · empty
The generic searchable record table (the CRM/people directory list). Columns, selection, search, and decrypt/empty states are all driven by props.
Name
City
Ada Lovelace
London
Grace Hopper
New York
Katherine Johnson
Hampton
InlineNotetone
InfoA neutral contextual message.
SuccessSomething went well.
WarningSomething needs attention.
ErrorSomething is wrong.
Modal · Drawer · ConfirmDialog · Toasttriggers
LiaanLoader · DecryptSpinnerasync states
Loading
Decrypting…
Decrypting…
AppChromebrand · role-nav · actions slot
The shared top bar every app wears — brand + context tag, the role-aware three-circles nav, and a right-side actions slot. Pass a linkComponent for client-side routing (here a plain anchor).
OrgPicker · EventPickershared · data-bound (best seen in-app)
The two remaining shared @liaan/ui composites — the CRM “link a member to organisations / events” pickers. They drive an async loader and a full set of localised labels, so they live on the real crm screens rather than a synthetic demo; listed here so the catalogue is complete. Both are built from the primitives above (Modal, FloatText, Button, Badge) on the shared tokens.
Zone B
Feature-specific
Genuinely bespoke, app-local surfaces — allowed exceptions to reuse-first. R1 is read-only over the apps, so these are catalogued (name + the CSS that styles them, from INVENTORY-style); R3 decides which get promoted into @liaan/ui and which stay local.
Specialised shared — the governance diff
Shared in @liaan/ui but specialised: the one diff card the revision ceremony uses. Rendered live.
removedadded
Members may submit and revise feedback within the consultation window.
The same diff core in the stance tone — the policy-feedback workshop palette (agree-green / disagree-red on the shared stance tokens), adopted by ProposedEditCard in R3.4.
Members may submit and revise feedback within the consultation window.
removedadded
App-local feature surfaces
policy-feedback
Reading + annotation surface
The document reading column with inline highlight/annotation affordances — the reference editorial look.
The document registry rows / catalogue entries (quiet-archive register).
.reg-* (registry CSS)
unaya
Document detail
A single document/template view with tier + status vocabulary.
.doc-* (document CSS)
crm
Add-a-person form layout (RA)
The RA "add a person" screen — the float inputs, listboxes, button and toast are all shared @liaan/ui primitives; only the page-head + three fieldset sections are laid out locally (on shared tokens).
.crm-people-* (people.css)
website
Shared-core tokens (aliased)
The public site imports @liaan/design/tokens.css (the hard contract) and aliases its shared-core brand tokens onto the platform semantics — --teal→--accent, --bg→--canvas, --bg-warm→--page-bg, --radius→--radius-card, --font-*→--serif/--sans; --hairline, --space-1..4, --radius-cta, --radius-pill resolve straight from @liaan/design. A platform token edit now propagates to the website.
apps/website/app/styles/tokens.css
website
Marketing palette + scale (local, inherits less)
By owner ruling (Decision 12) the site keeps its own marketing identity local: the navy/gold/forest palette, the dark-photo overlay chrome (--on-dark*, --overlay), the marketing type scale (--fs-*, --lh-*, --tracking-*), the editorial layout frame (--container*, --gap-grid, --header-h, --space-5..8), the refined editorial radii (--radius-sm/-lg) + navy-tinted shadows, and the motion --ease.
apps/website/app/styles/*.css
website
Marketing components + layout
The ported marketing pages keep their own components/layout where the editorial look is genuinely better (site header/footer, hero, donation tiers, editorial grid) rather than force-migrating onto @liaan/ui primitives just for uniformity.