Contributing
Set up the repository, run the dev loop, follow story conventions, and prepare PRs.
Contributing
The repository is a pnpm and Turborepo workspace. The package source lives in packages/ui, and the registry/docs site lives in apps/registry.
Setup
pnpm install --frozen-lockfileUse pnpm only. Do not use npm, yarn, or bun for workspace commands.
Local dev loop
Useful commands from the repo root:
pnpm -F @vllnt/ui lint
pnpm -F @vllnt/ui exec tsc --noEmit --project tsconfig.build.json
pnpm build
pnpm test:once
pnpm check:circularRun narrower tests while developing, then run the full gates before opening or updating a PR.
Stories
Stories should demonstrate realistic states, not only default rendering. Include disabled, loading, empty, error, and long-content states when those states exist.
Registry output
Do not hand-edit generated registry files. Update source files under packages/ui/src/components, then regenerate registry output through the documented scripts.
Pull requests
Every PR should link an issue, keep the body aligned with the current head, and include validation evidence. Keep unrelated refactors out of feature PRs so review can focus on the issue being closed.