All skills
skilld-dev avatar

/vuetify-skilld

@b9c39cb
by skilldskilld-dev/vue-ecosystem-skills180 stars
8

Vue Material Component Framework. Use when writing, debugging, or configuring code that imports vuetify v4.x. Covers createVuetify setup, components and labs, composables, theming, icons, dates and locale, styles and SASS variables, treeshaking, and v3 to v4 migration.

Use this Skill: https://skilld.dev/gh/skilld-dev/vue-ecosystem-skills/vuetify-skilld

This session only. Nothing lands on disk.

SKILL.md

β‰ˆ71 tokens always: the name and description. β‰ˆ1.9k when used: this file. β‰ˆ5.7k more on demand in 5 files.

vuetify@4.0.1

Material Design component framework for Vue 3. Source citations like lib/framework.js:15 refer to the prepared vuetify@4.0.1 package (package.json:4).

Environment limits

  • Vue ^3.5.0 peer dependency (package.json:208). No Vue 2 support; Vuetify 2 is EOL (README.md:274).
  • ESM only: "type": "module" (package.json:32).
  • Optional peers: vite-plugin-vuetify >=2.1.0, webpack-plugin-vuetify >=3.1.0, typescript >=4.7 (package.json:205).
  • Modern browsers, Safari 13+ with polyfills, minimum design width 320px (README.md:159).
  • Default font is Roboto; you must add it yourself, e.g. @fontsource/roboto (https://vuetifyjs.com/getting-started/installation/).

Setup

Vite with automatic treeshaking (preferred). The vuetify plugin must come after the vue plugin:

// vite.config.js
import vue from '@vitejs/plugin-vue'
import vuetify from 'vite-plugin-vuetify'
export default defineConfig({ plugins: [vue(), vuetify()] })
// src/plugins/vuetify.js
import 'vuetify/styles'
import { createVuetify } from 'vuetify'
export default createVuetify({
  // components, directives not needed with the loader plugin
})

Without a loader plugin, register manually; wildcard imports include everything and slow development builds:

import * as components from 'vuetify/components'
import * as directives from 'vuetify/directives'
createVuetify({ components, directives })

createVuetify accepts aliases, blueprint, components, date, defaults, directives, display, goTo, icons, locale, ssr, theme and returns { install, unmount, defaults, display, theme, icons, locale, date, goTo } (lib/framework.js:15). Install with app.use(vuetify); wrap the app in a single <v-app> root.

For SSR frameworks (Nuxt, vite-ssr) set ssr: true so display values render correctly (https://vuetifyjs.com/getting-started/installation/).

Scaffolding: pnpm create vuetify / npm create vuetify@latest (README.md:44).

CDN bundle with everything included: vuetify/dist/vuetify.js (package.json:35).

Components

  • Prefer imports from vuetify/components/<Group> over vuetify/components (loads only needed styles in dev).
  • Labs components are NOT production ready; import from vuetify/labs/<Name> or vuetify/labs/components. In 4.0.1 labs holds: VAvatarGroup, VColorInput, VCommandPalette, VDateInput, VFileUpload, VIconBtn, VMaskInput, VPicker, VPie, VStepperVertical, VPullToRefresh, VVideo (lib/labs/components.js:1).
  • Dynamic <component :is> is invisible to the loader plugin; import those components manually (https://vuetifyjs.com/features/treeshaking/).
  • Full inventory and export paths: references/exports.md

Configuration

  • Theme: the v4 default is system (follows prefers-color-scheme), not light (lib/composables/theme.js:10). Pin it with theme: { defaultTheme: 'light' } if system switching is unwanted.
  • Defaults: set prop defaults per component with createVuetify({ defaults: { VBtn: { ... } } }). class and style work only on component keys, never in the global key (https://vuetifyjs.com/features/global-configuration/).
  • Display: v4 breakpoints changed; defaults are sm 600, md 840, lg 1145, xl 1545, xxl 2138 (lib/composables/display.js:10).
  • Icons: default set is mdi and expects the @mdi/font stylesheet, or use mdi-svg for bundled SVG icons (https://vuetifyjs.com/features/icon-fonts/).
  • Dates: default adapter wraps native Date; swap with any date-io adapter (https://vuetifyjs.com/features/dates/).
  • Blueprints: createVuetify({ blueprint: md3 }) applies a design-system preset; explicit options override the blueprint (lib/framework.js:15, lib/blueprints/index.js:1).
  • Details and examples: references/configuration.md

Composables

All exported from the vuetify entry point (lib/composables/index.js:1): useDate, useDefaults, useDisplay, useGoTo, useLayout, useLocale, useRtl, useTheme, useHotkey, useMask.

<script setup>
import { useTheme } from 'vuetify'
const theme = useTheme()
theme.toggle() // light <-> dark
</script>

For hotkeys prefer the cmd modifier (useHotkey('cmd+s', save)); it resolves to Command on Mac and Control elsewhere (lib/composables/hotkey/key-aliases.js:10).

Full API per composable: references/composables.md

Styles

  • import 'vuetify/styles' is the all-in-one precompiled CSS; modular entries are vuetify/styles/core (must be first), vuetify/styles/colors, vuetify/styles/utilities (package.json:61).
  • SASS variable overrides require the sass preprocessor and vuetify({ styles: { configFile: 'src/styles/settings.scss' } }) in the loader plugin; use @use 'vuetify/settings' with (...).
  • v4 styles ship in cascade layers (vuetify-core, vuetify-components, vuetify-overrides, vuetify-utilities, vuetify-final); unlayered user CSS now always wins over Vuetify.
  • Entry points, variables, layers, Tailwind interop, legacy grid restore: references/styling.md

Migrating from v3

v4 is a breaking MD3 release. Highest-impact changes:

  • Grid uses CSS gap; dense is now density="compact", align/justify/order/align-self props replaced by utility classes. VRow gains a gap prop (lib/components/VGrid/VRow.js:154).
  • Typography variants renamed: h1-h3 -> display-*, h4-h6 -> headline-*, subtitle-1/body-1 -> body-large, caption -> body-small, button/subtitle-2 -> label-large.
  • Elevation reduced from levels 0-24 to 0-5 (lib/styles/settings/_elevations.scss:6).
  • VSelect/VCombobox/VAutocomplete slot item renamed to internalItem; item is now an alias for internalItem.raw.
  • VForm slot values (isValid, errors, ...) are unwrapped, no longer refs.
  • Defaults merging skips undefined; use null to override a global default.

Full change list with compat snippets: references/migration-v4.md

Common pitfalls

  • Missing icon font: components render blank icons until @mdi/font CSS (or an SVG set) is installed.
  • Missing Roboto font: text renders with fallback font (README.md:159).
  • Styles broken after adding custom CSS: check layer order; place overrides inside @layer vuetify-overrides or declare your layer order explicitly.
  • VNumberInput uses toFixed() internally; for arbitrary-precision decimals use v-text-field with decimal.js (lib/components/VNumberInput/VNumberInput.js:81, https://vuetifyjs.com/components/number-inputs/).
  • Do not use vuetify/styles inside SASS files; it resolves to precompiled CSS. Use vuetify or vuetify/settings (https://vuetifyjs.com/features/sass-variables/).

References

Official documentation: https://vuetifyjs.com. Release notes by URL: https://vuetifyjs.com/getting-started/release-notes/.

Source: SKILL.md on GitHub

No alerts9d3 checks Β· Risk SAFE
  • Gen Agent Trust Hub9d

    The skill is a comprehensive technical reference for Vuetify 4.x, providing setup instructions, component maps, and migration guides. It adheres to best practices and references only official or well-known development resources.

  • Socket9d

    No alerts

  • Snyk9d

    Risk: LOW Β· No issues

Signed by skilld at b9c39cb. This ties the file your Agent reads to that commit on GitHub. It does not review the instructions.

Last checked against GitHub last week.

Activeupdated last week

README badge

README badge for skilld-dev/vue-ecosystem-skills/vuetify-skilld