import { Meta } from '@storybook/addon-docs/blocks';

<Meta title="Foundation/Contributing" />

# <img src="./BmsIcon.png" /> Contributing

We welcome contributions from the community! To keep the codebase healthy and consistent, please follow the process outlined below before submitting a Merge Request (MR).

## Contribution – Challenging the Need for Evolution

> **Before adding or modifying a component, question the underlying need.**  
> In a design system every change propagates across many products, so it’s crucial to ensure that new work truly adds value.

1. **Define the problem** – Who experiences the pain point? What user goal does it affect?
2. **Consider existing solutions** – Can the issue be solved with a variant, a token adjustment, or a composition of existing components?
3. **Evaluate impact** – Think about bundle size, visual consistency, accessibility, and maintenance overhead.

Applying this disciplined approach helps the design system stay lean, cohesive, and future‑proof while preventing unnecessary churn.

## 1️ Discuss the Change First

Before you start coding, **open a thread** on Teams describing the problem you want to solve or the feature you’d like to add. Include:

- A clear description of the motivation.
- Any relevant design sketches or screenshot.
- Links to related tickets or upstream discussions.

This early conversation helps us:

- Validate that the change aligns with the project roadmap.
- Identify potential design conflicts early.
- Agree on an implementation approach.

Only after we give a **“Go‑ahead”** comment should you begin work on the MR.

## 2️ Follow Our Development Standards

Your contribution must meet the project's quality expectations:

(WIP)

If any of these checks fail, the MR will be returned for revision.

## 3️ Submit Your Merge Request

When the feature is complete:

1. (WIP)

## 4️ Review Process

- **Automated checks**: CI will automatically reject the MR if linting, tests, or build steps fail.
- **Human review**: At least one core maintainer will review the code. They may request changes, ask clarifying questions, or suggest improvements.
- **Approval**: Once all reviewers approve and CI passes, the MR will be merged.

> **We reserve the right to reject any MR** that does not meet our development standards, conflicts with the project direction, or introduces regressions. Rejections will be accompanied by constructive feedback so you can adjust and resubmit.

## 5️ Post‑Merge Checklist

- Verify that the change appears in the next release notes.
- Close the associated issue (or move it to _Done_).
- Celebrate 🎉 – you’ve contributed to the project!

---

### Additional Tips (Optional)

- **Keep PRs small** – aim for a single logical change per MR.
- **Write clear commit messages** – follow the Conventional Commits format (`feat: add …`, `fix: resolve …`).
- **Respect the Code of Conduct** – treat all contributors with respect and professionalism.

Thank you for helping make this project better! 🙏
