Rebuild the console on the house design language

Refactorkamo-internal
Shipped
26 Agosti 2026, 00:29 UTC
Author
kamo
Commit
94ad3f8

The first pass was wrong and it was wrong in a way that should have been obvious before a line was written: I built Tailwind divs, MUI Tabs and hardcoded rgba colours inside a 1400px column, in an application where every other module page is a gradient masthead with a counted section rail over a full-bleed console. I did not look at /kb first. This is that page's vocabulary, applied properly. The masthead matches the knowledge base's: gradient band with one 28-second aurora light, back button, icon tile, operator-label eyebrow, h1, subtitle, and a section rail whose active tab carries a layoutId underline that travels. The Safety count rides up to that rail and paints in the ERROR tone rather than the neutral one — everywhere else on this rail a count is information, and there it is the whole point: a clinician should see from the tab that four critical results are unacknowledged without visiting it. Content is full-bleed to 1720px, not a document measure. The day grid, the safety rail and the search results are comparisons, and a narrow column turns a comparison into a scroll. Search results and waiting-room cards are grids that go to three columns on a wide monitor instead of one long list with a lot of nothing beside it. app/lib/patientsConsole.ts + **************** are the kit, built on a ClinicalTone rather than reusing KbTone — the same reasoning kb/console/primitives.tsx gives for not reusing HR's: widening a domain-specific tone type to serve another screen changes every panel that already depends on it. CountUp and the column helpers ARE imported from hr/overview/primitives, because those have no domain in them. Every tone paints from --commerce-* or --color-primary and never a hex, so a white-label org's critical chip still reads as urgent. Two things the kit brought that the first pass simply did not have: The four-state panel contract. `failed` is distinct from `empty`, and on a clinical screen that is not pedantry — "no critical results are waiting" and "we could not ask" are different facts, and rendering the second as the first tells a practice its panic-value queue is clear on a day it may not be. The safety panel now settles each of its five queues independently, so one failing endpoint cannot blank the other four. The rail IS the selection. Clicking a safety tile opens exactly the rows it counted, from the same fetch — not a separate list that can disagree with the number above it. Everything is animated through the house EASE_HOUSE and respects prefers-reduced-motion: staggered list reveals, a travelling segmented thumb, expanding visit rows, and a live dot that keeps its core and drops its halo when motion is reduced. Rooming a patient now starts the encounter in the same click, because on the server those are one act — the visit opens and the care relationship that lets the clinician read the chart is written with it. 3074 tests green, typecheck clean, production build compiles.

All changes

Je, unaona nini kuhusu usafiri?

Kila moja ya hizi updates ardhi katika nafasi yako ya kazi moja kwa moja. Kuanza bure na kuangalia kukua wiki baada ya wiki.

Kuwa Huru MileleMtazamo wa bei