@vuetifyjs/vuetify0

Use when building Vue 3 UI that needs headless logic — selection state (single, multi, grouped, nested, stepped), form validation, registries, context providers, virtual scrolling, pagination, data tables, focus traversal, keyboard shortcuts, resize/intersection/mutation observers, popovers, snackbars, SSR-safe browser checks, theming, RTL, breakpoints, or WAI-ARIA compound components. Triggers on @vuetify/v0, vuetify0, v0, createX composables, or import paths starting with #v0.

View in AI SkillSafe app
Scanned · no findings
0 downloads
0 stars
0 demos
SKILL.md
namevuetify0
descriptionUse when building Vue 3 UI in this repo or any v0 consumer — and when about to write a native <button>, a homemade setTimeout timer, or a homemade overlay/dialog. Those are Button, useTimer, and Dialog/Popover/useStack; do not roll them. Also selection, forms, registries, virtual scroll, popovers, focus, snackbars, SSR checks, theme, RTL, breakpoints, or WAI-ARIA compounds. Triggers on @vuetify/v0, vuetify0, v0, #v0, native button, homemade timer, homemade overlay, setTimeout UI, custom modal, or hand-rolled selection/form/focus.

Vuetify0

Headless Vue 3 primitives. Logic only, zero styling. Consumed by Vuetify 4 from 4.2.0, starting with the utility layer; deeper adoption lands through subsequent minors.

<!-- @generated:counts -->
<!-- Generated by scripts/generate-skill.ts — do not edit by hand. -->

43 components, 71 composables, 27 utilities across 15 categories. Compound-component APIs with WAI-ARIA semantics.

<!-- @generated:counts:end -->

Install

pnpm install @vuetify/v0

No global plugin required. Tree-shakeable imports:

import { createSelection, useBreakpoints } from '@vuetify/v0'
import { Tabs, Dialog } from '@vuetify/v0/components'

Decision table — reach for these first

Check this table before writing custom logic. Match by problem, not by keyword.

Problem Use Category
Native <button> (click, submit, toggle) Button actions
Homemade overlay / dialog / modal Dialog disclosure
Homemade popover / anchored overlay Popover disclosure
Inline status / live-region message Alert semantic
Single-choice state (tabs, theme picker) createSingle selection
Multi-choice state (filters, tag pickers) createSelection selection
Select-all with tri-state createGroup selection
Tree / nested selection (treeview, menus) createNested selection
Wizard / carousel step tracking createStep selection
Id-based value store (shared across sub-components) createModel selection
Form with async validation + dirty tracking createForm + createValidation forms
Slider / range / knob state createSlider forms
Autocomplete / combobox createCombobox forms
Spin-button numeric input createNumberField / createNumeric forms
One-time-password / verification-code value createOtp forms
Paginated or virtualized list createPagination, createVirtual data
Sortable / filterable table DataTable / createDataTable, createFilter data
Editable / spanning data grid DataGrid / createDataGrid data
Breadcrumb trail derived from route createBreadcrumbs semantic
Overflow / responsive menu (hides overflowing items) createOverflow semantic
Type-safe provide/inject createContext foundation
Reactive registry of ids → values createRegistry registration
Auto-dismissing queue (snackbars, toasts) createQueue registration
Scheduled events over time (timeline, animation) createTimeline registration
Design-token graph (theme, spacing scales) createTokens registration
Floating UI positioning (popover, tooltip, menu) usePopover system
Enter/leave animation orchestration usePresence system
Roving tabindex (list, menubar) useRovingFocus system
Virtual focus (combobox listbox) useVirtualFocus system
Click outside / keyboard shortcut / event listener useClickOutside, useHotkey, useEventListener system
ResizeObserver / IntersectionObserver / MutationObserver useResizeObserver, etc. system
rAF loop or setTimeout with pause/resume useRaf, useTimer system
Responsive breakpoints useBreakpoints, useMediaQuery plugins
Localized strings + date/number format useLocale, useDate plugins
Theme (light/dark/custom palette) useTheme plugins
RTL direction awareness useRtl plugins
z-index stacking for overlays useStack plugins
Notifications / snackbar queue plugin useNotifications plugins
Feature flags / permission checks useFeatures, usePermissions plugins
Persisted state (localStorage / sessionStorage) useStorage plugins
Structured logging with adapters useLogger plugins
SSR-safe mount detection useHydration plugins

Full API and type signatures: see references/REFERENCE.md.

<!-- @generated:api -->
<!-- Generated by scripts/generate-skill.ts — do not edit by hand. -->

Full API surface

Every public composable and utility, grouped by category. (stable) and (draft) are marked; unmarked entries are preview.

Composables

Foundation:

  • createContext — Factory for creating type-safe Vue dependency injection contexts. (stable)
  • createPlugin — Factory for creating Vue plugins with proper context provision. (stable)
  • createTrinity — Factory for creating the trinity pattern tuple used throughout the codebase. (stable)

Registration:

  • createQueue — A queue composable for managing time-based collections
  • createRegistry — A foundational composable for managing collections of items (tickets) (stable)
  • createTimeline — Bounded undo/redo system with overflow management.
  • createTokens — Design token registry with alias resolution and W3C Design Tokens format support.

Forms:

  • createCombobox — Orchestrator composable that coordinates selection, popover, and virtual focus for a combobox (autocomplete/typeahead) pattern.
  • createDatePicker (draft)
  • createForm — Form composable that coordinates validation across multiple fields.
  • createInput — Shared form field primitive.
  • createNumberField — Orchestrator composable that composes createInput + createNumeric + Intl.NumberFormat.
  • createNumeric — Pure numeric math primitive.
  • createOtp — Headless state for a fixed-length one-time-password / verification-code value.
  • createRating — Lightweight rating composable for bounded discrete values.
  • createSlider — Composable for managing slider state: value math, step snapping, percentage conversion, and multi-thumb value operations.
  • createTimePicker (draft)
  • createValidation — Per-input validation composable built on createGroup.

Selection:

  • createGroup — Multi-selection composable that extends createSelection with batch operations and tri-state support. (stable)
  • createModel — Recently redesigned from selection system (stable)
  • createNested — Hierarchical tree management composable extending createGroup (stable)
  • createSelection — Selection composable that extends createModel with multi-select, mandatory enforcement, auto-enrollment, and ticket self-methods. (stable)
  • createSingle — Single-selection composable that extends createSelection to enforce only one selected item. (stable)
  • createStep — Navigation composable that extends createSingle with first/last/next/prev/step methods. (stable)

Data:

  • createDataGrid — Main factory that wires together column layout, cell editing, row ordering, and row spanning on top of a createDataTable pipeline.
  • createDataTable — Composable data table that composes existing v0 primitives rather than reimplementing their logic.
  • createFilter — Reactive array filtering composable with multiple filter modes.
  • createKanban — Headless data-flow management for two-level sortable boards.
  • createPagination — Lightweight pagination composable for navigating through pages.
  • createSortable — Headless ordered-list primitive.
  • createVirtual — Virtual scrolling composable for efficiently rendering large lists.

Semantic:

  • createBreadcrumbs — Breadcrumb navigation composable built on createSingle.
  • createOverflow — Composable for computing how many items fit in a container based on available width.
  • createProgress — Progress composable built on createModel for segment tracking.
  • createTour (draft)

Plugins:

  • useBreakpoints — Responsive breakpoint detection composable with window resize handling. (stable)
  • useDate — Date manipulation composable with adapter pattern for date operations.
  • useFeatures — Feature flag system with boolean and token-based features.
  • useHydration — SSR hydration state management composable.
  • useLocale — Internationalization (i18n) composable with adapter pattern for message translation.
  • useLogger — Logging composable with adapter pattern supporting console, consola, and pino.
  • useNotifications — Notification management composable built on createRegistry and createQueue.
  • usePermissions — Permission management composable with support for RBAC and ABAC patterns.
  • useReducedMotion — Reduced-motion plugin composable for respecting or overriding the prefers-reduced-motion media query.
  • useRtl — RTL (right-to-left) direction composable with adapter pattern.
  • useRules — Validation rule composable with Standard Schema support.
  • useStack — Overlay z-index stacking composable
  • useStorage — Reactive storage composable with adapter pattern for localStorage, sessionStorage, or memory. (stable)
  • useTheme — Theme management composable with token resolution and CSS variable injection. (stable)
  • useTooltip — Region-scoped tooltip coordination plugin.

System:

  • useClickOutside — Detects clicks outside of specified element(s) with automatic cleanup.
  • useDelay — Schedule open and close transitions with configurable delays.
  • useDragDrop — Headless drag-and-drop primitive.
  • useEventListener — Event listener composable with automatic cleanup on scope disposal.
  • useHotkey — Hotkey listener composable with key combination and sequence support.
  • useImage — Image loading state machine with deferred loading support.
  • useIntersectionObserver — IntersectionObserver composable with lifecycle management. (stable)
  • useLazy — Deferred content rendering composable for performance optimization.
  • useMediaQuery — Reactive media query composable with automatic cleanup.
  • useMutationObserver — MutationObserver composable with lifecycle management. (stable)
  • usePopover — Composable for native popover API behavior with CSS anchor positioning.
  • usePresence — Animation-agnostic mount lifecycle composable.
  • useRaf — Scope-disposed safe requestAnimationFrame composable.
  • useResizeObserver — ResizeObserver composable with lifecycle management. (stable)
  • useRovingFocus — Roving tabindex composable for keyboard navigation within composite widgets.
  • useTimer — A reactive timer composable with pause/resume support.
  • useToggleScope — Conditionally manages an effect scope based on a reactive boolean condition.
  • useVirtualFocus — Virtual focus composable for aria-activedescendant keyboard navigation.

Reactivity:

  • useProxyModel — Proxy composable for bidirectional sync between a model context and v-model. (stable)
  • useProxyRegistry — Proxy composable for reactive registry keys, values, entries, and size.

Transformers:

  • toArray — Utility function to normalize single values and arrays into arrays. (stable)
  • toElement — Resolves various element reference types to a DOM Element. (stable)
  • toHighlight — Pure transformer — no DOM, no state, no registry, no reactivity.
  • toReactive — Utility function to convert values and refs into reactive proxies with ref unwrapping.

Utilities

Utilities:

  • apca
  • clamp — Clamps a value between a minimum and maximum (stable)
  • findMatchRanges — Finds [start, end] index pairs where query occurs in text, optionally folding accents on either side.
  • foreground
  • getActiveElement — Resolve the deepest focused element, piercing open shadow roots.
  • hexToRgb
  • isArray — Checks if a value is an array (stable)
  • isBoolean — Checks if a value is a boolean (stable)
  • isElement — Checks if a value is a DOM Element (stable)
  • isFunction — Checks if a value is a function (stable)
  • isNaN — Checks if a value is NaN (Not a Number) (stable)
  • isNull — Checks if a value is null (stable)
  • isNullOrUndefined — Checks if a value is null or undefined (stable)
  • isNumber — Checks if a value is a number (stable)
  • isObject — Checks if a value is a plain object (excludes null and arrays) (stable)
  • isPrimitive — Checks if a value is a primitive (string, number, or boolean) (stable)
  • isString — Checks if a value is a string (stable)
  • isSymbol — Checks if a value is a symbol (stable)
  • isThenable — Checks if a value is a thenable (any object with a .then method).
  • isUndefined — Checks if a value is undefined (stable)
  • isV0Error — Type guard for v0-thrown errors.
  • mergeDeep — Deeply merges source objects into a target object, returning a new object (stable)
  • pxToNumber — Parses a CSS pixel length into a number
  • range — Creates an array of sequential numbers (stable)
  • rgbToHex
  • useId — Generates a unique ID, using Vue's useId when in component context (stable)
  • V0Error — Structured error thrown by v0 internals.
<!-- @generated:api:end -->

Compound-component pattern

All components are headless and compound. Root owns state, children are named sub-components.

<script setup lang="ts">
  import { Tabs } from '@vuetify/v0/components'
  import { shallowRef } from 'vue'

  const active = shallowRef('overview')
</script>

<template>
  <Tabs.Root v-model="active">
    <Tabs.List>
      <Tabs.Item value="overview">Overview</Tabs.Item>
      <Tabs.Item value="details">Details</Tabs.Item>
    </Tabs.List>
    <Tabs.Panel value="overview">Overview content</Tabs.Panel>
    <Tabs.Panel value="details">Details content</Tabs.Panel>
  </Tabs.Root>
</template>
<!-- @generated:components -->
<!-- Generated by scripts/generate-skill.ts — do not edit by hand. -->

Available components:

  • Primitives: AspectRatio (stable), Atom (stable), Portal, Presence
  • Providers: Group (stable), Locale, Scrim, Selection (stable), Single (stable), Step (stable), Theme (stable)
  • Actions: Button, Toggle (stable)
  • Forms: Checkbox (stable), Combobox, Form, Input, NumberField, Radio (stable), Rating, Select, Slider, Switch (stable)
  • Disclosure: AlertDialog, Collapsible (stable), Dialog, ExpansionPanel, Popover, Tabs (stable), Tooltip, Treeview
  • Semantic: Alert, Avatar, Breadcrumbs, Carousel, Image, Overflow, Pagination, Progress, Snackbar, Splitter
  • Data: DataGrid, DataTable

Planned (not yet exported — do not import):

  • DatePicker, DateRangePicker, Kanban, Otp, TimePicker, Tour, Virtualizer
<!-- @generated:components:end -->

More compound examples: see references/component-examples.md.

Must-read rules

1. Check utilities before writing helpers

Import from #v0/utilities (internal) or @vuetify/v0 (external):

  • Type guards: isFunction, isString, isNumber, isBoolean, isObject, isArray, isNull, isUndefined, isNullOrUndefined, isPrimitive, isSymbol, isNaN, isElement
  • Data: mergeDeep, clamp, range, useId

2. Check globals before SSR branches

Import from #v0/constants/globals:

  • IN_BROWSER — replaces typeof window !== 'undefined'
  • SUPPORTS_TOUCH, SUPPORTS_MATCH_MEDIA, SUPPORTS_OBSERVER, SUPPORTS_INTERSECTION_OBSERVER, SUPPORTS_MUTATION_OBSERVER

3. Reactivity defaults

  • shallowRef for primitives
  • ref for objects/arrays
  • toRef for derived values (default)
  • computed only when caching expensive work

4. Compound components only

Sub-components talk to the root via createContext. Never prop-drill state between siblings. Never build a monolithic component when the root + sub-component pattern fits.

Detailed anti-patterns: see references/anti-patterns.md.

Paper and Vuetify relationship

  • @vuetify/v0 — headless (this skill)
  • vuetify v4 — Material Design framework; takes @vuetify/v0 as a runtime dependency from 4.2.0, starting with the utility layer (type guards, range, toHighlight). Composables and components are not yet consumed; deeper adoption lands through subsequent 4.x minors.

When the user asks to "style" a v0 component or build a design system, point them at a Paper design system (Emerald, Genesis, Bulma) — that is how styling is layered on top of headless v0. Keep v0 itself headless.

Vuetify MCP

For live API schemas, guides, and release notes, prefer the Vuetify MCP server over guessing:

claude mcp add vuetify-mcp https://mcp.vuetifyjs.com/mcp

Useful tools (fully qualified names required):

  • vuetify-mcp:get_vuetify0_component_list — all components with categories
  • vuetify-mcp:get_vuetify0_composable_list — all composables with categories
  • vuetify-mcp:get_vuetify0_component_guide — guide for a named component
  • vuetify-mcp:get_vuetify0_composable_guide — guide for a named composable
  • vuetify-mcp:get_vuetify0_installation_guide — installation + bootstrap

Resources

Embed badges

Add these to your README to show the skill's verification status.

SkillSafe verified badge
Verified badge
[![SkillSafe verified badge](https://api.skillsafe.ai/v1/badge/@vuetifyjs/vuetify0/verified)](https://skillsafe.ai/skill/@vuetifyjs/vuetify0/)
Installs badge
Installs badge
[![Installs badge](https://api.skillsafe.ai/v1/badge/@vuetifyjs/vuetify0/installs)](https://skillsafe.ai/skill/@vuetifyjs/vuetify0/)
Scan badge
Scan badge
[![Scan badge](https://api.skillsafe.ai/v1/badge/@vuetifyjs/vuetify0/scan)](https://skillsafe.ai/skill/@vuetifyjs/vuetify0/)
Eval pass rate badge
Eval pass rate
[![Eval pass rate badge](https://api.skillsafe.ai/v1/badge/@vuetifyjs/vuetify0/eval)](https://skillsafe.ai/skill/@vuetifyjs/vuetify0/)