Skip to main content
Vuetify0 v1.0 is here
Vuetify0 Logo
Theme
Mode
Palettes
Accessibility
Vuetify One
Sign in to Vuetify One

Access premium tools across the Vuetify ecosystem — Bin, Play, Studio, and more.

Not a subscriber? See what's included

Palettes

v0 ships pre-built color data from popular design systems and generator adapters that create complete themes from a single brand color.

Edit this page
Report a Bug
Copy Markdown

IntermediateJul 17, 2026

Palettes come in two forms. Static palettes are raw color data — a map of hues to shades — that you namespace under the palette option and reference from your themes. Generator adapters take a single seed color and hand back a ready-made { palette, themes } pair by wrapping a third-party color algorithm.

Colors are wired up with token references: the '{palette.tw.blue.500}' string in the examples below points at a value in the palette map instead of hardcoding a hex, so one palette can back many theme roles. See Theming for how references resolve.

Use the explorer to browse the static palettes. Click any swatch to copy its token path, then Copy Config for a ready-to-paste createThemePlugin setup seeded with the swatches you clicked. Palettes with far more shades than hues, like Material, render with their axes flipped so the grid stays readable.

Browse Palettes
Click a swatch to copy its token path and add it to the config. Then use Copy Config for a ready-to-paste theme.
50
100
200
300
400
500
600
700
800
900
950
slate
gray
zinc
neutral
stone
red
orange
amber
yellow
lime
green
emerald
teal
cyan
sky
blue
indigo
violet
purple
fuchsia
pink
rose

Static Palettes

ImportSourceHuesShades
@vuetify/v0/palettes/md1Material Design 11650-900, A100-A700
@vuetify/v0/palettes/md2Material Design 21950-900, A100-A700
@vuetify/v0/palettes/materialMaterial Design 36 groupstones 0-100
@vuetify/v0/palettes/tailwindTailwind CSS2250-950
@vuetify/v0/palettes/radixRadix Colors311-12
@vuetify/v0/palettes/antAnt Design121-10
ts
import { tailwind } from '@vuetify/v0/palettes/tailwind'

app.use(
  createThemePlugin({
    palette: { tw: tailwind },
    themes: {
      light: {
        colors: {
          primary: '{palette.tw.blue.500}',
          secondary: '{palette.tw.slate.600}',
          error: '{palette.tw.red.500}',
        },
      },
    },
  })
)
Tip

Static palettes are just data — they must be namespaced under a key in the palette option.

Generator Adapters

Generator adapters take a single brand color and produce a complete palette + themes object ready to pass to createThemePlugin. Each adapter wraps a third-party color algorithm. The color libraries are optional peer dependencies — install the peer for the generator you import; without it, module resolution fails at load time.

Material

Uses Google’s @material/material-color-utilities to generate tonal palettes following the Material Design 3 color system.

pnpm
pnpm add @material/material-color-utilities
ts
import { material } from '@vuetify/v0/palettes/material/generate'

const { palette, themes } = material('#6750A4')

app.use(createThemePlugin({ palette, themes }))

Options (second argument):

OptionTypeDefaultNotes
variant'tonalSpot' | 'vibrant' | 'expressive' | 'fidelity' | 'monochrome' | 'neutral''tonalSpot'How the seed influences secondary and tertiary roles
contrastnumber0Contrast preference passed through to Material’s dynamic scheme

Ant Design

Uses @ant-design/colors to generate 10-shade ramps from a seed color.

pnpm
pnpm add @ant-design/colors
ts
import { ant } from '@vuetify/v0/palettes/ant/generate'

const { palette, themes } = ant('#1677ff')

app.use(createThemePlugin({ palette, themes }))

Options (second argument):

OptionTypeDefaultNotes
backgroundstring'#141414'Background hex used when generating the dark ramp

Leonardo

Uses Adobe’s @adobe/leonardo-contrast-colors to generate perceptually uniform ramps based on target contrast ratios against a background.

pnpm
pnpm add @adobe/leonardo-contrast-colors
ts
import { leonardo } from '@vuetify/v0/palettes/leonardo/generate'

const { palette, themes } = leonardo('#0ea5e9')

app.use(createThemePlugin({ palette, themes }))

Options (second argument):

OptionTypeDefaultNotes
ratiosnumber[][1.25, 1.5, 2, 3, 4.5, 7, 11]Target contrast ratios against the background
colorSpace'CAM02' | 'CAM02p' | 'HSL' | 'HSLuv' | 'HSV' | 'LAB' | 'LCH' | 'OKLAB' | 'OKLCH' | 'RGB'Leonardo’s defaultColor space for ramp generation

Overriding Colors

Use mergeDeep to override specific colors from a generated theme:

ts
import { mergeDeep } from '@vuetify/v0'
import { material } from '@vuetify/v0/palettes/material/generate'

const { palette, themes } = material('#6750A4', { variant: 'vibrant' })

app.use(
  createThemePlugin({
    palette,
    themes: mergeDeep(themes, {
      light: {
        colors: {
          error: '#B00020',
        },
      },
    }),
  })
)

Mixing Palettes

Combine generated palettes with static palette data by spreading them together:

ts
import { mergeDeep } from '@vuetify/v0'
import { material } from '@vuetify/v0/palettes/material/generate'
import { tailwind } from '@vuetify/v0/palettes/tailwind'

const { palette: generated, themes } = material('#1B6EF3')

app.use(
  createThemePlugin({
    palette: { ...generated, tw: tailwind },
    themes: mergeDeep(themes, {
      light: {
        colors: {
          accent: '{palette.tw.amber.500}',
        },
      },
    }),
  })
)

Custom Adapters

The PaletteGenerator type is exported from @vuetify/v0/palettes for building custom adapters that conform to the same { palette, themes } return shape.

ts
import type { PaletteGenerator } from '@vuetify/v0/palettes'

const myGenerator: PaletteGenerator<{ variant?: 'vibrant' | 'muted' }> = (seed, options) => {
  // ... derive palette + themes from seed
  return { palette, themes }
}

FAQ

Discord
Need help? Join our community for support and discussions ↗
Was this page helpful?

© 2016-1970 Vuetify, LLC
Services
Ctrl+/