Rules document
The file every downstream agent must read before producing Atlas work.
DESIGN.md
Use the tree to inspect foundations, component families, guidelines, applied kits, and quality gates without leaving the catalog.
Atlas is a layered design-system package: canonical rules, tokens, reusable components, preview evidence, guidelines, applied UI kits, source evidence, and tests. The root catalog should help you move across those layers without mistaking one applied app for the whole system.
The file every downstream agent must read before producing Atlas work.
DESIGN.md
Aggregated color, type, spacing, radius, shadow, and font contracts.
styles.css
Desktop and mobile implementations prove the system, but do not replace it.
ui_kits/
Design-system package contract, foundations, component rules, mobile contract, and applied-kit boundaries.
Instructions for generating or extending Atlas components without treating an app screen as the system.
Flush is the action color. Use 600 for the primary action, focus marker, active row, and allocation segments; keep it out of decorative page washes.
Newsreader carries display hierarchy and tabular numbers; Hanken Grotesk carries UI copy; IBM Plex Mono is reserved for references, dates, hashes, and money.
Atlas spacing is a compact operational scale: small steps for dense controls, larger bands for section rhythm, and explicit mobile breathing room where touch targets need it.
Use small radius for controls, medium radius for operational surfaces, pill radius only for compact metadata, and plum-tinted shadows only when elevation clarifies hierarchy.
Shadows are plum-tinted and functional. Use them to separate overlays or raised panes from the workspace, not as a decorative glow layer.
Use the full lockup for package identity, the inverse lockup on plum surfaces, and the compact mark for tight chrome or identity anchors.
The launch icon is its own asset, not the 40px mark scaled up. It uses a plum product canvas, ledger geometry, and a Flush mark built from paths.
Flush-600 · #E03A63
The build folder mirrors the source marks used by the packaged app. Keep parity between source SVGs and runtime exports.
Atlas icons are 24px line glyphs with 1.5px strokes and currentColor inheritance. Use them as quiet operational signals, not decorative badges.
All 87 source symbols are rendered here from assets/icons.svg. The grouping is for scanning only; implementation should reference the exact symbol ID shown beside each glyph.
Keep icons subordinate to labels. Size them by surface density, preserve currentColor, and avoid introducing one-off filled variants.
The Core command primitive that backs every actionable surface — drawer footers, table row actions, header controls, and inline confirmations.
Primary, secondary, ghost, danger, icon, and disabled command states. Renders consistent height, focus ring, and loading spinner so every entry point reads the same.
components/core/Button.jsxCompact metadata primitives used in tables, lists, and dense headers. Variants are driven by props instead of new components.
Inline status, tag, and filter pill with neutral, success, warning, and danger tones. Drives allocation legends, event states, and inline filters.
components/core/Chip.jsxSingle-letter and image avatar with size and tone variants. Used in workforce explorer rows, assignee summaries, and compact stacks.
components/core/Avatar.jsxDrawer form primitives promoted from the workforce app. They share label, hint, and validation rhythm so drawers feel consistent across event types.
Labelled input wrapper with hint slot, validation slot, optional adornments, and consistent focus styling. The base of every drawer form row.
components/core/Field.jsxTwo-column row that pairs related fields (start/end, role/grade, currency/amount) while preserving Field's vertical rhythm and validation spacing.
components/core/FieldRow.jsxSecondary helper text for Field. Carries the same metadata tone used across tables and matrix cells so guidance never competes with errors.
components/core/Hint.jsxError, warning, and success message used directly under Field. Aligns with the Feedback family tones so errors look the same in drawers and banners.
components/core/ValidationMessage.jsxThe Core command primitive. Primary, secondary, ghost, danger, and icon variants share height, focus ring, and loading spinner so every entry point reads the same.
Rendered directly in the catalog as native markup — 28px tall, hairline border, flush focus ring. Primary uses --at-flush-600; default sits on white; ghost is transparent until hovered.
Same ring on every focusable element: --ring-accent.
Compact metadata primitives used in tables, lists, and dense headers. Variants are driven by props instead of new components.
Two-colour person encoding everywhere: employees read plum, contractors read flush. The same anchors appear in the chip, the avatar, and downstream in AllocationBar / matrix split bars.
Drawer form primitives promoted from the workforce app. Field, FieldRow, Hint, and ValidationMessage share label, hint, and validation rhythm so drawers feel consistent across event types.
Promoted from the event drawer pattern: label above, 30px control, 11px hint, Flush focus/error states, and compact equal-column rows. Use the tree's Forms guideline for usage rules.
Transient post-commit feedback. Success, error, and info tones share anatomy: status glyph, title, and optional description.
Persistent section status the user keeps while working: time-travel, connection, and environment states.
Full drawer-body replacement for concurrency conflicts. Requires a reload or discard decision; never used for validation or network errors.
Stacks per-work-group capacity %, colour-coded by category. Under 100% leaves a hatched plum tail; over 100% saturates as a warning.
Joins KPI tiles into one hairline-bordered rectangle: uppercase label, display-serif numeral, and optional meta line.
Validates the root catalog and layered package shape.
node tests/design-system-contract.test.jsValidates form, validation, and feedback primitive coverage.
node tests/m2-component-families.test.jsValidates Work groups, Functions, People, global search/time machine, and spacing constraints.
node tests/mobile-contract.test.jsValidates app icon source/runtime parity and exported PNG dimensions.
node tests/app-icon.test.js