Summary
Convert Vuetify 3 to use @vuetify/v0 useTheme.
Research Findings
Breaking Changes Required
Remove monolithic style generation - Delegate to adapter
Remove hardcoded DOM access - Use adapter interface
Replace color utilities - Use adapter for genOnColors(), genVariations()
Remove system theme logic - Add as adapter feature or separate composable
API change : change(name) → select(id)
Remove makeThemeProps() - v0 uses composition, not props
Class calculation : v3 class="v-theme--${name}" → v0 data-theme="${id}"
Options restructure : v0 { default, themes, palette } vs v3 { defaultTheme, themes, variations }
Recommended Approach
Create Vuetify3ThemeAdapter that provides:
genOnColors() for auto foreground colors
genVariations() for lighten/darken
System theme detection
Utility CSS class generation
CSS layers support
Scoping support
Migration Path
v0 adds missing features (see [Audit] useTheme - ensure parity with Vuetify createTheme #103 )
Create Vuetify3ThemeAdapter extending ThemeAdapter
Vuetify 3 uses v0 with custom adapter
Gradual migration of component theme props
Dependencies
Summary
Convert Vuetify 3 to use
@vuetify/v0useTheme.Research Findings
Breaking Changes Required
genOnColors(),genVariations()change(name)→select(id)makeThemeProps()- v0 uses composition, not propsclass="v-theme--${name}"→ v0data-theme="${id}"{ default, themes, palette }vs v3{ defaultTheme, themes, variations }Recommended Approach
Create
Vuetify3ThemeAdapterthat provides:genOnColors()for auto foreground colorsgenVariations()for lighten/darkenMigration Path
Vuetify3ThemeAdapterextendingThemeAdapterDependencies