Thanks for contributing to Base UI Vue.
This repository contains the Vue component library, its docs site, and the supporting packages used to build and test it.
Make sure your local environment matches the workspace requirements:
- Node.js
>= 22.18.0 - pnpm
10.30.3
These versions are enforced by the workspace engines field in package.json.
packages/core/src/— the core Vue component librarypackages/plugins/— framework integrations and pluginsdocs/— the VitePress documentation sitedocs/content/— documentation contentdocs/components/demo/— live docs demos
Public exports for the component library are managed from packages/core/src/index.ts.
Install dependencies from the repository root:
pnpm installRun the docs site locally:
pnpm docs:devRun these from the repository root.
pnpm lintAuto-fix lint issues when appropriate:
pnpm lint:fixpnpm --filter base-ui-vue type-checkpnpm --filter base-ui-vue testpnpm testpnpm docs:buildA few conventions help keep the codebase consistent:
- Use Vue 3 Composition API with
<script setup>and TypeScript for new Vue components and composables. - Prefer existing utilities and composition patterns before adding new abstractions.
- Keep behavior and accessibility semantics aligned with Base UI, but implement them in a Vue-native way.
- Keep public APIs explicit and strongly typed.
- Update exports when you add or move public functionality.
If you change behavior in packages/core/src/, include tests for it.
Current testing conventions:
- Vitest + Testing Library for Vue
- Co-located tests such as
*.test.ts - Interaction and accessibility expectations should be covered when behavior changes
If you update docs:
- keep examples aligned with the current Vue API surface
- prefer Vue-native explanations over cross-framework comparisons unless the comparison is necessary
- update demos when the page depends on live behavior
- run
pnpm docs:buildbefore finishing
This repository uses Conventional Commits. Examples:
feat(button): add loading propfix(composite): correct roving focusdocs(handbook): refine composition examples
Keep each commit scoped to one logical change when possible.
Repository hooks also run through lint-staged and commitlint, so make sure your changes are ready before committing.
- Docs: baseui-vue.com/docs/overview/quick-start
- Issues and discussions: github.com/vuepont/base-ui-vue
- Community: Discord