Design System / Foundations
AbilityPath Design Library
A shared visual foundation for designers and engineers. Tokens are organized semantically so the library is easy to apply and ready to grow into a full component system.
Foundation 01
Color
Color tokens are organized by usage: brand identity, primary theme scale, backgrounds, accents, status feedback, and neutral structure.
Primary Color Scale
Supports interaction states, selected backgrounds, and brand expansion. 600 is the default action color.
- Use 600–700 for primary actions and interactive foregrounds.
- Use 50–200 for selected rows, tabs, and subtle brand surfaces.
- Use 300–500 for charts, accents, and supporting brand moments.
Color Tokens
All semantic tokens organized by role. Reference token names in code — never raw hex values.
| Token | CSS Variable | Value | Description |
|---|---|---|---|
| Brand | |||
| brand/primary | --color-brand-primary | #2563EB | Primary CTA, links, selected states, brand emphasis. |
| brand/primary-hover | --color-brand-primary-hover | #1D4ED8 | Hover, active, or pressed state for primary actions. |
| brand/primary-soft | --color-brand-primary-soft | #EFF6FF | Low-emphasis selected backgrounds and brand highlights. |
| brand/primary-strong | --color-brand-primary-strong | #0F172A | Dark navigation shell and high-contrast brand surface. |
| Background | |||
| background/page-from | --color-background-page-from | #F5F6F8 | Page background gradient start (top-left). Used in body linear-gradient. |
| background/page-to | --color-background-page-to | #F9F7EE | Page background gradient end (bottom-right). Warm cream tint. |
| background/surface | --color-background-surface | #FFFFFF | Cards, tables, top-level surfaces. |
| background/panel | --color-background-panel | #F7F8FA | Detail panels, table headers, callouts. |
| background/sidebar | --color-background-sidebar | #F4F6F8 | Sidebar navigation background. |
| background/brand-soft | --color-background-brand-soft | #EFF6FF | Selected branded surface and gentle brand highlight. |
| background/disabled | --color-background-disabled | #F3F4F6 | Disabled controls, inactive fields. |
| Text | |||
| text/primary | --color-text-primary | #0F172A | Headings, data values, primary content. |
| text/secondary | --color-text-secondary | #475569 | Body copy, labels, secondary content. |
| text/tertiary | --color-text-tertiary | #64748B | Metadata, helper text, tertiary content. |
| text/disabled | --color-text-disabled | #9CA3AF | Disabled and inactive text. |
| text/on-brand | --color-text-on-brand | #FFFFFF | Text on brand-colored or dark surfaces. |
| Border | |||
| border/default | --color-border-default | #E5E7EB | Card borders and default dividers. |
| border/subtle | --color-border-subtle | #E2E8F0 | Table dividers, chart grid, subtle separator. |
| border/strong | --color-border-strong | #CBD5E1 | Control outlines and strong dividers. |
| border/brand | --color-border-brand | #2563EB | Focus rings and selected state borders. |
| Status | |||
| status/success | --color-status-success | #15803D | Connected, approved, completed, resolved. |
| status/success-subtle | --color-status-success-subtle | #EDFDF5 | Success chip background fill. |
| status/warning | --color-status-warning | #B34B28 | Needs review, caution state. |
| status/warning-subtle | --color-status-warning-subtle | #FFFAE9 | Warning chip background fill. |
| status/info | --color-status-info | #2563EB | Informational state and neutral guidance. |
| status/info-subtle | --color-status-info-subtle | #EFF6FF | Info chip background fill. |
| status/danger | --color-status-danger | #EF4444 | Error, failed, destructive state. |
| status/danger-subtle | --color-status-danger-subtle | #FFF5F5 | Danger chip background fill. |
| Accent | |||
| accent/blue | --color-accent-blue | #74A0F7 | Chart series, analytics highlights. |
| accent/cyan | --color-accent-cyan | #0891B2 | Secondary chart or data series. |
| accent/violet | --color-accent-violet | #8263ED | Tertiary chart / category color. |
| accent/amber | --color-accent-amber | #F2BE4C | Highlight data, charts, non-status emphasis. |
| accent/green | --color-accent-green | #10B981 | Positive chart accent; not for success text. |
| accent/slate | --color-accent-slate | #586577 | Icon and utility accent in key screens. |
| accent/soft-blue | --color-accent-soft-blue | #E0F2FE | Soft accent background for info-like UI areas. |
| accent/soft-violet | --color-accent-soft-violet | #EDE9FE | Soft categorical background. |
| Neutral | |||
| neutral/900 | --palette-neutral-900 | #0F172A | Primary text, strongest foreground, dark shell. |
| neutral/800 | --palette-neutral-800 | #1F2937 | High-emphasis text and dark UI elements. |
| neutral/700 | --palette-neutral-700 | #334155 | Strong body text and table content. |
| neutral/600 | --palette-neutral-600 | #475569 | Secondary body copy and labels. |
| neutral/500 | --palette-neutral-500 | #64748B | Metadata, helper text, tertiary content. |
| neutral/400 | --palette-neutral-400 | #7F91AB | Inactive text, placeholders, muted labels. |
| neutral/300 | --palette-neutral-300 | #CBD5E1 | Control outlines and strong borders. |
| neutral/200 | --palette-neutral-200 | #E2E8F0 | Table dividers, chart grid, subtle border. |
| neutral/100 | --palette-neutral-100 | #F1F5F9 | Subtle fills and table header backgrounds. |
- Use Brand and Primary Scale for product identity and interaction states.
- Use Background tokens for surfaces and the app environment.
- Use Accent tokens for analytics, charts, and category colors.
- Use Status tokens only for workflow / system meaning — never decorative.
- Use Neutral tokens for text, border, divider, icon, and structural UI needs.
Foundation 02
Typography
Inter is the only typeface used across the product. Use weight, size, and line height to create hierarchy before adding color or decoration.
1. Font Family
Regular, Medium, Semi Bold, and Bold are used. Metrics use Semi Bold. Primary titles use Bold. Compact badges and nav eyebrows use Semi Bold.
2. Data & Metric Styles
Metrics are data-display styles, not headings. Use only for numeric values, KPI cards, and chart totals.
3. Core UI Type Scale
Covers the main reading hierarchy: screen titles, shared titles, body text, tables, captions, badges, navigation, and pagination.
4. Typography Rules
- Keep Inter as the only type family across all admin screens.
- Use Semi Bold (600) for Metric LXL, Metric XL, and Metric M.
- Do not use metric styles as headings — metrics are only for numeric / data display.
- Use one shared Title style for panels, sections, chart cards, and alert titles while specs match.
- Do not split Panel Title and Section Title unless the visual specs diverge.
- Use Screen Title only for top-level page titles.
- Use Table Header, Table Value, Caption, and Badge styles consistently in data tables.
- Default supporting UI copy to Body M unless the pattern clearly requires Body L.
Foundation 03
Spacing
A 4px base grid. All spacing tokens are multiples of 4. Semantic shortcuts map to the most common layout patterns across key screens.
Spacing Scale
Observed patterns: 24px page gutters, 24px card padding, 16–24px section gaps, 8–12px compact control spacing, 40px button height, 78px table row height.
Semantic shortcuts
Foundation 04
Radius
Border radius tokens scale from tight inputs to fully rounded pills. Larger values for cards and page containers reinforce the spacious, breathable feel of the product.
Radius Scale
Six steps from xs (4px) through pill (999px). Component aliases map each element to its designated step.
→ --radius-input
→ --radius-badge
→ --radius-button
→ --radius-card
→ --radius-page-card
Component aliases
Foundation 05
Shadows
Three shadow levels establish elevation hierarchy. All shadows use Neutral 900 at low opacity — never colorful or tinted — for a calm, unified feel.
Shadow Scale
From subtle control lift through cards to overlays.
Components 01
Component Overview
AbilityPath builds on Tailwind CSS, shadcn/ui, and Recharts as its open-source foundation. This section documents the product-specific customization layer — tokens, variants, states, and usage rules that make components feel uniquely AbilityPath.
Foundation Stack
The three-layer architecture: open-source primitives → AbilityPath tokens → AbilityPath product components.
globals.css to apply AbilityPath tokens.globals.css, override the shadcn semantic variables to point to AbilityPath tokens:--primary: var(--color-brand-primary);--primary-foreground: var(--color-text-on-brand);--destructive: var(--color-status-danger);--radius: var(--radius-m);This drives all shadcn components automatically without forking any component source code.
Components 02
Button
Buttons help users take actions, make choices, and move through key workflows.
- Use Primary for the single most important action on a page or dialog (e.g. "Add New Case", "Save Changes").
- Use Secondary for supporting actions that sit alongside a primary action (e.g. "Export", "Filter").
- Use Text buttons for low-emphasis inline navigation or link-like actions.
- Use icon buttons for table actions, overflow menus, print, edit, and informational controls.
- Never place two Primary buttons next to each other in the same context.
Components 03
Cards
Cards group related content on a surface. Four variants cover all contexts in the product: default, metric, chart, and table container.
Metric Card
Base: shadcn/ui Card — Used in Dashboard to show KPI summary numbers at the top of every page.
- Use Metric Cards only at the top of dashboard-style pages for high-level KPI numbers.
- Show a maximum of 4 metric cards in a row to avoid cognitive overload.
- Always include a change indicator (up/down/neutral) to provide context for the number.
- Do not use Metric Cards inside forms or detail pages.
Default Card
Base: shadcn/ui Card — The standard content container. Used for form sections, list panels, detail views, and general content grouping.
Components 04
Badges & Status Tags
Status badges communicate workflow state across tables, case cards, and detail views. Built with Tailwind utility classes using AbilityPath status color tokens.
Status Variants
Base: Tailwind CSS — Five semantic states map directly to the status color token pairs defined in the Color foundation.
| Participants | Source | Status | Contact | Edit by | |
|---|---|---|---|---|---|
RJ Robert Johnson | AI Intake | Needs Review | (917) 012-3456 | 11/21/2025, 11:32 AM | |
AT Aisha Thompson | Web Form | Waiting Info | (650) 555-0148 | 11/20/2025, 9:14 AM | |
JW James Whitfield | Staff | Ready for Handoff | (408) 555-0193 | 11/19/2025, 2:45 PM |
- Use status badges only to communicate workflow or system state — never as decorative labels.
- Use the no-dot badge style across tables, lists, cards, and chips.
- Map each product state to exactly one badge variant — do not mix status colors arbitrarily.
- AbilityPath intake states: Active → Success · Needs Review → Warning · In Progress → Info · Inactive/Closed → Neutral · Failed/Rejected → Danger.
Components 05
Forms
Form components follow the shadcn/ui pattern with AbilityPath token overrides. Used primarily in the Intake detail panel, case creation flows, and settings pages.
Input
Base: shadcn/ui Input
Base: shadcn/ui Select
Base: shadcn/ui Textarea
Base: shadcn/ui Checkbox
Components 06
Tables & Lists
Data tables are the primary interface in the Intake Cases screen. Built on shadcn/ui Table with AbilityPath row states and empty state patterns.
Data Table
Base: shadcn/ui Table — Supports hover, selected, and empty states.
| Participants | Source | Status | Contact | Edit by | |
|---|---|---|---|---|---|
RJ Robert Johnson | AI Intake | Needs Review | (917) 012-3456 | 11/21/2025, 11:32 AM | |
RJ Robert Johnson | AI Intake | Needs Review | (917) 012-3456 | 11/21/2025, 11:32 AM |
- Use primary text style (
cell-primary) only for the name/identifier column. - Row selection uses
--color-background-row-selectedwith a--color-brand-primaryleft rail — use only for single or multi-select workflows. - Inactive records should be visually de-emphasized with 55% opacity, not hidden.
- Icon buttons in action columns should be 32px to keep row height compact.
Components 07
Charts
All charts use Recharts. AbilityPath customizes axis styling, tooltip appearance, color sequences, and chart card containers. Never override Recharts internals — configure via props only.
Chart Card Anatomy
Base: Recharts + shadcn/ui Card — Every chart is wrapped in a Chart Card with a consistent header, optional legend, and fixed height body.
- Always wrap Recharts components inside a Chart Card with a title and subtitle.
- Use the primary color scale (brand-primary, accent-blue, accent-cyan, accent-violet, accent-amber) for multi-series data — in that order.
- Never use status colors (green/red/yellow) for chart data series — those are reserved for status badges only.
- Always render an empty state when data is null or empty. Never show a broken or empty chart body.
- Segmented bars: use for compact distribution summaries such as language volume.
- Row charts: use for ranked workflow durations such as Time in Stage.
- Line charts: use for time-series trends such as Backlog Trend.
- Sankey charts: use sparingly for intake flow from source to outcome.
Components 08
Layout Patterns
Consistent layout patterns used across Dashboard, Intake Cases, and Analytics screens. Built with Tailwind CSS grid and flex utilities.
Page Header
Base: Tailwind CSS — Appears at the top of every main screen. Contains page title, subtitle, and the primary action button.
- Always open a screen with a Page Header (title + subtitle + primary action).
- Follow the Metric Cards row → Chart row → Table row order on dashboard-type screens.
- Use a 4-column grid for metric cards; a 2-column grid for charts; a full-width container for tables.
- All cards sit on the page gradient background — never place cards on another card background.
- The sidebar is always 216px fixed. Content area gets the remaining viewport width.
Reference 01
CSS Variables
Copy this block into your global stylesheet. All semantic tokens reference the raw palette so updates cascade automatically.
Reference 02
Tailwind Mapping
How AbilityPath design tokens map to Tailwind utility classes for the engineering prototype. Extend tailwind.config or use CSS variables directly in arbitrary-value syntax.
globals.css to point to AbilityPath tokens. For example: --primary: var(--color-brand-primary); — this drives shadcn's semantic variables without forking any components.