# @vuetify/v0
Headless Vue 3 UI primitives and composables for building modern applications and design systems. `@vuetify/v0` is the foundation of the Vuetify ecosystem, offering lightweight, unstyled building blocks with full TypeScript support and accessibility features built-in.
> **Note:** This package is in early development (pre-1.0). APIs may change between minor versions.
## Repository Structure
This is a **pnpm monorepo** containing:
| Package | Description |
|---------|-------------|
| [`@vuetify/v0`](./packages/0) | Core headless components and composables |
| [`@vuetify/paper`](./packages/paper) | Styling and layout primitives |
| [`apps/docs`](./apps/docs) | Documentation site ([0.vuetifyjs.com](https://0.vuetifyjs.com)) |
| [`apps/playground`](./apps/playground) | Interactive development environment |
## Requirements
- **Node.js** >= 26
- **pnpm** >= 10.6
- **Vue** >= 3.5.0
## Installation
```bash
npm install @vuetify/v0@latest
# or
pnpm add @vuetify/v0
# or
yarn add @vuetify/v0
# or
bun add @vuetify/v0
```
## Exports
The package provides tree-shakeable subpath exports:
```ts
import { ... } from '@vuetify/v0' // Everything
import { ... } from '@vuetify/v0/components' // Components only
import { ... } from '@vuetify/v0/composables' // Composables only
import { ... } from '@vuetify/v0/utilities' // Utilities only
import { ... } from '@vuetify/v0/types' // Types only
import { ... } from '@vuetify/v0/constants' // Constants only
import { ... } from '@vuetify/v0/date' // Date adapter and utilities
```
## What's Included
### Components
#### Primitives
| Component | Description |
|-----------|-------------|
| [AspectRatio](https://0.vuetifyjs.com/components/primitives/aspect-ratio) | Fixed width-to-height ratio container via CSS `aspect-ratio` |
| [Atom](https://0.vuetifyjs.com/components/primitives/atom) | Polymorphic base element with dynamic `as` prop and renderless mode |
| [Portal](https://0.vuetifyjs.com/components/primitives/portal) | Teleport wrapper with automatic z-index stacking via useStack |
| [Presence](https://0.vuetifyjs.com/components/primitives/presence) | Animation-agnostic mount lifecycle with lazy mounting and exit timing |
#### Providers
| Component | Description |
|-----------|-------------|
| [Group](https://0.vuetifyjs.com/components/providers/group) | Multi-selection with tri-state support |
| [Locale](https://0.vuetifyjs.com/components/providers/locale) | Locale context provider for internationalization |
| [Scrim](https://0.vuetifyjs.com/components/providers/scrim) | Overlay backdrop with click-to-dismiss and z-index management |
| [Selection](https://0.vuetifyjs.com/components/providers/selection) | Multi-selection state with v-model binding |
| [Single](https://0.vuetifyjs.com/components/providers/single) | Single-selection with automatic deselection |
| [Step](https://0.vuetifyjs.com/components/providers/step) | Sequential navigation (first, last, next, prev) |
| [Theme](https://0.vuetifyjs.com/components/providers/theme) | Theme context provider with CSS variable injection |
#### Actions
| Component | Description |
|-----------|-------------|
| [Button](https://0.vuetifyjs.com/components/actions/button) | Button with loading grace period, toggle groups, and icon accessibility |
| [Toggle](https://0.vuetifyjs.com/components/actions/toggle) | Pressable on/off button with standalone and group modes |
#### Forms
| Component | Description |
|-----------|-------------|
| [Checkbox](https://0.vuetifyjs.com/components/forms/checkbox) | Dual-mode checkbox (standalone/group) with tri-state support |
| [Combobox](https://0.vuetifyjs.com/components/forms/combobox) | Filterable selection with autocomplete, virtual focus, and custom input |
| [Form](https://0.vuetifyjs.com/components/forms/form) | Form validation coordinator with submit handling and error aggregation |
| [Input](https://0.vuetifyjs.com/components/forms/input) | Text input with label, description, error messages, and character counting |
| [NumberField](https://0.vuetifyjs.com/components/forms/number-field) | Numeric input with increment/decrement, scrub, and Intl formatting |
| [Radio](https://0.vuetifyjs.com/components/forms/radio) | Radio group with single-selection and keyboard navigation |
| [Select](https://0.vuetifyjs.com/components/forms/select) | Dropdown selection with virtual focus and multi-select support |
| [Rating](https://0.vuetifyjs.com/components/forms/rating) | Star/icon rating with hover preview, half-stars, and keyboard navigation |
| [Slider](https://0.vuetifyjs.com/components/forms/slider) | Range input with snapping, range mode, and custom tracks |
| [Switch](https://0.vuetifyjs.com/components/forms/switch) | Toggle switch with on/off states and label association |
#### Disclosure
| Component | Description |
|-----------|-------------|
| [AlertDialog](https://0.vuetifyjs.com/components/disclosure/alert-dialog) | Confirmation dialog with deferred close and `wait()`/`close()` pattern |
| [Collapsible](https://0.vuetifyjs.com/components/disclosure/collapsible) | Single-item disclosure toggle for showing and hiding content |
| [Dialog](https://0.vuetifyjs.com/components/disclosure/dialog) | Modal dialog using native `