diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
new file mode 100644
index 0000000000..7368f60ce3
--- /dev/null
+++ b/.github/CODEOWNERS
@@ -0,0 +1 @@
+* @StackExchange/stacks
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index d4d99cd3b9..3c945b335e 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -1,166 +1,152 @@
# Contributing to Stacks
-Want to get involved? There are plenty of ways to help! Both internal and external contributors can get involved by submitting new features, fixes, or updates. Before you get started, please take a moment to review this contribution guide. This will make the process easier for everyone involved.
+Stacks is Stack Overflow's design system, the shared foundation of components, styles, and guidelines used across Stack Overflow's products. It is maintained by the Stacks team at Stack Overflow. We welcome contributions from both internal and external contributors, whether that's a bug fix, a new component, or a documentation improvement. This guide covers everything you need to get started.
## Table of contents
- - [Open an issue](#open-an-issue)
+ - [Before you start](#before-you-start)
- [Reporting bugs](#reporting-bugs)
- [Feature requests](#feature-requests)
- [Pull requests](#pull-requests)
+ - [Changesets](#changesets)
+ - [Merge requirements](#merge-requirements)
- [Code guidelines](#code-guidelines)
- [License](#license)
- - [References](#references)
-
-## Open an issue
-
-Before you start anything, we recommend [opening an issue](https://github.com/StackExchange/Stacks/issues/new). This gives the Stacks team and other contributors a chance to provide initial feedback, thoughts, and possible historical context. It may also help you find others who might want to help you out!
-
-When creating an issue, use following labels to help us out:
-
- - [`bug`](https://github.com/StackExchange/Stacks/labels/bug) – A _reproducible_ problem with the Stacks code. This will require a build version bump (e.g., `v0.1.1` > `v0.1.2`).
- - [`feature`](https://github.com/StackExchange/Stacks/labels/feature) – Issues requesting a new item to Stacks. This will require a minor version bump (e.g., `v0.1.0` > `v0.2.0`).
- - [`enhancement`](https://github.com/StackExchange/Stacks/labels/enhancement) – Issues requesting a feature modification or extension. This will require a minor version bump (e.g., `v0.1.0` > `v0.2.0`).
- - [`docs`](https://github.com/StackExchange/Stacks/labels/docs) - Issues with the documentation site.
- - [`do-not-merge`](https://github.com/StackExchange/Stacks/labels/do-not-merge) - Pull requests that are in progress and should not be merged yet.
- - [`help-wanted`](https://github.com/StackExchange/Stacks/labels/help-wanted) – A person would like help with an issue.
- - [`setup`](https://github.com/StackExchange/Stacks/labels/setup) – Issues related to Stacks setup and compilation processes. These include items relating to `grunt`, `jekyll`, `postcss`, or other plugins.
- - [`status-bydesign`](https://github.com/StackExchange/Stacks/labels/status-bydesign) – Indicates the issue is intentional and not subject to change.
- - [`status-completed`](https://github.com/StackExchange/Stacks/labels/status-completed) – Indicates the issue has been resolved.
- - [`status-declined`](https://github.com/StackExchange/Stacks/labels/status-declined) – Indicates the issue has been reviewed and will not be addressed at this time.
- - [`status-deferred`](https://github.com/StackExchange/Stacks/labels/status-deferred) – Indicates the issue is something that will be addressed, but not in the near term.
- - [`status-planned`](https://github.com/StackExchange/Stacks/labels/status-planned) – Indicates the issue has been reviewed and will be addressed in the near team.
- - [`status-review`](https://github.com/StackExchange/Stacks/labels/status-review) – Indicates the issue has merit, but a decision either way requires more investigation.
- - [`status-reproduced`](https://github.com/StackExchange/Stacks/labels/status-reproduced) – Indicates that the Stacks team were able to reproduce the problem, but cannot address it right now.
- - [`status-norepro`](https://github.com/StackExchange/Stacks/labels/status-norepro) – Indicates that the Stacks team were unable to reproduce the problem.
- - [`meta`](https://github.com/StackExchange/Stacks/labels/meta) – Issues about Stacks or the GitHub repository.
+
+
+## Before you start
+
+We recommend filing an issue before diving into a large change. It gives the Stacks team a chance to weigh in early and helps avoid duplicate effort.
+
+ - **Stack Overflow staff:** use the [Stacks Issue Intake form 🔒](https://forms.gle/yYxpXFoE5CSvGVwG9) or the [STACKS Jira board 🔒](https://stackoverflow.atlassian.net/jira/software/projects/STACKS/boards/188)
+ - **External contributors:** [open a GitHub issue](https://github.com/StackExchange/Stacks/issues/new)
## Reporting bugs
-Reporting bugs is a great way to help Stacks. A bug is a _reproducable_ problem with the Stacks code or incorrect (or confusing) documentation. If you’ve found a bug, report it using the following guidelines. Adherence to these guidelines helps us better understand the problem.
+A bug is a _reproducible_ problem with the Stacks code or incorrect (or confusing) documentation. If you’ve found one, include the following when you report it:
- 1. [**Search previous issues**](https://github.com/StackExchange/Stacks/issues?utf8=%E2%9C%93&q=) — Make sure this issue hasn't already been reported
- 2. **What’s the problem?** — If the issue hasn’t been reported, explain what you are trying to do and what actually happened
- 3. **Provide an example** — A CodePen that illustrates the problem is perfect
- 4. **Describe what you’ve tried so far** — Understanding what you’ve tried so far will help us respond more quickly. Include possible related issues that you’ve read or explored if you can
- 5. **Label your issue as a `bug`**
+ 1. **Search for existing reports**: make sure this issue hasn’t already been reported
+ 2. **What’s the problem?**: Explain what you are trying to do and what actually happened
+ 3. **Provide an example**: A CodePen that illustrates the problem is perfect
+ 4. **Describe what you’ve tried so far**: Understanding what you’ve tried so far will help us respond more quickly. Include possible related issues that you’ve read or explored if you can
Issues don’t need to be exhaustive, but we do ask you provide enough details that we can understand the problem and fix the issues.
## Feature requests
-Have an idea for how to make Stacks better? Great! We welcome all ideas. There are a few ways you can submit requests: 1) ask us to do it or 2) do it yourself. Either way we do ask that you open an issue first. When opening an issue, provide the following information:
+You can request a feature or build it yourself; either way, please file an issue first (see [Before you start](#before-you-start)) and include:
1. **Proposed feature** – What are you proposing?
- 2. **Why do you need it?** — Is this required for a project? What’s your timeline? Have you tried using other elements and components first? Explain to us why this needs to be standardized into Stacks.
- 3. **Provide examples** — If you have examples how others have solved this problem, provide those so we can better understand what you're asking for.
- 4. **Who do you want to create this?** — Are you building this or do you want the Stacks team to build it?
- 5. **Label your issue as a `feature`**
+ 2. **Why do you need it?**: Is this required for a project? What’s your timeline? Have you tried using other elements and components first? Explain to us why this needs to be standardized into Stacks.
+ 3. **Provide examples**: If you have examples how others have solved this problem, provide those so we can better understand what you’re asking for.
+ 4. **Who do you want to create this?**: Are you building this or do you want the Stacks team to build it?
-Please note that if you are requesting a feature for the Stacks team to build, it will be prioritized against other work. This doesn’t mean it won’t be added. Depending on the request, it could happen rather quickly. But it may also not happen immediately.
+If you’re asking the Stacks team to build it, we’ll prioritize it alongside existing work. We can’t guarantee a timeline, but we’ll keep you informed.
## Pull requests
-No PR is too small, or too early. We strive to provide initial feedback within a timely manner. Adherence to the following process is the best way to get your work included within Stacks.
-
-1. **Download Stacks**
- _For **internal** Stack Overflow contributors_, simply clone the repo:
- ```bash
- # Clone your fork of the repo into the current directory
- git clone https://github.com/StackExchange/Stacks.git
- # Navigate to the newly cloned directory
- cd Stacks
- ```
- _For **external** contributors_, [fork](https://help.github.com/fork-a-repo/) the project, clone your fork, and configure the remotes:
- ```bash
- # Clone your fork of the repo into the current directory
- git clone https://github.com//Stacks.git
- # Navigate to the newly cloned directory
- cd Stacks
- # Assign the original repo to a remote called "upstream"
- git remote add upstream https://github.com/StackExchange/Stacks.git
- ```
-
-2. Make sure you have the latest changes from the upstream:
- _For **internal** Stack Overflow contributors:_
- ```bash
- git checkout develop
- git pull origin develop
- ```
- _For **external** contributors:_
- ```bash
- git checkout develop
- git pull upstream develop
- ```
-3. Checkout `develop` branch and create a new topic branch for your feature, change, or fix:
+Please keep PRs focused and reasonably sized. A PR that touches one thing is much easier to review quickly than one that touches many. If you're unsure how to break up a large change, reach out in [#stacks](https://stackexchange.slack.com/archives/C27RWNQN9) (Stack Overflow staff) or [open a GitHub issue](https://github.com/StackExchange/Stacks/issues/new) (external contributors) and we'll help you scope it. Adherence to the following process is the best way to get your work included within Stacks.
+
+Draft PRs are welcome for work in progress, but we focus our review time on PRs that are marked ready for review. If you'd like early feedback on a draft, just leave a comment asking and we'll take a look.
+
+### Stack Overflow staff
+
+1. Clone the repo:
+ ```bash
+ git clone https://github.com/StackExchange/Stacks.git
+ cd Stacks
+ ```
+2. Pull the latest changes:
+ ```bash
+ git checkout main
+ git pull origin main
+ ```
+3. Create a topic branch:
```bash
- git checkout develop
git checkout -b
```
-4. Commit your changes in logical chunks. Please adhere to these [git commit
- message guidelines](http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html)
- or your code is unlikely to be merged into the main project. Use Git’s
- [interactive rebase](https://help.github.com/articles/interactive-rebase)
- feature to tidy up your commits before making them public.
-5. Locally merge (or rebase) the upstream development branch into your topic branch:
+4. Commit your changes in logical chunks following [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) format (e.g. `fix(button): correct focus ring color`). Use Git’s [interactive rebase](https://git-scm.com/book/en/v2/Git-Tools-Rewriting-History) to tidy up your commits before making them public.
+
+5. Sync with main before opening your PR:
+ ```bash
+ git pull --rebase origin main
+ ```
+6. Push your branch and [open a pull request](https://github.com/StackExchange/Stacks/pulls) with a clear title and description.
+
+### External contributors
+
+1. [Fork](https://help.github.com/fork-a-repo/) the project, clone your fork, and configure the remotes:
+ ```bash
+ git clone https://github.com//Stacks.git
+ cd Stacks
+ git remote add upstream https://github.com/StackExchange/Stacks.git
+ ```
+2. Pull the latest changes:
```bash
- git pull --rebase upstream develop
+ git checkout main
+ git pull upstream main
```
-6. Push your branch up to your fork:
+3. Create a topic branch:
```bash
- git push origin
+ git checkout -b
```
-7. [Open a Pull Request](https://github.com/StackExchange/Stacks/pulls)
- with a clear title and description.
+4. Commit your changes in logical chunks following [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) format (e.g. `fix(button): correct focus ring color`). Use Git’s [interactive rebase](https://git-scm.com/book/en/v2/Git-Tools-Rewriting-History) to tidy up your commits before making them public.
-**Please note** that all pull requests should be merged into the `develop` branch. Any pull request for `production` will be rejected.
+5. Sync with upstream before opening your PR:
+ ```bash
+ git pull --rebase upstream main
+ ```
+6. Push your branch and [open a pull request](https://github.com/StackExchange/Stacks/pulls) with a clear title and description.
-## Code guidelines
+All pull requests should target the `main` branch. Pull requests targeting `production` will be rejected.
-### General preferences
+## Changesets
-We provide an [editor config file](/.editorconfig) to help you adhere to these standards. All files submitted should adhere to these preferences.
+Stacks uses [changesets](https://github.com/changesets/changesets) to manage versioning and releases. If your PR includes a change that warrants a new release (a bug fix, new feature, or anything that affects the published packages), you need to include a changeset.
- - Use soft tabs with four spaces.
- - Nested elements should be indented once (four spaces).
- - Trim trailing white space on save.
- - Set encoding to UTF-8.
- - Add new line at end of files.
+Run the following and follow the prompts:
-### HTML
+```sh
+npx changeset
+```
-#### Syntax
- - Always use double quotes, never single quotes, on attributes.
- - Use tags and elements appropriate for an HTML5 doctype (e.g. self-closing tags).
- - Use [WAI-ARIA](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA) attributes provided in the documentation examples to promote accessibility.
- - Don’t omit optional closing tags (e.g. `` or `