UI Density & Confidence Standards¶
Durable guidance for card structure, navigation rails, metadata exposure, and the visual confidence that defines SageOx product surfaces.
Card Structure & Density¶
Header-to-Content Spacing¶
The header must visually own the content beneath it. If a header floats above its content, spacing is too generous.
| Region | Padding | Rationale |
|---|---|---|
| CardHeader | 16px 20px 8px 20px |
Top breathes; bottom pulls toward content |
| CardContent | 8px 20px 16px 20px |
Top binds to header; bottom closes the card |
The gap between header bottom (8px) and content top (8px) yields 16px total, which is tight enough that the header claims its content without collision.
Card Height Expectations¶
A card should never feel taller than the information it contains.
- Empty states:
py-4maximum. No oversized icons. One sentence. - Single-item lists: No extra padding. The card collapses naturally.
- Full lists: Items set the rhythm; the card follows.
Spacing Between Cards¶
Cards in a space-y-6 stack (24px) is the standard inter-card gap.
Do not reduce this. The breathing room between cards is earned;
the tightness within cards is what makes it work.
Navigation Rails¶
Width Philosophy¶
A nav rail should feel like a tool, not a room. If the sidebar feels roomy, it is too wide.
| State | Width | Padding | Rationale |
|---|---|---|---|
| Expanded | w-52 (208px) |
px-2.5 |
Labels breathe but do not float |
| Collapsed | w-14 (56px) |
px-1.5 |
Icon centered with minimal air |
Nav Item Density¶
| Property | Value | Note |
|---|---|---|
| Icon-label gap | gap-2.5 (10px) |
Tighter than body text spacing |
| Min height | 34px |
Enough for touch; no wasted vertical |
| Horizontal padding | px-2.5 expanded, px-1.5 collapsed |
Items fill available width |
| Font size | 14px / leading-5 |
Matches body text hierarchy |
When a Nav Is "Too Wide"¶
- Labels have visible right-side dead space
- The nav column competes with content for attention
- Collapsing the nav feels like a relief rather than a compromise
Identifiers & Metadata¶
When Internal IDs May Be Shown¶
Almost never. Internal IDs are shown only when:
- The user needs to copy or reference the ID in another system
- The ID is the only available display name (no human-readable alternative)
- A debug or admin mode is explicitly active
When Technology Labels Should Be Implied¶
| Redundant | Better | Why |
|---|---|---|
| "git" under a repo name | (omit) | The Repositories card implies git |
| "REST API" in an endpoint list | (omit) | Context makes protocol obvious |
| "JSON" next to a payload | (omit) | Code block formatting implies it |
| "PostgreSQL" in a migration | "Migration" | The system defines the DB |
Rule: If the surrounding context (card title, section name, icon) already communicates the technology, the label adds noise.
Good vs Bad Metadata Exposure¶
Bad (repo card):
Good (repo card):
Bad (member row):
Good (member row):
Confidence & Restraint¶
How SageOx UI Expresses Confidence¶
Confidence is shown through restraint, not minimalism theater.
- Tight spacing within cards says "this information belongs together."
- Removing redundant labels says "we trust users to understand context."
- Collapsing empty states says "we acknowledge absence without apologizing."
- Narrow nav rails say "the content area is what matters."
Signs of Over-Politeness¶
| Symptom | Diagnosis | Fix |
|---|---|---|
| Headers feel detached from content | Padding is apologetic | Reduce header bottom / content top |
| Cards feel tall with little content | Padding fills the void | Collapse padding when sparse |
| Sidebar feels spacious | Width compensating for sparse items | Tighten to content-fit |
| Labels restate the obvious | UI explaining itself | Remove; trust context |
| Empty states are dramatic | Large icons, multiple paragraphs | One line, modest icon |
Restraint Principles¶
-
Whitespace explains structure, not apologizes for it. Every pixel of padding should serve grouping or separation.
-
Headers own their content. The gap between a header and its first item should feel like a breath, not a pause.
-
Cards are as tall as their content. Never pad a card to fill a visual expectation.
-
Navigation is a tool, not a room. If the nav feels comfortable, it is stealing focus from the work area.
-
Obvious facts are implied. If the section title, icon, or context already communicates something, a label repeating it is noise.
Related¶
- Lists & Pagination - Load-more pattern, sorting rules, list components
- Numbered Steps Timeline - Sequential process visualization
- Gradient Overlays - Surface glow, fade masks, atmospheric depth
- For Product Engineers - Token reference and integration
- Brand in Product - Color and identity application