Reuse before you write. A second copy of any component below is a review finding. Most live in src/shared/components/.
Rules that apply to all of them
- A block holds no rights logic. The page decides what to pass, for example the action of an
EmptyState, and the block renders it.
- Row actions appear on hover and on keyboard focus, so a person without a mouse reaches them. The lint check
hover-actions reports a hand-built reveal.
- Primitives from the shadcn registry live in
src/components/ui/. A feature never redefines one. The class strings of an installed component may set tokens and roles, and its structure and behaviour stay as the registry has them.
- Feature code never imports another feature. Code used by two features moves to
src/shared/ or src/core/.
Sign-in page
The sign-in page has two designs: a centred card on the mesh gradient (ui-mesh) and a two-column split with a wallpaper. Both read the same tokens and the same form.
Last modified on November 4, 2026