Installation
Source-distributed Vue 3 kit. Tailwind has to scan the shipped components.
Install
pnpm add @aezakmiproject/hesoyam
pnpm add vue tailwindcss reka-ui @lucide/vue
The second line is the peer set. If Vue and Tailwind are already in the app, add only reka-ui and @lucide/vue.
Nuxt
The module auto-imports components, injects the theme into the Tailwind entry stylesheet, and keeps the package out of Vite pre-bundling.
Module options
Defaults are empty prefix, auto-import on, theme on.
prefix: 'Hesoyam' exposes<HesoyamButton>instead of Button.components: auto-import. Set false to import by hand.theme: inject@aezakmiproject/hesoyam/theme.cssafter the Tailwind import. If that file already imports the theme, the module leaves it alone.
Vue + Vite
Import the theme from the same stylesheet as Tailwind. Tell Vite not to pre-bundle the package — esbuild cannot process the .vue files it ships.
Register everything
A Vue plugin if you want every component on the app instance.
Auto-import in Vite
unplugin-vue-components with the Hesoyam resolver.
Theme
theme.css defines the --ds-* scales, type, radius, and the @source rules that let Tailwind see the components. Override tokens after the import.
1
<html class="dark">
Typography expects Geologica (--font-sans) and Geist Mono (--font-mono). Both fall back to system fonts if you do not load them.
Imports
Named exports from the barrel, or a folder if you prefer not to go through the index.
Practices
- Never pre-bundle the package. The Nuxt module already adds
optimizeDeps.exclude. Vite apps must set it by hand. - Import the theme from the stylesheet that imports Tailwind. A second CSS file will not scan the components.
- Dark mode is a
darkclass on a parent, usually html. The dark palette is the reference; light is the adaptation. - Typecheck with
vue-tscor Volar. Plaintsccannot type .vue source. - Node 20.19 or newer. Nuxt 3.13+ or Vue 3.5+.