Skip to main content

Volt UI Design System

Volt UI is epilot's design system — a tree-shakeable component library for React built on Radix UI primitives and Tailwind CSS v4.

A Svelte version is also available as @epilot/volt-ui-svelte.

Details
Package@epilot/volt-ui
FrameworkReact 18+
PrimitivesRadix UI
StylingTailwind CSS v4
CSS Prefixvolt-
Icons@epilot360/iconsBrowse Icons
Docs (React)React Documentation
Docs (Svelte)Svelte Documentation

Installation

npm install @epilot/volt-ui

Import Styles

Add the Volt UI stylesheet to your application entry point:

@import "@epilot/volt-ui/style.css";

/* Optional: browser reset (skip if your app already has preflight styles) */
@import "@epilot/volt-ui/preflight.css";

Font (Optional)

Volt UI uses the Geist variable font. Import it to enable the default typography:

import "@epilot/volt-ui/font.css";

The font is inlined as base64 at build time (~90KB). You can apply it via:

  • Utility class: volt-font-geist
  • CSS variable: var(--volt-font-geist)
  • Tailwind default:
    @theme {
    --default-font-family: var(--volt-font-geist);
    }

CSS Prefixing

All Volt UI classes and CSS variables are automatically prefixed with volt- to avoid conflicts with application styles:

  • CSS variables: --volt-blue-9, --volt-accent-solid, etc.
  • Tailwind classes: .volt-bg-blue-500, .volt-text-white, etc.

This scoping means Volt UI can be safely used alongside your own Tailwind setup or other CSS frameworks.

Components

Volt UI ships the following component categories:

Layout & Content

ComponentDescription
Button, ButtonGroupActions and grouped action sets
CardStructured content containers
SeparatorVisual dividers
BadgeStatus indicators and labels
CalloutInformational banners
TextTypography with title, heading, body, and helper variants
LabelForm labels
SpinnerLoading indicators

Forms

ComponentDescription
FieldComposable form field with label, input, description, and error
FieldInputText input fields
FieldTextareaMultiline text input
FieldSelectDropdown select
FieldComboboxSearchable dropdown with multi-select support
CheckboxCheckboxes
SwitchToggle switches
RadioGroupRadio button groups
DateTimePickerDate and time selection
DateRangePickerDate range selection

Overlays & Navigation

ComponentDescription
DialogModal dialogs
AlertDialogConfirmation dialogs
PopoverFloating content panels
DropdownMenuContext menus and dropdowns with sub-menus
TooltipHover tooltips
TabsTabbed navigation
AccordionExpandable content sections
ToastNotification system (via Sonner)

Data Display

ComponentDescription
TableBasic HTML tables with styled primitives
DataTableComposable data table built on TanStack Table with sorting, filtering, pagination, virtualization, and column pinning

Icons

The @epilot360/icons package provides the icon set for Volt UI.

npm install @epilot360/icons

Browse available icons in the Storybook Documentation.

Import any icon as a React component:

import { Edit as EditIcon, EpilotIcon } from '@epilot360/icons';

<EditIcon />
// or use the dynamic component
<EpilotIcon name="edit" />

For tree-shaking outside the 360 portal, import icons individually:

import EditIcon from '@epilot360/icons/react/Edit';

Raw SVG files are also available:

import EditIconSVG from '@epilot360/icons/svg/Edit/icon.svg';
import EditIconSVGFill from '@epilot360/icons/svg/Edit/icon-fill.svg';

Usage

Components follow a composable API pattern:

import { Field, FieldLabel, FieldInput, FieldDescription, FieldError } from "@epilot/volt-ui";

<Field>
<FieldLabel>Email</FieldLabel>
<FieldInput type="email" />
<FieldDescription>We'll never share your email</FieldDescription>
<FieldError>Required field</FieldError>
</Field>
import { DataTable, DataTableHeader, DataTableContent, DataTablePagination } from "@epilot/volt-ui";

<DataTable columns={columns} data={data}>
<DataTableHeader />
<DataTableContent />
<DataTablePagination />
</DataTable>

Theming

Volt UI uses CSS variables for theming and supports light and dark modes.

Semantic Color Tokens

TokenPurpose
accent-*Primary brand color
gray-*Neutral grays
error-*Error states
warning-*Warning states
success-*Success states
info-*Informational states

Each semantic color provides state variants: -solid, -soft, -ui, -surface, -contrast, -default, -disabled, and hover variants.

Dark Mode

Dark mode activates automatically when any of these are present on the root element:

<html class="dark">
<!-- or -->
<html data-theme="dark">

Customizing Colors

Override CSS variables to match your brand:

:root {
--volt-accent-9: #your-color;
--volt-accent-solid: var(--volt-accent-9);
}

MCP Server

Volt UI provides an MCP server that exposes component APIs and design tokens to AI coding assistants.

npx @epilot/volt-ui-mcp

Add this to your AI tool's MCP configuration:

{
"mcpServers": {
"volt-ui": {
"command": "npx",
"args": ["-y", "@epilot/volt-ui-mcp"]
}
}
}
ToolConfig Location
Claude Desktop~/Library/Application Support/Claude/claude_desktop_config.json
Claude Code.vscode/mcp.json or ~/.claude/settings.json
Cursor.cursor/mcp.json
GitHub CopilotVS Code settings.jsongithub.copilot.chat.mcpServers

Customer-Facing Styling

For styling Journeys (customer-facing forms), epilot uses Concorde — an open-source design system with CSS custom properties (--concorde-*). See: