# 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 ` 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.