Ship Angular interfaces from components you can own.
Copy polished, accessible Angular source into your app. Keep the speed of a component library, with the control of code that belongs to your product.
npx @voltui/cli add button dialog form-field<volt-button variant="solid">
Save changes
</volt-button>documented components
automated tests
theme combinations
NgModules required
Production behavior first. Product taste next.
- 01 / 04
Own the source
The CLI copies readable standalone components directly into your application. Change every line when your product needs it.
$ npx @voltui/cli add dialog form-field
✓ resolved 4 files
src/app/ui/dialog/dialog.ts
src/app/ui/dialog/variants.ts
src/app/ui/form-field/form-field.ts
src/app/ui/utils.ts
- 02 / 04
Behavior built in
ng-primitives handles focus, keyboard navigation, overlays, and ARIA contracts while Volt UI handles product-ready styling.
Tab ↑ ↓ Enter Esc role="dialog"
aria-modal="true"
aria-expanded="false"
aria-describedby="volt-hint-1"
- 03 / 04
Designed as a system
Semantic Tailwind tokens, colour presets, and style presets let one component set adapt to a complete visual language.
volt ember sage dusk glacier sharp soft brutal ghost retro - 04 / 04
Ready for your AI agent
One command gives Claude Code, Cursor, Windsurf or Copilot the component catalog, the selectors and the rules, so generated code uses Volt the way you would.
$ npx @voltui/agent claude
created .mcp.json
created .claude/skills/volt-ui/SKILL.md
Claude Code Cursor Windsurf Copilot
Every piece a product needs, already wired.
Combobox
Searchable select
Learn more →Date Picker
Calendar input
Learn more →Tabs
Tabbed interface
Learn more →Input OTP
PIN code input
Learn more →Slider
Range input
Learn more →Toast
Notifications
Learn more →Select
Dropdown selection
Learn more →Table
Data tables
Learn more →File Upload
Upload controls
Learn more →
One set of components. Every look your brand needs.
provideVoltTheme() . Palette
Shape
provideVoltTheme({ color: 'ember', style: 'soft' })Project settings
Built with Volt UI components
Public theme
Anyone can preview it
A workflow that ends in editable Angular, not vendor lock-in.
01 Install
Add components with one command.
The CLI resolves the dependencies between components and writes readable files into src/app/ui. No runtime to install, nothing to configure first.terminal $ npx @voltui/cli init $ npx @voltui/cli add dialog form-field ✓ dialog src/app/ui/dialog ✓ form-field src/app/ui/form-field ✓ button src/app/ui/button (dependency)02 Compose
Use them like Angular code you wrote.
Standalone components, signal inputs and OnPush everywhere. Import them from ./uiand they behave like the rest of your app.settings.page.html <!-- imports: [UiFormField, UiLabel, UiInput, UiButton] --> <ui-form-field> <ui-label>Workspace</ui-label> <ui-input [(value)]="name" /> </ui-form-field> <ui-button (click)="save()">Save</ui-button>03 Theme
Set the brand once, at bootstrap.
provideVoltTheme()sets the palette, the shape and dark mode on the server and in the browser, so the first paint is already on brand.app.config.ts import { provideVoltTheme } from '@voltui/components'; export const appConfig: ApplicationConfig = { providers: [ provideVoltTheme({ color: 'ember', style: 'soft', dark: false }), ], };04 Customize
Change any line. There is nothing to eject.
Variants live in a CVA file next to each component, and classes merge through cn(). Add a size, rename an input, delete what you don't need.ui/button/variants.ts export const buttonVariants = cva('inline-flex items-center', { variants: { size: { sm: 'h-8 px-3 text-sm', md: 'h-10 px-4', xl: 'h-14 px-8 text-lg', // yours now }, }, });05 Automate
Let your agent write it the Volt way.
npx @voltui/agentinstalls the MCP server, a skill and editor rules, so Claude Code, Cursor or Copilot reach for the right selector the first time.terminal $ npx @voltui/agent claude Claude Code created .mcp.json created .claude/skills/volt-ui/SKILL.md → Restart Claude Code for the MCP server and skill to load.
Build the Angular interface you wanted.
Explore 44 components, accessible layouts, 25 theme combinations, and an AI-ready workflow.