Introduction to Vuetify Zero
Vuetify Zero (@vuetify/v0) is a headless Vue 3 UI framework that provides lightweight, unstyled building blocks for modern applications and design systems. It offers powerful primitives and composables with full TypeScript support and accessibility features built-in.
This package is in early development (pre-1.0). APIs may change between minor versions.
What is Vuetify Zero?
Vuetify Zero is the foundation of the Vuetify ecosystem, focusing on providing logic and functionality without imposing any visual styling. It’s designed for developers who want complete control over their application’s appearance while benefiting from battle-tested component logic and accessibility.Key Features
Headless First
Components provide logic, state management, and accessibility without any imposed styling. You have complete freedom to style components however you want—with CSS, Tailwind, UnoCSS, or any styling solution.Slot-Driven Architecture
Maximum flexibility through comprehensive slot APIs. Every component exposes its internal state through slots, giving you full control over rendering:CSS Variables for Styling
All styling is configurable via--v0-* custom properties, making theming and customization straightforward:
TypeScript Native
Full type safety with generics for extensibility. Every component and composable is fully typed:Minimal Dependencies
Only Vue 3.5+ is required. No heavy dependencies or external libraries (markdown libraries are optional).Composable Architecture
Reusable logic through Vue 3 composables. Build your own components using the same primitives:- Foundation:
createContext,createTrinity,createPlugin - Registry:
createRegistry,createQueue,createTimeline - Selection:
createSelection,createGroup,createSingle,createStep - System:
useClickOutside,useEventListener,useHotkey,useIntersectionObserver - Plugins:
useTheme,useLocale,useBreakpoints,useFeatures,usePermissions
Design Principles
Accessibility Built-in
ARIA attributes, keyboard navigation, and focus management are handled automatically. Every component follows WAI-ARIA best practices.
Composition Over Configuration
Build complex UIs by composing simple primitives. Use compound components for flexibility and composables for shared logic.
Performance First
Set-based selection tracking, virtual scrolling support, and efficient reactivity patterns ensure optimal performance even with large datasets.
What’s Included
Components
Vuetify Zero includes 18 headless components:- Atom - Polymorphic base element with renderless mode
- Avatar - Image with fallback display
- Breadcrumbs - Responsive navigation trail with overflow
- Checkbox - Standalone or group with tri-state support
- Dialog - Modal dialog using native
<dialog> - ExpansionPanel - Accordion/collapsible panels
- Group - Multi-selection with tri-state
- Pagination - Page navigation with ellipsis
- Popover - CSS anchor-positioned popup
- Radio - Radio button group with single-selection
- Scrim - Backdrop/overlay for overlays
- Selection - Generic single/multi-selection
- Single - Single-selection specialization
- Step - Navigation stepper
- Tabs - Accessible tab interface
Composables
Over 40 composables organized into categories: Foundation - Core factories for context, plugins, and trinity pattern Registration - Data structures like Registry, Queue, Timeline, Tokens, DataTable Selection - Selection management with Group, Single, Step, Breadcrumbs, Nested Forms - Form validation and state management System - Browser APIs wrapped as composables (click outside, event listeners, observers, hotkeys) Plugins - Pluggable features like theme, locale, breakpoints, permissions, storageTree-Shakeable Exports
The package provides tree-shakeable subpath exports for optimal bundle size:Use Cases
Building Design Systems
Create your own component library with consistent behavior:Custom Styled Components
Build fully custom UIs without fighting framework opinions:Application Logic
Use composables directly in your application code:Next Steps
Installation
Get started by installing Vuetify Zero in your project
Quickstart
Build your first component with a step-by-step guide