The single source of truth for every component, token, and interaction pattern in the Dremio AI Agent interface.
Before reading anything else, open design-system.html. It shows every component visually — color swatches, button states, nav variants, badges, chat blocks, panel layouts — with the exact spec values alongside each one.
No install needed — open directly in your browser:
👉 Click to open design-system.html
Or if you have the repo cloned locally:
open design-system.html # macOS
# or double-click the file in Finder / ExplorerOnce you have a visual picture of the system, continue with the guide for your role below.
Use this repo to look up exact specs when writing tickets or reviewing designs — no need to guess at dimensions, colors, or states.
-
Open
design-system.html— find the component you're writing about. Every component has its dimensions, padding, color tokens, and interaction states documented visually. -
Browse
guidelines/— each file covers a specific UI area in detail:File Covers 01-Overview.mdPage structure, panel layout, Figma references 02-Design-Tokens.mdAll color tokens, typography scale, spacing, shadows 03-Badges-and-Tags.mdBlockTypeBadge, TimeBadge, ApprovalBadge 04-Buttons.mdAll button variants, sizes, states 05-Left-Nav.mdLeft navigation bar — items, active state, avatar 06-Top-Nav.mdTop navigation bar — search, context switcher 07-Chat-List-Panel.mdChat history list, row states, hover actions 08-Chat-Panel.mdMessage thread, tool call blocks, output blocks 09-Chat-Input.mdInput bar, attach button, submit 10-Workspace-Panel.mdPlan steps, output tabs, context items 11-Catalog-Panel.mdData catalog tree, browse vs. pick mode 12-Collapsed-Panel-Strip.mdMinimised panel strip 13-Panel-Layout.mdResizable layout, panel open/close behavior -
Reference token names in tickets — instead of writing "the teal button", write
<Button variant="default">or reference the--primarytoken (#43B8C9). This removes ambiguity for engineers.
All components are ready to copy into your project. Do not rewrite them — the source files are the reference implementation.
1. Clone this repo
git clone https://github.com/lqw145201/dremio-ai-design-system.git2. Open design-system.html in your browser to identify which components you need visually before touching any code.
3. Copy the theme file into your project
cp styles/theme.css your-project/src/styles/theme.cssImport it at the very top of your app entry point (e.g. main.tsx):
import './styles/theme.css';
⚠️ If you skip this step, all CSS variables resolve to nothing — backgrounds go transparent, text disappears, and the LeftNav will look completely broken.
4. Copy the components you need
# Copy layout components
cp components/LeftNav.tsx your-project/src/app/components/
cp components/TopNav.tsx your-project/src/app/components/
cp components/ChatPanel.tsx your-project/src/app/components/
cp components/ChatListPanel.tsx your-project/src/app/components/
cp components/WorkspacePanel.tsx your-project/src/app/components/
# Copy the entire icons directory (required — do not substitute other icon libraries)
cp -r components/icons/ your-project/src/app/components/icons/
# Copy UI primitives
cp -r components/ui/ your-project/src/app/components/ui/5. Copy the hooks
cp hooks/useChat.ts your-project/src/app/hooks/
cp hooks/usePanelLayout.ts your-project/src/app/hooks/
cp hooks/useWorkspace.ts your-project/src/app/hooks/6. Import and use
import { LeftNav, TopNav, ChatPanel, ChatListPanel } from './components';
import { Button, Badge } from './components/ui';
import { IconSearch, IconPlus } from './components/icons';
// LeftNav — control active item and user avatar via props
<LeftNav
activeItem="ai-agent" // "home" | "ai-agent" | "catalog" | "sql" | "semantic-layer" | "admin"
userInitials="JD" // shown in the avatar circle at the bottom
onNavigate={(item) => { ... }} // called when the user clicks a nav item
/>7. Check COMPONENTS.md for a full inventory of every component, icon, and UI primitive available — use it as a lookup table before building anything new.
- Never hardcode hex values — always use CSS tokens (e.g.
var(--primary)not#43B8C9) - Never substitute icon libraries —
LeftNavand other components require icons fromcomponents/icons/specifically; Fluent UI, Heroicons, or any other library will produce the wrong output - Never rebuild components from scratch — if it's in this repo, copy it
--muted-foregroundis for placeholders and disabled states only — for labels, headers, and secondary text use--secondary-foreground
Open your project in Claude Code. This repo's CLAUDE.md is read automatically and gives Claude all the rules, token names, component locations, and the Figma workflow.
1. Make sure this design system repo is accessible
Either clone it alongside your project, or point Claude to it explicitly at the start of your session:
"The design system is at
../dremio-ai-design-system/. Use components and tokens from there."
2. Open design-system.html and describe what you want
Give Claude the visual context:
"I want to add a new panel that looks like the WorkspacePanel in the design system. It should have a tab bar at the top and a scrollable body."
3. Reference components by their exact names
"Add a
BlockTypeBadgewith typesqlto the output block header." "Use<Button variant="ghost">for this action." "The active nav item should useactiveItem="catalog"."
4. Verify the output
Ask Claude to compare the rendered result against design-system.html before marking a task complete.
dremio-ai-design-system/
├── design-system.html ← 👈 Open this first — visual reference for all components
├── CLAUDE.md ← Rules Claude Code reads automatically
├── CHANGELOG.md ← All changes, newest first
├── COMPONENTS.md ← Full inventory of every component, icon, and primitive
├── README.md ← This file
├── ATTRIBUTIONS.md ← Third-party credits
├── components/
│ ├── LeftNav.tsx ← Left navigation bar (64px, icon + label nav)
│ ├── TopNav.tsx ← Top navigation bar (search, context switcher)
│ ├── ChatPanel.tsx ← Main chat thread (messages, tool calls, outputs)
│ ├── ChatListPanel.tsx ← Chat history list (240px, resizable)
│ ├── WorkspacePanel.tsx ← Plan / Outputs / Context panel
│ ├── CatalogPanel.tsx ← Data catalog tree
│ ├── CollapsedPanelStrip.tsx ← Collapsed panel icon strip (right edge)
│ ├── ToolCallsBlock.tsx ← Expandable tool call log inside chat
│ ├── icons/ ← 101 Dremio icon components (Icon*.tsx)
│ └── ui/ ← 48 UI primitives (Button, Badge, Tabs, Dialog…)
├── hooks/
│ ├── useChat.ts ← Chat thread state
│ ├── usePanelLayout.ts ← Panel open/close/resize state
│ └── useWorkspace.ts ← Workspace block and tab state
├── styles/
│ └── theme.css ← All CSS tokens — copy this into every project
└── guidelines/
├── 01-Overview.md
├── 02-Design-Tokens.md
├── 03-Badges-and-Tags.md
├── 04-Buttons.md
├── 05-Left-Nav.md
├── 06-Top-Nav.md
├── 07-Chat-List-Panel.md
├── 08-Chat-Panel.md
├── 09-Chat-Input.md
├── 10-Workspace-Panel.md
├── 11-Catalog-Panel.md
├── 12-Collapsed-Panel-Strip.md
└── 13-Panel-Layout.md
| Token | Hex | Use |
|---|---|---|
--primary |
#43B8C9 |
Primary buttons, active states, running spinner |
--accent |
#008489 |
Ghost button text, links only — never as a background fill |
--foreground |
#202124 |
Primary text, page titles |
--secondary-foreground |
#505862 |
Labels, table headers, secondary text, badge text |
--muted-foreground |
#B0B7BF |
Placeholders and disabled states only |
--muted |
#EEEFF1 |
Dividers, muted backgrounds |
--background |
#F6F7F8 |
Page body, LeftNav background |
--card |
#FFFFFF |
Panels, cards |
--border |
#D2D6DA |
Input and card borders |
--destructive |
#CA3F32 |
Delete actions, errors |
Full token reference → guidelines/02-Design-Tokens.md
- Always add a
CHANGELOG.mdentry for any meaningful change (newest at top) - Each entry must include: date · author · what changed · why
- PR title format:
[Component] Brief description— e.g.[LeftNav] Fix icon color on active state - Design changes must reference a Figma node ID
- Never hardcode hex values — map everything back to a token in
styles/theme.css
Open an issue or reach out to the Design Systems team.