Design System V1 — React/Shadcn
AI-First UX at C3.ai

A UX system built for AI-native enterprise apps.

We rebuilt the C3.ai design system from the ground up so AI features feel native, not bolted on. One token source, one component library, every pattern designed for AI signal — alerts, search, suggestions, assistants — at enterprise scale.

40
React primitives
8
Page templates
64+
Documented patterns
100%
Token-driven
Why this matters

Traditional enterprise UX wasn't built for AI.

Enterprise design systems were optimized for forms, tables, and reports — humans entering data, humans reading it back. Our customers now lean on AI for every step: detecting anomalies, surfacing insights, drafting documents, answering questions. The interface needs to communicate signal vs. noise, confidence, provenance, and next best action — natively, at every layer of the stack.

The foundation

One source of truth — Figma → tokens → React.

Every color, spacing value, radius, and shadow lives in Figma's Mode collection and flows downstream through a single generator. Designers and engineers ship against the same atoms. Dark mode, accessibility, and density tweaks happen once, propagate everywhere.

1

Figma

Mode collection

2

tokens.json

extracted spec

3

tokens.css

--theme-* vars

4

Tailwind preset

semantic classes

5

React + Radix

40 primitives

C3 Design System · Docs
C3 Design System docs home — sidebar with c3.ai logo, component catalog grid
Live documentation site. Branded sidebar with the c3.ai mark, search across every primitive and pattern, and a catalog that mirrors the Figma file 1:1. Engineers and designers see the same thing.
In practice

A reliability engineer triages 1,174 AI-detected alerts.

The Alerts page in C3 Reliability — rebuilt entirely from our new primitives. NavRail for module switching, PageHeader for context, MetricCards with sparkline trends for at-a-glance state, a DataGrid with column-level filters and faceted chips for fast triage. Every AI signal has a path to action in three clicks or fewer.

C3 Reliability · Alerts
Alerts page — NavRail, PageHeader with tabs, three MetricCards with sparklines, DataGrid with True/False Positive labels

Gen AI is first-class

A dedicated "Gen AI" item leads the NavRail with a Sparkles icon — AI capabilities aren't buried in a settings menu.

Signal, not noise

1,174 AI-detected alerts are surfaced as a delta + sparkline trend. The user sees direction and magnitude before reading a single row.

Inline filtering, fast triage

Faceted chips for Status and Importance live in the toolbar; per-column filters live in the header row. No separate filter sidebar to context-switch through.

AI feedback loop

An Alert Category column captures True Positive vs. False Positive — the labels feed back into the model, closing the loop between user judgement and AI training.

Components built for AI

Patterns that make AI features feel native.

Not retrofitted. Designed in from the first commit, validated against real C3 products.

AIChat drawer

Right-docked assistant pattern. Title bar, suggestion pills, message bubbles, expandable "thinking" steps, follow-up actions, prompt input.

📈

MetricCard with sparkline

Header, value, tone-aware delta, optional sparkline, caption. KPI tiles that read at a glance and trend at a longer look.

🏷

Status & confidence badges

Tone variants for success/warning/danger plus muted/info for neutral state. Outline + soft + solid appearances for different emphasis levels.

🔍

DataGrid faceted filters

Toolbar chips, inline header-row filters, global search, active-filter pills. Built for triaging hundreds of AI-flagged items quickly.

AIChat · C3 AI Assistant drawer
C3 AI Assistant drawer — greeting, user prompt, response with thinking steps and suggested actions
The AIChat primitive. Greeting, user prompt, an AI response with expandable thinking steps, and three suggested next actions. Drops into any product page; state-driven, no styling decisions for the consuming team.
Navigation for depth

Hierarchical nav for the deep enterprise products our customers run.

Two-rail app shell — NavRail for module switching, Sidebar for in-module hierarchy. Multi-level nesting, collapsible groups, sticky footer for Settings. The kind of navigation you need when your product has thousands of assets and tens of thousands of work orders.

Sidebar · hierarchical pattern
Sidebar with NavRail to its left, expanded multi-level menu showing Assets → Compressors / Pumps / Sensors → Pressure / Temperature
The two-rail shell. NavRail on the far left (always visible icon nav), Sidebar next to it with hierarchical sub-menus that expand inline. Sidebar collapses to a 40 px thin bar when you need more canvas — NavRail still gives you primary nav.
Built for speed

Every pattern decision, in one place.

Every cross-template decision lives in one .md — app-shell layout, sticky PageHeader, MetricCard KPI pattern, DataGrid filter placement, surface tokens. Paired with .cursor/skills/*/SKILL.md files, designers, engineers, and AI coding agents ship from a single playbook.

Templates README · cross-template conventions
Templates README page showing the app-shell composition diagram and PageHeader behavior rules

Day-one onboarding

New engineers ship their first page following one doc, not by spelunking through a year of merged PRs.

Single source of truth

Mirrored in TEMPLATE-CATALOG.md (for GitHub readers) and rendered in-app at #/templates/readme. Designers + engineers see the same thing.

Decisions made once

"Should this PageHeader be sticky?" "Where does the filter panel go?" Already decided. Teams stop re-litigating per project.

Faster, more consistent ship

New templates layer on top of the README; new components extend the existing vocabulary. The system gets smaller to learn as it grows.