21 lines
976 B
Markdown
Executable File
21 lines
976 B
Markdown
Executable File
# Contributing
|
|
|
|
## Adding a component
|
|
1. Create it in `src/components/` (primitive), `src/animated/`, or `src/blocks/`.
|
|
2. Use `cn()` + `class-variance-authority` for variants. Wrap Radix for interactive primitives.
|
|
3. Follow **DESIGN.md**: tinted neutrals, layered shadows, ease-out motion, focus-visible rings, no nested cards.
|
|
4. Export it from `src/index.ts`.
|
|
5. Add the component and its important states to `showcase/showcase.tsx`.
|
|
6. Add an interaction/accessibility test when behavior changes.
|
|
7. `npm run check` must pass.
|
|
|
|
## Releasing
|
|
`npm version <patch|minor|major>` then `npm publish` (builds automatically).
|
|
Tag notes in the commit. Consuming apps bump at their own pace.
|
|
|
|
## Design guardrail
|
|
Every visual change should survive `impeccable audit`/`polish` and the living
|
|
showcase in both themes. If the detector
|
|
flags something intentional (e.g. a brand font), add a scoped ignore in
|
|
`.impeccable/config.json` with a reason — don't disable the rule globally.
|