Theming

Override any Vy UI component slot, variant, or default via Tailwind Variants — full theme control without fighting the library.

@vyui/kit ships a real theme system today — every styled component has its own theme file backed by Tailwind Variants, and the whole thing is overridable at runtime.

Per-component themes

Each Vy* component reads a theme file under packages/kit/src/theme. Override slots, variants, and defaults without forking the source.

createTv + tv

Re-exported from @vyui/kit so you can compose your own variants on top, with the same DX as Nuxt UI or shadcn.

import { tv } from '@vyui/kit'

const button = tv({
  base: 'inline-flex items-center justify-center rounded-md',
  variants: {
    color: {
      primary: 'bg-primary text-inverted',
      neutral: 'bg-elevated text-default',
    },
  },
})

Runtime app config

Pass overrides to the VyUI plugin at mount time. No build step. Theme keys are deep-merged into the defaults.

import { createApp } from '@lynx-js/vue'
import { VyUI } from '@vyui/kit'
import App from './App.vue'

createApp(App)
  .use(VyUI, {
    ui: {
      button: {
        defaultVariants: { color: 'primary' },
      },
    },
  })
  .mount('#app')