[
  {
    "path": ".changeset/README.md",
    "content": "# Changesets\n\nHello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool that works\nwith multi-package repos, or single-package repos to help you version and publish your code. You can\nfind the full documentation for it [in our repository](https://github.com/changesets/changesets)\n\nWe have a quick list of common questions to get you started engaging with this project in\n[our documentation](https://github.com/changesets/changesets/blob/master/docs/common-questions.md)\n"
  },
  {
    "path": ".changeset/config.json",
    "content": "{\n  \"$schema\": \"https://unpkg.com/@changesets/config@1.5.0/schema.json\",\n  \"changelog\": [\"@changesets/changelog-github\", {\"repo\": \"primer/css\"}],\n  \"commit\": false,\n  \"linked\": [],\n  \"access\": \"public\",\n  \"baseBranch\": \"main\",\n  \"updateInternalDependencies\": \"patch\",\n  \"ignore\": []\n}\n"
  },
  {
    "path": ".github/CODEOWNERS",
    "content": "* @primer/design-reviewers @primer/engineer-reviewers\npackage.json @primer/design-reviewers @primer/engineer-reviewers\npackage-lock.json @primer/design-reviewers @primer/engineer-reviewers\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/primer-bug-report.md",
    "content": "---\nname: Primer CSS bug report\nabout: Create a report to help us improve Primer CSS\n\n---\n\n**Describe the bug**\nA clear and concise description of what the bug is.\n\n**To Reproduce**\nSteps to reproduce the behavior:\n1. Go to '...'\n2. Click on '....'\n3. Scroll down to '....'\n4. See error\n\n**Expected behavior**\nA clear and concise description of what you expected to happen.\n\n**Screenshots**\nIf applicable, add screenshots to help explain your problem.\n\n**Desktop (please complete the following information):**\n - OS: [e.g. iOS]\n - Browser [e.g. chrome, safari]\n - Version [e.g. 22]\n\n**Smartphone (please complete the following information):**\n - Device: [e.g. iPhone6]\n - OS: [e.g. iOS8.1]\n - Browser [e.g. stock browser, safari]\n - Version [e.g. 22]\n\n**Additional context**\nAdd any other context about the problem here.\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/primer-feature-request.md",
    "content": "---\nname: Primer CSS feature request\nabout: Suggest an idea for this project\n\n---\n\n**Is your feature request related to a problem? Please describe.**\nA clear and concise description of what the problem is. Ex. I'm always frustrated when [...]\n\n**Describe the solution you'd like**\nA clear and concise description of what you want to happen.\n\n**Describe alternatives you've considered**\nA clear and concise description of any alternative solutions or features you've considered.\n\n**Additional context**\nAdd any other context or screenshots about the feature request here.\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/style-guide-bug-report.md",
    "content": "---\nname: Style guide bug report\nabout: Create a report to help us improve\n\n---\n\n**Describe the bug**\nA clear and concise description of what the bug is.\n\n**To Reproduce**\nSteps to reproduce the behavior:\n1. Go to '...'\n2. Click on '....'\n3. Scroll down to '....'\n4. See error\n\n**Expected behavior**\nA clear and concise description of what you expected to happen.\n\n**Screenshots**\nIf applicable, add screenshots to help explain your problem.\n\n**Desktop (please complete the following information):**\n - OS: [e.g. iOS]\n - Browser [e.g. chrome, safari]\n - Version [e.g. 22]\n\n**Smartphone (please complete the following information):**\n - Device: [e.g. iPhone6]\n - OS: [e.g. iOS8.1]\n - Browser [e.g. stock browser, safari]\n - Version [e.g. 22]\n\n**Additional context**\nAdd any other context about the problem here.\n"
  },
  {
    "path": ".github/dependabot.yml",
    "content": "# To get started with Dependabot version updates, you'll need to specify which\n# package ecosystems to update and where the package manifests are located.\n# Please see the documentation for all configuration options:\n# https://help.github.com/github/administering-a-repository/configuration-options-for-dependency-updates\n\nversion: 2\nupdates:\n  # Maintain dependencies for GitHub Actions\n  - package-ecosystem: \"github-actions\"\n    directory: \"/\"\n    schedule:\n      interval: \"daily\"\n    groups:\n      all:\n        patterns:\n        - \"*\"\n\n  # Maintain dependencies for npm\n  - package-ecosystem: \"npm\"\n    directory: \"/\"\n    schedule:\n      interval: \"daily\"\n    groups:\n      all:\n        patterns:\n        - \"*\"\n"
  },
  {
    "path": ".github/pull_request_template.md",
    "content": "### What are you trying to accomplish?\n\n<!-- Please provide a short description of the changes and link to any related issues. Include screenshots or videos for visual changes.  -->\n\n### What approach did you choose and why?\n\n<!-- Here you can explain your approach and reasoning in more detail. -->\n\n### What should reviewers focus on?\n\n<!-- Let reviewers know if there is anything that needs special attention. You can also describe any alternatives that you explored. -->\n\n### Can these changes ship as is?\n\n<!-- Please add a ⚠️ note here if this PR depends on additional changes. For example an update from Primer Primitives. Or additional changes when shipping to \"dotcom\". This will make sure we don't forget to include them. -->\n\n- [ ] Yes, this PR does not depend on additional changes. 🚢 \n"
  },
  {
    "path": ".github/release_template.md",
    "content": "Preparing for a release.\n\n### Checklist\n\nMake sure these items are checked before merging.\n\n- [ ] Preview the docs change.\n- [ ] Preview npm release candidate.\n- [ ] CI passes on the release PR.\n\n<!-- diff_report --><!-- /diff_report -->\n\n<!-- bundle_table --><!-- /bundle_table -->\n"
  },
  {
    "path": ".github/workflows/axe.yml",
    "content": "name: axe\non:\n  push:\n    branches:\n      - main\n  pull_request:\n    branches:\n      - main\njobs:\n  axe:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v6\n        with:\n          fetch-depth: 0\n      - name: Get changed files\n        id: changed-files\n        uses: tj-actions/changed-files@e0021407031f5be11a464abee9a0776171c79891\n        with:\n          files: |\n            docs/content/components/**/*.md\n            docs/content/utilities/**/*.md\n          files_ignore: |\n            docs/content/components/index.md\n            docs/content/utilities/index.md\n      - name: Save changed files\n        run: |\n          echo \"STRING_OF_PATHS_WE_CARE_ABOUT=${{ steps.changed-files.outputs.all_changed_files }}\" >> $GITHUB_ENV\n      - name: Use Node.js\n        if: steps.changed-files.outputs.any_changed == 'true'\n        uses: actions/setup-node@v6\n        with:\n          node-version: 20\n          cache: 'npm'\n      - run: npm ci\n        if: steps.changed-files.outputs.any_changed == 'true'\n      - run: npm run dist\n        if: steps.changed-files.outputs.any_changed == 'true'\n      - name: Run docs site\n        if: steps.changed-files.outputs.any_changed == 'true'\n        run: |\n          npm run dev & npx wait-on http://localhost:8000\n      - name: Run axe script\n        if: steps.changed-files.outputs.any_changed == 'true'\n        run: |\n          script/axe-docs $STRING_OF_PATHS_WE_CARE_ABOUT\n"
  },
  {
    "path": ".github/workflows/ci.yml",
    "content": "name: CI\non:\n  push:\n    branches:\n      - main\n  pull_request:\njobs:\n  stylelint:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v6\n      - uses: actions/setup-node@v6\n        with:\n          node-version: 20\n          cache: 'npm'\n      - run: npm ci\n      - run: npm run dist\n      - name: Lint source files\n        run: npm run stylelint:fix\n      - name: Push up any fixes\n        if: ${{ github.event_name == 'pull_request' }}\n        uses: stefanzweifel/git-auto-commit-action@v7\n        with:\n          commit_message: Fixing stylelint issues\n          commit_user_name: GitHub Design Engineering Bot\n          commit_user_email: primer-css@users.noreply.github.com\n          commit_author: primer-css <primer-css@users.noreply.github.com>\n          file_pattern: src/**/*.scss\n\n  eslint:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v6\n      - uses: actions/setup-node@v6\n        with:\n          node-version: 20\n          cache: 'npm'\n      - run: npm ci\n      - name: Lint workflow files\n        run: npm run eslint\n\n  test:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v6\n      - uses: actions/setup-node@v6\n        with:\n          node-version: 20\n          cache: 'npm'\n      - run: npm ci\n      - name: Jest\n        run: npm test\n"
  },
  {
    "path": ".github/workflows/codeql.yml",
    "content": "# For most projects, this workflow file will not need changing; you simply need\n# to commit it to your repository.\n#\n# You may wish to alter this file to override the set of languages analyzed,\n# or to provide custom queries or build logic.\n#\n# ******** NOTE ********\n# We have attempted to detect the languages in your repository. Please check\n# the `language` matrix defined below to confirm you have the correct set of\n# supported CodeQL languages.\n#\nname: \"CodeQL\"\n\non:\n  push:\n    branches: [ main, next_major ]\n  pull_request:\n    # The branches below must be a subset of the branches above\n    branches: [ main ]\n  schedule:\n    - cron: '34 14 * * 0'\n\njobs:\n  analyze:\n    name: Analyze\n    runs-on: ubuntu-latest\n    permissions:\n      actions: read\n      contents: read\n      security-events: write\n\n    strategy:\n      fail-fast: false\n      matrix:\n        language: [ 'javascript' ]\n        # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ]\n        # Learn more about CodeQL language support at https://git.io/codeql-language-support\n\n    steps:\n    - name: Checkout repository\n      uses: actions/checkout@v6\n\n    # Initializes the CodeQL tools for scanning.\n    - name: Initialize CodeQL\n      uses: github/codeql-action/init@v4\n      with:\n        languages: ${{ matrix.language }}\n        # If you wish to specify custom queries, you can do so here or in a config file.\n        # By default, queries listed here will override any specified in a config file.\n        # Prefix the list here with \"+\" to use these queries and those in the config file.\n        # queries: ./path/to/local/query, your-org/your-repo/queries@main\n\n    # Autobuild attempts to build any compiled languages  (C/C++, C#, or Java).\n    # If this step fails, then you should remove it and run the build manually (see below)\n    - name: Autobuild\n      uses: github/codeql-action/autobuild@v4\n\n    # ℹ️ Command-line programs to run using the OS shell.\n    # 📚 https://git.io/JvXDl\n\n    # ✏️ If the Autobuild fails above, remove it and uncomment the following three lines\n    #    and modify them (or add more) to build your code if your project\n    #    uses a compiled language\n\n    #- run: |\n    #   make bootstrap\n    #   make release\n\n    - name: Perform CodeQL Analysis\n      uses: github/codeql-action/analyze@v4\n"
  },
  {
    "path": ".github/workflows/deploy_preview.yml",
    "content": "name: Deploy\non:\n  pull_request:\n\npermissions:\n  contents: write\n  pages: write\n  id-token: write\n  deployments: write\n  issues: write\n  statuses: write\n  checks: write\n\njobs:\n  deploy:\n    if: ${{ github.repository == 'primer/css' }}\n    uses: primer/.github/.github/workflows/deploy_preview.yml@v2.4.0\n    name: Deploy preview\n    secrets:\n      gh_token: ${{ secrets.GITHUB_TOKEN }}\n    with:\n      node_version: 20\n      install: npm i && cd docs && npm i && cd ..\n      build: npm run build:docs:preview\n      output_dir: docs/public\n\n  deploy-storybook:\n    if: ${{ github.repository == 'primer/css' }}\n    name: Preview Storybook\n    runs-on: ubuntu-latest\n    needs: deploy\n    steps:\n      - uses: actions/checkout@v6\n\n      - uses: chrnorm/deployment-action@v2.0.7\n        name: Create GitHub deployment for storybook\n        id: storybook\n        with:\n          token: ${{ secrets.GITHUB_TOKEN }}\n          environment: Storybook Preview\n          environment_url: '${{ needs.deploy.outputs.deployment_url }}/storybook'\n\n      - name: Update storybook deployment status (success)\n        if: success()\n        uses: chrnorm/deployment-status@v2.0.3\n        with:\n          token: ${{ secrets.GITHUB_TOKEN }}\n          environment-url: '${{ needs.deploy.outputs.deployment_url }}/storybook'\n          state: 'success'\n          deployment-id: ${{ steps.storybook.outputs.deployment_id }}\n\n      - name: Update storybook deployment status (failure)\n        if: failure()\n        uses: chrnorm/deployment-status@v2.0.3\n        with:\n          token: ${{ secrets.GITHUB_TOKEN }}\n          state: 'failure'\n          deployment-id: ${{ steps.storybook.outputs.deployment_id }}\n"
  },
  {
    "path": ".github/workflows/deploy_production.yml",
    "content": "name: Deploy\non:\n  push:\n    branches:\n      - 'main'\n  workflow_dispatch:\n\npermissions:\n  contents: write\n  pages: write\n  id-token: write\n  deployments: write\n  issues: write\n  statuses: write\n  checks: write\n\njobs:\n  guard:\n    name: Guard\n    runs-on: ubuntu-latest\n    outputs:\n      # To avoid deploying documentation for unrelease changes, we check the number of changeset files.\n      # If it's 0, we deploy.\n      should_deploy: ${{ steps.changeset-count.outputs.change_count == 0 }}\n    steps:\n      - uses: actions/checkout@v6\n\n      - id: changeset-count\n        run: echo \"::set-output name=change_count::$(ls .changeset/*.md | grep -v README | wc -l | xargs)\"\n\n      # Log changeset count for debugging purposes\n      - name: Log changeset count\n        run: echo ${{ steps.changeset-count.outputs.change_count }}\n\n      # Log guard output for debugging purposes\n      - name: Log guard output\n        run: echo ${{ needs.guard.outputs.should_deploy }}\n  deploy:\n    if: ${{ github.repository == 'primer/css' }}\n    name: Production\n    needs: [guard]\n    uses: primer/.github/.github/workflows/deploy.yml@v2.4.0\n    secrets:\n      gh_token: ${{ secrets.GITHUB_TOKEN }}\n    with:\n      node_version: 20\n      install: npm i && cd docs && npm i && cd ..\n      build: npm run build:docs\n      output_dir: docs/public\n"
  },
  {
    "path": ".github/workflows/release.yml",
    "content": "name: Release\non:\n  push:\n\nconcurrency:\n  group: ${{ github.workflow }}-${{ github.ref }}\n  cancel-in-progress: true\n\npermissions:\n  id-token: write # Required for OIDC\n  contents: read\n  checks: write\n  statuses: write\n\njobs:\n  release-main:\n    name: Main\n    if: ${{ github.repository == 'primer/css' && github.ref_name == 'main' }}\n\n    runs-on: ubuntu-latest\n    steps:\n      - name: Checkout repository\n        uses: actions/checkout@v6\n        with:\n          # This makes Actions fetch all Git history so that Changesets can generate changelogs with the correct commits\n          fetch-depth: 0\n          persist-credentials: false\n\n      - name: Set up Node.js\n        uses: actions/setup-node@v6\n        with:\n          node-version: 24\n          cache: 'npm'\n\n      - name: Install dependencies\n        run: npm ci\n\n      - id: get-access-token\n        uses: camertron/github-app-installation-auth-action@v1\n        with:\n          app-id: ${{ vars.PRIMER_APP_ID_SHARED }}\n          private-key: ${{ secrets.PRIMER_APP_PRIVATE_KEY_SHARED }}\n          client-id: ${{ vars.PRIMER_APP_CLIENT_ID_SHARED }}\n          client-secret: ${{ secrets.PRIMER_APP_CLIENT_SECRET_SHARED }}\n          installation-id: ${{ vars.PRIMER_APP_INSTALLATION_ID_SHARED }}\n\n      - name: Create release pull request or publish to npm\n        id: changesets\n        uses: changesets/action@master\n        with:\n          title: Release Tracking\n          # This expects you to have a script called release which does a build for your packages and calls changeset publish\n          publish: npm run release\n        env:\n          GITHUB_TOKEN: ${{ steps.get-access-token.outputs.access-token }}\n\n  release-candidate:\n    name: Candidate\n    if: ${{ github.repository == 'primer/css' && github.ref_name == 'changeset-release/main' }}\n\n    runs-on: ubuntu-latest\n    steps:\n      - name: Checkout repository\n        uses: actions/checkout@v6\n        with:\n          # This makes Actions fetch all Git history so that Changesets can generate changelogs with the correct commits\n          fetch-depth: 0\n\n      - name: Set up Node.js\n        uses: actions/setup-node@v6\n        with:\n          node-version: 24\n          cache: 'npm'\n\n      - name: Install dependencies\n        run: npm ci\n\n      - name: Publish release candidate\n        run: |\n          version=$(jq -r .version package.json)\n          echo \"$( jq \".version = \\\"$(echo $version)-rc.$(git rev-parse --short HEAD)\\\"\" package.json )\" > package.json\n          npm publish --tag next\n        env:\n          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n\n      - name: Output candidate version number\n        uses: actions/github-script@v8\n        with:\n          script: |\n            const package = require(`${process.env.GITHUB_WORKSPACE}/package.json`)\n            github.rest.repos.createCommitStatus({\n              owner: context.repo.owner,\n              repo: context.repo.repo,\n              sha: context.sha,\n              state: 'success',\n              context: `Published ${package.name}`,\n              description: package.version,\n              target_url: `https://unpkg.com/${package.name}@${package.version}/`\n            })\n\n      - name: Upload versions json file\n        uses: primer/.github/.github/actions/upload-versions@main\n\n  release-canary:\n    name: Canary\n    if: ${{ github.repository == 'primer/css' && github.ref_name != 'main' && github.ref_name != 'changeset-release/main' }}\n    uses: primer/.github/.github/workflows/release_canary.yml@v2.4.0\n    with:\n      install: npm ci\n    secrets:\n      gh_token: ${{ secrets.GITHUB_TOKEN }}\n"
  },
  {
    "path": ".github/workflows/release_tracking.yml",
    "content": "name: Release Event Tracking\n# Measure a datadog event every time a release occurs\n\non:\n  pull_request:\n    types:\n      - closed\n      - opened\n      - reopened\n\n  release:\n    types: [published]\n\njobs:\n  release-tracking:\n    name: Release Tracking\n    uses: primer/.github/.github/workflows/release_tracking.yml@v2.4.0\n    secrets:\n      datadog_api_key: ${{ secrets.DATADOG_API_KEY }}\n"
  },
  {
    "path": ".github/workflows/stale.yml",
    "content": "name: Stale\non:\n  schedule:\n    - cron: '0 * * * *'\n\njobs:\n  stale:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/stale@v10\n        with:\n          \n          # General settings\n          days-before-stale: 60\n          days-before-close: 7\n          enable-statistics: true\n          operations-per-run: 100\n          remove-stale-when-updated: true\n          \n          # PR specific settings\n          delete-branch: true\n          stale-pr-message: \"Hi! This pull request has been marked as stale because it has been open with no activity for 60 days. You can comment on the pull request or remove the stale label to keep it open. If you do nothing, this pull request will be closed in 7 days.\"\n          \n          # Issue specific settings\n          days-before-issue-stale: 180\n          stale-issue-message: \"Hi! This issue has been marked as stale because it has been open with no activity for 180 days. You can comment on the issue or remove the stale label to keep it open. If you do nothing, this issue will be closed in 7 days.\"\n\n"
  },
  {
    "path": ".github/workflows/welcome.yml",
    "content": "name: Welcome\non:\n  pull_request:\n    types:\n      # On by default if you specify no types.\n      - \"opened\"\n      - \"reopened\"\n      - \"synchronize\"\n      # For `skip-label` only.\n      - \"labeled\"\n      - \"unlabeled\"\n\njobs:\n  release-template:\n    if: ${{ github.head_ref == 'changeset-release/main' || github.head_ref == 'changeset-release/next_major' }}\n    runs-on: ubuntu-latest\n    steps:\n      - name: Checkout repository\n        uses: actions/checkout@v6\n\n      - name: Set up Node.js\n        uses: actions/setup-node@v6\n        with:\n          node-version: 18.x\n          cache: 'npm'\n\n      - name: Get or Create Comment\n        uses: actions/github-script@v8\n        with:\n          github-token: ${{ secrets.GITHUB_TOKEN }}\n          script: |\n            const fs = require('fs')\n            const body = await fs.readFileSync('.github/release_template.md', 'utf8')\n            const result = await github.rest.issues.listComments({\n              issue_number: context.issue.number,\n              owner: context.repo.owner,\n              repo: context.repo.repo\n            });\n            console.log(result.data)\n            const primerComments = result.data.filter(c => c.user.login == 'github-actions[bot]')\n            if (!primerComments.length) {\n              await github.rest.issues.createComment({\n                issue_number: context.issue.number,\n                owner: context.repo.owner,\n                repo: context.repo.repo,\n                body: body.replace('{{PR_AUTHOR}}', context.payload.sender.login)\n              })\n            }\n\n  check-for-changeset:\n    name: Check for changeset\n    runs-on: ubuntu-latest\n    env:\n      SKIP_LABEL: \"skip changeset\"\n    steps:\n      - if: \"contains(github.event.pull_request.labels.*.name, 'skip changeset')\"\n        run: echo \"passed\"; exit 0;\n      - if: \"!contains(github.event.pull_request.labels.*.name, 'skip changeset')\"\n        uses: actions/checkout@v6\n        with:\n          ref: ${{ github.event.pull_request.head.sha }}\n      - if: \"!contains(github.event.pull_request.labels.*.name, 'skip changeset')\"\n        name: \"Check for changeset\"\n        run: script/check-for-changeset\n        \n  bundle-stats:\n    needs: release-template\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v6\n      - uses: actions/setup-node@v6\n        with:\n          node-version: 18\n          cache: 'npm'\n      - run: npm ci\n      - run: npm run pretest\n      - name: Reporting bundle sizes\n        uses: primer/comment-token-update@main\n        env:\n          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n          GITHUB_USER: github-actions[bot]\n        with:\n          comment-token: 'bundle_table'\n          script: |\n            bundles=$(script/bundle-size-report.js)\n            if [[ $bundles ]]; then\n              echo \"### Bundles with a size change since [latest release](https://github.com/primer/css/releases/latest)\"\n              echo \"\"\n              echo \"$bundles\"\n            fi\n\n      - name: Reporting selector diffs\n        uses: primer/comment-token-update@main\n        env:\n          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n          GITHUB_USER: github-actions[bot]\n        with:\n          comment-token: 'diff_report'\n          script: |\n            diff=$(script/selector-diff-report)\n            if [[ $diff ]]; then\n              echo \"### Selectors added/removed since [latest release](https://github.com/primer/css/releases/latest)\"\n              echo \"\"\n              echo \"\\`\\`\\`diff\"\n              echo \"$diff\"\n              echo \"\\`\\`\\`\"\n            fi\n\n  label-release:\n    if: ${{ github.repository == 'primer/css' }}\n    name: Semantic Version Label\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/github-script@v8\n        id: version-result\n        with:\n          github-token: \"${{ secrets.GITHUB_TOKEN }}\"\n          result-encoding: string\n          script: |\n            const diff_url = context.payload.pull_request.diff_url\n            const result = await github.request(diff_url)\n            const match = [...result.data.matchAll(/^\\+['\"]@primer\\/css['\"]:\\s(patch|minor|major)/mg)]\n            if (match && match[0]) {\n              return match[0][1]\n            }\n\n      - uses: actions/github-script@v8\n        env:\n          RELEASE: ${{ steps.version-result.outputs.result }}\n        with:\n          github-token: ${{secrets.GITHUB_TOKEN}}\n          script: |\n            if (process.env.RELEASE == 'undefined') { return }\n            const issue = await github.rest.issues.get({\n              owner: context.repo.owner,\n              repo: context.repo.repo,\n              issue_number: context.issue.number\n            })\n            const currentLabels = issue.data.labels.map( l => l.name)\n            const newLabel = `${process.env.RELEASE} release`\n            if (!currentLabels.includes(newLabel)) {\n              const otherReleaseLabels = currentLabels.filter( l => l.endsWith(' release'))\n              if (otherReleaseLabels.length) {\n                github.rest.issues.removeLabel({\n                  issue_number: context.issue.number,\n                  owner: context.repo.owner,\n                  repo: context.repo.repo,\n                  name: [otherReleaseLabels]\n                })\n              }\n              github.rest.issues.addLabels({\n                issue_number: context.issue.number,\n                owner: context.repo.owner,\n                repo: context.repo.repo,\n                labels: [newLabel]\n              })\n            }\n"
  },
  {
    "path": ".gitignore",
    "content": "*.log\n*.tgz\n.DS_Store\n.cache/\n.changelog/\n.next/\n.sass-cache\n.storybuild/\n.stylelintcache\n_site\ndist/\ndocs/dist\nnode_modules/\npublic/\nsearchIndex.js\ntmp\nyarn.lock\n"
  },
  {
    "path": ".npmignore",
    "content": "__tests__/\n.changeset/\n.github/\ndocs/\nscript/\n# we ignore this because everything in src/ is copied out in script/prepublish\nsrc/\ntmp/\ndocs.scss\n.*\n*.log\nvercel.json\n*.config.js\n"
  },
  {
    "path": ".npmrc",
    "content": "git-tag-version=false\nlegacy-peer-deps=true\nno-audit=true\nno-fund=true\n"
  },
  {
    "path": ".vercelignore",
    "content": ".*.sw?\n.changelog/\ndist/\ndocs/dist\ndocs/public/\n"
  },
  {
    "path": ".vscode/story-template.code-snippets",
    "content": "{\n    \"story-template\": {\n        \"prefix\": \"story-template\",\n        \"body\": [\n            \"import React from 'react'\",\n            \"import clsx from 'clsx'\",\n            \"// import { StoryTemplateName } from './OtherStoryFile.stories' // import stories for component compositions\",\n            \"\",\n            \"export default {\",\n            \"  title: 'Components/ComponentName',\",\n            \"  excludeStories: ['ComponentTemplateName'],\",\n            \"  layout: 'padded',\",\n            \"  argTypes: {\",\n            \"    booleanExample: {\",\n            \"      control: {type: 'boolean'},\",\n            \"      description: 'true/false toggle to controls',\",\n            \"      table: {\",\n            \"        category: 'Pick one: CSS, HTML, Interactive'\",\n            \"      }\",\n            \"    },\",\n            \"    radioExample: {\",\n            \"      options: ['string1', 'string2', 'string3', 'string4'],\",\n            \"      control: {\",\n            \"        type: 'inline-radio',\",\n            \"      },\",\n            \"      description: 'radio buttons mapping to strings (example: use for variant class names)',\",\n            \"      table: {\",\n            \"        category: 'Pick one: CSS, HTML, Interactive'\",\n            \"      }\",\n            \"    },\",\n            \"    stringExample: {\",\n            \"      name: 'stringExample',\",\n            \"      type: 'string',\",\n            \"      description: 'text box control',\",\n            \"      table: {\",\n            \"        category: 'Pick one: CSS, HTML, Interactive'\",\n            \"      }\",\n            \"    },\",\n            \"    children: {\",\n            \"      description: 'creates a slot for children',\",\n            \"      table: {\",\n            \"        category: 'HTML'\",\n            \"      }\",\n            \"    }\",\n            \"  }\",\n            \"}\",\n            \"\",\n            \"// build every component case here in the template (private api)\",\n            \"export const ComponentTemplateName = ({booleanExample, radioExample, stringExample, children}) => (\",\n            \"  <div\",\n            \"    // use clsx for multiple classnames\",\n            \"    className={clsx('defaultClass', radioExample && `radioExample`, booleanExample && 'defaultClass--modifier')}\",\n            \"    // use undefined for values that shouldn't be set if false\",\n            \"    // aria-hidden={booleanExample ? 'true' : undefined}\",\n            \"  >\",\n            \"    {/* use {children} for wrapper component templates */}\",\n            \"    <>\",\n            \"      {stringExample}\",\n            \"      {children}\",\n            \"    </>\",\n            \"  </div>\",\n            \")\",\n            \"\",\n            \"// create a \\\"playground\\\" demo page that may set some defaults and allow story to access component controls\",\n            \"export const Playground = ComponentTemplateName.bind({})\",\n            \"Playground.args = {\",\n            \"  stringExample: 'Default text',\",\n            \"  booleanExample: false\",\n            \"  //   children: (\",\n            \"  //     <>\",\n            \"  //       <StoryTemplateName {...StoryTemplateName.args} />\",\n            \"  //     </>\",\n            \"  //   )\",\n            \"}\",\n            \"\"\n        ],\n        \"description\": \"Basic component story jsx template\"\n    }\n}\n"
  },
  {
    "path": "CHANGELOG.md",
    "content": "# @primer/css\n\n## 22.1.1\n\n### Patch Changes\n\n- [#3012](https://github.com/primer/css/pull/3012) [`31df244`](https://github.com/primer/css/commit/31df2449f00048c949811b4b4dbe51665567811c) Thanks [@francinelucca](https://github.com/francinelucca)! - Add max-width to kbd styles\n\n- [#2811](https://github.com/primer/css/pull/2811) [`0de15b2`](https://github.com/primer/css/commit/0de15b2e32a741908a4a8d1e8126a891b3d74e07) Thanks [@FloEdelmann](https://github.com/FloEdelmann)! - Reduce spacing between consecutive `<dt>` elements\n\n## 22.1.0\n\n### Minor Changes\n\n- [#2907](https://github.com/primer/css/pull/2907) [`67109bd`](https://github.com/primer/css/commit/67109bda0dcd7e191c3071f5eb58006fdbe4e3c8) Thanks [@langermank](https://github.com/langermank)! - Change `contrast` input background to `bgColor-default`\n\n## 22.0.2\n\n### Patch Changes\n\n- [#2866](https://github.com/primer/css/pull/2866) [`d43c856`](https://github.com/primer/css/commit/d43c85624326770d91e8239c0c5e6693700e4481) Thanks [@lukasoppermann](https://github.com/lukasoppermann)! - Update @primer/primitives peerDependencies to 10.x || 11.x\n\n- [#2871](https://github.com/primer/css/pull/2871) [`0d2eb58`](https://github.com/primer/css/commit/0d2eb58fbf18092c2ef4ba252522fea98a6aaa1f) Thanks [@lukasoppermann](https://github.com/lukasoppermann)! - Add default font weight (--base-text-weight-normal, 400) to body\n\n## 22.0.1\n\n### Patch Changes\n\n- [#2864](https://github.com/primer/css/pull/2864) [`0311c08`](https://github.com/primer/css/commit/0311c0849cdfc0fcb18ee0ed96ce2a3ba5c136d6) Thanks [@lukasoppermann](https://github.com/lukasoppermann)! - Add --fontStack-sansSerif to $body-font variable\n\n## 22.0.0\n\n### Major Changes\n\n- [#2789](https://github.com/primer/css/pull/2789) [`4113637`](https://github.com/primer/css/commit/4113637b3bb60cad1e2dca82e70d92ad05694399) Thanks [@jonrohan](https://github.com/jonrohan)! - Remove @primer/view-components imports for styles moved to primer/view_components\n\n## 21.5.1\n\n### Patch Changes\n\n- [#2727](https://github.com/primer/css/pull/2727) [`7d4cd40`](https://github.com/primer/css/commit/7d4cd4061a0ffb70355944d33ea49883819da26a) Thanks [@kawakamimoeki](https://github.com/kawakamimoeki)! - Removed .css extension from @import and modified @primer/primitives to be output as Sass code.\n\n- [#2728](https://github.com/primer/css/pull/2728) [`7eaba91`](https://github.com/primer/css/commit/7eaba91768f8e31cf6b0c5538230ce2d04e9bfec) Thanks [@lukasoppermann](https://github.com/lukasoppermann)! - Update primer/primitives to allow for version 9 and 10\n\n- [#2680](https://github.com/primer/css/pull/2680) [`1eb467e`](https://github.com/primer/css/commit/1eb467e9edb3d9ddb84c47bfbf9a21cb9950bf06) Thanks [@robinwhittleton](https://github.com/robinwhittleton)! - Use tabular numbers in tables\n\n## 21.5.0\n\n### Minor Changes\n\n- [#2724](https://github.com/primer/css/pull/2724) [`30d144b`](https://github.com/primer/css/commit/30d144b507d75e5b5ef6d4ec156978acaeb9fad4) Thanks [@camertron](https://github.com/camertron)! - Move prod @primer/\\* dependencies to dev\n\n## 21.4.0\n\n### Minor Changes\n\n- [#2691](https://github.com/primer/css/pull/2691) [`5097430`](https://github.com/primer/css/commit/50974300dfe8cf636e1b15b5fbd5b0dc5adf4f2e) Thanks [@dylanatsmith](https://github.com/dylanatsmith)! - Remove background behind images in markdown-body\n\n### Patch Changes\n\n- [#2710](https://github.com/primer/css/pull/2710) [`3017831`](https://github.com/primer/css/commit/30178319550ecbf318ecbfa36675c80b6e95e3ba) Thanks [@smockle](https://github.com/smockle)! - Replace deprecated CSS properties in '.sr-only'\n\n## 21.3.6\n\n### Patch Changes\n\n- [#2624](https://github.com/primer/css/pull/2624) [`7e62532`](https://github.com/primer/css/commit/7e6253292c3de10a1f333cfc4e6e3216e6a53ab8) Thanks [@sideshowbarker](https://github.com/sideshowbarker)! - drop “display: none” from details element contents styling\n\n## 21.3.5\n\n### Patch Changes\n\n- [#2657](https://github.com/primer/css/pull/2657) [`b87c379`](https://github.com/primer/css/commit/b87c3796fbb7b2127c98e3fda086f9f1cfd8bc9b) Thanks [@jonrohan](https://github.com/jonrohan)! - Import `primitives/index.scss` in the main `primer.css` file.\n\n## 21.3.4\n\n### Patch Changes\n\n- [#2651](https://github.com/primer/css/pull/2651) [`e329973`](https://github.com/primer/css/commit/e329973d4d788b8b6d2688a907f88c8458b6db7a) Thanks [@jonrohan](https://github.com/jonrohan)! - Bug fix: Removing complex padding calc on kbd\n\n## 21.3.3\n\n### Patch Changes\n\n- [#2644](https://github.com/primer/css/pull/2644) [`eba2b2c`](https://github.com/primer/css/commit/eba2b2c157efc2e16a7bf36db0882c6f330b7bd4) Thanks [@camertron](https://github.com/camertron)! - Fix 'clac' -> 'calc' typo\n\n## 21.3.2\n\n### Patch Changes\n\n- [#2643](https://github.com/primer/css/pull/2643) [`ab6076c`](https://github.com/primer/css/commit/ab6076c62bac967d5d0c805744e50cc8d73d4171) Thanks [@langermank](https://github.com/langermank)! - Use `control` borders for subnav + disabled button fix\n\n- [#2634](https://github.com/primer/css/pull/2634) [`af3ab76`](https://github.com/primer/css/commit/af3ab76454fd3045315082a14cdc5bdfcabd860a) Thanks [@jonrohan](https://github.com/jonrohan)! - Upgrade to @primer/primtives@8.2.0 and @primer/stylelint-config@13.0.0-rc\n\n## 21.3.1\n\n### Patch Changes\n\n- [#2613](https://github.com/primer/css/pull/2613) [`2eabfde`](https://github.com/primer/css/commit/2eabfdea85667c041e86e13376f1d2823b64fcb1) Thanks [@stamat](https://github.com/stamat)! - removing !important from letter-spacing marketing typography\n\n- [#2611](https://github.com/primer/css/pull/2611) [`e867934`](https://github.com/primer/css/commit/e8679348ca29c85b470a6b04a821d7143d4acf16) Thanks [@keithamus](https://github.com/keithamus)! - drop !important from details styling\n\n## 21.3.0\n\n### Minor Changes\n\n- [#2598](https://github.com/primer/css/pull/2598) [`434fcac`](https://github.com/primer/css/commit/434fcac6c296ddd3155945420f785a6b48eb693c) Thanks [@langermank](https://github.com/langermank)! - Remove marketing icon variables\n\n- [#2596](https://github.com/primer/css/pull/2596) [`9896c79`](https://github.com/primer/css/commit/9896c79a846cbaa633d21573be252b8e4812e79d) Thanks [@jonrohan](https://github.com/jonrohan)! - Move native color styles from the color-modes bundle to the base bundle\n\n### Patch Changes\n\n- [#2606](https://github.com/primer/css/pull/2606) [`a03827b`](https://github.com/primer/css/commit/a03827b0a0c76c6df8d15d04ea2ec7976799cc92) Thanks [@langermank](https://github.com/langermank)! - Cleanup old Primitive imports\n\n## 21.2.2\n\n### Patch Changes\n\n- [#2590](https://github.com/primer/css/pull/2590) [`d75a512`](https://github.com/primer/css/commit/d75a512298f087e49cac1787fd131501cc308f07) Thanks [@langermank](https://github.com/langermank)! - Use legacy shadow for all floating shadows\n\n## 21.2.1\n\n### Patch Changes\n\n- [#2581](https://github.com/primer/css/pull/2581) [`5d8a030`](https://github.com/primer/css/commit/5d8a030319fa64c99f0d3bed85079884d7086474) Thanks [@langermank](https://github.com/langermank)! - Update shadow utils\n\n- [#2588](https://github.com/primer/css/pull/2588) [`7a25839`](https://github.com/primer/css/commit/7a2583942001decfa3d8172833a5f6b55469c56b) Thanks [@langermank](https://github.com/langermank)! - Bump Primitives + fix selectmenu box-shadow\n\n## 21.2.0\n\n### Minor Changes\n\n- [#2532](https://github.com/primer/css/pull/2532) [`51666ea3`](https://github.com/primer/css/commit/51666ea3b4a00239ff60e420782b5b647484b264) Thanks [@langermank](https://github.com/langermank)! - Tooltip visual refresh\n\n### Patch Changes\n\n- [#2566](https://github.com/primer/css/pull/2566) [`407c5676`](https://github.com/primer/css/commit/407c5676d61985d9061adb77ed2de5bfcc0312ec) Thanks [@langermank](https://github.com/langermank)! - Add `monospace` CSS var to global scss var\n\n## 21.1.1\n\n### Patch Changes\n\n- [#2563](https://github.com/primer/css/pull/2563) [`41952457`](https://github.com/primer/css/commit/4195245722defddf9563fe32b0cbe5c9ae5d42d4) Thanks [@langermank](https://github.com/langermank)! - fix backdrop selector\n\n- [#2564](https://github.com/primer/css/pull/2564) [`8757be58`](https://github.com/primer/css/commit/8757be584db2ddda8153566dc1906451832d3833) Thanks [@langermank](https://github.com/langermank)! - Add new color utility classes\n\n## 21.1.0\n\n### Minor Changes\n\n- [#2554](https://github.com/primer/css/pull/2554) [`f0b0d208`](https://github.com/primer/css/commit/f0b0d208cf04cbf77bfc46b40d65d5f53b109aaa) Thanks [@jonrohan](https://github.com/jonrohan)! - Remove primitives css tokens import from support package\n\n## 21.0.10\n\n### Patch Changes\n\n- [#2549](https://github.com/primer/css/pull/2549) [`df764e1a`](https://github.com/primer/css/commit/df764e1a617d13af34d97bd7b4f06b8a478facd2) Thanks [@keithamus](https://github.com/keithamus)! - Fix styles for ::backdrop\n\n## 21.0.9\n\n### Patch Changes\n\n- [#2520](https://github.com/primer/css/pull/2520) [`7e2622fe`](https://github.com/primer/css/commit/7e2622fe9679969dd195438f5dd7108d2e8991c5) Thanks [@langermank](https://github.com/langermank)! - Use `control` border on default btn in an input group\n\n## 21.0.8\n\n### Patch Changes\n\n- [#2510](https://github.com/primer/css/pull/2510) [`49e81506`](https://github.com/primer/css/commit/49e81506a99bd83c05a8459a49f1fd3ae60da20b) Thanks [@langermank](https://github.com/langermank)! - Use `control` tokens for legacy form CSS border-color\n\n- [#2508](https://github.com/primer/css/pull/2508) [`a8b1bed2`](https://github.com/primer/css/commit/a8b1bed2ead5824fb6332f61c6728f324b51d32c) Thanks [@langermank](https://github.com/langermank)! - Bump Primitive v7.12.0\n\n- [#2443](https://github.com/primer/css/pull/2443) [`e1b3f4f4`](https://github.com/primer/css/commit/e1b3f4f4bd041c6858b275142b8321c383c6aa54) Thanks [@jonrohan](https://github.com/jonrohan)! - Remove yarn in favor of npm\n\n## 21.0.7\n\n### Patch Changes\n\n- [#2472](https://github.com/primer/css/pull/2472) [`3ee117e1`](https://github.com/primer/css/commit/3ee117e1bd67675a5bdc2739bbe4d05f4e297c30) Thanks [@simurai](https://github.com/simurai)! - Add `::selection` to `color-mode-theme()` mixin\n\n## 21.0.6\n\n### Patch Changes\n\n- [#2470](https://github.com/primer/css/pull/2470) [`03e1a26c`](https://github.com/primer/css/commit/03e1a26c0d4fcc85450998f0f1f8120a1db48acc) Thanks [@langermank](https://github.com/langermank)! - Revert #2461 default selection color\n\n## 21.0.5\n\n### Patch Changes\n\n- [#2468](https://github.com/primer/css/pull/2468) [`c6d5d1df`](https://github.com/primer/css/commit/c6d5d1dfd3eafe44197ddc262f605dc5373437ac) Thanks [@keithamus](https://github.com/keithamus)! - Fix bug with `color-mode` mixin not applying correctly due to `::selection`\n\n## 21.0.4\n\n### Patch Changes\n\n- [#2466](https://github.com/primer/css/pull/2466) [`92047014`](https://github.com/primer/css/commit/9204701416b547255a1ebaeb2bd8a20056ffb8d4) Thanks [@langermank](https://github.com/langermank)! - Use `@primer/primitives` v8 colors with fallbacks\n\n## 21.0.3\n\n### Patch Changes\n\n- [#2461](https://github.com/primer/css/pull/2461) [`abc89659`](https://github.com/primer/css/commit/abc8965913313bbb969db9e1148fb5add9327ec9) Thanks [@langermank](https://github.com/langermank)! - Add default `::selection` color\n\n- [#2410](https://github.com/primer/css/pull/2410) [`344224fc`](https://github.com/primer/css/commit/344224fccdef2f3a37ed931c512e400b47301ea2) Thanks [@dylanatsmith](https://github.com/dylanatsmith)! - Add width utility to limit line length for readability\n\n- [#2457](https://github.com/primer/css/pull/2457) [`352ed7b7`](https://github.com/primer/css/commit/352ed7b75585c686c996a5e7c2c29e20e41d0672) Thanks [@langermank](https://github.com/langermank)! - Add new PostCSS fallback config\n\n## 21.0.2\n\n### Patch Changes\n\n- [#2439](https://github.com/primer/css/pull/2439) [`fe17ba05`](https://github.com/primer/css/commit/fe17ba05ac4372fb1d49edc08c8c036c2da54dce) Thanks [@langermank](https://github.com/langermank)! - Bump primitives v7.11.10\n\n- [#2437](https://github.com/primer/css/pull/2437) [`616c8935`](https://github.com/primer/css/commit/616c89354bf8571488674b44f431361d66e9eae3) Thanks [@langermank](https://github.com/langermank)! - Add `::selection` to root color vars\n\n- [#2438](https://github.com/primer/css/pull/2438) [`abdb3a93`](https://github.com/primer/css/commit/abdb3a93f10705472cea773473eb3ada6b918d31) Thanks [@langermank](https://github.com/langermank)! - Add utility typography CSS vars to main bundle\n\n- [#2426](https://github.com/primer/css/pull/2426) [`713d9a59`](https://github.com/primer/css/commit/713d9a5921e565baf39fe522dfa73eb603b850e2) Thanks [@langermank](https://github.com/langermank)! - Add `mktg` CSS vars to PCSS\n\n- [#2430](https://github.com/primer/css/pull/2430) [`c415172f`](https://github.com/primer/css/commit/c415172fca56a7f22d21f66a79e49da7dd443f96) Thanks [@langermank](https://github.com/langermank)! - Remove duplicate `font-weight` fallbacks from utilities\n\n## 21.0.1\n\n### Patch Changes\n\n- [#2421](https://github.com/primer/css/pull/2421) [`7dfcb0c5`](https://github.com/primer/css/commit/7dfcb0c595881439c15a38389168272da5aab59d) Thanks [@simurai](https://github.com/simurai)! - Bump @primer/primitives to `7.11.5`\n\n- [#2404](https://github.com/primer/css/pull/2404) [`ae9d71b1`](https://github.com/primer/css/commit/ae9d71b117bf37e8f618db4474efd87c75a2f531) Thanks [@langermank](https://github.com/langermank)! - Add `font-size` to `html` tag to make rem units \"safe\"\n\n- [#2418](https://github.com/primer/css/pull/2418) [`bce38dee`](https://github.com/primer/css/commit/bce38dee01027c6ac6dd3dbcec644eec153fd2ba) Thanks [@simurai](https://github.com/simurai)! - Make list type selector case sensitive\n\n- [#2425](https://github.com/primer/css/pull/2425) [`718f1aa6`](https://github.com/primer/css/commit/718f1aa6a6f8b5823e55b6b2616a729f59392e83) Thanks [@langermank](https://github.com/langermank)! - - Bump primitives to v7.11.7\n  - Update size tokens to Primitives pre-v8 release\n\n## 21.0.0\n\n### Major Changes\n\n- [#2403](https://github.com/primer/css/pull/2403) [`256affcf`](https://github.com/primer/css/commit/256affcf3404c97d3db199a0b3cf32d3b864627c) Thanks [@lukasoppermann](https://github.com/lukasoppermann)! - ## Removed DiffStat component\n  - the diffStat component is removed from primer/css\n  - the component is very specific to this use-case, it is not generic enough to be part of the primer design system and was thus chosen for removal\n  - the component will be added to the github codebase directly so that it is still available\n  - if you are working within github.com you should be ale to use diffStat just like before. On other projects you will need to copy the diffStat code and add it to your codebase\n\n- [#2402](https://github.com/primer/css/pull/2402) [`c6e214b7`](https://github.com/primer/css/commit/c6e214b75b5a25d3ebb7f41ca922c93d395ac109) Thanks [@simurai](https://github.com/simurai)! - Remove `form-validation` styles\n\n- [#2405](https://github.com/primer/css/pull/2405) [`85f31cc8`](https://github.com/primer/css/commit/85f31cc8f8d4423a712fda166421eb0ac7d6d562) Thanks [@simurai](https://github.com/simurai)! - Remove `ActionList`\n\n### Patch Changes\n\n- [#2407](https://github.com/primer/css/pull/2407) [`607337cc`](https://github.com/primer/css/commit/607337cce57e59c7bee00486b63fa43ce845aff2) Thanks [@simurai](https://github.com/simurai)! - Bump @primer/primitives to `7.11.2`\n\n- [#2409](https://github.com/primer/css/pull/2409) [`cf38a932`](https://github.com/primer/css/commit/cf38a932e76e00a8c83c351bbb5f1ae23649d1b4) Thanks [@simurai](https://github.com/simurai)! - Bump @primer/primitives to `7.11.3`\n\n- [#2391](https://github.com/primer/css/pull/2391) [`95ab0d0f`](https://github.com/primer/css/commit/95ab0d0f48fde360a9f0b0f6a8af0323b3e891da) Thanks [@simurai](https://github.com/simurai)! - Prevent `.show-on-focus` to change width/height\n\n## 20.8.3\n\n### Patch Changes\n\n- [#2390](https://github.com/primer/css/pull/2390) [`73ae8ec4`](https://github.com/primer/css/commit/73ae8ec45bc7d92ecfe58226d233176856f7bca9) Thanks [@simurai](https://github.com/simurai)! - Remove `autocheck` + `status-indicator` styles\n\n- [#2388](https://github.com/primer/css/pull/2388) [`3ceb1964`](https://github.com/primer/css/commit/3ceb19648b651f2a5b2f571d066aa895af8f443e) Thanks [@arelia](https://github.com/arelia)! - update default for flex wrap styles\n\n- [#2378](https://github.com/primer/css/pull/2378) [`55f35e1d`](https://github.com/primer/css/commit/55f35e1d0fc9a441f14f29b61ac5fbefbf3c4884) Thanks [@simurai](https://github.com/simurai)! - Fix code block color inside a `<blockquote>`\n\n- [#2386](https://github.com/primer/css/pull/2386) [`1b53e23e`](https://github.com/primer/css/commit/1b53e23ed39fc2c001b07d810ebe516f2957f325) Thanks [@josepmartins](https://github.com/josepmartins)! - Add responsive `border-radius` story\n\n## 20.8.2\n\n### Patch Changes\n\n- [#2380](https://github.com/primer/css/pull/2380) [`3010e199`](https://github.com/primer/css/commit/3010e199bb5068838eb46e73e748d1e5e2f0143c) Thanks [@langermank](https://github.com/langermank)! - Bump Primitives v7.11.1\n\n## 20.8.1\n\n### Patch Changes\n\n- [#2365](https://github.com/primer/css/pull/2365) [`4b94fbb7`](https://github.com/primer/css/commit/4b94fbb759e163abb9495777973b5a6e700769f7) Thanks [@jackbrewer](https://github.com/jackbrewer)! - Remove trailing margin from last-child within a markdown table cell\n\n- [#2351](https://github.com/primer/css/pull/2351) [`1b6694c4`](https://github.com/primer/css/commit/1b6694c40903eae4e107cd9d59faf5020a42f944) Thanks [@jonrohan](https://github.com/jonrohan)! - Updating to primer view components 0.0.117\n\n## 20.8.0\n\n### Minor Changes\n\n- [`d7a4c343`](https://github.com/primer/css/commit/d7a4c343ab1bc0d7f55ff85d735c93d9825419ae) Thanks [@jonrohan](https://github.com/jonrohan)! - Importing more styles from Primer View Components\n  - https://github.com/primer/view_components/pull/1587\n  - https://github.com/primer/view_components/pull/1590\n  - https://github.com/primer/view_components/pull/1592\n  - https://github.com/primer/view_components/pull/1593\n  - https://github.com/primer/view_components/pull/1594\n  - https://github.com/primer/view_components/pull/1598\n  - https://github.com/primer/view_components/pull/1599\n  - https://github.com/primer/view_components/pull/1600\n  - https://github.com/primer/view_components/pull/1601\n  - https://github.com/primer/view_components/pull/1607\n  - https://github.com/primer/view_components/pull/1609\n  - https://github.com/primer/view_components/pull/1618\n  - https://github.com/primer/view_components/pull/1626\n\n- [#2318](https://github.com/primer/css/pull/2318) [`aee4b6f5`](https://github.com/primer/css/commit/aee4b6f571d88f391fcf98170857c4eed7b1ae82) Thanks [@jonrohan](https://github.com/jonrohan)! - Import blankslate styles from primer/view-components\n\n### Patch Changes\n\n- [#2309](https://github.com/primer/css/pull/2309) [`f76e7858`](https://github.com/primer/css/commit/f76e785807d9c9c64530201f858798e67668afe2) Thanks [@jdanyow](https://github.com/jdanyow)! - Use `--color-fg-default` for `mark`\n\n- [#2330](https://github.com/primer/css/pull/2330) [`83250f82`](https://github.com/primer/css/commit/83250f82751092cc9ad3a8fb46262a0f0f2a3a96) Thanks [@stevenlaidlaw](https://github.com/stevenlaidlaw)! - Fix collapsing spaces within inline code blocks\n\n- [#2327](https://github.com/primer/css/pull/2327) [`8cf13e98`](https://github.com/primer/css/commit/8cf13e984ca27a286a706fd2b7243980d3de7985) Thanks [@simurai](https://github.com/simurai)! - Move `fieldset` + `label` styles to `base.scss`\n\n- [#2340](https://github.com/primer/css/pull/2340) [`ecbcbb1b`](https://github.com/primer/css/commit/ecbcbb1b04e72fc2006be7ea8211aae0732d3530) Thanks [@simurai](https://github.com/simurai)! - Import `Layout` from PVC\n\n## 20.7.1\n\n### Patch Changes\n\n- [#2322](https://github.com/primer/css/pull/2322) [`1259ddd4`](https://github.com/primer/css/commit/1259ddd408a415a74b740992a8d64197b48bf1f4) Thanks [@langermank](https://github.com/langermank)! - Use correct weight token for typography utilities\n\n## 20.7.0\n\n### Minor Changes\n\n- [#2311](https://github.com/primer/css/pull/2311) [`3b397d98`](https://github.com/primer/css/commit/3b397d985c23592d0e18d14fe75d71ea7572aa18) Thanks [@langermank](https://github.com/langermank)! - [WIP] Convert margin utilities to rem units with fallbacks\n\n- [`46016601`](https://github.com/primer/css/commit/46016601e89d8b777e06dc7d6cd4a272dba17f7d) Thanks [@langermank](https://github.com/langermank)! - Convert padding and border utilities to use `rem` units with `px` fallbacks\n\n- [#2302](https://github.com/primer/css/pull/2302) [`412d7820`](https://github.com/primer/css/commit/412d78208ba76e7a1cdc0872a2adcadabc3d0414) Thanks [@langermank](https://github.com/langermank)! - Convert typography to use `rem` units with `px` fallbacks\n\n## 20.6.1\n\n### Patch Changes\n\n- [#2305](https://github.com/primer/css/pull/2305) [`12355f87`](https://github.com/primer/css/commit/12355f87ac8955da0707f6be6fa06a936c26b2fd) Thanks [@vdepizzol](https://github.com/vdepizzol)! - Add upper-roman and upper-alpha list types\n\n- [#2307](https://github.com/primer/css/pull/2307) [`0370244f`](https://github.com/primer/css/commit/0370244f49322863534c62b5b5589128c551ccc7) Thanks [@jonrohan](https://github.com/jonrohan)! - Bugfix: Adding `white-space: normal` to Overlay compontn to reset wrapping.\n\n- [#2316](https://github.com/primer/css/pull/2316) [`f3acb2b1`](https://github.com/primer/css/commit/f3acb2b116f10955e1ba4f1a35aa874eed019ceb) Thanks [@langermank](https://github.com/langermank)! - Increase Checkbox/Radio border contrast\n\n- [#2314](https://github.com/primer/css/pull/2314) [`c8100be7`](https://github.com/primer/css/commit/c8100be771634093fe3a4d36481fc43c0d966015) Thanks [@langermank](https://github.com/langermank)! - [Bug] Radio checked + focus state fixes\n\n- [#2310](https://github.com/primer/css/pull/2310) [`551492eb`](https://github.com/primer/css/commit/551492ebf420b3ea8872e9a101bd874d8b4e8a1d) Thanks [@jdanyow](https://github.com/jdanyow)! - Update dropdown hover selector\n\n## 20.6.0\n\n### Minor Changes\n\n- [#2300](https://github.com/primer/css/pull/2300) [`5a0b9b29`](https://github.com/primer/css/commit/5a0b9b2939c1428430d249aeeb9adb0ba8bc18ce) Thanks [@simurai](https://github.com/simurai)! - Add `Noto Sans` to the body font stack\n\n## 20.5.1\n\n### Patch Changes\n\n- [#2292](https://github.com/primer/css/pull/2292) [`9a4f2ff7`](https://github.com/primer/css/commit/9a4f2ff78073be69127664b36d469c4b1ddf0c7c) Thanks [@camertron](https://github.com/camertron)! - Add additional :not selectors for flash classes\n\n## 20.5.0\n\n### Minor Changes\n\n- [#2289](https://github.com/primer/css/pull/2289) [`c23346b9`](https://github.com/primer/css/commit/c23346b9a401beb3c2b0cbc853574a5259db42a5) Thanks [@camertron](https://github.com/camertron)! - Don't apply flash\\* classes to banners\n\n## 20.4.8\n\n### Patch Changes\n\n- [#2284](https://github.com/primer/css/pull/2284) [`8336334d`](https://github.com/primer/css/commit/8336334d12ba3a1dac323c853b9fdcaacd480b68) Thanks [@koddsson](https://github.com/koddsson)! - Remove action list item animation\n\n## 20.4.7\n\n### Patch Changes\n\n- [#2228](https://github.com/primer/css/pull/2228) [`b087282e`](https://github.com/primer/css/commit/b087282e5040a53a48b707bd94151a3b896659db) Thanks [@simurai](https://github.com/simurai)! - Improve `AvatarStack` when hovering\n\n* [#2269](https://github.com/primer/css/pull/2269) [`27266fcd`](https://github.com/primer/css/commit/27266fcd212af6256511a912fb85c303e1b3a4d9) Thanks [@vdepizzol](https://github.com/vdepizzol)! - Fix Overlay easing animation\n\n- [#2260](https://github.com/primer/css/pull/2260) [`6569fb3a`](https://github.com/primer/css/commit/6569fb3a048e324fea63674077fee587b6b9912a) Thanks [@simurai](https://github.com/simurai)! - Fix nested `<ul>` in footnotes\n\n* [#2268](https://github.com/primer/css/pull/2268) [`2e2bc71b`](https://github.com/primer/css/commit/2e2bc71b78806e0ce81005e42871bc21ec829526) Thanks [@simurai](https://github.com/simurai)! - Set FormControl color\n\n## 20.4.6\n\n### Patch Changes\n\n- [#2266](https://github.com/primer/css/pull/2266) [`c28cdf7e`](https://github.com/primer/css/commit/c28cdf7effbd3bd750585543ff774e1e7c84873a) Thanks [@langermank](https://github.com/langermank)! - Remove scrollbar CSS property from Overlay\n\n* [#2255](https://github.com/primer/css/pull/2255) [`1a9a6689`](https://github.com/primer/css/commit/1a9a668931c51cb4ca0867173af78f1e18d2662d) Thanks [@jdrush89](https://github.com/jdrush89)! - Fixing ActionList Item hover focus style\n\n- [#2249](https://github.com/primer/css/pull/2249) [`81083778`](https://github.com/primer/css/commit/81083778a73c1d1f0f37b4efefe5359926ce4269) Thanks [@koddsson](https://github.com/koddsson)! - Increase specificy for Overlay styles as they relate to the backdrop and positioning options\n  - If a Dialog opens a second Dialog, each Dialog properties should be contained to its own scope\n\n## 20.4.5\n\n### Patch Changes\n\n- [#2242](https://github.com/primer/css/pull/2242) [`ef31fd98`](https://github.com/primer/css/commit/ef31fd988d52391317cc8982caf06ef45732ca70) Thanks [@JoshBowdenConcepts](https://github.com/JoshBowdenConcepts)! - This border change was made to ensure that assignee avatars would stack next to one another correctly.\n\n## 20.4.4\n\n### Patch Changes\n\n- [#2218](https://github.com/primer/css/pull/2218) [`6205337b`](https://github.com/primer/css/commit/6205337b4c871b6ce431c8b211ddb0bbd176946f) Thanks [@langermank](https://github.com/langermank)! - - Adding readonly styles\n  - Fixing focus background color for inset field\n\n* [#2211](https://github.com/primer/css/pull/2211) [`8e5f6224`](https://github.com/primer/css/commit/8e5f62244192a8e2a191be7e7ad20d00f4b4bedb) Thanks [@imjohnbo](https://github.com/imjohnbo)! - Remove outline reset of `.SelectMenu-closeButton`\n\n- [#2220](https://github.com/primer/css/pull/2220) [`1a8e7db5`](https://github.com/primer/css/commit/1a8e7db5f6c7b369fcfb6598df2edc42d0511da7) Thanks [@reeceatkinson](https://github.com/reeceatkinson)! - Update Marketing Typography (marketing-type.md)\n\n* [#2229](https://github.com/primer/css/pull/2229) [`8a4c0878`](https://github.com/primer/css/commit/8a4c0878857ff65447906bf7d969211f96715197) Thanks [@jonrohan](https://github.com/jonrohan)! - ActionList hide the first divider if there's hidden items in front of it.\n\n- [#2225](https://github.com/primer/css/pull/2225) [`56ea4ab1`](https://github.com/primer/css/commit/56ea4ab17644ad0d521373f700d551d66217268a) Thanks [@langermank](https://github.com/langermank)! - Overlay updates for Alpha::Dialog\n  - Size improvements\n  - Support buttom and side sheets\n  - Preliminary animations for sheets\n\n## 20.4.3\n\n### Patch Changes\n\n- [#2208](https://github.com/primer/css/pull/2208) [`83e43486`](https://github.com/primer/css/commit/83e43486d83350b331953f3c3be450ee79eaa783) Thanks [@jonrohan](https://github.com/jonrohan)! - Moving segmented_control.css to primer_view_components\n\n* [#2202](https://github.com/primer/css/pull/2202) [`b74e78b2`](https://github.com/primer/css/commit/b74e78b2539925956ec19aa3efbf2410dc1167e0) Thanks [@jonrohan](https://github.com/jonrohan)! - Rename SegmentedControl--iconOnly-whenNarrow to SegmentedControl-button--iconOnly-whenNarrow and place on button\n\n- [#2191](https://github.com/primer/css/pull/2191) [`e175f69d`](https://github.com/primer/css/commit/e175f69dd87fb3b54f46130dbdae18b75e9263ad) Thanks [@josepmartins](https://github.com/josepmartins)! - Bump @primer/gatsby-theme-doctocat from 3.1.1 to 4.0.0 in /docs\n\n## 20.4.2\n\n### Patch Changes\n\n- [#2180](https://github.com/primer/css/pull/2180) [`c71e7df0`](https://github.com/primer/css/commit/c71e7df03b9f6816dd2ce7f3d343f92edbc8cf00) Thanks [@dgreif](https://github.com/dgreif)! - Fail dist build when for postcss warnings\n\n* [#2194](https://github.com/primer/css/pull/2194) [`5ee33aca`](https://github.com/primer/css/commit/5ee33acac56156eec990e50be0ecdfb370005b8e) Thanks [@jonrohan](https://github.com/jonrohan)! - Adding position relative to SegmentedControl\n\n- [#2195](https://github.com/primer/css/pull/2195) [`f9e5db5e`](https://github.com/primer/css/commit/f9e5db5e4a01b2b0dae64a4d00d36cfe1df58792) Thanks [@jonrohan](https://github.com/jonrohan)! - Updating the SegmentedControl component to role=list and use `ul`.\n\n## 20.4.1\n\n### Patch Changes\n\n- [#2178](https://github.com/primer/css/pull/2178) [`2df59776`](https://github.com/primer/css/commit/2df5977613d4b196e0eb08c49f290d18f74dd412) Thanks [@jonrohan](https://github.com/jonrohan)! - Fix: autoprefix giving a warning about align-content\n\n## 20.4.0\n\n### Minor Changes\n\n- [#2152](https://github.com/primer/css/pull/2152) [`edac9edb`](https://github.com/primer/css/commit/edac9edbcf833fc76d406d225b6cf6abfa2b7f99) Thanks [@vdepizzol](https://github.com/vdepizzol)! - Add Stack component\n\n### Patch Changes\n\n- [#2177](https://github.com/primer/css/pull/2177) [`add769c9`](https://github.com/primer/css/commit/add769c97193b387de2fbfb4b0a66c7157826563) Thanks [@langermank](https://github.com/langermank)! - Autocomplete item selected state\n\n* [#2174](https://github.com/primer/css/pull/2174) [`97f178d7`](https://github.com/primer/css/commit/97f178d7dedb92c713f1e684384db089c71eeae6) Thanks [@simurai](https://github.com/simurai)! - Prevent `SegmentedControl-text` from wrapping\n\n- [#2168](https://github.com/primer/css/pull/2168) [`a52afe7e`](https://github.com/primer/css/commit/a52afe7e7d34cccf550b43c052777a392bb7229f) Thanks [@owenniblock](https://github.com/owenniblock)! - Increases z-index for .show-on-focus\n\n* [#2176](https://github.com/primer/css/pull/2176) [`d8c218ab`](https://github.com/primer/css/commit/d8c218aba8b16a80a96b39ca086df34ed4c307df) Thanks [@langermank](https://github.com/langermank)! - Add `aria-selected` to ActionList-item for Autocomplete\n\n- [#2090](https://github.com/primer/css/pull/2090) [`8016e3c5`](https://github.com/primer/css/commit/8016e3c507d8e72be1b32520cc548c362290a73c) Thanks [@Luckz](https://github.com/Luckz)! - Remove article\n\n## 20.3.0\n\n### Minor Changes\n\n- [#2147](https://github.com/primer/css/pull/2147) [`9dd2a49e`](https://github.com/primer/css/commit/9dd2a49e2633f337c2316a43907f17dfd5c3173b) Thanks [@vdepizzol](https://github.com/vdepizzol)! - Add AppFrame component\n\n### Patch Changes\n\n- [#2083](https://github.com/primer/css/pull/2083) [`13be7ef1`](https://github.com/primer/css/commit/13be7ef18d2d9874e7a08f20d9f93538752517c6) Thanks [@simurai](https://github.com/simurai)! - Add `SegmentedControl` component\n\n* [#2171](https://github.com/primer/css/pull/2171) [`d2b4d698`](https://github.com/primer/css/commit/d2b4d698882f57a6c4a08e66c10bdca27924046f) Thanks [@khiga8](https://github.com/khiga8)! - Add .tooltipped to deprecations json\n\n## 20.2.4\n\n### Patch Changes\n\n- [#2136](https://github.com/primer/css/pull/2136) [`89846844`](https://github.com/primer/css/commit/8984684470dc2e6cc69e7c80e4ce4a0e70e57eb3) Thanks [@langermank](https://github.com/langermank)! - Bug: ActionList-item disabled state\n\n* [#2130](https://github.com/primer/css/pull/2130) [`544fb277`](https://github.com/primer/css/commit/544fb2773dbadd934a34232637970946de3c536d) Thanks [@renbaoshuo](https://github.com/renbaoshuo)! - Add link to source code in Timeline's doc\n\n- [#2114](https://github.com/primer/css/pull/2114) [`facb9682`](https://github.com/primer/css/commit/facb96823a344369afdace1365dda38bb5312f2b) Thanks [@langermank](https://github.com/langermank)! - - Updates stories to reflect markup for Rails\n  - Clean up FormControl classes\n  - Add Radio and Checkbox custom styles\n\n* [#2132](https://github.com/primer/css/pull/2132) [`c898103e`](https://github.com/primer/css/commit/c898103e0e942b7ab07f43b83496f019163458f1) Thanks [@vzrenggamani](https://github.com/vzrenggamani)! - docs: update deployment location of docs\n\n## 20.2.3\n\n### Patch Changes\n\n- [#2124](https://github.com/primer/css/pull/2124) [`f1b3e55f`](https://github.com/primer/css/commit/f1b3e55f141ddaa5719d223d4670d935bf9d5337) Thanks [@langermank](https://github.com/langermank)! - FormControl + Overlay bug fixes\n\n* [#2129](https://github.com/primer/css/pull/2129) [`2cc18d03`](https://github.com/primer/css/commit/2cc18d0348dc667961c9374886c8a82e95334d6f) Thanks [@camertron](https://github.com/camertron)! - Fix preview deploys\n\n- [#2077](https://github.com/primer/css/pull/2077) [`ab078a58`](https://github.com/primer/css/commit/ab078a58c6ebe4118f917bed4c71fbbb56f0634f) Thanks [@mlynam](https://github.com/mlynam)! - Make .form-control elements render as disabled when a parent fieldset is disabled\n\n## 20.2.2\n\n### Patch Changes\n\n- [#2075](https://github.com/primer/css/pull/2075) [`9f576a3c`](https://github.com/primer/css/commit/9f576a3c33479fa0beb5ef4fe9b794f67a58070c) Thanks [@langermank](https://github.com/langermank)! - FormControl + Autocomplete component updates\n\n## 20.2.1\n\n### Patch Changes\n\n- [#2094](https://github.com/primer/css/pull/2094) [`33f799f1`](https://github.com/primer/css/commit/33f799f13edad2e7434425913a8d445aa27213de) Thanks [@camertron](https://github.com/camertron)! - Add missing ToggleSwitch--checked styles\n\n* [#2091](https://github.com/primer/css/pull/2091) [`f740d008`](https://github.com/primer/css/commit/f740d00827fa854062f6ce3449ca6745fae9bea8) Thanks [@tobiasahlin](https://github.com/tobiasahlin)! - Marketing: Bump font size of large buttons\n\n## 20.2.0\n\n### Minor Changes\n\n- [#2087](https://github.com/primer/css/pull/2087) [`8354de5c`](https://github.com/primer/css/commit/8354de5c5eeb60e447712c04e25c2ef370206488) Thanks [@vdepizzol](https://github.com/vdepizzol)! - Changing `PageLayout--isPaneSticky` to `PageLayout--sticky`.\n\n* [#2074](https://github.com/primer/css/pull/2074) [`5cfae2c2`](https://github.com/primer/css/commit/5cfae2c2193885c34af97dd61da201c400bc8549) Thanks [@camertron](https://github.com/camertron)! - Add styles for the ToggleSwitch component\n\n## 20.1.1\n\n### Patch Changes\n\n- [#2078](https://github.com/primer/css/pull/2078) [`92ac0e39`](https://github.com/primer/css/commit/92ac0e39e6f5aae0314397890c8f78227a6c6ba0) Thanks [@langermank](https://github.com/langermank)! - Setup new `primer-primitive` bundle\n\n## 20.1.0\n\n### Minor Changes\n\n- [#2072](https://github.com/primer/css/pull/2072) [`ab6f0840`](https://github.com/primer/css/commit/ab6f0840f0131b370fb8871551720afa20fb466e) Thanks [@JasonEtco](https://github.com/JasonEtco)! - Add `.text-capitalize` utility class\n\n* [#1998](https://github.com/primer/css/pull/1998) [`51e087aa`](https://github.com/primer/css/commit/51e087aa31f049c1cb148df6f04fdbc6de434cf0) Thanks [@bolonio](https://github.com/bolonio)! - Styles for the new Dialog Component\n\n## 20.0.0\n\n### Major Changes\n\n- [#2049](https://github.com/primer/css/pull/2049) [`f4dba96e`](https://github.com/primer/css/commit/f4dba96e0cb78d3d451226cf60b01187678ced45) Thanks [@langermank](https://github.com/langermank)! - Comment box upload focus border-radius\n\n* [#1744](https://github.com/primer/css/pull/1744) [`942f65a4`](https://github.com/primer/css/commit/942f65a45a18b7042ba1ce2703688b62d874cf18) Thanks [@langermank](https://github.com/langermank)! - Global CSS focus styles\n\n- [#1767](https://github.com/primer/css/pull/1767) [`7e01db97`](https://github.com/primer/css/commit/7e01db97f3f2b9d9383f66385ca16f0bdc06abd1) Thanks [@tobiasahlin](https://github.com/tobiasahlin)! - Marketing: Remove unused pullquote selector\n\n* [#1821](https://github.com/primer/css/pull/1821) [`daa2685c`](https://github.com/primer/css/commit/daa2685c596d894b3bae1896bf97c3319cd9816c) Thanks [@jonrohan](https://github.com/jonrohan)! - UnderlineNav `:focus` styles\n  Refactor selected state and spacing\n  Add selected bold state override from github/github\n\n- [#2047](https://github.com/primer/css/pull/2047) [`553d72cc`](https://github.com/primer/css/commit/553d72cc1baaf43a4c743c50cc8881f3811123e9) Thanks [@langermank](https://github.com/langermank)! - UnderlineNav bug fix\n\n* [#2046](https://github.com/primer/css/pull/2046) [`55e2b069`](https://github.com/primer/css/commit/55e2b069a4cbd225af676bef918bbbe2e6cd73b7) Thanks [@langermank](https://github.com/langermank)! - Global focus style CSS from feature flag (next major)\n\n### Patch Changes\n\n- [#2048](https://github.com/primer/css/pull/2048) [`dc529e31`](https://github.com/primer/css/commit/dc529e3102788d5caa136a9d30c58e56721427a7) Thanks [@simurai](https://github.com/simurai)! - Fix headings with an anchor in a summary\n\n* [#2041](https://github.com/primer/css/pull/2041) [`20550bbf`](https://github.com/primer/css/commit/20550bbfaa236ac197ca58805542eaab0bf38fd4) Thanks [@jonrohan](https://github.com/jonrohan)! - Upgrading to stylelint-config-12.4.0\n\n## 19.8.2\n\n### Patch Changes\n\n- [#2019](https://github.com/primer/css/pull/2019) [`57be2d50`](https://github.com/primer/css/commit/57be2d50212b71f87ce612039375bcd5273eca53) Thanks [@langermank](https://github.com/langermank)! - [Bug] TreeView animation and padding fix\n\n## 19.8.1\n\n### Patch Changes\n\n- [#1996](https://github.com/primer/css/pull/1996) [`a4293bf9`](https://github.com/primer/css/commit/a4293bf921ebcb74c6973e3f50f07e470f495bd0) Thanks [@langermank](https://github.com/langermank)! - TreeView: remove bold active items + markup changes\n\n## 19.8.0\n\n### Minor Changes\n\n- [#1997](https://github.com/primer/css/pull/1997) [`9806b54b`](https://github.com/primer/css/commit/9806b54b3829219c9ad141efd2fcd99fc5c08751) Thanks [@simurai](https://github.com/simurai)! - Add Tritanopia theme\n\n### Patch Changes\n\n- [#2002](https://github.com/primer/css/pull/2002) [`a3bc51f6`](https://github.com/primer/css/commit/a3bc51f6c4af0d45a9ce39f00c3cf3297b090067) Thanks [@simurai](https://github.com/simurai)! - Always break long `branch-name`s\n\n## 19.7.1\n\n### Patch Changes\n\n- [#2001](https://github.com/primer/css/pull/2001) [`47cec404`](https://github.com/primer/css/commit/47cec40472173b412df59e6990c0ac1b1ed43d04) Thanks [@jdanyow](https://github.com/jdanyow)! - Remove IE11 support in tooltip\n\n* [#1995](https://github.com/primer/css/pull/1995) [`557b100a`](https://github.com/primer/css/commit/557b100a77a4befe6d07fac14cb48b08bed18356) Thanks [@vdepizzol](https://github.com/vdepizzol)! - Add narrow/regular/wide viewport range utilities\n\n- [#2000](https://github.com/primer/css/pull/2000) [`264a89a5`](https://github.com/primer/css/commit/264a89a51a75eefa6a371e6ad11518519cd98b36) Thanks [@khiga8](https://github.com/khiga8)! - More CSS updates to `Autocomplete`\n\n## 19.7.0\n\n### Minor Changes\n\n- [#1994](https://github.com/primer/css/pull/1994) [`69fe8c65`](https://github.com/primer/css/commit/69fe8c6512a3f0bbdbfdf7080b916a39173c2df9) Thanks [@khiga8](https://github.com/khiga8)! - Add support for inline, stack label in autocomplete\n\n### Patch Changes\n\n- [#1991](https://github.com/primer/css/pull/1991) [`5e87effa`](https://github.com/primer/css/commit/5e87effa671b194e188f699a79b246bdf61bd191) Thanks [@simurai](https://github.com/simurai)! - Fix `btn-primary` in flash alerts\n\n## 19.6.0\n\n### Minor Changes\n\n- [#1989](https://github.com/primer/css/pull/1989) [`f544ef85`](https://github.com/primer/css/commit/f544ef8574a4d6e12cccf94d534ad66df3e9249a) Thanks [@vdepizzol](https://github.com/vdepizzol)! - Make `pane` an optional region for PageLayout component\n\n### Patch Changes\n\n- [#1988](https://github.com/primer/css/pull/1988) [`e3443f1a`](https://github.com/primer/css/commit/e3443f1a69ba5a23d3e3804bf4e22d384783c443) Thanks [@simurai](https://github.com/simurai)! - Fix color-fg utilities in links\n\n* [#1985](https://github.com/primer/css/pull/1985) [`c2bd6bc9`](https://github.com/primer/css/commit/c2bd6bc9bf90686f258af11c102097d7da000a5b) Thanks [@cheshire137](https://github.com/cheshire137)! - Adding .color-bg-transparent utility class\n\n## 19.5.1\n\n### Patch Changes\n\n- [#1983](https://github.com/primer/css/pull/1983) [`07bc069e`](https://github.com/primer/css/commit/07bc069ec0faae9c0e4530e5171e3346fa643a10) Thanks [@simurai](https://github.com/simurai)! - Bump `primer/primitives` to `^7.5.1`\n\n## 19.5.0\n\n### Minor Changes\n\n- [#1948](https://github.com/primer/css/pull/1948) [`6a83a92b`](https://github.com/primer/css/commit/6a83a92b4332d577cdd72eee084e3f2c41b588ee) Thanks [@simurai](https://github.com/simurai)! - Add `open` and `closed` color roles\n\n* [#1961](https://github.com/primer/css/pull/1961) [`a35a8bdc`](https://github.com/primer/css/commit/a35a8bdcc17906848fcb486842d2345db0441c7c) Thanks [@jonrohan](https://github.com/jonrohan)! - Default .PageLayout to display block\n\n### Patch Changes\n\n- [#1954](https://github.com/primer/css/pull/1954) [`30f29d38`](https://github.com/primer/css/commit/30f29d383256a7d4023a859fdeee44471307159d) Thanks [@simurai](https://github.com/simurai)! - Fix `input-block` in `form-group`\n\n* [#1956](https://github.com/primer/css/pull/1956) [`39063461`](https://github.com/primer/css/commit/3906346182ed983d9725fd95da41b21424378b3e) Thanks [@jonrohan](https://github.com/jonrohan)! - Upgrading @primer/stylelint-config@12.3.2\n\n- [#1931](https://github.com/primer/css/pull/1931) [`e5c5312e`](https://github.com/primer/css/commit/e5c5312ec8bf139f6c94d2f70ceecd4b3cd9fd82) Thanks [@vdepizzol](https://github.com/vdepizzol)! - Page layout api updates renaming spacing options in storybook\n\n* [#1950](https://github.com/primer/css/pull/1950) [`7c85c500`](https://github.com/primer/css/commit/7c85c500569fe6e1b29665c2eed37d58625ab06f) Thanks [@hectahertz](https://github.com/hectahertz)! - Fix sequence of content in Subhead\n\n- [#1942](https://github.com/primer/css/pull/1942) [`0450ccbb`](https://github.com/primer/css/commit/0450ccbb86104564c7d4038eb68989f370014fa1) Thanks [@reeceatkinson](https://github.com/reeceatkinson)! - Added line break to docs\n\n* [#1953](https://github.com/primer/css/pull/1953) [`3a91a29a`](https://github.com/primer/css/commit/3a91a29a822a28ea9679fbbb90250fc039057f23) Thanks [@hectahertz](https://github.com/hectahertz)! - Use `<h2>` instead of `<div>` on Subhead-heading docs\n\n- [#1949](https://github.com/primer/css/pull/1949) [`dab83198`](https://github.com/primer/css/commit/dab83198c3bf1c7e03826b8cd498b8c48c9a2869) Thanks [@heiskr](https://github.com/heiskr)! - Render headings inline when in a `<summary>`\n\n* [#1978](https://github.com/primer/css/pull/1978) [`a00e6bce`](https://github.com/primer/css/commit/a00e6bce01b368d9cb6da5ec2af1d833f4d785c1) Thanks [@langermank](https://github.com/langermank)! - Handle pointer-events on ActionList visuals\n\n- [#1977](https://github.com/primer/css/pull/1977) [`80bf9d9d`](https://github.com/primer/css/commit/80bf9d9dea6fe7fbb0837fea265ec95cbbbd75d6) Thanks [@jonrohan](https://github.com/jonrohan)! - [Bug Fix] Adding white-space nowrap to Labels\n\n## 19.4.0\n\n### Minor Changes\n\n- [#1937](https://github.com/primer/css/pull/1937) [`67f08009`](https://github.com/primer/css/commit/67f08009ef458088b9fda6267ab25ad6d0a514aa) Thanks [@langermank](https://github.com/langermank)! - TreeView single item nesting\n\n* [#1905](https://github.com/primer/css/pull/1905) [`50221a54`](https://github.com/primer/css/commit/50221a5486d28c54dc1f578b459addd867bd01d3) Thanks [@langermank](https://github.com/langermank)! - Refactors NavigationList to better handle accessibility. Backwards compatible for TreeView CSS.\n\n- [#1936](https://github.com/primer/css/pull/1936) [`c53ecdff`](https://github.com/primer/css/commit/c53ecdff5442cf4ac5da0d1e2ba45871ab662855) Thanks [@khiga8](https://github.com/khiga8)! - Deprecating `.tooltipped` CSS classes\n\n### Patch Changes\n\n- [#1928](https://github.com/primer/css/pull/1928) [`0fb67895`](https://github.com/primer/css/commit/0fb6789555652860cfa5178b60433eb2c3d2575c) Thanks [@simurai](https://github.com/simurai)! - Fix `<sup><a>` from getting wrapped with `[ ]`\n\n## 19.3.0\n\n### Minor Changes\n\n- [#1876](https://github.com/primer/css/pull/1876) [`bcf447ab`](https://github.com/primer/css/commit/bcf447ab226e6043dd47c1fcc395ba104af866d4) Thanks [@vdepizzol](https://github.com/vdepizzol)! - Add mono font stack to <samp> tag\n\n* [#1919](https://github.com/primer/css/pull/1919) [`21085f5c`](https://github.com/primer/css/commit/21085f5c6cc538b5014a47de76642554a4291cc6) Thanks [@hectahertz](https://github.com/hectahertz)! - Add blankslate classes to replace utilities\n\n### Patch Changes\n\n- [#1892](https://github.com/primer/css/pull/1892) [`55bd498b`](https://github.com/primer/css/commit/55bd498b7357e86659ac574f0f745f7b420fb6d3) Thanks [@langermank](https://github.com/langermank)! - Patch: Fix ActionList--divided for label with inline description scenarios\n\n* [#1906](https://github.com/primer/css/pull/1906) [`f02d9a3e`](https://github.com/primer/css/commit/f02d9a3e4e86c2659a9f507995bcb90c5226e34e) Thanks [@jonrohan](https://github.com/jonrohan)! - Upgrading @primer/stylelint-config@12.3.0 and fixing violations\n\n- [#1908](https://github.com/primer/css/pull/1908) [`84581e96`](https://github.com/primer/css/commit/84581e96aee50ff3883907dfe1069701edd1c24a) Thanks [@simurai](https://github.com/simurai)! - Reduce size of `Label--inline`\n\n* [#1890](https://github.com/primer/css/pull/1890) [`74d0438b`](https://github.com/primer/css/commit/74d0438bd4dbaed447b553c5d3c8b945da282836) Thanks [@andrialexandrou](https://github.com/andrialexandrou)! - Adds --color-accent-emphasis and --color-fg-on-emphasis rules for Windows High Contrast Mode\n\n- [#1882](https://github.com/primer/css/pull/1882) [`4a06aba1`](https://github.com/primer/css/commit/4a06aba1d3f80bcc228ff4360d0e02d5ace158ff) Thanks [@tqwewe](https://github.com/tqwewe)! - Fix layout gutter none styles\n\n* [#1894](https://github.com/primer/css/pull/1894) [`d1adf595`](https://github.com/primer/css/commit/d1adf595308afb97f83c5ca172222944189a5961) Thanks [@simurai](https://github.com/simurai)! - Make `pagination` responsive by default\n\n## 19.2.0\n\n### Minor Changes\n\n- [#1737](https://github.com/primer/css/pull/1737) [`6b4089d8`](https://github.com/primer/css/commit/6b4089d8b37174ca061762c56b5e4134a54cf4ef) Thanks [@vdepizzol](https://github.com/vdepizzol)! - Adds new PageLayout component CSS with Storybook documentation\n\n### Patch Changes\n\n- [#1855](https://github.com/primer/css/pull/1855) [`8f2e7534`](https://github.com/primer/css/commit/8f2e7534ecbdb3d0e773d60c725b55dc4bb263e2) Thanks [@simurai](https://github.com/simurai)! - Bump primer/primitives to `7.4.0`\n\n* [#1869](https://github.com/primer/css/pull/1869) [`868f61a1`](https://github.com/primer/css/commit/868f61a199df14862922d52905de66cdb1e1c192) Thanks [@jdanyow](https://github.com/jdanyow)! - Minor bugfix for AvatarStack. Removing the box-shadow from the AvatarStack-body on hover.\n\n- [#1856](https://github.com/primer/css/pull/1856) [`cbe3fb56`](https://github.com/primer/css/commit/cbe3fb56e4c7ee6bfe803eb0c15e15ab95d84157) Thanks [@langermank](https://github.com/langermank)! - ActionList item outlines for high contrast theme\n\n* [#1870](https://github.com/primer/css/pull/1870) [`815daff9`](https://github.com/primer/css/commit/815daff9f07d8096d572cf75bee17284f36492f6) Thanks [@vdepizzol](https://github.com/vdepizzol)! - [ActionList] Add hover to `aria-current` elements and other micro interactions\n\n## 19.1.1\n\n### Patch Changes\n\n- [#1827](https://github.com/primer/css/pull/1827) [`69e1fc53`](https://github.com/primer/css/commit/69e1fc539e4bb2fdf78d34a18fc591ebdfddd2f5) Thanks [@simurai](https://github.com/simurai)! - Support fractional viewport sizes for `max-width` media queries\n\n* [#1803](https://github.com/primer/css/pull/1803) [`c46fe918`](https://github.com/primer/css/commit/c46fe9186efbcf6e4a482685529bdb0bda28aa9f) Thanks [@langermank](https://github.com/langermank)! - - Adds ActionList tree-view specific CSS\n  - Minor bug fixes for ActionList default\n\n- [#1827](https://github.com/primer/css/pull/1827) [`69e1fc53`](https://github.com/primer/css/commit/69e1fc539e4bb2fdf78d34a18fc591ebdfddd2f5) Thanks [@simurai](https://github.com/simurai)! - Support fractional viewport sizes for the `hide` utilities\n\n## 19.1.0\n\n### Minor Changes\n\n- [#1759](https://github.com/primer/css/pull/1759) [`74724ce7`](https://github.com/primer/css/commit/74724ce7c72b1cb540a9ef3d845169f1df17b55e) Thanks [@langermank](https://github.com/langermank)! - Remove `popover` responsive hack\n\n* [#1807](https://github.com/primer/css/pull/1807) [`13a4654f`](https://github.com/primer/css/commit/13a4654fa0854accfaabbbd2f21d2e0a1c90442d) Thanks [@enstyled](https://github.com/enstyled)! - Marketing: Add link components\n  Marketing: Add animated arrow utility\n  Marketing: Document button components with arrows\n\n### Patch Changes\n\n- [#1780](https://github.com/primer/css/pull/1780) [`8e9ba62d`](https://github.com/primer/css/commit/8e9ba62d30ed10c012b99dd998751df01ad6aa99) Thanks [@langermank](https://github.com/langermank)! - ActionList followup\n\n* [#1805](https://github.com/primer/css/pull/1805) [`99537d31`](https://github.com/primer/css/commit/99537d317f04ff5474a076ab96d3ea315b2181e2) Thanks [@tobiasahlin](https://github.com/tobiasahlin)! - Fix local dev (revert webpack 5.5.0 → 6.0.0)\n\n- [#1781](https://github.com/primer/css/pull/1781) [`4d8dcf24`](https://github.com/primer/css/commit/4d8dcf24bc9e0732a9a2f34c94f6bcad7d3382dd) Thanks [@simurai](https://github.com/simurai)! - Reformat `rgba()` colors for `.btn-mktg`\n\n* [#1768](https://github.com/primer/css/pull/1768) [`4abb1af9`](https://github.com/primer/css/commit/4abb1af95b9b3c8c38512fa5e1e4fae9e7d01f4f) Thanks [@tobiasahlin](https://github.com/tobiasahlin)! - Marketing: Add disabled states for buttons (and tweak hover)\n\n- [#1792](https://github.com/primer/css/pull/1792) [`b1c43f1f`](https://github.com/primer/css/commit/b1c43f1f8d9b07b58b275665ca69abd5d4f7a5fc) Thanks [@simurai](https://github.com/simurai)! - Use `counter-border` for LHC\n\n* [#1808](https://github.com/primer/css/pull/1808) [`ee27583f`](https://github.com/primer/css/commit/ee27583f594248bd44122ea5dc81b12382c02b09) Thanks [@manuelpuyol](https://github.com/manuelpuyol)! - Add hover and active states to btn-invisible\n\n- [#1818](https://github.com/primer/css/pull/1818) [`22c29e7a`](https://github.com/primer/css/commit/22c29e7a8b1b6a0df1dd61d400cc0dd132e0c909) Thanks [@vdepizzol](https://github.com/vdepizzol)! - [Layout component] Avoid resizing `main` while loading\n\n## 19.0.0\n\n### Major Changes\n\n- [#1716](https://github.com/primer/css/pull/1716) [`9b97dc8f`](https://github.com/primer/css/commit/9b97dc8fec28e44d8619aff6da636ecd8e48daf9) Thanks [@tobiasahlin](https://github.com/tobiasahlin)! - Update marketing buttons (including color mode support)\n\n### Minor Changes\n\n- [#1756](https://github.com/primer/css/pull/1756) [`ece7a3e6`](https://github.com/primer/css/commit/ece7a3e68c65252960b41d6df1b8ff64cb33c93f) Thanks [@heiskr](https://github.com/heiskr)! - Update mark tag to use background-color: var(--color-attention-subtle);\n\n* [#1754](https://github.com/primer/css/pull/1754) [`3838e174`](https://github.com/primer/css/commit/3838e1743aa63bacf0ca241c2a3c4983ba92c5e6) Thanks [@simurai](https://github.com/simurai)! - Add `Box--overlay` styles\n\n- [#1755](https://github.com/primer/css/pull/1755) [`1714778a`](https://github.com/primer/css/commit/1714778af72f5647894fca9561c56dfbccac62df) Thanks [@jonrohan](https://github.com/jonrohan)! - Updating primer/primitives@7.1.0 and adding Light High Contrast theme\n\n### Patch Changes\n\n- [#1746](https://github.com/primer/css/pull/1746) [`9e6b5f56`](https://github.com/primer/css/commit/9e6b5f5671ab60e3a9d452f516fb7b38173f0135) Thanks [@simurai](https://github.com/simurai)! - Remove `Label` bg hack\n\n## 18.2.0\n\n### Minor Changes\n\n- [#1738](https://github.com/primer/css/pull/1738) [`dfe73db1`](https://github.com/primer/css/commit/dfe73db19556c4de8f57c9e610705af0a4d9f0f5) Thanks [@vdepizzol](https://github.com/vdepizzol)! - Update `Layout`'s sidebar width values.\n\n* [#1657](https://github.com/primer/css/pull/1657) [`e7543009`](https://github.com/primer/css/commit/e754300989a4e762091a957edd324b26682b104a) Thanks [@langermank](https://github.com/langermank)! - ActionList Component: Primer CSS Implementation. Adding a new component `ActionList` to learn more checkout the docs [https://primer.style/css/components/action-list](https://primer.style/css/components/action-list).\n\n### Patch Changes\n\n- [#1731](https://github.com/primer/css/pull/1731) [`832e9988`](https://github.com/primer/css/commit/832e99886df66ea5860d725517aeb9d5f178dd58) Thanks [@jonrohan](https://github.com/jonrohan)! - Updating @primer/primitives@6.1.0\n\n## 18.1.0\n\n### Minor Changes\n\n- [#1694](https://github.com/primer/css/pull/1694) [`b0e1687a`](https://github.com/primer/css/commit/b0e1687a562a194ed178fd2dd35588ff5da40847) Thanks [@simurai](https://github.com/simurai)! - Add more Octicon icon support to components\n\n* [#1711](https://github.com/primer/css/pull/1711) [`bc3b94d2`](https://github.com/primer/css/commit/bc3b94d26f08f65d3a4938bafa1b988585f35764) Thanks [@simurai](https://github.com/simurai)! - Add new color `Label`s\n\n### Patch Changes\n\n- [#1710](https://github.com/primer/css/pull/1710) [`6a058ecb`](https://github.com/primer/css/commit/6a058ecbaf7edac6fce4a0d56b4aca46ac6cd4fa) Thanks [@jonrohan](https://github.com/jonrohan)! - Updating [@primer/primitives@6.0.0](https://github.com/primer/primitives/releases/tag/v6.0.0)\n\n* [#1712](https://github.com/primer/css/pull/1712) [`bc502033`](https://github.com/primer/css/commit/bc50203324ba03d4ece7ec6182c185a695626ffb) Thanks [@jonrohan](https://github.com/jonrohan)! - Updating @primer/stylelint-config to 12.1.0\n\n- [#1708](https://github.com/primer/css/pull/1708) [`f7c44c35`](https://github.com/primer/css/commit/f7c44c35f8085f2b793581a901ecb22c5174ef6a) Thanks [@langermank](https://github.com/langermank)! - Storybook: add Label stories\n\n* [#1690](https://github.com/primer/css/pull/1690) [`af5a3ae8`](https://github.com/primer/css/commit/af5a3ae82668d6d04af8c3465302980dcf062cc4) Thanks [@simurai](https://github.com/simurai)! - Update `Subhead` actions\n\n- [#1707](https://github.com/primer/css/pull/1707) [`a997790b`](https://github.com/primer/css/commit/a997790b69f0f3bb5c7a2dfc97c5d5c743bb6a38) Thanks [@maximedegreve](https://github.com/maximedegreve)! - Fix for disabled Safari inputs\n\n* [#1693](https://github.com/primer/css/pull/1693) [`c1ca19d4`](https://github.com/primer/css/commit/c1ca19d4f071a9b12172e4a13bdb96c52a200d47) Thanks [@jasonmacgowan](https://github.com/jasonmacgowan)! - Fix light-theme attr reference in theme docs\n\n- [#1689](https://github.com/primer/css/pull/1689) [`257f68f6`](https://github.com/primer/css/commit/257f68f6539539ab809fbdb4351aefa57173e044) Thanks [@adityatheoctocatdev](https://github.com/adityatheoctocatdev)! - Update all Toast variant icons to use `var(--color-fg-on-emphasis)`\n\n  The only visible change is in the `warning` variant, previously using `var(--color-fg-default)`\n\n## 18.0.2\n\n### Patch Changes\n\n- [#1680](https://github.com/primer/css/pull/1680) [`f013be66`](https://github.com/primer/css/commit/f013be66db59d21d7e2315303b5582169c59c479) Thanks [@privatenumber](https://github.com/privatenumber)! - Fixing broken close span tag in the docs.\n\n* [#1677](https://github.com/primer/css/pull/1677) [`cdb0faa6`](https://github.com/primer/css/commit/cdb0faa606e6fb35ea4a85dd3866bbb33131b76c) Thanks [@simurai](https://github.com/simurai)! - Lower contrast for disabled text\n\n## 18.0.1\n\n### Patch Changes\n\n- [#1663](https://github.com/primer/css/pull/1663) [`87b0b1d4`](https://github.com/primer/css/commit/87b0b1d4c91959c284bd53a2009a182dc9ef9b6e) Thanks [@jonrohan](https://github.com/jonrohan)! - Removing the duplicate deprecation backgrounds\n\n## 18.0.0\n\n### Major Changes\n\n- [#1599](https://github.com/primer/css/pull/1599) [`13de16c7`](https://github.com/primer/css/commit/13de16c7d6787d221216d8ff21afccf6f73f4221) Thanks [@jonrohan](https://github.com/jonrohan)! - Removing the rem() mixin and usages. Placing the computed values in place.\n\n* [#1615](https://github.com/primer/css/pull/1615) [`612841f1`](https://github.com/primer/css/commit/612841f1bdd695aad2368a9f6817e6e0ee2c7a17) Thanks [@simurai](https://github.com/simurai)! - Update v1 deprecations\n\n- [#1599](https://github.com/primer/css/pull/1599) [`13de16c7`](https://github.com/primer/css/commit/13de16c7d6787d221216d8ff21afccf6f73f4221) Thanks [@jonrohan](https://github.com/jonrohan)! - Rename `modes.scss` file to `color-modes.scss` and move from the `base/` folder to the `support/variables` folder.\n\n* [#1599](https://github.com/primer/css/pull/1599) [`13de16c7`](https://github.com/primer/css/commit/13de16c7d6787d221216d8ff21afccf6f73f4221) Thanks [@jonrohan](https://github.com/jonrohan)! - Moving color modes to their own bundle, `./color-modes/` and separates color mode themes into their own scss file.\n\n- [#1602](https://github.com/primer/css/pull/1602) [`852da9d5`](https://github.com/primer/css/commit/852da9d5e34a0ac622f089f34d314913282bda67) Thanks [@simurai](https://github.com/simurai)! - Remove V1 color utilities\n\n* [#1617](https://github.com/primer/css/pull/1617) [`e47324fa`](https://github.com/primer/css/commit/e47324faa436e892b8621a6dac1fcb2cbad3cdf1) Thanks [@jonrohan](https://github.com/jonrohan)! - Removing `<kbd>` import from markdown package. Going forward you'll need to include `@primer/css/base/kbd.scss` directly.\n\n- [#1630](https://github.com/primer/css/pull/1630) [`5f7bb45c`](https://github.com/primer/css/commit/5f7bb45c2172393b2f014442067d95b3145c7136) Thanks [@simurai](https://github.com/simurai)! - Update utilities\n\n* [#1599](https://github.com/primer/css/pull/1599) [`13de16c7`](https://github.com/primer/css/commit/13de16c7d6787d221216d8ff21afccf6f73f4221) Thanks [@jonrohan](https://github.com/jonrohan)! - Remove break-word from utilities\n\n### Minor Changes\n\n- [#1601](https://github.com/primer/css/pull/1601) [`410c1d63`](https://github.com/primer/css/commit/410c1d638b7bec92798268dcf815f94b1dca7cff) Thanks [@jonrohan](https://github.com/jonrohan)! - Add light & dark colorblind themes\n\n* [#1626](https://github.com/primer/css/pull/1626) [`4d00d51d`](https://github.com/primer/css/commit/4d00d51d00fd2c1d3efdd50b36e261c5cc15cb10) Thanks [@jonrohan](https://github.com/jonrohan)! - Changing to @primer/stylelint-config and upgrading @primer/primitives to 5.0 rc\n\n- [#1616](https://github.com/primer/css/pull/1616) [`afac04bc`](https://github.com/primer/css/commit/afac04bcdf9c59e2768548069c8d6f7fd6f1e58c) Thanks [@talum](https://github.com/talum)! - Adding footnote styles to markdown-body.\n\n* [#1617](https://github.com/primer/css/pull/1617) [`e47324fa`](https://github.com/primer/css/commit/e47324faa436e892b8621a6dac1fcb2cbad3cdf1) Thanks [@jonrohan](https://github.com/jonrohan)! - Convert postcss build tool, from node-sass to dart-sass.\n\n- [#1603](https://github.com/primer/css/pull/1603) [`21c5ebc0`](https://github.com/primer/css/commit/21c5ebc01be58454735eb671e3adace0228ef548) Thanks [@simurai](https://github.com/simurai)! - Update docs with V2 colors\n\n### Patch Changes\n\n- [#1628](https://github.com/primer/css/pull/1628) [`ce197c9f`](https://github.com/primer/css/commit/ce197c9ff18cedd842893186953b68805eed637d) Thanks [@edokoa](https://github.com/edokoa)! - Update flash alert icons\n\n* [#1629](https://github.com/primer/css/pull/1629) [`54d3068b`](https://github.com/primer/css/commit/54d3068bd628f771aacae6b1ce269a5a2cc2d8a1) Thanks [@jdanyow](https://github.com/jdanyow)! - remove remaining color-border-primary refs\n\n- [#1631](https://github.com/primer/css/pull/1631) [`5f3689b9`](https://github.com/primer/css/commit/5f3689b907163f7be9e78abb9fc762978beda06d) Thanks [@jonrohan](https://github.com/jonrohan)! - Updating @primer/stylelint-config and @primer/primitives to 5.0\n\n* [#1659](https://github.com/primer/css/pull/1659) [`d32e42f9`](https://github.com/primer/css/commit/d32e42f9ca0ca4eef546d190171cd9e5b4ec8f3d) Thanks [@jonrohan](https://github.com/jonrohan)! - Rename protanopia themes to colorblind.\n\n- [#1658](https://github.com/primer/css/pull/1658) [`0ed0307b`](https://github.com/primer/css/commit/0ed0307b7b79ae59a898c3e8b5e1c9bd2dcd4a7d) Thanks [@koddsson](https://github.com/koddsson)! - Increase the z-index value for the details dialog overlay.\n\n* [#1661](https://github.com/primer/css/pull/1661) [`ebb573ff`](https://github.com/primer/css/commit/ebb573ff09a5ea4eef01e0ccbb7213defaa95321) Thanks [@simurai](https://github.com/simurai)! - Update bg deprecations\n\n## 17.11.0\n\n### Minor Changes\n\n- [#1580](https://github.com/primer/css/pull/1580) [`4a1f09a7`](https://github.com/primer/css/commit/4a1f09a75e7666b46e68e96e6f485d9ff467fd01) Thanks [@simurai](https://github.com/simurai)! - Add V2 utilities\n\n* [#1595](https://github.com/primer/css/pull/1595) [`5fb831cf`](https://github.com/primer/css/commit/5fb831cf5062baa4ffde4322a0035c144db1e70c) Thanks [@jonrohan](https://github.com/jonrohan)! - Adding directional margin classes to the margin utilities.\n\n  Adding: `ml-auto, mb-auto, mr-auto`\n\n### Patch Changes\n\n- [#1594](https://github.com/primer/css/pull/1594) [`2cf661c4`](https://github.com/primer/css/commit/2cf661c4d95285d09d0f26ea6109d5aa9bbed552) Thanks [@jonrohan](https://github.com/jonrohan)! - Loosening the primer/primitives dependency to any minor.patch version\n\n## 17.10.0\n\n### Minor Changes\n\n- [#1592](https://github.com/primer/css/pull/1592) [`39c9c928`](https://github.com/primer/css/commit/39c9c92874eb32b346256cbcc713b87767b319ef) Thanks [@simurai](https://github.com/simurai)! - Revert font stack changes\n\n### Patch Changes\n\n- [#1590](https://github.com/primer/css/pull/1590) [`e3c8f90e`](https://github.com/primer/css/commit/e3c8f90e7f61e76d20650061da2dd93111814a8a) Thanks [@joelhawksley](https://github.com/joelhawksley)! - Update Breadcrumbs markup to match w3 aria example.\n\n## 17.9.0\n\n### Minor Changes\n\n- [#1575](https://github.com/primer/css/pull/1575) [`c7ea6448`](https://github.com/primer/css/commit/c7ea6448c114065627299db7ba65418799d4a59b) Thanks [@jonrohan](https://github.com/jonrohan)! - Replacing deprecated variables with color v2 variables\n\n* [#1573](https://github.com/primer/css/pull/1573) [`386dfa01`](https://github.com/primer/css/commit/386dfa0145a64e2c6edbdf8ab09d9fc3f7151f6a) Thanks [@simurai](https://github.com/simurai)! - Improve the font stack on Windows\n  - `Segoe UI Variable` -> `Segoe UI Variable Text`.\n    - \"Segoe UI Variable Text\" seems to be the better option for a lot of text (markdown). In the future we might can consider having a UI and a \"text\" font stack.\n  - Add `Meiryo` before `system-ui`.\n    - This should have the effect that the browser will use `Meiryo` instead of `Yu Gothic UI` and should improve font rendering, especially for Japanese.\n    - Note: In an earlier version, `Yu Gothic` was used. But with great [feedback](https://twitter.com/448jp/status/1435087523185758212) from @448jp and @hiloki https://github.com/primer/css/pull/1573#issuecomment-913973890 it seems `Meiryo` is the better default.\n\n- [#1581](https://github.com/primer/css/pull/1581) [`be518b80`](https://github.com/primer/css/commit/be518b8023b56802b1fc67ccc8a5b8398d1b279c) Thanks [@jonrohan](https://github.com/jonrohan)! - Updating deprecations.js file to be more straightforward\n\n* [#1579](https://github.com/primer/css/pull/1579) [`c3b4a0c3`](https://github.com/primer/css/commit/c3b4a0c36302af7bb06ca996f37a63470ab99c62) Thanks [@jonrohan](https://github.com/jonrohan)! - Removing v2 color mode css var fallbacks. `var(--color-v2, var(--color-v1))` becomes `var(--color-v2)`\n\n## 17.8.0\n\n### Minor Changes\n\n- [#1567](https://github.com/primer/css/pull/1567) [`ab72486f`](https://github.com/primer/css/commit/ab72486f62d0f7e2397e3f0953fbcc4c46f5ef25) Thanks [@colebemis](https://github.com/colebemis)! - Remove `base/modes-v2.scss` file\n\n* [#1567](https://github.com/primer/css/pull/1567) [`ab72486f`](https://github.com/primer/css/commit/ab72486f62d0f7e2397e3f0953fbcc4c46f5ef25) Thanks [@colebemis](https://github.com/colebemis)! - Bumps `@primer/primitives` to [v4.7.0](https://github.com/primer/primitives/releases/tag/v4.7.0) which includes new [functional color system variables]\n\n- [#1567](https://github.com/primer/css/pull/1567) [`ab72486f`](https://github.com/primer/css/commit/ab72486f62d0f7e2397e3f0953fbcc4c46f5ef25) Thanks [@colebemis](https://github.com/colebemis)! - Output `dark_high_contrast` theme variables from `base/modes.scss`\n\n## 17.7.0\n\n### Minor Changes\n\n- [#1555](https://github.com/primer/css/pull/1555) [`4ae2174e`](https://github.com/primer/css/commit/4ae2174e33d3bd9be418176af4de75dd97b761c5) Thanks [@jonrohan](https://github.com/jonrohan)! - Add `.wb-break-word` class to existing `.break-word`\n\n### Patch Changes\n\n- [#1563](https://github.com/primer/css/pull/1563) [`679d70b5`](https://github.com/primer/css/commit/679d70b579c5203079e6a0559fe9dccbfcf0acae) Thanks [@simurai](https://github.com/simurai)! - Revert `TimelineItem-badge` fix\n\n## 17.6.2\n\n### Patch Changes\n\n- [#1556](https://github.com/primer/css/pull/1556) [`3ad13aba`](https://github.com/primer/css/commit/3ad13abac3deccc768af0ba5eb90f1365eb977f3) Thanks [@simurai](https://github.com/simurai)! - Fix TimelineItem--condensed background\n\n* [#1552](https://github.com/primer/css/pull/1552) [`966de4ee`](https://github.com/primer/css/commit/966de4ee0f1cfcd5f5a9f75560460adaafd47f06) Thanks [@simurai](https://github.com/simurai)! - Fix `code` in headers\n\n## 17.6.1\n\n### Patch Changes\n\n- [#1550](https://github.com/primer/css/pull/1550) [`8a684ee4`](https://github.com/primer/css/commit/8a684ee4d1572de543aef2f11d4756f6fdfda638) Thanks [@simurai](https://github.com/simurai)! - Add gradient hack to TimelineItem-badge\n\n## 17.6.0\n\n### Minor Changes\n\n- [#1529](https://github.com/primer/css/pull/1529) [`dca8e0ae`](https://github.com/primer/css/commit/dca8e0aeccb326c2bafff1ec86a912987b224f32) Thanks [@vdepizzol](https://github.com/vdepizzol)! - Improve font rendering on Linux\n\n### Patch Changes\n\n- [#1540](https://github.com/primer/css/pull/1540) [`6b6e89a8`](https://github.com/primer/css/commit/6b6e89a8bff2319ef75d25217dafc272a5e597f0) Thanks [@joelhawksley](https://github.com/joelhawksley)! - Use standard lifecycle milestones for statuses.\n\n* [#1528](https://github.com/primer/css/pull/1528) [`303cacae`](https://github.com/primer/css/commit/303cacae77244a9e0de02b4caee2a8c01097aced) Thanks [@koddsson](https://github.com/koddsson)! - Convert package to a ES module\n\n## 17.5.2\n\n### Patch Changes\n\n- [#1519](https://github.com/primer/css/pull/1519) [`8bfe2b7e`](https://github.com/primer/css/commit/8bfe2b7e410bb2a9e5f5d480b36ef885be1d98da) Thanks [@jonrohan](https://github.com/jonrohan)! - Fix bug where outline was showing up on hover\n\n* [#1525](https://github.com/primer/css/pull/1525) [`06f83622`](https://github.com/primer/css/commit/06f8362209ccb9d0bf8cc47f9ef76a1237a2dfd0) Thanks [@joelhawksley](https://github.com/joelhawksley)! - Render `code` at 100% font size irregardless of direct descension from `pre`.\n\n## 17.5.1\n\n### Patch Changes\n\n- [#1517](https://github.com/primer/css/pull/1517) [`7011d046`](https://github.com/primer/css/commit/7011d0469ee012b93a29eff5c4f0f45357aa02fc) Thanks [@simurai](https://github.com/simurai)! - Remove background from .note\n\n## 17.5.0\n\n### Minor Changes\n\n- [#1506](https://github.com/primer/css/pull/1506) [`13cda226`](https://github.com/primer/css/commit/13cda22638cefe6847b1d718ba87a3f62a8ec3bb) Thanks [@jonrohan](https://github.com/jonrohan)! - Creating `.Header-input` class for dark header inputs. This `Header-input` will be used with a `form-control` class.\n\n### Patch Changes\n\n- [#1507](https://github.com/primer/css/pull/1507) [`30523d64`](https://github.com/primer/css/commit/30523d6436e7ea06fa511fa9ba8407429e667b42) Thanks [@simurai](https://github.com/simurai)! - Fix form tooltip transparency\n\n* [#1510](https://github.com/primer/css/pull/1510) [`d1ea5c2c`](https://github.com/primer/css/commit/d1ea5c2c738ae4763dadf7994a9e78c196842bc3) Thanks [@jonrohan](https://github.com/jonrohan)! - Adding focus outline to the invisible buttons `.btn-invisible` and `.close-button`.\n\n## 17.4.0\n\n### Minor Changes\n\n- [#1497](https://github.com/primer/css/pull/1497) [`84bbd501`](https://github.com/primer/css/commit/84bbd501a41c455031d4a1b4d25df6fc6db6e1d8) Thanks [@tobiasahlin](https://github.com/tobiasahlin)! - Add font-weight-medium to marketing styles, and use it in the type scale.\n\n* [#1487](https://github.com/primer/css/pull/1487) [`0298b69b`](https://github.com/primer/css/commit/0298b69bda4c25ed252fbeb6ba2e3fcf4ff096d2) Thanks [@arzg](https://github.com/arzg)! - Move Menlo before Consolas in monospace font stack\n\n### Patch Changes\n\n- [#1483](https://github.com/primer/css/pull/1483) [`84488397`](https://github.com/primer/css/commit/84488397f4a7bce115e2c81b388de959fff20296) Thanks [@jonrohan](https://github.com/jonrohan)! - Make sure truncate is a direct child\n\n* [#1486](https://github.com/primer/css/pull/1486) [`f52d40cc`](https://github.com/primer/css/commit/f52d40cce57bca5a713d0b9d1136f144577cf66d) Thanks [@manuelpuyol](https://github.com/manuelpuyol)! - Prevents main content to blowout and cause an horizontal scroll\n\n- [#1488](https://github.com/primer/css/pull/1488) [`c345bd38`](https://github.com/primer/css/commit/c345bd3819cf8d42552409baf3ec4ccb59c50107) Thanks [@cheshire137](https://github.com/cheshire137)! - Fix unreadable text when utility is used in dropdown item.\n\n* [#1501](https://github.com/primer/css/pull/1501) [`e072734a`](https://github.com/primer/css/commit/e072734aa18813622ea22e8f9c3e602ec7309105) Thanks [@tobiasahlin](https://github.com/tobiasahlin)! - Documentation: Remove deprecated faded borders documentation\n\n- [#1472](https://github.com/primer/css/pull/1472) [`8541ed1d`](https://github.com/primer/css/commit/8541ed1db1e0d9c4551ea76ba400d6d0cf682897) Thanks [@simurai](https://github.com/simurai)! - Use variable for the active border of the UnderlineNav\n\n* [#1475](https://github.com/primer/css/pull/1475) [`105296c6`](https://github.com/primer/css/commit/105296c6b4b33d9e84038173bf9af09889a99dcd) Thanks [@simurai](https://github.com/simurai)! - Make `TimelineItem-badge--success` ready for Color Modes V2\n\n- [#1452](https://github.com/primer/css/pull/1452) [`8838a3ac`](https://github.com/primer/css/commit/8838a3ac48ec1589594291313349f49737317b5d) Thanks [@mktcode](https://github.com/mktcode)! - Division using / is deprecated. Replaced it with multiplications.\n\n* [#1499](https://github.com/primer/css/pull/1499) [`2e580a7e`](https://github.com/primer/css/commit/2e580a7ed46fb06786b84f5b1900c8e0cd7450f5) Thanks [@mjacobus](https://github.com/mjacobus)! - Fix label contrast when inside a dropdown\n\n## 17.3.0\n\n### Minor Changes\n\n- [#1451](https://github.com/primer/css/pull/1451) [`9181b479`](https://github.com/primer/css/commit/9181b479a812bf0b4cbf89d838abf53ffba7932d) Thanks [@simurai](https://github.com/simurai)! - Support SF Mono font in Firefox and Safari\n\n* [#1441](https://github.com/primer/css/pull/1441) [`3b552c77`](https://github.com/primer/css/commit/3b552c77af931ba67920a97dbea59acf5d800335) Thanks [@jonrohan](https://github.com/jonrohan)! - Adding anim-hover-grow to replace hover-grow\n\n### Patch Changes\n\n- [#1450](https://github.com/primer/css/pull/1450) [`1d366c4b`](https://github.com/primer/css/commit/1d366c4b2c11f9541063bb62e7a8ad389b3d6567) Thanks [@jonrohan](https://github.com/jonrohan)! - Adding fill mode forwards to anim-fade-out\n\n* [#1448](https://github.com/primer/css/pull/1448) [`8175f884`](https://github.com/primer/css/commit/8175f884474b5e5139cb1647df71200a69c48535) Thanks [@simurai](https://github.com/simurai)! - Replace auto and fade variables\n\n- [#1432](https://github.com/primer/css/pull/1432) [`55ca5f2f`](https://github.com/primer/css/commit/55ca5f2f7300e016516f9457248b055b2c56f7fd) Thanks [@manuelpuyol](https://github.com/manuelpuyol)! - Fix Layout ordering when using dividers with custom sidebar placement\n\n* [#1443](https://github.com/primer/css/pull/1443) [`c65b5f9c`](https://github.com/primer/css/commit/c65b5f9cf01f024f5f7120a5e80c2acd1d2584f6) Thanks [@jdanyow](https://github.com/jdanyow)! - Fix octicon color for disabled .btn-danger\n\n- [#1442](https://github.com/primer/css/pull/1442) [`6c22133a`](https://github.com/primer/css/commit/6c22133ae1652bafb16ba443169c179b95bf4330) Thanks [@jdanyow](https://github.com/jdanyow)! - Fix octicon color for disabled .btn-primary\n\n## 17.2.1\n\n### Patch Changes\n\n- [#1430](https://github.com/primer/css/pull/1430) [`5bc54f9e`](https://github.com/primer/css/commit/5bc54f9e3b5e764e44f34072a00208870c518f11) Thanks [@jonrohan](https://github.com/jonrohan)! - Revert \"Support SF Mono font in Firefox and Safari\"\n\n## 17.2.0\n\n### Minor Changes\n\n- [#992](https://github.com/primer/css/pull/992) [`90f95693`](https://github.com/primer/css/commit/90f95693f5cbfb9f6b7b84735bf5dce2e382601b) Thanks [@simurai](https://github.com/simurai)! - Support SF Mono font in Firefox & Safari\n\n### Patch Changes\n\n- [#1423](https://github.com/primer/css/pull/1423) [`6f79bfaa`](https://github.com/primer/css/commit/6f79bfaa7a6fab551fe3e795eda24908c2bf0d2e) Thanks [@jonrohan](https://github.com/jonrohan)! - Properly calculating the variables computed value for dist folder\n\n* [#1427](https://github.com/primer/css/pull/1427) [`6dad1784`](https://github.com/primer/css/commit/6dad17845f1ea345c692f56ecbf8edd60187f80d) Thanks [@jonrohan](https://github.com/jonrohan)! - Don't require direct version of primitives\n\n- [#1422](https://github.com/primer/css/pull/1422) [`882c570f`](https://github.com/primer/css/commit/882c570f9ac38dc213e213b2e98ef4686eb693e2) Thanks [@manuelpuyol](https://github.com/manuelpuyol)! - Improve dividers and allow sidebar positioning when `Layout` is flowing as row.\n\n* [#1420](https://github.com/primer/css/pull/1420) [`55302dc2`](https://github.com/primer/css/commit/55302dc232cb5cd28c52047a0776549f298a90ce) Thanks [@hpalacio](https://github.com/hpalacio)! - lists.scss: reset `<ol>` without 'type' attr to \"decimal\"\n\n- [#1424](https://github.com/primer/css/pull/1424) [`30597af9`](https://github.com/primer/css/commit/30597af94da40875a2741f9f4ecc786f8916167c) Thanks [@khiga8](https://github.com/khiga8)! - Ensures that the visual slash separator for breadcrumbs is not announced by screenreaders.\n\n## 17.1.1\n\n### Patch Changes\n\n- [#1418](https://github.com/primer/css/pull/1418) [`a9a61ee6`](https://github.com/primer/css/commit/a9a61ee690f4fff3a7e2e932dc8da5e9cd6cf702) Thanks [@simurai](https://github.com/simurai)! - Undeprecate .css-truncate\n\n## 17.1.0\n\n### Minor Changes\n\n- [#1409](https://github.com/primer/css/pull/1409) [`49981dfc`](https://github.com/primer/css/commit/49981dfc29131e6ad25cef6538abd9308700b48a) Thanks [@manuelpuyol](https://github.com/manuelpuyol)! - Adding new Layout component\n\n* [#1358](https://github.com/primer/css/pull/1358) [`6b51e877`](https://github.com/primer/css/commit/6b51e877bc3b1a1ae4925edc4fcb5d45907b110e) Thanks [@jonrohan](https://github.com/jonrohan)! - Adding new .Truncate class and deprecating css-truncate\n\n### Patch Changes\n\n- [#1415](https://github.com/primer/css/pull/1415) [`fb6a7e3d`](https://github.com/primer/css/commit/fb6a7e3dc112fc637003ca13dca978e7d8a54d4c) Thanks [@simurai](https://github.com/simurai)! - Bump primer/primitives@4.3.5\n\n## 17.0.3\n\n### Patch Changes\n\n- [#1410](https://github.com/primer/css/pull/1410) [`d5e425e4`](https://github.com/primer/css/commit/d5e425e40900102b5b728a516de71e4094b7e138) Thanks [@simurai](https://github.com/simurai)! - Bump @primer/primitives@4.3.4\n\n## 17.0.2\n\n### Patch Changes\n\n- [#1408](https://github.com/primer/css/pull/1408) [`1eea5575`](https://github.com/primer/css/commit/1eea557506241412de068c0f2570a0e9606fd6c2) Thanks [@colebemis](https://github.com/colebemis)! - Bump @primer/primitives version\n\n* [#1403](https://github.com/primer/css/pull/1403) [`5ef399cf`](https://github.com/primer/css/commit/5ef399cff004fc30d0b98750af889ffdc4bf8f3b) Thanks [@tobiasahlin](https://github.com/tobiasahlin)! - Remove !important for base styles for body utilities\n\n## 17.0.1\n\n### Patch Changes\n\n- [#1391](https://github.com/primer/css/pull/1391) [`534c8f66`](https://github.com/primer/css/commit/534c8f66f5a433aaf6daa308e0354d8eeca25f3a) Thanks [@simurai](https://github.com/simurai)! - Improve focus state for .SideNav and .menu\n\n* [#1398](https://github.com/primer/css/pull/1398) [`5ef7bd6e`](https://github.com/primer/css/commit/5ef7bd6ef0eb43f2bb5765c0f3cfd30db3924ec4) Thanks [@colebemis](https://github.com/colebemis)! - Add experimental color variables. **Warning: Do not use these color variables**\n\n- [#1394](https://github.com/primer/css/pull/1394) [`42223f0b`](https://github.com/primer/css/commit/42223f0b219b6213e2d11f99988acdfd47ab9591) Thanks [@tobiasahlin](https://github.com/tobiasahlin)! - Marketing: Fix letter spacing for headers not being correctly overridden at break points\n\n## 17.0.0\n\n### Major Changes\n\n- [#1370](https://github.com/primer/css/pull/1370) [`cc0049c2`](https://github.com/primer/css/commit/cc0049c2ad1ad609dc672e12f751245fbecc5d65) Thanks [@simurai](https://github.com/simurai)! - Replace border-overlay with border-primary\n\n* [#1371](https://github.com/primer/css/pull/1371) [`0c6bfc22`](https://github.com/primer/css/commit/0c6bfc22b523545120bea39dc201760d8a9e8b01) Thanks [@tobiasahlin](https://github.com/tobiasahlin)! - Marketing: Deprecate bg-shade-gradient\n\n- [#1379](https://github.com/primer/css/pull/1379) [`22a98b5c`](https://github.com/primer/css/commit/22a98b5c87031584c5349f49835e013e8a7e460b) Thanks [@tobiasahlin](https://github.com/tobiasahlin)! - Add new marketing type scale\n\n* [#1369](https://github.com/primer/css/pull/1369) [`2ae2ae57`](https://github.com/primer/css/commit/2ae2ae5795f68a6004fb4a14eb56bba41828173d) Thanks [@tobiasahlin](https://github.com/tobiasahlin)! - Marketing: Removing Inter font files and folder\n\n- [#1339](https://github.com/primer/css/pull/1339) [`0ca2648e`](https://github.com/primer/css/commit/0ca2648e5982f0d21137a556e083d77af33eee36) Thanks [@jonrohan](https://github.com/jonrohan)! - Changeset change supported browsers.\n\n* [#1373](https://github.com/primer/css/pull/1373) [`aeae963d`](https://github.com/primer/css/commit/aeae963d93e273f08fbf47d582316811bbd8eac5) Thanks [@tobiasahlin](https://github.com/tobiasahlin)! - Remove redundant marketing layout selectors\n\n- [#1380](https://github.com/primer/css/pull/1380) [`4ac39740`](https://github.com/primer/css/commit/4ac39740f27842c625da084f1d03b8e2ec6084f8) Thanks [@tobiasahlin](https://github.com/tobiasahlin)! - Marketing: use size modifiers that don't look like breakpoints modifiers\n\n* [#1352](https://github.com/primer/css/pull/1352) [`b4950e39`](https://github.com/primer/css/commit/b4950e395867b558e63b5bb4d46d93f75f35e38e) Thanks [@tobiasahlin](https://github.com/tobiasahlin)! - Update marketing button styles\n\n- [#1356](https://github.com/primer/css/pull/1356) [`3b7e5d8c`](https://github.com/primer/css/commit/3b7e5d8c0def7975cc6714abe4b60d8efc746f8f) Thanks [@jonrohan](https://github.com/jonrohan)! - Remove dependency on primer/octicons and force overflow visible\n\n* [#1372](https://github.com/primer/css/pull/1372) [`e24b7cb0`](https://github.com/primer/css/commit/e24b7cb024ca2c6bb06cda92ccefa1aff3208131) Thanks [@tobiasahlin](https://github.com/tobiasahlin)! - Merge overlapping marketing spacing utilities into primer core\n\n### Minor Changes\n\n- [#1357](https://github.com/primer/css/pull/1357) [`3dfb910f`](https://github.com/primer/css/commit/3dfb910fc39ae889fb4c2c3c783aead6ac768d0d) Thanks [@hpalacio](https://github.com/hpalacio)! - typography-base: process 'type' attribute of HTML <ol> tag\n\n### Patch Changes\n\n- [#1368](https://github.com/primer/css/pull/1368) [`95b9f0f0`](https://github.com/primer/css/commit/95b9f0f051bf34be5bcc60e2f2d29a262059c420) Thanks [@simurai](https://github.com/simurai)! - Use `--color-icon-secondary` for `.blankslate-icon`\n\n* [#1350](https://github.com/primer/css/pull/1350) [`2dbc6143`](https://github.com/primer/css/commit/2dbc6143a66b56b29e12d5ae3e7afeaed95373ab) Thanks [@simurai](https://github.com/simurai)! - Bump @primer/primitives\n\n- [#1385](https://github.com/primer/css/pull/1385) [`1cfff7a4`](https://github.com/primer/css/commit/1cfff7a4a39e5612c3f98357bfa2edc1460f2e04) Thanks [@tobiasahlin](https://github.com/tobiasahlin)! - Marketing typography: 64px → 68px for third size step\n\n* [#1382](https://github.com/primer/css/pull/1382) [`18bb377b`](https://github.com/primer/css/commit/18bb377bef8f65cc75cd1faea9b2264a4061cfd0) Thanks [@tobiasahlin](https://github.com/tobiasahlin)! - Marketing: optimize body typography inheritance\n\n- [#1392](https://github.com/primer/css/pull/1392) [`0fea11a7`](https://github.com/primer/css/commit/0fea11a74b05196c17e2e300b66c93c24d6c9844) Thanks [@tobiasahlin](https://github.com/tobiasahlin)! - Marketing: Enable body content utilities to have their font-weight overwritten\n\n## 16.3.0\n\n### Minor Changes\n\n- [#1306](https://github.com/primer/css/pull/1306) [`5d42f1c5`](https://github.com/primer/css/commit/5d42f1c5c36d9732fd69541585a8d8ba4221b978) Thanks [@jonrohan](https://github.com/jonrohan)! - Adding a min-height to input-sm\n\n### Patch Changes\n\n- [#1340](https://github.com/primer/css/pull/1340) [`8506c374`](https://github.com/primer/css/commit/8506c3747fc3d4bfa216e0fbb1d2835db4a9baf4) Thanks [@simurai](https://github.com/simurai)! - Bump @primer/primitives\n\n* [#1302](https://github.com/primer/css/pull/1302) [`90902e1a`](https://github.com/primer/css/commit/90902e1a6044f4b9fde049105f5aec7e09d52777) Thanks [@jonrohan](https://github.com/jonrohan)! - Moving the /fonts/ folder to /src/fonts/\n\n## 16.2.0\n\n### Minor Changes\n\n- [#1294](https://github.com/primer/css/pull/1294) [`7609a074`](https://github.com/primer/css/commit/7609a0742cbb69b2c48af5a2d583c94a14a2d0c6) Thanks [@jonrohan](https://github.com/jonrohan)! - Adding a color text link on hover that will change a color utility class\n\n* [#1295](https://github.com/primer/css/pull/1295) [`fea6ea69`](https://github.com/primer/css/commit/fea6ea692013cbf13b4d93dff1601bb0805beb73) Thanks [@jonrohan](https://github.com/jonrohan)! - Adding text-semibold and text-light utility classes\n\n### Patch Changes\n\n- [#1297](https://github.com/primer/css/pull/1297) [`7a374784`](https://github.com/primer/css/commit/7a37478499c6dbdd30082442abec9dccdfc9efa4) Thanks [@simurai](https://github.com/simurai)! - Separate active and selected states for `.btn`\n\n## 16.1.2\n\n### Patch Changes\n\n- [#1282](https://github.com/primer/css/pull/1282) [`5ee52dfe`](https://github.com/primer/css/commit/5ee52dfe59f1b209ca6c1f2489db0e32660388e9) Thanks [@simurai](https://github.com/simurai)! - Add bg to UnderlineNav Counter\n\n* [#1286](https://github.com/primer/css/pull/1286) [`9044eecf`](https://github.com/primer/css/commit/9044eecf4ef7a1c6ad9ccf0b51def53c52d0def4) Thanks [@jonrohan](https://github.com/jonrohan)! - color-mode mixin fix for keyboard toggle\n\n## 16.1.1\n\n### Patch Changes\n\n- [#1278](https://github.com/primer/css/pull/1278) [`fa4a7c71`](https://github.com/primer/css/commit/fa4a7c714c2666cd339dbf4c77b684e67030af60) Thanks [@jonrohan](https://github.com/jonrohan)! - revert Fixing workflow for rc publishing\n\n## 16.1.0\n\n### Minor Changes\n\n- [#1254](https://github.com/primer/css/pull/1254) [`5d2f0beb`](https://github.com/primer/css/commit/5d2f0beb58b6fab795d5b720e9a14da2f649265c) Thanks [@tobiasahlin](https://github.com/tobiasahlin)! - Add common marketing utilities to primer/marketing\n\n* [#1201](https://github.com/primer/css/pull/1201) [`29a83bdc`](https://github.com/primer/css/commit/29a83bdcfdc3d647932bfe97c9b3f24f91688280) Thanks [@vdepizzol](https://github.com/vdepizzol)! - Change TableObject status to deprecated\n\n### Patch Changes\n\n- [#1197](https://github.com/primer/css/pull/1197) [`a355160a`](https://github.com/primer/css/commit/a355160a30654327f9e51bf677f9b069a46e95a1) Thanks [@neildaniels](https://github.com/neildaniels)! - Fix .btn-with-count documentation\n\n* [#1274](https://github.com/primer/css/pull/1274) [`322379fe`](https://github.com/primer/css/commit/322379fe273c53c94190177b62dd5deed10beb32) Thanks [@tobiasahlin](https://github.com/tobiasahlin)! - Marketing buttons: don't animate everything\n\n- [#1272](https://github.com/primer/css/pull/1272) [`88bcd1bf`](https://github.com/primer/css/commit/88bcd1bfd0258c416addf4c943dfbde593a11b7f) Thanks [@simurai](https://github.com/simurai)! - Update `Counter--secondary` bg\n\n* [#1261](https://github.com/primer/css/pull/1261) [`b1346678`](https://github.com/primer/css/commit/b1346678f4119f384ac49b0c63c355f56968071a) Thanks [@jonrohan](https://github.com/jonrohan)! - Fixing the `color-mode-theme` mixin. Currently the mixin doesn't take into account when `mode=\"light\"` and `light-theme=\"dark\"`. This fix allows dark themes to be set as light themes and to toggle into single light mode.\n\n## 16.0.2\n\n### Patch Changes\n\n- [#1258](https://github.com/primer/css/pull/1258) [`c6945cd5`](https://github.com/primer/css/commit/c6945cd50c297b621a69aecb619440bfb2bf4c32) Thanks [@jonrohan](https://github.com/jonrohan)! - Removing post publish storybook hook\n\n## 16.0.1\n\n### Patch Changes\n\n- [#1247](https://github.com/primer/css/pull/1247) [`1b6ba39c`](https://github.com/primer/css/commit/1b6ba39c733433fc5488d60b0b8b384b6d2b4d7d) Thanks [@jonrohan](https://github.com/jonrohan)! - Adding changesets to release workflow\n\n## 16.0.0\n\n### :boom: Breaking Change\n\n- Update to Primer Primitives `4.0.0` [primer/primitives#43](https://github.com/primer/primitives/pull/43)\n- Add color modes [#1131](https://github.com/primer/css/pull/1131)\n\n### :rocket: Enhancement\n\n- Add `flex-shrink: 0` to `.avatar` [#1183](https://github.com/primer/css/pull/1183)\n- Adding timeline-badge success border [#1246](https://github.com/primer/css/pull/1246)\n- Add `.anim-rotate` utility class [#1251](https://github.com/primer/css/pull/1251)\n\n### :nail_care: Polish\n\n- Move marketing `@font-face` declarations from vars to type [#1238](https://github.com/primer/css/pull/1238)\n\n### :memo: Documentation\n\n- Update documentation with color modes [#1186](https://github.com/primer/css/pull/1186)\n\n## 15.2.0\n\n### :rocket: Enhancements\n\n- [#1145](https://github.com/primer/css/pull/1145) Make final position responsive\n- [#1148](https://github.com/primer/css/pull/1148) flex wrap reverse added\n- [#1157](https://github.com/primer/css/pull/1157) Overflow responsive variants\n- [#1156](https://github.com/primer/css/pull/1156) Add missing rounded-3 utility\n\n### :memo: Documentation\n\n- [#1160](https://github.com/primer/css/pull/1160) Remove custom emoji from SelectMenu docs\n- [#1165](https://github.com/primer/css/pull/1165) Replaced old octicons in examples\n- [#1146](https://github.com/primer/css/pull/1146) Corrected a few typos\n- [#1142](https://github.com/primer/css/pull/1142) Fix typo in Box documentation\n- [#1125](https://github.com/primer/css/pull/1125) Remove reference to Crema\n- [#1155](https://github.com/primer/css/pull/1155) Place search subnav example on new line\n\n### :nail_care: Polish\n\n- [#1147](https://github.com/primer/css/pull/1147) Increase input font-size on iOS\n- [#1152](https://github.com/primer/css/pull/1152) Remove .autocomplete-results inset border that is occluded by items\n\n### Committers\n\n- [@MauricioHernanCabrera](https://github.com/MauricioHernanCabrera)\n- [@ashygee](https://github.com/ashygee)\n- [@esdraspavon](https://github.com/esdraspavon)\n- [@neildaniels](https://github.com/neildaniels)\n- [@nicksloan](https://github.com/nicksloan)\n\n## 15.1.0\n\n### :rocket: Enhancements\n\n- [#1062](https://github.com/primer/css/pull/1062) Make tabnav responsive\n- [#1128](https://github.com/primer/css/pull/1128) Add support for table border\n- [#1132](https://github.com/primer/css/pull/1132) Add .bg-orange to the list of colors\n\n### :memo: Documentation\n\n- [#1122](https://github.com/primer/css/pull/1122) fix comment typo\n\n### :nail_care: Polish\n\n- [#1121](https://github.com/primer/css/pull/1121) Update layout when the Counter is empty\n- [#1126](https://github.com/primer/css/pull/1126) Increase border contrast for Label--yellow\n\n### Committers\n\n- [@colinkeany](https://github.com/colinkeany)\n- [@garman](https://github.com/garman)\n- [@nikolasveneti](https://github.com/nikolasveneti)\n- [@nuthinking](https://github.com/nuthinking)\n- [@simurai](https://github.com/simurai)\n\n## 15.0.0\n\n### :rocket: Enhancements\n\n- [#1116](https://github.com/primer/css/pull/1116) Improve accessibility\n- [#1083](https://github.com/primer/css/pull/1083) Make sure autocomplete resets button styles\n- [#1074](https://github.com/primer/css/pull/1074) Update pagination\n- [#1071](https://github.com/primer/css/pull/1071) Update flash alert\n- [#1064](https://github.com/primer/css/pull/1064) Update SelectMenu\n- [#1040](https://github.com/primer/css/pull/1040) Update box-shadow and borders\n- [#1038](https://github.com/primer/css/pull/1038) Update navigation\n- [#1034](https://github.com/primer/css/pull/1034) Update labels\n- [#1029](https://github.com/primer/css/pull/1029) Update inputs\n- [#1027](https://github.com/primer/css/pull/1027) Update buttons\n- [#1022](https://github.com/primer/css/pull/1022) Update border radius\n\n### :nail_care: Polish\n\n- [#1109](https://github.com/primer/css/pull/1109) Polish 9\n- [#1090](https://github.com/primer/css/pull/1090) Polish 8\n- [#1077](https://github.com/primer/css/pull/1077) Polish 7\n- [#1055](https://github.com/primer/css/pull/1055) Polish 3\n- [#1047](https://github.com/primer/css/pull/1047) Polish 2\n- [#1045](https://github.com/primer/css/pull/1045) Polish 1\n- [#1041](https://github.com/primer/css/pull/1041) Polish\n\n### Committers\n\n- [@muan](https://github.com/muan)\n- [@simurai](https://github.com/simurai)\n\n## 14.4.0\n\n### :rocket: Enhancements\n\n- [#1089](https://github.com/primer/css/pull/1089) Accessible Progress\n\n### :bug: Bug fixes\n\n- [#1060](https://github.com/primer/css/pull/1060) Add support for aria-current=false\n\n### :memo: Documentation\n\n- [#1059](https://github.com/primer/css/pull/1059) Typo in scss.md\n- [#1065](https://github.com/primer/css/pull/1065) Convert markdown page to one big example\n- [#1075](https://github.com/primer/css/pull/1075) chore: add missing link to color utilities\n- [#1067](https://github.com/primer/css/pull/1067) Add .text-gray-light to docs\n\n### Committers\n\n- [@daniseguraf](https://github.com/daniseguraf)\n- [@metonym](https://github.com/metonym)\n- [@simurai](https://github.com/simurai)\n\n## 14.3.0\n\n### :rocket: Enhancements\n\n- [#1044](https://github.com/primer/css/pull/1044) Accessible form validation\n- [#1028](https://github.com/primer/css/pull/1028) Improve .form-group accessibility\n\n### :bug: Bug fixes\n\n- [#670](https://github.com/primer/css/pull/670) Fix Box row top border\n- [#1042](https://github.com/primer/css/pull/1042) Fix UnderlineNav in Safari\n- [#1035](https://github.com/primer/css/pull/1035) Update UnderlineNav-item to not wrap counter & icon\n\n### :memo: Documentation\n\n- [#1018](https://github.com/primer/css/pull/1018) Update MIGRATING.md\n\n### Committers\n\n- [@emplums](https://github.com/emplums)\n- [@jonrohan](https://github.com/jonrohan)\n- [@simurai](https://github.com/simurai)\n\n## 14.2.0\n\n### :rocket: Enhancements\n\n- [#1006](https://github.com/primer/css/pull/1006) Use ARIA attributes for states\n- [#1014](https://github.com/primer/css/pull/1014) Add aria-disabled state\n- [#1001](https://github.com/primer/css/pull/1001) Add Inter bold font file\n- [#982](https://github.com/primer/css/pull/982) Applies .selected styles to [aria-selected=true]\n\n### :bug: Bug fixes\n\n- [#1002](https://github.com/primer/css/pull/1002) Fix marketing utilities\n- [#1005](https://github.com/primer/css/pull/1005) Add .selected back to the .UnderlineNav\n\n### :memo: Documentation\n\n- [#1012](https://github.com/primer/css/pull/1012) Improve margin/padding docs\n- [#1013](https://github.com/primer/css/pull/1013) Fix docs links\n- [#1004](https://github.com/primer/css/pull/1004) rm deprecated flash-banner component from docs\n\n### Committers\n\n- [@flavianunes](https://github.com/flavianunes)\n- [@ktravers](https://github.com/ktravers)\n- [@simurai](https://github.com/simurai)\n\n## 14.1.0\n\n### :rocket: Enhancements\n\n- [#994](https://github.com/primer/css/pull/994) Responsive line-height utilities\n- [#995](https://github.com/primer/css/pull/995) Add bold weight to marketing font variables\n\n### :bug: Bug fixes\n\n- [#998](https://github.com/primer/css/pull/998) Use a gray background when hovering SelectMenu items\n\n### :memo: Documentation\n\n- [#989](https://github.com/primer/css/pull/989) Add link to the Stylelint guide\n- [#1000](https://github.com/primer/css/pull/1000) Update contributing guide for a general audience\n- [#972](https://github.com/primer/css/pull/972) Variables page\n\n### :house: Internal\n\n- [#997](https://github.com/primer/css/pull/997) Fix CHANGELOG links\n\n### Committers\n\n- [@shawnbot](https://github.com/shawnbot)\n- [@simurai](https://github.com/simurai)\n- [@skullface](https://github.com/skullface)\n\n## 14.0.0\n\n### :boom: Breaking changes\n\n- [#922](https://github.com/primer/css/pull/922) More SelectMenu improvements\n- [#966](https://github.com/primer/css/pull/966) Rename `.flex-item-equal` to `.flex-1`\n- [#973](https://github.com/primer/css/pull/973) Deprecate variables in 14.0.0\n\n### :rocket: Enhancements\n\n- [#987](https://github.com/primer/css/pull/987) Add .position-sticky utility\n- [#979](https://github.com/primer/css/pull/979) Add `.radio-group` component\n- [#981](https://github.com/primer/css/pull/981) Autocomplete + Suggester components\n- [#978](https://github.com/primer/css/pull/978) Add `.css-truncate-overflow`\n- [#974](https://github.com/primer/css/pull/974) Add Animated Ellipsis\n- [#971](https://github.com/primer/css/pull/971) Add variable deprecation data and tests\n\n### :memo: Documentation\n\n- [#988](https://github.com/primer/css/pull/988) Add docs for flexbug no. 9\n- [#977](https://github.com/primer/css/pull/977) Update spacing.md\n\n### :house: Internal\n\n- [#952](https://github.com/primer/css/pull/952) Async/awaitify script/dist.js\n- [#963](https://github.com/primer/css/pull/963) Generate changelog with semantic-release\n- [#968](https://github.com/primer/css/pull/968) Stylelint update\n\n### Committers\n\n- [@BinaryMuse](https://github.com/BinaryMuse)\n- [@danchristian](https://github.com/danchristian)\n- [@shawnbot](https://github.com/shawnbot)\n- [@simurai](https://github.com/simurai)\n\n# 13.2.0\n\n### :rocket: Enhancements\n\n- [#959](https://github.com/primer/css/pull/959) More buttons\n- [#950](https://github.com/primer/css/pull/950) Add Diffstat component\n- [#913](https://github.com/primer/css/pull/913) Importing TimelineItem from .com and creating matching docs\n- [#953](https://github.com/primer/css/pull/953) Add IssueLabel component\n\n### :bug: Bug fixes\n\n- [#945](https://github.com/primer/css/pull/945) Add `[role=tab][aria-selected=true]` to `.UnderlineNav-item.selected`\n\n### :memo: Documentation\n\n- [#939](https://github.com/primer/css/pull/939) Fix `Box--overlay` example\n- [#943](https://github.com/primer/css/pull/943) Fix broken links to typography utilities\n\n### :house: Internal\n\n- [#946](https://github.com/primer/css/pull/946) Add `TODO@version` stylelint rule (local)\n\n### Committers\n\n- [@MohamedElidrissi](https://github.com/MohamedElidrissi)\n- [@jonrohan](https://github.com/jonrohan)\n- [@shawnbot](https://github.com/shawnbot)\n- [@simurai](https://github.com/simurai)\n\n# 13.1.0\n\n### :rocket: Enhancement\n\n- [#904](https://github.com/primer/css/pull/904) Add Keyboard Shortcuts `kbd` from github/github\n- [#926](https://github.com/primer/css/pull/926) Add Flash Banner `.flash-banner` from github/github\n- [#927](https://github.com/primer/css/pull/927) Add `.flex-column-reverse` utilities\n\n### :memo: Documentation\n\n- [#932](https://github.com/primer/css/pull/932) Fix CDN links in documentation\n- [#933](https://github.com/primer/css/pull/933) Convert most ERB examples to HTML\n\n### Committers\n\n- [@shawnbot](https://github.com/shawnbot)\n- [@simurai](https://github.com/simurai)\n\n# 13.0.2\n\n### :memo: Documentation\n\n- Use inline octicon in branch name example [#886](https://github.com/primer/css/pull/886)\n- Move select menu list into the modal div [#903](https://github.com/primer/css/pull/903)\n- Improve SelectMenu docs [#923](https://github.com/primer/css/pull/923)\n\n### :house: Internal\n\n- Update \"Ship checklist\" [#902](https://github.com/primer/css/pull/902)\n- Bump stylelint, et al; add CI tests and script for removing needless disables [#912](https://github.com/primer/css/pull/912)\n\n### Committers\n\n- [@colebemis](https://github.com/colebemis)\n- [@mxie](https://github.com/mxie)\n- [@shawnbot](https://github.com/shawnbot)\n- [@simurai](https://github.com/simurai)\n\n# 13.0.1\n\n### :bug: Bug Fix\n\n- Remove \"Segoe UI Symbol\" from font stack [#906](https://github.com/primer/css/pull/906)\n\n### Committers\n\n- [@simurai](https://github.com/simurai)\n\n# 13.0.0\n\n### :boom: Breaking Change\n\n- Remove `.container`, `.columns`, `.column`, and related classes [#662](https://github.com/primer/css/pull/662)\n- Remove `.btn-purple` [#736](https://github.com/primer/css/pull/736) :wave: 💜\n- Remove `.text-pending` and `.bg-pending` [#888](https://github.com/primer/css/pull/888)\n- Remove `.dropdown-menu-content` [#884](https://github.com/primer/css/pull/884)\n\n### :nail_care: Polish\n\n- Select menu improvements [#893](https://github.com/primer/css/pull/893)\n\n### :memo: Documentation\n\n- The layout docs, formerly available at `/css/objects/layout`, are gone and will redirect to `/css/objects/grid`.\n\n### :house: Internal\n\n- Add deprecations test script [#889](https://github.com/primer/css/pull/889)\n- Clean up scripts and dev dependencies [#890](https://github.com/primer/css/pull/890)\n- Upgrade stylelint-config-primer to v8.0.0 [#892](https://github.com/primer/css/pull/892)\n- Upgrade doctocat, live code wrappers [#895](https://github.com/primer/css/pull/895)\n\n### Committers\n\n- [@jonrohan](https://github.com/jonrohan)\n- [@shawnbot](https://github.com/shawnbot)\n- [@simurai](https://github.com/simurai)\n- [@sophshep](https://github.com/sophshep)\n\n# 12.7.0\n\n### :rocket: Enhancement\n\n- Import Dropdown component; add dark variants for dropdown and text fields [#862](https://github.com/primer/css/pull/862)\n- Add `.break-word` utility and improve word-break docs [#880](https://github.com/primer/css/pull/880)\n- Publish deprecation data [#883](https://github.com/primer/css/pull/883)\n\n### :memo: Documentation\n\n- Fix mistake in flex-justify-start explanation [#877](https://github.com/primer/css/pull/877)\n\n### :house: Internal\n\n- Fix CSS bundle size report when adding bundles [#879](https://github.com/primer/css/pull/879)\n- Migrate to GitHub Actions v2 [#881](https://github.com/primer/css/pull/881)\n\n### Committers\n\n- [@dcastil](https://github.com/dcastil)\n- [@shawnbot](https://github.com/shawnbot)\n- [@simurai](https://github.com/simurai)\n- [@vdepizzol](https://github.com/vdepizzol)\n\n# 12.6.2\n\n### :nail_care: Polish\n\n- Add default background-color to SideNav https://github.com/primer/css/pull/873\n\n### :house: Internal\n\n- Change order in RELEASING.md https://github.com/primer/css/pull/875\n\n### Committers\n\n- [@shawnbot](https://github.com/shawnbot)\n- [@simurai](https://github.com/simurai)\n\n# 12.6.1\n\n### :bug: Bug Fix\n\n- Remove non-ascii characters (en dashes?) from SCSS comments [#870](https://github.com/primer/css/pull/870)\n- Fix SideNav \"jumping\" in Safari [#868](https://github.com/primer/css/pull/868)\n\n### :nail_care: Polish\n\n- Improve Select Menu spacing [#844](https://github.com/primer/css/pull/844)\n\n### :memo: Documentation\n\n- Update colorable URL [#867](https://github.com/primer/css/pull/867)\n\n### :house: Internal\n\n- Update changelog for 12.6.0 [#866](https://github.com/primer/css/pull/866)\n\n### Committers\n\n- [@jonrohan](https://github.com/jonrohan)\n- [@kiendang](https://github.com/kiendang)\n- [@shawnbot](https://github.com/shawnbot)\n- [@shreve](https://github.com/shreve)\n- [@simurai](https://github.com/simurai)\n\n# 12.6.0\n\n### 🚀 Enhancements\n\n- Loading toast styles [#852](https://github.com/primer/css/pull/852)\n- Header component [#845](https://github.com/primer/css/pull/845)\n- Import `.octicon` CSS in the core bundle [#857](https://github.com/primer/css/pull/857)\n- Design update for blankslates [#861](https://github.com/primer/css/pull/861)\n- Don't let State labels wrap [#863](https://github.com/primer/css/pull/863)\n\n### 📝 Documentation\n\n- Fix some links in linting docs [#856](https://github.com/primer/css/pull/856)\n- Updates to the development docs [#855](https://github.com/primer/css/pull/855)\n- Generate bundle source READMEs from a template [#859](https://github.com/primer/css/pull/859)\n- Render Octicon Ruby helper in docs [#847](https://github.com/primer/css/pull/847)\n\n### 🏠 Internal\n\n- Add GitHub `styleguide.css` to Storybook [#849](https://github.com/primer/css/pull/849)\n\n### Committers\n\n- [@ashygee](https://github.com/ashygee)\n- [@emilybrick](https://github.com/emilybrick)\n- [@jonrohan](https://github.com/jonrohan)\n- [@shawnbot](https://github.com/shawnbot)\n- [@vdepizzol](https://github.com/vdepizzol)\n\n# 12.5.0\n\n### :rocket: Enhancement\n\n- Add `.Toast` component [#831](https://github.com/primer/css/pull/831)\n- Add `.SideNav` component [#827](https://github.com/primer/css/pull/827)\n- Add `.SelectMenu` component [#808](https://github.com/primer/css/pull/808)\n- Add `font-display: swap` to `@font-face` declarations [#780](https://github.com/primer/css/pull/780)\n- Add `flex-grow-0`, `flex-order-[1,2,none]` and `width-auto` utilities [#763](https://github.com/primer/css/pull/763)\n- Change default for `$marketing-font-path` to `/fonts/` [#837](https://github.com/primer/css/pull/837)\n\n### :bug: Bug Fix\n\n- Improve monospaced font on Chrome Android [#812](https://github.com/primer/css/pull/812)\n\n### :memo: Documentation\n\n- Add multi-word naming conventions to BEM docs [#836](https://github.com/primer/css/pull/836)\n- Color system docs updates [#811](https://github.com/primer/css/pull/811)\n- Color utility table tweaks [#842](https://github.com/primer/css/pull/842)\n- Fix markdown typos in Contributing docs page [#846](https://github.com/primer/css/pull/846)\n\n### Committers\n\n- [@ampinsk](https://github.com/ampinsk)\n- [@emilybrick](https://github.com/emilybrick)\n- [@emplums](https://github.com/emplums)\n- [@jonrohan](https://github.com/jonrohan)\n- [@shawnbot](https://github.com/shawnbot)\n- [@simurai](https://github.com/simurai)\n- [@skullface](https://github.com/skullface)\n- [@vdepizzol](https://github.com/vdepizzol)\n\n# 12.4.1\n\n### :bug: Bug fixes\n\n- Fix [#822](https://github.com/primer/css/issues/822) (`.border-dashed` issues) via [#824](https://github.com/primer/css/issues/824)\n\n### :memo: Documentation\n\n- Typos fixed in [#802](https://github.com/primer/css/issues/802) (thank you, [@The-Compiler](https://github.com/The-Compiler)!)\n- Nav updates [#803](https://github.com/primer/css/issues/803)\n- Fix tables of contents [#762](https://github.com/primer/css/issues/762)\n- Add deprecation warning for `.btn-purple`, due to disappear in 13.0.0 via [#736](https://github.com/primer/css/issues/736)\n- Lots more documentation updates in [#814](https://github.com/primer/css/issues/814)\n\n### :house: Internal\n\n- Decommission `primer/deploy` [#809](https://github.com/primer/css/issues/809)\n\n### Committers\n\n- [@emplums](https://github.com/emplums)\n- [@shawnbot](https://github.com/shawnbot)\n- [@simurai](https://github.com/simurai)\n- [@The-Compiler](https://github.com/The-Compiler)\n\n# 12.4.0\n\n### :rocket: Enhancement\n\n- More responsive border utilities [#775](https://github.com/primer/css/pull/775)\n- Add `overflow: visible` utilities [#798](https://github.com/primer/css/pull/798)\n- Add `yellow` color utilities that will replace `pending` [#737](https://github.com/primer/css/pull/737)\n\n### :bug: Bug Fix\n\n- Fix Ruby Sass compiler warnings by quoting keys in `$hue-maps` declaration [#794](https://github.com/primer/css/pull/794)\n\n### :house: Internal\n\n- Remove `test-all-modules` scripts and old monorepo test scripts [#795](https://github.com/primer/css/pull/795)\n- Resolve all but one ([#796](https://github.com/primer/css/pull/796)) vulnerability in npm dev dependencies [#797](https://github.com/primer/css/pull/797)\n\n### Committers\n\n- [@broccolini](https://github.com/broccolini)\n- [@shawnbot](https://github.com/shawnbot)\n- [@simurai](https://github.com/simurai)\n\n# 12.3.1\n\n### 🐛 Bug Fix\n\n- Add `aria-selected=\"true\"` support to tabbed navigation styles to play nicely with [`<tab-container>`](https://github.com/github/tab-container-element)\n\n### 🏠 Internal\n\n- Resolve the vulnerability alert with `tar@<4.4.2` in [CVE-2018-20834](https://nvd.nist.gov/vuln/detail/CVE-2018-20834)\n\n### Committers\n\n- [@shawnbot](https://github.com/shawnbot)\n\n# 12.3.0\n\n### :rocket: Enhancement\n\n- More color utilities! [#760](https://github.com/primer/css/pull/760) ([@shawnbot](https://github.com/shawnbot))\n- Add pink to Primer! 💖🌸💕🌷💞🎀💗🌺💝 [#776](https://github.com/primer/css/pull/776), [#778](https://github.com/primer/css/pull/778) ([@emplums](https://github.com/emplums)))\n\n### :house: Internal\n\n- Update storybook [#777](https://github.com/primer/css/pull/777) ([@emplums](https://github.com/emplums))\n- Add bundle size report [#772](https://github.com/primer/css/pull/772) ([@shawnbot](https://github.com/shawnbot))\n\n### :memo: Documentation\n\n- Update Primer references to Primer CSS [#771](https://github.com/primer/css/pull/771) ([@emplums](https://github.com/emplums))\n- Add Edit on GitHub links to docs [#770](https://github.com/primer/css/pull/770) ([@emplums](https://github.com/emplums))\n- Anchor Link in Docs [#768](https://github.com/primer/css/pull/768) ([@emplums](https://github.com/emplums))\n\n### :house: Internal\n\n- Update RELEASING [#757](https://github.com/primer/css/pull/757) ([@simurai](https://github.com/simurai))\n\n### Committers\n\n- [@emplums](https://github.com/emplums)\n- [@shawnbot](https://github.com/shawnbot)\n- [@simurai](https://github.com/simurai)\n\n# 12.2.3\n\n### :bug: Bug Fix\n\n- Remove references to a non-existent `Progress-value` class https://github.com/primer/css/pull/751\n\n### :house: Internal\n\n- Upgrade stylelint config https://github.com/primer/css/pull/753\n\n#### Committers: 1\n\n- Shawn Allen ([shawnbot](https://github.com/shawnbot))\n\n# 12.2.2\n\n### :bug: Bug Fix\n\n- Fix hide utilities when toggling between breakpoints [#746](https://github.com/primer/css/pull/746)\n\n### :house: Internal\n\n- Prevent Storybook publish failures from breaking builds on `main` [#728](https://github.com/primer/css/pull/728)\n- Upgrade to [cssstats v3.3.0](https://github.com/cssstats/cssstats/releases/tag/v3.3.0), which fixes our selector stats JSON files\n\n#### Committers: 2\n\n- Shawn Allen ([shawnbot](https://github.com/shawnbot))\n- Simurai ([simurai](https://github.com/simurai))\n\n# 12.2.1\n\n### :bug: Bug Fix\n\n- Fix source order of directional border utilities [#727](https://github.com/primer/css/pull/727)\n- Fix UnderlineNav selected border width [#733](https://github.com/primer/css/pull/733)\n\n### :memo: Documentation\n\n- Fix changelog committers listings for versions 12.0.1 and 12.0.2 [#729](https://github.com/primer/css/pull/729)\n- Fix code examples from being cut off [#725](https://github.com/primer/css/pull/725)\n\n#### Committers: 2\n\n- Shawn Allen ([shawnbot](https://github.com/shawnbot))\n- Simurai ([simurai](https://github.com/simurai))\n\n# 12.2.0\n\n### :rocket: Enhancement\n\n- Add more `.border-white-fade` utilities [#713](https://github.com/primer/css/pull/713)\n\n### :nail_care: Polish\n\n- Fix `<details>` spacing [#675](https://github.com/primer/css/pull/675)\n\n### :bug: Bug Fixes\n\n- Accessibility fixes for marketing buttons [#716](https://github.com/primer/css/pull/716)\n\n### :memo: Documentation\n\n- Fix scrolling of code examples [#717](https://github.com/primer/css/pull/717)\n\n### :house: Internal\n\n- Fix `npm link` ([#715](https://github.com/primer/css/issue/715)) by removing `prepare` npm script [#718](https://github.com/primer/css/pull/718)\n\n#### Committers: 4\n\n- Diana Mounter ([broccolini](https://github.com/broccolini))\n- Max Stoiber ([mxstbr](https://github.com/mxstbr))\n- Shawn Allen ([shawnbot](https://github.com/shawnbot))\n- Simurai ([simurai](https://github.com/simurai))\n\n# 12.1.1\n\n### :bug: Bug Fix\n\n- Remove UI from font file path [#709](https://github.com/primer/css/pull/709)\n\n### :memo: Documentation\n\n- Removes sync functionality from docs [#710](https://github.com/primer/css/pull/710)\n\n### :house: Internal\n\n- Fixes Storybook [#707](https://github.com/primer/css/pull/707) and [#711](https://github.com/primer/css/pull/711)\n\n#### Committers: 3\n\n- Catherine Bui ([gladwearefriends](https://github.com/gladwearefriends))\n- Shawn Allen ([shawnbot](https://github.com/shawnbot))\n- Emily Plummer ([emplums](https://github.com/emplums))\n\n# 12.1.0\n\n### :rocket: Enhancement\n\n- Per-axis overflow utilities [#701](https://github.com/primer/css/pull/701)\n- Add `0` to responsive marketing positioning utilities (`top-lg-0`, et al) [#697](https://github.com/primer/css/pull/697)\n- Add negative offset utilities to marketing/utilities/layout [#639](https://github.com/primer/css/pull/639)\n\n### :memo: Documentation\n\n- Fix changelog committers list for 12.0.2 (accidentally listed under 12.0.1)\n\n### :house: Internal\n\n- Remove a bunch of unused dev dependencies [#703](https://github.com/primer/css/pull/703)\n- Update `script/selector-diff-report` to compare against `@primer/css` (not `primer`!)\n\n#### Committers: 3\n\n- Catherine Bui ([gladwearefriends](https://github.com/gladwearefriends))\n- Shawn Allen ([shawnbot](https://github.com/shawnbot))\n- Tyson Rosage ([trosage](https://github.com/trosage))\n\n# 12.0.2\n\n### :bug: Bug fix\n\n- Restore missing marketing padding utilities [#695](https://github.com/primer/css/pull/695)\n\n### :memo: Documentation\n\n- Explain why `.tooltipped` should be used sparingly [#676](https://github.com/primer/css/pull/676)\n- Fix trailing slash errors in Next.js [#681](https://github.com/primer/css/pull/681)\n- Add static assets to Now deployments [#687](https://github.com/primer/css/pull/687)\n- Shiny new social and README header by @ashygee [#689](https://github.com/primer/css/pull/689)\n\n### :house: Internal\n\n- Remove `postversion` script from `package.json` and update the [PR template](https://github.com/primer/css/blob/main/RELEASING.md#in-this-repo)\n- Rename InterUI font to \"Inter\", per [inter v3.3](https://github.com/rsms/inter/releases/tag/v3.3) [#696](https://github.com/primer/css/pull/696)\n\n#### Committers: 4\n\n- Ash Guillaume ([ashygee](https://github.com/ashygee))\n- David Graham ([dgraham](https://github.com/dgraham))\n- Mu-An Chiou ([muan](https://github.com/muan))\n- Shawn Allen ([shawnbot](https://github.com/shawnbot))\n\n# 12.0.1\n\n### :bug: Bug Fix\n\n- Add missing `h000-mktg` class [#667](https://github.com/primer/css/pull/667)\n- Fix UnderlineNav overflow issues [#684](https://github.com/primer/css/pull/684)\n- Fix double borders on Box-header [#686](https://github.com/primer/css/pull/686)\n\n### :house: Internal\n\n- Add `postversion` npm script that commits `package.json` and `package-lock.json` with consistent commit messages (`chore: v<version>`)\n\n#### Committers: 2\n\n- Catherine Bui ([gladwearefriends](https://github.com/gladwearefriends))\n- Shawn Allen ([shawnbot](https://github.com/shawnbot))\n\n# 12.0.0\n\n:rotating_light: **Starting with version 12.0.0, the `primer` package is now known as `@primer/css`**. See [MIGRATING.md](https://github.com/primer/css/tree/main/MIGRATING.md) for more info.\n\n#### :boom: Breaking Change\n\n- [#666](https://github.com/primer/css/pull/666) Reorganize into a single `@primer/css` package ([@shawnbot](https://github.com/shawnbot))\n\n#### Committers: 2\n\n- Shawn Allen ([shawnbot](https://github.com/shawnbot))\n- Catherine Bui ([gladwearefriends](https://github.com/gladwearefriends))\n\n# 11.0.0\n\n#### :boom: Breaking Change\n\n- [#438](https://github.com/primer/primer/pull/438) Remove `primer-page-sections` package. ([@sophshep](https://github.com/sophshep))\n- [#439](https://github.com/primer/primer/pull/439) Remove `primer-page-headers` package. ([@sophshep](https://github.com/sophshep))\n- [#440](https://github.com/primer/primer/pull/440) Remove `primer-tables` package. ([@sophshep](https://github.com/sophshep))\n- [#459](https://github.com/primer/primer/pull/459) Move responsive position utilities from marketing to core. ([@sophshep](https://github.com/sophshep))\n- [#656](https://github.com/primer/primer/pull/656) Remove colorizeTooltip mixin. ([@shawnbot](https://github.com/shawnbot))\n- [#657](https://github.com/primer/primer/pull/657) Remove `BtnGroup-form` class. ([@shawnbot](https://github.com/shawnbot))\n- [#658](https://github.com/primer/primer/pull/658) Remove `.avatar-stack` in favor of `.AvatarStack`. ([@shawnbot](https://github.com/shawnbot))\n\n#### :rocket: Enhancement\n\n- [#583](https://github.com/primer/primer/pull/583) Updates to Marketing Typography. ([@sophshep](https://github.com/sophshep))\n- [#660](https://github.com/primer/primer/pull/660) Add `$marketing-font-path`. ([@shawnbot](https://github.com/shawnbot))\n- [#661](https://github.com/primer/primer/pull/661) Spacer variable refactor. ([@shawnbot](https://github.com/shawnbot))\n- [#663](https://github.com/primer/primer/pull/663) Add deprecation warning for column grid classes and add `container-sm` utility class. ([@jonrohan](https://github.com/jonrohan))\n\n#### :bug: Bug Fix\n\n- [#654](https://github.com/primer/primer/pull/654) Fix typo (\"Chroma\") in `primer-base` comment. ([@Jiang-Xuan](https://github.com/Jiang-Xuan))\n- [#655](https://github.com/primer/primer/pull/655) Fix typo (\"conditonally\") in `docs/src/SideNav.js` comment. ([@0xflotus](https://github.com/0xflotus))\n\n### :house: Internal\n\n- [#659](https://github.com/primer/primer/pull/659) Generate CSS selector diff report on Travis. ([@shawnbot](https://github.com/shawnbot))\n\n#### Committers: 4\n\n- 0xflotus ([0xflotus](https://github.com/0xflotus))\n- Jiang-Xuan ([Jiang-Xuan](https://github.com/Jiang-Xuan))\n- Jon Rohan ([jonrohan](https://github.com/jonrohan))\n- Shawn Allen ([shawnbot](https://github.com/shawnbot))\n- Sophie Shepherd ([sophshep](https://github.com/sophshep))\n\n# 10.10.5\n\n#### :bug: Bug Fix\n\n- [#650](https://github.com/primer/primer/pull/650) Fix border radius edge utility specificity. ([@shawnbot](https://github.com/shawnbot))\n\n#### :memo: Documentation\n\n- [#649](https://github.com/primer/primer/pull/649) Sandboxed code examples. ([@shawnbot](https://github.com/shawnbot))\n\n#### :house: Internal\n\n- Only check links on Travis if `[check-links]` is included in the commit message\n- a5658d3 Run `now alias` without the branch name on merge to `main`\n\n#### Committers: 1\n\n- Shawn Allen ([shawnbot](https://github.com/shawnbot))\n\n# 10.10.4\n\n#### :memo: Documentation\n\n- [#642](https://github.com/primer/primer/pull/642) docs: add Ash's new header illustration. ([@shawnbot](https://github.com/shawnbot))\n\n#### :house: Internal\n\n- [#641](https://github.com/primer/primer/pull/641) test(docs): improve style guide URL path test. ([@shawnbot](https://github.com/shawnbot))\n- [#635](https://github.com/primer/primer/pull/635) docs: Releases link, Status key page move. ([@shawnbot](https://github.com/shawnbot))\n\n#### Committers: 1\n\n- Shawn Allen ([shawnbot](https://github.com/shawnbot))\n\n# 10.10.3\n\n#### :memo: Documentation\n\n- [#632](https://github.com/primer/primer/pull/632) Happy new year! ([@shawnbot](https://github.com/shawnbot))\n- [#626](https://github.com/primer/primer/pull/626) Branch deployment, docs for the docs. ([@shawnbot](https://github.com/shawnbot))\n- [#616](https://github.com/primer/primer/pull/616) Start up the docs directory. ([@shawnbot](https://github.com/shawnbot))\n\n#### :house: Internal\n\n- [#631](https://github.com/primer/primer/pull/631) Docs release fixes. ([@shawnbot](https://github.com/shawnbot))\n\n#### Committers: 2\n\n- Emily Brick ([emilybrick](https://github.com/emilybrick))\n- Shawn Allen ([shawnbot](https://github.com/shawnbot))\n\n# 10.10.2\n\n#### :memo: Documentation\n\n- [#614](https://github.com/primer/primer/pull/614) fix broken border-radius helper example. ([@joelhawksley](https://github.com/joelhawksley))\n\n#### :house: Internal\n\n- [#615](https://github.com/primer/primer/pull/615) pin npm-run-all@4.1.5. ([@shawnbot](https://github.com/shawnbot))\n\n#### Committers: 2\n\n- Joel Hawksley ([joelhawksley](https://github.com/joelhawksley))\n- Shawn Allen ([shawnbot](https://github.com/shawnbot))\n\n# 10.10.1\n\n#### :memo: Documentation\n\n- [#606](https://github.com/primer/primer/pull/606) Fix for Progress Broken Package Link. ([@emilybrick](https://github.com/emilybrick))\n\n#### :house: Internal\n\n- [#608](https://github.com/primer/primer/pull/608) Update releasing docs. ([@shawnbot](https://github.com/shawnbot))\n\n#### Committers: 2\n\n- Emily Brick ([emilybrick](https://github.com/emilybrick))\n- Shawn Allen ([shawnbot](https://github.com/shawnbot))\n\n# 10.10.0\n\n#### :rocket: Enhancement\n\n- [#573](https://github.com/primer/primer/pull/573) Add Progress component. ([@emilybrick](https://github.com/emilybrick))\n- [#561](https://github.com/primer/primer/pull/561) Add HTML `hidden` attribute docs, increase `[hidden]` selector specificity. ([@shawnbot](https://github.com/shawnbot) h/t @jonrohan)\n\n#### :bug: Bug Fix\n\n- [#604](https://github.com/primer/primer/pull/604) Fix Button group focus ring z-index issues. ([@shawnbot](https://github.com/shawnbot))\n- [#570](https://github.com/primer/primer/pull/570) Make `.blankslate-narrow` responsive. ([@crhallberg](https://github.com/crhallberg))\n- [#591](https://github.com/primer/primer/pull/591) Add fs-extra to `primer-module-build.dependencies`. ([@shawnbot](https://github.com/shawnbot))\n\n#### :memo: Documentation\n\n- [#585](https://github.com/primer/primer/pull/585) Improve contributing docs and add DEVELOP.md. ([@shawnbot](https://github.com/shawnbot))\n\n#### :house: Internal\n\n- [#597](https://github.com/primer/primer/pull/597) Fix primerize, add \"fresh\" run-script, etc. ([@shawnbot](https://github.com/shawnbot))\n\n#### Committers: 3\n\n- Chris Hallberg ([crhallberg](https://github.com/crhallberg))\n- Emily Brick ([emilybrick](https://github.com/emilybrick))\n- Shawn Allen ([shawnbot](https://github.com/shawnbot))\n\n# 10.9.0\n\n#### :rocket: Enhancement\n\n- [#586](https://github.com/primer/primer/pull/586) Hiding .Counter component when it's empty.. ([@jonrohan](https://github.com/jonrohan))\n- [#545](https://github.com/primer/primer/pull/545) Simplify responsive utilities with \\$responsive-variants. ([@shawnbot](https://github.com/shawnbot))\n- [#557](https://github.com/primer/primer/pull/557) Add !important to [hidden]. ([@muan](https://github.com/muan))\n\n#### :memo: Documentation\n\n- [#580](https://github.com/primer/primer/pull/580) Remove invalid button classes. ([@shawnbot](https://github.com/shawnbot))\n\n#### :house: Internal\n\n- [#581](https://github.com/primer/primer/pull/581) Use code-blocks. ([@shawnbot](https://github.com/shawnbot))\n- [#530](https://github.com/primer/primer/pull/530) Adding user details to storybook publish script. ([@jonrohan](https://github.com/jonrohan))\n- [#579](https://github.com/primer/primer/pull/579) Upgrade to lerna@2.11, rebuild package-lock. ([@shawnbot](https://github.com/shawnbot))\n\n#### Committers: 5\n\n- Jon Rohan ([jonrohan](https://github.com/jonrohan))\n- Mickaël Derriey ([mderriey](https://github.com/mderriey))\n- Mu-An Chiou ([muan](https://github.com/muan))\n- Shawn Allen ([shawnbot](https://github.com/shawnbot))\n- Sophie Shepherd ([sophshep](https://github.com/sophshep))\n\n# 10.8.1\n\n#### :bug: Bug Fix\n\n- [#554](https://github.com/primer/primer/pull/554) Fixes peer dependency issues ([@emplums](https://github.com/emplums))\n\n#### :memo: Documentation\n\n- [#554](https://github.com/primer/primer/pull/554) Updates releasing documentation ([@emplums](https://github.com/emplums))\n\n#### :rocket: Enhancement\n\n- [#555](https://github.com/primer/primer/pull/555) Add version check to CI ([@shawnbot](https://github.com/shawnbot))\n\n# 10.8.0\n\n#### :rocket: Enhancement\n\n- [#525](https://github.com/primer/primer/pull/525) Add \\$spacer-0 alias. ([@AustinPaquette](https://github.com/AustinPaquette))\n- [#522](https://github.com/primer/primer/pull/522) Add .BtnGroup-parent, deprecate .BtnGroup-form. ([@muan](https://github.com/muan))\n- [#544](https://github.com/primer/primer/pull/544) Add lh-0 utility class. ([@shawnbot](https://github.com/shawnbot))\n- [#548](https://github.com/primer/primer/pull/548) Add text underline utility. ([@AustinPaquette](https://github.com/AustinPaquette))\n- [#549](https://github.com/primer/primer/pull/549) Add .user-select-none utility class. ([@AustinPaquette](https://github.com/AustinPaquette))\n\n#### :memo: Documentation\n\n- [#528](https://github.com/primer/primer/pull/528) Update release docs. ([@emplums](https://github.com/emplums))\n\n#### Committers: 3\n\n- Austin Paquette ([AustinPaquette](https://github.com/AustinPaquette))\n- Shawn Allen ([shawnbot](https://github.com/shawnbot))\n- Mu-An Chiou ([@muan](https://github.com/muan))\n- Emily Plummer ([@emplums](https://github.com/emplums))\n\n# 10.7.0\n\n#### :nail_care: Polish\n\n- [#511](https://github.com/primer/primer/pull/511) change double quotes to single quotes in Avatar stack stories. ([@AustinPaquette](https://github.com/AustinPaquette))\n\n#### :memo: Documentation\n\n- [#520](https://github.com/primer/primer/pull/520) Update issue templates. ([@broccolini](https://github.com/broccolini))\n- [#516](https://github.com/primer/primer/pull/516) Fix modules/primer-product/README.md. ([@9585999](https://github.com/9585999))\n- [#513](https://github.com/primer/primer/pull/513) Deleting the dev branch workflow instructions. ([@jonrohan](https://github.com/jonrohan))\n- [#507](https://github.com/primer/primer/pull/507) Moving the color docs to the style guide. ([@jonrohan](https://github.com/jonrohan))\n\n#### :house: Internal\n\n- [#517](https://github.com/primer/primer/pull/517) Modifying notify script to publish from each package. ([@jonrohan](https://github.com/jonrohan))\n- [#515](https://github.com/primer/primer/pull/515) Auto publish storybook. ([@jonrohan](https://github.com/jonrohan))\n- [#510](https://github.com/primer/primer/pull/510) [WIP] Patch release 10.6.2. ([@shawnbot](https://github.com/shawnbot))\n\n#### Committers: 5\n\n- Austin Paquette ([AustinPaquette](https://github.com/AustinPaquette))\n- Diana Mounter ([broccolini](https://github.com/broccolini))\n- DieGOs ([9585999](https://github.com/9585999))\n- Jon Rohan ([jonrohan](https://github.com/jonrohan))\n- Shawn Allen ([shawnbot](https://github.com/shawnbot))\n\n# 10.6.1\n\n#### :bug: Bug Fix\n\n- [#506](https://github.com/primer/primer/pull/506) Fix white border on last avatar in AvatarStack (take two). ([@shawnbot](https://github.com/shawnbot))\n- [#501](https://github.com/primer/primer/pull/501) Set different z-index for .details-overlay. ([@muan](https://github.com/muan))\n\n#### Committers: 2\n\n- Shawn Allen ([shawnbot](https://github.com/shawnbot))\n- [muan](https://github.com/muan)\n\n# 10.6.0\n\n#### :bug: Bug Fix\n\n- [#491](https://github.com/primer/primer/pull/491) Add `backface-visibility` to `.hover-grow`. ([@brandonrosage](https://github.com/brandonrosage))\n\n#### :memo: Documentation\n\n- [#490](https://github.com/primer/primer/pull/490) Add release documentation. ([@emplums](https://github.com/emplums))\n\n#### :house: Internal\n\n- [#475](https://github.com/primer/primer/pull/475) Import primer-module-build to the monorepo. ([@shawnbot](https://github.com/shawnbot))\n- [#479](https://github.com/primer/primer/pull/479) Add \"scoreboard\" test suite. ([@shawnbot](https://github.com/shawnbot))\n\n#### Committers: 4\n\n- Brandon Rosage ([brandonrosage](https://github.com/brandonrosage))\n- Emily ([emplums](https://github.com/emplums))\n- Shawn Allen ([shawnbot](https://github.com/shawnbot))\n- [muan](https://github.com/muan)\n\n# 10.5.0\n\n#### :rocket: Enhancement\n\n- [#487](https://github.com/primer/primer/pull/487) Import Pagination Component. ([@emplums](https://github.com/emplums))\n- [#474](https://github.com/primer/primer/pull/474) Add text-mono utility class. ([@emplums](https://github.com/emplums))\n- [#456](https://github.com/primer/primer/pull/456) Adding height-fit utility class. ([@jonrohan](https://github.com/jonrohan))\n\n#### :bug: Bug Fix\n\n- [#465](https://github.com/primer/primer/pull/465) Fix Popover--right-bottom caret positioning. ([@shawnbot](https://github.com/shawnbot))\n- [#458](https://github.com/primer/primer/pull/458) Fix broken pointer from packages to modules. ([@tysongach](https://github.com/tysongach))\n\n#### :memo: Documentation\n\n- [#486](https://github.com/primer/primer/pull/486) Documenting the text-inheritance color utility. ([@jonrohan](https://github.com/jonrohan))\n- [#481](https://github.com/primer/primer/pull/481) Styleguide Polish. ([@emplums](https://github.com/emplums))\n- [#464](https://github.com/primer/primer/pull/464) Fix markdown stories. ([@shawnbot](https://github.com/shawnbot))\n- [#455](https://github.com/primer/primer/pull/455) Add colorizeTooltip deprecation warning. ([@jonrohan](https://github.com/jonrohan))\n- [#452](https://github.com/primer/primer/pull/452) Update dead links in CONTRIBUTING.md. ([@agisilaos](https://github.com/agisilaos))\n\n#### Committers: 7\n\n- Agisilaos Tsaraboulidis ([agisilaos](https://github.com/agisilaos))\n- Catherine Bui ([gladwearefriends](https://github.com/gladwearefriends))\n- Emily ([emplums](https://github.com/emplums))\n- Jon Rohan ([jonrohan](https://github.com/jonrohan))\n- Shawn Allen ([shawnbot](https://github.com/shawnbot))\n- Tyson Gach ([tysongach](https://github.com/tysongach))\n- [muan](https://github.com/muan)\n\n# 10.4.0 (2018-03-14)\n\n#### :rocket: Enhancement\n\n- [#456](https://github.com/primer/primer/pull/456) Adding height-fit utility class. ([@jonrohan](https://github.com/jonrohan))\n\n#### :memo: Documentation\n\n- [#455](https://github.com/primer/primer/pull/455) Add colorizeTooltip deprecation warning. ([@jonrohan](https://github.com/jonrohan))\n- [#452](https://github.com/primer/primer/pull/452) Update dead links in CONTRIBUTING.md. ([@agisilaos](https://github.com/agisilaos))\n\n#### Committers: 3\n\n- Agisilaos Tsaraboulidis ([agisilaos](https://github.com/agisilaos))\n- Jon Rohan ([jonrohan](https://github.com/jonrohan))\n- [muan](https://github.com/muan)\n\n# 10.3.0 (2018-01-17)\n\n#### :rocket: Enhancement\n\n- [#426](https://github.com/primer/primer/pull/426) Add em spacer variables. ([@broccolini](https://github.com/broccolini))\n- [#430](https://github.com/primer/primer/pull/430) Increase input font-size to 16px on mobile. ([@broccolini](https://github.com/broccolini))\n\n#### :bug: Bug Fix\n\n- [#416](https://github.com/primer/primer/pull/416) Point style field to build file in subhead component. ([@muan](https://github.com/muan))\n- [#424](https://github.com/primer/primer/pull/424) Add missing $spacer-12 in $marketingSpacers variable. ([@gladwearefriends](https://github.com/gladwearefriends))\n\n#### :nail_care: Polish\n\n- [#418](https://github.com/primer/primer/pull/418) Button color contrast improvements. ([@broccolini](https://github.com/broccolini))\n\n#### :memo: Documentation\n\n- [#427](https://github.com/primer/primer/pull/427) Adding stories from markdown for the other modules that didn't have any stories. ([@jonrohan](https://github.com/jonrohan))\n\n#### :house: Internal\n\n- [#420](https://github.com/primer/primer/pull/420) Update licenses to 2018 🎊. ([@jonrohan](https://github.com/jonrohan))\n\n#### Committers: 4\n\n- Catherine Bui ([gladwearefriends](https://github.com/gladwearefriends))\n- Diana Mounter ([broccolini](https://github.com/broccolini))\n- Jon Rohan ([jonrohan](https://github.com/jonrohan))\n- [muan](https://github.com/muan)\n\n# 10.2.0 (2017-12-11)\n\n#### :rocket: Enhancement\n\n- [#376](https://github.com/primer/primer/pull/376) Extend spacing scale for marketing. ([@gladwearefriends](https://github.com/gladwearefriends))\n- [#409](https://github.com/primer/primer/pull/409) Add Sass key to package.json. ([@broccolini](https://github.com/broccolini))\n- [#358](https://github.com/primer/primer/pull/358) automatically style first and last breadcrumb. ([@gronke](https://github.com/gronke))\n- [#394](https://github.com/primer/primer/pull/394) Point style field to built css. ([@koddsson](https://github.com/koddsson))\n\n#### :memo: Documentation\n\n- [#411](https://github.com/primer/primer/pull/411) Updates to stylelint package links/docs for new structure. ([@jonrohan](https://github.com/jonrohan))\n\n#### Committers: 4\n\n- Catherine Bui ([gladwearefriends](https://github.com/gladwearefriends))\n- Diana Mounter ([broccolini](https://github.com/broccolini))\n- Jon Rohan ([jonrohan](https://github.com/jonrohan))\n- Kristján Oddsson ([koddsson](https://github.com/koddsson))\n- Stefan Grönke ([gronke](https://github.com/gronke))\n\n# 10.1.0 (2017-11-15)\n\n#### :rocket: Enhancement\n\n- [#385](https://github.com/primer/primer/pull/385) New Avatar stack. ([@califa](https://github.com/califa) & [@sophshep](https://github.com/sophshep))\n- [#404](https://github.com/primer/primer/pull/404) Tooltip component updates ([@broccolini](https://github.com/broccolini))\n\n#### :memo: Documentation\n\n- [#405](https://github.com/primer/primer/pull/405) Add deprecation warning for `.avatar-stack`. ([@jonrohan](https://github.com/jonrohan))\n- [#391](https://github.com/primer/primer/pull/391) Update shields.io url to https. ([@NuttasitBoonwat](https://github.com/NuttasitBoonwat))\n\n#### Committers: 5\n\n- Diana Mounter ([broccolini](https://github.com/broccolini))\n- Joel Califa ([califa](https://github.com/califa))\n- Jon Rohan ([jonrohan](https://github.com/jonrohan))\n- Sophie Shepherd ([sophshep](https://github.com/sophshep))\n- [NuttasitBoonwat](https://github.com/NuttasitBoonwat)\n\n# 10.0.1 (2017-11-14)\n\n#### :bug: Bug Fix\n\n- Fixing `peerDependencies` to be greater than equal to versions. Fixing version mismatch with buttons and box.\n\n# 10.0.0 (2017-11-13)\n\n#### :boom: Breaking Change\n\n- [#395](https://github.com/primer/primer/pull/395) Renaming primer-css to primer. ([@jonrohan](https://github.com/jonrohan))\n- [#379](https://github.com/primer/primer/pull/379) Deprecating primer-cards and form-cards. ([@jonrohan](https://github.com/jonrohan))\n- [#336](https://github.com/primer/primer/pull/336) Move `primer-breadcrumbs` from marketing to core ([@jonrohan](<(https://github.com/jonrohan)>)\n\n#### :rocket: Enhancement\n\n- [#371](https://github.com/primer/primer/pull/371) Add .details-reset. ([@muan](https://github.com/muan))\n- [#375](https://github.com/primer/primer/pull/375) New utilities & docs - fade out, hover grow, border white fade, responsive positioning, and circle. ([@sophshep](https://github.com/sophshep))\n- [#383](https://github.com/primer/primer/pull/383) Add 'Popover' component. ([@brandonrosage](https://github.com/brandonrosage))\n- [#377](https://github.com/primer/primer/pull/377) Refactor and add underline nav component. ([@ampinsk](https://github.com/ampinsk))\n- [#337](https://github.com/primer/primer/pull/337) Add marketing buttons to primer-marketing. ([@gladwearefriends](https://github.com/gladwearefriends))\n- [#342](https://github.com/primer/primer/pull/342) Add Subhead component. ([@shawnbot](https://github.com/shawnbot))\n- [#341](https://github.com/primer/primer/pull/341) Add branch-name component from github/github. ([@shawnbot](https://github.com/shawnbot))\n\n#### :bug: Bug Fix\n\n- [#360](https://github.com/primer/primer/pull/360) Remove ::before ::after padding hack on markdown. ([@jonrohan](https://github.com/jonrohan))\n- [#320](https://github.com/primer/primer/pull/320) Remove -webkit-text-decoration-skip override. ([@antons](https://github.com/antons))\n- [#359](https://github.com/primer/primer/pull/359) Change markdown li break to handle Safari 10.x user stylesheet bug. ([@feministy](https://github.com/feministy))\n- [#388](https://github.com/primer/primer/pull/388) Button border-radius fix to override Chroma 62. ([@broccolini](https://github.com/broccolini))\n- [#307](https://github.com/primer/primer/pull/307) Do not suppress opacity transition for tooltipped-no-delay. ([@astorije](https://github.com/astorije))\n\n#### :house: Internal\n\n- [#396](https://github.com/primer/primer/pull/396) Use lerna-changelog to generate a changelog. ([@jonrohan](https://github.com/jonrohan))\n- [#382](https://github.com/primer/primer/pull/382) Update Button docs. ([@JasonEtco](https://github.com/JasonEtco))\n- [#390](https://github.com/primer/primer/pull/390) Updating `storiesFromMarkdown` to read in rails Octicons helper and replace with react component. ([@jonrohan](https://github.com/jonrohan))\n- [#389](https://github.com/primer/primer/pull/389) Publish alpha release any time we're not on a release branch or main. ([@jonrohan](https://github.com/jonrohan))\n- [#384](https://github.com/primer/primer/pull/384) Add test to check for the current year in the license and source. ([@jonrohan](https://github.com/jonrohan))\n- [#374](https://github.com/primer/primer/pull/374) Improve Pull Request template. ([@agisilaos](https://github.com/agisilaos))\n\n#### Committers: 13\n\n- Agisilaos Tsaraboulidis ([agisilaos](https://github.com/agisilaos))\n- Amanda Pinsker ([ampinsk](https://github.com/ampinsk))\n- Anton Sotkov ([antons](https://github.com/antons))\n- Brandon Rosage ([brandonrosage](https://github.com/brandonrosage))\n- Catherine Bui ([gladwearefriends](https://github.com/gladwearefriends))\n- Diana Mounter ([broccolini](https://github.com/broccolini))\n- Jason Etcovitch ([JasonEtco](https://github.com/JasonEtco))\n- Jon Rohan ([jonrohan](https://github.com/jonrohan))\n- Jérémie Astori ([astorije](https://github.com/astorije))\n- Mu-An ✌️ Chiou ([muan](https://github.com/muan))\n- Shawn Allen ([shawnbot](https://github.com/shawnbot))\n- Sophie Shepherd ([sophshep](https://github.com/sophshep))\n- liz abinante! ([feministy](https://github.com/feministy))\n\n**Special thanks to @shaharke for transferring ownership of the Primer npm package to us so that we could make the rename happen!** :heart:\n\n# 9.6.0\n\n### Added\n\n- Storybook. We've added a storybook prototyping environment for testing components in seclusion. To start the server run `npm start`\n- Adding yeoman generator for creating a primer module. `generator-primer-module`\n- Importing `stylelint-config-primer` from https://github.com/primer/stylelint-config/ into monorepo.\n- Importing `stylelint-selector-no-utility` from https://github.com/primer/stylelint-selector-no-utility into monorepo.\n\n### Changes\n\n- Deployment and publishing scripts refinements.\n\n# 9.5.0\n\n### Added\n\n- It's now possible to style `<summary>` elements as buttons and have them appear in the active/selected state when the enclosing [`<details>` element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/details) is open. #346\n\n### Changes\n\n- Updates our release candidate versioning logic so that prerelease increments are done on a per-module basis, fixing #350.\n\n# 9.4.0\n\n### Added\n\n- Add `v-align-baseline` class to `primer-utilities` #324\n- Add deprecation warnings for `primer-cards` and `primer-forms/lib/form-validation.scss` #347 (these will be removed in v10.0.0)\n\n### Changes\n\n- Update npm metadata for `primer`, `primer-core`, `primer-product`, and `primer-marketing` #328\n- Remove `HEAD` heading from the changelog #327\n\n# 9.3.0\n\n## Added\n\n- Docs for `primer-layout` (grid), `primer-support`, `primer-utilities`, and `primer-marketing-utilities`\n- Primer keys for `category` and `module_type` to `package.json` (for use in documentation and gathering stats)\n\n## Changes\n\n- Removes `docs` from `gitignore`\n- Removes the `^` from all dependencies so that we can publish exact versions\n- Consolidates release notes from various sources into one changelog located in `/modules/primer/CHANGELOG.md`\n\n# 9.2.0\n\n## Added\n\n- Add `test-docs` npm script in each module to check that every CSS class is documented (or at least mentioned) in the module's own markdown docs\n\n## Changes\n\n- Remove per-module configurations (`.gitignore`, `.postcss.json`, `.stylelintrc.json`) and `CHANGELOG.md` files in #284\n- Replace most static `font-size`, `font-weight`, and `line-height` CSS property values with their [SCSS variable equivalents](https://github.com/primer/primer/blob/c9ea37316fbb73c4d9931c52b42bc197260c0bf6/modules/primer-support/lib/variables/typography.scss#L12-L33) in #252\n- Refactor CI scripts to use Travis conditional deployment for release candidate and final release publish steps in #290\n\n# 9.1.1\n\nThis release updates primer modules to use variables for spacing units instead of pixel values.\n\n## Changes\n\n- primer-alerts: 1.2.0 => 1.2.1\n- primer-avatars: 1.1.0 => 1.1.1\n- primer-base: 1.2.0 => 1.2.1\n- primer-blankslate: 1.1.0 => 1.1.1\n- primer-box: 2.2.0 => 2.2.1\n- primer-breadcrumb: 1.1.0 => 1.1.1\n- primer-buttons: 2.1.0 => 2.1.1\n- primer-cards: 0.2.0 => 0.2.1\n- primer-core: 6.1.0 => 6.1.1\n- primer-css: 9.1.0 => 9.1.1\n- primer-forms: 1.1.0 => 1.1.1\n- primer-labels: 1.2.0 => 1.2.1\n- primer-layout: 1.1.0 => 1.1.1\n- primer-markdown: 3.4.0 => 3.4.1\n- primer-marketing-type: 1.1.0 => 1.1.1\n- primer-marketing-utilities: 1.1.0 => 1.1.1\n- primer-marketing: 5.1.0 => 5.1.1\n- primer-navigation: 1.1.0 => 1.1.1\n- primer-page-headers: 1.1.0 => 1.1.1\n- primer-page-sections: 1.1.0 => 1.1.1\n- primer-product: 5.1.0 => 5.1.1\n- primer-support: 4.1.0 => 4.1.1\n- primer-table-object: 1.1.0 => 1.1.1\n- primer-tables: 1.1.0 => 1.1.1\n- primer-tooltips: 1.1.0 => 1.1.1\n- primer-truncate: 1.1.0 => 1.1.1\n- primer-utilities: 4.4.0 => 4.4.1\n\n# 9.1.0\n\nThis release updates our [stylelint config](/primer/stylelint-config-primer) to [v2.0.0](https://github.com/primer/stylelint-config/releases/tag/v2.0.0), and to stylelint v7.13.0. Each module also now has a `lint` npm script, and there are top-level `test` and `lint` scripts that you can use to lint and test all modules in one go.\n\nThis release also includes major improvements to our Travis build scripts to automatically publish PR builds, release candidates, and the \"final\" versions to npm.\n\n# 9.0.0 - Core dependency & repo urls\n\nWe discovered that `primer-core` specified and outdated version of `primer-base` in it's dependencies. The outdated version did not have `normalize.scss` included which could cause some issues. This has issue occurred during v7.0.0 when creating the new monorepo. Also fixes repo urls in `package.json` for individual packages.\n\nSee PR [#243](https://github.com/primer/primer/pull/243)\n\n## Changes\n\n### Primer Core v6.0.0\n\n- Fixed `primer-base` dependency to point to latest version\n\n**Repo urls corrected from `packages` to `modules` in:**\n\n- primer-base v1.1.5\n- primer-box v2.1.8\n- primer-buttons v2.0.6\n- primer-forms v1.0.13\n- primer-layout v1.0.5\n- primer-navigation v1.0.6\n- primer-support v4.0.7\n- primer-table-object v1.0.9\n- primer-tooltips v1.0.2\n- primer-truncate v1.0.2\n- primer-utilities v4.3.5\n\n### Primer Product v5.0.2\n\n**Repo urls corrected from `packages` to `modules` in:**\n\n- primer-alerts v1.1.8\n- primer-avatars v1.0.2\n- primer-blankslate v1.0.2\n- primer-labels v1.1.6\n- primer-markdown v3.3.13\n- primer-support v4.0.7\n\n### Primer Marketing v5.0.2\n\n**Repo urls corrected from `packages` to `modules` in:**\n\n- primer-breadcrumb v1.0.2\n- primer-cards v0.1.8\n- primer-marketing-support v1.0.2\n- primer-marketing-type v1.0.2\n- primer-marketing-utilities v1.0.2\n- primer-page-headers v1.0.2\n- primer-page-sections v1.0.2\n- primer-support v4.0.7\n- primer-tables v1.0.2\n\n# 8.0.0 - Imports\n\nFixes issues with the ordering of imports in each of our meta-packages. See PR [#239](https://github.com/primer/primer/pull/239)\n\n## Changes\n\n### Primer Core v5.0.1\n\n- Re-ordered imports in `index.scss` to ensure utilities come last in the cascade\n\n### Primer Product v5.0.1\n\n- Re-ordered imports in `index.scss` to move markdown import to end of list to match former setup in GitHub.com\n\n### Primer Marketing v5.0.1\n\n- Re-ordered imports in `index.scss` to ensure marketing utilities come last in the cascade\n\n# 7.0.0 - Monorepo\n\nIn an effort to improve our publishing workflow we turned Primer into a monorepo, made this repo the source of truth for Primer by removing Primer modules from GitHub, and setup Lerna for managing multiple packages and maintaining independent versioning for all our modules.\n\nThis is exciting because:\n\n- we can spend less time hunting down the cause of a broken build and more time focussing on making Primer more useful and robust for everyone to use\n- we can be more confident that changes we publish won't cause unexpected problems on GitHub.com and many other GitHub websites that use Primer\n- we no longer have files like package.json, scripts, and readme's in the GitHub app that don't really belong there\n- **we can accept pull requests from external contributors** again!\n\nSee PR for more details on this change: https://github.com/primer/primer/pull/230\n\n## Other changes:\n\n### Primer Core v4.0.3\n\n#### primer-support v4.0.5\n\n- Update fade color variables to use rgba instead of transparentize color function for better Sass readability\n- Update support variables and mixins to use new color variables\n\n#### primer-layout v1.0.3\n\n- Update grid gutter styles naming convention and add responsive modifiers\n- Deprecate `single-column` and `table-column` from layout module\n- Remove `@include clearfix` from responsive container classes\n\n#### primer-utilities v4.3.3\n\n- Add `show-on-focus` utility class for accessibility\n- Update typography utilities to use new color variables\n- Add `.p-responsive` class\n\n#### primer-base v1.1.3\n\n- Update `b` tag font weight to use variable in base styles\n\n### Primer Marketing v4.0.3\n\n#### primer-tables\n\n- Update marketing table colors to use new variables\n\n# 6.0.0\n\n- Add `State--small` to labels module\n- Fix responsive border utilities\n- Added and updated typography variables and mixins; updated variables used in typography utilities; updated margin, padding, and typography readmes\n- Darken `.box-shadow-extra-large` shadow\n- Update `.tooltip-multiline` to remove `word-break: break-word` property\n- Add `.border-purple` utility class\n- Add responsive border utilities to primer-marketing\n- Add `ws-normal` utility for `whitespace: normal`\n- Updated syntax and classnames for `Counters` and `Labels`, moved into combined module with states.\n\n# 5.1.0\n\n- Add negative margin utilities\n- Move `.d-flex` & `.d-flex-inline` to be with other display utility classes in `visibility-display.scss`\n- Delete `.shade-gradient` in favor of `.bg-shade-gradient`\n- Removed alt-body-font variable from primer-marketing\n- Removed un-used `alt` typography styles from primer-marketing\n- Add green border utility\n\n# 5.0.0\n\n- Added new border variable and utility, replaced deprecated flash border variables\n- Updated variable name in form validation\n- Updated `.sr-only` to not use negative margin\n- Added and removed border variables and utilities\n- Add filter utility to Primer Marketing\n- Removed all custom color variables within Primer-marketing in favor of the new color system\n- Updated style for form group error display so it is positioned properly\n- Updated state closed color and text and background pending utilities\n- Removed local font css file from primer-marketing/support\n- Updated all color variables and replaced 579 hex refs across modules with new variables, added additional shades to start introducing a new color system which required updating nearly all primer modules\n- Added layout utility `.sr-only` for creating screen reader only elements\n- Added `.flex{-infix}-item-equal` utilities for creating equal width and equal height flex items.\n- Added `.flex{-infix}-row-reverse` utility for reversing rows of content\n- Updated `.select-menu-button-large` to use `em` units for sizing of the CSS triangle.\n- Added `.box-shadow-extra-large` utility for large, diffused shadow\n- Updated: removed background color from markdown body\n- Updated: remove background on the only item in an avatar stack\n- Added form utility `.form-checkbox-details` to allow content to be shown/hidden based on a radio button being checked\n- Added form utility to override Webkit's incorrect assumption of where to try to autofill contact information\n\n# 4.7.0\n\n- Update primer modules to use bold variable applying `font-weight: 600`\n\n# 4.6.0\n\n- Added `CircleBadge` component for badge-like displays within product/components/avatars\n- Added Box shadow utilities `box-shadow`, `box-shadow-medium`, `box-shadow-large`, `box-shadow-none`\n- Moved visibility and display utilities to separate partial at the end of the imports list, moved flexbox to it's own partial\n- Added `flex-shrink-0` to address Flexbox Safari bug\n- Updated: Using spacing variables in the `.flash` component\n- Updated Box component styles and documentation\n- Added `.wb-break-all` utility\n\n# 4.4.0\n\n- Adding primer-marketing module to primer\n- Added red and blue border color variables and utilities\n- Updated: `$spacer-5` has been changed to `32px` from `36px`\n- Updated: `$spacer-6` has been changed to `40px` from `48px`\n- Deprecated `link-blue`, updated `link-gray` and `link-gray-dark`, added `link-hover-blue` - Updated: blankslate module to use support variables for sizing\n\n# 4.3.0\n\n- Renamed `.flex-table` to `.TableObject`\n- Updated: `$spacer-1` has been changed to `4px` from `3px`\n- Updated: `$spacer-2` has been changed to `6px` from `8px`\n- Added: `.text-shadow-dark` & `.text-shadow-light` utilities\n- Updated: Moved non-framework CSS out of Primer modules. Added `box.scss` to `primer-core`. Added `discussion-timeline.scss` to `primer-product`, and moved `blob-csv.scss` into `/primer-product/markdown` directory\n- Added: Flex utilities\n- Refactor: Site typography to use Primer Marketing styles\n- Added: `.list-style-none` utility\n- Refactor: Button groups into some cleaner CSS\n- Updated: Reorganizing how we separate primer-core, primer-product, primer-marketing css\n\n# 4.2.0\n\n- Added: Responsive styles for margin and padding utilities, display, float, and new responsive hide utility, and updates to make typography responsive\n- Added: new container styles and grid styles with responsive options\n- Added: updated underline nav styles\n- Deprecate: Deprecating a lot of color and layout utilities\n- Added: More type utilities for different weights and larger sizes.\n- Added: Well defined browser support\n\n# 4.1.0\n\n- Added: [primer-markdown](https://github.com/primer/markdown) to the build\n- Fixes: Pointing \"style\" package.json to `build/build.css` file.\n- Added: Update font stack to system fonts\n- Added: Updated type scale as part of system font update\n- Added: `.Box` component for replacing boxed groups, simple box, and table-list styles\n- Added: New type utilities for headings and line-height\n- Deprecated: `vertical-middle` was replaced with `v-align-middle`.\n- Added: Layout utilities for vertical alignment, overflow, width and height, visibility, and display table\n- Added: Changing from font icons to SVG\n\n# 4.0.2\n\n- Added npm build scripts to add `build/build.css` to the npm package\n\n# 4.0.1\n\n- Fixed: missing primer-layout from build\n\n# 4.0.0\n\n- Whole new npm build system, pulling in the code from separate component repos\n\n# 3.0.0\n\n- Added: Animation utilities\n- Added: Whitespace scale, and margin and padding utilities\n- Added: Border utilities\n"
  },
  {
    "path": "CODE_OF_CONDUCT.md",
    "content": "# Contributor Covenant Code of Conduct\n\n## Our Pledge\n\nIn the interest of fostering an open and welcoming environment, we as\ncontributors and maintainers pledge to making participation in our project and\nour community a harassment-free experience for everyone, regardless of age, body\nsize, disability, ethnicity, sex characteristics, gender identity and expression,\nlevel of experience, education, socio-economic status, nationality, personal\nappearance, race, religion, or sexual identity and orientation.\n\n## Our Standards\n\nExamples of behavior that contributes to creating a positive environment\ninclude:\n\n* Using welcoming and inclusive language\n* Being respectful of differing viewpoints and experiences\n* Gracefully accepting constructive criticism\n* Focusing on what is best for the community\n* Showing empathy towards other community members\n\nExamples of unacceptable behavior by participants include:\n\n* The use of sexualized language or imagery and unwelcome sexual attention or\n advances\n* Trolling, insulting/derogatory comments, and personal or political attacks\n* Public or private harassment\n* Publishing others' private information, such as a physical or electronic\n address, without explicit permission\n* Other conduct which could reasonably be considered inappropriate in a\n professional setting\n\n## Our Responsibilities\n\nProject maintainers are responsible for clarifying the standards of acceptable\nbehavior and are expected to take appropriate and fair corrective action in\nresponse to any instances of unacceptable behavior.\n\nProject maintainers have the right and responsibility to remove, edit, or\nreject comments, commits, code, wiki edits, issues, and other contributions\nthat are not aligned to this Code of Conduct, or to ban temporarily or\npermanently any contributor for any behavior that they deem inappropriate,\nthreatening, offensive, or harmful.\n\n## Scope\n\nThis Code of Conduct applies both within project spaces and in public spaces\nwhen an individual is representing the project or its community. Examples of\nrepresenting a project or community include using an official project e-mail\naddress, posting via an official social media account, or acting as an appointed\nrepresentative at an online or offline event. Representation of a project may be\nfurther defined and clarified by project maintainers.\n\n## Enforcement\n\nInstances of abusive, harassing, or otherwise unacceptable behavior may be\nreported by contacting the project team at emilybrick@github.com. All\ncomplaints will be reviewed and investigated and will result in a response that\nis deemed necessary and appropriate to the circumstances. The project team is\nobligated to maintain confidentiality with regard to the reporter of an incident.\nFurther details of specific enforcement policies may be posted separately.\n\nProject maintainers who do not follow or enforce the Code of Conduct in good\nfaith may face temporary or permanent repercussions as determined by other\nmembers of the project's leadership.\n\n## Attribution\n\nThis Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,\navailable at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html\n\n[homepage]: https://www.contributor-covenant.org\n\nFor answers to common questions about this code of conduct, see\nhttps://www.contributor-covenant.org/faq\n"
  },
  {
    "path": "CONTRIBUTING.md",
    "content": "## Contributing\n\n> [!WARNING] \n> **This project is in KTLO mode!** New features, functionalities, or major enhancements are unlikely to be accepted. Use existing utility classes from this project where needed. For more complete patterns that include styling and markup, please use [primer/react](https://github.com/primer/react) or, if necessary, [primer/view_components](https://github.com/primer/view_components).\n\nHi there! We're thrilled that you'd like to contribute to this project. Your help is essential for keeping it great.\n\n## Using the issue tracker\n\nThe issue tracker is the preferred channel for [bug reports](#bug-reports), [features requests](#feature-requests) and [submitting pull requests](#pull-requests), but please respect the following restrictions:\n\n* Please **do not** use the issue tracker for personal support requests.\n* Please **do not** derail or troll issues. Keep the discussion on topic and respect the opinions of others.\n\n## Bug reports\n\nA bug is a _demonstrable problem_ that is caused by the code in the repository. Good bug reports are extremely helpful, so thanks!\n\nGuidelines for bug reports:\n\n1. **Validate and lint your code** &mdash; [validate your HTML](http://html5.validator.nu) to ensure your problem isn't caused by a simple error in your own code.\n\n2. **Use the GitHub issue search** &mdash; check if the issue has already been reported.\n\n3. **Check if the issue has been fixed** &mdash; try to reproduce it using the latest `main` branch in the repository.\n\n4. **Isolate the problem** &mdash; ideally create a [reduced test case](https://css-tricks.com/reduced-test-cases/) and a live example.\n\nA good bug report shouldn't leave others needing to chase you up for more information. Please try to be as detailed as possible in your report. What is your environment? What steps will reproduce the issue? What browser(s) and OS experience the problem? Do other browsers show the bug differently? What would you expect to be the outcome? All these details will help people to fix any potential bugs.\n\nExample:\n\n> Short and descriptive example bug report title\n>\n> A summary of the issue and the browser/OS environment in which it occurs. If\n> suitable, include the steps required to reproduce the bug.\n>\n> 1. This is the first step\n> 2. This is the second step\n> 3. Further steps, etc.\n>\n> `<url>` - a link to the reduced test case\n>\n> Any other information you want to share that is relevant to the issue being reported. This might include the lines of code that you have identified as causing the bug, and potential solutions (and your opinions on their merits).\n\n## Feature requests\n\nFeature requests are welcome, but take a moment to find out whether your idea fits with the scope and aims of the project. It's up to *you* to make a strong case to convince the project's developers of the merits of this feature. Please provide as much detail and context as possible.\n\n## Pull requests\n\nGood pull requests—patches, improvements, new features—are a fantastic help. They should remain focused in scope and avoid containing unrelated commits.\n\n**Please ask first** before embarking on any significant pull request (e.g. implementing features, refactoring code, porting to a different language), otherwise you risk spending a lot of time working on something that the project's developers might not want to merge into the project.\n\n### Updating Primer CSS\n\nAnyone can open a pull request on Primer CSS. You do not need to work at GitHub or be a member of the org to open a pull request.\n\n1. Fork and clone [this repository](https://github.com/primer/css).\n2. Configure and install the dependencies: `npm install`\n3. Create a new branch from main `git checkout -b my-branch-name`\n4. Make your changes and commit them.\n5. Create a changeset for your changes: `npx changeset`\n    - See [changesets/changesets](https://github.com/changesets/changesets) for more information.\n6. Push your branch and open a pull request. Add a comment describing your proposed changes and request a review from `@primer/css-reviewers`.\n7. Wait for CI tests to finish.\n   - If the tests pass, you should see a status check telling you which alpha version of `@primer/css` you can install with npm to test your work in other projects.\n   - If the tests fail, review the logs and address any issues.\n   - If the builds fail for any other reason (as they occasionally do), they may need to be manually restarted.\n8. When CI tests pass, a new npm alpha release will be posted under the CI checks, you can use this npm version for testing in your project or with a GitHub site if you are staff.\n9. Pat yourself on the back and wait for your pull request to be reviewed.\n\nHere are a few things you can do that will increase the likelihood of your pull request being accepted:\n\n- Keep your change as focused as possible. If there are multiple changes you would like to make that are not dependent upon each other, consider submitting them as separate pull requests.\n- Write a [good commit message](http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html).\n\n## Releasing a new Primer CSS version\nSee [RELEASING.md](RELEASING.md) for our release process.\n\n## Resources\n\n- [Contributing to Open Source on GitHub](https://guides.github.com/activities/contributing-to-open-source/)\n- [Using Pull Requests](https://help.github.com/articles/using-pull-requests/)\n- [GitHub Help](https://help.github.com)\n\n[fork]: https://github.com/primer/css/fork\n[pr]: https://github.com/primer/css/compare\n[style]: https://primer.style/css/principles\n"
  },
  {
    "path": "DEVELOP.md",
    "content": "# Primer CSS Development\n\n> [!WARNING]\n> **This project is in KTLO mode!** New features, functionalities, or major enhancements are unlikely to be accepted. Use existing utility classes from this project where needed. For more complete patterns that include styling and markup, please use [primer/react](https://github.com/primer/react) or, if necessary, [primer/view_components](https://github.com/primer/view_components).\n\nIf you've made it this far, **thank you**! We appreciate your contribution, and hope that this document helps you along the way. If you have any questions or problems, don't hesitate to [file an issue](https://github.com/primer/css/issues/new).\n\n## Structure\n\nPrimer CSS is published to [npm] as [@primer/css]. Each of Primer CSS's \"modules\" lives in a subfolder under `src/` with an `index.scss` in it. Generally speaking, the styles are divided into three primary themes:\n\n- **Core** styles (in `core/`) are common dependencies, which include support variables, native element and typography styles, buttons, navigation, tooltips, etc.\n- **Product** styles (in `product/`) are specific to github.com, and include components such as avatars, labels, markdown styles, popovers, and progress indicators.\n- **Marketing** styles (in `marketing/`) are specific to GitHub marketing efforts, including international and event-focused sites as well as the more design-heavy feature pages on github.com. Marketing styles include new colors and button styles, and extend the core typography and whitespace scales.\n\n### Paths\n\nHere's what you need to know about how the files are structured in both git and in the published npm module:\n\n- In git, all of the SCSS source files live in the `src/` directory.\n- When published, all of the files in `src/` are \"hoisted\" to the package root so that you can import, say, utilities with:\n\n  ```scss\n  @import '@primer/css/utilities/index.scss';\n  ```\n\n- All bundle interdependencies within Primer CSS are defined as relative imports (e.g. with `../`), so everything should work fine as long as the `@primer/css` directory is in one of your Sass include paths (i.e. `node_modules`).\n\n## Install\n\nRun `npm install` to install the npm dependencies.\n\n### The docs directory\n\nThe [docs directory](../docs/) contains all of the documentation files in our docs site. Files are nested in the `/content` folder.\n\n### Code blocks\n\nAll `html` fenced code blocks in `src/**/*.md` will be rendered as stories and listed under the relevant module's name in the left-hand nav. File changes should trigger a live reload automatically (after a brief delay).\n\n## Storybook\n\nPrimer CSS Storybook is used for designing and prototyping components. Stories are written in HTML and leverage the Storybook API for configuring conditional logic.\n\n```sh\nnpm run storybook\n```\n\n### The Storybook directory\n\nStorybook configuration files live in [.storybook](../docs/.storybook). Addons and additional global config can be added to [main.js](../docs/.storybook/main.js) or [preview.js](../docs/.storybook/preview.js)\n\n### Stories\n\nStories are individual `.jsx` or `.mdx` files that contain component HTML for prototyping, typically showcasing all possible variations of a component. Stories can be found in the [stories directory](../docs/src/stories/components) and are organized by component. Storybook will build and deploy a preview on any open Pull Request.\n\n## Scripts\n\nOur [`package.json`](package.json) houses a collection of [run-scripts] that we use to maintain, test, build, and publish Primer CSS. Run `npm run <script>` with any of the following values for `<script>`:\n\n- `dist` runs `script/dist`, which creates CSS bundles of all the `index.scss` files in `src/`.\n- `stylelint` lints the CSS source files.\n- `eslint` lints the JavaScript source files.\n- `test` runs our test suite.\n- `storybook` runs storybook local development server.\n\nThe above list may not always be up-to-date. You can list all of the available scripts by calling `npm run` with no other arguments.\n\n[@primer/css]: https://www.npmjs.com/package/@primer/css\n[run-scripts]: https://docs.npmjs.com/cli/run-script\n[now]: https://zeit.co/now\n[npm]: https://www.npmjs.com/\n[npx]: https://www.npmjs.com/package/npx\n"
  },
  {
    "path": "LICENSE",
    "content": "The MIT License (MIT)\n\nCopyright (c) 2021 GitHub Inc.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
  },
  {
    "path": "README.md",
    "content": "# Primer CSS\nThe CSS implementation of GitHub's Primer Design System\n\n[![npm package](https://img.shields.io/npm/v/@primer/css.svg)](https://www.npmjs.com/package/@primer/css)\n[![build status](https://github.com/primer/css/actions/workflows/ci.yml/badge.svg)](https://github.com/primer/css/actions/workflows/ci.yml)\n[![contributors graph](https://img.shields.io/github/contributors/primer/css.svg)](https://github.com/primer/css/graphs/contributors)\n[![last commit](https://img.shields.io/github/last-commit/primer/css.svg)](https://github.com/primer/css/commits/main)\n[![license](https://img.shields.io/github/license/primer/css.svg)](https://github.com/primer/css/blob/main/LICENSE)\n\n> :warning: **This project is in KTLO mode!** Use existing utility classes from this project where needed. For more complete patterns that include styling and markup, please use [primer/react](https://github.com/primer/react) or, if necessary, [primer/view_components](https://github.com/primer/view_components).\n\n## Documentation\nOur documentation site lives at [primer.style/css](https://primer.style/css). You'll be able to find detailed documentation on getting started, all of the components, our theme, our principles, and more.\n\n## Install\nThis repository is distributed with [npm]. After [installing npm][install-npm], you can install `@primer/css` with this command:\n\n```sh\nnpm install --save @primer/css\n```\n\n## Usage\nThe included source files are written in [Sass] using SCSS syntax. Once installed, you can add your project's `node_modules` directory to your Sass [include paths](https://github.com/sass/node-sass#includepaths) (AKA [load paths](http://technology.customink.com/blog/2014/10/09/understanding-and-using-sass-load-paths/) in Ruby), then import it like this:\n\n```scss\n@import \"@primer/css/index.scss\";\n```\n\nYou can import individual Primer modules directly from the `@primer/css` package:\n\n```scss\n@import \"@primer/css/core/index.scss\";\n@import \"@primer/css/product/index.scss\";\n@import \"@primer/css/marketing/index.scss\";\n```\n\n## Development\nSee [DEVELOP.md](DEVELOP.md) for development docs.\n\n## Releasing (for GitHub staff)\nYou can find docs about our release process in [RELEASING.md](RELEASING.md).\n\n## License\n\n[MIT](./LICENSE) &copy; [GitHub](https://github.com/)\n\n\n[install-npm]: https://docs.npmjs.com/getting-started/installing-node\n[npm]: https://www.npmjs.com/\n[sass]: http://sass-lang.com/\n"
  },
  {
    "path": "RELEASING.md",
    "content": "# Releasing a new version of Primer CSS 🎉\n\n## Prepare the release (in `primer/css`)\n\nThe release process is automated by [changesets]. After you familiarize yourself with how they work. We use an [action workflow integrated in ci](https://github.com/atlassian/changesets#integrating-with-ci).\n\n1. Visit the pull requests page and find the [latest Release tracking pr from primer-css](https://github.com/primer/css/pulls/primer-css). If there isn't one, we'll need to build the next release by merging in PRs with changeset files.\n\n## Test the release candidate (in `github/github`):\n\n1. Create a new branch in the `github/github` repo, name it `primer-<version>`.\n\n1. Update the Primer CSS version to the published release candidate with:\n\n    ```sh\n    bin/npm install @primer/css@<version>-rc.<sha>\n    ```\n\n    Then commit and push the changes to `package.json`, `package-lock.json`, `LICENSE` and `vendor/npm`.\n\n1. If you need to make changes to github/github due to the Primer CSS release, do them in a branch and merge _that_ into your release branch after testing.\n\n1. Add or re-request reviewers and fix any breaking tests.\n\n1. Test on review-lab.\n\n\n## Publish the release (in `primer/css`)\n\n1. If the release PR got approved and you've done necessary testing, merge it.\n\n    After tests run, the docs site will be deployed and `@primer/css` will be published with your changes to the `latest` dist-tag. You can check [npm](https://www.npmjs.com/package/@primer/css?activeTab=versions) to see if actions has finished.\n\n2. Done! 🎉\n\n\n## Update github.com (in `github/github`):\n\n1. Install the latest published version in the same `primer-<version>` branch created earlier with:\n\n    ```\n    bin/npm install @primer/css@<version> -w ./npm-workspaces/primer/\n    ```\n\n    Then commit and push the changes to `package.json`, `package-lock.json`, `LICENSE` and `vendor/npm`.\n\n1. Fix any breaking tests.\n\n1. Deploy! :rocket:\n\n[changelog]: ../CHANGELOG.md\n[changesets]: https://github.com/atlassian/changesets\n"
  },
  {
    "path": "__tests__/.eslintrc.json",
    "content": "{\n  \"extends\": [\n    \"plugin:jest/recommended\"\n  ],\n  \"rules\": {\n    \"eslint-comments/no-use\": 0\n  }\n}\n"
  },
  {
    "path": "__tests__/build.test.js",
    "content": "import fs from 'fs'\n\nlet distDir\n\nbeforeAll(() => {\n  distDir = fs.readdirSync('./dist')\n})\n\ndescribe('./dist/ folder', () => {\n  let distCSS, distMap, distJS\n\n  beforeAll(() => {\n    distCSS = distDir.filter(i => i.match(/\\.css$/))\n    distMap = distDir.filter(i => i.match(/\\.map$/))\n    distJS = distDir.filter(i => i.match(/\\.js$/))\n  })\n\n  it('is not empty', () => {\n    expect(distDir).not.toBeNull()\n    expect(distDir.length).not.toBe(0)\n  })\n\n  it('contains source maps', () => {\n    for (const file of distCSS) {\n      if (file.includes('support')) { continue }\n      expect(distMap).toContain(`${file}.map`)\n    }\n  })\n\n  it('contains stats export files', () => {\n    for (const file of distCSS) {\n      expect(distJS).toContain(file.replace('.css', '.js'))\n    }\n  })\n\n  it('contains stats/ folder', () => {\n    expect(distDir).toContain('stats')\n  })\n})\n\ndescribe('./dist/stats/ folder', () => {\n  let statsDir\n\n  beforeAll(() => {\n    statsDir = fs.readdirSync('./dist/stats')\n  })\n\n  it('is not empty', () => {\n    expect(statsDir).not.toBeNull()\n    expect(statsDir.length).not.toBe(0)\n  })\n\n  it('contains a css file for each stat file', () => {\n    for (const file of statsDir) {\n      expect(distDir).toContain(file.replace('.json', '.css'))\n    }\n  })\n})\n"
  },
  {
    "path": "__tests__/css.test.js",
    "content": "import {\n  getCurrentVersion,\n  getPackageStats,\n  getSelectorDiff,\n  getVariableDiff,\n  currentVersionDeprecations\n} from './utils/css'\nimport semver from 'semver'\n\nlet selectorsDiff, variablesDiff, version\n\nbeforeAll(async () => {\n  selectorsDiff = getSelectorDiff()\n  variablesDiff = getVariableDiff()\n  version = getCurrentVersion()\n})\n\ndescribe('css', () => {\n  it('The support.css file contains no compiled css', () => {\n    const supportStats = getPackageStats('support')\n    expect(supportStats.size).toEqual(0)\n  })\n})\n\ndescribe('deprecations', () => {\n  it('expects deprecations and their replacement to not be equal.', () => {\n    const deprecations = currentVersionDeprecations()\n    Object.keys(deprecations[\"selectors\"]).forEach(deprecation => {\n      const replacement = deprecations[\"selectors\"][deprecation]\n      expect(deprecation).not.toEqual(replacement)\n    })\n  })\n})\n"
  },
  {
    "path": "__tests__/docs.test.js",
    "content": "import {getNavigationLinks, getContentFrontmatter} from './utils/docs'\n\nlet navLinks, contentFM\n\nbeforeAll(async () => {\n  contentFM = await getContentFrontmatter()\n  navLinks = getNavigationLinks()\n})\n\ndescribe('frontmatter', () => {\n  it('page title matches link title', () => {\n    for (const link of navLinks) {\n      const content = contentFM[link['url']]\n      expect(content).not.toBeNull()\n      expect(content['title']).toBe(link['title'])\n    }\n  })\n\n  it('contains path attribute', () => {\n    for (const v of Object.values(contentFM)) {\n      expect(v['path']).not.toBeNull()\n    }\n  })\n})\n\ndescribe('navigation', () => {\n  it('has a file for each nav item', () => {\n    for (const link of navLinks) {\n      const content = contentFM[link['url']]\n      expect(content).not.toBeNull()\n    }\n  })\n})\n"
  },
  {
    "path": "__tests__/utils/css.js",
    "content": "import {join, dirname} from 'path'\nimport semver from 'semver'\nimport { fileURLToPath } from 'url'\nimport fs from 'fs'\n\nconst __dirname = dirname(fileURLToPath(import.meta.url))\n\nconst currentPath = join(__dirname, '../../')\nconst lastPath = join(__dirname, '../../tmp/node_modules/@primer/css')\n\nfunction diffLists(before, after) {\n  const added = [...new Set(after.filter(value => !before.includes(value)))]\n  const removed = [...new Set(before.filter(value => !after.includes(value)))]\n  return {\n    changed: added.length + removed.length,\n    added,\n    removed\n  }\n}\n\nfunction getSelectors(versionPath) {\n  const stats = JSON.parse(fs.readFileSync(join(versionPath, './stats/primer.json')))\n  return stats.selectors.values\n}\n\nfunction getVariables(versionPath) {\n  const variables = JSON.parse(fs.readFileSync(join(versionPath, './variables.json')))\n  return Object.keys(variables)\n}\n\nexport function getCurrentVersion() {\n  const pkg = JSON.parse(fs.readFileSync(join(currentPath, './package.json')))\n  return semver.parse(pkg.version)\n}\n\nexport function getPackageStats(packageName) {\n  const stats = JSON.parse(fs.readFileSync(join(currentPath, './dist', `./stats/${packageName}.json`)))\n  return stats\n}\n\nfunction getDeprecations(versionPath) {\n  const deprecations = JSON.parse(fs.readFileSync(join(versionPath, './deprecations.json')))\n  return deprecations\n}\n\nfunction currentVersionSelectors() {\n  return getSelectors(join(currentPath, './dist'))\n}\n\nfunction currentVersionVariables() {\n  return getVariables(join(currentPath, './dist'))\n}\n\nexport function currentVersionDeprecations() {\n  return getDeprecations(join(currentPath, './dist'))\n}\n\nfunction lastVersionSelectors() {\n  return getSelectors(join(lastPath, './dist'))\n}\n\nfunction lastVersionVariables() {\n  return getVariables(join(lastPath, './dist'))\n}\n\nexport function getSelectorDiff() {\n  return diffLists(lastVersionSelectors(), currentVersionSelectors())\n}\n\nexport function getVariableDiff() {\n  return diffLists(lastVersionVariables(), currentVersionVariables())\n}\n"
  },
  {
    "path": "__tests__/utils/docs.js",
    "content": "import fs from 'fs'\nimport frontMatter from 'front-matter'\nimport yaml from 'js-yaml'\nimport {globby} from 'globby'\nimport { fileURLToPath } from 'url'\nimport {join, dirname} from 'path'\n\nconst __dirname = dirname(fileURLToPath(import.meta.url))\n\nconst docsPath = join(__dirname, '../../docs')\n\nfunction collectNavLinks(links) {\n  let foundLinks = []\n  for (const link of links) {\n    foundLinks.push({\n      title: link['title'],\n      url: link['url']\n    })\n    if (link['children']) {\n      foundLinks = foundLinks.concat(collectNavLinks(link['children']))\n    }\n  }\n  return foundLinks\n}\n\nexport function getNavigationLinks() {\n  const nav = yaml.load(fs.readFileSync(join(docsPath, './src/@primer/gatsby-theme-doctocat/nav.yml'), 'utf8'))\n  return collectNavLinks(nav)\n}\n\nexport async function getContentFrontmatter() {\n  const fm = {}\n\n  const paths = await globby(join(docsPath, './content/**/*.md*'))\n  for (const path of paths) {\n    const contents = fs.readFileSync(path, 'utf8')\n    const fmContents = frontMatter(contents)\n    fm[path.replace(join(docsPath, './content'), '').replace(/(\\/index)?\\.mdx?/, '')] = fmContents['attributes']\n  }\n  return fm\n}\n"
  },
  {
    "path": "deprecations.js",
    "content": "/**\n    Deprecated Selectors\n    -------------------------\n    These are deprecated selectors and should not be used. They include a replacement value,\n    which can be an array or null.\n\n      * 'deprecated-selector': 'replacement-selector'               <-- Replace with this selector.\n      * 'deprecated-selector': ['replacement-1', 'replacement-2']   <-- Replace with one of these selectors.\n      * 'deprecated-selector': null                                 <-- No option available, remove selector.\n*/\n\nimport fs from 'fs'\n\nconst deprecations = JSON.parse(fs.readFileSync('./dist/deprecations.json'))\n\nconst deprecatedSelectors = deprecations['selectors']\nconst deprecatedSassVariables = deprecations['variables']\nconst deprecatedSassMixins = deprecations['mixins']\n\nexport {\n  deprecatedSelectors,\n  deprecatedSassVariables,\n  deprecatedSassMixins\n}\n"
  },
  {
    "path": "docs/.babelrc",
    "content": "{\n  \"sourceType\": \"unambiguous\",\n  \"presets\": [\n    \"@babel/preset-react\",\n    [\n      \"@babel/preset-env\",\n      {\n        \"targets\": {\n          \"chrome\": 100\n        }\n      }\n    ]\n  ]\n}\n"
  },
  {
    "path": "docs/.eslintrc.json",
    "content": "{\n  \"extends\": [\n    \"plugin:react/recommended\",\n    \"plugin:jsx-a11y/recommended\",\n    \"plugin:storybook/recommended\"\n  ],\n  \"rules\": {\n    \"import/no-namespace\": 0,\n    \"no-unused-vars\": [\n      \"error\",\n      {\n        \"ignoreRestSiblings\": true\n      }\n    ]\n  },\n  \"settings\": {\n    \"react\": {\n      \"version\": \"detect\"\n    }\n  },\n  \"globals\": {\n    \"__DEV__\": \"readonly\"\n  }\n}\n"
  },
  {
    "path": "docs/.storybook/main.js",
    "content": "/** @type { import('@storybook/react-webpack5').StorybookConfig } */\nconst config = {\n  stories: ['../stories/**/*.mdx', '../stories/**/*.stories.@(js|jsx|ts|tsx)'],\n  addons: [\n    '@storybook/addon-links',\n    '@storybook/addon-essentials',\n    '@storybook/addon-interactions',\n    'storybook-addon-pseudo-states',\n    '@storybook/addon-storysource',\n    '@geometricpanda/storybook-addon-badges',\n    {\n      name: '@storybook/addon-styling',\n      options: {\n        sass: {\n          implementation: require('sass'),\n        },\n      },\n    },\n  ],\n  framework: {\n    name: '@storybook/react-webpack5',\n    options: {},\n  },\n  docs: {\n    autodocs: 'tag',\n  },\n  staticDirs: ['../stories/static'],\n}\nexport default config\n"
  },
  {
    "path": "docs/.storybook/manager.js",
    "content": "import {addons} from '@storybook/manager-api'\nimport theme from './theme'\n\naddons.setConfig({\n  theme: theme,\n})\n"
  },
  {
    "path": "docs/.storybook/preview-head.html",
    "content": "<link href=\"https://unpkg.com/@github/details-dialog-element/dist/index.css\" rel=\"stylesheet\" />\n"
  },
  {
    "path": "docs/.storybook/preview.css",
    "content": "@import '@primer/primitives/dist/css/base/size/size.css';\n@import '@primer/primitives/dist/css/base/typography/typography.css';\n@import '@primer/primitives/dist/css/functional/size/border.css';\n@import '@primer/primitives/dist/css/functional/size/breakpoints.css';\n@import '@primer/primitives/dist/css/functional/size/size-coarse.css';\n@import '@primer/primitives/dist/css/functional/size/size-fine.css';\n@import '@primer/primitives/dist/css/functional/size/size.css';\n@import '@primer/primitives/dist/css/functional/size/viewport.css';\n@import '@primer/primitives/dist/css/functional/typography/typography.css';\n\n/* color */\n@import '@primer/primitives/dist/css/functional/themes/light.css';\n@import '@primer/primitives/dist/css/functional/themes/light-tritanopia.css';\n@import '@primer/primitives/dist/css/functional/themes/light-high-contrast.css';\n@import '@primer/primitives/dist/css/functional/themes/light-colorblind.css';\n@import '@primer/primitives/dist/css/functional/themes/dark.css';\n@import '@primer/primitives/dist/css/functional/themes/dark-colorblind.css';\n@import '@primer/primitives/dist/css/functional/themes/dark-dimmed.css';\n@import '@primer/primitives/dist/css/functional/themes/dark-high-contrast.css';\n@import '@primer/primitives/dist/css/functional/themes/dark-tritanopia.css';\n"
  },
  {
    "path": "docs/.storybook/preview.js",
    "content": "import '../../src/docs.scss'\nimport '../../src/index.scss'\nimport '../../src/base/index.scss'\nimport './preview.css'\nimport './storybook.css'\nimport clsx from 'clsx'\nimport {BADGE, BadgesConfig} from '@geometricpanda/storybook-addon-badges'\n\n/** @type { import('@storybook/react').Preview } */\nconst preview = {\n  parameters: {\n    actions: {argTypesRegex: '^on[A-Z].*'},\n    controls: {\n      matchers: {\n        color: /(background|color)$/i,\n        date: /Date$/,\n      },\n    },\n    options: {\n      storySort: {\n        order: ['Introduction', 'GettingStarting', 'Contributing', 'Utilities'],\n      },\n    },\n    badgesConfig: {\n      [BADGE.DEPRECATED]: {\n        title: 'Deprecated',\n        tooltip: {\n          desc: 'Please use a Primer View Component instead',\n          links: [{title: 'See docs', href: 'https://primer.style/design/components'}],\n        },\n      },\n      [BADGE.OBSOLETE]: {\n        title: 'Outdated',\n        tooltip: {\n          desc: 'Information in this document may be outdated.',\n        },\n      },\n    },\n  },\n}\n\nconst primerThemes = [\n  {value: 'light', left: '☀️', title: 'Light'},\n  {value: 'light_colorblind', left: '☀️', title: 'Light Protanopia & Deuteranopia'},\n  {value: 'light_tritanopia', left: '☀️', title: 'Light Tritanopia'},\n  {value: 'light_high_contrast', left: '☀️', title: 'Light High Contrast'},\n  {value: 'dark', left: '🌗', title: 'Dark'},\n  {value: 'dark_dimmed', left: '🌗', title: 'Dark Dimmed'},\n  {value: 'dark_colorblind', left: '🌗', title: 'Dark Protanopia & Deuteranopia'},\n  {value: 'dark_tritanopia', left: '🌗', title: 'Dark Tritanopia'},\n  {value: 'dark_high_contrast', left: '🌗', title: 'Dark High Contrast'},\n]\n\nexport const globalTypes = {\n  theme: {\n    name: 'Theme',\n    description: 'Switch themes',\n    defaultValue: 'light',\n    toolbar: {\n      icon: 'contrast',\n      items: [...primerThemes, {value: 'all', left: '', title: 'All'}],\n      showName: true,\n      dynamicTitle: true,\n    },\n  },\n}\n\nexport const decorators = [\n  (Story, context) => {\n    const {parameters} = context\n    const defaultStoryType = 'banner'\n    const storyType = parameters.storyType || defaultStoryType\n    const colorMode = context.globals.theme === '' ? 'light' : (context.globals.theme.startsWith('light') ? 'light' : 'dark')\n    const lightTheme = context.globals.theme === '' ? 'light' : (colorMode === 'light' ? context.globals.theme : undefined)\n    const darkTheme = context.globals.theme === '' ? 'dark' : (colorMode === 'dark' ? context.globals.theme : undefined)\n    document.body.setAttribute('data-color-mode', colorMode)\n    document.body.setAttribute('data-light-theme', lightTheme)\n    document.body.setAttribute('data-dark-theme', darkTheme)\n    return (\n      <>\n        {context.globals.theme === 'all' ? (\n          primerThemes.map(({value: theme}) => (\n            <div\n              key={theme}\n              id=\"story\"\n              className={clsx(context.globals.theme === 'all' && 'story-wrap-grid', 'story-wrap')}\n              data-color-mode={theme.startsWith('dark') ? 'dark' : 'light'}\n              data-light-theme={theme.startsWith('light') ? theme : undefined}\n              data-dark-theme={theme.startsWith('dark') ? theme : undefined}\n            >\n              <Story {...context} />\n              {context.globals.theme === 'all' && <p className=\"theme-name\">{theme}</p>}\n            </div>\n          ))\n        ) : (\n          <div className=\"story-wrap\">\n            {/* {parameters.storyType === 'banner' && (\n              <div className=\"color-fg-danger border rounded-2 color-bg-danger p-3 color-border-danger-emphasis mb-5\">\n                Note: For the most up to date component documentation and guidelines, please reference Primer's core\n                documentation site at <a href=\"https://primer.style\">primer.style</a>.\n              </div>\n            )} */}\n            <Story {...context} />\n          </div>\n        )}\n      </>\n    )\n  },\n]\n\nexport default preview\n"
  },
  {
    "path": "docs/.storybook/storybook.css",
    "content": ".story-wrap {\n  font-family: var(--fontStack-system);\n  color: var(--fgColor-default);\n}\n\n#storybook-preview-wrapper {\n  background-color: var(--bgColor-default) !important;\n  width: 100% !important;\n  height: 100% !important;\n}\n\n.theme-wrap-grid {\n  display: grid;\n  grid-template-columns: repeat(4, minmax(var(--breakpoint-xsmall, 20rem), auto));\n  grid-gap: 1px;\n  height: 100vh;\n}\n\n.story-wrap-grid {\n  outline: 1px solid #d4d4d8;\n  padding-bottom: 40px;\n  position: relative;\n}\n\n@media (max-width: calc(20rem * 4)) {\n  .theme-wrap-grid {\n    grid-template-columns: repeat(3, minmax(var(--breakpoint-xsmall, 20rem), auto));\n  }\n}\n\n@media (max-width: calc(20rem * 3)) {\n  .theme-wrap-grid {\n    grid-template-columns: repeat(2, minmax(var(--breakpoint-xsmall, 20rem), auto));\n  }\n}\n\n@media (max-width: calc(20rem * 2)) {\n  .theme-wrap-grid {\n    display: block;\n  }\n}\n\n.theme-name {\n  position: absolute;\n  bottom: 0;\n  right: 0;\n  background-color: var(--bgColor-muted);\n  padding: var(--base-size-4) var(--base-size-8);\n  font: var(--text-caption-shorthand);\n  margin: 0;\n}\n\ncode {\n  padding: 0.2em 0.4em;\n  font-family: var(--fontStack-monospace);\n  font-size: var(--text-codeInline-size);\n  background-color: var(--bgColor-muted);\n  border-radius: var(--borderRadius-small);\n  font-weight: var(--base-text-weight-normal);\n}\n"
  },
  {
    "path": "docs/.storybook/theme.js",
    "content": "import {create} from '@storybook/theming'\nimport packageJson from '../../package.json'\n\nexport default create({\n  brandTitle: `\n    <div style=\"display: grid; grid-template-columns: min-content auto; gap: 4px; align-items: center;\">\n      <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\" focusable=\"false\">\n      <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M12 0.75C5.64625 0.75 0.5 5.89625 0.5 12.25C0.5 17.3387 3.79187 21.6369 8.36312 23.1606C8.93812 23.2612 9.15375 22.9162 9.15375 22.6144C9.15375 22.3412 9.13938 21.4356 9.13938 20.4725C6.25 21.0044 5.5025 19.7681 5.2725 19.1212C5.14313 18.7906 4.5825 17.77 4.09375 17.4969C3.69125 17.2812 3.11625 16.7494 4.07938 16.735C4.985 16.7206 5.63187 17.5687 5.8475 17.9137C6.8825 19.6531 8.53563 19.1644 9.19688 18.8625C9.2975 18.115 9.59938 17.6119 9.93 17.3244C7.37125 17.0369 4.6975 16.045 4.6975 11.6462C4.6975 10.3956 5.14312 9.36062 5.87625 8.55562C5.76125 8.26812 5.35875 7.08937 5.99125 5.50812C5.99125 5.50812 6.95438 5.20625 9.15375 6.68687C10.0738 6.42812 11.0513 6.29875 12.0288 6.29875C13.0063 6.29875 13.9838 6.42812 14.9038 6.68687C17.1031 5.19188 18.0662 5.50812 18.0662 5.50812C18.6987 7.08937 18.2962 8.26812 18.1812 8.55562C18.9144 9.36062 19.36 10.3812 19.36 11.6462C19.36 16.0594 16.6719 17.0369 14.1131 17.3244C14.53 17.6837 14.8894 18.3737 14.8894 19.4519C14.8894 20.99 14.875 22.2262 14.875 22.6144C14.875 22.9162 15.0906 23.2756 15.6656 23.1606C20.2081 21.6369 23.5 17.3244 23.5 12.25C23.5 5.89625 18.3538 0.75 12 0.75V0.75Z\" fill=\"#0969DA\"/>\n      </svg>\n      <span>${packageJson.name}@${packageJson.version}</span>\n    </div>\n  `,\n})\n"
  },
  {
    "path": "docs/package.json",
    "content": "{\n  \"private\": true,\n  \"name\": \"docs\",\n  \"repository\": \"primer/css\",\n  \"scripts\": {\n    \"storybook\": \"NODE_ENV=test storybook dev -p 6006\",\n    \"build:storybook\": \"script/build-storybook\"\n  },\n  \"engines\": {\n    \"node\": \">= 16.x\"\n  },\n  \"dependencies\": {\n    \"@babel/core\": \"^7.16.7\",\n    \"@geometricpanda/storybook-addon-badges\": \"^2.0.0\",\n    \"@storybook/addon-essentials\": \"^7.0.26\",\n    \"@storybook/addon-interactions\": \"^7.0.26\",\n    \"@storybook/addon-links\": \"^7.0.26\",\n    \"@storybook/addon-storysource\": \"^7.6.20\",\n    \"@storybook/addon-styling\": \"^1.3.2\",\n    \"@storybook/blocks\": \"^7.0.26\",\n    \"@storybook/react\": \"^7.0.26\",\n    \"@storybook/react-webpack5\": \"^7.0.26\",\n    \"@storybook/testing-library\": \"^0.0.14-next.2\",\n    \"babel-loader\": \"^8.2.5\",\n    \"clsx\": \"^1.2.1\",\n    \"eslint-plugin-storybook\": \"^0.6.12\",\n    \"react\": \"^18.2.0\",\n    \"react-dom\": \"^18.2.0\",\n    \"storybook\": \"^7.6.21\",\n    \"storybook-addon-pseudo-states\": \"^2.1.0\"\n  }\n}\n"
  },
  {
    "path": "docs/postcss.config.js",
    "content": "// This config file is necessary to get postcss-loader to work in\n// ./src/@primer/gatsby-theme-doctocat/components/live-preview-wrapper.js.\nconst path = require('path')\n\nmodule.exports = {\n  parser: 'postcss-scss',\n  plugins: [\n    require('postcss-node-sass')({\n      includePaths: [path.join(__dirname, 'node_modules')],\n      outputStyle: 'compressed'\n    }),\n    require('autoprefixer')\n  ]\n}\n"
  },
  {
    "path": "docs/script/build-storybook",
    "content": "#!/bin/bash\nset -e\n# Add base url to be able to serve static files\nif [ -n \"$1\" ]; then\n  echo '<base href=\"/storybook/\" />' >> .storybook/manager-head.html\nelse\n  echo '<base href=\"/css/storybook/\" />' >> .storybook/manager-head.html\nfi\n\n# Build storybook inside docs\nnpx storybook build -o public/storybook public/static\n\n# Remove manager-head after build to not interfere with dev builds\nrm .storybook/manager-head.html\n"
  },
  {
    "path": "docs/stories/Contributing.mdx",
    "content": "While this contributing guide is for GitHub employees, all contributions from the community are welcome.\n\n## Adding new utilities\n\nUtilities do one thing well and one thing only. These styles are immutable and therefore often use the `!important` tag. For this reason we aim not to change the properties of utilities very often. They often form the building blocks of our pages and when we introduce new ones we need to do so with care as we'll likely need to live with these styles for a long time. When assessing whether there is a need to add a new utility, consider these additional questions:\n\n- How does this new utility fit within our existing set of utilities? If it is an addition to an existing set then it should follow the same naming convention.\n- Is it for a property that would likely need to be changed at different breakpoints? If so it may need responsive options.\n- If this style is part of a family of properties, do we need to consider adding the full set? Reasons for adding a full set could be that the other property values are often used, or that there would be a need to switch the property on and off (such as display or visibility).\n- Does introducing this new utility cause any clashes or potential confusion with the use of existing utilities? If so, what steps can we take to avoid those issues.\n- Does the utility have a connection with a set of variables? If so do the corresponding variables need to be updated?\n\n## Step-by-step instructions for adding new styles\n\n### Step 1: Open an issue\n\nIt's usually better to open an issue before investing time in spiking out a new pattern. This gives the design systems team a heads up and allows other designers to share thoughts. Here's an outline of what's helpful to include in a new style issue:\n\n1. What the pattern is, and how it's being used on GitHub.com. Post screenshots and/or URLs whenever possible. If you need help identifying where the pattern is used, call that out in the issue.\n2. Why you think a new pattern is needed (this should answer the relevant questions above).\n3. If you intend to work on these new styles yourself, let us know what your timeline and next steps are. If you need help and this is a dependency for shipping another project, please make that clear here and what the timeline is.\n\n### Step 2: Design and build the new styles\n\n- When you're ready, spike out a branch and build out your new utility according to the style guide principles, ensuring you follow our naming convention for each of the styles.\n- Refactor parts of the product where you think those new styles could be used to test they work for each use case. This does not mean for every instance, but enough of the key use cases to be sure the styles are flexible enough. To avoid blowing out your initial pull request we recommend you do larger amounts of refactoring in an additional branch.\n- When you're ready for review, change your pull request from \"Draft\" to \"Ready for review\"\n\n## Storybook\n\nWe use [Storybook](https://storybook.js.org/) to document and test our CSS. You can run Storybook locally by running `npx storybook` and visiting the localhost server that is automatically started.\n\nStories are written with React for better compatibility with Storybook. Each utility should have a story that demonstrates its use. Stories are located in the `stories` directory.\n\n### Versioning\n\nPrimer CSS follows [semantic versioning](http://semver.org/) conventions. This helps others know when a change is a patch, minor, or breaking change.\n\nTo understand what choice to make, you'll need to understand semver and know if one of the changes shown is a major, minor, or patch. Semver is confusing at first, so we recommend reviewing [semver](http://semver.org/) and/or asking the team by [opening an issue](#step-1-open-an-issue).\n\n[semantic versioning]: https://semver.org\n[script/test-deprecations.js]: https://github.com/primer/css/tree/main/script/test-deprecations.js\n[deprecations.js]: https://github.com/primer/css/tree/main/deprecations.js\n"
  },
  {
    "path": "docs/stories/GettingStarted.mdx",
    "content": "Primer CSS is [open-sourced on GitHub](https://github.com/primer/css) and [available on npm](https://www.npmjs.com/package/@primer/css).\n\n## Installing via npm\n\nWe recommend installing Primer CSS with npm: `npm install --save @primer/css`.\n\n### Before you start\n\nPrimer CSS requires npm version 3 or above. You can check which version you have by running `npm -v`. If you have a version that's older than 3.0, you can update it with `npm install npm@latest -g`. For more info, read the [npm install docs](https://docs.npmjs.com/getting-started/installing-node).\n\n### Initialize npm project\n\nBegin by initializing your project with a `package.json` file. You can read more on how to do this [in the npm documentation](https://docs.npmjs.com/getting-started/using-a-package.json#creating-a-packagejson).\n\n### Install Primer CSS\n\nInstall the Primer CSS npm package modules by running `npm install @primer/css`. This will install all of the SCSS source files into the `node_modules/@primer/css` directory.\n\n```shell\nnpm install @primer/css --save\n```\n\n### Paths\n\nHere's what you need to know about how the files are structured in both git and in the published npm module:\n\n- In git, all of the SCSS source files live in the `src/` directory.\n- When published, all of the files in `src/` are \"hoisted\" to the package root so that you can import, say, utilities with:\n\n  ```scss\n  @import '@primer/css/utilities/index.scss';\n  ```\n\n- All bundle interdependencies within Primer CSS are defined as relative imports (e.g. with `../`), so everything should work fine as long as the `@primer/css` directory is in one of your Sass include paths (i.e. `node_modules`).\n\n### For a Jekyll site\n\nMake sure you have [Jekyll](https://jekyllrb.com/) version `3.3.1` or greater with:\n\n```shell\njekyll -v\n```\n\nIf you have an older version, follow the instructions in the [upgrading docs](https://jekyllrb.com/docs/upgrading/).\n\nOnce you have Jekyll up and running, you will need to add this configuration to your `_config.yml` file. This let's the sass compiler know where your code lives.\n\n```yml\nsass:\n  # Where you keep your scss files\n  sass_dir: assets/css/\n  # Where sass should look for other scss\n  load_paths:\n    - node_modules/\n```\n\nIt's best practice to import all of this scss into one file, usually named `index.scss`. From this file you'll import one or more Primer CSS bundles and any other custom code you write.\n\n```scss\n@import '@primer/css/core/index.scss';\n// These files live in the same directory as the index file.\n@import './custom-1.scss';\n@import './custom-2.scss';\n```\n\nHere's an example of how it might look if you installed only a few Primer CSS components with some custom variable overrides. The `$blue` uses the default primer blue in the text utilities, then the new blue in `\"custom-that-uses-primer-variables.scss\"` and `.foo`.\n\n```scss\n@import '@primer/css/utilities/index.scss';\n@import 'primer-buttons/index.scss';\n\n// Import color variables for custom code\n@import 'primer-support/index.scss';\n\n// Override default blue\n$blue: #0000ff;\n\n@import './custom-that-uses-primer-variables.scss';\n\n.foo {\n  background: $blue;\n  font-size: $h2-size;\n  color: $text-gray;\n}\n```\n\nDon't forget to add the compiled CSS to the `<head>` section of your page.\n\n```html\n<link href=\"path/to/style.css\" rel=\"stylesheet\" />\n```\n\n### Troubleshooting Jekyll errors\n\nCurrently [jekyll-sass-converter](https://github.com/jekyll/jekyll-sass-converter) uses the [deprecated `LibSass` library](https://github.com/jekyll/jekyll-sass-converter#sass-implementations). Due to this you might run into issues. One way to deal with this is to use an experimental version of `jekyll-sass-converter` which uses [dart sass](https://sass-lang.com/dart-sass).\n\n1. Add `jekyll-sass-converter` and `sass-embedded` to `Gemfile`:\n\n```ruby\ngroup :jekyll_plugins do\n  gem 'jekyll-sass-converter', github: 'jekyll/jekyll-sass-converter'\n  gem 'sass-embedded'\nend\n```\n\n2. Run `bundle install`\n\n```bash\n$ bundle install\n```\n\n3. Update your `_config.yml`:\n\n```yml\nsass:\n  implementation: sass-embedded\n```\n\nSince GitHub pages is currently [locked to version `1.5.2` of `jekyll-sass-converter`](https://pages.github.com/versions/). If you run into errors you should look into [using the built CSS](#using-primer-css-on-a-static-site).\n\n## Using Primer CSS on a static site\n\nYou won't need to install any node modules or Sass compilers for a static site; you can use the built CSS. The best thing to do is to [download the built CSS](https://unpkg.com/@primer/css/dist/primer.css) from [unpkg.com](https://unpkg.com) and host it yourself. If that's not an option, you can include a CDN link in your HTML:\n\n```html\n<link href=\"https://unpkg.com/@primer/css@^20.2.4/dist/primer.css\" rel=\"stylesheet\" />\n```\n"
  },
  {
    "path": "docs/stories/Introduction.mdx",
    "content": "<img src=\"hero-illustration.svg\" alt=\"\" class=\"mb-3\" />\n\n{/*\nTODO: Fix old docs deploy & get working link\n<div className=\"color-fg-accent border rounded-2 color-bg-accent p-3 color-border-accent-emphasis mb-5\">\n  <p className=\"m-0 h4\">Looking for the old docs site? Find it <a className=\"color-fg-accent\" href=\"https://gh.io/AAlnj9s\">here</a>.</p>\n</div>\n*/}\n\n# Introduction\n\nOur goal is to create a system that enables us to build consistent user experiences with ease, yet with enough flexibility to support the broad spectrum of GitHub websites. This goal is embedded in our design and code decisions. Our approach to CSS is influenced by Object Oriented CSS principles, functional CSS, and BEM architecture.\n\n## Highly reusable, flexible styles\n\nStyles can be mixed and matched to achieve many different layouts, independent of their location. These styles fall into two categories:\n\n<div style={{display: 'grid', gridTemplateColumns: 'repeat(2, 1fr)', gridGap: '2rem', marginBlock: '2rem'}}>\n  <div>\n    <img src=\"utilities-image.svg\" height=\"60\" alt=\"\" />\n    <h3 class=\"mt-1\">Utilities</h3>\n    <p class=\"m-0\">Single purpose, immutable styles, that do one thing well.</p>\n  </div>\n  <div>\n    <img src=\"components-image.svg\" height=\"60\" alt=\"\" />\n    <h3 class=\"mt-1\">Components</h3>\n    <p class=\"m-0\">Abstracted patterns for frequently used visual styles.</p>\n  </div>\n</div>\n\n## Systematically designed for GitHub\n\nPrimer CSS is built upon systems that form the foundation of our styles such as spacing, typography, and color. This systematic approach helps ensure our styles are consistent and interoperable with each other.\n\n<div class=\"my-5\">\n  <div style={{display: 'grid', gridTemplateColumns: '70px auto', gridGap: '2rem', alignItems: 'center'}}>\n    <img src=\"spacing-image.svg\" width=\"70\" alt=\"\" />\n    <div>\n      <h3 class=\"m-0\">Highly composable spacing scale</h3>\n      <p>\n        The base-8 spacing scale is highly composable and works with the density of GitHub’s content. Margin and padding\n        spacers bring consistency to vertical and horizontal rhythm, while remaining flexible so you can tweak layouts\n        to work for every context.\n      </p>\n    </div>\n  </div>\n  <div style={{display: 'grid', gridTemplateColumns: '70px auto', gridGap: '2rem', alignItems: 'center'}}>\n    <img src=\"typography-image.png\" width=\"70\" alt=\"\" />\n    <div>\n      <h3 class=\"m-0\">Customizable typography</h3>\n      <p>\n        Font size and line-height options work together to result in more sensible numbers. Font styles come in a range\n        of weights and sizes so that we can style appropriately for content and readability. Type utilities allow us to\n        change the visual styles while keeping markup semantic.\n      </p>\n    </div>\n  </div>\n  <div style={{display: 'grid', gridTemplateColumns: '70px auto', gridGap: '2rem', alignItems: 'center'}}>\n    <img src=\"color-image.svg\" width=\"70\" alt=\"\" />\n    <div>\n      <h3 class=\"m-0\">Meaningful color</h3>\n      <p>\n        The color system allows us to add meaningful signals to content and interactions. Color variables and utilities\n        offer thematic styling options without being tied to structure. Text and background colors come in a range of\n        accessible combinations to ensure we build inclusive interfaces.\n      </p>\n    </div>\n  </div>\n</div>\n\n## Structure\n\nPrimer CSS is published to npm as `@primer/css`. Each of Primer CSS's \"modules\" lives in a subfolder under `src/` with an `index.scss` in it. Generally speaking, the styles are divided into three primary themes:\n\n- **Core** styles (in `core/`) are common dependencies, which include support variables, native element and typography styles, buttons, navigation, tooltips, etc.\n- **Product** styles (in `product/`) are specific to github.com, and include components such as avatars, labels, markdown styles, popovers, and progress indicators.\n- **Marketing** styles (in `marketing/`) are specific to GitHub marketing efforts, including international and event-focused sites as well as the more design-heavy feature pages on github.com. Marketing styles include new colors and button styles, and extend the core typography and whitespace scales.\n"
  },
  {
    "path": "docs/stories/components/Layout/AppFrame.stories.jsx",
    "content": "import React from 'react'\nimport clsx from 'clsx'\n//import { AppHeaderTemplate as AppHeader } from '../App/AppHeader.stories'\n\nexport default {\n  title: 'Components/Layout/AppFrame',\n  parameters: {\n    layout: 'fullscreen'\n  },\n\n  excludeStories: ['AppFrameTemplate'],\n  argTypes: {\n\n    // Debug\n\n    _debug: {\n      control: {\n        type: 'boolean',\n      }\n    },\n\n    a11yNavItems: {\n      type: 'array',\n    },\n\n    // Children\n\n    headerChildren: {\n      description: 'creates a slot for header children',\n      table: {\n        category: 'HTML'\n      }\n    },\n    subheaderChildren: {\n      description: 'creates a slot for subheader children',\n      table: {\n        category: 'HTML'\n      }\n    },\n    bodyChildren: {\n      description: 'creates a slot for body children',\n      table: {\n        category: 'HTML'\n      }\n    },\n    footerChildren: {\n      description: 'creates a slot for footer children',\n      table: {\n        category: 'HTML'\n      }\n    },\n  },\n}\n\nexport const AppFrameTemplate = ({\n  _debug,\n  a11yNavItems,\n  headerChildren,\n  subheaderChildren,\n  bodyChildren,\n  footerChildren,\n}) => {\n\n  // Default values\n  a11yNavItems = a11yNavItems ?? [\n    {url: '#start-of-content', label: 'Skip to content'},\n    {url: '/', label: 'GitHub homepage'},\n  ];\n\n  return (\n    <>\n      <div className={clsx('AppFrame')}>\n\n        <div className={clsx('AppFrame-a11yNav')}>\n          {a11yNavItems.map(link => (\n            <a className={clsx('AppFrame-a11yLink')} href={link.url}>{link.label}</a>\n          ))}\n        </div>\n\n        <div className={clsx('AppFrame-main')}>\n\n          <div className={clsx('AppFrame-header-wrapper')}>\n\n            <div className={clsx('AppFrame-header')}>\n              {headerChildren}\n            </div>\n\n            <div id=\"start-of-content\"></div>\n\n            {subheaderChildren && (\n              <div className={clsx('AppFrame-subheader')}>\n                {subheaderChildren}\n                </div>\n            )}\n\n          </div>\n          <div className={clsx('AppFrame-body')}>\n            {bodyChildren}\n          </div>\n        </div>\n        <div className={clsx('AppFrame-footer')}>\n          {footerChildren}\n        </div>\n      </div>\n\n      {_debug && (\n        <>\n          <style type=\"text/css\">{`\n            .AppFrame {\n\n            }\n            .AppFrame-header,\n            .AppFrame-subheader,\n            .AppFrame-body,\n            .AppFrame-footer {\n              padding: 16px;\n            }\n            .AppFrame-header {\n              background: pink;\n            }\n            .AppFrame-subheader {\n              background: lightblue;\n            }\n            .AppFrame-footer {\n              background: pink;\n            }\n          `}</style>\n        </>\n      )}\n    </>\n  );\n};\n\nexport const Playground = AppFrameTemplate.bind({})\n\nPlayground.args = {\n  _debug: true,\n  headerChildren: \"Header slot\",\n  subheaderChildren: \"Subheader slot\",\n  bodyChildren: \"Body slot\",\n  footerChildren: \"Footer slot\",\n};"
  },
  {
    "path": "docs/stories/components/Layout/LayoutAlpha.stories.jsx",
    "content": "import React from 'react'\nimport clsx from 'clsx'\n\nexport default {\n  title: 'Components/Layout/Alpha',\n  excludeStories: ['LayoutAlphaTemplate'],\n  argTypes: {\n    container: {\n      control: { type: 'select' },\n      options: ['full', 'md', 'lg', 'xl'],\n      control: {\n        type: 'inline-radio'\n      },\n      description: 'Wrapper around the entire component to define an optional maximum width.',\n      table: {\n        category: 'CSS'\n      }\n    },\n    hasDivider: {\n      control: { type: 'boolean' },\n      description: 'Whether to show a pane line divider.',\n      table: {\n        category: 'CSS'\n      }\n    },\n    gutter: {\n      options: ['default', 'none', 'condensed', 'spacious'],\n      control: {\n        type: 'inline-radio'\n      },\n      description: 'Sets the gap between columns.',\n      table: {\n        category: 'CSS'\n      }\n    },\n    sidebarPosition: {\n      options: ['start', 'end'],\n      control: {\n        type: 'inline-radio'\n      },\n      description: 'Sets the position of the sidebar.',\n      table: {\n        category: 'CSS'\n      }\n    },\n    sidebarWidth: {\n      options: ['default', 'narrow', 'wide'],\n      control: {\n        type: 'inline-radio'\n      },\n      description: 'Sets the width of the sidebar.',\n      table: {\n        category: 'CSS'\n      }\n    },\n    mainWidth: {\n      options: ['full', 'md', 'lg', 'xl'],\n      control: {\n        type: 'inline-radio'\n      },\n      description: 'Sets the width of the main content area.',\n      table: {\n        category: 'CSS'\n      }\n    },\n    flowRowUntil: {\n      options: ['sm', 'md', 'lg'],\n      control: {\n        type: 'inline-radio',\n      },\n      description: 'Sets the maximum breakpoint at which the layout will flow as row.',\n      table: {\n        category: 'CSS'\n      }\n    },\n    mainChildren: {\n      description: 'creates a slot for main children',\n      table: {\n        category: 'HTML'\n      }\n    },\n    sidebarChildren: {\n      description: 'creates a slot for sidebar children',\n      table: {\n        category: 'HTML'\n      }\n    },\n  }\n}\n\n// build every component case here in the template (private api)\nexport const LayoutAlphaTemplate = ({\n  container,\n  hasDivider,\n  gutter,\n  sidebarPosition,\n  sidebarWidth,\n  mainWidth,\n  flowRowUntil,\n  mainChildren,\n  sidebarChildren\n}) => {\n\n  // Default values\n  container = container ?? 'xl';\n  hasDivider = hasDivider ?? false;\n  gutter = gutter ?? 'default';\n  sidebarPosition = sidebarPosition ?? 'end';\n  sidebarWidth = sidebarWidth ?? 'default';\n  mainWidth = mainWidth ?? 'full';\n  flowRowUntil = flowRowUntil ?? 'md';\n\n  // Leave `null` values for states that don't require a modifier class\n  container = (container === 'full') ? null : container;\n  hasDivider = (hasDivider === false) ? null : hasDivider;\n  gutter = (gutter === 'default') ? null : gutter;\n  sidebarWidth = (sidebarWidth === 'default') ? null : sidebarWidth;\n  mainWidth = (mainWidth === 'full') ? null : mainWidth;\n  flowRowUntil = (flowRowUntil === 'sm') ? null : flowRowUntil;\n  \n  return (\n    <div\n      // use clsx for multiple classnames\n      className={clsx(\n        'Layout',\n        container && 'container-' + `${container}`,\n        gutter && 'Layout--gutter-' + `${gutter}`,\n        sidebarPosition && 'Layout--sidebarPosition-' + `${sidebarPosition}`,\n        sidebarWidth && 'Layout--sidebar-' + `${sidebarWidth}`,\n        hasDivider && 'Layout--divided',\n        flowRowUntil && '' + 'Layout--flowRow-until-' + `${flowRowUntil}`\n      )}\n      // use undefined for values that shouldn't be set if false\n      aria-hidden={hasDivider ? 'true' : undefined}\n    >\n      {/* use {children} for wrapper component templates */}\n      <>\n      <div className=\"Layout-main\">\n        {mainWidth ? (\n          <>\n            <div className={'Layout-main-centered-' + mainWidth}>\n              <div className={clsx( mainWidth && 'container-' + mainWidth)}>\n                {mainChildren}\n              </div>\n            </div>\n          </>\n        ) : (\n          <>\n            {mainChildren}\n          </>\n        )}\n      </div>\n      <div className=\"Layout-divider\"></div>\n      <div className=\"Layout-sidebar\">{sidebarChildren}</div>\n      </>\n    </div>\n  );\n};\n\nconst sidebarPlaceholder =\n  <>\n    <div style={\n      {\n        width: '100%',\n        height: '100%',\n        backgroundColor: '#DDF4FF',\n        border: '1px solid #80CCFF',\n        padding: '16px',\n        borderRadius: '6px'\n      }\n    }>\n      sidebar\n    </div>\n  </>;\n\nconst mainPlaceholder =\n  <>\n    <div style={\n      {\n        width: '100%',\n        height: '100%',\n        backgroundColor: '#FFEFF7',\n        border: '1px solid #FFADDA',\n        padding: '16px',\n        borderRadius: '6px'\n      }\n    }>\n      main\n    </div>\n  </>;\n\n// create a \"playground\" demo page that may set some defaults and allow story to access component controls\nexport const Playground = LayoutAlphaTemplate.bind({})\nPlayground.args = {\n  container: 'full',\n  hasDivider: false,\n  gutter: 'default',\n  sidebarPosition: 'end',\n  sidebarWidth: 'default',\n  mainWidth: 'full',\n  flowRowUntil: 'md',\n  mainChildren: mainPlaceholder,\n  sidebarChildren: sidebarPlaceholder\n}\n"
  },
  {
    "path": "docs/stories/components/Layout/LayoutBeta.stories.jsx",
    "content": "import React from 'react'\nimport clsx from 'clsx'\nimport PageLayoutBehavior from '../../helpers/pageLayoutBehavior.jsx'\n\nexport default {\n  title: 'Components/Layout/Beta',\n  excludeStories: ['LayoutTemplate'],\n  argTypes: {\n    // Debug\n\n    _debug: {\n      control: 'boolean',\n      description: 'Show background colors in regions for debugging'\n    },\n\n    // Structure\n\n    containerWidth: {\n      options: ['full', 'md', 'lg', 'xl'],\n      control: {\n        type: 'inline-radio',\n        labels: ['full', 'md', 'lg', 'xl']\n      },\n      description:\n        'The maximum width of the page component. `full` sets it to full-width. Other values center `Layout` horizontally. Refer to [container utilities](https://primer.style/css/utilities/grid#containers) for reference.',\n      table: {\n        category: 'Structure'\n      }\n    },\n    outerSpacing: {\n      options: ['none', 'normal', 'condensed'],\n      control: {\n        type: 'inline-radio'\n      },\n      description:\n        'Sets wrapper margins surrounding the component to distance itself from the viewport edges. `normal` sets the margin to 16px, and to 24px on `lg` breakpoints and above. `condensed` keeps the margin at 16px. `none` sets the margin to 0.',\n      table: {\n        category: 'Structure'\n      }\n    },\n    innerSpacing: {\n      options: ['none', 'normal', 'condensed'],\n      control: {\n        type: 'inline-radio'\n      },\n      description:\n        'Sets padding to regions individually. `normal` sets padding to 16px, with the `content` region getting 24px horizontal padding on `lg` breakpoints and above. `condensed` keeps the padding always at `16px`. `none` sets the padding to 0.',\n      table: {\n        category: 'Structure'\n      }\n    },\n    columnGap: {\n      options: ['none', 'normal', 'condensed'],\n      control: {\n        type: 'inline-radio'\n      },\n      description:\n        'Sets the gap between columns to distance them from each other. `normal` sets the gap to 16px, and to 24px on `lg` breakpoints and above. `condensed` keeps the gap always at 16px. `none` sets the gap to 0.',\n      table: {\n        category: 'Structure'\n      }\n    },\n    rowGap: {\n      options: ['none', 'normal', 'condensed'],\n      control: {\n        type: 'inline-radio'\n      },\n      description:\n        'Sets the gap below the header and above the footer. `normal` sets the gap to 16px, and to 24px on `lg` breakpoints and above. `condensed` keeps the gap always at 16px. `none` sets the gap to 0.',\n      table: {\n        category: 'Structure'\n      }\n    },\n\n    // Responsive\n\n    responsiveVariant: {\n      options: ['stackRegions', 'separateRegions'],\n      control: {\n        type: 'inline-radio'\n      },\n      description:\n        '`responsiveVariant` defines how the layout component adapts to smaller viewports. `stackRegions` presents the content in a vertical flow, with `pane` and `content` vertically arranged. `separateRegions` presents `pane` and `content` as different pages on smaller viewports. Change the preview size from the toolbar to test it.',\n      table: {\n        category: 'Responsive'\n      }\n    },\n    primaryRegion: {\n      options: ['content', 'pane'],\n      control: {\n        type: 'inline-radio'\n      },\n      description:\n        'When `responsiveVariant` is set to `separateRegions`, defines which region appears first on small viewports. `content` is default.',\n      table: {\n        category: 'Responsive'\n      }\n    },\n\n    // Pane\n\n    hasPane: {\n      control: {type: 'boolean'},\n      table: {\n        category: 'Pane'\n      }\n    },\n\n    paneWidth: {\n      options: ['default', 'narrow', 'wide'],\n      control: {\n        type: 'inline-radio'\n      },\n      description: 'Defines the width of the pane',\n      table: {\n        category: 'Pane'\n      }\n    },\n    panePosition: {\n      options: ['start', 'end'],\n      control: {\n        type: 'inline-radio'\n      },\n      description:\n        'Defines the position of the pane. `start` renders the pane on the left, and `end` renders it on the right.',\n      table: {\n        category: 'Pane'\n      }\n    },\n    panePositionWhenNarrow: {\n      options: ['inherit', 'start', 'end'],\n      control: {\n        type: 'inline-radio'\n      },\n      description:\n        'If `responsiveVariant` is set to `stackRegions`, defines the position of the pane in narrow viewports. `start` puts the pane above `content`, and `end` puts it below `content`. `inherit` uses the same value from `panePosition`.',\n      table: {\n        category: 'Pane'\n      }\n    },\n    hasPaneDivider: {\n      control: {type: 'boolean'},\n      description: 'Whether to show a pane line divider.',\n      table: {\n        category: 'Pane'\n      }\n    },\n    paneDividerWhenNarrow: {\n      options: ['inherit', 'none', 'line', 'filled'],\n      control: {\n        type: 'inline-radio'\n      },\n      description:\n        'Whether to show a divider between `pane` and `content` regions if `responsiveVariant` is set to `stackRegions`. `line` shows a single line. `filled` shows a thicker mobile-friendly divider.',\n      table: {\n        category: 'Pane'\n      }\n    },\n    paneIsSticky: {\n      control: {type: 'boolean'},\n      description: 'Whether to make the pane sticky.',\n      table: {\n        category: 'Pane'\n      }\n    },\n\n    // Content\n\n    contentWidth: {\n      options: ['full', 'sm', 'md', 'lg', 'xl'],\n      control: {\n        type: 'inline-radio'\n      },\n      description:\n        'Defines the maximum width of the content region. `full` sets it to full-width. Other values follow container widths from `sm` to `xl`. With smaller widths, the content region will try to stay centered to the viewport area.',\n      table: {\n        category: 'Content'\n      }\n    },\n\n    // Header\n\n    hasHeader: {\n      control: {type: 'boolean'},\n      table: {\n        category: 'Header'\n      }\n    },\n\n    hasHeaderDivider: {\n      control: {type: 'boolean'},\n      description: 'Whether to show a header divider.',\n      table: {\n        category: 'Header'\n      }\n    },\n\n    headerDividerWhenNarrow: {\n      options: ['inherit', 'none', 'line', 'filled'],\n      control: {\n        type: 'inline-radio'\n      },\n      description:\n        'Defines how the `header` divider should look on narrow viewports. `inherit` renders a `line` if `hasHeaderDivider` is true. `filled` shows a thicker mobile-friendly divider.',\n      table: {\n        category: 'Header'\n      }\n    },\n\n    // Footer\n\n    hasFooter: {\n      control: {type: 'boolean'},\n      table: {\n        category: 'Footer'\n      }\n    },\n\n    hasFooterDivider: {\n      control: {type: 'boolean'},\n      description: 'Whether to show a footer divider.',\n      table: {\n        category: 'Footer'\n      }\n    },\n\n    footerDividerWhenNarrow: {\n      options: ['inherit', 'none', 'line', 'filled'],\n      control: {\n        type: 'inline-radio'\n      },\n      description:\n        'Whether to show a divider above the `footer` region on narrow viewports. `line` shows a single line. `filled` shows a thicker mobile-friendly divider.',\n      table: {\n        category: 'Footer'\n      }\n    },\n\n    // HTML\n\n    headerChildren: {\n      description: 'creates a slot for header children',\n      table: {\n        category: 'HTML'\n      }\n    },\n    contentChildren: {\n      description: 'creates a slot for content children',\n      table: {\n        category: 'HTML'\n      }\n    },\n    paneChildren: {\n      description: 'creates a slot for pane children',\n      table: {\n        category: 'HTML'\n      }\n    },\n    footerChildren: {\n      description: 'creates a slot for footer children',\n      table: {\n        category: 'HTML'\n      }\n    }\n  }\n}\n\nconst layoutClassName = 'PageLayout'\n\n// build every component case here in the template (private api)\nexport const LayoutTemplate = ({\n  // Debug\n  _debug,\n\n  // Wrapper\n  containerWidth,\n\n  // Spacing and borders\n  outerSpacing,\n  innerSpacing,\n  columnGap,\n  rowGap,\n\n  // Pane\n  hasPane,\n  paneWidth,\n  panePosition,\n  panePositionWhenNarrow,\n  hasPaneDivider,\n  paneDividerWhenNarrow,\n  paneIsSticky,\n\n  // Header\n  hasHeader,\n  hasHeaderDivider,\n  headerDividerWhenNarrow,\n\n  // Footer\n  hasFooter,\n  hasFooterDivider,\n  footerDividerWhenNarrow,\n\n  // Content\n  contentWidth,\n\n  // Responsive\n  responsiveVariant,\n  primaryRegion,\n\n  // Children\n  headerChildren,\n  contentChildren,\n  paneChildren,\n  footerChildren\n}) => {\n  const containerClass = {\n    full: '',\n    md: 'container-md',\n    lg: 'container-lg',\n    xl: 'container-xl'\n  }\n\n  // Default values\n  containerWidth = containerWidth ?? 'xl'\n  outerSpacing = outerSpacing ?? 'normal'\n  innerSpacing = innerSpacing ?? 'none'\n  columnGap = columnGap ?? 'normal'\n  rowGap = rowGap ?? 'normal'\n  hasPane = hasPane ?? true\n  panePosition = panePosition ?? 'end'\n  panePositionWhenNarrow = panePositionWhenNarrow ?? 'inherit'\n  responsiveVariant = responsiveVariant ?? 'stackRegions'\n  primaryRegion = primaryRegion ?? 'content'\n\n  // Leave `null` values for states that don't require a modifier class\n  outerSpacing = outerSpacing === 'none' ? null : outerSpacing\n  innerSpacing = innerSpacing === 'none' ? null : innerSpacing\n  paneWidth = paneWidth === 'default' ? null : paneWidth\n  contentWidth = contentWidth === 'full' ? null : contentWidth\n  headerDividerWhenNarrow = headerDividerWhenNarrow === 'none' ? null : headerDividerWhenNarrow\n  footerDividerWhenNarrow = footerDividerWhenNarrow === 'none' ? null : footerDividerWhenNarrow\n\n  // Inherit value for responsive props\n  panePositionWhenNarrow = panePositionWhenNarrow === 'inherit' ? panePosition : panePositionWhenNarrow\n\n  if (hasPaneDivider) {\n    paneDividerWhenNarrow = paneDividerWhenNarrow === 'inherit' ? 'line' : paneDividerWhenNarrow\n  }\n\n  if (hasHeaderDivider) {\n    headerDividerWhenNarrow = headerDividerWhenNarrow === 'inherit' ? 'line' : headerDividerWhenNarrow\n  }\n\n  if (hasFooterDivider) {\n    footerDividerWhenNarrow = footerDividerWhenNarrow === 'inherit' ? 'line' : footerDividerWhenNarrow\n  }\n\n  PageLayoutBehavior()\n\n  return (\n    <>\n      <div\n        className={clsx(\n          layoutClassName,\n\n          outerSpacing && layoutClassName + '--outerSpacing-' + `${outerSpacing}`,\n          innerSpacing && layoutClassName + '--innerSpacing-' + `${innerSpacing}`,\n          columnGap && layoutClassName + '--columnGap-' + `${columnGap}`,\n          rowGap && layoutClassName + '--rowGap-' + `${rowGap}`,\n\n          paneWidth && layoutClassName + '--paneWidth-' + `${paneWidth}`,\n          panePosition && layoutClassName + '--panePos-' + `${panePosition}`,\n          hasPaneDivider && layoutClassName + '--hasPaneDivider',\n\n          layoutClassName + '--responsive-' + `${responsiveVariant}`,\n          responsiveVariant === 'separateRegions' && layoutClassName + '--responsive-primary-' + `${primaryRegion}`,\n          responsiveVariant === 'stackRegions' &&\n            panePositionWhenNarrow &&\n            layoutClassName + '--responsive-panePos-' + `${panePositionWhenNarrow}`\n        )}\n      >\n        <div className={clsx(layoutClassName + '-wrapper', containerWidth && containerClass[containerWidth])}>\n          {/* Header */}\n          {hasHeader && (\n            <div\n              className={clsx(\n                layoutClassName + '-region',\n                layoutClassName + '-header',\n                hasHeaderDivider && layoutClassName + '-header--hasDivider',\n                headerDividerWhenNarrow && layoutClassName + '-region--dividerNarrow-' + headerDividerWhenNarrow + '-after'\n              )}\n            >\n              {headerChildren}\n            </div>\n          )}\n\n          {hasPane && (\n            <div className={clsx(layoutClassName + '-columns')}>\n              {/* pane if rendered first */}\n              {panePosition === 'start' && (\n                <div\n                  className={clsx(\n                    layoutClassName + '-region',\n                    layoutClassName + '-pane',\n                    paneIsSticky && layoutClassName + '-pane--sticky',\n                    paneDividerWhenNarrow &&\n                      layoutClassName +\n                        '-region--dividerNarrow-' +\n                        paneDividerWhenNarrow +\n                        (panePositionWhenNarrow === 'start' ? '-after' : '-before')\n                  )}\n                >\n                  {paneChildren}\n                </div>\n              )}\n\n              {/* content */}\n              <div className={clsx(layoutClassName + '-region', layoutClassName + '-content')}>\n                {contentWidth ? (\n                  <>\n                    <div className={layoutClassName + '-content-centered-' + contentWidth}>\n                      <div className={'container-' + contentWidth}>{contentChildren}</div>\n                    </div>\n                  </>\n                ) : (\n                  <>{contentChildren}</>\n                )}\n              </div>\n\n              {/* pane if rendered last */}\n              {panePosition === 'end' && (\n                <div\n                  className={clsx(\n                    layoutClassName + '-region',\n                    layoutClassName + '-pane',\n                    paneIsSticky && layoutClassName + '-pane--sticky',\n                    paneDividerWhenNarrow &&\n                      layoutClassName +\n                        '-region--dividerNarrow-' +\n                        paneDividerWhenNarrow +\n                        (panePositionWhenNarrow === 'start' ? '-after' : '-before')\n                  )}\n                >\n                  {paneChildren}\n                </div>\n              )}\n            </div>\n          ) || (\n            <>\n              {/* single-column layout */}\n              <div className={clsx(layoutClassName + '-region', layoutClassName + '-content')}>\n                {contentWidth ? (\n                  <>\n                    <div className={'container-' + contentWidth}>{contentChildren}</div>\n                  </>\n                ) : (\n                  <>{contentChildren}</>\n                )}\n              </div>\n            </>\n          )}\n\n          {/* footer */}\n          {hasFooter && (\n            <div\n              className={clsx(\n                layoutClassName + '-region',\n                layoutClassName + '-footer',\n                hasFooterDivider && layoutClassName + '-footer--hasDivider',\n                footerDividerWhenNarrow && layoutClassName + '-region--dividerNarrow-' + footerDividerWhenNarrow + '-before'\n              )}\n            >\n              {footerChildren}\n            </div>\n          )}\n        </div>\n\n        {/* debug */}\n        {_debug && (\n          <style type=\"text/css\">{`\n              .PageLayout-header {\n                background: lightpink;\n              }\n              .PageLayout-content {\n                background: rgb(255, 197, 253);\n              }\n              .PageLayout-pane {\n                background: rgb(215, 255, 233);\n              }\n              .PageLayout-footer {\n                background: lightyellow;\n              }\n            `}</style>\n        )}\n      </div>\n    </>\n  )\n}\n\nexport const Playground = LayoutTemplate.bind({})\nPlayground.storyName = 'Playground'\nPlayground.parameters = {\n  layout: 'fullscreen'\n}\nPlayground.args = {\n  _debug: true,\n  containerWidth: 'xl',\n  outerSpacing: 'normal',\n  innerSpacing: 'none',\n  columnGap: 'normal',\n  rowGap: 'normal',\n\n  responsiveVariant: 'stackRegions',\n  primaryRegion: 'content',\n\n  hasPane: true,\n  paneWidth: 'default',\n  panePosition: 'end',\n  panePositionWhenNarrow: 'inherit',\n  hasPaneDivider: false,\n  paneDividerWhenNarrow: 'inherit',\n  paneIsSticky: false,\n\n  contentWidth: 'full',\n\n  hasHeader: true,\n  hasHeaderDivider: false,\n  headerDividerWhenNarrow: 'inherit',\n\n  hasFooter: true,\n  hasFooterDivider: false,\n  footerDividerWhenNarrow: 'inherit',\n\n  contentChildren: 'content',\n  paneChildren: 'pane',\n  headerChildren: 'header',\n  footerChildren: 'footer'\n}\n"
  },
  {
    "path": "docs/stories/components/Layout/PageLayout.stories.jsx",
    "content": "// create a \"playground\" demo page that may set some defaults and allow story to access component controls\nimport React from 'react'\nimport clsx from 'clsx'\nimport {LayoutTemplate} from './LayoutBeta.stories'\n\nexport default {\n  title: 'Components/Layout/Beta/PageLayout',\n  excludeStories: ['PageLayoutTemplate'],\n  argTypes: {\n\n    // Debug\n\n    _debug: {\n      control: 'boolean',\n      description: 'Show background colors in regions for debugging',\n    },\n\n    // Structure\n\n    containerWidth: {\n      options: ['full', 'md', 'lg', 'xl'],\n      control: {\n        type: 'inline-radio',\n        labels: ['full', 'md', 'lg', 'xl']\n      },\n      description: 'Define the maximum width of the component. `full` sets it to full-width. Other values center `Layout` horizontally. Refer to [container utilities](https://primer.style/css/utilities/grid#containers) for reference.',\n      table: {\n        category: 'Structure'\n      }\n    },\n\n    padding: {\n      options: ['normal', 'condensed', 'none'],\n      control: {\n        type: 'inline-radio'\n      },\n      description: 'Sets container spacing surrounding the component to distance itself from the viewport edges. `normal` sets the spacing to 16px, and to 24px on `lg` breakpoints and above. `condensed` keeps the spacing at 16px.',\n      table: {\n        category: 'Structure'\n      }\n    },\n\n    columnGap: {\n      options: ['normal', 'condensed', 'none'],\n      control: {\n        type: 'inline-radio'\n      },\n      description: 'Sets the gap between columns to distance them from each other. `normal` sets the gap to 16px, and to 24px on `lg` breakpoints and above. `condensed` keeps the gap always at 16px.',\n      table: {\n        category: 'Structure'\n      }\n    },\n    rowGap: {\n      options: ['normal', 'condensed', 'none'],\n      control: {\n        type: 'inline-radio'\n      },\n      description: 'Sets the gap below the header and above the footer. `normal` sets the gap to 16px, and to 24px on `lg` breakpoints and above. `condensed` keeps the gap always at 16px.',\n      table: {\n        category: 'Structure'\n      }\n    },\n\n    // Responsive\n\n    responsiveVariant: {\n      options: ['stackRegions', 'separateRegions'],\n      control: {\n        type: 'inline-radio'\n      },\n      description: '`responsiveVariant` defines how the layout component adapts to smaller viewports. `stackRegions` presents the content in a vertical flow, with `pane` and `content` vertically arranged. `separateRegions` presents `pane` and `content` as different pages on smaller viewports. Change the preview size from the toolbar to test it.',\n      table: {\n        category: 'Responsive'\n      }\n    },\n\n    primaryRegion: {\n      options: ['content', 'pane'],\n      control: {\n        type: 'inline-radio'\n      },\n      description: 'When `responsiveVariant` is set to `separateRegions`, defines which region appears first on small viewports. `content` is default.',\n      table: {\n        category: 'Responsive'\n      }\n    },\n\n    // Pane\n    \n    hasPane: {\n      control: {type: 'boolean'},\n      table: {\n        category: 'Pane'\n      }\n    },\n\n    panePosition: {\n      options: ['start', 'end'],\n      control: {\n        type: 'inline-radio'\n      },\n      description: 'Defines the position of the pane. `start` renders the pane on the left, and `end` renders it on the right.',\n      table: {\n        category: 'Pane',\n      }\n    },\n    panePositionWhenNarrow: {\n      options: ['inherit', 'start', 'end'],\n      control: {\n        type: 'inline-radio',\n      },\n      description: 'If `responsiveVariant` is set to `stackRegions`, defines the position of the pane in narrow viewports. `start` puts the pane above `content`, and `end` puts it below `content`. `inherit` uses the same value from `panePosition`.',\n      table: {\n        category: 'Pane'\n      }\n    },\n    paneWidth: {\n      options: ['default', 'narrow', 'wide'],\n      control: {\n      type: 'inline-radio'\n      },\n      description: 'Defines the width of the pane',\n      table: {\n        category: 'Pane'\n      }\n    },\n    hasPaneDivider: {\n      control: { type: 'boolean' },\n      description: 'Whether to show a pane line divider.',\n      table: {\n        category: 'Pane'\n      }\n    },\n    paneDividerWhenNarrow: {\n      options: ['inherit', 'none', 'line', 'filled'],\n      control: {\n        type: 'inline-radio'\n      },\n      description: 'Whether to show a divider between `pane` and `content` regions if `responsiveVariant` is set to `stackRegions`. `line` shows a single line. `filled` shows a thicker mobile-friendly divider.',\n      table: {\n        category: 'Pane'\n      }\n    },\n\n    // Content\n\n    contentWidth: {\n      options: ['full', 'sm', 'md', 'lg', 'xl'],\n      control: {\n        type: 'inline-radio'\n      },\n      description: 'Defines the maximum width of the content region. `full` sets it to full-width. Other values follow container widths from `sm` to `xl`. With smaller widths, the content region will try to stay centered to the viewport area.',\n      table: {\n        category: 'Content'\n      }\n    },\n\n    // Header\n\n    hasHeader: {\n      control: { type: 'boolean' },\n      table: {\n        category: 'Header'\n      }\n    },\n\n    hasHeaderDivider: {\n      control: { type: 'boolean' },\n      description: 'Whether to show a header divider.',\n      table: {\n        category: 'Header'\n      }\n    },\n\n    headerDividerWhenNarrow: {\n      options: ['inherit', 'none', 'line', 'filled'],\n      control: {\n        type: 'inline-radio'\n      },\n      description: 'Defines how the `header` divider should look on narrow viewports. `inherit` renders a `line` if `hasHeaderDivider` is true. `filled` shows a thicker mobile-friendly divider.',\n      table: {\n        category: 'Header'\n      }\n    },\n\n    // Footer\n\n    hasFooter: {\n      control: { type: 'boolean' },\n      table: {\n        category: 'Footer'\n      }\n    },\n\n    hasFooterDivider: {\n      control: { type: 'boolean' },\n      description: 'Whether to show a footer divider.',\n      table: {\n        category: 'Footer'\n      }\n    },\n\n    footerDividerWhenNarrow: {\n      options: ['inherit', 'none', 'line', 'filled'],\n      control: {\n        type: 'inline-radio'\n      },\n      description: 'Whether to show a divider above the `footer` region on narrow viewports. `line` shows a single line. `filled` shows a thicker mobile-friendly divider.',\n      table: {\n        category: 'Footer'\n      }\n    },\n\n    // HTML\n\n    headerChildren: {\n      description: 'creates a slot for header children',\n      table: {\n        category: 'HTML'\n      }\n    },\n    contentChildren: {\n      description: 'creates a slot for content children',\n      table: {\n        category: 'HTML'\n      }\n    },\n    paneChildren: {\n      description: 'creates a slot for pane children',\n      table: {\n        category: 'HTML'\n      }\n    },\n    footerChildren: {\n      description: 'creates a slot for footer children',\n      table: {\n        category: 'HTML'\n      }\n    }\n  },\n};\n\nexport const PageLayoutTemplate = ({\n  _debug,\n  containerWidth,\n  padding,\n  columnGap,\n  rowGap,\n  responsiveVariant,\n  primaryRegion,\n  hasPane,\n  paneWidth,\n  panePosition,\n  panePositionWhenNarrow,\n  hasPaneDivider,\n  paneDividerWhenNarrow,\n  contentWidth,\n  hasHeader,\n  hasHeaderDivider,\n  headerDividerWhenNarrow,\n  hasFooter,\n  hasFooterDivider,\n  footerDividerWhenNarrow,\n  contentChildren,\n  paneChildren,\n  headerChildren,\n  footerChildren\n}) => {\n  return (\n    <>\n      <LayoutTemplate\n        _debug={_debug}\n        containerWidth={containerWidth}\n        outerSpacing={padding}\n        innerSpacing='none'\n        columnGap={columnGap}\n        rowGap={rowGap}\n\n        responsiveVariant={responsiveVariant}\n        primaryRegion={primaryRegion}\n\n        hasPane={hasPane}\n        paneWidth={paneWidth}\n        panePosition={panePosition}\n        panePositionWhenNarrow={panePositionWhenNarrow}\n        hasPaneDivider={hasPaneDivider}\n        paneDividerWhenNarrow={paneDividerWhenNarrow}\n\n        contentWidth={contentWidth}\n\n        hasHeader={hasHeader}\n        hasHeaderDivider={hasHeaderDivider}\n        headerDividerWhenNarrow={headerDividerWhenNarrow}\n\n        hasFooter={hasFooter}\n        hasFooterDivider={hasFooterDivider}\n        footerDividerWhenNarrow={footerDividerWhenNarrow}\n\n        contentChildren={contentChildren}\n        paneChildren={paneChildren}\n        headerChildren={headerChildren}\n        footerChildren={footerChildren}\n      />\n    </>\n  );\n};\n\nexport const Playground = PageLayoutTemplate.bind({});\nPlayground.storyName = 'Playground';\nPlayground.parameters = {\n  layout: 'fullscreen',\n};\nPlayground.args = {\n  _debug: true,\n\n  // Structure\n  containerWidth: 'xl',\n  padding: 'normal',\n  columnGap: 'normal',\n  rowGap: 'normal',\n\n  // Responsive\n  responsiveVariant: 'stackRegions',\n  primaryRegion: 'content',\n\n  // Pane\n  hasPane: true,\n  panePosition: 'end',\n  panePositionWhenNarrow: 'inherit',\n  paneWidth: 'default',\n  hasPaneDivider: false,\n  paneDividerWhenNarrow: 'inherit',\n\n  // Content\n  contentWidth: 'full',\n\n  // Header\n  hasHeader: false,\n  hasHeaderDivider: false,\n  headerDividerWhenNarrow: 'inherit',\n\n  // Footer\n  hasFooter: false,\n  hasFooterDivider: false,\n  footerDividerWhenNarrow: 'inherit',\n\n  contentChildren: 'content',\n  paneChildren: 'pane',\n  headerChildren: 'header',\n  footerChildren: 'footer'\n\n}\n"
  },
  {
    "path": "docs/stories/components/Layout/SplitPageLayout.stories.jsx",
    "content": "// create a \"playground\" demo page that may set some defaults and allow story to access component controls\nimport React from 'react'\nimport clsx from 'clsx'\nimport {LayoutTemplate} from './LayoutBeta.stories'\n\nexport default {\n  title: 'Components/Layout/Beta/SplitPageLayout',\n  excludeStories: ['SplitPageLayoutTemplate'],\n  argTypes: {\n    // Structure\n\n    padding: {\n      options: ['normal', 'condensed', 'none'],\n      control: {\n        type: 'inline-radio'\n      },\n      description:\n        'Sets padding to regions individually. `normal` sets padding to 16px, with the `content` region getting 24px horizontal padding on `lg` breakpoints and above. `condensed` keeps the padding always at `16px`.',\n      table: {\n        category: 'Structure'\n      }\n    },\n\n    primaryRegion: {\n      options: ['content', 'pane'],\n      control: {\n        type: 'inline-radio'\n      },\n      description: 'Defines which region appears first on small viewports. `content` is default.',\n      table: {\n        category: 'Responsive'\n      }\n    },\n\n    // Pane\n\n    hasPane: {\n      control: {type: 'boolean'},\n      table: {\n        category: 'Pane'\n      }\n    },\n\n    paneWidth: {\n      options: ['default', 'narrow', 'wide'],\n      control: {\n        type: 'inline-radio'\n      },\n      description: 'Defines the width of the pane.',\n      table: {\n        category: 'Pane'\n      }\n    },\n\n    // Content\n\n    contentWidth: {\n      options: ['full', 'sm', 'md', 'lg', 'xl'],\n      control: {\n        type: 'inline-radio'\n      },\n      description:\n        'Defines the maximum width of the content region. `full` sets it to full-width. Other values follow container widths from `sm` to `xl`. With smaller widths, the content region will try to stay centered to the viewport area.',\n      table: {\n        category: 'Content'\n      }\n    },\n\n    // Header\n\n    hasHeader: {\n      control: { type: 'boolean' },\n      table: {\n        category: 'Header'\n      }\n    },\n\n    // Footer\n\n    hasFooter: {\n      control: { type: 'boolean' },\n      table: {\n        category: 'Footer'\n      }\n    },    \n\n    // HTML\n\n    contentChildren: {\n      description: 'creates a slot for content children',\n      table: {\n        category: 'HTML'\n      }\n    },\n    paneChildren: {\n      description: 'creates a slot for pane children',\n      table: {\n        category: 'HTML'\n      }\n    }\n  }\n}\n\nexport const SplitPageLayoutTemplate = ({\n  _debug,\n  padding,\n  primaryRegion,\n  hasPane,\n  paneWidth,\n  paneIsSticky,\n  contentWidth,\n  hasHeader,\n  hasFooter,\n  contentChildren,\n  paneChildren,\n  headerChildren,\n  footerChildren\n}) => {\n  return (\n    <>\n      <LayoutTemplate\n        _debug={_debug}\n        containerWidth=\"full\"\n        outerSpacing=\"none\"\n        innerSpacing={padding}\n        columnGap=\"none\"\n        rowGap=\"none\"\n        responsiveVariant=\"separateRegions\"\n        primaryRegion={primaryRegion}\n        hasPane={hasPane}\n        paneWidth={paneWidth}\n        paneIsSticky={paneIsSticky}\n        panePosition=\"start\"\n        hasPaneDivider={true}\n        contentWidth={contentWidth}\n        hasHeader={hasHeader}\n        hasHeaderDivider={true}\n        hasFooter={hasFooter}\n        hasFooterDivider={true}\n        contentChildren={contentChildren}\n        paneChildren={paneChildren}\n        headerChildren={headerChildren}\n        footerChildren={footerChildren}\n      />\n    </>\n  )\n}\n\nexport const Playground = SplitPageLayoutTemplate.bind({})\nPlayground.storyName = 'Playground'\nPlayground.parameters = {\n  layout: 'fullscreen'\n}\nPlayground.args = {\n  _debug: true,\n\n  // Structure\n  padding: 'normal',\n\n  // Responsive\n  primaryRegion: 'content',\n\n  // Pane\n  hasPane: true,\n  paneWidth: 'wide',\n  paneIsSticky: true,\n\n  // Content\n  contentWidth: 'full',\n\n  // Header\n  hasHeader: false,\n\n  // Footer\n  hasFooter: false,\n\n  // Children\n  contentChildren: 'content',\n  paneChildren: 'pane',\n  headerChildren: 'header',\n  footerChildren: 'footer',\n}\n"
  },
  {
    "path": "docs/stories/components/Layout/Stack.stories.jsx",
    "content": "import React from 'react'\nimport clsx from 'clsx'\n\nexport default {\n  title: 'Components/Layout/Stack',\n  excludeStories: ['StackTemplate'],\n  argTypes: {\n\n    // Debug\n\n    _debug: {\n      control: {\n        type: 'boolean',\n      },\n      table: {\n        category: 'Debug'\n      },\n    },\n\n    _height: {\n      control: {\n        type: 'number',\n      },\n      table: {\n        category: 'Debug'\n      },\n    },\n\n    _width: {\n      control: {\n        type: 'number',\n      },\n      table: {\n        category: 'Debug'\n      },\n    },\n\n    // Direction\n    direction: {\n      options: ['inline', 'block'],\n      control: {\n        type: 'inline-radio',\n      },\n      description: 'Sets how elements inside `Stack` are placed, either horizontally (`inline`) or vertically (`block`). This property follows the writing mode.',\n      table: {\n        category: 'Properties',\n        defaultValue: {\n          summary: 'block',\n        }\n      }\n    },\n\n    // Gap\n    gap: {\n      options: ['none', 'condensed', 'normal', 'spacious'],\n      control: {\n        type: 'inline-radio',\n      },\n      description: `Sets the spacing gap between items. All sizes are rendered in \\`rem\\` units.\n- \\`none\\`: 0\n- \\`condensed\\`: \\`var(--stack-gap-condensed, 8px)\\`,\n- \\`normal\\`: \\`var(--stack-gap-normal, 16px)\\` (default)\n- \\`spacious\\`: \\`var(--stack-gap-spacious, 24px)\\` (on regular viewports, otherwise it appears as \\`normal\\` on narrow viewports)\n<!-- - \\`custom\\`: set a custom size. When using with a framework such as ViewComponent or React, a custom value can be passed directly to the property. -->\n `,\n      table: {\n        category: 'Properties',\n        defaultValue: {\n          summary: 'normal',\n        }\n      }\n    },\n    // gap_custom: {\n    //   control: {\n    //     type: 'text'\n    //   },\n    //   description: 'A custom value to `gap`. Refer to [Primer Primitives](https://primer.style/primitives/spacing) for other spacing tokens. Example: `var(--base-size-12, 12px)`.',\n    //   table: {\n    //     category: 'Properties',\n    //   },\n    // },\n\n    // Align\n    align: {\n      options: ['stretch', 'start', 'center', 'end', 'baseline'],\n      control: {\n        type: 'inline-radio'\n      },\n      description: `Sets the alignment between items in the cross-axis of the specified direction. For example:\n- If \\`direction\\` is set to \\`block\\` (stacks vertically), it controls the horizontal alignment (left, center, right).\n- If \\`direction\\` is set to \\`inline\\` (stacks horizontally), it controls the vertical alignment (top, center, bottom).\n\nThis property behavior is equivalent to the \\`align-items\\` Flexbox property.`,\n      table: {\n        category: 'Properties',\n        defaultValue: {\n          summary: 'stretch',\n        }\n      }\n    },\n\n    // Align wrap\n    alignWrap: {\n      options: ['start', 'center', 'end', 'distribute', 'distributeEvenly'],\n      control: {\n        type: 'inline-radio'\n      },\n      description: 'Sets how stack lines are distributed, if they `wrap` into multiple lines. This has equivalent behavior to the `align-content` Flexbox property.',\n      table: {\n        category: 'Properties',\n        defaultValue: {\n          summary: 'start',\n        }\n      }\n    },\n\n    // Spread\n    spread: {\n      options: ['start', 'center', 'end', 'distribute', 'distributeEvenly'],\n      control: {\n        type: 'inline-radio',\n      },\n      description: 'Sets how items will be distributed in the stacking direction.',\n      table: {\n        category: 'Properties',\n        defaultValue: {\n          summary: 'start',\n        },\n      },\n    },\n\n    // Wrap\n    wrap: {\n      options: ['wrap', 'nowrap'],\n      control: {\n        type: 'inline-radio'\n      },\n      description: 'Sets whether items are forced onto one line or can wrap onto multiple lines.',\n      table: {\n        category: 'Properties',\n        defaultValue: {\n          summary: 'nowrap',\n        }\n      }\n    },\n\n    // Divider\n    showDividers: {\n      control: {\n        type: 'boolean'\n      },\n      description: `Whether a divider between items is shown or not.\n\n_Note: the presence of a divider duplicates the \\`gap\\` between items._`,\n      table: {\n        category: 'Properties',\n        defaultValue: {\n          summary: 'false',\n        }\n      }\n    },\n    dividerAriaRole: {\n      options: ['presentation', 'separator'],\n      control: {\n        type: 'inline-radio'\n      },\n      description: 'Sets which ARIA role will be used for the divider.',\n      table: {\n        category: 'Properties',\n        defaultValue: {\n          summary: 'presentation',\n        }\n      }\n    },\n\n    // Responsive properties / narrow\n\n    narrow_direction: {\n      options: ['inherit', 'inline', 'block'],\n      control: {\n        type: 'inline-radio',\n      },\n      description: 'Override `direction` on narrow viewports',\n      table: {\n        category: 'Narrow viewport properties',\n        defaultValue: {\n          summary: 'inherit'\n        }\n      },\n    },\n\n    narrow_gap: {\n      options: ['inherit', 'none', 'condensed', 'normal'],\n      control: {\n        type: 'inline-radio',\n      },\n      description: 'Override `gap` on narrow viewports',\n      table: {\n        category: 'Narrow viewport properties',\n        defaultValue: {\n          summary: 'inherit'\n        }\n      },\n    },\n\n    // narrow_gap_custom: {\n    //   control: {\n    //     type: 'text'\n    //   },\n    //   description: 'Override a custom value for `gap` for narrow viewports',\n    //   table: {\n    //     category: 'Narrow viewport properties'\n    //   },\n    // },\n\n    narrow_align: {\n      options: ['inherit', 'stretch', 'start', 'center', 'end', 'baseline'],\n      control: {\n        type: 'inline-radio'\n      },\n      table: {\n        category: 'Narrow viewport properties',\n        defaultValue: {\n          summary: 'inherit',\n        }\n      },\n    },\n\n    narrow_alignWrap: {\n      options: ['inherit', 'start', 'center', 'end', 'distribute', 'distributeEvenly'],\n      control: {\n        type: 'inline-radio'\n      },\n      table: {\n        category: 'Narrow viewport properties',\n        defaultValue: {\n          summary: 'inherit',\n        }\n      },\n    },\n\n    narrow_spread: {\n      options: ['inherit', 'start', 'center', 'end', 'distribute', 'distributeEvenly'],\n      control: {\n        type: 'inline-radio',\n      },\n      table: {\n        category: 'Narrow viewport properties',\n        defaultValue: {\n          summary: 'inherit'\n        }\n      },\n    },\n\n    narrow_wrap: {\n      options: ['inherit', 'wrap', 'nowrap'],\n      control: {\n        type: 'inline-radio'\n      },\n      table: {\n        category: 'Narrow viewport properties',\n        defaultValue: {\n          summary: 'inherit'\n        }\n      },\n    },\n\n    narrow_showDividers: {\n      control: {\n        type: 'boolean'\n      },\n      table: {\n        category: 'Narrow viewport properties',\n        defaultValue: {\n          summary: 'inherit'\n        }\n      },\n    },\n\n    // Responsive properties / wide\n\n    wide_direction: {\n      options: ['inherit', 'inline', 'block'],\n      control: {\n        type: 'inline-radio',\n      },\n      description: 'Override `direction` on wide viewports',\n      table: {\n        category: 'wide viewport properties',\n        defaultValue: {\n          summary: 'inherit'\n        }\n      },\n    },\n\n    wide_gap: {\n      options: ['inherit', 'none', 'condensed', 'normal', 'spacious'],\n      control: {\n        type: 'inline-radio',\n      },\n      description: 'Override `gap` on wide viewports',\n      table: {\n        category: 'wide viewport properties',\n        defaultValue: {\n          summary: 'inherit'\n        }\n      },\n    },\n\n    // wide_gap_custom: {\n    //   control: {\n    //     type: 'text'\n    //   },\n    //   description: 'Override a custom value for `gap` for wide viewports',\n    //   table: {\n    //     category: 'wide viewport properties'\n    //   },\n    // },\n\n    wide_align: {\n      options: ['inherit', 'stretch', 'start', 'center', 'end', 'baseline'],\n      control: {\n        type: 'inline-radio'\n      },\n      table: {\n        category: 'wide viewport properties',\n        defaultValue: {\n          summary: 'inherit',\n        }\n      },\n    },\n\n    wide_alignWrap: {\n      options: ['inherit', 'start', 'center', 'end', 'distribute', 'distributeEvenly'],\n      control: {\n        type: 'inline-radio'\n      },\n      table: {\n        category: 'wide viewport properties',\n        defaultValue: {\n          summary: 'inherit',\n        }\n      },\n    },\n\n    wide_spread: {\n      options: ['inherit', 'start', 'center', 'end', 'distribute', 'distributeEvenly'],\n      control: {\n        type: 'inline-radio',\n      },\n      table: {\n        category: 'wide viewport properties',\n        defaultValue: {\n          summary: 'inherit'\n        }\n      },\n    },\n\n    wide_wrap: {\n      options: ['inherit', 'wrap', 'nowrap'],\n      control: {\n        type: 'inline-radio'\n      },\n      table: {\n        category: 'wide viewport properties',\n        defaultValue: {\n          summary: 'inherit'\n        }\n      },\n    },\n\n    wide_showDividers: {\n      control: {\n        type: 'boolean'\n      },\n      table: {\n        category: 'wide viewport properties',\n        defaultValue: {\n          summary: 'inherit'\n        }\n      },\n    },\n\n    // Children\n    children: {\n      description: 'A slot for children elements.',\n      table: {\n        category: 'HTML'\n      }\n    }\n  },\n};\n\nexport const StackTemplate = ({\n  _debug,\n  _height,\n  _width,\n  direction,\n  gap,\n  //gap_custom,\n  align,\n  alignWrap,\n  spread,\n  wrap,\n  showDividers,\n  dividerAriaRole,\n\n  narrow_direction,\n  narrow_gap,\n  //narrow_gap_custom,\n  narrow_align,\n  narrow_alignWrap,\n  narrow_spread,\n  narrow_wrap,\n  narrow_showDividers,\n\n  wide_direction,\n  wide_gap,\n  //wide_gap_custom,\n  wide_align,\n  wide_alignWrap,\n  wide_spread,\n  wide_wrap,\n  wide_showDividers,\n\n  children\n}) => {\n\n  let custom_styles  = {};\n\n  // Default values\n  direction = direction ?? 'block';\n  gap = gap ?? 'normal';\n  alignWrap = alignWrap ?? 'start';\n  dividerAriaRole = dividerAriaRole ?? 'presentation';\n\n  // Default narrow values\n  narrow_direction = narrow_direction ?? 'inherit';\n  narrow_gap = narrow_gap ?? 'inherit';\n  narrow_align = narrow_align ?? 'inherit';\n  narrow_alignWrap = narrow_alignWrap ?? 'inherit';\n  narrow_spread = narrow_spread ?? 'inherit';\n  narrow_wrap = narrow_wrap ?? 'inherit';\n  narrow_showDividers = narrow_showDividers ?? 'inherit';\n\n  // Default wide values\n  wide_direction = wide_direction ?? 'inherit';\n  wide_gap = wide_gap ?? 'inherit';\n  wide_align = wide_align ?? 'inherit';\n  wide_alignWrap = wide_alignWrap ?? 'inherit';\n  wide_spread = wide_spread ?? 'inherit';\n  wide_wrap = wide_wrap ?? 'inherit';\n  wide_showDividers = wide_showDividers ?? 'inherit';\n\n  // Custom gap - not available\n  // if (gap === 'custom') {\n  //   custom_styles['--Stack-gap-whenRegular'] = gap_custom;\n  // }\n  // if (narrow_gap === 'custom') {\n  //   custom_styles['--Stack-gap-whenNarrow'] = narrow_gap_custom;\n  // }\n  // if (wide_gap === 'custom') {\n  //   custom_styles['--Stack-gap-whenWide'] = wide_gap_custom;\n  // }\n\n  // Null value for states that don't require a modifier class\n  align = align === 'stretch' ? null : align;\n  alignWrap = alignWrap === 'start' ? null : alignWrap;\n  spread = spread === 'start' ? null : spread;\n  wrap = wrap === 'nowrap' ? null : wrap;\n  gap = gap === 'normal' ? null : gap;\n\n  // Null value for inherit responsive values\n  narrow_direction = narrow_direction === 'inherit' ? direction : narrow_direction;\n  narrow_gap = narrow_gap === 'inherit' ? gap : narrow_gap;\n  narrow_align = narrow_align === 'inherit' ? align : narrow_align;\n  narrow_alignWrap = narrow_alignWrap === 'inherit' ? alignWrap : narrow_alignWrap;\n  narrow_spread = narrow_spread === 'inherit' ? spread : narrow_spread;\n  narrow_wrap = narrow_wrap === 'inherit' ? wrap : narrow_wrap;\n  narrow_showDividers = narrow_showDividers === 'inherit' ? showDividers : narrow_showDividers;\n\n  wide_direction = wide_direction === 'inherit' ? null : wide_direction;\n  wide_gap = wide_gap === 'inherit' ? null : wide_gap;\n  wide_align = wide_align === 'inherit' ? null : wide_align;\n  wide_alignWrap = wide_alignWrap === 'inherit' ? null : wide_alignWrap;\n  wide_spread = wide_spread === 'inherit' ? null : wide_spread;\n  wide_wrap = wide_wrap === 'inherit' ? null : wide_wrap;\n  wide_showDividers = wide_showDividers === 'inherit' ? null : wide_showDividers;\n\n  // Dividers logic\n  showDividers = wrap === 'wrap' ? false : showDividers;\n  narrow_showDividers = narrow_wrap === 'wrap' ? false : narrow_showDividers;\n  wide_showDividers = wide_wrap === 'wrap' ? false : wide_showDividers;\n\n  const hasDividers = showDividers || narrow_showDividers || wide_showDividers;\n\n  return (\n    <>\n      <div\n        className={clsx(\n          'Stack',\n          direction && `Stack--dir-${direction}-whenRegular`,\n          narrow_direction && 'Stack--dir-' + `${narrow_direction}-whenNarrow`,\n          wide_direction && 'Stack--dir-' + `${wide_direction}-whenWide`,\n\n          gap && 'Stack--gap-' + `${gap}-whenRegular`,\n          narrow_gap && 'Stack--gap-' + `${narrow_gap}-whenNarrow`,\n          wide_gap && 'Stack--gap-' + `${wide_gap}-whenWide`,\n\n          align && 'Stack--align-' + `${align}-whenRegular`,\n          narrow_align && 'Stack--align-' + `${narrow_align}-whenNarrow`,\n          wide_align && 'Stack--align-' + `${wide_align}-whenWide`,\n\n          alignWrap && 'Stack--alignWrap-' + `${alignWrap}-whenRegular`,\n          narrow_alignWrap && 'Stack--alignWrap-' + `${narrow_alignWrap}-whenNarrow`,\n          wide_alignWrap && 'Stack--alignWrap-' + `${wide_alignWrap}-whenWide`,\n\n          spread && 'Stack--spread-' + `${spread}-whenRegular`,\n          narrow_spread && 'Stack--spread-' + `${narrow_spread}-whenNarrow`,\n          wide_spread && 'Stack--spread-' + `${wide_spread}-whenWide`,\n\n          wrap && 'Stack--' + `${wrap}-whenRegular`,\n          narrow_wrap && 'Stack--' + `${narrow_wrap}-whenNarrow`,\n          wide_wrap && 'Stack--' + `${wide_wrap}-whenWide`,\n\n          showDividers && 'Stack--showDividers-whenRegular',\n          narrow_showDividers && 'Stack--showDividers-whenNarrow',\n          wide_showDividers && 'Stack--showDividers-whenWide',\n\n        )}\n        //style={custom_styles}\n      >\n        {children}\n\n        {!children && (\n          <>\n            <div className=\"Stack-item _debug _debug-item-1\">1</div>\n            {hasDividers && ( <hr className=\"Stack-divider\" role={dividerAriaRole} /> )}\n            <div className=\"Stack-item _debug _debug-item-2\">2</div>\n            {hasDividers && ( <hr className=\"Stack-divider\" role={dividerAriaRole} /> )}\n            <div className=\"Stack-item _debug _debug-item-3\">3</div>\n            {hasDividers && ( <hr className=\"Stack-divider\" role={dividerAriaRole} /> )}\n            <div className=\"Stack-item _debug _debug-item-4\">4</div>\n            {hasDividers && ( <hr className=\"Stack-divider\" role={dividerAriaRole} /> )}\n            <div className=\"Stack-item _debug _debug-item-5\">5</div>\n            {hasDividers && ( <hr className=\"Stack-divider\" role={dividerAriaRole} /> )}\n            <div className=\"Stack-item _debug _debug-item-6\">6</div>\n          </>\n        )}\n      </div>\n\n      {_debug && (\n        <>\n          <style type=\"text/css\">{`\n            .Stack {\n              background: beige;\n              ${_height ? 'height: '+ _height + 'px;': ''}\n              ${_width ? 'width: '+ _width + 'px;': ''}\n            }\n            .Stack ._debug {\n              padding: 8px;\n              border-radius: 6px;\n            }\n            .Stack ._debug-item-1 {\n              background: lightblue;\n              min-inline-size: 6ch;\n              font-size: 1rem;\n            }\n            .Stack ._debug-item-2 {\n              background: coral;\n              min-inline-size: 9ch;\n              font-size: 1.25rem;\n            }\n            .Stack ._debug-item-3 {\n              background: darkseagreen;\n              inline-size: 8ch;\n              font-size: 1rem;\n            }\n            .Stack ._debug-item-4 {\n              background: khaki;\n              inline-size: 7ch;\n              font-size: 1.25rem;\n            }\n            .Stack ._debug-item-5 {\n              background: lightpink;\n              inline-size: 10ch;\n              font-size: 1rem;\n            }\n            .Stack ._debug-item-6 {\n              background: lightsalmon;\n              inline-size: 6ch;\n              font-size: 1.25rem;\n            }\n          `}</style>\n        </>\n      )}\n    </>\n  );\n};\n\nexport const Playground = StackTemplate.bind({})\nPlayground.args = {\n  _debug: true,\n  direction: \"block\",\n  gap: \"normal\",\n  align: \"stretch\",\n};\n"
  },
  {
    "path": "docs/stories/components/Layout/StackExamples.stories.jsx",
    "content": "import React from 'react'\nimport {\n  StackTemplate\n} from './Stack.stories'\n\nexport default {\n  title: 'Components/Layout/Stack/Examples'\n}\n\nexport const ButtonInlineStack = StackTemplate.bind({})\nButtonInlineStack.args = {\n  direction: \"inline\",\n  gap: \"condensed\",\n  children: (\n    <>\n      <button class=\"btn\">Button</button>\n      <button class=\"btn\">Button</button>\n      <button class=\"btn\">Button</button>\n    </>\n  )\n};\n\nexport const PageSections = StackTemplate.bind({})\nPageSections.args = {\n  direction: \"block\",\n  gap: \"normal\",\n  children: (\n    <>\n      <div className=\"Box p-2\" style={{minHeight: '20ch'}}>Section 1</div>\n      <div className=\"Box p-2\" style={{minHeight: '12ch'}}>Section 2</div>\n      <div className=\"Box p-2\" style={{minHeight: '16ch'}}>Section 3</div>\n    </>\n  )\n};\n\nexport const Composition = StackTemplate.bind({})\nComposition.args = {\n  direction: \"block\",\n  gap: \"normal\",\n  children: (\n    <>\n      <StackTemplate divider={true} children={(\n        <>\n          <StackTemplate gap=\"condensed\" children={(\n            <>\n              <h4>Heading</h4>\n              <div>Lorem ipsum dolor sit amet avec consequer domulus sit lorem ipsum dolor sit amet.</div>\n              <StackTemplate direction=\"inline\" wrap=\"wrap\" gap=\"condensed\" children={(\n                <>\n                  <span class=\"Label\">Inline labels set to wrap</span>\n                  <span class=\"Label\">Label 2</span>\n                  <span class=\"Label\">Label 3</span>\n                  <span class=\"Label\">Label 4</span>\n                  <span class=\"Label\">Label 5</span>\n                </>\n              )} />\n            </>\n          )} />\n          <hr className=\"Stack-divider\" />\n          <StackTemplate gap=\"condensed\" children={(\n            <>\n              <h4>Heading</h4>\n              <div>Lorem ipsum dolor sit amet avec consequer domulus sit lorem ipsum dolor sit amet.</div>\n              <StackTemplate direction=\"inline\" wrap=\"wrap\" gap=\"condensed\" children={(\n                <>\n                  <span class=\"Label\">Inline labels set to wrap</span>\n                  <span class=\"Label\">Label 2</span>\n                  <span class=\"Label\">Label 3</span>\n                  <span class=\"Label\">Label 4</span>\n                  <span class=\"Label\">Label 5</span>\n                </>\n              )} />\n            </>\n          )} />\n        </>\n      )} />\n    </>\n  )\n};"
  },
  {
    "path": "docs/stories/components/Layout/StackFeatures.stories.jsx",
    "content": "import React from 'react'\nimport {\n  StackTemplate\n} from './Stack.stories'\n\nexport default {\n  title: 'Components/Layout/Stack/Features'\n}\n\nexport const DirectChildren = StackTemplate.bind({})\nDirectChildren.args = {\n  direction: \"block\",\n  gap: \"normal\",\n  narrow_gap: \"condensed\",\n  children: (\n    <>\n      <div style={{backgroundColor: 'lightpink', padding: '16px'}}>Item 1</div>\n      <div style={{backgroundColor: 'orange', padding: '16px'}}>Item 2</div>\n      <div style={{backgroundColor: 'lightblue', padding: '16px'}}>Item 3</div>\n      <div style={{backgroundColor: 'darkseagreen', padding: '16px'}}>Item 4</div>\n      <div style={{backgroundColor: 'khaki', padding: '16px'}}>Item 5</div>\n    </>\n  )\n};\n\nexport const StackItems = StackTemplate.bind({})\nStackItems.args = {\n  direction: \"inline\",\n  gap: \"normal\",\n  wrap: \"wrap\",\n  narrow_gap: \"condensed\",\n  children: (\n    <>\n      <div className=\"Stack-item\">\n        <div style={{backgroundColor: 'lightpink', padding: '16px'}}>Item 1</div>\n      </div>\n      <div className=\"Stack-item\">\n        <div style={{backgroundColor: 'orange', padding: '16px'}}>Item 2</div>\n      </div>\n      <div className=\"Stack-item\">\n        <div style={{backgroundColor: 'lightblue', padding: '16px'}}>Item 3</div>\n      </div>\n      <div className=\"Stack-item\">\n        <div style={{backgroundColor: 'darkseagreen', padding: '16px'}}>Item 4</div>\n      </div>\n      <div className=\"Stack-item\">\n        <div style={{backgroundColor: 'khaki', padding: '16px'}}>Item 5</div>\n      </div>\n    </>\n  )\n};\n\nexport const ExpandStackItem = StackTemplate.bind({})\nExpandStackItem.args = {\n  direction: \"inline\",\n  wrap: \"wrap\",\n  gap: \"normal\",\n  narrow_gap: \"condensed\",\n  children: (\n    <>\n      <div className=\"Stack-item Stack-item--expand-whenRegular Stack-item--expand-whenNarrow\">\n        <div style={{backgroundColor: 'lightpink', padding: '16px'}}>Item 1 (expand)</div>\n      </div>\n      <div className=\"Stack-item\">\n        <div style={{backgroundColor: 'orange', padding: '16px'}}>Item 2</div>\n      </div>\n      <div className=\"Stack-item\">\n        <div style={{backgroundColor: 'lightblue', padding: '16px'}}>Item 3</div>\n      </div>\n      <div className=\"Stack-item\">\n        <div style={{backgroundColor: 'darkseagreen', padding: '16px'}}>Item 4</div>\n      </div>\n      <div className=\"Stack-item\">\n        <div style={{backgroundColor: 'khaki', padding: '16px'}}>Item 5</div>\n      </div>\n    </>\n  )\n};\n\nexport const ExpandStackItems = StackTemplate.bind({})\nExpandStackItems.args = {\n  direction: \"inline\",\n  wrap: \"wrap\",\n  gap: \"normal\",\n  narrow_gap: \"condensed\",\n  children: (\n    <>\n      <div className=\"Stack-item Stack-item--expand-whenRegular Stack-item--expand-whenNarrow\">\n        <div style={{backgroundColor: 'lightpink', padding: '16px'}}>Item 1 (expand)</div>\n      </div>\n      <div className=\"Stack-item\">\n        <div style={{backgroundColor: 'orange', padding: '16px'}}>Item 2</div>\n      </div>\n      <div className=\"Stack-item\">\n        <div style={{backgroundColor: 'lightblue', padding: '16px'}}>Item 3</div>\n      </div>\n      <div className=\"Stack-item\">\n        <div style={{backgroundColor: 'darkseagreen', padding: '16px'}}>Item 4</div>\n      </div>\n      <div className=\"Stack-item Stack-item--expand-whenRegular Stack-item--expand-whenNarrow\">\n        <div style={{backgroundColor: 'khaki', padding: '16px'}}>Item 5 (expand)</div>\n      </div>\n    </>\n  )\n};\n\nexport const ContentOverflow = StackTemplate.bind({})\nContentOverflow.args = {\n  direction: \"block\",\n  gap: \"normal\",\n  narrow_gap: \"condensed\",\n  children: (\n    <>\n      <div className=\"Stack-item\">\n        <div style={{backgroundColor: 'lightpink', padding: '16px'}}>\n          Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum id faucibus sapien. Nullam gravida tortor eget lacinia volutpat. Vestibulum efficitur lorem non ex ultricies accumsan. Vestibulum porttitor nunc non tellus auctor rutrum. Morbi nec augue turpis. Vestibulum pulvinar semper risus id fermentum. Nulla egestas metus id nulla ullamcorper ullamcorper nec in urna. Duis tincidunt finibus quam, quis pretium odio pulvinar nec. Nullam malesuada sodales ligula. Nunc varius arcu et tellus condimentum interdum.\n        </div>\n      </div>\n      <div className=\"Stack-item\">\n        <div style={{backgroundColor: 'orange', padding: '16px'}}>\n          Ut eu ligula tellus. Integer efficitur sit amet lorem nec hendrerit. In hac habitasse platea dictumst. Donec aliquam posuere leo iaculis efficitur. Curabitur malesuada placerat est, sit amet fermentum quam dignissim congue. Etiam interdum, leo sit amet molestie ornare, nisi ipsum cursus odio, a auctor turpis dolor in justo. Nulla molestie dolor sit amet lectus faucibus gravida. Maecenas ac ornare magna, in ultricies lectus. Nam venenatis porta pellentesque. Nullam odio nisl, accumsan id rutrum in, ultricies ac purus. Donec nec blandit risus.\n        </div>\n      </div>\n      <div className=\"Stack-item\">\n        <div style={{backgroundColor: 'lightblue', padding: '16px'}}>\n          Ut cursus elit leo. Curabitur in lorem eget sem ullamcorper tempor. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent convallis vulputate turpis, fringilla congue felis laoreet tempus. Fusce tincidunt sodales lacus eu volutpat. Duis a semper neque. Aenean fermentum bibendum lectus, et aliquam ligula elementum vitae. Cras tempor lacus ipsum, vel sagittis sem laoreet et. Nulla vel tortor metus. Nullam euismod, dui non vulputate pulvinar, nisl sem malesuada dolor, vel malesuada nibh dui nec arcu. Nunc accumsan justo purus, non sodales massa blandit mattis. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Aenean vel mollis orci, at consequat ante. Curabitur pharetra euismod condimentum. Pellentesque mauris lacus, ultricies sit amet lacus a, congue scelerisque dui.\n        </div>\n      </div>\n      <div className=\"Stack-item\">\n        <div style={{backgroundColor: 'darkseagreen', padding: '16px', textOverflow: 'ellipsis', whiteSpace: 'nowrap', overflow: 'hidden'}}>\n          Vestibulum faucibus luctus bibendum. Nunc sodales interdum dapibus. Nulla aliquet nibh ac est pellentesque eleifend. Praesent ultricies eu nunc vel dignissim. Cras tempus porttitor arcu porttitor condimentum. Nulla imperdiet turpis nec tincidunt luctus. Curabitur in congue urna. Nulla vehicula nunc hendrerit, tristique est porta, tristique erat. Duis vel neque sed eros eleifend feugiat non eget metus. Curabitur elit nunc, condimentum et mollis vitae, vestibulum et lorem. Duis luctus tortor eu vulputate volutpat. Fusce egestas volutpat ante et lobortis. Integer scelerisque neque vitae lorem pellentesque elementum. Sed fringilla lacus at hendrerit tincidunt. Vestibulum pretium, odio nec commodo imperdiet, nibh eros viverra mauris, eget pellentesque est nulla sit amet nunc. Cras mi metus, tristique et tincidunt at, tristique sed dolor.\n        </div>\n      </div>\n      <div className=\"Stack-item Stack-item--expand-whenRegular Stack-item--expand-whenNarrow\">\n        <div style={{backgroundColor: 'khaki', padding: '16px'}}>\n          In tempus, urna eu egestas convallis, nunc nisi faucibus lectus, et tempor felis nisi nec nunc. Morbi porttitor libero ac ipsum efficitur ullamcorper. Praesent eget velit volutpat, gravida odio vel, aliquet lectus. Sed a lorem imperdiet, tempor ligula eget, rutrum lorem. Nulla magna purus, iaculis sit amet volutpat et, varius sed orci. Curabitur eu purus quis mi dictum faucibus sit amet in lectus. Nam egestas quis felis sit amet finibus. In congue elementum lorem, id molestie neque commodo nec. Maecenas vitae accumsan orci. Aenean imperdiet et tellus et tincidunt. Donec non porta justo, sit amet laoreet risus. Mauris in bibendum tellus, at lobortis tortor.\n        </div>\n      </div>\n      <div className=\"Stack-item\">\n        <div style={{backgroundColor: 'coral', padding: '16px'}}>\n          Item 6\n        </div>\n      </div>\n      <div className=\"Stack-item\">\n        <div style={{backgroundColor: 'pink', padding: '16px'}}>\n          Item 7\n        </div>\n      </div>\n    </>\n  )\n};\n"
  },
  {
    "path": "docs/stories/deprecated-components/BoxOverlay/BoxOverlay.mdx",
    "content": "import {Canvas, Meta, Story} from '@storybook/blocks'\n\nimport * as BoxOverlayStories from './BoxOverlay.stories'\n\n<Meta of={BoxOverlayStories} />\n\n# BoxOverlay\n\nUse the `Box--overlay` with the `<details>` and [`<details-dialog>`](https://github.com/github/details-dialog), and add the `details-overlay-dark` utility if you wish to apply a dark transparent background.\n\nBox overlays come in three widths. The default `Box--overlay` is 440px wide, `Box-overlay--narrow` is 320px wide, and `Box-overlay--wide` is 640px wide.\n\nSee [aria attributes](https://www.w3.org/TR/html-aria/#allowed-aria-roles-states-and-properties)\n\n<Canvas of={BoxOverlayStories.Default} />\n"
  },
  {
    "path": "docs/stories/deprecated-components/BoxOverlay/BoxOverlay.stories.tsx",
    "content": "import React from 'react'\nimport {BADGE} from '@geometricpanda/storybook-addon-badges'\n\nexport default {\n  title: 'Deprecated/BoxOverlay',\n  parameters: {\n    storyType: 'banner',\n    controls: {hideNoControlsWarning: true},\n    badges: [BADGE.DEPRECATED],\n  },\n}\n\nexport const Default = () => {\n  return (\n    <details className=\"details-reset details-overlay details-overlay-dark\">\n      <summary className=\"btn\" aria-haspopup=\"dialog\">\n        Open dialog\n      </summary>\n      <details-dialog className=\"Box Box--overlay d-flex flex-column anim-fade-in fast\">\n        <div className=\"Box-header\">\n          <button\n            className=\"Box-btn-octicon btn-octicon float-right\"\n            type=\"button\"\n            aria-label=\"Close dialog\"\n            data-close-dialog\n          >\n            <svg\n              className=\"octicon octicon-x\"\n              viewBox=\"0 0 12 16\"\n              version=\"1.1\"\n              width=\"12\"\n              height=\"16\"\n              aria-hidden=\"true\"\n            >\n              <path\n                fill-rule=\"evenodd\"\n                d=\"M7.48 8l3.75 3.75-1.48 1.48L6 9.48l-3.75 3.75-1.48-1.48L4.52 8 .77 4.25l1.48-1.48L6 6.52l3.75-3.75 1.48 1.48L7.48 8z\"\n              ></path>\n            </svg>\n          </button>\n          <h3 className=\"Box-title\">Box title</h3>\n        </div>\n        <div className=\"overflow-auto\">\n          <div className=\"Box-body overflow-auto\">\n            <p>\n              The quick brown fox jumps over the lazy dog and feels as if he were in the seventh heaven of typography\n              together with Hermann Zapf, the most famous artist of the...\n            </p>\n          </div>\n          <ul>\n            <li className=\"Box-row\">\n              <img\n                className=\"avatar v-align-middle mr-2\"\n                src=\"https://avatars.githubusercontent.com/broccolini?s=48\"\n                alt=\"broccolini\"\n                width=\"24\"\n                height=\"24\"\n              />\n              @broccolini\n            </li>\n            <li className=\"Box-row border-bottom\">\n              <img\n                className=\"avatar v-align-middle mr-2\"\n                src=\"https://avatars.githubusercontent.com/jonrohan?s=48\"\n                alt=\"jonrohan\"\n                width=\"24\"\n                height=\"24\"\n              />\n              @jonrohan\n            </li>\n            <li className=\"Box-row border-bottom\">\n              <img\n                className=\"avatar v-align-middle mr-2\"\n                src=\"https://avatars.githubusercontent.com/shawnbot?s=48\"\n                alt=\"shawnbot\"\n                width=\"24\"\n                height=\"24\"\n              />\n              @shawnbot\n            </li>\n          </ul>\n        </div>\n        <div className=\"Box-footer\">\n          <button type=\"button\" className=\"btn btn-block\" data-close-dialog>\n            Okidoki\n          </button>\n        </div>\n      </details-dialog>\n    </details>\n  )\n}\n"
  },
  {
    "path": "docs/stories/deprecated-components/BranchName/BranchName.mdx",
    "content": "import {Canvas, Meta, Story} from '@storybook/blocks'\n\nimport * as BranchNameStories from './BranchName.stories'\n\n<Meta of={BranchNameStories} />\n\n# BranchName\n\nBranch names can be a link, span, and include an octicon before the branch name.\n\n<Canvas of={BranchNameStories.Default} />\n"
  },
  {
    "path": "docs/stories/deprecated-components/BranchName/BranchName.stories.tsx",
    "content": "import React from 'react'\nimport {BADGE} from '@geometricpanda/storybook-addon-badges'\n\nexport default {\n  title: 'Deprecated/BranchName',\n  parameters: {\n    storyType: 'banner',\n    controls: {hideNoControlsWarning: true},\n    badges: [BADGE.DEPRECATED],\n  },\n}\n\nexport const Default = () => {\n  return (\n    <div style={{display: 'inline-grid', gap: '1rem', gridAutoFlow: 'row'}}>\n      <span class=\"branch-name\">a_new_feature_branch</span>\n      <a href=\"#url\" class=\"branch-name\">\n        a_new_feature_branch\n      </a>\n      <span class=\"branch-name\">\n        <svg\n          xmlns=\"http://www.w3.org/2000/svg\"\n          viewBox=\"0 0 16 16\"\n          width=\"16\"\n          height=\"16\"\n          class=\"octicon octicon-git-branch\"\n        >\n          <path\n            fill-rule=\"evenodd\"\n            d=\"M11.75 2.5a.75.75 0 100 1.5.75.75 0 000-1.5zm-2.25.75a2.25 2.25 0 113 2.122V6A2.5 2.5 0 0110 8.5H6a1 1 0 00-1 1v1.128a2.251 2.251 0 11-1.5 0V5.372a2.25 2.25 0 111.5 0v1.836A2.492 2.492 0 016 7h4a1 1 0 001-1v-.628A2.25 2.25 0 019.5 3.25zM4.25 12a.75.75 0 100 1.5.75.75 0 000-1.5zM3.5 3.25a.75.75 0 111.5 0 .75.75 0 01-1.5 0z\"\n          ></path>\n        </svg>\n        a_new_feature_branch\n      </span>\n    </div>\n  )\n}\n"
  },
  {
    "path": "docs/stories/deprecated-components/Button/Button.mdx",
    "content": "import {Canvas, Meta, Story} from '@storybook/blocks'\n\nimport * as ButtonStories from './Button.stories'\n\n<Meta of={ButtonStories} />\n\n# Button\n\nButtons are used for **actions**, like in forms, while textual hyperlinks are used for **destinations**, or moving from one page to another.\n\nNote: When using a `<button>` element, **always specify a `type`**.\n\n## Button types\n\n### Default\n\nUse the standard — yet classy — `.btn` for form actions and general page actions. These are used extensively around the site.\n\n<Canvas of={ButtonStories.Default} />\n\n### Primary\n\nPrimary buttons are green and are used to indicate the _primary_ action on a page. When you need your buttons to stand out, use `.btn.btn-primary`. You can use it with both button sizes—just add `.btn-primary`.\n\n<Canvas of={ButtonStories.Primary} />\n\n### Outline\n\nOutline buttons downplay an action as they appear like boxy links. Just add `.btn-outline` and go.\n\n<Canvas of={ButtonStories.Outline} />\n\n### Danger\n\nDanger buttons are red. They help reiterate that the intended action is important or potentially dangerous (e.g., deleting a repo or transferring ownership). Similar to the primary buttons, just add `.btn-danger`.\n\n<Canvas of={ButtonStories.Danger} />\n\n### Link\n\nCreate a button that looks like a link with `.btn-link`. Rather than using an `<a>` to trigger JS, this style on a `<button>` should be used for better accessibility.\n\n**The `.btn-link` class is not designed to be used with `.btn`; the overlapping styles are not compatible.**\n\n<Canvas of={ButtonStories.Link} />\n\n### Invisible\n\nWhen you want a link, but you want it padded and line heightened like a button best for \"cancel\" actions on forms.\n\n<Canvas of={ButtonStories.Invisible} />\n\n## Button states\n\n### Selected\n\nAdding an `aria-selected=\"true\"` attribute will keep the button in a selected state.\n\n<Canvas of={ButtonStories.Selected} />\n\n### Disabled\n\nDisable `<button>` and `<a>` elements with the `aria-disabled=\"true\"` attribute.\n\n<Canvas of={ButtonStories.Disabled} />\n\n## Button variations\n\n### Sizes\n\nNext to the default size there is also a `.btn-sm` (small) and `.btn-large` option. Use them to decrease or increase the button size. This is useful for fitting a button next to an input or turning a button into a prominent call to action in hero sections.\n\nType scale utilities can be used to alter the font-size if needed. Padding is applied in em's so that it scales proportionally with the font-size.\n\n<Canvas of={ButtonStories.Sizes} />\n\n### Block button\n\nMake any button full-width by adding `.btn-block`. It adds `width: 100%;`, changes the `display` from `inline-block` to `block`, and centers the button text.\n\n<Canvas of={ButtonStories.Block} />\n\n### Hidden text button\n\nUse `.hidden-text-expander` to indicate and toggle hidden text.\n\n<Canvas of={ButtonStories.HiddenText} />\n\nYou can also make the expander appear inline by adding `.inline`.\n\n## Button with icons\n\nIcons can be added to any button.\n\n<Canvas of={ButtonStories.WithIcons} />\n\n### Icon-only button\n\nIcon-only buttons `.btn-octicon` turn blue on hover. Use `.btn-octicon-danger` to turn an icon red on hover.\n\n<Canvas of={ButtonStories.IconOnly} />\n\n### Close button\n\nWhen using the `octicon-x` icon for a close button, add `.close-button` to remove the default button styles.\n\n<Canvas of={ButtonStories.CloseButton} />\n\n## Button with counts\n\nYou can easily append a count to a **small button**. Add the `.btn-with-count` class to the `.btn-sm` and then add the `.social-count` after the button.\n\n**Be sure to clear the float added by the additional class.**\n\n<Canvas of={ButtonStories.ButtonWithCounts} />\n\n## Button groups\n\nHave a hankering for a series of buttons that are attached to one another? Wrap them in a `.BtnGroup` and the buttons will be rounded and spaced automatically.\n\n<Canvas of={ButtonStories.ButtonGroup} />\n\nUse `BtnGroup-item btn btn-sm` for a smaller BtnGroup items.\n\n<Canvas of={ButtonStories.ButtonGroupSmall} />\n\nAdd `.BtnGroup-parent` to parent elements, like `<form>`s or `<details>`s, within `.BtnGroup`s for proper spacing and rounded corners.\n\n<Canvas of={ButtonStories.ButtonGroupParent} />\n"
  },
  {
    "path": "docs/stories/deprecated-components/Button/Button.stories.tsx",
    "content": "import React from 'react'\nimport {BADGE} from '@geometricpanda/storybook-addon-badges'\n\nexport default {\n  title: 'Deprecated/Button',\n  parameters: {\n    storyType: 'banner',\n    controls: {hideNoControlsWarning: true},\n    badges: [BADGE.DEPRECATED],\n  },\n}\n\nexport const Default = () => {\n  return (\n    <>\n      <button className=\"btn\" type=\"button\">\n        Button\n      </button>\n    </>\n  )\n}\n\nexport const Primary = () => {\n  return (\n    <>\n      <button className=\"btn btn-primary\" type=\"button\">\n        Button\n      </button>\n    </>\n  )\n}\n\nexport const Outline = () => {\n  return (\n    <>\n      <button className=\"btn btn-outline\" type=\"button\">\n        Button\n      </button>\n    </>\n  )\n}\n\nexport const Danger = () => {\n  return (\n    <>\n      <button className=\"btn btn-danger\" type=\"button\">\n        Button\n      </button>\n    </>\n  )\n}\n\nexport const Link = () => {\n  return (\n    <>\n      <button className=\"btn-link\" type=\"button\">\n        Link button\n      </button>\n    </>\n  )\n}\n\nexport const Invisible = () => {\n  return (\n    <>\n      <button className=\"btn btn-invisible\" type=\"button\">\n        Cancel\n      </button>\n      <button className=\"btn\" type=\"button\">\n        Submit\n      </button>\n    </>\n  )\n}\n\nexport const Hover = () => {\n  return (\n    <div className=\"d-inline-flex flex-column\">\n      <button className=\"btn mb-2\" type=\"button\">\n        Button\n      </button>\n      <button className=\"btn btn-primary mb-2\" type=\"button\">\n        Button\n      </button>\n      <button className=\"btn btn-outline mb-2\" type=\"button\">\n        Button\n      </button>\n      <button className=\"btn btn-danger mb-2\" type=\"button\">\n        Button\n      </button>\n      <button className=\"btn-link mb-2\" type=\"button\">\n        Link button\n      </button>\n      <button className=\"btn btn-invisible\" type=\"button\">\n        Cancel\n      </button>\n    </div>\n  )\n}\nHover.parameters = {pseudo: {hover: true}}\n\nexport const Focus = () => {\n  return (\n    <div className=\"d-inline-flex flex-column\">\n      <button className=\"btn mb-2\" type=\"button\">\n        Button\n      </button>\n      <button className=\"btn btn-primary mb-2\" type=\"button\">\n        Button\n      </button>\n      <button className=\"btn btn-outline mb-2\" type=\"button\">\n        Button\n      </button>\n      <button className=\"btn btn-danger mb-2\" type=\"button\">\n        Button\n      </button>\n      <button className=\"btn-link mb-2\" type=\"button\">\n        Link button\n      </button>\n      <button className=\"btn btn-invisible\" type=\"button\">\n        Cancel\n      </button>\n    </div>\n  )\n}\nFocus.parameters = {pseudo: {focusVisible: true}}\n\nexport const Selected = () => {\n  return (\n    <>\n      <div className=\"BtnGroup d-block mb-2\">\n        <button className=\"BtnGroup-item btn\" type=\"button\">\n          Button\n        </button>\n        <button className=\"BtnGroup-item btn\" type=\"button\" aria-selected=\"true\">\n          Button\n        </button>\n        <button className=\"BtnGroup-item btn btn-danger\" type=\"button\">\n          Danger\n        </button>\n      </div>\n\n      <div className=\"BtnGroup d-block mb-2 ml-0\">\n        <button className=\"BtnGroup-item btn btn-outline\" type=\"button\">\n          Button\n        </button>\n        <button className=\"BtnGroup-item btn btn-outline\" type=\"button\" aria-selected=\"true\">\n          Button\n        </button>\n        <button className=\"BtnGroup-item btn btn-outline\" type=\"button\">\n          Button\n        </button>\n      </div>\n    </>\n  )\n}\n\nexport const Disabled = () => {\n  return (\n    <>\n      <button className=\"btn mr-2\" type=\"button\" aria-disabled=\"true\">\n        Disabled\n      </button>\n      <button className=\"btn btn-primary mr-2\" type=\"button\" aria-disabled=\"true\">\n        Disabled\n      </button>\n      <button className=\"btn btn-outline mr-2\" type=\"button\" aria-disabled=\"true\">\n        Disabled\n      </button>\n      <button className=\"btn btn-danger\" type=\"button\" aria-disabled=\"true\">\n        Disabled\n      </button>\n    </>\n  )\n}\n\nexport const Sizes = () => {\n  return (\n    <>\n      <button className=\"btn btn-sm mr-2\" type=\"button\">\n        Small\n      </button>\n      <button className=\"btn mr-2\" type=\"button\">\n        Default\n      </button>\n      <button className=\"btn btn-large\" type=\"button\">\n        Large\n      </button>\n    </>\n  )\n}\n\nexport const Block = () => {\n  return (\n    <>\n      <button className=\"btn btn-block mb-2\" type=\"button\">\n        Block button\n      </button>\n      <button className=\"btn btn-sm btn-block\" type=\"button\">\n        Small block button\n      </button>\n    </>\n  )\n}\n\nexport const HiddenText = () => {\n  return (\n    <>\n      <span className=\"hidden-text-expander\">\n        <button type=\"button\" className=\"ellipsis-expander\" aria-expanded=\"false\">\n          &hellip;\n        </button>\n      </span>\n    </>\n  )\n}\n\nexport const WithIcons = () => {\n  return (\n    <>\n      <button className=\"btn mr-2\" type=\"button\">\n        <svg className=\"octicon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\" width=\"16\" height=\"16\">\n          <path\n            fill-rule=\"evenodd\"\n            d=\"M11.5 7a4.499 4.499 0 11-8.998 0A4.499 4.499 0 0111.5 7zm-.82 4.74a6 6 0 111.06-1.06l3.04 3.04a.75.75 0 11-1.06 1.06l-3.04-3.04z\"\n          ></path>\n        </svg>\n      </button>\n\n      <button className=\"btn btn-primary mr-2\" type=\"button\">\n        <svg className=\"octicon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\" width=\"16\" height=\"16\">\n          <path\n            fill-rule=\"evenodd\"\n            d=\"M7.47 10.78a.75.75 0 001.06 0l3.75-3.75a.75.75 0 00-1.06-1.06L8.75 8.44V1.75a.75.75 0 00-1.5 0v6.69L4.78 5.97a.75.75 0 00-1.06 1.06l3.75 3.75zM3.75 13a.75.75 0 000 1.5h8.5a.75.75 0 000-1.5h-8.5z\"\n          ></path>\n        </svg>\n        <span>Clone</span>\n        <span className=\"dropdown-caret\"></span>\n      </button>\n\n      <button className=\"btn btn-danger mr-2\" type=\"button\">\n        <svg className=\"octicon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\" width=\"16\" height=\"16\">\n          <path\n            fill-rule=\"evenodd\"\n            d=\"M6.5 1.75a.25.25 0 01.25-.25h2.5a.25.25 0 01.25.25V3h-3V1.75zm4.5 0V3h2.25a.75.75 0 010 1.5H2.75a.75.75 0 010-1.5H5V1.75C5 .784 5.784 0 6.75 0h2.5C10.216 0 11 .784 11 1.75zM4.496 6.675a.75.75 0 10-1.492.15l.66 6.6A1.75 1.75 0 005.405 15h5.19c.9 0 1.652-.681 1.741-1.576l.66-6.6a.75.75 0 00-1.492-.149l-.66 6.6a.25.25 0 01-.249.225h-5.19a.25.25 0 01-.249-.225l-.66-6.6z\"\n          ></path>\n        </svg>\n        <span>Delete</span>\n      </button>\n\n      <button className=\"btn btn-outline mr-2\" type=\"button\">\n        <svg className=\"octicon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\" width=\"16\" height=\"16\">\n          <path\n            fill-rule=\"evenodd\"\n            d=\"M1.75 2.5h12.5a.25.25 0 01.25.25v7.5a.25.25 0 01-.25.25H1.75a.25.25 0 01-.25-.25v-7.5a.25.25 0 01.25-.25zM14.25 1H1.75A1.75 1.75 0 000 2.75v7.5C0 11.216.784 12 1.75 12h3.727c-.1 1.041-.52 1.872-1.292 2.757A.75.75 0 004.75 16h6.5a.75.75 0 00.565-1.243c-.772-.885-1.193-1.716-1.292-2.757h3.727A1.75 1.75 0 0016 10.25v-7.5A1.75 1.75 0 0014.25 1zM9.018 12H6.982a5.72 5.72 0 01-.765 2.5h3.566a5.72 5.72 0 01-.765-2.5z\"\n          ></path>\n        </svg>\n        <span>Open in Desktop</span>\n      </button>\n\n      <button className=\"btn\" type=\"button\" aria-label=\"Pencil icon\">\n        <svg className=\"octicon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\" width=\"16\" height=\"16\">\n          <path\n            fill-rule=\"evenodd\"\n            d=\"M11.013 1.427a1.75 1.75 0 012.474 0l1.086 1.086a1.75 1.75 0 010 2.474l-8.61 8.61c-.21.21-.47.364-.756.445l-3.251.93a.75.75 0 01-.927-.928l.929-3.25a1.75 1.75 0 01.445-.758l8.61-8.61zm1.414 1.06a.25.25 0 00-.354 0L10.811 3.75l1.439 1.44 1.263-1.263a.25.25 0 000-.354l-1.086-1.086zM11.189 6.25L9.75 4.81l-6.286 6.287a.25.25 0 00-.064.108l-.558 1.953 1.953-.558a.249.249 0 00.108-.064l6.286-6.286z\"\n          ></path>\n        </svg>\n      </button>\n    </>\n  )\n}\n\nexport const IconOnly = () => {\n  return (\n    <>\n      <button className=\"btn-octicon\" type=\"button\" aria-label=\"Desktop icon\">\n        <svg className=\"octicon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\" width=\"16\" height=\"16\">\n          <path\n            fill-rule=\"evenodd\"\n            d=\"M1.75 2.5h12.5a.25.25 0 01.25.25v7.5a.25.25 0 01-.25.25H1.75a.25.25 0 01-.25-.25v-7.5a.25.25 0 01.25-.25zM14.25 1H1.75A1.75 1.75 0 000 2.75v7.5C0 11.216.784 12 1.75 12h3.727c-.1 1.041-.52 1.872-1.292 2.757A.75.75 0 004.75 16h6.5a.75.75 0 00.565-1.243c-.772-.885-1.193-1.716-1.292-2.757h3.727A1.75 1.75 0 0016 10.25v-7.5A1.75 1.75 0 0014.25 1zM9.018 12H6.982a5.72 5.72 0 01-.765 2.5h3.566a5.72 5.72 0 01-.765-2.5z\"\n          ></path>\n        </svg>\n      </button>\n\n      <button className=\"btn-octicon\" type=\"button\" aria-label=\"Pencil icon\">\n        <svg className=\"octicon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\" width=\"16\" height=\"16\">\n          <path\n            fill-rule=\"evenodd\"\n            d=\"M11.013 1.427a1.75 1.75 0 012.474 0l1.086 1.086a1.75 1.75 0 010 2.474l-8.61 8.61c-.21.21-.47.364-.756.445l-3.251.93a.75.75 0 01-.927-.928l.929-3.25a1.75 1.75 0 01.445-.758l8.61-8.61zm1.414 1.06a.25.25 0 00-.354 0L10.811 3.75l1.439 1.44 1.263-1.263a.25.25 0 000-.354l-1.086-1.086zM11.189 6.25L9.75 4.81l-6.286 6.287a.25.25 0 00-.064.108l-.558 1.953 1.953-.558a.249.249 0 00.108-.064l6.286-6.286z\"\n          ></path>\n        </svg>\n      </button>\n\n      <button className=\"btn-octicon btn-octicon-danger\" type=\"button\" aria-label=\"Trashcan icon\">\n        <svg className=\"octicon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\" width=\"16\" height=\"16\">\n          <path\n            fill-rule=\"evenodd\"\n            d=\"M6.5 1.75a.25.25 0 01.25-.25h2.5a.25.25 0 01.25.25V3h-3V1.75zm4.5 0V3h2.25a.75.75 0 010 1.5H2.75a.75.75 0 010-1.5H5V1.75C5 .784 5.784 0 6.75 0h2.5C10.216 0 11 .784 11 1.75zM4.496 6.675a.75.75 0 10-1.492.15l.66 6.6A1.75 1.75 0 005.405 15h5.19c.9 0 1.652-.681 1.741-1.576l.66-6.6a.75.75 0 00-1.492-.149l-.66 6.6a.25.25 0 01-.249.225h-5.19a.25.25 0 01-.249-.225l-.66-6.6z\"\n          ></path>\n        </svg>\n      </button>\n\n      <button className=\"btn-octicon\" type=\"button\" aria-label=\"Kebab icon\">\n        <svg className=\"octicon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\" width=\"16\" height=\"16\">\n          <path d=\"M8 9a1.5 1.5 0 100-3 1.5 1.5 0 000 3zM1.5 9a1.5 1.5 0 100-3 1.5 1.5 0 000 3zm13 0a1.5 1.5 0 100-3 1.5 1.5 0 000 3z\"></path>\n        </svg>\n      </button>\n    </>\n  )\n}\n\nexport const CloseButton = () => {\n  return (\n    <>\n      <button className=\"close-button\" type=\"button\">\n        <svg className=\"octicon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\" width=\"16\" height=\"16\">\n          <path\n            fill-rule=\"evenodd\"\n            d=\"M3.72 3.72a.75.75 0 011.06 0L8 6.94l3.22-3.22a.75.75 0 111.06 1.06L9.06 8l3.22 3.22a.75.75 0 11-1.06 1.06L8 9.06l-3.22 3.22a.75.75 0 01-1.06-1.06L6.94 8 3.72 4.78a.75.75 0 010-1.06z\"\n          ></path>\n        </svg>\n      </button>\n    </>\n  )\n}\n\nexport const ButtonWithCounts = () => {\n  return (\n    <>\n      <div className=\"mb-2\">\n        <a className=\"btn btn-sm btn-with-count\" href=\"#url\" role=\"button\">\n          <svg className=\"octicon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\" width=\"16\" height=\"16\">\n            <path\n              fill-rule=\"evenodd\"\n              d=\"M1.679 7.932c.412-.621 1.242-1.75 2.366-2.717C5.175 4.242 6.527 3.5 8 3.5c1.473 0 2.824.742 3.955 1.715 1.124.967 1.954 2.096 2.366 2.717a.119.119 0 010 .136c-.412.621-1.242 1.75-2.366 2.717C10.825 11.758 9.473 12.5 8 12.5c-1.473 0-2.824-.742-3.955-1.715C2.92 9.818 2.09 8.69 1.679 8.068a.119.119 0 010-.136zM8 2c-1.981 0-3.67.992-4.933 2.078C1.797 5.169.88 6.423.43 7.1a1.619 1.619 0 000 1.798c.45.678 1.367 1.932 2.637 3.024C4.329 13.008 6.019 14 8 14c1.981 0 3.67-.992 4.933-2.078 1.27-1.091 2.187-2.345 2.637-3.023a1.619 1.619 0 000-1.798c-.45-.678-1.367-1.932-2.637-3.023C11.671 2.992 9.981 2 8 2zm0 8a2 2 0 100-4 2 2 0 000 4z\"\n            ></path>\n          </svg>\n          <span>Watch</span>\n        </a>\n        <a className=\"social-count\" href=\"#url\">\n          6\n        </a>\n      </div>\n      <button className=\"btn mr-2\" type=\"button\">\n        Button <span className=\"Counter\">12</span>\n      </button>\n\n      <button className=\"btn btn-primary mr-2\" type=\"button\">\n        Button <span className=\"Counter\">12</span>\n      </button>\n\n      <button className=\"btn btn-danger mr-2\" type=\"button\">\n        Button <span className=\"Counter\">12</span>\n      </button>\n\n      <button className=\"btn btn-outline\" type=\"button\">\n        Button <span className=\"Counter\">12</span>\n      </button>\n    </>\n  )\n}\n\nexport const ButtonGroup = () => {\n  return (\n    <>\n      <div className=\"BtnGroup d-block mb-2\">\n        <button className=\"BtnGroup-item btn\" type=\"button\">\n          Button\n        </button>\n        <button className=\"BtnGroup-item btn\" type=\"button\">\n          Button\n        </button>\n        <button className=\"BtnGroup-item btn btn-danger\" type=\"button\">\n          Danger\n        </button>\n      </div>\n\n      <div className=\"BtnGroup d-block mb-2 ml-0\">\n        <button className=\"BtnGroup-item btn btn-outline\" type=\"button\">\n          Button\n        </button>\n        <button className=\"BtnGroup-item btn btn-outline\" type=\"button\">\n          Button\n        </button>\n        <button className=\"BtnGroup-item btn btn-outline\" type=\"button\">\n          Button\n        </button>\n      </div>\n    </>\n  )\n}\n\nexport const ButtonGroupSmall = () => {\n  return (\n    <>\n      <div className=\"BtnGroup\">\n        <button className=\"BtnGroup-item btn btn-sm\" type=\"button\">\n          Button\n        </button>\n        <button className=\"BtnGroup-item btn btn-sm\" type=\"button\">\n          Button\n        </button>\n        <button className=\"BtnGroup-item btn btn-sm\" type=\"button\">\n          Button\n        </button>\n      </div>\n    </>\n  )\n}\n\nexport const ButtonGroupParent = () => {\n  return (\n    <>\n      <div className=\"BtnGroup\">\n        <button className=\"btn BtnGroup-item\" type=\"button\">\n          Button\n        </button>\n        <form className=\"BtnGroup-parent\">\n          <button className=\"btn BtnGroup-item\" type=\"button\">\n            Button in a form\n          </button>\n        </form>\n        <button className=\"btn BtnGroup-item\" type=\"button\">\n          Button\n        </button>\n        <button className=\"btn BtnGroup-item\" type=\"button\">\n          Button\n        </button>\n      </div>\n    </>\n  )\n}\n"
  },
  {
    "path": "docs/stories/deprecated-components/FilterList/FilterList.mdx",
    "content": "import {Canvas, Meta, Story} from '@storybook/blocks'\n\nimport * as FilterListStories from './FilterList.stories'\n\n<Meta of={FilterListStories} />\n\n# FilterList\n\nA vertical list of filters. Grey text on white background. Selecting a filter from the list will fill its background with blue and make the text white.\n\n<Canvas of={FilterListStories.Default} />\n"
  },
  {
    "path": "docs/stories/deprecated-components/FilterList/FilterList.stories.tsx",
    "content": "import React from 'react'\nimport {BADGE} from '@geometricpanda/storybook-addon-badges'\n\nexport default {\n  title: 'Deprecated/FilterList',\n  parameters: {\n    storyType: 'banner',\n    controls: {hideNoControlsWarning: true},\n    badges: [BADGE.DEPRECATED],\n  },\n}\n\nexport const Default = () => {\n  return (\n    <ul className=\"filter-list\">\n      <li>\n        <a className=\"filter-item\" href=\"#url\" aria-current=\"page\">\n          First filter\n          <span className=\"count\">21</span>\n        </a>\n      </li>\n      <li>\n        <a className=\"filter-item\" href=\"#url\">\n          Second filter\n          <span className=\"count\">3</span>\n        </a>\n      </li>\n      <li>\n        <a className=\"filter-item\" href=\"#url\">\n          Third filter\n        </a>\n      </li>\n    </ul>\n  )\n}\n"
  },
  {
    "path": "docs/stories/deprecated-components/Forms/Forms.mdx",
    "content": "import {Canvas, Meta, Story} from '@storybook/blocks'\n\nimport * as FormsStories from './Forms.stories'\n\n<Meta of={FormsStories} />\n\n# Forms\n\nStyle individual form controls and utilize common layouts.\n\nOverview:\n\n- We reset several elements' default styles for cross browser consistency and easier manipulation later. This includes `<fieldset>`s, WebKit validation bubbles, and most textual `<input>`s.\n- Specific types of textual `<input>`s are styled automatically, but `.form-control` is available should you need it.\n- Always declare a `type` on your `<button>`s.\n- Form layouts rely on form groups.\n\n## Kitchen sink\n\nAll our inputs and buttons side-by-side for easy testing of sizing and alignment with one another.\n\n<Canvas of={FormsStories.KitchenSink} />\n\n## Example form\n\nForm controls in Primer CSS currently have no basic layout specified (this is by design). You'll need to use `<fieldset>`s, `<div>`s, or other elements and styles to rearrange them.\n\n<Canvas of={FormsStories.BasicForm} />\n\n## Inputs\n\n### Sizing\n\nMake inputs smaller, larger, or full-width with an additional class.\n\n<Canvas of={FormsStories.Sizes} />\n\n### Input group\n\nAttached an input and button to one another.\n\n<Canvas of={FormsStories.InputGroup} />\n\n## Customization\n\n### Form contrast\n\nTextual form controls have a white background by default. You can change this to a light gray with `.input-contrast`.\n\n<Canvas of={FormsStories.Contrast} />\n\n### Disabled state\n\nAdd the `disabled` attribute to make a `.form-control` appear disabled.\n\n<Canvas of={FormsStories.Disabled} />\n\n### Hide WebKit's contact info autofill icon\n\nWebKit sometimes gets confused and tries to add an icon/dropdown to autofill contact information on fields that may not be appropriate (such as input for number of users). Use this class to override the display of this icon.\n\n<Canvas of={FormsStories.HideWebkitAutofill} />\n\n## Selects\n\nPrimer CSS adds light `height` and `vertical-align` styles to `<select>`s for all browsers to render them consistently with textual inputs.\n\n<Canvas of={FormsStories.Select} />\n\n### Small\n\nUse the `.select-sm` class to resize both default and custom `<select>`s to match the size of [our small buttons](./buttons#default-buttons).\n\n<Canvas of={FormsStories.SelectSmall} />\n\n## Form groups\n\n<Canvas of={FormsStories.FormGroup} />\n\n## Form group validation (deprecated)\n\nThese form validation styles are deprecated. Please use the <a href=\"https://primer.style/view-components/components/alpha/textfield#with-a-validation-message\">TextField</a> ViewComponent instead or refer to the <a href=\"https://primer.style/design/ui-patterns/forms#validation\">design guidelines</a>.\n\nConvey success, errors and warnings for form groups. For github.com consider using the [`<auto-check>`](https://github.github.io/web-systems-documentation/#custom-elements-auto-check-md) element to perform server-side validation on an input.\n\n### Success\n\nIf the input is **valid**, add the `.successed` class to the `<div class=\"form-group\">` element. Next add/update a success message to the `.note` element, as well as the `.success` class.\n\n<Canvas of={FormsStories.ValidationSuccess} />\n\n### Error\n\nIf the input is **not valid**, add the `.errored` class to the `<div class=\"form-group\">` element. Next add/update an error message to the `.note` element, as well as the `.error` class.\n\n<Canvas of={FormsStories.ValidationError} />\n\n### Warning\n\nIf the input should show a **warning**, add the `.warn` class to the `<div class=\"form-group\">` element. Next add/update a warning message to the `.note` element, as well as the `.warning` class.\n\n<Canvas of={FormsStories.ValidationWarning} />\n\n### Form actions\n\nAlign buttons to the right—via `float: right` on the buttons—in forms with `.form-actions`. The floats are automatically cleared for you.\n\n<Canvas of={FormsStories.FormActions} />\n\n## Checkboxes and radios\n\nUtilities to control alignment and styling of checkbox and radio controls.\n\n<Canvas of={FormsStories.CheckboxAndRadios} />\n\n### Toggle content visibility based on a checkbox or radio button state\n\nContent that is hidden by default should only be done so if it is non-essential for the context of the surrounding content. Be sure to use the `aria-live=\"polite\"` attribute on the parent label for added content to be announced when displayed.\n\n<Canvas of={FormsStories.ToggleVisibility} />\n\n## Radio group\n\nRadio groups are tab like controls. Their blue border gives extra emphasis to what is selected.\n\n<Canvas of={FormsStories.RadioGroup} />\n\nAdding `octicon` icons is also supported. To disable an option, use the `disabled` attribute.\n\n<Canvas of={FormsStories.WithOcticons} />\n"
  },
  {
    "path": "docs/stories/deprecated-components/Forms/Forms.stories.tsx",
    "content": "import React from 'react'\nimport {BADGE} from '@geometricpanda/storybook-addon-badges'\n\nexport default {\n  title: 'Deprecated/Forms',\n  parameters: {\n    storyType: 'banner',\n    controls: {hideNoControlsWarning: true},\n    badges: [BADGE.DEPRECATED],\n  },\n}\n\nexport const KitchenSink = () => {\n  return (\n    <>\n      <div>\n        <button className=\"btn\" type=\"button\">\n          Button\n        </button>\n        <button className=\"btn\" type=\"button\" aria-expanded=\"false\" aria-haspopup=\"true\">\n          Select menu\n          <span className=\"dropdown-caret\"></span>\n        </button>\n        <input className=\"form-control\" type=\"text\" placeholder=\"Standard input\" aria-label=\"Repository description\" />\n        <input className=\"form-control input-monospace\" type=\"text\" placeholder=\"Monospace input\" aria-label=\"SHA\" />\n        <select className=\"form-select\" aria-label=\"Important decision\">\n          <option>Select</option>\n          <option value=\"option 2\">Option 2</option>\n        </select>\n      </div>\n      <div>\n        <button className=\"btn btn-sm\" type=\"button\">\n          Small button\n        </button>\n        <button className=\"btn btn-sm\" type=\"button\" aria-expanded=\"false\" aria-haspopup=\"true\">\n          Select menu\n          <span className=\"dropdown-caret\"></span>\n        </button>\n        <input\n          className=\"form-control input-sm\"\n          type=\"text\"\n          placeholder=\"Small input\"\n          aria-label=\"Repository description\"\n        />\n        <select className=\"form-select select-sm\" aria-label=\"Important decision\">\n          <option>Select</option>\n          <option value=\"option 1\">Option 1</option>\n        </select>\n      </div>\n    </>\n  )\n}\n\nexport const BasicForm = () => {\n  return (\n    <>\n      <form>\n        <label htmlFor=\"name\">Name</label>\n        <input className=\"form-control\" type=\"text\" id=\"name\" />\n\n        <label htmlFor=\"email\">Email address</label>\n        <input className=\"form-control\" type=\"email\" id=\"email\" />\n\n        <label>\n          {' '}\n          <input type=\"checkbox\" /> Remember me{' '}\n        </label>\n\n        <label>\n          {' '}\n          <input type=\"radio\" id=\"potato\" name=\"radio-group-example\" checked /> Potato{' '}\n        </label>\n        <label>\n          {' '}\n          <input type=\"radio\" id=\"tomato\" name=\"radio-group-example\" /> Tomato{' '}\n        </label>\n\n        <button className=\"btn\" type=\"submit\">\n          Submit\n        </button>\n      </form>\n    </>\n  )\n}\n\nexport const Sizes = () => {\n  return (\n    <>\n      <form>\n        <input className=\"form-control input-sm\" type=\"text\" placeholder=\"Small input\" aria-label=\"Small input\" />\n      </form>\n      <form>\n        <input className=\"form-control input-lg\" type=\"text\" placeholder=\"Large input\" aria-label=\"Large input\" />\n      </form>\n      <form>\n        <input\n          className=\"form-control input-block\"\n          type=\"text\"\n          placeholder=\"Full-width input\"\n          aria-label=\"Full-width input\"\n        />\n      </form>\n    </>\n  )\n}\n\nexport const InputGroup = () => {\n  return (\n    <>\n      <form>\n        <div className=\"input-group\">\n          <input className=\"form-control\" type=\"text\" placeholder=\"Username\" aria-label=\"Username\" />\n          <span className=\"input-group-button\">\n            <button className=\"btn\" type=\"button\" aria-label=\"Copy to clipboard\">\n              <svg\n                className=\"octicon octicon-clippy\"\n                viewBox=\"0 0 14 16\"\n                version=\"1.1\"\n                width=\"14\"\n                height=\"16\"\n                aria-hidden=\"true\"\n              >\n                <path\n                  fill-rule=\"evenodd\"\n                  d=\"M2 13h4v1H2v-1zm5-6H2v1h5V7zm2 3V8l-3 3 3 3v-2h5v-2H9zM4.5 9H2v1h2.5V9zM2 12h2.5v-1H2v1zm9 1h1v2c-.02.28-.11.52-.3.7-.19.18-.42.28-.7.3H1c-.55 0-1-.45-1-1V4c0-.55.45-1 1-1h3c0-1.11.89-2 2-2 1.11 0 2 .89 2 2h3c.55 0 1 .45 1 1v5h-1V6H1v9h10v-2zM2 5h8c0-.55-.45-1-1-1H8c-.55 0-1-.45-1-1s-.45-1-1-1-1 .45-1 1-.45 1-1 1H3c-.55 0-1 .45-1 1z\"\n                ></path>\n              </svg>\n            </button>\n          </span>\n        </div>\n      </form>\n    </>\n  )\n}\n\nexport const Contrast = () => {\n  return (\n    <>\n      <form>\n        <input className=\"form-control\" type=\"text\" placeholder=\"Default input\" aria-label=\"Default input\" />\n        <input\n          className=\"form-control input-contrast\"\n          type=\"text\"\n          placeholder=\"Input with contrast\"\n          aria-label=\"Input with contrast\"\n        />\n      </form>\n    </>\n  )\n}\n\nexport const Disabled = () => {\n  return (\n    <>\n      <form>\n        <input className=\"form-control\" type=\"text\" placeholder=\"Disabled input\" aria-label=\"Disabled input\" disabled />\n      </form>\n    </>\n  )\n}\n\nexport const HideWebkitAutofill = () => {\n  return (\n    <>\n      <form>\n        <input\n          className=\"form-control input-hide-webkit-autofill\"\n          placeholder=\"Hide Webkit's contact autofill on this input\"\n          type=\"text\"\n          aria-label=\"Hide Webkit's contact autofill on this input\"\n        />\n      </form>\n    </>\n  )\n}\n\nexport const Select = () => {\n  return (\n    <>\n      <form>\n        <select className=\"form-select\" aria-label=\"Preference\">\n          <option>Choose an option</option>\n          <option>Git</option>\n          <option>Subversion</option>\n          <option>Social Coding</option>\n          <option>Beets</option>\n          <option>Bears</option>\n          <option>Battlestar Galactica</option>\n        </select>\n      </form>\n    </>\n  )\n}\n\nexport const SelectSmall = () => {\n  return (\n    <>\n      <select className=\"form-select select-sm\" aria-label=\"Preference\">\n        <option>Choose an option</option>\n        <option>Git</option>\n        <option>Subversion</option>\n        <option>Social Coding</option>\n        <option>Beets</option>\n        <option>Bears</option>\n        <option>Battlestar Galactica</option>\n      </select>\n\n      <button className=\"btn btn-sm ml-1\"> Small button</button>\n    </>\n  )\n}\n\nexport const FormGroup = () => {\n  return (\n    <>\n      <form>\n        <div className=\"form-group\">\n          <div className=\"form-group-header\">\n            <label htmlFor=\"example-text\">Example Text</label>\n          </div>\n          <div className=\"form-group-body\">\n            <input className=\"form-control\" type=\"text\" value=\"Example Value\" id=\"example-text\" />\n          </div>\n        </div>\n\n        <div className=\"form-group\">\n          <div className=\"form-group-header\">\n            <label htmlFor=\"example-select\">Example Select</label>\n          </div>\n          <div className=\"form-group-body\">\n            <select className=\"form-select\" id=\"example-select\">\n              <option>Choose an option</option>\n              <option>Git</option>\n              <option>Subversion</option>\n              <option>Social Coding</option>\n              <option>Beets</option>\n              <option>Bears</option>\n              <option>Battlestar Galactica</option>\n            </select>\n          </div>\n        </div>\n\n        <div className=\"form-group\">\n          <div className=\"form-group-header\">\n            <label htmlFor=\"example-textarea\">Example Textarea</label>\n          </div>\n          <div className=\"form-group-body\">\n            <textarea className=\"form-control\" id=\"example-textarea\"></textarea>\n          </div>\n        </div>\n      </form>\n    </>\n  )\n}\n\nexport const ValidationSuccess = () => {\n  return (\n    <>\n      <form className=\"pb-6\">\n        <div className=\"form-group successed\">\n          <div className=\"form-group-header\">\n            <label htmlFor=\"username-input\">Username</label>\n          </div>\n          <div className=\"form-group-body\">\n            <input\n              className=\"form-control\"\n              type=\"text\"\n              value=\"monalisa\"\n              id=\"username-input\"\n              aria-describedby=\"username-input-validation\"\n            />\n          </div>\n          <p className=\"note success\" id=\"username-input-validation\">\n            monalisa is available\n          </p>\n        </div>\n      </form>\n    </>\n  )\n}\n\nexport const ValidationError = () => {\n  return (\n    <>\n      <form className=\"pb-6\">\n        <div className=\"form-group errored\">\n          <div className=\"form-group-header\">\n            <label htmlFor=\"username-input\">Username</label>\n          </div>\n          <div className=\"form-group-body\">\n            <input\n              className=\"form-control\"\n              type=\"text\"\n              value=\"monalisa\"\n              id=\"username-input\"\n              aria-describedby=\"username-input-validation\"\n            />\n          </div>\n          <p className=\"note error\" id=\"username-input-validation\">\n            monalisa is not available. monalisa-beep, monalisa-cyber, or monalisa87 are available.\n          </p>\n        </div>\n      </form>\n    </>\n  )\n}\n\nexport const ValidationWarning = () => {\n  return (\n    <>\n      <form className=\"pb-6\">\n        <div className=\"form-group warn\">\n          <div className=\"form-group-header\">\n            <label htmlFor=\"username-input\">Username</label>\n          </div>\n          <div className=\"form-group-body\">\n            <input\n              className=\"form-control\"\n              type=\"text\"\n              value=\"monalisa-monalisa-monalisa-monalisa-\"\n              id=\"username-input\"\n              aria-describedby=\"username-input-validation\"\n            />\n          </div>\n          <p className=\"note warning\" id=\"username-input-validation\">\n            36 of maximum 39 characters entered.\n          </p>\n        </div>\n      </form>\n    </>\n  )\n}\n\nexport const FormActions = () => {\n  return (\n    <>\n      <div className=\"form-actions\">\n        <button type=\"submit\" className=\"btn btn-primary\">\n          Save changes\n        </button>\n        <button type=\"button\" className=\"btn\">\n          Cancel\n        </button>\n      </div>\n    </>\n  )\n}\n\nexport const CheckboxAndRadios = () => {\n  return (\n    <>\n      <form>\n        <div className=\"form-checkbox\">\n          <label>\n            <input type=\"checkbox\" checked aria-describedby=\"help-text-for-checkbox\" />\n            Available for hire\n          </label>\n          <p className=\"note\" id=\"help-text-for-checkbox\">\n            This will do insanely <strong>awesome</strong> and <strong>amazing</strong> things!\n          </p>\n        </div>\n      </form>\n      <form>\n        <div className=\"form-checkbox\">\n          <label>\n            <input type=\"checkbox\" checked />\n            <em className=\"highlight\">Available for hire</em>\n          </label>\n        </div>\n      </form>\n    </>\n  )\n}\n\nexport const ToggleVisibility = () => {\n  return (\n    <>\n      <form>\n        <div className=\"form-checkbox\">\n          <label>\n            <input type=\"radio\" name=\"hireme\" />\n            Not available for hire\n          </label>\n        </div>\n        <div className=\"form-checkbox\">\n          <label aria-live=\"polite\">\n            <input type=\"radio\" className=\"form-checkbox-details-trigger\" name=\"hireme\" />\n            Available for hire\n            <span className=\"form-checkbox-details text-normal\">\n              <span className=\"d-block mb-1\">Available hours per week</span>\n              <input type=\"text\" name=\"\" className=\"form-control input-contrast\" size=\"3\" />\n              <span className=\"text-small color-fg-muted pl-2\">hours per week</span>\n            </span>\n          </label>\n        </div>\n      </form>\n    </>\n  )\n}\n\nexport const RadioGroup = () => {\n  return (\n    <>\n      <form>\n        <div className=\"radio-group\">\n          <input className=\"radio-input\" id=\"option-a\" type=\"radio\" name=\"options\" />\n          <label className=\"radio-label\" htmlFor=\"option-a\">\n            Option A\n          </label>\n          <input className=\"radio-input\" id=\"option-b\" type=\"radio\" name=\"options\" />\n          <label className=\"radio-label\" htmlFor=\"option-b\">\n            Option B\n          </label>\n          <input className=\"radio-input\" id=\"option-c\" type=\"radio\" name=\"options\" />\n          <label className=\"radio-label\" htmlFor=\"option-c\">\n            Option C\n          </label>\n        </div>\n      </form>\n    </>\n  )\n}\n\nexport const WithOcticons = () => {\n  return (\n    <>\n      <form>\n        <div className=\"radio-group\">\n          <input className=\"radio-input\" id=\"option-a\" type=\"radio\" name=\"options\" />\n          <label className=\"radio-label\" htmlFor=\"option-a\">\n            <svg className=\"octicon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\" width=\"16\" height=\"16\">\n              <path\n                fill-rule=\"evenodd\"\n                d=\"M8 .25a.75.75 0 01.673.418l1.882 3.815 4.21.612a.75.75 0 01.416 1.279l-3.046 2.97.719 4.192a.75.75 0 01-1.088.791L8 12.347l-3.766 1.98a.75.75 0 01-1.088-.79l.72-4.194L.818 6.374a.75.75 0 01.416-1.28l4.21-.611L7.327.668A.75.75 0 018 .25zm0 2.445L6.615 5.5a.75.75 0 01-.564.41l-3.097.45 2.24 2.184a.75.75 0 01.216.664l-.528 3.084 2.769-1.456a.75.75 0 01.698 0l2.77 1.456-.53-3.084a.75.75 0 01.216-.664l2.24-2.183-3.096-.45a.75.75 0 01-.564-.41L8 2.694v.001z\"\n              ></path>\n            </svg>\n            Option A\n          </label>\n          <input className=\"radio-input\" id=\"option-b\" type=\"radio\" name=\"options\" />\n          <label className=\"radio-label\" htmlFor=\"option-b\">\n            <svg className=\"octicon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\" width=\"16\" height=\"16\">\n              <path\n                fill-rule=\"evenodd\"\n                d=\"M11.013 1.427a1.75 1.75 0 012.474 0l1.086 1.086a1.75 1.75 0 010 2.474l-8.61 8.61c-.21.21-.47.364-.756.445l-3.251.93a.75.75 0 01-.927-.928l.929-3.25a1.75 1.75 0 01.445-.758l8.61-8.61zm1.414 1.06a.25.25 0 00-.354 0L10.811 3.75l1.439 1.44 1.263-1.263a.25.25 0 000-.354l-1.086-1.086zM11.189 6.25L9.75 4.81l-6.286 6.287a.25.25 0 00-.064.108l-.558 1.953 1.953-.558a.249.249 0 00.108-.064l6.286-6.286z\"\n              ></path>\n            </svg>\n            Option B\n          </label>\n          <input className=\"radio-input\" id=\"option-c\" type=\"radio\" name=\"options\" disabled />\n          <label className=\"radio-label\" htmlFor=\"option-c\">\n            <svg className=\"octicon\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\" width=\"16\" height=\"16\">\n              <path\n                fill-rule=\"evenodd\"\n                d=\"M6.5 1.75a.25.25 0 01.25-.25h2.5a.25.25 0 01.25.25V3h-3V1.75zm4.5 0V3h2.25a.75.75 0 010 1.5H2.75a.75.75 0 010-1.5H5V1.75C5 .784 5.784 0 6.75 0h2.5C10.216 0 11 .784 11 1.75zM4.496 6.675a.75.75 0 10-1.492.15l.66 6.6A1.75 1.75 0 005.405 15h5.19c.9 0 1.652-.681 1.741-1.576l.66-6.6a.75.75 0 00-1.492-.149l-.66 6.6a.25.25 0 01-.249.225h-5.19a.25.25 0 01-.249-.225l-.66-6.6z\"\n              ></path>\n            </svg>\n            Option C\n          </label>\n        </div>\n      </form>\n    </>\n  )\n}\n"
  },
  {
    "path": "docs/stories/deprecated-components/Header/Header.mdx",
    "content": "import {Canvas, Meta, Story} from '@storybook/blocks'\n\nimport * as HeaderStories from './Header.stories'\n\n<Meta of={HeaderStories} />\n\n# Header\n\nUse the Header component to create a header that has all of its items aligned vertically with consistent horizontal spacing.\n\n## Header\n\nThe `.Header` class is the wrapping class that aligns all the items properly and gives the header its dark background. Each direct child of the `.Header` component is expected to be a `.Header-item` component. The component utilizes flexbox CSS to align all these items properly and applies spacing scale margin.\n\n<Canvas of={HeaderStories.Default} />\n\n## Header-item\n\nAll items directly under the `.Header` component should be a `.Header-item` component. Inside these components can be anything (text, forms, images...), and the `.Header-item` component will make sure these elements vertically align with each other.\n\n`.Header-item` elements have a built-in margin that will need to be overridden with the `mr-0` utility class for the last element in the container. We relied on the utility classes here instead of `:last-child` because the last child isn't always the item visible. On responsive pages, there's a mobile menu that gets presented to the user at smaller breakpoints.\n\n<Canvas of={HeaderStories.HeaderItem} />\n\n### Header-item--full\n\nThe `.Header-item` element has a modifier class, `.Header-item--full`, that stretches it to fill the available space and push any remaining items to the right.\n\n<Canvas of={HeaderStories.HeaderItemFull} />\n\n## Header-link\n\nAdd the `.Header-link` class to any anchor tags in the header to give them consistent styling and hover opacity. This class makes the links white, bold and 70% fade on hover.\n\n<Canvas of={HeaderStories.HeaderLink} />\n"
  },
  {
    "path": "docs/stories/deprecated-components/Header/Header.stories.tsx",
    "content": "import React from 'react'\nimport {BADGE} from '@geometricpanda/storybook-addon-badges'\n\nexport default {\n  title: 'Deprecated/Header',\n  parameters: {\n    storyType: 'banner',\n    controls: {hideNoControlsWarning: true},\n    badges: [BADGE.DEPRECATED],\n  },\n}\n\nexport const Default = () => {\n  return (\n    <>\n      <div className=\"Header\">\n        <div className=\"Header-item\">\n          <a href=\"#\" className=\"Header-link f4 d-flex flex-items-center\">\n            <svg\n              height=\"32\"\n              className=\"octicon octicon-mark-github mr-2\"\n              viewBox=\"0 0 16 16\"\n              version=\"1.1\"\n              width=\"32\"\n              aria-hidden=\"true\"\n            >\n              <path\n                fill-rule=\"evenodd\"\n                d=\"M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0 0 16 8c0-4.42-3.58-8-8-8z\"\n              ></path>\n            </svg>\n            <span>GitHub</span>\n          </a>\n        </div>\n        <div className=\"Header-item\">\n          <input type=\"search\" className=\"form-control Header-input\" />\n        </div>\n        <div className=\"Header-item Header-item--full\">Menu</div>\n        <div className=\"Header-item mr-0\">\n          <img className=\"avatar\" height=\"20\" alt=\"@octocat\" src=\"https://github.com/octocat.png\" width=\"20\" />\n        </div>\n      </div>\n    </>\n  )\n}\n\nexport const HeaderItem = () => {\n  return (\n    <>\n      <div className=\"Header\">\n        <div className=\"Header-item\">Text item</div>\n\n        <div className=\"Header-item\">\n          <input className=\"form-control Header-input\" type=\"text\" />\n        </div>\n\n        <div className=\"Header-item\">\n          <img className=\"avatar\" height=\"20\" alt=\"@octocat\" src=\"https://github.com/octocat.png\" width=\"20\" />\n        </div>\n      </div>\n    </>\n  )\n}\n\nexport const HeaderItemFull = () => {\n  return (\n    <>\n      <div className=\"Header\">\n        <div className=\"Header-item\">Item 1</div>\n\n        <div className=\"Header-item Header-item--full border\">Item 2</div>\n\n        <div className=\"Header-item mr-0 \">Item 3</div>\n      </div>\n    </>\n  )\n}\n\nexport const HeaderLink = () => {\n  return (\n    <>\n      <div className=\"Header\">\n        <div className=\"Header-item\">\n          <a href=\"#\" className=\"Header-link\">\n            About\n          </a>\n        </div>\n        <div className=\"Header-item\">\n          <a href=\"#\" className=\"Header-link\">\n            Releases\n          </a>\n        </div>\n        <div className=\"Header-item\">\n          <a href=\"#\" className=\"Header-link\">\n            Team\n          </a>\n        </div>\n      </div>\n    </>\n  )\n}\n"
  },
  {
    "path": "docs/stories/deprecated-components/IssueLabel/IssueLabel.mdx",
    "content": "import {Canvas, Meta, Story} from '@storybook/blocks'\n\nimport * as IssueLabelStories from './IssueLabel.stories'\n\n<Meta of={IssueLabelStories} />\n\n# IssueLabel\n\nIssue labels are used for adding labels to issues and pull requests. They also come with emoji support.\n\n<Canvas of={IssueLabelStories.Default} />\n\nIf an issue label needs to be bigger, add the `.IssueLabel--big` modifier.\n\n<Canvas of={IssueLabelStories.Big} />\n"
  },
  {
    "path": "docs/stories/deprecated-components/IssueLabel/IssueLabel.stories.tsx",
    "content": "import React from 'react'\nimport {BADGE} from '@geometricpanda/storybook-addon-badges'\n\nexport default {\n  title: 'Deprecated/IssueLabel',\n  parameters: {\n    storyType: 'banner',\n    controls: {hideNoControlsWarning: true},\n    badges: [BADGE.DEPRECATED],\n  },\n}\n\nexport const Default = () => {\n  return (\n    <>\n      <span className=\"IssueLabel color-bg-accent-emphasis color-fg-on-emphasis mr-1\">Primer</span>\n      <span className=\"IssueLabel color-bg-danger-emphasis color-fg-on-emphasis mr-1\">bug 🐛</span>\n      <span className=\"IssueLabel color-bg-success-emphasis color-fg-on-emphasis mr-1\">help wanted</span>\n      <span className=\"IssueLabel color-bg-attention-emphasis color-fg-on-emphasis mr-1\">🚂 deploy: train</span>\n    </>\n  )\n}\n\nexport const Big = () => {\n  return (\n    <>\n      <span className=\"IssueLabel IssueLabel--big color-bg-accent-emphasis color-fg-on-emphasis mr-1\">Primer</span>\n      <span className=\"IssueLabel IssueLabel--big color-bg-danger-emphasis color-fg-on-emphasis mr-1\">bug 🐛</span>\n      <span className=\"IssueLabel IssueLabel--big color-bg-success-emphasis color-fg-on-emphasis mr-1\">\n        help wanted\n      </span>\n      <span className=\"IssueLabel IssueLabel--big color-bg-attention-emphasis color-fg-on-emphasis mr-1\">\n        🚂 deploy: train\n      </span>\n    </>\n  )\n}\n"
  },
  {
    "path": "docs/stories/deprecated-components/Loaders/Loaders.mdx",
    "content": "import {Canvas, Meta, Story} from '@storybook/blocks'\n\nimport * as LoaderStories from './Loaders.stories'\n\n<Meta of={LoaderStories} />\n\n# Loaders\n\nLoaders inform users that an action is still in progress and might take a while to complete.\n\nAdd an animated ellipsis at the end of text with `<span class=\"AnimatedEllipsis\"></span>`.\n\n<Canvas of={LoaderStories.Default} />\n"
  },
  {
    "path": "docs/stories/deprecated-components/Loaders/Loaders.stories.tsx",
    "content": "import React from 'react'\nimport {BADGE} from '@geometricpanda/storybook-addon-badges'\n\nexport default {\n  title: 'Deprecated/Loaders',\n  parameters: {\n    storyType: 'banner',\n    controls: {hideNoControlsWarning: true},\n    badges: [BADGE.DEPRECATED],\n  },\n}\n\nexport const Default = () => {\n  return (\n    <>\n      <h2>\n        <span>Loading</span>\n        <span className=\"AnimatedEllipsis\"></span>\n      </h2>\n      <span className=\"branch-name mt-2\">\n        <span>Loading</span>\n        <span className=\"AnimatedEllipsis\"></span>\n      </span>\n      <span className=\"Label mt-3\">\n        <span>Loading</span>\n        <span className=\"AnimatedEllipsis\"></span>\n      </span>\n      <button className=\"btn mt-3\" aria-disabled=\"true\">\n        <span>Loading</span>\n        <span className=\"AnimatedEllipsis\"></span>\n      </button>\n    </>\n  )\n}\n"
  },
  {
    "path": "docs/stories/deprecated-components/Markdown/Markdown.stories.tsx",
    "content": "import React from 'react'\nimport {BADGE} from '@geometricpanda/storybook-addon-badges'\n\nexport default {\n  title: 'Deprecated/Markdown',\n  parameters: {\n    storyType: 'banner',\n    controls: {hideNoControlsWarning: true},\n    badges: [BADGE.DEPRECATED],\n  },\n}\n\nexport const Default = () => {\n  return (\n    <>\n      <div class=\"markdown-body\">\n        <p>\n          Text can be <b>bold</b>, <i>italic</i>, or <s>strikethrough</s>. <a href=\"https://github.com\">Links </a>{' '}\n          should be blue with no underlines (unless hovered over).\n        </p>\n        <p>\n          There should be whitespace between paragraphs. There should be whitespace between paragraphs. There should be\n          whitespace between paragraphs. There should be whitespace between paragraphs.\n        </p>\n        <p>\n          There should be whitespace between paragraphs. There should be whitespace between paragraphs. There should be\n          whitespace between paragraphs. There should be whitespace between paragraphs.\n        </p>\n        <blockquote>\n          <p>There should be no margin above this first sentence.</p>\n          <p>Blockquotes should be a lighter gray with a gray border along the left side.</p>\n          <p>There should be no margin below this final sentence.</p>\n        </blockquote>\n        <h1>Header 1</h1>\n        <p>\n          This is a normal paragraph following a header. Bacon ipsum dolor sit amet t-bone doner shank drumstick, pork\n          belly porchetta chuck sausage brisket ham hock rump pig. Chuck kielbasa leberkas, pork bresaola ham hock filet\n          mignon cow shoulder short ribs biltong.\n        </p>\n        <h2>Header 2</h2>\n        <blockquote>\n          This is a blockquote following a header. Bacon ipsum dolor sit amet t-bone doner shank drumstick, pork belly\n          porchetta chuck sausage brisket ham hock rump pig. Chuck kielbasa leberkas, pork bresaola ham hock filet\n          mignon cow shoulder short ribs biltong.\n        </blockquote>\n        <h3>Header 3</h3>\n        <pre>\n          <code>This is a code block following a header.</code>\n        </pre>\n        <h4>Header 4</h4>\n        <ul>\n          <li>This is an unordered list following a header.</li>\n          <li>This is an unordered list following a header.</li>\n          <li>This is an unordered list following a header.</li>\n        </ul>\n        <h5>Header 5</h5>\n        <ol>\n          <li>This is an ordered list following a header.</li>\n          <li>This is an ordered list following a header.</li>\n          <li>This is an ordered list following a header.</li>\n        </ol>\n        <h6>Header 6</h6>\n        <table>\n          <thead>\n            <tr>\n              <th>What</th>\n              <th>Follows</th>\n            </tr>\n          </thead>\n          <tbody>\n            <tr>\n              <td>A table</td>\n              <td>A header</td>\n            </tr>\n            <tr>\n              <td>A table</td>\n              <td>A header</td>\n            </tr>\n            <tr>\n              <td>A table</td>\n              <td>A header</td>\n            </tr>\n          </tbody>\n        </table>\n        <hr />\n        <p>There's a horizontal rule above and below this.</p>\n        <hr />\n        <p>Here is an unordered list:</p>\n        <ul>\n          <li>Salt-n-Pepa</li>\n          <li>Bel Biv DeVoe</li>\n          <li>Kid 'N Play</li>\n        </ul>\n        <p>And an ordered list:</p>\n        <ol>\n          <li>Michael Jackson</li>\n          <li>Michael Bolton</li>\n          <li>Michael Bublé</li>\n        </ol>\n        <p>And an unordered task list:</p>\n        <ul>\n          <li>\n            <input type=\"checkbox\" checked /> Create a sample markdown document\n          </li>\n          <li>\n            <input type=\"checkbox\" /> Add task lists to it\n          </li>\n          <li>\n            <input type=\"checkbox\" /> Take a vacation\n          </li>\n        </ul>\n        <p>And a \"mixed\" task list:</p>\n        <ul>\n          <li>\n            <input type=\"checkbox\" /> Steal underpants\n          </li>\n          <li>?</li>\n          <li>\n            <input type=\"checkbox\" /> Profit!\n          </li>\n        </ul>\n        And a nested list:\n        <ul>\n          <li>\n            Jackson 5\n            <ul>\n              <li>Michael</li>\n              <li>Tito</li>\n              <li>Jackie</li>\n              <li>Marlon</li>\n              <li>Jermaine</li>\n            </ul>\n          </li>\n          <li>\n            TMNT\n            <ul>\n              <li>Leonardo</li>\n              <li>Michelangelo</li>\n              <li>Donatello</li>\n              <li>Raphael</li>\n            </ul>\n          </li>\n        </ul>\n        <p>Definition lists can be used with HTML syntax. Definition terms are bold and italic.</p>\n        <dl>\n          <dt>Name</dt>\n          <dd>Godzilla</dd>\n          <dt>Born</dt>\n          <dd>1952</dd>\n          <dt>Birthplace</dt>\n          <dd>Japan</dd>\n          <dt>Color</dt>\n          <dd>Green</dd>\n        </dl>\n        <hr />\n        <p>Tables should have bold headings and alternating shaded rows.</p>\n        <table>\n          <thead>\n            <tr>\n              <th>Artist</th>\n              <th>Album</th>\n              <th>Year</th>\n            </tr>\n          </thead>\n          <tbody>\n            <tr>\n              <td>David Bowie</td>\n              <td>Scary Monsters</td>\n              <td>1980</td>\n            </tr>\n            <tr>\n              <td>Prince</td>\n              <td>Purple Rain</td>\n              <td>1982</td>\n            </tr>\n            <tr>\n              <td>Beastie Boys</td>\n              <td>License to Ill</td>\n              <td>1986</td>\n            </tr>\n            <tr>\n              <td>Janet Jackson</td>\n              <td>Rhythm Nation 1814</td>\n              <td>1989</td>\n            </tr>\n          </tbody>\n        </table>\n        <p>If a table is too wide, it should condense down and/or scroll horizontally.</p>\n        <table>\n          <thead>\n            <tr>\n              <th>Artist</th>\n              <th>Album</th>\n              <th>Year</th>\n              <th>Label</th>\n              <th>Songs</th>\n            </tr>\n          </thead>\n          <tbody>\n            <tr>\n              <td>David Bowie</td>\n              <td>Scary Monsters</td>\n              <td>1980</td>\n              <td>RCA Records</td>\n              <td>\n                It's No Game (No. 1), Up the Hill Backwards, Scary Monsters (And Super Creeps), Ashes to Ashes, Fashion,\n                Teenage Wildlife, Scream Like a Baby, Kingdom Come, Because You're Young, It's No Game (No. 2)\n              </td>\n            </tr>\n            <tr>\n              <td>Prince</td>\n              <td>Purple Rain</td>\n              <td>1982</td>\n              <td>Warner Brothers Records</td>\n              <td>\n                Let's Go Crazy, Take Me With U, The Beautiful Ones, Computer Blue, Darling Nikki, When Doves Cry, I\n                Would Die 4 U, Baby I'm a Star, Purple Rain\n              </td>\n            </tr>\n            <tr>\n              <td>Beastie Boys</td>\n              <td>License to Ill</td>\n              <td>1986</td>\n              <td>Def Jam</td>\n              <td>\n                Rhymin &amp; Stealin, The New Style, She's Crafty, Posse in Effect, Slow Ride, Girls, Fight for Your\n                Right, No Sleep till Brooklyn, Paul Revere, \"Hold It Now, Hit It\", Brass Monkey, Slow and Low, Time to\n                Get Ill\n              </td>\n            </tr>\n            <tr>\n              <td>Janet Jackson</td>\n              <td>Rhythm Nation 1814</td>\n              <td>1989</td>\n              <td>A&amp;M</td>\n              <td>\n                Interlude: Pledge, Rhythm Nation, Interlude: T.V., State of the World, Interlude: Race, The Knowledge,\n                Interlude: Let's Dance, Miss You Much, Interlude: Come Back, Love Will Never Do (Without You), Livin' in\n                a World (They Didn't Make), Alright, Interlude: Hey Baby, Escapade, Interlude: No Acid, Black Cat,\n                Lonely, Come Back to Me, Someday Is Tonight, Interlude: Livin'...In Complete Darkness\n              </td>\n            </tr>\n          </tbody>\n        </table>\n        <hr />\n        <p>\n          Code snippets like <code>var foo = \"bar\";</code> can be shown inline.\n        </p>\n        <p>\n          Also, <code>this should vertically align</code>{' '}\n          <s>\n            <code>with this</code>\n          </s>{' '}\n          <s>and this</s>.\n        </p>\n        <p>Code can also be shown in a block element.</p>\n        <pre>\n          <code>var foo = \"bar\";</code>\n        </pre>\n        <p>Code can also use syntax highlighting.</p>\n        <pre>\n          <code class=\"prism-code language-javascript\">var foo = \"bar\";</code>\n        </pre>\n        <pre>\n          <code>\n            Long, single-line code blocks should not wrap. They should horizontally scroll if they are too long. This\n            line should be long enough to demonstrate this.\n          </code>\n        </pre>\n        <pre>\n          <code class=\"prism-code language-javascript\">\n            var foo = \"The same thing is true for code with syntax highlighting. A single line of code should\n            horizontally scroll if it is really long.\";\n          </code>\n        </pre>\n        <p>Inline code inside table cells should still be distinguishable.</p>\n        <table>\n          <thead>\n            <tr>\n              <th>Language</th>\n              <th>Code</th>\n            </tr>\n          </thead>\n          <tbody>\n            <tr>\n              <td>JavasScript</td>\n              <td>\n                <code>var foo = \"bar\";</code>\n              </td>\n            </tr>\n            <tr>\n              <td>Ruby</td>\n              <td>\n                <code>foo = \"bar\"</code>\n              </td>\n            </tr>\n          </tbody>\n        </table>\n        <hr />\n        <p>\n          The <code>samp</code> HTML element is used to enclose inline text which represents sample (or quoted) output\n          from a computer program. Here an example of an error message: <samp>File not found</samp>\n        </p>\n        <hr />\n        <p>Small images should be shown at their actual size.</p>\n        <p>\n          <img src=\"http://placekitten.com/g/300/200/\" />\n        </p>\n        <p>Large images should always scale down and fit in the content container.</p>\n        <p>\n          <img src=\"http://placekitten.com/g/1200/800/\" />\n        </p>\n        <p>\n          Here's a simple footnote,\n          <sup>\n            <a\n              href=\"#user-content-fn-1-12345\"\n              id=\"user-content-fnref-1-12345\"\n              data-footnote-ref=\"\"\n              aria-describedby=\"footnote-label\"\n            >\n              1\n            </a>\n          </sup>{' '}\n          and here's a longer one.\n          <sup>\n            <a\n              href=\"#user-content-fn-bignote-12345\"\n              id=\"user-content-fnref-bignote-12345\"\n              data-footnote-ref=\"\"\n              aria-describedby=\"footnote-label\"\n            >\n              2\n            </a>\n          </sup>\n        </p>\n        <section data-footnotes=\"\" class=\"footnotes\">\n          <h2 id=\"footnote-label\" class=\"sr-only\">\n            Footnotes\n          </h2>\n          <ol>\n            <li id=\"user-content-fn-1-12345\">\n              <p>\n                This is the first footnote.{' '}\n                <a\n                  href=\"#user-content-fnref-1-12345\"\n                  data-footnote-backref=\"\"\n                  class=\"data-footnote-backref\"\n                  aria-label=\"Back to content\"\n                >\n                  <g-emoji\n                    class=\"g-emoji\"\n                    alias=\"leftwards_arrow_with_hook\"\n                    fallback-src=\"https://github.githubassets.com/images/icons/emoji/unicode/21a9.png\"\n                  >\n                    ↩\n                  </g-emoji>\n                </a>\n              </p>\n            </li>\n            <li id=\"user-content-fn-bignote-12345\">\n              <p>Here's one with multiple paragraphs and code.</p>\n              <p>Indent paragraphs to include them in the footnote.</p>\n              <p>\n                <code>my code</code>\n              </p>\n              <p>\n                Add as many paragraphs as you like.{' '}\n                <a\n                  href=\"#user-content-fnref-bignote-12345\"\n                  data-footnote-backref=\"\"\n                  class=\"data-footnote-backref\"\n                  aria-label=\"Back to content\"\n                >\n                  <g-emoji\n                    class=\"g-emoji\"\n                    alias=\"leftwards_arrow_with_hook\"\n                    fallback-src=\"https://github.githubassets.com/images/icons/emoji/unicode/21a9.png\"\n                  >\n                    ↩\n                  </g-emoji>\n                </a>\n              </p>\n            </li>\n          </ol>\n        </section>\n        <pre>\n          <code>This is the final element on the page and there should be no margin below this.</code>\n        </pre>\n      </div>\n    </>\n  )\n}\n"
  },
  {
    "path": "docs/stories/deprecated-components/Marketing/Marketing.mdx",
    "content": "import {Canvas, Meta, Story} from '@storybook/blocks'\n\nimport * as MarketingStories from './Marketing.stories'\n\n<Meta of={MarketingStories} />\n\n# Marketing links\n\nMarketing links can be produced by combining the base class `link-mktg` with a set of modifier classes to control the size and color.\n\n<Canvas of={MarketingStories.Link} />\n\n## Link sizes\n\nThe marketing link size is defined with utility classes and come in large (`.f3-mktg`) and small (`.f4-mktg`):\n\n## Link with emphasis\n\nAdd class `link-emphasis-mktg` to the link, to give it a pale underline, that will fill up on hover.\n\n<Canvas of={MarketingStories.LinkEmphasis} />\n\n## Link colors\n\nThe link color is controlled with the [Primer color classes](/utilities/colors), while the symbol and underline styling will follow:\n\n<Canvas of={MarketingStories.LinkColors} />\n"
  },
  {
    "path": "docs/stories/deprecated-components/Marketing/Marketing.stories.tsx",
    "content": "import React from 'react'\nimport {BADGE} from '@geometricpanda/storybook-addon-badges'\n\nexport default {\n  title: 'Deprecated/Marketing',\n  parameters: {\n    storyType: 'banner',\n    controls: {hideNoControlsWarning: true},\n    badges: [BADGE.DEPRECATED],\n  },\n}\n\nexport const Link = () => {\n  return (\n    <>\n      <a href=\"#\" className=\"link-mktg arrow-target-mktg text-semibold f3-mktg\">\n        Call to action\n        <svg\n          xmlns=\"http://www.w3.org/2000/svg\"\n          className=\"octicon arrow-symbol-mktg\"\n          width=\"16\"\n          height=\"16\"\n          viewBox=\"0 0 16 16\"\n          fill=\"none\"\n        >\n          <path\n            fill=\"currentColor\"\n            d=\"M7.28033 3.21967C6.98744 2.92678 6.51256 2.92678 6.21967 3.21967C5.92678 3.51256 5.92678 3.98744 6.21967 4.28033L7.28033 3.21967ZM11 8L11.5303 8.53033C11.8232 8.23744 11.8232 7.76256 11.5303 7.46967L11 8ZM6.21967 11.7197C5.92678 12.0126 5.92678 12.4874 6.21967 12.7803C6.51256 13.0732 6.98744 13.0732 7.28033 12.7803L6.21967 11.7197ZM6.21967 4.28033L10.4697 8.53033L11.5303 7.46967L7.28033 3.21967L6.21967 4.28033ZM10.4697 7.46967L6.21967 11.7197L7.28033 12.7803L11.5303 8.53033L10.4697 7.46967Z\"\n          ></path>\n          <path stroke=\"currentColor\" d=\"M1.75 8H11\" stroke-width=\"1.5\" stroke-linecap=\"round\"></path>\n        </svg>\n      </a>\n      <a href=\"#\" className=\"link-mktg arrow-target-mktg text-semibold f4-mktg\">\n        Call to action\n        <svg\n          xmlns=\"http://www.w3.org/2000/svg\"\n          className=\"octicon arrow-symbol-mktg\"\n          width=\"16\"\n          height=\"16\"\n          viewBox=\"0 0 16 16\"\n          fill=\"none\"\n        >\n          <path\n            fill=\"currentColor\"\n            d=\"M7.28033 3.21967C6.98744 2.92678 6.51256 2.92678 6.21967 3.21967C5.92678 3.51256 5.92678 3.98744 6.21967 4.28033L7.28033 3.21967ZM11 8L11.5303 8.53033C11.8232 8.23744 11.8232 7.76256 11.5303 7.46967L11 8ZM6.21967 11.7197C5.92678 12.0126 5.92678 12.4874 6.21967 12.7803C6.51256 13.0732 6.98744 13.0732 7.28033 12.7803L6.21967 11.7197ZM6.21967 4.28033L10.4697 8.53033L11.5303 7.46967L7.28033 3.21967L6.21967 4.28033ZM10.4697 7.46967L6.21967 11.7197L7.28033 12.7803L11.5303 8.53033L10.4697 7.46967Z\"\n          ></path>\n          <path stroke=\"currentColor\" d=\"M1.75 8H11\" stroke-width=\"1.5\" stroke-linecap=\"round\"></path>\n        </svg>\n      </a>\n    </>\n  )\n}\n\nexport const Hover = () => {\n  return (\n    <>\n      <a href=\"#\" className=\"link-mktg arrow-target-mktg text-semibold f3-mktg\">\n        Call to action\n        <svg\n          xmlns=\"http://www.w3.org/2000/svg\"\n          className=\"octicon arrow-symbol-mktg\"\n          width=\"16\"\n          height=\"16\"\n          viewBox=\"0 0 16 16\"\n          fill=\"none\"\n        >\n          <path\n            fill=\"currentColor\"\n            d=\"M7.28033 3.21967C6.98744 2.92678 6.51256 2.92678 6.21967 3.21967C5.92678 3.51256 5.92678 3.98744 6.21967 4.28033L7.28033 3.21967ZM11 8L11.5303 8.53033C11.8232 8.23744 11.8232 7.76256 11.5303 7.46967L11 8ZM6.21967 11.7197C5.92678 12.0126 5.92678 12.4874 6.21967 12.7803C6.51256 13.0732 6.98744 13.0732 7.28033 12.7803L6.21967 11.7197ZM6.21967 4.28033L10.4697 8.53033L11.5303 7.46967L7.28033 3.21967L6.21967 4.28033ZM10.4697 7.46967L6.21967 11.7197L7.28033 12.7803L11.5303 8.53033L10.4697 7.46967Z\"\n          ></path>\n          <path stroke=\"currentColor\" d=\"M1.75 8H11\" stroke-width=\"1.5\" stroke-linecap=\"round\"></path>\n        </svg>\n      </a>\n    </>\n  )\n}\nHover.parameters = {pseudo: {hover: true}}\n\nexport const LinkEmphasis = () => {\n  return (\n    <>\n      <a href=\"#\" className=\"link-mktg arrow-target-mktg link-emphasis-mktg text-semibold f3-mktg\">\n        Call to action\n        <svg\n          xmlns=\"http://www.w3.org/2000/svg\"\n          className=\"octicon arrow-symbol-mktg\"\n          width=\"16\"\n          height=\"16\"\n          viewBox=\"0 0 16 16\"\n          fill=\"none\"\n        >\n          <path\n            fill=\"currentColor\"\n            d=\"M7.28033 3.21967C6.98744 2.92678 6.51256 2.92678 6.21967 3.21967C5.92678 3.51256 5.92678 3.98744 6.21967 4.28033L7.28033 3.21967ZM11 8L11.5303 8.53033C11.8232 8.23744 11.8232 7.76256 11.5303 7.46967L11 8ZM6.21967 11.7197C5.92678 12.0126 5.92678 12.4874 6.21967 12.7803C6.51256 13.0732 6.98744 13.0732 7.28033 12.7803L6.21967 11.7197ZM6.21967 4.28033L10.4697 8.53033L11.5303 7.46967L7.28033 3.21967L6.21967 4.28033ZM10.4697 7.46967L6.21967 11.7197L7.28033 12.7803L11.5303 8.53033L10.4697 7.46967Z\"\n          ></path>\n          <path stroke=\"currentColor\" d=\"M1.75 8H11\" stroke-width=\"1.5\" stroke-linecap=\"round\"></path>\n        </svg>\n      </a>\n    </>\n  )\n}\n\nexport const LinkColors = () => {\n  return (\n    <>\n      <a href=\"#\" className=\"link-mktg arrow-target-mktg text-semibold f3-mktg color-fg-default mr-4\">\n        Call to action\n        <svg\n          xmlns=\"http://www.w3.org/2000/svg\"\n          className=\"octicon arrow-symbol-mktg\"\n          width=\"16\"\n          height=\"16\"\n          viewBox=\"0 0 16 16\"\n          fill=\"none\"\n        >\n          <path\n            fill=\"currentColor\"\n            d=\"M7.28033 3.21967C6.98744 2.92678 6.51256 2.92678 6.21967 3.21967C5.92678 3.51256 5.92678 3.98744 6.21967 4.28033L7.28033 3.21967ZM11 8L11.5303 8.53033C11.8232 8.23744 11.8232 7.76256 11.5303 7.46967L11 8ZM6.21967 11.7197C5.92678 12.0126 5.92678 12.4874 6.21967 12.7803C6.51256 13.0732 6.98744 13.0732 7.28033 12.7803L6.21967 11.7197ZM6.21967 4.28033L10.4697 8.53033L11.5303 7.46967L7.28033 3.21967L6.21967 4.28033ZM10.4697 7.46967L6.21967 11.7197L7.28033 12.7803L11.5303 8.53033L10.4697 7.46967Z\"\n          ></path>\n          <path stroke=\"currentColor\" d=\"M1.75 8H11\" stroke-width=\"1.5\" stroke-linecap=\"round\"></path>\n        </svg>\n      </a>\n\n      <a href=\"#\" className=\"link-mktg arrow-target-mktg link-emphasis-mktg text-semibold f4-mktg color-fg-default\">\n        Call to action\n        <svg\n          xmlns=\"http://www.w3.org/2000/svg\"\n          className=\"octicon arrow-symbol-mktg\"\n          width=\"16\"\n          height=\"16\"\n          viewBox=\"0 0 16 16\"\n          fill=\"none\"\n        >\n          <path\n            fill=\"currentColor\"\n            d=\"M7.28033 3.21967C6.98744 2.92678 6.51256 2.92678 6.21967 3.21967C5.92678 3.51256 5.92678 3.98744 6.21967 4.28033L7.28033 3.21967ZM11 8L11.5303 8.53033C11.8232 8.23744 11.8232 7.76256 11.5303 7.46967L11 8ZM6.21967 11.7197C5.92678 12.0126 5.92678 12.4874 6.21967 12.7803C6.51256 13.0732 6.98744 13.0732 7.28033 12.7803L6.21967 11.7197ZM6.21967 4.28033L10.4697 8.53033L11.5303 7.46967L7.28033 3.21967L6.21967 4.28033ZM10.4697 7.46967L6.21967 11.7197L7.28033 12.7803L11.5303 8.53033L10.4697 7.46967Z\"\n          ></path>\n          <path stroke=\"currentColor\" d=\"M1.75 8H11\" stroke-width=\"1.5\" stroke-linecap=\"round\"></path>\n        </svg>\n      </a>\n    </>\n  )\n}\n"
  },
  {
    "path": "docs/stories/deprecated-components/Pagination/Pagination.mdx",
    "content": "import {Canvas, Meta, Story} from '@storybook/blocks'\n\nimport * as PaginationStories from './Pagination.stories'\n\n<Meta of={PaginationStories} />\n\n# Pagination\n\nUse the pagination component to apply button styles to a connected set of links that go to related pages (for example, previous, next, or page numbers).\n\n## Previous/next pagination\n\nYou can make a very simple pagination container with just the Previous and Next buttons. Add the `aria-disabled=\"true\"` attribute to the `Previous` button if there isn't a preceding page, or to the `Next` button if there isn't a succeeding page.\n\n<Canvas of={PaginationStories.Default} />\n\n## Numbered pagination\n\nFor pagination across multiple pages, make sure it's clear to the user where they are in a set of pages.\n\nTo do this, add anchor links to the `pagination` element. Previous and Next buttons should always be present. Add the `aria-disabled=\"true\"` attribute to the Previous button if you're on the first page. Apply the `aria-current=\"page\"` attribute to the current numbered page.\n\nAs always, make sure to include the appropriate `aria` attributes to make the element accessible.\n\n- Add `aria-label=\"Pagination\"` to the `paginate-container` element.\n- Add `aria-label=\"Page X\"` to each anchor link.\n\n<Canvas of={PaginationStories.Numbered} />\n"
  },
  {
    "path": "docs/stories/deprecated-components/Pagination/Pagination.stories.tsx",
    "content": "import React from 'react'\nimport {BADGE} from '@geometricpanda/storybook-addon-badges'\n\nexport default {\n  title: 'Deprecated/Pagination',\n  parameters: {\n    storyType: 'banner',\n    controls: {hideNoControlsWarning: true},\n    badges: [BADGE.DEPRECATED],\n  },\n}\n\nexport const Default = () => {\n  return (\n    <>\n      <nav className=\"paginate-container\" aria-label=\"Pagination\">\n        <div className=\"pagination\">\n          <span className=\"previous_page\" aria-disabled=\"true\">\n            Previous\n          </span>\n          <a className=\"next_page\" rel=\"next\" href=\"#url\" aria-label=\"Next Page\">\n            Next\n          </a>\n        </div>\n      </nav>\n    </>\n  )\n}\n\nexport const Numbered = () => {\n  return (\n    <nav className=\"paginate-container\" aria-label=\"Pagination\">\n      <div className=\"pagination\">\n        <span className=\"previous_page\" aria-disabled=\"true\">\n          Previous\n        </span>\n        <em aria-current=\"page\">1</em>\n        <a href=\"#url\" aria-label=\"Page 2\">\n          2\n        </a>\n        <a href=\"#url\" aria-label=\"Page 3\">\n          3\n        </a>\n        <span className=\"gap\">…</span>\n        <a href=\"#url\" aria-label=\"Page 8\">\n          8\n        </a>\n        <a href=\"#url\" aria-label=\"Page 9\">\n          9\n        </a>\n        <a href=\"#url\" aria-label=\"Page 10\">\n          10\n        </a>\n        <a className=\"next_page\" rel=\"next\" href=\"#url\" aria-label=\"Next Page\">\n          Next\n        </a>\n      </div>\n    </nav>\n  )\n}\n"
  },
  {
    "path": "docs/stories/deprecated-components/SelectMenu/SelectMenu.mdx",
    "content": "import {Canvas, Meta, Story} from '@storybook/blocks'\n\nimport * as SelectMenuStories from './SelectMenu.stories'\n\n<Meta of={SelectMenuStories} />\n\n# SelectMenu\n\nPlease note that this is a newer version and uses the `.SelectMenu` class instead of the <a href=\"/css/components/select-menu-deprecated\">deprecated select menu</a> class. Check the <a href=\"/css/components/select-menu-deprecated\">migration guide</a> to make sure your app is up to date.\n\nThe `SelectMenu` component provides advanced support for navigation, filtering, and more. Any menu can make use of JavaScript-enabled live filtering, selected states, tabbed lists, and keyboard navigation with a bit of markup.\n\n## Basic example\n\nUse a `<details>` element to toggle the select menu. The `<summary>` element can be styled in many ways. In the example below it's a `.btn`.\n\n<Canvas of={SelectMenuStories.Default} />\n\nAdd a `.SelectMenu-header` to house a clear title and a close button. Note that the close button is only shown on narrow screens (mobile).\n\n## Right aligned\n\nIn case the select menu should be aligned to the right, use `SelectMenu right-0`.\n\n<Canvas of={SelectMenuStories.RightAligned} />\n\n## Selected state\n\nIf the `SelectMenu` should show a check icon for selected items, use the `SelectMenu-icon SelectMenu-icon--check` classes. It will make the check icon show when `aria-checked=\"true\"` is set.\n\n<Canvas of={SelectMenuStories.SelectedState} />\n\n## Borderless\n\nUse the `.SelectMenu-list--borderless` modifier to remove the borders between list items. Note: It's better to keep the borders if a list contains items with multiple lines of text. It will make it easier to see where the items start and end.\n\n<Canvas of={SelectMenuStories.Borderless} />\n\n## Header\n\nAdd a `.SelectMenu-header` at the top to house a clear title and a close button.\n\n<Canvas of={SelectMenuStories.Header} />\n\n## List items\n\nThe list of items is arguably the most important subcomponent within the menu. Build them out of anchors, buttons, or just about any [interactive content](http://w3c.github.io/html/dom.html#interactive-content). List items are also customizable with options for avatars, additional icons, and multiple lines of text. Use utility classes in case more custom styling is needed.\n\n<Canvas of={SelectMenuStories.ListItems} />\n\n## Divider\n\nThe select menu's list can be divided into multiple parts by adding a `.SelectMenu-divider`. It can be a `<div>` with text/content. Or just an `<hr>` to add a visual separator.\n\nDividers are also supported when using the `.SelectMenu-list--borderless` modifier.\n\n<Canvas of={SelectMenuStories.Divider} />\n\n## Footer\n\nUse a `.SelectMenu-footer` at the bottom for additional information. As a side effect it can greatly improve the scrolling performance because the list doesn't need to be repainted due to the rounded corners.\n\n<Canvas of={SelectMenuStories.Footer} />\n\n## Filter\n\nIf the list is expected to get long, consider adding a `.SelectMenu-filter` input. Be sure to also include the `.SelectMenu--hasFilter` modifier class. On mobile devices it will add a fixed height and anchor the select menu to the top of the screen. This makes sure the filter input stays at the same position while typing.\n\n<Canvas of={SelectMenuStories.Filter} />\n\n## Tabs\n\nSometimes you need two or more lists of items in your select menu, e.g. branches and tags. Select menu lists can be tabbed with the addition of `.SelectMenu-tabs` above the menu.\n\n<Canvas of={SelectMenuStories.Tabs} />\n\n## Message\n\nA `SelectMenu-message` can be used to show different kind of messages to a user. Use utility classes to further style the message.\n\n<Canvas of={SelectMenuStories.Message} />\n\n## Loading\n\nWhen fetching large lists, consider showing a `.SelectMenu-loading` animation.\n\n<Canvas of={SelectMenuStories.Loading} />\n\n## Disabled\n\nTo disable a list item, use the `disabled` attribute for `<button>`s. For `<a>`s replace the `href` with an `aria-disabled=\"true\"` attribute. Note: If not obvious, try to communicate to the user why an item is disabled.\n\n<Canvas of={SelectMenuStories.Disabled} />\n\n## Blankslate\n\nSometimes a select menu needs to communicate a \"blank slate\" where there's no content in the menu's list. Usually these include a clear call to action to add said content to the list. Swap out the contents of a `.SelectMenu-list` with a `.SelectMenu-blankslate` and customize its contents as needed.\n\n<Canvas of={SelectMenuStories.BlankSlate} />\n\n## github.com usage\n\nWhen adding the `.SelectMenu` component on github.com, use the [`<details-menu>`](https://github.com/github/details-menu-element) element. It will magically make the `.SelectMenu` work. Here a basic example:\n\n```erb\n<details class=\"details-reset details-overlay\" id=\"my-select-menu\">\n  <summary class=\"btn\">\n    <span>Choose</span>\n    <span class=\"dropdown-caret\"></span>\n  </summary>\n  <details-menu class=\"SelectMenu\" role=\"menu\">\n    <div class=\"SelectMenu-modal\">\n      <header class=\"SelectMenu-header\">\n        <span class=\"SelectMenu-title\">My Select Menu</span>\n        <button class=\"SelectMenu-closeButton\" type=\"button\" data-toggle-for=\"my-select-menu\">\n          <%= octicon(\"x\", \"aria-label\": \"Close menu\") %>\n        </button>\n      </header>\n      <div class=\"SelectMenu-list\">\n        <a class=\"SelectMenu-item\" href=\"\" role=\"menuitem\">Item 1</a>\n        <a class=\"SelectMenu-item\" href=\"\" role=\"menuitem\">Item 2</a>\n        <a class=\"SelectMenu-item\" href=\"\" role=\"menuitem\">Item 3</a>\n      </div>\n    </div>\n  </details-menu>\n</details>\n```\n\nIf loading content should be deferred, use the [`<include-fragment>`](https://github.com/github/details-menu-element) element:\n\n```erb\n<details-menu class=\"SelectMenu\" src=\"/my-menu\" preload>\n  <div class=\"SelectMenu-modal\">\n    <include-fragment class=\"SelectMenu-loading\" aria-label=\"Menu is loading\">\n      <%= octicon(\"octoface\", class: \"anim-pulse\", :height => 32) %>\n    </include-fragment>\n  </div>\n</details-menu>\n```\n\nIt will add a pulsing \"octoface\" icon while the content is loading.\n"
  },
  {
    "path": "docs/stories/deprecated-components/SelectMenu/SelectMenu.stories.tsx",
    "content": "import React from 'react'\nimport {BADGE} from '@geometricpanda/storybook-addon-badges'\n\nexport default {\n  title: 'Deprecated/SelectMenu',\n  parameters: {\n    storyType: 'banner',\n    controls: {hideNoControlsWarning: true},\n    badges: [BADGE.DEPRECATED],\n  },\n}\n\nexport const Default = () => {\n  return (\n    <>\n      <details className=\"details-reset details-overlay\" open>\n        <summary className=\"btn\" aria-haspopup=\"true\">\n          Choose an item\n        </summary>\n        <div className=\"SelectMenu\">\n          <div className=\"SelectMenu-modal\">\n            <div className=\"SelectMenu-list\">\n              <button className=\"SelectMenu-item\" role=\"menuitem\">\n                Item 1\n              </button>\n              <button className=\"SelectMenu-item\" role=\"menuitem\">\n                Item 2\n              </button>\n              <button className=\"SelectMenu-item\" role=\"menuitem\">\n                Item 3\n              </button>\n            </div>\n          </div>\n        </div>\n      </details>\n\n      <div className=\"d-sm-none\" style={{height: '600px'}}></div>\n      <div className=\"d-none d-sm-block\" style={{height: '120px'}}></div>\n    </>\n  )\n}\n\nexport const RightAligned = () => {\n  return (\n    <>\n      <div className=\"d-flex flex-justify-end position-relative\">\n        <details className=\"details-reset details-overlay\" open>\n          <summary className=\"btn\" aria-haspopup=\"true\">\n            Choose an item\n          </summary>\n          <div className=\"SelectMenu right-0\">\n            <div className=\"SelectMenu-modal\">\n              <div className=\"SelectMenu-list\">\n                <button className=\"SelectMenu-item\" role=\"menuitem\">\n                  Item 1\n                </button>\n                <button className=\"SelectMenu-item\" role=\"menuitem\">\n                  Item 2\n                </button>\n                <button className=\"SelectMenu-item\" role=\"menuitem\">\n                  Item 3\n                </button>\n              </div>\n            </div>\n          </div>\n        </details>\n      </div>\n\n      <div className=\"d-sm-none\" style={{height: '600px'}}></div>\n      <div className=\"d-none d-sm-block\" style={{height: '180px'}}></div>\n    </>\n  )\n}\n\nexport const SelectedState = () => {\n  return (\n    <>\n      <details className=\"details-reset details-overlay\" open>\n        <summary className=\"btn\" aria-haspopup=\"true\">\n          Choose an item\n        </summary>\n        <div className=\"SelectMenu\">\n          <div className=\"SelectMenu-modal\">\n            <div className=\"SelectMenu-list\">\n              <button className=\"SelectMenu-item\" role=\"menuitemcheckbox\" aria-checked=\"true\">\n                <svg\n                  className=\"SelectMenu-icon SelectMenu-icon--check octicon octicon-check\"\n                  xmlns=\"http://www.w3.org/2000/svg\"\n                  viewBox=\"0 0 16 16\"\n                  width=\"16\"\n                  height=\"16\"\n                >\n                  {' '}\n                  <path\n                    fill-rule=\"evenodd\"\n                    clip-rule=\"evenodd\"\n                    d=\"M13.78 4.22C13.9204 4.36062 13.9993 4.55125 13.9993 4.75C13.9993 4.94875 13.9204 5.13937 13.78 5.28L6.53 12.53C6.38937 12.6704 6.19875 12.7493 6 12.7493C5.80125 12.7493 5.61062 12.6704 5.47 12.53L2.22 9.28C2.08752 9.13782 2.0154 8.94978 2.01882 8.75547C2.02225 8.56117 2.10096 8.37579 2.23838 8.23837C2.37579 8.10096 2.56118 8.02225 2.75548 8.01882C2.94978 8.01539 3.13782 8.08752 3.28 8.22L6 10.94L12.72 4.22C12.8606 4.07955 13.0512 4.00066 13.25 4.00066C13.4487 4.00066 13.6394 4.07955 13.78 4.22Z\"\n                  ></path>\n                </svg>\n                Selected state\n              </button>\n              <button className=\"SelectMenu-item\" role=\"menuitemcheckbox\">\n                <svg\n                  className=\"SelectMenu-icon SelectMenu-icon--check octicon octicon-check\"\n                  xmlns=\"http://www.w3.org/2000/svg\"\n                  viewBox=\"0 0 16 16\"\n                  width=\"16\"\n                  height=\"16\"\n                >\n                  {' '}\n                  <path\n                    fill-rule=\"evenodd\"\n                    clip-rule=\"evenodd\"\n                    d=\"M13.78 4.22C13.9204 4.36062 13.9993 4.55125 13.9993 4.75C13.9993 4.94875 13.9204 5.13937 13.78 5.28L6.53 12.53C6.38937 12.6704 6.19875 12.7493 6 12.7493C5.80125 12.7493 5.61062 12.6704 5.47 12.53L2.22 9.28C2.08752 9.13782 2.0154 8.94978 2.01882 8.75547C2.02225 8.56117 2.10096 8.37579 2.23838 8.23837C2.37579 8.10096 2.56118 8.02225 2.75548 8.01882C2.94978 8.01539 3.13782 8.08752 3.28 8.22L6 10.94L12.72 4.22C12.8606 4.07955 13.0512 4.00066 13.25 4.00066C13.4487 4.00066 13.6394 4.07955 13.78 4.22Z\"\n                  ></path>\n                </svg>\n                Default state\n              </button>\n              <button className=\"SelectMenu-item\" role=\"menuitemcheckbox\" aria-checked=\"true\">\n                <svg\n                  className=\"SelectMenu-icon SelectMenu-icon--check octicon octicon-check\"\n                  xmlns=\"http://www.w3.org/2000/svg\"\n                  viewBox=\"0 0 16 16\"\n                  width=\"16\"\n                  height=\"16\"\n                >\n                  {' '}\n                  <path\n                    fill-rule=\"evenodd\"\n                    clip-rule=\"evenodd\"\n                    d=\"M13.78 4.22C13.9204 4.36062 13.9993 4.55125 13.9993 4.75C13.9993 4.94875 13.9204 5.13937 13.78 5.28L6.53 12.53C6.38937 12.6704 6.19875 12.7493 6 12.7493C5.80125 12.7493 5.61062 12.6704 5.47 12.53L2.22 9.28C2.08752 9.13782 2.0154 8.94978 2.01882 8.75547C2.02225 8.56117 2.10096 8.37579 2.23838 8.23837C2.37579 8.10096 2.56118 8.02225 2.75548 8.01882C2.94978 8.01539 3.13782 8.08752 3.28 8.22L6 10.94L12.72 4.22C12.8606 4.07955 13.0512 4.00066 13.25 4.00066C13.4487 4.00066 13.6394 4.07955 13.78 4.22Z\"\n                  ></path>\n                </svg>\n                Selected state\n              </button>\n              <button className=\"SelectMenu-item\" role=\"menuitemcheckbox\">\n                <svg\n                  className=\"SelectMenu-icon SelectMenu-icon--check octicon octicon-check\"\n                  xmlns=\"http://www.w3.org/2000/svg\"\n                  viewBox=\"0 0 16 16\"\n                  width=\"16\"\n                  height=\"16\"\n                >\n                  {' '}\n                  <path\n                    fill-rule=\"evenodd\"\n                    clip-rule=\"evenodd\"\n                    d=\"M13.78 4.22C13.9204 4.36062 13.9993 4.55125 13.9993 4.75C13.9993 4.94875 13.9204 5.13937 13.78 5.28L6.53 12.53C6.38937 12.6704 6.19875 12.7493 6 12.7493C5.80125 12.7493 5.61062 12.6704 5.47 12.53L2.22 9.28C2.08752 9.13782 2.0154 8.94978 2.01882 8.75547C2.02225 8.56117 2.10096 8.37579 2.23838 8.23837C2.37579 8.10096 2.56118 8.02225 2.75548 8.01882C2.94978 8.01539 3.13782 8.08752 3.28 8.22L6 10.94L12.72 4.22C12.8606 4.07955 13.0512 4.00066 13.25 4.00066C13.4487 4.00066 13.6394 4.07955 13.78 4.22Z\"\n                  ></path>\n                </svg>\n                Default state\n              </button>\n              <button className=\"SelectMenu-item\" role=\"menuitemcheckbox\">\n                <svg\n                  className=\"SelectMenu-icon SelectMenu-icon--check octicon octicon-check\"\n                  xmlns=\"http://www.w3.org/2000/svg\"\n                  viewBox=\"0 0 16 16\"\n                  width=\"16\"\n                  height=\"16\"\n                >\n                  {' '}\n                  <path\n                    fill-rule=\"evenodd\"\n                    clip-rule=\"evenodd\"\n                    d=\"M13.78 4.22C13.9204 4.36062 13.9993 4.55125 13.9993 4.75C13.9993 4.94875 13.9204 5.13937 13.78 5.28L6.53 12.53C6.38937 12.6704 6.19875 12.7493 6 12.7493C5.80125 12.7493 5.61062 12.6704 5.47 12.53L2.22 9.28C2.08752 9.13782 2.0154 8.94978 2.01882 8.75547C2.02225 8.56117 2.10096 8.37579 2.23838 8.23837C2.37579 8.10096 2.56118 8.02225 2.75548 8.01882C2.94978 8.01539 3.13782 8.08752 3.28 8.22L6 10.94L12.72 4.22C12.8606 4.07955 13.0512 4.00066 13.25 4.00066C13.4487 4.00066 13.6394 4.07955 13.78 4.22Z\"\n                  ></path>\n                </svg>\n                Default state\n              </button>\n            </div>\n          </div>\n        </div>\n      </details>\n\n      <div className=\"d-sm-none\" style={{height: '600px'}}></div>\n      <div className=\"d-none d-sm-block\" style={{height: '180px'}}></div>\n    </>\n  )\n}\n\nexport const Borderless = () => {\n  return (\n    <>\n      <details className=\"details-reset details-overlay\" open>\n        <summary className=\"btn\" aria-haspopup=\"true\">\n          Choose an item\n        </summary>\n        <div className=\"SelectMenu\">\n          <div className=\"SelectMenu-modal\">\n            <div className=\"SelectMenu-list SelectMenu-list--borderless\">\n              <button className=\"SelectMenu-item\" role=\"menuitem\">\n                Item 1\n              </button>\n              <button className=\"SelectMenu-item\" role=\"menuitem\">\n                Item 2\n              </button>\n              <button className=\"SelectMenu-item\" role=\"menuitem\">\n                Item 3\n              </button>\n            </div>\n          </div>\n        </div>\n      </details>\n\n      <div className=\"d-sm-none\" style={{height: '600px'}}></div>\n      <div className=\"d-none d-sm-block\" style={{height: '180px'}}></div>\n    </>\n  )\n}\n\nexport const Header = () => {\n  return (\n    <>\n      <details className=\"details-reset details-overlay\" open>\n        <summary className=\"btn\" aria-haspopup=\"true\">\n          Choose an item\n        </summary>\n        <div className=\"SelectMenu\">\n          <div className=\"SelectMenu-modal\">\n            <header className=\"SelectMenu-header\">\n              <h3 className=\"SelectMenu-title\">Title</h3>\n              <button className=\"SelectMenu-closeButton\" type=\"button\">\n                <svg\n                  className=\"octicon octicon-x\"\n                  xmlns=\"http://www.w3.org/2000/svg\"\n                  viewBox=\"0 0 16 16\"\n                  width=\"16\"\n                  height=\"16\"\n                >\n                  {' '}\n                  <path\n                    fill-rule=\"evenodd\"\n                    clip-rule=\"evenodd\"\n                    d=\"M3.72 3.72C3.86062 3.57955 4.05125 3.50066 4.25 3.50066C4.44875 3.50066 4.63937 3.57955 4.78 3.72L8 6.94L11.22 3.72C11.2887 3.64631 11.3715 3.58721 11.4635 3.54622C11.5555 3.50523 11.6548 3.48319 11.7555 3.48141C11.8562 3.47963 11.9562 3.49816 12.0496 3.53588C12.143 3.5736 12.2278 3.62974 12.299 3.70096C12.3703 3.77218 12.4264 3.85702 12.4641 3.9504C12.5018 4.04379 12.5204 4.14382 12.5186 4.24452C12.5168 4.34523 12.4948 4.44454 12.4538 4.53654C12.4128 4.62854 12.3537 4.71134 12.28 4.78L9.06 8L12.28 11.22C12.3537 11.2887 12.4128 11.3715 12.4538 11.4635C12.4948 11.5555 12.5168 11.6548 12.5186 11.7555C12.5204 11.8562 12.5018 11.9562 12.4641 12.0496C12.4264 12.143 12.3703 12.2278 12.299 12.299C12.2278 12.3703 12.143 12.4264 12.0496 12.4641C11.9562 12.5018 11.8562 12.5204 11.7555 12.5186C11.6548 12.5168 11.5555 12.4948 11.4635 12.4538C11.3715 12.4128 11.2887 12.3537 11.22 12.28L8 9.06L4.78 12.28C4.63782 12.4125 4.44977 12.4846 4.25547 12.4812C4.06117 12.4777 3.87579 12.399 3.73837 12.2616C3.60096 12.1242 3.52225 11.9388 3.51882 11.7445C3.51539 11.5502 3.58752 11.3622 3.72 11.22L6.94 8L3.72 4.78C3.57955 4.63938 3.50066 4.44875 3.50066 4.25C3.50066 4.05125 3.57955 3.86063 3.72 3.72Z\"\n                  ></path>\n                </svg>\n              </button>\n            </header>\n            <div className=\"SelectMenu-list\">\n              <button className=\"SelectMenu-item\" role=\"menuitem\">\n                Item 1\n              </button>\n              <button className=\"SelectMenu-item\" role=\"menuitem\">\n                Item 2\n              </button>\n              <button className=\"SelectMenu-item\" role=\"menuitem\">\n                Item 3\n              </button>\n            </div>\n          </div>\n        </div>\n      </details>\n\n      <div className=\"d-sm-none\" style={{height: '600px'}}></div>\n      <div className=\"d-none d-sm-block\" style={{height: '180px'}}></div>\n    </>\n  )\n}\n\nexport const ListItems = () => {\n  return (\n    <>\n      <details className=\"details-reset details-overlay\" open>\n        <summary className=\"btn\" aria-haspopup=\"true\">\n          Choose an item\n        </summary>\n        <div className=\"SelectMenu\">\n          <div className=\"SelectMenu-modal\">\n            <header className=\"SelectMenu-header\">\n              <h3 className=\"SelectMenu-title\">Title</h3>\n              <button className=\"SelectMenu-closeButton\" type=\"button\">\n                <svg\n                  className=\"octicon octicon-x\"\n                  xmlns=\"http://www.w3.org/2000/svg\"\n                  viewBox=\"0 0 16 16\"\n                  width=\"16\"\n                  height=\"16\"\n                >\n                  {' '}\n                  <path\n                    fill-rule=\"evenodd\"\n                    clip-rule=\"evenodd\"\n                    d=\"M3.72 3.72C3.86062 3.57955 4.05125 3.50066 4.25 3.50066C4.44875 3.50066 4.63937 3.57955 4.78 3.72L8 6.94L11.22 3.72C11.2887 3.64631 11.3715 3.58721 11.4635 3.54622C11.5555 3.50523 11.6548 3.48319 11.7555 3.48141C11.8562 3.47963 11.9562 3.49816 12.0496 3.53588C12.143 3.5736 12.2278 3.62974 12.299 3.70096C12.3703 3.77218 12.4264 3.85702 12.4641 3.9504C12.5018 4.04379 12.5204 4.14382 12.5186 4.24452C12.5168 4.34523 12.4948 4.44454 12.4538 4.53654C12.4128 4.62854 12.3537 4.71134 12.28 4.78L9.06 8L12.28 11.22C12.3537 11.2887 12.4128 11.3715 12.4538 11.4635C12.4948 11.5555 12.5168 11.6548 12.5186 11.7555C12.5204 11.8562 12.5018 11.9562 12.4641 12.0496C12.4264 12.143 12.3703 12.2278 12.299 12.299C12.2278 12.3703 12.143 12.4264 12.0496 12.4641C11.9562 12.5018 11.8562 12.5204 11.7555 12.5186C11.6548 12.5168 11.5555 12.4948 11.4635 12.4538C11.3715 12.4128 11.2887 12.3537 11.22 12.28L8 9.06L4.78 12.28C4.63782 12.4125 4.44977 12.4846 4.25547 12.4812C4.06117 12.4777 3.87579 12.399 3.73837 12.2616C3.60096 12.1242 3.52225 11.9388 3.51882 11.7445C3.51539 11.5502 3.58752 11.3622 3.72 11.22L6.94 8L3.72 4.78C3.57955 4.63938 3.50066 4.44875 3.50066 4.25C3.50066 4.05125 3.57955 3.86063 3.72 3.72Z\"\n                  ></path>\n                </svg>\n              </button>\n            </header>\n            <div className=\"SelectMenu-list\">\n              <button className=\"SelectMenu-item\" role=\"menuitem\">\n                Text only\n                <svg\n                  className=\"SelectMenu-icon octicon octicon-pin\"\n                  viewBox=\"0 0 16 16\"\n                  version=\"1.1\"\n                  width=\"16\"\n                  height=\"16\"\n                  aria-hidden=\"true\"\n                >\n                  <path\n                    fill-rule=\"evenodd\"\n                    d=\"M10 1.2V2l.5 1L6 6H2.2c-.44 0-.67.53-.34.86L5 10l-4 5 5-4 3.14 3.14a.5.5 0 00.86-.34V10l3-4.5 1 .5h.8c.44 0 .67-.53.34-.86L10.86.86a.5.5 0 00-.86.34z\"\n                  ></path>\n                </svg>\n                With an icon\n              </button>\n              <button className=\"SelectMenu-item\" role=\"menuitem\">\n                <img\n                  className=\"avatar avatar-small mr-2\"\n                  src=\"https://avatars.githubusercontent.com/hubot?s=40\"\n                  alt=\"hubot\"\n                  height=\"20\"\n                  width=\"20\"\n                />\n                With an avatar\n              </button>\n              <button className=\"SelectMenu-item flex-justify-between\" role=\"menuitem\">\n                With a status icon\n                <svg\n                  width=\"8\"\n                  height=\"16\"\n                  viewBox=\"0 0 8 16\"\n                  className=\"octicon octicon-primitive-dot color-green-5 ml-2\"\n                  aria-hidden=\"true\"\n                >\n                  <path fill-rule=\"evenodd\" d=\"M0 8c0-2.2 1.8-4 4-4s4 1.8 4 4-1.8 4-4 4-4-1.8-4-4z\" />\n                </svg>\n              </button>\n              <button className=\"SelectMenu-item d-block\" role=\"menuitem\">\n                With a <span className=\"Label\">label</span>\n              </button>\n              <button className=\"SelectMenu-item\" role=\"menuitem\">\n                With a counter <span className=\"Counter ml-1\">16</span>\n              </button>\n              <button className=\"SelectMenu-item d-block\" role=\"menuitem\">\n                <h5>With a heading</h5>\n                <span>and some longer description</span>\n              </button>\n            </div>\n          </div>\n        </div>\n      </details>\n\n      <div className=\"d-sm-none\" style={{height: '600px'}}></div>\n      <div className=\"d-none d-sm-block\" style={{height: '180px'}}></div>\n    </>\n  )\n}\n\nexport const Divider = () => {\n  return (\n    <>\n      <details className=\"details-reset details-overlay\" open>\n        <summary className=\"btn\" aria-haspopup=\"true\">\n          Choose an item\n        </summary>\n        <div className=\"SelectMenu\">\n          <div className=\"SelectMenu-modal\">\n            <header className=\"SelectMenu-header\">\n              <h3 className=\"SelectMenu-title\">Title</h3>\n              <button className=\"SelectMenu-closeButton\" type=\"button\">\n                <svg\n                  className=\"octicon octicon-x\"\n                  xmlns=\"http://www.w3.org/2000/svg\"\n                  viewBox=\"0 0 16 16\"\n                  width=\"16\"\n                  height=\"16\"\n                >\n                  <path\n                    fill-rule=\"evenodd\"\n                    clip-rule=\"evenodd\"\n                    d=\"M3.72 3.72C3.86062 3.57955 4.05125 3.50066 4.25 3.50066C4.44875 3.50066 4.63937 3.57955 4.78 3.72L8 6.94L11.22 3.72C11.2887 3.64631 11.3715 3.58721 11.4635 3.54622C11.5555 3.50523 11.6548 3.48319 11.7555 3.48141C11.8562 3.47963 11.9562 3.49816 12.0496 3.53588C12.143 3.5736 12.2278 3.62974 12.299 3.70096C12.3703 3.77218 12.4264 3.85702 12.4641 3.9504C12.5018 4.04379 12.5204 4.14382 12.5186 4.24452C12.5168 4.34523 12.4948 4.44454 12.4538 4.53654C12.4128 4.62854 12.3537 4.71134 12.28 4.78L9.06 8L12.28 11.22C12.3537 11.2887 12.4128 11.3715 12.4538 11.4635C12.4948 11.5555 12.5168 11.6548 12.5186 11.7555C12.5204 11.8562 12.5018 11.9562 12.4641 12.0496C12.4264 12.143 12.3703 12.2278 12.299 12.299C12.2278 12.3703 12.143 12.4264 12.0496 12.4641C11.9562 12.5018 11.8562 12.5204 11.7555 12.5186C11.6548 12.5168 11.5555 12.4948 11.4635 12.4538C11.3715 12.4128 11.2887 12.3537 11.22 12.28L8 9.06L4.78 12.28C4.63782 12.4125 4.44977 12.4846 4.25547 12.4812C4.06117 12.4777 3.87579 12.399 3.73837 12.2616C3.60096 12.1242 3.52225 11.9388 3.51882 11.7445C3.51539 11.5502 3.58752 11.3622 3.72 11.22L6.94 8L3.72 4.78C3.57955 4.63938 3.50066 4.44875 3.50066 4.25C3.50066 4.05125 3.57955 3.86063 3.72 3.72Z\"\n                  ></path>\n                </svg>\n              </button>\n            </header>\n            <div className=\"SelectMenu-list\">\n              <button className=\"SelectMenu-item\" role=\"menuitem\">\n                Item 1\n              </button>\n              <button className=\"SelectMenu-item\" role=\"menuitem\">\n                Item 2\n              </button>\n              <div className=\"SelectMenu-divider\">More options</div>\n              <button className=\"SelectMenu-item\" role=\"menuitem\">\n                Item 3\n              </button>\n              <button className=\"SelectMenu-item\" role=\"menuitem\">\n                Item 4\n              </button>\n              <hr className=\"SelectMenu-divider\" />\n              <button className=\"SelectMenu-item\" role=\"menuitem\">\n                Item 5\n              </button>\n              <button className=\"SelectMenu-item\" role=\"menuitem\">\n                Item 6\n              </button>\n            </div>\n          </div>\n        </div>\n      </details>\n\n      <div className=\"d-sm-none\" style={{height: '600px'}}></div>\n      <div className=\"d-none d-sm-block\" style={{height: '180px'}}></div>\n    </>\n  )\n}\n\nexport const Footer = () => {\n  return (\n    <>\n      <details className=\"details-reset details-overlay\" open>\n        <summary className=\"btn\" aria-haspopup=\"true\">\n          Choose an item\n        </summary>\n        <div className=\"SelectMenu\">\n          <div className=\"SelectMenu-modal\">\n            <header className=\"SelectMenu-header\">\n              <h3 className=\"SelectMenu-title\">Title</h3>\n              <button className=\"SelectMenu-closeButton\" type=\"button\">\n                <svg\n                  className=\"octicon octicon-x\"\n                  xmlns=\"http://www.w3.org/2000/svg\"\n                  viewBox=\"0 0 16 16\"\n                  width=\"16\"\n                  height=\"16\"\n                >\n                  {' '}\n                  <path\n                    fill-rule=\"evenodd\"\n                    clip-rule=\"evenodd\"\n                    d=\"M3.72 3.72C3.86062 3.57955 4.05125 3.50066 4.25 3.50066C4.44875 3.50066 4.63937 3.57955 4.78 3.72L8 6.94L11.22 3.72C11.2887 3.64631 11.3715 3.58721 11.4635 3.54622C11.5555 3.50523 11.6548 3.48319 11.7555 3.48141C11.8562 3.47963 11.9562 3.49816 12.0496 3.53588C12.143 3.5736 12.2278 3.62974 12.299 3.70096C12.3703 3.77218 12.4264 3.85702 12.4641 3.9504C12.5018 4.04379 12.5204 4.14382 12.5186 4.24452C12.5168 4.34523 12.4948 4.44454 12.4538 4.53654C12.4128 4.62854 12.3537 4.71134 12.28 4.78L9.06 8L12.28 11.22C12.3537 11.2887 12.4128 11.3715 12.4538 11.4635C12.4948 11.5555 12.5168 11.6548 12.5186 11.7555C12.5204 11.8562 12.5018 11.9562 12.4641 12.0496C12.4264 12.143 12.3703 12.2278 12.299 12.299C12.2278 12.3703 12.143 12.4264 12.0496 12.4641C11.9562 12.5018 11.8562 12.5204 11.7555 12.5186C11.6548 12.5168 11.5555 12.4948 11.4635 12.4538C11.3715 12.4128 11.2887 12.3537 11.22 12.28L8 9.06L4.78 12.28C4.63782 12.4125 4.44977 12.4846 4.25547 12.4812C4.06117 12.4777 3.87579 12.399 3.73837 12.2616C3.60096 12.1242 3.52225 11.9388 3.51882 11.7445C3.51539 11.5502 3.58752 11.3622 3.72 11.22L6.94 8L3.72 4.78C3.57955 4.63938 3.50066 4.44875 3.50066 4.25C3.50066 4.05125 3.57955 3.86063 3.72 3.72Z\"\n                  ></path>\n                </svg>\n              </button>\n            </header>\n            <div className=\"SelectMenu-list\">\n              <button className=\"SelectMenu-item\" role=\"menuitem\">\n                Item 1\n              </button>\n              <button className=\"SelectMenu-item\" role=\"menuitem\">\n                Item 2\n              </button>\n              <button className=\"SelectMenu-item\" role=\"menuitem\">\n                Item 3\n              </button>\n              <button className=\"SelectMenu-item\" role=\"menuitem\">\n                Item 4\n              </button>\n              <button className=\"SelectMenu-item\" role=\"menuitem\">\n                Item 5\n              </button>\n            </div>\n            <footer className=\"SelectMenu-footer\">Footer</footer>\n          </div>\n        </div>\n      </details>\n\n      <div className=\"d-sm-none\" style={{height: '600px'}}></div>\n      <div className=\"d-none d-sm-block\" style={{height: '180px'}}></div>\n    </>\n  )\n}\n\nexport const Filter = () => {\n  return (\n    <>\n      <details className=\"details-reset details-overlay\" open>\n        <summary className=\"btn\" aria-haspopup=\"true\">\n          Choose an item\n        </summary>\n        <div className=\"SelectMenu SelectMenu--hasFilter\">\n          <div className=\"SelectMenu-modal\">\n            <header className=\"SelectMenu-header\">\n              <h3 className=\"SelectMenu-title\">Title</h3>\n              <button className=\"SelectMenu-closeButton\" type=\"button\">\n                <svg\n                  className=\"octicon octicon-x\"\n                  xmlns=\"http://www.w3.org/2000/svg\"\n                  viewBox=\"0 0 16 16\"\n                  width=\"16\"\n                  height=\"16\"\n                >\n                  {' '}\n                  <path\n                    fill-rule=\"evenodd\"\n                    clip-rule=\"evenodd\"\n                    d=\"M3.72 3.72C3.86062 3.57955 4.05125 3.50066 4.25 3.50066C4.44875 3.50066 4.63937 3.57955 4.78 3.72L8 6.94L11.22 3.72C11.2887 3.64631 11.3715 3.58721 11.4635 3.54622C11.5555 3.50523 11.6548 3.48319 11.7555 3.48141C11.8562 3.47963 11.9562 3.49816 12.0496 3.53588C12.143 3.5736 12.2278 3.62974 12.299 3.70096C12.3703 3.77218 12.4264 3.85702 12.4641 3.9504C12.5018 4.04379 12.5204 4.14382 12.5186 4.24452C12.5168 4.34523 12.4948 4.44454 12.4538 4.53654C12.4128 4.62854 12.3537 4.71134 12.28 4.78L9.06 8L12.28 11.22C12.3537 11.2887 12.4128 11.3715 12.4538 11.4635C12.4948 11.5555 12.5168 11.6548 12.5186 11.7555C12.5204 11.8562 12.5018 11.9562 12.4641 12.0496C12.4264 12.143 12.3703 12.2278 12.299 12.299C12.2278 12.3703 12.143 12.4264 12.0496 12.4641C11.9562 12.5018 11.8562 12.5204 11.7555 12.5186C11.6548 12.5168 11.5555 12.4948 11.4635 12.4538C11.3715 12.4128 11.2887 12.3537 11.22 12.28L8 9.06L4.78 12.28C4.63782 12.4125 4.44977 12.4846 4.25547 12.4812C4.06117 12.4777 3.87579 12.399 3.73837 12.2616C3.60096 12.1242 3.52225 11.9388 3.51882 11.7445C3.51539 11.5502 3.58752 11.3622 3.72 11.22L6.94 8L3.72 4.78C3.57955 4.63938 3.50066 4.44875 3.50066 4.25C3.50066 4.05125 3.57955 3.86063 3.72 3.72Z\"\n                  ></path>\n                </svg>\n              </button>\n            </header>\n            <form className=\"SelectMenu-filter\">\n              <input className=\"SelectMenu-input form-control\" type=\"text\" placeholder=\"Filter\" aria-label=\"Filter\" />\n            </form>\n            <div className=\"SelectMenu-list\">\n              <button className=\"SelectMenu-item\" role=\"menuitem\">\n                Item 1\n              </button>\n              <button className=\"SelectMenu-item\" role=\"menuitem\">\n                Item 2\n              </button>\n              <button className=\"SelectMenu-item\" role=\"menuitem\">\n                Item 3\n              </button>\n              <button className=\"SelectMenu-item\" role=\"menuitem\">\n                Item 4\n              </button>\n              <button className=\"SelectMenu-item\" role=\"menuitem\">\n                Item 5\n              </button>\n              <button className=\"SelectMenu-item\" role=\"menuitem\">\n                Item 6\n              </button>\n              <button className=\"SelectMenu-item\" role=\"menuitem\">\n                Item 7\n              </button>\n              <button className=\"SelectMenu-item\" role=\"menuitem\">\n                Item 8\n              </button>\n              <button className=\"SelectMenu-item\" role=\"menuitem\">\n                Item 9\n              </button>\n              <button className=\"SelectMenu-item\" role=\"menuitem\">\n                Item 10\n              </button>\n              <button className=\"SelectMenu-item\" role=\"menuitem\">\n                Item 11\n              </button>\n              <button className=\"SelectMenu-item\" role=\"menuitem\">\n                Item 12\n              </button>\n              <button className=\"SelectMenu-item\" role=\"menuitem\">\n                Item 13\n              </button>\n              <button className=\"SelectMenu-item\" role=\"menuitem\">\n                Item 14\n              </button>\n              <button className=\"SelectMenu-item\" role=\"menuitem\">\n                Item 15\n              </button>\n              <button className=\"SelectMenu-item\" role=\"menuitem\">\n                Item 16\n              </button>\n              <button className=\"SelectMenu-item\" role=\"menuitem\">\n                Item 17\n              </button>\n              <button className=\"SelectMenu-item\" role=\"menuitem\">\n                Item 18\n              </button>\n              <button className=\"SelectMenu-item\" role=\"menuitem\">\n                Item 19\n              </button>\n              <button className=\"SelectMenu-item\" role=\"menuitem\">\n                Item 20\n              </button>\n              <button className=\"SelectMenu-item\" role=\"menuitem\">\n                Item 21\n              </button>\n              <button className=\"SelectMenu-item\" role=\"menuitem\">\n                Item 22\n              </button>\n              <button className=\"SelectMenu-item\" role=\"menuitem\">\n                Item 23\n              </button>\n              <button className=\"SelectMenu-item\" role=\"menuitem\">\n                Item 24\n              </button>\n              <button className=\"SelectMenu-item\" role=\"menuitem\">\n                Item 25\n              </button>\n            </div>\n            <footer className=\"SelectMenu-footer\">Showing 25 of 25</footer>\n          </div>\n        </div>\n      </details>\n\n      <div className=\"d-sm-none\" style={{height: '600px'}}></div>\n      <div className=\"d-none d-sm-block\" style={{height: '180px'}}></div>\n    </>\n  )\n}\n\nexport const Tabs = () => {\n  return (\n    <>\n      <details className=\"details-reset details-overlay\" open>\n        <summary className=\"btn\" aria-haspopup=\"true\">\n          Choose an item\n        </summary>\n        <div className=\"SelectMenu SelectMenu--hasFilter\">\n          <div className=\"SelectMenu-modal\">\n            <header className=\"SelectMenu-header\">\n              <h3 className=\"SelectMenu-title\">Title</h3>\n              <button className=\"SelectMenu-closeButton\" type=\"button\">\n                <svg\n                  className=\"octicon octicon-x\"\n                  xmlns=\"http://www.w3.org/2000/svg\"\n                  viewBox=\"0 0 16 16\"\n                  width=\"16\"\n                  height=\"16\"\n                >\n                  {' '}\n                  <path\n                    fill-rule=\"evenodd\"\n                    clip-rule=\"evenodd\"\n                    d=\"M3.72 3.72C3.86062 3.57955 4.05125 3.50066 4.25 3.50066C4.44875 3.50066 4.63937 3.57955 4.78 3.72L8 6.94L11.22 3.72C11.2887 3.64631 11.3715 3.58721 11.4635 3.54622C11.5555 3.50523 11.6548 3.48319 11.7555 3.48141C11.8562 3.47963 11.9562 3.49816 12.0496 3.53588C12.143 3.5736 12.2278 3.62974 12.299 3.70096C12.3703 3.77218 12.4264 3.85702 12.4641 3.9504C12.5018 4.04379 12.5204 4.14382 12.5186 4.24452C12.5168 4.34523 12.4948 4.44454 12.4538 4.53654C12.4128 4.62854 12.3537 4.71134 12.28 4.78L9.06 8L12.28 11.22C12.3537 11.2887 12.4128 11.3715 12.4538 11.4635C12.4948 11.5555 12.5168 11.6548 12.5186 11.7555C12.5204 11.8562 12.5018 11.9562 12.4641 12.0496C12.4264 12.143 12.3703 12.2278 12.299 12.299C12.2278 12.3703 12.143 12.4264 12.0496 12.4641C11.9562 12.5018 11.8562 12.5204 11.7555 12.5186C11.6548 12.5168 11.5555 12.4948 11.4635 12.4538C11.3715 12.4128 11.2887 12.3537 11.22 12.28L8 9.06L4.78 12.28C4.63782 12.4125 4.44977 12.4846 4.25547 12.4812C4.06117 12.4777 3.87579 12.399 3.73837 12.2616C3.60096 12.1242 3.52225 11.9388 3.51882 11.7445C3.51539 11.5502 3.58752 11.3622 3.72 11.22L6.94 8L3.72 4.78C3.57955 4.63938 3.50066 4.44875 3.50066 4.25C3.50066 4.05125 3.57955 3.86063 3.72 3.72Z\"\n                  ></path>\n                </svg>\n              </button>\n            </header>\n            <form className=\"SelectMenu-filter\">\n              <input className=\"SelectMenu-input form-control\" type=\"text\" placeholder=\"Filter\" aria-label=\"Filter\" />\n            </form>\n            <nav className=\"SelectMenu-tabs\">\n              <button className=\"SelectMenu-tab\" aria-selected=\"true\">\n                Branches\n              </button>\n              <button className=\"SelectMenu-tab\">Tags</button>\n            </nav>\n            <div className=\"SelectMenu-list\">\n              <button className=\"SelectMenu-item\" role=\"menuitem\">\n                Branch 1\n              </button>\n              <button className=\"SelectMenu-item\" role=\"menuitem\">\n                Branch 2\n              </button>\n              <button className=\"SelectMenu-item\" role=\"menuitem\">\n                Branch 3\n              </button>\n              <button className=\"SelectMenu-item\" role=\"menuitem\">\n                Branch 4\n              </button>\n              <button className=\"SelectMenu-item\" role=\"menuitem\">\n                Branch 5\n              </button>\n            </div>\n            <div className=\"SelectMenu-list\" hidden>\n              <button className=\"SelectMenu-item\" role=\"menuitem\">\n                Tag 1\n              </button>\n              <button className=\"SelectMenu-item\" role=\"menuitem\">\n                Tag 2\n              </button>\n              <button className=\"SelectMenu-item\" role=\"menuitem\">\n                Tag 3\n              </button>\n            </div>\n            <footer className=\"SelectMenu-footer\">Showing 5 of 5</footer>\n          </div>\n        </div>\n      </details>\n      <div className=\"d-sm-none\" style={{height: '600px'}}></div>\n      <div className=\"d-none d-sm-block\" style={{height: '180px'}}></div>\n    </>\n  )\n}\n\nexport const Message = () => {\n  return (\n    <>\n      <details className=\"details-reset details-overlay\" open>\n        <summary className=\"btn\" aria-haspopup=\"true\">\n          Choose an item\n        </summary>\n        <div className=\"SelectMenu\">\n          <div className=\"SelectMenu-modal\">\n            <header className=\"SelectMenu-header\">\n              <h3 className=\"SelectMenu-title\">Title</h3>\n              <button className=\"SelectMenu-closeButton\" type=\"button\">\n                <svg\n                  className=\"octicon octicon-x\"\n                  xmlns=\"http://www.w3.org/2000/svg\"\n                  viewBox=\"0 0 16 16\"\n                  width=\"16\"\n                  height=\"16\"\n                >\n                  {' '}\n                  <path\n                    fill-rule=\"evenodd\"\n                    clip-rule=\"evenodd\"\n                    d=\"M3.72 3.72C3.86062 3.57955 4.05125 3.50066 4.25 3.50066C4.44875 3.50066 4.63937 3.57955 4.78 3.72L8 6.94L11.22 3.72C11.2887 3.64631 11.3715 3.58721 11.4635 3.54622C11.5555 3.50523 11.6548 3.48319 11.7555 3.48141C11.8562 3.47963 11.9562 3.49816 12.0496 3.53588C12.143 3.5736 12.2278 3.62974 12.299 3.70096C12.3703 3.77218 12.4264 3.85702 12.4641 3.9504C12.5018 4.04379 12.5204 4.14382 12.5186 4.24452C12.5168 4.34523 12.4948 4.44454 12.4538 4.53654C12.4128 4.62854 12.3537 4.71134 12.28 4.78L9.06 8L12.28 11.22C12.3537 11.2887 12.4128 11.3715 12.4538 11.4635C12.4948 11.5555 12.5168 11.6548 12.5186 11.7555C12.5204 11.8562 12.5018 11.9562 12.4641 12.0496C12.4264 12.143 12.3703 12.2278 12.299 12.299C12.2278 12.3703 12.143 12.4264 12.0496 12.4641C11.9562 12.5018 11.8562 12.5204 11.7555 12.5186C11.6548 12.5168 11.5555 12.4948 11.4635 12.4538C11.3715 12.4128 11.2887 12.3537 11.22 12.28L8 9.06L4.78 12.28C4.63782 12.4125 4.44977 12.4846 4.25547 12.4812C4.06117 12.4777 3.87579 12.399 3.73837 12.2616C3.60096 12.1242 3.52225 11.9388 3.51882 11.7445C3.51539 11.5502 3.58752 11.3622 3.72 11.22L6.94 8L3.72 4.78C3.57955 4.63938 3.50066 4.44875 3.50066 4.25C3.50066 4.05125 3.57955 3.86063 3.72 3.72Z\"\n                  ></path>\n                </svg>\n              </button>\n            </header>\n            <div className=\"SelectMenu-list\">\n              <div className=\"SelectMenu-message color-bg-danger color-fg-danger\">Message goes here</div>\n              <button className=\"SelectMenu-item\" role=\"menuitem\">\n                Item 1\n              </button>\n              <button className=\"SelectMenu-item\" role=\"menuitem\">\n                Item 2\n              </button>\n              <button className=\"SelectMenu-item\" role=\"menuitem\">\n                Item 3\n              </button>\n            </div>\n          </div>\n        </div>\n      </details>\n      <div className=\"d-sm-none\" style={{height: '600px'}}></div>\n      <div className=\"d-none d-sm-block\" style={{height: '180px'}}></div>\n    </>\n  )\n}\n\nexport const Loading = () => {\n  return (\n    <>\n      <details className=\"details-reset details-overlay\" open>\n        <summary className=\"btn\" aria-haspopup=\"true\">\n          Choose an item\n        </summary>\n        <div className=\"SelectMenu\">\n          <div className=\"SelectMenu-modal\">\n            <header className=\"SelectMenu-header\">\n              <h3 className=\"SelectMenu-title\">Title</h3>\n              <button className=\"SelectMenu-closeButton\" type=\"button\">\n                <svg\n                  className=\"octicon octicon-x\"\n                  xmlns=\"http://www.w3.org/2000/svg\"\n                  viewBox=\"0 0 16 16\"\n                  width=\"16\"\n                  height=\"16\"\n                >\n                  {' '}\n                  <path\n                    fill-rule=\"evenodd\"\n                    clip-rule=\"evenodd\"\n                    d=\"M3.72 3.72C3.86062 3.57955 4.05125 3.50066 4.25 3.50066C4.44875 3.50066 4.63937 3.57955 4.78 3.72L8 6.94L11.22 3.72C11.2887 3.64631 11.3715 3.58721 11.4635 3.54622C11.5555 3.50523 11.6548 3.48319 11.7555 3.48141C11.8562 3.47963 11.9562 3.49816 12.0496 3.53588C12.143 3.5736 12.2278 3.62974 12.299 3.70096C12.3703 3.77218 12.4264 3.85702 12.4641 3.9504C12.5018 4.04379 12.5204 4.14382 12.5186 4.24452C12.5168 4.34523 12.4948 4.44454 12.4538 4.53654C12.4128 4.62854 12.3537 4.71134 12.28 4.78L9.06 8L12.28 11.22C12.3537 11.2887 12.4128 11.3715 12.4538 11.4635C12.4948 11.5555 12.5168 11.6548 12.5186 11.7555C12.5204 11.8562 12.5018 11.9562 12.4641 12.0496C12.4264 12.143 12.3703 12.2278 12.299 12.299C12.2278 12.3703 12.143 12.4264 12.0496 12.4641C11.9562 12.5018 11.8562 12.5204 11.7555 12.5186C11.6548 12.5168 11.5555 12.4948 11.4635 12.4538C11.3715 12.4128 11.2887 12.3537 11.22 12.28L8 9.06L4.78 12.28C4.63782 12.4125 4.44977 12.4846 4.25547 12.4812C4.06117 12.4777 3.87579 12.399 3.73837 12.2616C3.60096 12.1242 3.52225 11.9388 3.51882 11.7445C3.51539 11.5502 3.58752 11.3622 3.72 11.22L6.94 8L3.72 4.78C3.57955 4.63938 3.50066 4.44875 3.50066 4.25C3.50066 4.05125 3.57955 3.86063 3.72 3.72Z\"\n                  ></path>\n                </svg>\n              </button>\n            </header>\n            <div className=\"SelectMenu-list\">\n              <div className=\"SelectMenu-loading\">\n                <svg\n                  width=\"32 \"\n                  height=\"32\"\n                  viewBox=\"0 0 16 16\"\n                  className=\"octicon octicon-octoface anim-pulse\"\n                  aria-hidden=\"true\"\n                >\n                  <path\n                    fill-rule=\"evenodd\"\n                    d=\"M14.7 5.34c.13-.32.55-1.59-.13-3.31 0 0-1.05-.33-3.44 1.3-1-.28-2.07-.32-3.13-.32s-2.13.04-3.13.32c-2.39-1.64-3.44-1.3-3.44-1.3-.68 1.72-.26 2.99-.13 3.31C.49 6.21 0 7.33 0 8.69 0 13.84 3.33 15 7.98 15S16 13.84 16 8.69c0-1.36-.49-2.48-1.3-3.35zM8 14.02c-3.3 0-5.98-.15-5.98-3.35 0-.76.38-1.48 1.02-2.07 1.07-.98 2.9-.46 4.96-.46 2.07 0 3.88-.52 4.96.46.65.59 1.02 1.3 1.02 2.07 0 3.19-2.68 3.35-5.98 3.35zM5.49 9.01c-.66 0-1.2.8-1.2 1.78s.54 1.79 1.2 1.79c.66 0 1.2-.8 1.2-1.79s-.54-1.78-1.2-1.78zm5.02 0c-.66 0-1.2.79-1.2 1.78s.54 1.79 1.2 1.79c.66 0 1.2-.8 1.2-1.79s-.53-1.78-1.2-1.78z\"\n                  />\n                </svg>\n              </div>\n            </div>\n            <footer className=\"SelectMenu-footer\">Loading...</footer>\n          </div>\n        </div>\n      </details>\n      <div className=\"d-sm-none\" style={{height: '600px'}}></div>\n      <div className=\"d-none d-sm-block\" style={{height: '180px'}}></div>\n    </>\n  )\n}\n\nexport const Disabled = () => {\n  return (\n    <>\n      <details className=\"details-reset details-overlay\" open>\n        <summary className=\"btn\" aria-haspopup=\"true\">\n          Choose an item\n        </summary>\n        <div className=\"SelectMenu\">\n          <div className=\"SelectMenu-modal\">\n            <div className=\"SelectMenu-list\">\n              <button className=\"SelectMenu-item\" role=\"menuitem\">\n                Item 1\n              </button>\n              <button className=\"SelectMenu-item\" role=\"menuitem\" disabled>\n                Item 2 (disabled)\n              </button>\n              <a className=\"SelectMenu-item\" role=\"menuitem\" href=\"#\">\n                Item 3\n              </a>\n              <a className=\"SelectMenu-item\" role=\"menuitem\" aria-disabled=\"true\">\n                Item 4 (disabled)\n              </a>\n            </div>\n          </div>\n        </div>\n      </details>\n      <div className=\"d-sm-none\" style={{height: '600px'}}></div>\n      <div className=\"d-none d-sm-block\" style={{height: '180px'}}></div>\n    </>\n  )\n}\n\nexport const BlankSlate = () => {\n  return (\n    <>\n      <details className=\"details-reset details-overlay\" open>\n        <summary className=\"btn\" aria-haspopup=\"true\">\n          Choose an item\n        </summary>\n        <div className=\"SelectMenu\">\n          <div className=\"SelectMenu-modal\">\n            <header className=\"SelectMenu-header\">\n              <h3 className=\"SelectMenu-title\">Title</h3>\n              <button className=\"SelectMenu-closeButton\" type=\"button\">\n                <svg\n                  className=\"octicon octicon-x\"\n                  xmlns=\"http://www.w3.org/2000/svg\"\n                  viewBox=\"0 0 16 16\"\n                  width=\"16\"\n                  height=\"16\"\n                >\n                  {' '}\n                  <path\n                    fill-rule=\"evenodd\"\n                    clip-rule=\"evenodd\"\n                    d=\"M3.72 3.72C3.86062 3.57955 4.05125 3.50066 4.25 3.50066C4.44875 3.50066 4.63937 3.57955 4.78 3.72L8 6.94L11.22 3.72C11.2887 3.64631 11.3715 3.58721 11.4635 3.54622C11.5555 3.50523 11.6548 3.48319 11.7555 3.48141C11.8562 3.47963 11.9562 3.49816 12.0496 3.53588C12.143 3.5736 12.2278 3.62974 12.299 3.70096C12.3703 3.77218 12.4264 3.85702 12.4641 3.9504C12.5018 4.04379 12.5204 4.14382 12.5186 4.24452C12.5168 4.34523 12.4948 4.44454 12.4538 4.53654C12.4128 4.62854 12.3537 4.71134 12.28 4.78L9.06 8L12.28 11.22C12.3537 11.2887 12.4128 11.3715 12.4538 11.4635C12.4948 11.5555 12.5168 11.6548 12.5186 11.7555C12.5204 11.8562 12.5018 11.9562 12.4641 12.0496C12.4264 12.143 12.3703 12.2278 12.299 12.299C12.2278 12.3703 12.143 12.4264 12.0496 12.4641C11.9562 12.5018 11.8562 12.5204 11.7555 12.5186C11.6548 12.5168 11.5555 12.4948 11.4635 12.4538C11.3715 12.4128 11.2887 12.3537 11.22 12.28L8 9.06L4.78 12.28C4.63782 12.4125 4.44977 12.4846 4.25547 12.4812C4.06117 12.4777 3.87579 12.399 3.73837 12.2616C3.60096 12.1242 3.52225 11.9388 3.51882 11.7445C3.51539 11.5502 3.58752 11.3622 3.72 11.22L6.94 8L3.72 4.78C3.57955 4.63938 3.50066 4.44875 3.50066 4.25C3.50066 4.05125 3.57955 3.86063 3.72 3.72Z\"\n                  ></path>\n                </svg>\n              </button>\n            </header>\n            <div className=\"SelectMenu-list\">\n              <div className=\"SelectMenu-blankslate\">\n                <svg\n                  width=\"24 \"\n                  height=\"32\"\n                  viewBox=\"0 0 12 16\"\n                  className=\"octicon octicon-repo color-gray-3\"\n                  aria-hidden=\"true\"\n                >\n                  <path\n                    fill-rule=\"evenodd\"\n                    d=\"M4 9H3V8h1v1zm0-3H3v1h1V6zm0-2H3v1h1V4zm0-2H3v1h1V2zm8-1v12c0 .55-.45 1-1 1H6v2l-1.5-1.5L3 16v-2H1c-.55 0-1-.45-1-1V1c0-.55.45-1 1-1h10c.55 0 1 .45 1 1zm-1 10H1v2h2v-1h3v1h5v-2zm0-10H2v9h9V1z\"\n                  />\n                </svg>\n                <h4 className=\"my-2\">No repositories</h4>\n                <p className=\"mb-3 color-fg-muted\">We didn’t find any matching repositories that you can commit to.</p>\n                <button type=\"button\" className=\"btn btn-sm btn-primary\">\n                  Create a repository\n                </button>\n              </div>\n            </div>\n          </div>\n        </div>\n      </details>\n      <div className=\"d-sm-none\" style={{height: '600px'}}></div>\n      <div className=\"d-none d-sm-block\" style={{height: '180px'}}></div>\n    </>\n  )\n}\n"
  },
  {
    "path": "docs/stories/deprecated-components/SideNav/SideNav.mdx",
    "content": "import {Canvas, Meta, Story} from '@storybook/blocks'\n\nimport * as SideNavStories from './SideNav.stories'\n\n<Meta of={SideNavStories} />\n\n# SideNav\n\nThe Side Nav is a vertical list of navigational links, typically used on the left side of a page. For maximum flexibility, **Side Nav elements have no default width or positioning**. We suggest using [column grid](../utilities/grid) classes or an inline `width` style for sizing, and [flexbox utilities](../utilities/flexbox) for positioning alongside content.\n\n- You can use a **border** if the parent element doesn't have it already.\n- Add `aria-current=\"page\"` to show a link as selected. Selected button elements in tab-like UIs should instead have `aria-selected=\"true\"`.\n\n<Canvas of={SideNavStories.Default} />\n\nDifferent kind of content can be added inside a Side Nav item. Use utility classes to further style them if needed.\n\n<Canvas of={SideNavStories.Options} />\n\nThe `.SideNav-subItem` is an alternative, more lightweight version without borders and more condensed. It can be used stand-alone.\n\n<Canvas of={SideNavStories.SubItem} />\n\nOr also appear nested, as a sub navigation. Use margin/padding utility classes to add indentation.\n\n<Canvas of={SideNavStories.Nested} />\n"
  },
  {
    "path": "docs/stories/deprecated-components/SideNav/SideNav.stories.tsx",
    "content": "import React from 'react'\nimport {BADGE} from '@geometricpanda/storybook-addon-badges'\n\nexport default {\n  title: 'Deprecated/SideNav',\n  parameters: {\n    storyType: 'banner',\n    controls: {hideNoControlsWarning: true},\n    badges: [BADGE.DEPRECATED],\n  },\n}\n\nexport const Default = () => {\n  return (\n    <>\n      <nav className=\"SideNav border\" style={{maxWidth: '360px'}}>\n        <a className=\"SideNav-item\" href=\"#url\">\n          Account\n        </a>\n        <a className=\"SideNav-item\" href=\"#url\" aria-current=\"page\">\n          Profile\n        </a>\n        <a className=\"SideNav-item\" href=\"#url\">\n          Emails\n        </a>\n        <a className=\"SideNav-item\" href=\"#url\">\n          Notifications\n        </a>\n      </nav>\n    </>\n  )\n}\n\nexport const Options = () => {\n  return (\n    <>\n      <nav className=\"SideNav border\" style={{maxWidth: '360px'}}>\n        <a className=\"SideNav-item\" href=\"#url\">\n          Text only\n        </a>\n        <a className=\"SideNav-item\" href=\"#url\">\n          <img\n            className=\"avatar avatar-small mr-2\"\n            src=\"https://avatars.githubusercontent.com/hubot?s=40\"\n            alt=\"hubot\"\n            height=\"20\"\n            width=\"20\"\n          />\n          With an avatar\n        </a>\n        <a className=\"SideNav-item\" href=\"#url\">\n          <svg\n            className=\"SideNav-icon octicon octicon-octoface\"\n            version=\"1.1\"\n            width=\"16\"\n            height=\"16\"\n            viewBox=\"0 0 16 16\"\n            aria-hidden=\"true\"\n          >\n            {' '}\n            <path\n              fill-rule=\"evenodd\"\n              d=\"M14.7 5.34c.13-.32.55-1.59-.13-3.31 0 0-1.05-.33-3.44 1.3-1-.28-2.07-.32-3.13-.32s-2.13.04-3.13.32c-2.39-1.64-3.44-1.3-3.44-1.3-.68 1.72-.26 2.99-.13 3.31C.49 6.21 0 7.33 0 8.69 0 13.84 3.33 15 7.98 15S16 13.84 16 8.69c0-1.36-.49-2.48-1.3-3.35zM8 14.02c-3.3 0-5.98-.15-5.98-3.35 0-.76.38-1.48 1.02-2.07 1.07-.98 2.9-.46 4.96-.46 2.07 0 3.88-.52 4.96.46.65.59 1.02 1.3 1.02 2.07 0 3.19-2.68 3.35-5.98 3.35zM5.49 9.01c-.66 0-1.2.8-1.2 1.78s.54 1.79 1.2 1.79c.66 0 1.2-.8 1.2-1.79s-.54-1.78-1.2-1.78zm5.02 0c-.66 0-1.2.79-1.2 1.78s.54 1.79 1.2 1.79c.66 0 1.2-.8 1.2-1.79s-.53-1.78-1.2-1.78z\"\n            />{' '}\n          </svg>\n          With an icon\n        </a>\n        <a className=\"SideNav-item d-flex flex-items-center flex-justify-between\" href=\"#url\">\n          With a status icon\n          <svg\n            version=\"1.1\"\n            width=\"8\"\n            height=\"16\"\n            viewBox=\"0 0 8 16\"\n            className=\"octicon octicon-primitive-dot color-green-5 ml-2 float-right\"\n            aria-hidden=\"true\"\n          >\n            <path fill-rule=\"evenodd\" d=\"M0 8c0-2.2 1.8-4 4-4s4 1.8 4 4-1.8 4-4 4-4-1.8-4-4z\" />\n          </svg>\n        </a>\n        <a className=\"SideNav-item d-flex flex-items-center flex-justify-between\" href=\"#url\">\n          With a label <span className=\"Label\">label</span>\n        </a>\n        <a className=\"SideNav-item d-flex flex-items-center flex-justify-between\" href=\"#url\">\n          With a counter <span className=\"Counter ml-1\">16</span>\n        </a>\n        <a className=\"SideNav-item\" href=\"#url\">\n          <h5>With a heading</h5>\n          <span>and some longer description</span>\n        </a>\n      </nav>\n    </>\n  )\n}\n\nexport const SubItem = () => {\n  return (\n    <>\n      <aside className=\"color-bg-subtle border p-3\" style={{maxWidth: '360px'}}>\n        <h5 className=\"color-fg-muted mb-2 pb-1 border-bottom\">Menu</h5>\n        <nav className=\"SideNav\">\n          <a className=\"SideNav-subItem\" href=\"#url\">\n            Account\n          </a>\n          <a className=\"SideNav-subItem\" href=\"#url\" aria-current=\"page\">\n            Profile\n          </a>\n          <a className=\"SideNav-subItem\" href=\"#url\">\n            Emails\n          </a>\n          <a className=\"SideNav-subItem\" href=\"#url\">\n            Notifications\n          </a>\n        </nav>\n      </aside>\n    </>\n  )\n}\n\nexport const Nested = () => {\n  return (\n    <>\n      <nav className=\"SideNav border\" style={{maxWidth: '360px'}}>\n        <a className=\"SideNav-item\" href=\"#url\">\n          <svg\n            className=\"octicon octicon-person SideNav-icon\"\n            width=\"12\"\n            height=\"16\"\n            viewBox=\"0 0 12 16\"\n            aria-hidden=\"true\"\n          >\n            {' '}\n            <path\n              fill-rule=\"evenodd\"\n              d=\"M12 14.002a.998.998 0 0 1-.998.998H1.001A1 1 0 0 1 0 13.999V13c0-2.633 4-4 4-4s.229-.409 0-1c-.841-.62-.944-1.59-1-4 .173-2.413 1.867-3 3-3s2.827.586 3 3c-.056 2.41-.159 3.38-1 4-.229.59 0 1 0 1s4 1.367 4 4v1.002z\"\n            />{' '}\n          </svg>\n          <span>Account</span>\n        </a>\n        <a className=\"SideNav-item\" href=\"#url\" aria-current=\"page\">\n          <svg\n            className=\"octicon octicon-octoface SideNav-icon\"\n            width=\"16\"\n            height=\"16\"\n            viewBox=\"0 0 16 16\"\n            aria-hidden=\"true\"\n          >\n            {' '}\n            <path\n              fill-rule=\"evenodd\"\n              d=\"M14.7 5.34c.13-.32.55-1.59-.13-3.31 0 0-1.05-.33-3.44 1.3-1-.28-2.07-.32-3.13-.32s-2.13.04-3.13.32c-2.39-1.64-3.44-1.3-3.44-1.3-.68 1.72-.26 2.99-.13 3.31C.49 6.21 0 7.33 0 8.69 0 13.84 3.33 15 7.98 15S16 13.84 16 8.69c0-1.36-.49-2.48-1.3-3.35zM8 14.02c-3.3 0-5.98-.15-5.98-3.35 0-.76.38-1.48 1.02-2.07 1.07-.98 2.9-.46 4.96-.46 2.07 0 3.88-.52 4.96.46.65.59 1.02 1.3 1.02 2.07 0 3.19-2.68 3.35-5.98 3.35zM5.49 9.01c-.66 0-1.2.8-1.2 1.78s.54 1.79 1.2 1.79c.66 0 1.2-.8 1.2-1.79s-.54-1.78-1.2-1.78zm5.02 0c-.66 0-1.2.79-1.2 1.78s.54 1.79 1.2 1.79c.66 0 1.2-.8 1.2-1.79s-.53-1.78-1.2-1.78z\"\n            />{' '}\n          </svg>\n          <span>Profile</span>\n        </a>\n        <nav className=\"SideNav color-bg-default border-top py-3\" style=\"padding-left: 44px\">\n          <a className=\"SideNav-subItem\" href=\"#url\" aria-current=\"page\">\n            Sub item 1\n          </a>\n          <a className=\"SideNav-subItem\" href=\"#url\">\n            Sub item 2\n          </a>\n          <a className=\"SideNav-subItem\" href=\"#url\">\n            Sub item 3\n          </a>\n        </nav>\n        <a className=\"SideNav-item\" href=\"#url\">\n          <svg\n            className=\"octicon octicon-mail SideNav-icon\"\n            width=\"14\"\n            height=\"16\"\n            viewBox=\"0 0 14 16\"\n            aria-hidden=\"true\"\n          >\n            {' '}\n            <path\n              fill-rule=\"evenodd\"\n              d=\"M0 4v8c0 .55.45 1 1 1h12c.55 0 1-.45 1-1V4c0-.55-.45-1-1-1H1c-.55 0-1 .45-1 1zm13 0L7 9 1 4h12zM1 5.5l4 3-4 3v-6zM2 12l3.5-3L7 10.5 8.5 9l3.5 3H2zm11-.5l-4-3 4-3v6z\"\n            />{' '}\n          </svg>\n          <span>Emails</span>\n        </a>\n      </nav>\n    </>\n  )\n}\n"
  },
  {
    "path": "docs/stories/deprecated-components/SubNav/SubNav.mdx",
    "content": "import {Canvas, Meta, Story} from '@storybook/blocks'\n\nimport * as SubNavStories from './SubNav.stories'\n\n<Meta of={SubNavStories} />\n\n# SubNav\n\n`.subnav` is navigation that is typically used when on a dashboard type interface with another set of navigation above it. This helps distinguish navigation hierarchy.\n\n<Canvas of={SubNavStories.Default} />\n\nYou can have `subnav-search` in the subnav bar.\n\n<Canvas of={SubNavStories.Search} />\n\nYou can also use a `subnav-search-context` to display search help in a select menu.\n\n<Canvas of={SubNavStories.SearchContext} />\n"
  },
  {
    "path": "docs/stories/deprecated-components/SubNav/SubNav.stories.tsx",
    "content": "import React from 'react'\nimport {BADGE} from '@geometricpanda/storybook-addon-badges'\n\nexport default {\n  title: 'Deprecated/SubNav',\n  parameters: {\n    storyType: 'banner',\n    controls: {hideNoControlsWarning: true},\n    badges: [BADGE.DEPRECATED],\n  },\n}\n\nexport const Default = () => {\n  return (\n    <>\n      <nav className=\"subnav\" aria-label=\"Repository\">\n        <a className=\"subnav-item\" href=\"#url\" aria-current=\"page\">\n          Item 1\n        </a>\n        <a className=\"subnav-item\" href=\"#url\">\n          Item 2\n        </a>\n        <a className=\"subnav-item\" href=\"#url\">\n          Item 3\n        </a>\n      </nav>\n    </>\n  )\n}\n\nexport const Search = () => {\n  return (\n    <>\n      <div className=\"subnav\">\n        <nav className=\"subnav-links\" aria-label=\"Repository\">\n          <a className=\"subnav-item\" href=\"#url\" aria-current=\"page\">\n            Item 1\n          </a>\n          <a className=\"subnav-item\" href=\"#url\">\n            Item 2\n          </a>\n          <a className=\"subnav-item\" href=\"#url\">\n            Item 3\n          </a>\n        </nav>\n        <div className=\"subnav-search float-left\">\n          <input\n            type=\"search\"\n            name=\"name\"\n            className=\"form-control subnav-search-input\"\n            value=\"\"\n            aria-label=\"Search site\"\n          />\n          <svg\n            className=\"subnav-search-icon octicon octicon-search\"\n            width=\"16\"\n            height=\"16\"\n            viewBox=\"0 0 16 16\"\n            aria-hidden=\"true\"\n          >\n            {' '}\n            <path\n              fill-rule=\"evenodd\"\n              d=\"M15.7 13.3l-3.81-3.83A5.93 5.93 0 0 0 13 6c0-3.31-2.69-6-6-6S1 2.69 1 6s2.69 6 6 6c1.3 0 2.48-.41 3.47-1.11l3.83 3.81c.19.2.45.3.7.3.25 0 .52-.09.7-.3a.996.996 0 0 0 0-1.41v.01zM7 10.7c-2.59 0-4.7-2.11-4.7-4.7 0-2.59 2.11-4.7 4.7-4.7 2.59 0 4.7 2.11 4.7 4.7 0 2.59-2.11 4.7-4.7 4.7z\"\n            />{' '}\n          </svg>\n        </div>\n      </div>\n    </>\n  )\n}\n\nexport const SearchContext = () => {\n  return (\n    <>\n      <div className=\"subnav\">\n        <nav className=\"subnav-links\">\n          <a className=\"subnav-item\" href=\"#url\" aria-current=\"page\">\n            Item 1\n          </a>\n          <a className=\"subnav-item\" href=\"#url\">\n            Item 2\n          </a>\n          <a className=\"subnav-item\" href=\"#url\">\n            Item 3\n          </a>\n        </nav>\n      </div>\n      <div className=\"subnav\">\n        <div className=\"float-left subnav-search-context\">\n          <button className=\"btn\" type=\"button\" name=\"button\" aria-expanded=\"false\" aria-haspopup=\"true\">\n            Filters\n            <span className=\"dropdown-caret\"></span>\n          </button>\n        </div>\n        <div className=\"subnav-search float-left\">\n          <input\n            type=\"search\"\n            name=\"name\"\n            className=\"form-control subnav-search-input\"\n            value=\"\"\n            aria-label=\"Search site\"\n          />\n          <svg\n            className=\"subnav-search-icon octicon octicon-search\"\n            width=\"16\"\n            height=\"16\"\n            viewBox=\"0 0 16 16\"\n            aria-hidden=\"true\"\n          >\n            {' '}\n            <path\n              fill-rule=\"evenodd\"\n              d=\"M15.7 13.3l-3.81-3.83A5.93 5.93 0 0 0 13 6c0-3.31-2.69-6-6-6S1 2.69 1 6s2.69 6 6 6c1.3 0 2.48-.41 3.47-1.11l3.83 3.81c.19.2.45.3.7.3.25 0 .52-.09.7-.3a.996.996 0 0 0 0-1.41v.01zM7 10.7c-2.59 0-4.7-2.11-4.7-4.7 0-2.59 2.11-4.7 4.7-4.7 2.59 0 4.7 2.11 4.7 4.7 0 2.59-2.11 4.7-4.7 4.7z\"\n            />{' '}\n          </svg>\n        </div>\n      </div>\n    </>\n  )\n}\n"
  },
  {
    "path": "docs/stories/deprecated-components/Toast/Toast.mdx",
    "content": "import {Canvas, Meta, Story} from '@storybook/blocks'\n\nimport * as ToastStories from './Toast.stories'\n\n<Meta of={ToastStories} />\n\n# Toast\n\nToasts are used to show live, time-sensitive feedback to users.\n\n## Default\n\nTo create a default toast, use `.Toast`. Always use the `info` icon for default messages.\n\n<Canvas of={ToastStories.Default} />\n\nThe Toast content is formattable. We recommend keeping your message under 140 characters.\n\n## Variations\n\nUse the success, warning, and error modifiers to communicate different states.\n\nAlways use the `check` octicon for success states.\n\n<Canvas of={ToastStories.Success} />\n\nAlways use the `alert` octicon for warning states.\n\n<Canvas of={ToastStories.Alert} />\n\nAlways use the `stop` octicon for error states.\n\n<Canvas of={ToastStories.Error} />\n\n## Toast with dismiss\n\nUse `.Toast-dismissButton` to allow a user to explicitly dismiss a Toast.\n\n<Canvas of={ToastStories.Dismiss} />\n\n## Toast with link\n\nInclude a link to allow users to take actions within a Toast.\n\n<Canvas of={ToastStories.WithLink} />\n\n## Toast animation in\n\nThe `Toast--animateIn` and `Toast--animateOut` modifier classes can be used to animate the toast in and out from the bottom.\n\n<Canvas of={ToastStories.AnimationIn} />\n\n## Toast with loading animation\n\nAdd the `Toast--spinner` modifier class on the `Toast-icon` `svg` to communicate a loading state.\n\n<Canvas of={ToastStories.Loading} />\n\n## Toast position\n\nUse the `position-fixed bottom-0 left-0` utility classes on a wrapper element to position Toasts at the **bottom left** of the viewport.\n"
  },
  {
    "path": "docs/stories/deprecated-components/Toast/Toast.stories.tsx",
    "content": "import React from 'react'\nimport {BADGE} from '@geometricpanda/storybook-addon-badges'\n\nexport default {\n  title: 'Deprecated/Toast',\n  parameters: {\n    storyType: 'banner',\n    controls: {hideNoControlsWarning: true},\n    badges: [BADGE.DEPRECATED],\n  },\n}\n\nexport const Default = () => {\n  return (\n    <>\n      <div className=\"p-1\">\n        <div className=\"Toast\">\n          <span className=\"Toast-icon\">\n            <svg width=\"14\" height=\"16\" viewBox=\"0 0 14 16\" className=\"octicon octicon-info\" aria-hidden=\"true\">\n              <path\n                fill-rule=\"evenodd\"\n                d=\"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z\"\n              />\n            </svg>\n          </span>\n          <span className=\"Toast-content\">Toast message goes here</span>\n        </div>\n      </div>\n    </>\n  )\n}\n\nexport const Success = () => {\n  return (\n    <>\n      <div className=\"p-1\">\n        <div className=\"Toast Toast--success\">\n          <span className=\"Toast-icon\">\n            <svg width=\"12\" height=\"16\" viewBox=\"0 0 12 16\" className=\"octicon octicon-check\" aria-hidden=\"true\">\n              <path fill-rule=\"evenodd\" d=\"M12 5l-8 8-4-4 1.5-1.5L4 10l6.5-6.5L12 5z\" />\n            </svg>\n          </span>\n          <span className=\"Toast-content\">Success message goes here.</span>\n        </div>\n      </div>\n    </>\n  )\n}\n\nexport const Alert = () => {\n  return (\n    <>\n      <div className=\"p-1\">\n        <div className=\"Toast Toast--warning\">\n          <span className=\"Toast-icon\">\n            <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" className=\"octicon octicon-alert\" aria-hidden=\"true\">\n              <path\n                fill-rule=\"evenodd\"\n                d=\"M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z\"\n              />\n            </svg>\n          </span>\n          <span className=\"Toast-content\">Warning message goes here.</span>\n        </div>\n      </div>\n    </>\n  )\n}\n\nexport const Error = () => {\n  return (\n    <>\n      <div className=\"p-1\">\n        <div className=\"Toast Toast--error\">\n          <span className=\"Toast-icon\">\n            <svg width=\"14\" height=\"16\" viewBox=\"0 0 14 16\" className=\"octicon octicon-stop\" aria-hidden=\"true\">\n              <path\n                fill-rule=\"evenodd\"\n                d=\"M10 1H4L0 5v6l4 4h6l4-4V5l-4-4zm3 9.5L9.5 14h-5L1 10.5v-5L4.5 2h5L13 5.5v5zM6 4h2v5H6V4zm0 6h2v2H6v-2z\"\n              />\n            </svg>\n          </span>\n          <span className=\"Toast-content\">Error message goes here</span>\n        </div>\n      </div>\n    </>\n  )\n}\n\nexport const Dismiss = () => {\n  return (\n    <>\n      <div className=\"p-1\">\n        <div className=\"Toast\">\n          <span className=\"Toast-icon\">\n            <svg width=\"14\" height=\"16\" viewBox=\"0 0 14 16\" className=\"octicon octicon-info\" aria-hidden=\"true\">\n              <path\n                fill-rule=\"evenodd\"\n                d=\"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z\"\n              />\n            </svg>\n          </span>\n          <span className=\"Toast-content\">This toast is dismissable.</span>\n          <button className=\"Toast-dismissButton\">\n            <svg width=\"12\" height=\"16\" viewBox=\"0 0 12 16\" className=\"octicon octicon-x\" aria-hidden=\"true\">\n              <path\n                fill-rule=\"evenodd\"\n                d=\"M7.48 8l3.75 3.75-1.48 1.48L6 9.48l-3.75 3.75-1.48-1.48L4.52 8 .77 4.25l1.48-1.48L6 6.52l3.75-3.75 1.48 1.48L7.48 8z\"\n              />\n            </svg>\n          </button>\n        </div>\n      </div>\n    </>\n  )\n}\n\nexport const WithLink = () => {\n  return (\n    <>\n      <div className=\"p-1\">\n        <div className=\"Toast\">\n          <span className=\"Toast-icon\">\n            <svg width=\"14\" height=\"16\" viewBox=\"0 0 14 16\" className=\"octicon octicon-info\" aria-hidden=\"true\">\n              <path\n                fill-rule=\"evenodd\"\n                d=\"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z\"\n              />\n            </svg>\n          </span>\n          <span className=\"Toast-content\">\n            Toast message goes here<a href=\"#\">Action.</a>\n          </span>\n        </div>\n      </div>\n    </>\n  )\n}\n\nexport const AnimationIn = () => {\n  return (\n    <>\n      <div className=\"p-1\">\n        <div className=\"Toast Toast--animateIn\">\n          <span className=\"Toast-icon\">\n            <svg width=\"14\" height=\"16\" viewBox=\"0 0 14 16\" className=\"octicon octicon-info\" aria-hidden=\"true\">\n              <path\n                fill-rule=\"evenodd\"\n                d=\"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z\"\n              />\n            </svg>\n          </span>\n          <span className=\"Toast-content\">Toast message goes here.</span>\n        </div>\n      </div>\n    </>\n  )\n}\n\nexport const Loading = () => {\n  return (\n    <>\n      <div className=\"p-1\">\n        <div className=\"Toast Toast--loading\">\n          <span className=\"Toast-icon\">\n            <svg className=\"Toast--spinner\" viewBox=\"0 0 32 32\" width=\"18\" height=\"18\">\n              <path\n                fill=\"#959da5\"\n                d=\"M16 0 A16 16 0 0 0 16 32 A16 16 0 0 0 16 0 M16 4 A12 12 0 0 1 16 28 A12 12 0 0 1 16 4\"\n              />\n              <path fill=\"#ffffff\" d=\"M16 0 A16 16 0 0 1 32 16 L28 16 A12 12 0 0 0 16 4z\"></path>\n            </svg>\n          </span>\n          <span className=\"Toast-content\">Toast message goes here.</span>\n        </div>\n      </div>\n    </>\n  )\n}\n\nexport const Position = () => {\n  return (\n    <>\n      <div style={{height: '150px'}} className=\"position-relative\">\n        <div className=\"position-fixed bottom-0 left-0 mb-3 ml-3\">\n          <div className=\"Toast\">\n            <span className=\"Toast-icon\">\n              <svg width=\"14\" height=\"16\" viewBox=\"0 0 14 16\" className=\"octicon octicon-info\" aria-hidden=\"true\">\n                <path\n                  fill-rule=\"evenodd\"\n                  d=\"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z\"\n                />\n              </svg>\n            </span>\n            <span className=\"Toast-content\">Toast message goes here.</span>\n          </div>\n        </div>\n      </div>\n    </>\n  )\n}\n"
  },
  {
    "path": "docs/stories/deprecated-components/Tooltip/Tooltip.mdx",
    "content": "import {Canvas, Meta, Story} from '@storybook/blocks'\n\nimport * as TooltipStories from './Tooltip.stories'\n\n<Meta of={TooltipStories} />\n\n# Tooltip\n\nPlease note that the `.tooltipped` component is **deprecated**. We recommend using the [Tooltip component](https://primer.style/view-components/components/alpha/tooltip) instead.\n\nAdd tooltips built entirely in CSS to appropriate elements.\n\n## Implementation and accessibility\n\nTooltips as a UI pattern should be our last resort for conveying information because it is hidden by default and often with zero or little visual indicator of its existence.\n\nBefore adding a tooltip, please consider: Is this information essential and necessary\\* Can the UI be made clearer? Can the information be shown on the page by default? And check out [alternatives to Tooltips](https://primer.style/design/accessibility/tooltip-alternatives) to explore your options.\n\n### Attention\n\n- **Never** use tooltips on static elements. They should only be used on interactive elements, because users cannot tab-focus into static elements, which may make the content inaccessible for keyboard-only users and screen readers.\n- we use `aria-label` for tooltip contents, because it is crucial that they are accessible to screen reader users. However, `aria-label` **replaces** the text content of an element in screen readers, so only use `.tooltipped` on elements with no existing text content such as an icon-only button.\n- Tooltip classes will conflict with Octicon styles, and as such, must be applied to the parent element instead of the icon.\n\n## Tooltip direction\n\nSpecify the direction of a tooltip with north, south, east, and west directions:\n\n<Canvas of={TooltipStories.Default} />\n\n## Tooltip alignment\n\nAlign tooltips to the left or right of an element, combined with a directional class to specify north or south. Use a modifier of `1` or `2` to choose how much the tooltip's arrow is indented.\n\n<Canvas of={TooltipStories.Alignment} />\n\n## Tooltips with multiple lines\n\nUse `.tooltipped-multiline` when you have long content. This style has some limitations: you cannot pre-format the text with newlines, and tooltips are limited to a max-width of `250px`.\n\n<Canvas of={TooltipStories.MultiLine} />\n\n## Tooltips with no delay\n\nBy default the tooltips have a slight delay before appearing. This is to keep multiple tooltips in the UI from being distracting. There is a `.tooltipped-no-delay` modifier class you can use to override this.\n\n<Canvas of={TooltipStories.NoDelay} />\n"
  },
  {
    "path": "docs/stories/deprecated-components/Tooltip/Tooltip.stories.tsx",
    "content": "import React from 'react'\nimport {BADGE} from '@geometricpanda/storybook-addon-badges'\n\nexport default {\n  title: 'Deprecated/Tooltip',\n  parameters: {\n    storyType: 'banner',\n    controls: {hideNoControlsWarning: true},\n    badges: [BADGE.DEPRECATED],\n  },\n}\n\nexport const Default = () => {\n  return (\n    <>\n      <div className=\"d-flex flex-justify-center pt-4\">\n        <button\n          type=\"button\"\n          className=\"tooltipped tooltipped-nw m-2 p-2 border\"\n          aria-label=\"This is the tooltip on the North West side.\"\n        >\n          .tooltipped-nw\n        </button>\n        <button\n          type=\"button\"\n          className=\"tooltipped tooltipped-n m-2 p-2 border\"\n          aria-label=\"This is the tooltip on the North side.\"\n        >\n          .tooltipped-n\n        </button>\n        <button\n          type=\"button\"\n          className=\"tooltipped tooltipped-ne m-2 p-2 border\"\n          aria-label=\"This is the tooltip on the North East side.\"\n        >\n          .tooltipped-ne\n        </button>\n      </div>\n      <div className=\"d-flex flex-justify-center\">\n        <button\n          type=\"button\"\n          className=\"tooltipped tooltipped-w m-2 p-2 border\"\n          aria-label=\"This is the tooltip on the West side.\"\n        >\n          .tooltipped-w\n        </button>\n        <button\n          type=\"button\"\n          className=\"tooltipped tooltipped-e m-2 p-2 border\"\n          aria-label=\"This is the tooltip on the East side.\"\n        >\n          .tooltipped-e\n        </button>\n      </div>\n      <div className=\"d-flex flex-justify-center pb-4\">\n        <button\n          type=\"button\"\n          className=\"tooltipped tooltipped-sw m-2 p-2 border\"\n          aria-label=\"This is the tooltip on the South West side.\"\n        >\n          .tooltipped-sw\n        </button>\n        <button\n          type=\"button\"\n          className=\"tooltipped tooltipped-s m-2 p-2 border\"\n          aria-label=\"This is the tooltip on the South side.\"\n        >\n          .tooltipped-s\n        </button>\n        <button\n          type=\"button\"\n          className=\"tooltipped tooltipped-se m-2 p-2 border\"\n          aria-label=\"This is the tooltip on the South East side.\"\n        >\n          .tooltipped-se\n        </button>\n      </div>\n    </>\n  )\n}\n\nexport const Alignment = () => {\n  return (\n    <>\n      <div className=\"d-flex flex-justify-center pt-4\">\n        <button\n          type=\"button\"\n          className=\"tooltipped tooltipped-nw tooltipped-align-right-1 m-2 p-2 border\"\n          aria-label=\"Tooltipped NW and aligned right.\"\n        >\n          .tooltipped-nw .tooltipped-align-right-1\n        </button>\n        <button\n          type=\"button\"\n          className=\"tooltipped tooltipped-ne tooltipped-align-left-1 m-2 p-2 border\"\n          aria-label=\"Tooltipped NE and aligned left.\"\n        >\n          .tooltipped-ne .tooltipped-align-left-1\n        </button>\n      </div>\n      <div className=\"d-flex flex-justify-center\">\n        <button\n          type=\"button\"\n          className=\"tooltipped tooltipped-nw tooltipped-align-right-2 m-2 p-2 border\"\n          aria-label=\"Tooltipped NW and aligned right.\"\n        >\n          .tooltipped-nw .tooltipped-align-right-2\n        </button>\n        <button\n          type=\"button\"\n          className=\"tooltipped tooltipped-ne tooltipped-align-left-2 m-2 p-2 border\"\n          aria-label=\"Tooltipped NE and aligned left.\"\n        >\n          .tooltipped-ne .tooltipped-align-left-2\n        </button>\n      </div>\n      <div className=\"d-flex flex-justify-center\">\n        <button\n          type=\"button\"\n          className=\"tooltipped tooltipped-sw tooltipped-align-right-1 m-2 p-2 border\"\n          aria-label=\"Tooltipped SE and aligned right.\"\n        >\n          .tooltipped-sw .tooltipped-align-right-1\n        </button>\n        <button\n          type=\"button\"\n          className=\"tooltipped tooltipped-se tooltipped-align-left-1 m-2 p-2 border\"\n          aria-label=\"Tooltipped SW and aligned left.\"\n        >\n          .tooltipped-se .tooltipped-align-left-1\n        </button>\n      </div>\n      <div className=\"d-flex flex-justify-center pb-4\">\n        <button\n          type=\"button\"\n          className=\"tooltipped tooltipped-sw tooltipped-align-right-2 m-2 p-2 border\"\n          aria-label=\"Tooltipped SE and aligned right.\"\n        >\n          .tooltipped-sw .tooltipped-align-right-2\n        </button>\n        <button\n          type=\"button\"\n          className=\"tooltipped tooltipped-se tooltipped-align-left-2 m-2 p-2 border\"\n          aria-label=\"Tooltipped SW and aligned left.\"\n        >\n          .tooltipped-se .tooltipped-align-left-2\n        </button>\n      </div>\n    </>\n  )\n}\n\nexport const MultiLine = () => {\n  return (\n    <>\n      <div className=\"d-flex flex-justify-center pt-6\">\n        <button\n          type=\"button\"\n          className=\"tooltipped tooltipped-n tooltipped-multiline m-2 p-2 border\"\n          aria-label=\"This is the tooltip with multiple lines. This is the tooltip with multiple lines.\"\n        >\n          .tooltipped-multiline\n        </button>\n      </div>\n    </>\n  )\n}\n\nexport const NoDelay = () => {\n  return (\n    <>\n      <div className=\"d-flex flex-justify-center pt-4\">\n        <button\n          type=\"button\"\n          className=\"tooltipped tooltipped-n tooltipped-no-delay m-2 p-2 border\"\n          aria-label=\"This is the tooltip on the no delay side.\"\n        >\n          .tooltipped-no-delay\n        </button>\n      </div>\n    </>\n  )\n}\n"
  },
  {
    "path": "docs/stories/helpers/pageLayoutBehavior.jsx",
    "content": "import React from 'react'\nexport default function PageLayoutBehavior() {\n\n  const pageLayoutSelector = '.PageLayout.PageLayout--responsive-separateRegions';\n  const primaryRegionSelector = 'PageLayout--responsive-primary';\n\n  const detectPageLayoutHash = () => {\n\n    const pageLayout = document.querySelector(pageLayoutSelector);\n    \n    let dest;\n    if (location.hash === '') {\n      dest = pageLayout.getAttribute('data-primary-region');\n    } else if (location.hash === '#pane') {\n      dest = 'pane';\n    } else if (location.hash === '#content') {\n      dest = 'content';\n    } else {\n      return;\n    }\n\n    pageLayout.setAttribute('data-current-region', dest);\n\n    if (dest === 'pane') {\n      pageLayout.classList.replace(primaryRegionSelector + '-content', primaryRegionSelector + '-pane');\n    } else {\n      pageLayout.classList.replace(primaryRegionSelector + '-pane', primaryRegionSelector + '-content');\n    }\n  };\n\n  window.addEventListener(\"hashchange\", () => {\n    detectPageLayoutHash();\n  });\n  \n  document.addEventListener('DOMContentLoaded', (event) => {\n    const pageLayout = document.querySelector(pageLayoutSelector);\n    const primaryRegion = pageLayout.classList.contains(primaryRegionSelector + '-pane') ? 'pane' : 'content';\n\n    if (pageLayout.getAttribute('data-primary-region') === null) {\n      pageLayout.setAttribute('data-primary-region', primaryRegion);\n    }\n\n    detectPageLayoutHash();\n  });\n}\n"
  },
  {
    "path": "docs/stories/principles/Accessibility.mdx",
    "content": "# Accessibility\n\nAccessibility is everyone’s responsibility, and the purpose of this document is to provide general accessibility guidelines to developers and designers.\n\n## Overview\n\nOur products should be accessible to all. At minimum, features should comply to the requirements listed in [508 Reference Guide - 1194.22](https://www.access-board.gov/guidelines-and-standards/communications-and-it/about-the-section-508-standards/guide-to-the-section-508-standards/web-based-intranet-and-internet-information-and-applications-1194-22) from the US Access Board, and conform to [Web Content Accessibility Guidelines 2.0](https://www.w3.org/TR/WCAG20/#conformance) at Level AA.\n\nMaking our products accessible benefits everyone, not just people with disabilities. Below are some examples of use cases in which accessibility is important:\n\n- **Visual**: blindness, low vision, color blindness, using a screen reader or related assistive tech for lifestyle reasons (e.g. long car commute), machine readability and screen scraping technologies\n\n- **Hearing**: deafness, hearing impairment, speech impairment, using closed captioning or other assistive features for lifestyle reasons (e.g. coworking in a loud coffee shop)\n\n- **Cognitive**: including short-term memory issues, dyslexia, learning disabilities, trying to work or consume content while distracted or multitasking, etc.\n\n- **Mobility**: mobility impairments, repetitive stress injuries, power users who love keyboard shortcuts, busy parents holding a sleeping child while trying to operate a computer with one hand, etc.\n\n## General guidelines\n\n### Semantic markup\n\nAlways use semantic HTML elements, like `button`, `ul`, `nav`. Most modern browsers implement the accessibility features outlined in the specs for these elements; without them, elements will need additional [ARIA attributes and roles](https://www.w3.org/WAI/PF/aria) to be recognized by assistive technologies.\n\nElements like `h1`-`h6`, `nav`, `footer`, `header` have [meaningful roles](https://www.w3.org/WAI/PF/aria/roles) assigned, so use them carefully. This can help assistive technologies read the page better and help users find information quicker.\n\nOnly use a `div` or a `span` to markup up content when there isn't another HTML element that would semantically be more appropriate, or when an element is needed exclusively for applying CSS styles or JS behaviors.\n\n```html\n<!-- Do: Button can be focused and tabbed to. -->\n<button type=\"button\" class=\"btn\">Send</button>\n```\n\n```html\n<!-- Don't: Button can't be focused and tabbed to. -->\n<span class=\"btn\">Send</span>\n```\n\n> More on semantic markup:\n>\n> - [Semantic Structure – WebAIM](http://webaim.org/techniques/semanticstructure/)\n\n### Keyboard accessibility\n\nMake sure elements can be reached via tabbing, and actions can be triggered with a keyboard. Using semantic markup is especially important in this case as it ensures that actionable elements are tabbable and triggerable without a mouse. Note that elements positioned off-screen are still tabbable, but those hidden with `display: none` or `visibility: hidden` are effectively removed from content since they are neither read by screen readers nor reachable by keyboard.\n\nTab order is determined by the order of elements in the DOM, and not by their visual positioning on the page after CSS is applied. CSS properties `float` and `order` for flex items are two common sources for disconnection between visual and DOM order.\n\nThe `tabindex` attribute should only be used when absolutely necessary.\n\n- `tabindex=0/-1` makes an element focusable, while `tabindex=0` also includes the element in the normal tab order. In both cases, keyboard triggers of the element still require scripting, so where possible, use [interactive content](http://w3c.github.io/html/dom.html#kinds-of-content-interactive-content) instead.\n\n- `tabindex=1+` takes an element to the very front of the default tab order. When it's applied, the element's visual positioning is no longer indicative of its tab order, and the only way to find out where an element is would be by tabbing through the page. Therefore, unless a page is carefully designed around elements with positive tabindex, it is very error-prone, and thus currently prohibited in github.com.\n\nFinally, bear in mind that some assistive technologies have keyboard combinations of their own that will override the combination on the web page, so don't rely on keyboard shortcuts as the only alternative to mouse actions.\n\n```html\n<!-- Do: Tab order can be guessed. -->\n<button type=\"button\" class=\"btn\">1</button>\n<button type=\"button\" class=\"btn\">2</button>\n<button type=\"button\" class=\"btn\">3</button>\n```\n\n```html\n<!-- Don't: The second button's tab order is unexpected. -->\n<button type=\"button\" class=\"btn\">1</button>\n<button type=\"button\" class=\"btn\" tabindex=\"1\">2</button>\n<button type=\"button\" class=\"btn\">3</button>\n```\n\n> More on keyboard accessibility:\n>\n> - [Focus Order – Understanding WCAG 2.0](https://www.w3.org/TR/UNDERSTANDING-WCAG20/navigation-mechanisms-focus-order.html)\n> - [Time to revisit accesskey? by Léonie Watson](http://tink.uk/time-to-revisit-accesskey/)\n> - [Flexbox & the keyboard navigation disconnect by Léonie Watson](http://tink.uk/flexbox-the-keyboard-navigation-disconnect/)\n\n### Visual accessibility\n\nBe mindful when using small font size, thin font weight, low contrast colors in designs as it can severely affect usability.\n\nInstead of relying solely on color to communicate information, always combine color with another factor, like shape or position change. This is important because some colors can be hard to tell apart due to color blindness or weak eyesight.\n\n> More on visual accessibility:\n>\n> - [Use of Color – Understanding WCAG 2.0](https://www.w3.org/TR/UNDERSTANDING-WCAG20/visual-audio-contrast-without-color.html)\n> - [Contrast – Understanding WCAG 2.0](http://www.w3.org/TR/UNDERSTANDING-WCAG20/visual-audio-contrast-contrast.html)\n\n### Text and labels\n\nMake sure text-based alternative is always available when using icons, images, and graphs, and that the text by itself presents meaningful information.\n\n```html\n<!-- Do: Link text communicates destination. -->\n<p>Find out more about <a href=\"#url\">GitHub Enterprise pricing</a>.<br /></p>\n```\n\n```html\n<!-- Don't: \"Click here\" is not meaningful. -->\n<p>To find out more about GitHub Enterprise pricing, <a href=\"#url\">click here</a>.</p>\n```\n\nUse `aria-label` when there is no text.\n\n```html\n<a href=\"https://help.github.com/\"><%= octicon(\"question\", :\"aria-label\" => \"Help\") %></a>\n```\n\n### Link responsibly\n\nNavigating from a list of all the links on a given web page is very common for assistive technology users. We should make sure that the link text itself is meaningful and unique, and there should be as few duplicated references as possible.\n\n> More on link responsibly:\n>\n> - [Link Purpose – Understanding WCAG 2.0](https://www.w3.org/TR/UNDERSTANDING-WCAG20/navigation-mechanisms-refs.html)\n\n### Dynamic content\n\nWhen using JavaScript to change the content on the page, always make sure that screen reader users are informed about the change. This can be done with `aria-live`, or focus management.\n\n> More on dynamic content:\n>\n> - [ARIA Live Regions – MDN](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/ARIA_Live_Regions)\n\n### Focus management\n\nFocus management is useful for informing users about updated content, and for making sure users land on the next useful section after performing an action. This means using scripts to change user’s currently focused element, and when focus changes, screen readers will read out change.\n\n### Accessible forms\n\nIt is common for assistive technology users to jump straight to a form when using a website, so make sure most relevant information is in the form and is labelled properly. Labels and inputs should be associated with the `label[for]` and `input[id]`, and help texts should either be part of the label or be associated with `aria-describedby`.\n\n```html\n<!-- Do: Click \"Email\" label to focus on the input, and help text is read out by screen readers when focusing on the input. -->\n<label for=\"test_input\">Email</label><br />\n<input id=\"test_input\" aria-describedby=\"test_input_help_good\" class=\"width-full my-1\" type=\"email\" />\n<div id=\"test_input_help_good\" class=\"f6\">Please enter an email ending with @github.com.</div>\n```\n\n```html\n<!-- Don't: Input and label are not associated, and help text is not read out by screen reader when focusing on the input. -->\n<label>Email</label><br />\n<input type=\"email\" class=\"width-full my-1\" />\n<div id=\"test_input_help_bad\" class=\"f6\">Please enter an email ending with @github.com.</div>\n```\n\n## Development tools\n\n### Linting\n\nWe currently run basic linting [against positive `tabindex`](https://github.com/github/github/blob/8546895623677abc70f61951642f32c16de231a1/test/fast/linting/accessible_tabindex_test.rb) and [anchor links with `href=\"#\"`](https://github.com/github/github/blob/8546895623677abc70f61951642f32c16de231a1/test/rubocop/cop/rails/link_href.rb).\n\nWe do client side scanning of inaccessible elements in development environment. The inaccessible elements will be styled with red borders with an onclick alert and console warnings.\n\n### External tools\n\n- Google Chrome provides an [Accessibility Developer Tools extension](https://chrome.google.com/webstore/detail/accessibility-developer-t/fpkknkljclfencbdbgkenhalefipecmb). Once installed, go to Audits tab in developer tools, tick Accessibility. It scans the page for violations and suggests solutions.\n\n- If you're working on a design that uses color to communicate something, grab the [Chromatic Vision Simulator app](https://itunes.apple.com/tw/app/chromatic-vision-simulator/id389310222?mt=8), this will let you use your iPhone camera to see what a colorblind person would see.\n\n- Check out [the Web Accessibility showcase on GitHub](https://github.com/showcases/web-accessibility). GitHubbers are free to add more projects to the showcase.\n\n## Manual testing\n\n### Screen reader\n\nTo use VoiceOver, the built-in screen reader for Mac, just hit <kbd>⌘</kbd> + <kbd>F5</kbd>. This will start voice narration and display most of the spoken information in a text box.\n\nUse <kbd>alt</kbd> + <kbd>control</kbd> + <kbd>left/right</kbd> to navigate a web page. <kbd>alt</kbd> + <kbd>control</kbd> + <kbd>space</kbd> to click on an element. For more help with VoiceOver, check out the built-in tutorial in `System Preferences > Accessibility > VoiceOver > Open VoiceOver Training`.\n\nKeep in mind that behaviors in different screen readers can differ when navigating the same web page; just like designing for different browsers, when it comes to accessibility, it is not just the implementation of the browsers that can be different, but also the ones of assistive softwares.\n\n## Internal resources\n\n1. You can mention these teams when looking for help:\n\n- [@github/accessibility](https://github.com/orgs/github/teams/accessibility): GitHubbers interested in accessibility related topics and work on website accessibility issues.\n- [@github/colorblind](https://github.com/orgs/github/teams/colorblind): GitHubbers who are interested in accessibility for colorblindness.\n\n2. Go to #accessibility Slack channel to ask questions or discuss accessibility issues.\n3. Check [github/accessibility repository](https://github.com/github/accessibility) for information on events or learning resources.\n\n## User support\n\nAccessibility is a priority for us, if you ever encounter accessibility related issues when using github.com, please don’t hesitate to reach out to us via [the contact page](https://github.com/contact) or email us at [support@github.com](mailto:support@github.com), we will try our best to assist.\n\nFor information about the accessibility compliance of GitHub products, please refer to our [VPAT report, outlining §508 accessibility information for GitHub.com, GitHub Enterprise, and GitHub Desktop](https://government.github.com/accessibility/).\n"
  },
  {
    "path": "docs/stories/principles/HTML.mdx",
    "content": "# HTML\n\n## General formatting\n\n- Use soft-tabs with a two space indent. Spaces are the only way to guarantee code renders the same in any person's environment.\n- Paragraphs of text should always be placed in a `<p>` tag. Never use multiple `<br>` tags.\n- Items in list form should always be in `<ul>`, `<ol>`, or `<dl>`. Never use a set of `<div>` or `<p>`.\n- Every form input that has text attached should utilize a `<label>` tag. **Especially radio or checkbox elements.**\n- Even though quotes around attributes is optional, always put quotes around attributes for readability.\n- Avoid writing closing tag comments, like `<!-- /.element -->`. This just adds to page load time. Plus, most editors have indentation guides and open-close tag highlighting.\n- Avoid trailing slashes in self-closing elements. For example, `<br>`, `<hr>`, `<img>`, and `<input>`.\n- Don't set `tabindex` manually—rely on the browser to set the order.\n\n```html inert=true\n<p class=\"line-note m-0\" data-attribute=\"106\">This is my paragraph of special text.</p>\n```\n\n## Boolean attributes\n\nMany attributes don't require a value to be set, like `checked`, so don't set them.\n\n```html inert=true\n<input type=\"checkbox\" value=\"1\" checked />\n\n<select>\n  <option value=\"1\" selected>1</option>\n</select>\n```\n\nFor more information, [read the WhatWG section](http://www.whatwg.org/specs/web-apps/current-work/multipage/common-microsyntaxes.html#boolean-attributes).\n\n## Lean markup\n\nWhenever possible, avoid superfluous parent elements when writing HTML. Many times this requires iteration and refactoring, but produces less HTML. For example:\n\n```html inert=true\n<!-- Not so great -->\n<span class=\"avatar\">\n  <img src=\"https://github.com/github.png\" />\n</span>\n\n<!-- Better -->\n<img class=\"avatar\" src=\"https://github.com/github.png\" />\n```\n\n## Forms\n\n- Lean towards radio or checkbox lists instead of select menus.\n- Wrap radio and checkbox inputs and their text in `<label>`s. No need for `for` attributes here—the wrapping automatically associates the two.\n- Form buttons should always include an explicit `type`. Use primary buttons for the `type=\"submit\"` button and regular buttons for `type=\"button\"`.\n- The primary form button must come first in the DOM, especially for forms with multiple submit buttons. The visual order should be preserved with `float: right;` on each button.\n\n## Tables\n\nMake use of `<thead>`, `<tfoot>`, `<tbody>`, and `<th>` tags (and `scope` attribute) when appropriate. (Note: `<tfoot>` goes above `<tbody>` for speed reasons. You want the browser to load the footer before a table full of data.)\n\n```html inert=true\n<table summary=\"This is a chart of invoices for 2011.\">\n  <thead>\n    <tr>\n      <th scope=\"col\">Table header 1</th>\n      <th scope=\"col\">Table header 2</th>\n    </tr>\n  </thead>\n  <tfoot>\n    <tr>\n      <td>Table footer 1</td>\n      <td>Table footer 2</td>\n    </tr>\n  </tfoot>\n  <tbody>\n    <tr>\n      <td>Table data 1</td>\n      <td>Table data 2</td>\n    </tr>\n  </tbody>\n</table>\n```\n"
  },
  {
    "path": "docs/stories/principles/Principles.mdx",
    "content": "# Principles\n\nThe CSS styleguide enables us to create a consistent user experience across GitHub, manage CSS bloat, and make our CSS easier to maintain. These principles should serve as guidelines for how we write and use CSS.\n\n## Styleguide driven design and development\n\nEvery time new CSS is added it increases our CSS bloat, CSS maintenance, and can add to inconsistencies in the user experience of our site. If we follow a practice of designing with styles in the styleguide first and try to implement our designs with only styles in the style guide first, we reduce the risk of deviating away from these styles.\n\n_If new styles are needed:_\n\n- Use global variables where appropriate, such as spacing, typography, and color variables.\n- Write styles in a way that can be folded back into the global style guide should it become a common pattern, i.e. following our principles for naming conventions, components, and utilities as listed below.\n\n## Obvious and transparent\n\nMany designers and developers will edit and add to our CSS. Write CSS in a way that make it obvious and transparent what the CSS does, and support with comments wherever needed.\n\n**Class names:**\n\n- Use class names that make it easy to understand what styles are being applied.\n- Keep naming conventions consistent so that it's easier to internalize and understand class names. For components follow the [BEM-style syntax](#bem-style-naming-and-structure) described below.\n- Don't use class names that suggest the styles do one thing, but instead have hidden properties.\n- Use presentational or functional class names and avoid tying class names for global styles to as specific page or feature.\n\n```css\n// Do\n.bg-white {\n  background-color: #fff;\n}\n\n.box {\n  border-radius: 3px;\n  border: 1px solid #ddd;\n}\n\n// Don't\n.bg-white {\n  color: #111;\n  background-color: #fff;\n  border: #ccc;\n}\n\n.teams-side-panel {\n  width: 330px;\n  border-radius: 3px;\n  border: 1px solid #ddd;\n}\n```\n\n**Sass:**\n\n- Choose verbose over clever. A little duplication is worthwhile if it adds clarity.\n- Don't prioritize being DRY if it means it's hard to read and understand, creates dependencies, or hides what the code is really doing.\n- Avoid overusing pre-processor features that make the code less approachable. Keep it CSS'y and limit the use of Sass features like nesting, variables, functions. For more detail on this check out our [Sass guidelines and lint rules](/principles/scss).\n\n## Components\n\nComponents make it easier to mark up a set of elements that are commonly grouped together with similar visual styles. Their base styles are shared and variants are added with modifier classes, so usually components are comprised of multiple classes. Most importantly, components should be highly reusable across the site, rather than built for specific pages or features. To achieve this:\n\n- **Separate structure and skin:** This means to define repeating visual features (like background and border styles) as separate “skins” that you can mix-and-match with your various components to achieve a large amount of visual variety without much code.\n- **Separate container and content:** Essentially, this means “rarely use location-dependent styles”. A component should look the same no matter where you put it.\n\n```scss\n// structure\n.flash {...}\n\n// skin\n.flash-error {...}\n```\n\n## BEM-style naming and structure\n\nComponents should follow the [Block Element Modifier](http://csswizardry.com/2013/01/mindbemding-getting-your-head-round-bem-syntax/) (BEM) model in terms of structure. We've chosen to use a modified form of BEM syntax using [uppercase](https://en.wikipedia.org/wiki/Uppercase) for the block name, hyphens and lowercase for elements, and double-hyphens and lowercase for modifiers. When a block class requires two words use [Pascal case](https://en.wikipedia.org/wiki/PascalCase), for example `ProgressBar`. When an element or modifier class requires two words use [camel case](https://en.wikipedia.org/wiki/camelCase), for example `[Component]-closeButton` or `[Component]--extraLarge`.\n\n- **Block**: A block includes all of the base styles you want shared across every variation of a component. Minimal thematic styling should be applied to blocks, particularly when variations of a component include visual variations. Apply additional styles with modifiers rather than overriding base styles.\n- **Element**: An element is part of a component. Elements should work together with other elements and can have modifiers. Element styles should not override block styles - this often results in applying more styles directly to elements rather than having styles flow down from the parent level.\n- **Modifier**: A modifier is a variation that can be applied to the base component or to an element within the component. Modifiers shouldn't override block styles, they should add onto them.\n\n```css\n// block\n.Box {\n  ...;\n}\n\n// elements\n.Box-header {\n  ...;\n}\n.Box-body {\n  ...;\n}\n.Box-footer {\n  ...;\n}\n.Box-closeButton {\n  ...;\n}\n\n// modifiers\n.Box--blue {\n  ...;\n}\n.Box--large {\n  ...;\n}\n.Box--extraLarge {\n  ...;\n}\n```\n\n## Property order\n\nFor base styles and components follow the following property order.\n\n```css\n.element {\n  // 1. Positioning\n  // 2. Box model (display, float, width, etc)\n  // 3. Typography (font, line-height, text-*)\n  // 4. Visuals (background, border, opacity)\n  // 5. Misc (CSS3 properties)\n}\n```\n\n## Utilities\n\nUtilities provide the building blocks for layout and handle a range common use cases that help us avoid writing custom styles. When we need to add some margin or padding, rather than adding a new selector specific to that use case, we can use utilities. This helps us reduce the number of unique property-value pairs, and helps us keep more consistent styles across the site.\n\n- Utilities should do one job well and one job only, are immutable, and on occasion are an acceptable approach to overriding component styles.\n- Utility class-names should be transparent and clearly describe the job they do.\n\nExamples:\n\n```css\n.text-white {\n  color: #fff !important;\n}\n\n.bg-gray-light {\n  background-color: #ddd !important;\n}\n\n.mr-1 {\n  margin-right: $spacer !important;\n}\n\n.d-inline-block {\n  display: inline-block !important;\n}\n\n.rounded {\n  border-radius: 3px !important;\n}\n```\n\n## Feature-specific Sass\n\nIt's inevitable that we'll need to write some custom styles for new features on occasion. This should only be done when implementing the design cannot be achieved with utility or component styles. Follow these guidelines when writing custom Sass:\n\n- Don't override global component and utility styles.\n- Name-space to the feature at the beginning of the classname and follow with the element description.\n- Write custom styles in a way that may be folded back into the styleguide should the pattern become useful across the site, i.e. follow BEM structure for building components.\n\n```css\n// Do\n// Custom background for Git Merge ad\n.git-merge-box {\n  padding: $spacer-6;\n  background-color: #222;\n  border-radius: 3px;\n}\n\n// Don't\n.git-merge-box {\n  .boxed-group {\n    padding: 48px;\n    background-color: #222;\n  }\n}\n```\n\n## Inline styles\n\nInline styles are performant and deal with one off use cases that don't need to live in CSS. Sometimes it will make more sense to add an inline style than write a new line of CSS that will live on in our codebase longer than the markup will.\n\nThe most common use case is for applying widths and heights to images. Other use cases might be to apply a custom width to a div to work with it's content.\n\n```html\n<!-- Image width and height -->\n<img width=\"20\" height=\"20\" src=\"https://github.com/github.png\" />\n\n<!-- Custom width for a div that is not a repeated pattern -->\n<div class=\"d-table-cell py-3 pr-3\" style=\"width: 72px\"></div>\n```\n\n## Further reading\n\nThere's a lot happening in the world of front-end web development! To help you understand our principles better, we've put together a list articles that reflect our thinking and influenced our decisions.\n\n**[About HTML semantics and front-end architecture](http://nicolasgallagher.com/about-html-semantics-front-end-architecture/)**<br/>\nThis article contains a collection of thoughts on HTML semantics, components and approaches to front-end architecture, class naming patterns, and HTTP compression. Many of the concepts covered here have been adopted as best practices in modern front-end development. This is a must read!\n\n**[BEMantic: DRY Like You Mean It](https://medium.com/@stowball/bemantic-dry-like-you-mean-it-133ea3843d98#.snpgwck6f)**<br/>\nA case for taking an object oriented approach to writing CSS using Sass and BEM.\n\n**[The media object saves hundreds of lines of code](http://www.stubbornella.org/content/2010/06/25/the-media-object-saves-hundreds-of-lines-of-code/)**<br/>\nThe media object&mdash;a block with an image on the left and content on the right&mdash;is an extremely common pattern on web pages. This article explores ways to write a flexible and versatile media object, and is a great example of how an object oriented CSS approach can help you write more reusable code.\n\n**[OOCSS wiki](https://github.com/stubbornella/oocss/wiki)**<br/>\nThe Object Oriented CSS framework is a collection of code that’s built using the OOCSS approach. The OOCSS approach is a way of writing CSS that’s fast, maintainable, and standards-based. This framework can help you get started.\n\n**[The Importance of !important: Forcing Immutability in CSS](http://csswizardry.com/2016/05/the-importance-of-important/)**<br/>\nThis article is a case for using the `!important` flag in CSS, and describes the best ways to use it.\n\n**[The Specificity Graph](http://csswizardry.com/2014/10/the-specificity-graph/)**<br/>\nThis is a guide to organizing your project's CSS selectors by specificity. Using the specificity graph, you can plot the health of a project's CSS and identify areas with higher-than-ideal specificity.\n\n**[CSS Guidelines](http://cssguidelin.es/)**<br/>\nHigh-level advice and guidelines for writing sane, manageable, scalable CSS.\n\n**[WTF, HTML and CSS?](http://wtfhtmlcss.com/)**<br/>\nA curated list of commonly frustrating HTML and CSS quandaries, miscues, and dilemmas.\n\n**[Solved by flexbox](https://philipwalton.github.io/solved-by-flexbox/)**<br/>\nA showcase of problems once hard or impossible to solve with CSS alone, now made trivially easy with Flexbox.\n"
  },
  {
    "path": "docs/stories/principles/SCSS.mdx",
    "content": "# SCSS\n\n## Spacing\n\n- Use soft-tabs with a two space indent. Spaces are the only way to guarantee code renders the same in any person's environment.\n- Put spaces after `:` in property declarations.\n- Put spaces before `{` in rule declarations.\n- Put line breaks between rulesets.\n- When grouping selectors, keep individual selectors to a single line.\n- Place closing braces of declaration blocks on a new line.\n- Each declaration should appear on its own line for more accurate error reporting.\n\n## Formatting\n\n- Use hex color codes `#000` unless using `rgba()` in raw CSS (the SCSS `rgba()` function is overloaded to accept hex colors, as in `rgba(#000, .5)`).\n- Use `//` for comment blocks (instead of `/* */`).\n- Avoid specifying units for zero values, e.g., `margin: 0;` instead of `margin: 0px;`.\n- Strive to limit use of shorthand declarations to instances where you must explicitly set all the available values.\n\n## Guidelines for using Sass features (WIP)\n\n_When and when not to create:_\n\n- Variables\n- Mixins\n- Functions\n\n## Lint rules (WIP)\n\nAs a rule of thumb, avoid unnecessary nesting in SCSS. At most, aim for three levels. If you cannot help it, step back and rethink your overall strategy (either the specificity needed, or the layout of the nesting).\n\n- Nesting depth: 3\n- Extends: no\n- Duplicated properties: no\n- Final new lines: yes\n- Hex length: 6\n- ID selectors: no\n- Leading zero: yes\n- Naming format: lowercase-with-hyphens\n- Property order: see [HTML property order](./html)\n- Selector depth: 3\n- Single line properties: yes\n\n## Examples\n\nHere are some good examples that apply the above guidelines:\n\n```css\n// Example of good basic formatting practices\n.styleguide-format {\n  color: #000;\n  background-color: rgba(0, 0, 0, 0.5);\n  border: 1px solid #0f0;\n}\n\n// Example of individual selectors getting their own lines (for error reporting)\n.multiple,\n.classes,\n.get-new-lines {\n  display: block;\n}\n\n// Avoid unnecessary shorthand declarations\n.not-so-good {\n  margin: 0 0 20px;\n}\n.good {\n  margin-bottom: 20px;\n}\n```\n"
  },
  {
    "path": "docs/stories/support/Breakpoints.mdx",
    "content": "# Breakpoints\n\nOur breakpoints are based on screen widths where our content starts to break. **Our breakpoints may change as we move more of the product into responsive layouts.**\n\nWe use abbreviations for each breakpoint to keep the class names concise. This abbreviated syntax is used consistently across responsive styles. Responsive styles allow you to change the styles properties at each breakpoint. For example, when using column widths for grid layouts, you can specify that the width is 12 columns wide by default, 8 columns from the medium breakpoint, and 4 columns wide from the extra large breakpoint: `<div class=\"col-12 col-md-8 col-xl-4\">...</div>`.\n\n<table>\n  <tr>\n    <td>Breakpoint</td>\n    <td>Syntax</td>\n    <td>Breaks at</td>\n  </tr>\n  <tr>\n    <td>Small</td>\n    <td>sm</td>\n    <td>`544px`</td>\n  </tr>\n  <tr>\n    <td>Medium</td>\n    <td>md</td>\n    <td>`768px`</td>\n  </tr>\n  <tr>\n    <td>Large</td>\n    <td>lg</td>\n    <td>`1012px`</td>\n  </tr>\n  <tr>\n    <td>Extra-large</td>\n    <td>xl</td>\n    <td>`1280px`</td>\n  </tr>\n</table>\n\nResponsive styles are available for [margin](/utilities/margin#responsive-margins), [padding](/utilities/padding#responsive-padding), [layout](/utilities/layout), [flexbox](/utilities/flexbox#responsive-flex-utilities), the [grid](/utilities/grid#responsive-grids) system, and many more.\n\n## Breakpoint and up... 🛫\n\nIn most cases, breakpoints get used with the `min-width` media query. This means that when using a responsive utility class, the class becomes \"enabled\" from the breakpoint on upwards. Or from the browser's perspective, when the browser's width **is** the breakpoint or **wider**.\n\n<table>\n  <tr>\n    <td>Breakpoint</td>\n    <td>Syntax</td>\n    <td>Is enabled...</td>\n  </tr>\n  <tr>\n    <td>None</td>\n    <td></td>\n    <td>from `0px` upwards -&gt;</td>\n  </tr>\n  <tr>\n    <td>Small</td>\n    <td>sm</td>\n    <td>from `544px` upwards -&gt;</td>\n  </tr>\n  <tr>\n    <td>Medium</td>\n    <td>md</td>\n    <td>from `768px` upwards -&gt;</td>\n  </tr>\n  <tr>\n    <td>Large</td>\n    <td>lg</td>\n    <td>from `1012px` upwards -&gt;</td>\n  </tr>\n  <tr>\n    <td>Extra-large</td>\n    <td>xl</td>\n    <td>from `1280px` upwards -&gt;</td>\n  </tr>\n</table>\n\nA responsive utility class stays enabled **unless** it gets overridden with another responsive utility class that has a higher breakpoint. Here the example from above `<div class=\"col-12 col-md-8 col-xl-4\">...</div>` visualized:\n\n```\n| 0px ->\n         | 544px ->\n         | sm\n                    | 768px ->\n                    | md\n                               | 1012px ->\n                               | lg\n                                           | 1280px ->\n                                           | xl\n\n| col-12 ---------> | col-md-8 ----------> | col-xl-4 ->\n```\n\nUsing breakpoints with the `min-width` media query works great for \"mobile first\". Design for mobile devices as a default, then if needed, tweak it for wider desktop screens using responsive utility classes.\n\nNote: The [responsive hide](/utilities/layout#responsive-hide) utilities are an exception and use a range between two breakpoints. They also go the other direction \"breakpoint and down... 🛬\". For example `.hide-md` hides an element if the browser's width is between `sm <-> md` (`544px - 767px`).\n\n## Breakpoint variables\n\nThe above values are defined as variables, and then put into a Sass map that generates the media query mixin.\n\n```css\n// breakpoints\n$width-xs: 0;\n$width-sm: 544px;\n$width-md: 768px;\n$width-lg: 1012px;\n$width-xl: 1280px;\n\n$breakpoints: (\n  // Small screen / phone\n  sm: $width-sm,\n  // Medium screen / tablet\n  md: $width-md,\n  // Large screen / desktop (980 + (12 * 2)) <= container + gutters\n  lg: $width-lg,\n  // Extra large screen / wide desktop\n  xl: $width-xl\n) !default;\n```\n\n## Media query mixins\n\nUse media query mixins when you want to change CSS properties at a particular breakpoint. The media query mixin works by passing in a breakpoint value, such as `breakpoint(md)`.\n\nMedia queries are scoped from each breakpoint and upwards. In the example below, the font size is `28px` until the viewport size meets the `md` breakpoint, from there upwards—including through the `xl` breakpoint—the font size will be `32px`.\n\n```css\n.styles {\n  font-size: 28px;\n  @include breakpoint(md) {\n    font-size: 32px;\n  }\n}\n```\n\n## Responsive variants\n\nThe `$responsive-variants` variable is a mapping of breakpoints to classname variants, and should be used like so:\n\n```css\n@each $breakpoint, $variant in $responsive-variants {\n  @include breakpoint($breakpoint) {\n    // Note: the first iteration gets `$variant == \"\"`\n    .overflow#{$variant}-auto {\n      overflow: auto;\n    }\n  }\n}\n```\n\nThe resulting CSS would be:\n\n```css\n.overflow-auto {\n  overflow: auto;\n}\n@media (min-width: 544px) {\n  .overflow-sm-auto {\n    overflow: auto;\n  }\n}\n@media (min-width: 768px) {\n  .overflow-md-auto {\n    overflow: auto;\n  }\n}\n@media (min-width: 1012px) {\n  .overflow-lg-auto {\n    overflow: auto;\n  }\n}\n@media (min-width: 1280px) {\n  .overflow-xl-auto {\n    overflow: auto;\n  }\n}\n```\n\n**Caution!**\n\n1. Don't precede the `#{$variation}` interpolation with a hyphen because the first value of `$variant` will be an empty string.\n1. For consistency, please put the `@include breakpoint($breakpoint)` call directly inside the `$responsive-variants` loop. This will help keep file sizes small by \"batching\" selectors in shared `@media` queries.\n"
  },
  {
    "path": "docs/stories/support/Deprecations.mdx",
    "content": "# Deprecations\n\nAs of version 12.7.0, we publish CSS selector and SCSS variable deprecation data (as of 14.0.0) with `@primer/css`. You can access the data via the [Node API](#node) or as [JSON](#json).\n\nTo deprecate a class, variable, or mixin, add the element to the [deprecations.js](https://github.com/primer/css/blob/main/deprecations.js) file with it's replacement value.\n\nThe replacement can be:\n\n- A `String` for a direct replacement.\n- An `Array` for multiple replacement options.\n- `null` to indicate there is no replacement.\n\nThis could look something like this:\n\n```js\nconst deprecations = {\n  'deprecated-1': 'replacement',\n  'deprecated-2': ['replacement-1', 'replacement-2'],\n  'deprecated-3': null,\n}\n```\n\n## JSON\n\nThe JSON data is available in the unpacked node module's `dist/deprecations.json`, and is an object with the following structure:\n\n```json\n{\n  \"selectors\" {...},\n  \"variables\": {...},\n  \"mixins\": {...}\n}\n```\n\n`selectors` is an object mapping CSS selectors to their replacements. If the replacement is an Array, then there's multiple options. If the replacement is null then there are no replacements.\n\n```json\n{\n  \"selectors\": {\n    \"deprecated-class\": \"replacement-class\"\n  }\n}\n```\n\n`variables` is an object mapping SCSS variables to their replacement SCSS variable.\n\n```json\n{\n  \"variables\": {\n    \"$deprecated-variable\": \"$replacement-variable\"\n  }\n}\n```\n\n`mixins` is an object mapping SCSS mixins to their replacement SCSS mixins.\n\n```json\n{\n  \"mixins\": {\n    \"deprecated-mixin\": \"replacement-mixin\"\n  }\n}\n```\n\n## Node\n\nThe Node API for selector deprecations is available at\n`@primer/css/deprecations`.\n\n### Example:\n\n```js\nconst {deprecatedSelectors, deprecatedSassVariables, deprecatedSassMixins} = require('@primer/css/deprecations')\n```\n"
  },
  {
    "path": "docs/stories/support/Linting.mdx",
    "content": "# Linting\n\nWe use linters to enforce coding principles and standards. On every pull request we run the linters on the code to make sure any changes meet our standards. When a commit contains code that doesn't meet the standards, the build fails which blocks merging into main and deploying to production.\n\nFor teams working on `github/github` this configuration is all setup for you. While we do recommend you also [setup a plugin](#plugins) in your editor, this is not required.\n\nFor everyone else we encourage you to adopt all or some of these tools in your workflow.\n\n## CSS\n\nWe use [stylelint](http://stylelint.io/) to lint our CSS. If you are working on `github/github` you don't need to do any setup because stylelint comes bundled within the repository. If you are working on other properties, you may need to setup stylelint. You can install stylelint via npm:\n\n```\nnpm install -g stylelint\n```\n\nWhether you work on `github/github` or not, it's useful to see lint errors locally. The easiest way to lint your code is to install a [plugin](#plugins) in your workflow. If you prefer to run stylelint manually, pass it a glob pattern of the files you want to lint. If you work on `github/github`, you can run stylelint from the command line:\n\n```\nbin/stylelint \"app/assets/stylesheets/**/*.scss\"\n```\n\nFor more advanced usage, we recommend reading the [stylelint user guide](http://stylelint.io/user-guide/) and checking out our [primer stylelint configuration](https://github.com/primer/stylelint-config).\n\n### Configuration\n\nStylelint is [configured by a JSON file](http://stylelint.io/user-guide/configuration/) that specifies which linter rules we enforce. If you are working on `github/github`, you don't need to do any setup because the configuration is included within the repository bundle.\n\nWe have extracted out our configuration file into a separate repository [primer/stylelint-config](https://github.com/primer/stylelint-config). This gives us a central source where we can keep the configuration up-to-date and distribute easily across all our projects.\n\nTo [use the configuration](https://github.com/primer/stylelint-config#usage) in your project, install the config `npm install --save @primer/stylelint-config` via npm, and extend the config in your `.stylelintrc` file. Put the file in the root directory of your project.\n\n```json\n{\n  \"extends\": \"@primer/stylelint-config\"\n}\n```\n\nA list of all the specific rules we have enabled are documented in [the package README](https://github.com/primer/stylelint-config#documentation).\n\n### Disabling\n\nWe use linters to help ensure our CSS is written according to our principles. On occasion it's necessary to break those principles and disable a linter. This is usually because of one of the following scenarios:\n\n- There is no other way to achieve the desired style due to other code limitations, such as the way the views are rendered or the way the content is output (such as rendered markdown).\n- There is no other way to achieve the desired style due to conflicts with existing styles that would require considerable effort to fix.\n- Breaking a lint rule offers an improvement to code readability and/or maintainability (this is often the case when writing components and supporting SCSS, such as mixins and functions).\n\nTo disable a linter, place a `// stylelint-disable` comment around the specific block of CSS that you need to override. For example:\n\n```css\n// When a branch name is a link\n// stylelint-disable selector-no-qualifying-type\na.branch-name {\n  color: $brand-blue;\n}\n// stylelint-enable selector-no-qualifying-type\n```\n\n**If you choose to disable a linting rule...**\n\n1. You'll need to specify a reason for disabling the lint.\n2. Say what lint you're disabling, this example has `selector-no-qualifying-type`.\n3. Make sure to `disable` then `enable` the lint again after your code block. This ensures that the rule is re-enabled for any code after the block in question.\n\nWhen you disable a linter on GitHub, [Sentinel](https://github.com/github/sentinel) will post a comment on your pull request notifying the Design Systems team of this override. This is because disabled lints act as a signal that there may be issues with Primer and/or the CSS in question.\n\nWhile linters shouldn't be disabled without consideration, essentially they act as a guide to how we write CSS rather than steadfast rules. For more info on disabling configuration, visit the [stylelint docs](http://stylelint.io/user-guide/configuration/#turning-rules-off-from-within-your-css).\n\n### Plugins\n\nOur linter runs on every commit, but finding you have a lint error after a push can be frustrating and waste time. To avoid this, a [collection of editor plugins](https://stylelint.io/user-guide/integrations/editor) are available to help you lint while you code.\n\n## HTML\n\nA custom Rails test called `styles_match_markup_test.rb` runs for our `.html.erb` files and checks for unused selectors. The test collects a list of all the class names used in our markup, JavaScript and documentation, then compares that with a list of all our class names in our `.scss` files.\n\nThis test isn't smart enough to know about CSS inheritance, but will help you catch any dead CSS in your markup or styles. Run the test locally with this command.\n\n```\nbin/testrb test/fast/linting/styles_match_markup_test.rb\n```\n\nSometimes you will have generated class names that the test misses. Adding these class names to the regular expression enabled `selectors_match_markup_whitelist.yml` file will quiet the tests.\n\n## Files\n\nWe enforce `.scss` file naming to be lowercase, only use `-` hyphens and no leading `_` underscores. Removing underscores from the files is an anti-pattern for Sass, but we're doing this because we're proactively moving away from Sass to match CSS web standards.\n\n## Octicons\n\nWe test for the proper use of the [Octicons helper](https://github.com/primer/octicons/tree/master/lib/octicons_helper#readme) in our templates and make sure that the symbols used are valid octicons.\n"
  },
  {
    "path": "docs/stories/support/Prototyping.mdx",
    "content": "# Prototyping\n\nYou're welcome to use whatever prototyping tool suits your needs, however we've set up some options that will help you get started quickly.\n\nThe power of prototyping in code is that you can create clickable mocks that can be shared via a URL. This can be useful for exploring designs and interactions or for user research sessions. Prototypes can be throw-away, or part of your process for building out new features since you can work with the same CSS we use in production.\n\n## Simple HTML prototype with Primer CSS\n\nCopy the code below and paste it in a HTML file. The CDN link is always linked to the most up to date version of Primer CSS and includes all of the modules in the core, product, and marketing packages.\n\nThis method requires no dev environment set up and is useful for when you want to create simple prototypes using Primer CSS.\n\n```html\n<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <title></title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n    <link rel=\"stylesheet\" href=\"https://unpkg.com/@primer/css@^19.0.0/dist/primer.css\" />\n  </head>\n  <body></body>\n</html>\n```\n\nNote that the above loads a specific version of Primer CSS. You can also load the \"latest\" version with `https://unpkg.com/@primer/css/dist/primer.css`. Just be aware that it could include breaking changes. So for prototypes meant to last for a long time it's better to lock Primer CSS to a specific version.\n"
  },
  {
    "path": "docs/stories/support/Spacing.mdx",
    "content": "# Spacing\n\n## Spacing scale\n\nThe spacing scale is a **base-8** scale. We chose a base-8 scale because eight is a highly composable number (it can be divided and multiplied many times and result in whole numbers), yet allows spacing dense enough for GitHub's UI. The scale's exception is that it begins at 4px to allow smaller padding and margin for denser parts of the site, from there on it steps up consistently in equal values of `8px`.\n\n<table>\n  <tr>\n    <td>Variable</td>\n    <td>Scale</td>\n    <td>Value</td>\n  </tr>\n  <tr>\n    <td>`$spacer-0`</td>\n    <td>0</td>\n    <td>0</td>\n  </tr>\n  <tr>\n    <td>`$spacer-1`</td>\n    <td>1</td>\n    <td>4px</td>\n  </tr>\n  <tr>\n    <td>`$spacer-2`</td>\n    <td>2</td>\n    <td>8px</td>\n  </tr>\n  <tr>\n    <td>`$spacer-3`</td>\n    <td>3</td>\n    <td>16px</td>\n  </tr>\n  <tr>\n    <td>`$spacer-4`</td>\n    <td>4</td>\n    <td>24px</td>\n  </tr>\n  <tr>\n    <td>`$spacer-5`</td>\n    <td>5</td>\n    <td>32px</td>\n  </tr>\n  <tr>\n    <td>`$spacer-6`</td>\n    <td>6</td>\n    <td>40px</td>\n  </tr>\n</table>\n\nThese variables are encouraged to be used within components and custom CSS. The spacing scale is also used for [margin](/utilities/margin) and [padding](/utilities/padding) utilities.\n\n### Extended spacing scale\n\nThese are primarily useful for achieving bigger vertical spacing between sections. This scale first steps up with `8px` for spacer 7, then steps in increments of `16px` from spacer 8 up to 12.\n\n<table>\n  <tr>\n    <td>Variable</td>\n    <td>Scale</td>\n    <td>Value</td>\n  </tr>\n  <tr>\n    <td>`$spacer-7`</td>\n    <td>7</td>\n    <td>48px</td>\n  </tr>\n  <tr>\n    <td>`$spacer-8`</td>\n    <td>8</td>\n    <td>64px</td>\n  </tr>\n  <tr>\n    <td>`$spacer-9`</td>\n    <td>9</td>\n    <td>80px</td>\n  </tr>\n  <tr>\n    <td>`$spacer-10`</td>\n    <td>10</td>\n    <td>96px</td>\n  </tr>\n  <tr>\n    <td>`$spacer-11`</td>\n    <td>11</td>\n    <td>112px</td>\n  </tr>\n  <tr>\n    <td>`$spacer-12`</td>\n    <td>12</td>\n    <td>128px</td>\n  </tr>\n</table>\n\nThe extended spacing scale is used for [margin](/utilities/margin) and [padding](/utilities/padding) utilities along the Y-axis, as well as for single side spacing utilities (top, right, bottom, left).\n\n## Em-based spacing\n\nEms are used for spacing within components such as buttons and form elements. We stick to common fractions for em values (and powers of 2 where possible) so that , in combination with typography and line-height, the total height lands on sensible numbers.\n\nWe aim for whole numbers, however, GitHub's body font-size is 14px which is difficult to work with, so we sometimes can't achieve a whole number. Less desirable values are highlighted in <span class=\"color-fg-danger\">red</span> below.\n\n<table>\n  <tr>\n    <td>Variable</td>\n    <td>Fraction</td>\n    <td>Y Padding (em)</td>\n    <td>Total height at 14px</td>\n    <td>Total height at 16px</td>\n  </tr>\n  <tr>\n    <td>`$em-spacer-1`</td>\n    <td>1/16</td>\n    <td>.0625</td>\n    <td>\n      <span class=\"color-fg-danger\">22.75</span>\n    </td>\n    <td>26</td>\n  </tr>\n  <tr>\n    <td>`$em-spacer-2`</td>\n    <td>1/8</td>\n    <td>.125</td>\n    <td>\n      <span class=\"color-fg-danger\">24.5</span>\n    </td>\n    <td>28</td>\n  </tr>\n  <tr>\n    <td>`$em-spacer-3`</td>\n    <td>1/4</td>\n    <td>.25</td>\n    <td>28</td>\n    <td>32</td>\n  </tr>\n  <tr>\n    <td>`$em-spacer-4`</td>\n    <td>3/8</td>\n    <td>.375</td>\n    <td>\n      <span class=\"color-fg-danger\">31.5</span>\n    </td>\n    <td>36</td>\n  </tr>\n  <tr>\n    <td>`$em-spacer-5`</td>\n    <td>1/2</td>\n    <td>.5</td>\n    <td>35</td>\n    <td>40</td>\n  </tr>\n  <tr>\n    <td>`$em-spacer-6`</td>\n    <td>3/4</td>\n    <td>.75</td>\n    <td>42</td>\n    <td>48</td>\n  </tr>\n</table>\n\nThe variables listed above are preferred for use within components and custom CSS. To calculate values with other font-sizes or em values, we suggest using [Formula](https://jxnblk.github.io/formula/).\n"
  },
  {
    "path": "docs/stories/support/Theming.mdx",
    "content": "# Theming\n\nPrimer CSS offers multiple color themes for components and utilities. The colors change based on the active theme and color mode. When nothing is specified, Primer CSS uses the `light` theme.\n\n## Set a theme\n\nConfigure Primer CSS to use a certain theme by setting HTML attributes.\n\n<table>\n  <tr>\n    <td>Theme</td>\n    <td>data attributes</td>\n  </tr>\n  <tr>\n    <td>Light</td>\n    <td>`data-color-mode=&quot;light&quot; data-light-theme=&quot;light&quot;`</td>\n  </tr>\n  <tr>\n    <td>Dark</td>\n    <td>`data-color-mode=&quot;dark&quot; data-dark-theme=&quot;dark&quot;`</td>\n  </tr>\n  <tr>\n    <td>Dark Dimmed</td>\n    <td>`data-color-mode=&quot;dark&quot; data-dark-theme=&quot;dark_dimmed&quot;`</td>\n  </tr>\n  <tr>\n    <td>Dark High Contrast</td>\n    <td>`data-color-mode=&quot;dark&quot; data-dark-theme=&quot;dark_high_contrast&quot;`</td>\n  </tr>\n</table>\n\nTypically these attributes are added to the document root (`<html>`) to use on the entire page:\n\n```html\n<html data-color-mode=\"dark\" data-dark-theme=\"dark_dimmed\"></html>\n```\n\nBelow an example of all themes to compare:\n\n```html\n<div data-color-mode=\"light\" data-light-theme=\"light\" class=\"p-3\">\n  <h4>Light</h4>\n  <code class=\"d-block mt-1 mb-3 color-fg-muted\"> data-color-mode=\"light\" data-light-theme=\"light\" </code>\n  <button class=\"btn\">Button</button>\n  <span class=\"Label ml-2\">Label</span>\n  <span class=\"Counter ml-2\">123</span>\n</div>\n<div data-color-mode=\"dark\" data-dark-theme=\"dark\" class=\"p-3\">\n  <h4>Dark</h4>\n  <code class=\"d-block mt-1 mb-3 color-fg-muted\"> data-color-mode=\"dark\" data-dark-theme=\"dark\" </code>\n  <button class=\"btn\">Button</button>\n  <span class=\"Label ml-2\">Label</span>\n  <span class=\"Counter ml-2\">123</span>\n</div>\n<div data-color-mode=\"dark\" data-dark-theme=\"dark_dimmed\" class=\"p-3\">\n  <h4>Dark Dimmed</h4>\n  <code class=\"d-block mt-1 mb-3 color-fg-muted\"> data-color-mode=\"dark\" data-dark-theme=\"dark_dimmed\" </code>\n  <button class=\"btn\">Button</button>\n  <span class=\"Label ml-2\">Label</span>\n  <span class=\"Counter ml-2\">123</span>\n</div>\n<div data-color-mode=\"dark\" data-dark-theme=\"dark_high_contrast\" class=\"p-3\">\n  <h4>Dark High Contrast</h4>\n  <code class=\"d-block mt-1 mb-3 color-fg-muted\"> data-color-mode=\"dark\" data-dark-theme=\"dark_high_contrast\" </code>\n  <button class=\"btn\">Button</button>\n  <span class=\"Label ml-2\">Label</span>\n  <span class=\"Counter ml-2\">123</span>\n</div>\n```\n\n## Sync to the system\n\nIf the theme should be synced to the OS's color mode, use `data-color-mode=\"auto\"` and set a `data-light-theme` as well as a `data-dark-theme`.\n\n```html\n<div data-color-mode=\"auto\" data-light-theme=\"light\" data-dark-theme=\"dark_dimmed\" class=\"p-3\">\n  <h4>Synced to system</h4>\n  <code class=\"d-block mt-1 mb-3 color-fg-muted\">\n    data-color-mode=\"auto\" data-light-theme=\"light\" data-dark-theme=\"dark_dimmed\"\n  </code>\n  <button class=\"btn\">Button</button>\n  <span class=\"Label ml-2\">Label</span>\n  <span class=\"Counter ml-2\">123</span>\n</div>\n```\n\nChange the color mode of your OS to see the switch between the `data-light-theme=\"light\"` and `data-dark-theme=\"dark_dimmed\"`.\n\n## Custom color variables\n\nIt's recommended to use the [functional variables](https://primer.style/primitives/colors#functional-variables) as much as possible. It will guarantee that the variables will work as expected with any new theme that might get added in the future. Sometimes you might still need a custom variable that changes based on the color mode. You can create a custom variable with the `color-variables` mixin.\n\n```css\n@include color-variables(\n  (\n    'custom-css-variable-1': (\n      light: var(--color-scale-gray-3),\n      dark: var(--color-scale-gray-5)\n    ),\n    'custom-css-variable-2': (\n      light: var(--color-scale-gray-2),\n      dark: var(--color-scale-gray-6)\n    ),\n    'custom-css-variable-3': (\n      light: var(--color-scale-gray-2),\n      dark: var(--color-scale-gray-6)\n    )\n  )\n);\n```\n\nThe custom variables will be prefixed with `--color-` and can be used in the same way as other functional variables.\n\n```css\n.my-class {\n  color: var(--color-custom-css-variable-1);\n  background-color: var(--color-custom-css-variable-2);\n  border-color: var(--color-custom-css-variable-2);\n}\n```\n"
  },
  {
    "path": "docs/stories/support/Typography.mdx",
    "content": "# Typography\n\n## Type scale\n\nThe typography scale is designed to work for GitHub's product UI and marketing sites. Font sizes are designed to work in combination with line-height values so as to result in more sensible numbers wherever possible.\n\nFont sizes are smaller on mobile and scale up at the `md` [breakpoint](./breakpoints) to be larger on desktop.\n\n<table>\n  <tr>\n    <td>Scale</td>\n    <td>Font size: mobile</td>\n    <td>Font size: desktop</td>\n    <td>1.25 line height</td>\n    <td>1.5 line height</td>\n  </tr>\n  <tr>\n    <td>00</td>\n    <td>40px</td>\n    <td>48px</td>\n    <td>60</td>\n    <td>72</td>\n  </tr>\n  <tr>\n    <td>0</td>\n    <td>32px</td>\n    <td>40px</td>\n    <td>50</td>\n    <td>60</td>\n  </tr>\n  <tr>\n    <td>1</td>\n    <td>26px</td>\n    <td>32px</td>\n    <td>40</td>\n    <td>48</td>\n  </tr>\n  <tr>\n    <td>2</td>\n    <td>22px</td>\n    <td>24px</td>\n    <td>30</td>\n    <td>36</td>\n  </tr>\n  <tr>\n    <td>3</td>\n    <td>18px</td>\n    <td>20px</td>\n    <td>25</td>\n    <td>30</td>\n  </tr>\n  <tr>\n    <td>4</td>\n    <td>16px</td>\n    <td>16px</td>\n    <td>20</td>\n    <td>24</td>\n  </tr>\n  <tr>\n    <td>5</td>\n    <td>14px</td>\n    <td>14px</td>\n    <td>17.5</td>\n    <td>21</td>\n  </tr>\n  <tr>\n    <td>6</td>\n    <td>12px</td>\n    <td>12px</td>\n    <td>15</td>\n    <td>18</td>\n  </tr>\n</table>\n\nThe typography scale is used to create [typography utilities](/utilities/typography).\n\n## Typography variables\n\n### Font size variables\n\n```css\n// Heading sizes - mobile\n// h4—h6 remain the same size on both mobile & desktop\n$h00-size-mobile: 40px;\n$h0-size-mobile: 32px;\n$h1-size-mobile: 26px;\n$h2-size-mobile: 22px;\n$h3-size-mobile: 18px;\n\n// Heading sizes - desktop\n$h00-size: 48px;\n$h0-size: 40px;\n$h1-size: 32px;\n$h2-size: 24px;\n$h3-size: 20px;\n$h4-size: 16px;\n$h5-size: 14px;\n$h6-size: 12px;\n```\n\n### Font weight variables\n\n```css\n$font-weight-bold: 600 !default;\n$font-weight-light: 300 !default;\n```\n\n### Line height variables\n\n```css\n$lh-condensed-ultra: 1 !default;\n$lh-condensed: 1.25 !default;\n$lh-default: 1.5 !default;\n```\n\n## Typography mixins\n\nTypography mixins are available for heading styles and for our type scale. They can be used within components or custom CSS. The same styles are also available as [utilities](/utilities/typography#heading-utilities). which requires no additional CSS.\n\nHeading mixins are available for `h1` through to `h6`, this includes the font-size and font-weight. Example:\n\n```css\n.styles {\n  @include h1;\n}\n```\n\nResponsive heading mixins can be used to adjust the font-size between the `sm` and `lg` breakpoint. Only headings 1—3 are responsive. Heading 4—6 are small enough to remain the same between mobile and desktop. Responsive heading mixins include the font-size and font-weight as well as the media query. To use a responsive heading mixin, postfix the heading with `-responsive`:\n\n```css\n.styles {\n  @include h1-responsive;\n}\n```\n\nResponsive type scale mixins are also available. Type scale mixins apply a font-size that gets slightly bigger at the `lg` breakpoint. They do not apply a font-weight. Like the responsive heading mixins, they are only available for size `f1` to `f3` and are postfixed with `-responsive` as in the example below:\n\n```css\n.style {\n  @include f1-responsive;\n}\n```\n"
  },
  {
    "path": "docs/stories/utilities/Animation.stories.jsx",
    "content": "export default {\n  title: 'Utilities/Animation'\n}\n\nexport const FadeIn = ({}) => (\n  <div class=\"anim-fade-in\">\n    <svg height=\"32\" class=\"octicon octicon-mark-github v-align-middle mr-2\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"32\" aria-hidden=\"true\"><path fill-rule=\"evenodd\" d=\"M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0 0 16 8c0-4.42-3.58-8-8-8z\"></path></svg>\n    Hello from GitHub!\n  </div>\n)\n\nexport const FadeOut = ({}) => (\n  <div class=\"anim-fade-out\">\n    <svg height=\"32\" class=\"octicon octicon-mark-github v-align-middle mr-2\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"32\" aria-hidden=\"true\"><path fill-rule=\"evenodd\" d=\"M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0 0 16 8c0-4.42-3.58-8-8-8z\"></path></svg>\n    Hello from GitHub!\n  </div>\n)\n\nexport const FadeUp = ({}) => (\n  <div class=\"anim-fade-up\">\n    <svg height=\"32\" class=\"octicon octicon-mark-github v-align-middle mr-2\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"32\" aria-hidden=\"true\"><path fill-rule=\"evenodd\" d=\"M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0 0 16 8c0-4.42-3.58-8-8-8z\"></path></svg>\n    Hello from GitHub!\n  </div>\n)\n\nexport const FadeDown = ({}) => (\n  <div class=\"anim-fade-down\">\n    <svg height=\"32\" class=\"octicon octicon-mark-github v-align-middle mr-2\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"32\" aria-hidden=\"true\"><path fill-rule=\"evenodd\" d=\"M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0 0 16 8c0-4.42-3.58-8-8-8z\"></path></svg>\n    Hello from GitHub!\n  </div>\n)\n\nexport const ScaleIn = ({}) => (\n  <span class=\"anim-scale-in d-inline-block\">\n    <svg height=\"32\" class=\"octicon octicon-mark-github v-align-middle mr-2\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"32\" aria-hidden=\"true\"><path fill-rule=\"evenodd\" d=\"M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0 0 16 8c0-4.42-3.58-8-8-8z\"></path></svg>\n    Hello from GitHub!\n  </span>\n)\n\nexport const GrowX = ({}) => (\n  <div class=\"anim-grow-x py-2 color-bg-success-emphasis\"></div>\n)\n\nexport const Pulse = ({}) => (\n  <span class=\"anim-pulse d-inline-block\">\n    <svg height=\"32\" class=\"octicon octicon-mark-github v-align-middle mr-2\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"32\" aria-hidden=\"true\"><path fill-rule=\"evenodd\" d=\"M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0 0 16 8c0-4.42-3.58-8-8-8z\"></path></svg>\n    Hello from GitHub!\n  </span>\n)\n\nexport const Hover = ({}) => (\n  <div class=\"anim-hover-grow Box p-3\">\n    <svg height=\"32\" class=\"octicon octicon-mark-github v-align-middle\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"32\" aria-hidden=\"true\"><path fill-rule=\"evenodd\" d=\"M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0 0 16 8c0-4.42-3.58-8-8-8z\"></path></svg>\n  </div>\n)\n\nexport const Rotate = ({}) => (\n  <div class=\"anim-rotate d-inline-block\">\n    <svg height=\"32\" class=\"octicon octicon-mark-github v-align-middle\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"32\" aria-hidden=\"true\"><path fill-rule=\"evenodd\" d=\"M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0 0 16 8c0-4.42-3.58-8-8-8z\"></path></svg>\n  </div>\n)\n"
  },
  {
    "path": "docs/stories/utilities/Border.stories.jsx",
    "content": "export default {\n  title: 'Utilities/Border'\n}\n\nexport const Default = ({}) => <span class=\"color-bg-subtle p-2 border\">.border</span>\n\nexport const Direction = ({}) => (\n  <div style={{display: 'inline-flex', flexDirection: 'column', gap: '1rem'}}>\n    <div class=\"color-bg-subtle p-2 border-left\">.border-left</div>\n    <div class=\"color-bg-subtle p-2 border-top\">.border-top</div>\n    <div class=\"color-bg-subtle p-2 border-bottom\">.border-bottom</div>\n    <div class=\"color-bg-subtle p-2 border-right\">.border-right</div>\n    <div class=\"color-bg-subtle p-2 border-x\">.border-x</div>\n    <div class=\"color-bg-subtle p-2 border-y\">.border-y</div>\n  </div>\n)\n\nexport const Hide = ({}) => <span class=\"color-bg-subtle p-2 border border-top-0\">.border-top-0</span>\n\nexport const Style = ({}) => <span class=\"color-bg-subtle p-2 border border-dashed\">.border-dashed</span>\n\nexport const Rounded = ({}) => (\n  <div style={{display: 'inline-flex', flexDirection: 'column', gap: '1rem'}}>\n    <div class=\"color-bg-subtle p-2 border rounded-0\">.rounded-0</div>\n    <div class=\"color-bg-subtle p-2 border rounded-1\">.rounded-1</div>\n    <div class=\"color-bg-subtle p-2 border rounded-2\">.rounded-2</div>\n    <div class=\"color-bg-subtle p-2 border rounded-3\">.rounded-3</div>\n    <div\n      class=\"color-bg-subtle border circle\"\n      style={{display: 'inline-flex', justifyContent: 'center', alignItems: 'center', width: '100px', height: '100px'}}\n    >\n      .circle\n    </div>\n  </div>\n)\n\nexport const RoundedDirection = ({}) => (\n  <div style={{display: 'inline-flex', flexDirection: 'column', gap: '1rem'}}>\n    <div class=\"color-bg-subtle p-2 border rounded-top-2\">.rounded-top-2</div>\n    <div class=\"color-bg-subtle p-2 border rounded-right-2\">.rounded-right-2</div>\n    <div class=\"color-bg-subtle p-2 border rounded-bottom-2\">.rounded-bottom-2</div>\n    <div class=\"color-bg-subtle p-2 border rounded-left-2\">.rounded-left-2</div>\n  </div>\n)\n\nexport const RoundedResponsive = ({}) => (\n  <div\n    class=\"color-bg-subtle p-2 border rounded-sm-1 rounded-md-2 rounded-lg-3\"\n    style={{display: 'inline-flex', flexDirection: 'column', gap: '1rem'}}\n  >\n    <div>.border-left</div>\n    <div class=\"d-none d-sm-block\">.rounded-sm-1</div>\n    <div class=\"d-none d-md-block\">.rounded-md-2</div>\n    <div class=\"d-none d-lg-block\">.rounded-lg-3</div>\n  </div>\n)\n\nexport const Responsive = ({}) => (\n  <div\n    class=\"color-bg-subtle p-2 border-left border-sm-top border-md-right border-lg-bottom\"\n    style={{display: 'inline-flex', flexDirection: 'column', gap: '1rem'}}\n  >\n    <div>.border-left</div>\n    <div class=\"d-none d-sm-block\">.border-sm-top</div>\n    <div class=\"d-none d-md-block\">.border-md-right</div>\n    <div class=\"d-none d-lg-block\">.border-lg-bottom</div>\n  </div>\n)\n"
  },
  {
    "path": "docs/stories/utilities/Color.stories.jsx",
    "content": "export default {\n  title: 'Utilities/Color',\n}\n\nexport const Text = ({}) => (\n  <div style={{display: 'inline-flex', flexDirection: 'column', gap: '0.25rem'}}>\n    <div class=\"color-fg-default\">.color-fg-default</div>\n    <div class=\"color-fg-muted\">.color-fg-muted</div>\n    <div class=\"color-fg-subtle\">.color-fg-subtle</div>\n\n    <div class=\"color-fg-accent mt-3\">.color-fg-accent</div>\n    <div class=\"color-fg-success\">.color-fg-success</div>\n    <div class=\"color-fg-attention\">.color-fg-attention</div>\n    <div class=\"color-fg-severe\">.color-fg-severe</div>\n    <div class=\"color-fg-danger\">.color-fg-danger</div>\n    <div class=\"color-fg-open\">.color-fg-open</div>\n    <div class=\"color-fg-closed\">.color-fg-closed</div>\n    <div class=\"color-fg-done\">.color-fg-done</div>\n    <div class=\"color-fg-sponsors\">.color-fg-sponsors</div>\n\n    <div class=\"color-fg-on-emphasis color-bg-accent-emphasis p-2 rounded mt-3\">.color-fg-on-emphasis</div>\n  </div>\n)\n\nexport const NewText = ({}) => (\n  <div style={{display: 'inline-flex', flexDirection: 'column', gap: '0.25rem'}}>\n    <div class=\"fgColor-default\">.fgColor-default</div>\n    <div class=\"fgColor-muted\">.fgColor-muted</div>\n\n    <div class=\"fgColor-accent mt-3\">.fgColor-accent</div>\n    <div class=\"fgColor-success\">.fgColor-success</div>\n    <div class=\"fgColor-attention\">.fgColor-attention</div>\n    <div class=\"fgColor-severe\">.fgColor-severe</div>\n    <div class=\"fgColor-danger\">.fgColor-danger</div>\n    <div class=\"fgColor-open\">.fgColor-open</div>\n    <div class=\"fgColor-closed\">.fgColor-closed</div>\n    <div class=\"fgColor-done\">.fgColor-done</div>\n    <div class=\"fgColor-sponsors\">.fgColor-sponsors</div>\n\n    <div class=\"fgColor-onEmphasis fgColor-accent-emphasis p-2 rounded mt-3\">.fgColor-onEmphasis</div>\n  </div>\n)\n\nexport const TextInherit = ({}) => (\n  <div class=\"color-fg-success\">\n    This text is green,{' '}\n    <a href=\"#\" class=\"color-fg-inherit text-underline\">\n      including the link\n    </a>\n  </div>\n)\n\nexport const Background = ({}) => (\n  <div style={{display: 'inline-flex', flexDirection: 'column'}}>\n    <div class=\"color-bg-default p-2 rounded mb-2\">.color-bg-default</div>\n    <div class=\"color-bg-overlay p-2 rounded mb-2\">.color-bg-overlay</div>\n    <div class=\"color-bg-inset p-2 rounded mb-2\">.color-bg-inset</div>\n    <div class=\"color-bg-subtle p-2 rounded mb-2\">.color-bg-subtle</div>\n    <div class=\"color-bg-emphasis color-fg-on-emphasis p-2 rounded mb-4\">.color-bg-emphasis</div>\n\n    <div class=\"color-bg-accent p-2 rounded mb-2\">.color-bg-accent</div>\n    <div class=\"color-bg-accent-emphasis color-fg-on-emphasis p-2 rounded mb-4\">.color-bg-accent-emphasis</div>\n\n    <div class=\"color-bg-success p-2 rounded mb-2\">.color-bg-success</div>\n    <div class=\"color-bg-success-emphasis color-fg-on-emphasis p-2 rounded mb-4\">.color-bg-success-emphasis</div>\n\n    <div class=\"color-bg-attention p-2 rounded mb-2\">.color-bg-attention</div>\n    <div class=\"color-bg-attention-emphasis color-fg-on-emphasis p-2 rounded mb-4\">.color-bg-attention-emphasis</div>\n\n    <div class=\"color-bg-severe p-2 rounded mb-2\">.color-bg-severe</div>\n    <div class=\"color-bg-severe-emphasis color-fg-on-emphasis p-2 rounded mb-4\">.color-bg-severe-emphasis</div>\n\n    <div class=\"color-bg-danger p-2 rounded mb-2\">.color-bg-danger</div>\n    <div class=\"color-bg-danger-emphasis color-fg-on-emphasis p-2 rounded mb-4\">.color-bg-danger-emphasis</div>\n\n    <div class=\"color-bg-open p-2 rounded mb-2\">.color-bg-open</div>\n    <div class=\"color-bg-open-emphasis color-fg-on-emphasis p-2 rounded mb-4\">.color-bg-open-emphasis</div>\n\n    <div class=\"color-bg-closed p-2 rounded mb-2\">.color-bg-closed</div>\n    <div class=\"color-bg-closed-emphasis color-fg-on-emphasis p-2 rounded mb-4\">.color-bg-closed-emphasis</div>\n\n    <div class=\"color-bg-done p-2 rounded mb-2\">.color-bg-done</div>\n    <div class=\"color-bg-done-emphasis color-fg-on-emphasis p-2 rounded mb-4\">.color-bg-done-emphasis</div>\n\n    <div class=\"color-bg-sponsors p-2 rounded mb-2\">.color-bg-sponsors</div>\n    <div class=\"color-bg-sponsors-emphasis color-fg-on-emphasis p-2 rounded\">.color-bg-sponsors-emphasis</div>\n\n    <div class=\"color-bg-transparent p-2 rounded mb-2\">.color-bg-transparent</div>\n  </div>\n)\n\nexport const NewBackground = ({}) => (\n  <div style={{display: 'inline-flex', flexDirection: 'column'}}>\n    <div class=\"bgColor-default p-2 rounded mb-2\">.bgColor-default</div>\n    <div class=\"bgColor-inset p-2 rounded mb-2\">.bgColor-inset</div>\n    <div class=\"bgColor-muted p-2 rounded mb-2\">.bgColor-muted</div>\n    <div class=\"bgColor-emphasis fgColor-onEmphasis p-2 rounded mb-4\">.bgColor-emphasis</div>\n\n    <div class=\"bgColor-accent-muted p-2 rounded mb-2\">.bgColor-accent-muted</div>\n    <div class=\"bgColor-accent-emphasis fgColor-onEmphasis p-2 rounded mb-4\">.bgColor-accent-emphasis</div>\n\n    <div class=\"bgColor-success-muted p-2 rounded mb-2\">.bgColor-success-muted</div>\n    <div class=\"bgColor-success-emphasis fgColor-onEmphasis p-2 rounded mb-4\">.bgColor-success-emphasis</div>\n\n    <div class=\"bgColor-attention-muted p-2 rounded mb-2\">.bgColor-attention-muted</div>\n    <div class=\"bgColor-attention-emphasis fgColor-onEmphasis p-2 rounded mb-4\">.bgColor-attention-emphasis</div>\n\n    <div class=\"bgColor-severe-muted p-2 rounded mb-2\">.bgColor-severe-muted</div>\n    <div class=\"bgColor-severe-emphasis fgColor-onEmphasis p-2 rounded mb-4\">.bgColor-severe-emphasis</div>\n\n    <div class=\"bgColor-danger-muted p-2 rounded mb-2\">.bgColor-danger-muted</div>\n    <div class=\"bgColor-danger-emphasis fgColor-onEmphasis p-2 rounded mb-4\">.bgColor-danger-emphasis</div>\n\n    <div class=\"bgColor-open-muted p-2 rounded mb-2\">.bgColor-open-muted</div>\n    <div class=\"bgColor-open-emphasis fgColor-onEmphasis p-2 rounded mb-4\">.bgColor-open-emphasis</div>\n\n    <div class=\"bgColor-closed-muted p-2 rounded mb-2\">.bgColor-closed-muted</div>\n    <div class=\"bgColor-closed-emphasis fgColor-onEmphasis p-2 rounded mb-4\">.bgColor-closed-emphasis</div>\n\n    <div class=\"bgColor-done-muted p-2 rounded mb-2\">.bgColor-done-muted</div>\n    <div class=\"bgColor-done-emphasis fgColor-onEmphasis p-2 rounded mb-4\">.bgColor-done-emphasis</div>\n\n    <div class=\"bgColor-sponsors-muted p-2 rounded mb-2\">.bgColor-sponsors-muted</div>\n    <div class=\"bgColor-sponsors-emphasis fgColor-onEmphasis p-2 rounded\">.bgColor-sponsors-emphasis</div>\n\n    <div class=\"bgColor-transparent p-2 rounded mb-2\">.bgColor-transparent</div>\n  </div>\n)\n\nexport const Border = ({}) => (\n  <div style={{display: 'inline-flex', flexDirection: 'column'}}>\n    <div class=\"border color-border-default p-2 rounded mb-2\">.color-border-default</div>\n    <div class=\"border color-border-muted p-2 rounded mb-2\">.color-border-muted</div>\n    <div class=\"border color-border-subtle p-2 rounded mb-4\">.color-border-subtle</div>\n\n    <div class=\"border color-border-accent p-2 rounded mb-2\">.color-border-accent</div>\n    <div class=\"border color-border-accent-emphasis p-2 rounded mb-4\">.color-border-accent-emphasis</div>\n\n    <div class=\"border color-border-success p-2 rounded mb-2\">.color-border-success</div>\n    <div class=\"border color-border-success-emphasis p-2 rounded mb-4\">.color-border-success-emphasis</div>\n\n    <div class=\"border color-border-attention p-2 rounded mb-2\">.color-border-attention</div>\n    <div class=\"border color-border-attention-emphasis p-2 rounded mb-4\">.color-border-attention-emphasis</div>\n\n    <div class=\"border color-border-severe p-2 rounded mb-2\">.color-border-severe</div>\n    <div class=\"border color-border-severe-emphasis p-2 rounded mb-4\">.color-border-severe-emphasis</div>\n\n    <div class=\"border color-border-danger p-2 rounded mb-2\">.color-border-danger</div>\n    <div class=\"border color-border-danger-emphasis p-2 rounded mb-4\">.color-border-danger-emphasis</div>\n\n    <div class=\"border color-border-open p-2 rounded mb-2\">.color-border-open</div>\n    <div class=\"border color-border-open-emphasis p-2 rounded mb-4\">.color-border-open-emphasis</div>\n\n    <div class=\"border color-border-closed p-2 rounded mb-2\">.color-border-closed</div>\n    <div class=\"border color-border-closed-emphasis p-2 rounded mb-4\">.color-border-closed-emphasis</div>\n\n    <div class=\"border color-border-done p-2 rounded mb-2\">.color-border-done</div>\n    <div class=\"border color-border-done-emphasis p-2 rounded mb-4\">.color-border-done-emphasis</div>\n\n    <div class=\"border color-border-sponsors p-2 rounded mb-2\">.color-border-sponsors</div>\n    <div class=\"border color-border-sponsors-emphasis p-2 rounded\">.color-border-sponsors-emphasis</div>\n  </div>\n)\n\nexport const NewBorder = ({}) => (\n  <div style={{display: 'inline-flex', flexDirection: 'column'}}>\n    <div class=\"border borderColor-default p-2 rounded mb-2\">.borderColor-default</div>\n    <div class=\"border borderColor-muted p-2 rounded mb-2\">.borderColor-muted</div>\n\n    <div class=\"border borderColor-accent-muted p-2 rounded mb-2\">.borderColor-accent-muted</div>\n    <div class=\"border borderColor-accent-emphasis p-2 rounded mb-4\">.borderColor-accent-emphasis</div>\n\n    <div class=\"border borderColor-success-muted p-2 rounded mb-2\">.borderColor-success-muted</div>\n    <div class=\"border borderColor-success-emphasis p-2 rounded mb-4\">.borderColor-success-emphasis</div>\n\n    <div class=\"border borderColor-attention-muted p-2 rounded mb-2\">.borderColor-attention-muted</div>\n    <div class=\"border borderColor-attention-emphasis p-2 rounded mb-4\">.borderColor-attention-emphasis</div>\n\n    <div class=\"border borderColor-severe-muted p-2 rounded mb-2\">.borderColor-severe-muted</div>\n    <div class=\"border borderColor-severe-emphasis p-2 rounded mb-4\">.borderColor-severe-emphasis</div>\n\n    <div class=\"border borderColor-danger-muted p-2 rounded mb-2\">.borderColor-danger-muted</div>\n    <div class=\"border borderColor-danger-emphasis p-2 rounded mb-4\">.borderColor-danger-emphasis</div>\n\n    <div class=\"border borderColor-open-muted p-2 rounded mb-2\">.borderColor-open-muted</div>\n    <div class=\"border borderColor-open-emphasis p-2 rounded mb-4\">.borderColor-open-emphasis</div>\n\n    <div class=\"border borderColor-closed-muted p-2 rounded mb-2\">.borderColor-closed-muted</div>\n    <div class=\"border borderColor-closed-emphasis p-2 rounded mb-4\">.borderColor-closed-emphasis</div>\n\n    <div class=\"border borderColor-done-muted p-2 rounded mb-2\">.borderColor-done-muted</div>\n    <div class=\"border borderColor-done-emphasis p-2 rounded mb-4\">.borderColor-done-emphasis</div>\n\n    <div class=\"border borderColor-sponsors-muted p-2 rounded mb-2\">.borderColor-sponsors-muted</div>\n    <div class=\"border borderColor-sponsors-emphasis p-2 rounded\">.borderColor-sponsors-emphasis</div>\n  </div>\n)\n"
  },
  {
    "path": "docs/stories/utilities/Details.stories.jsx",
    "content": "export default {\n  title: 'Utilities/Details'\n}\n\nexport const Overlay = ({}) => (\n  <details class=\"details-overlay\">\n    <summary class=\"btn\">More</summary>\n    <div class=\"border p-3 mt-2\">Hidden text</div>\n  </details>\n)\n\nexport const OverlayDark = ({}) => (\n  <details class=\"details-overlay details-overlay-dark\">\n    <summary class=\"btn\">More</summary>\n    <div class=\"position-relative color-bg-default rounded p-3 mt-2\" style={{zIndex: '112'}}>\n      Hidden text\n    </div>\n  </details>\n)\n\nexport const Caret = ({}) => (\n  <details class=\"details-reset\">\n    <summary class=\"btn\">More <span class=\"dropdown-caret\"></span></summary>\n    <div class=\"border p-3 mt-2\">Hidden text</div>\n  </details>\n)\n\nexport const Summary = ({}) => (\n  <div>\n    <details>\n      <summary class=\"btn btn-primary\">More</summary>\n      <div class=\"border p-3 mt-2\">Hidden text</div>\n    </details>\n\n    <details class=\"details-reset mt-3\">\n      <summary class=\"btn-link\">More <span class=\"dropdown-caret\"></span></summary>\n      <div class=\"border p-3 mt-2\">Hidden text</div>\n    </details>\n  </div>\n)\n"
  },
  {
    "path": "docs/stories/utilities/Flexbox.stories.jsx",
    "content": "export default {\n  title: 'Utilities/Flexbox'\n}\n\nexport const Flex = ({}) => (\n  <div class=\"border d-flex\">\n    <div class=\"p-5 border color-bg-subtle\">flex item 1</div>\n    <div class=\"p-5 border color-bg-subtle\">flex item 2</div>\n    <div class=\"p-5 border color-bg-subtle\">flex item 3</div>\n  </div>\n)\n\nexport const InlineFlex = ({}) => (\n  <div class=\"border d-inline-flex\">\n    <div class=\"p-5 border color-bg-subtle\">flex item 1</div>\n    <div class=\"p-5 border color-bg-subtle\">flex item 2</div>\n    <div class=\"p-5 border color-bg-subtle\">flex item 3</div>\n  </div>\n)\n\nexport const Column = ({}) => (\n  <div class=\"border d-flex flex-column\">\n    <div class=\"p-5 border color-bg-subtle\">Item 1</div>\n    <div class=\"p-5 border color-bg-subtle\">Item 2</div>\n    <div class=\"p-5 border color-bg-subtle\">Item 3</div>\n  </div>\n)\n\nexport const ColumnReverse = ({}) => (\n  <div class=\"border d-flex flex-column flex-sm-column-reverse\">\n    <div class=\"p-5 border color-bg-subtle\">Item 1</div>\n    <div class=\"p-5 border color-bg-subtle\">Item 2</div>\n    <div class=\"p-5 border color-bg-subtle\">Item 3</div>\n  </div>\n)\n\nexport const Row = ({}) => (\n  <div class=\"border d-flex flex-column flex-sm-row\">\n    <div class=\"p-5 border color-bg-subtle\">Item 1</div>\n    <div class=\"p-5 border color-bg-subtle\">Item 2</div>\n    <div class=\"p-5 border color-bg-subtle\">Item 3</div>\n  </div>\n)\n\nexport const RowReverse = ({}) => (\n  <div class=\"border d-flex flex-column flex-sm-row-reverse\">\n    <div class=\"p-5 border color-bg-subtle\">Item 1</div>\n    <div class=\"p-5 border color-bg-subtle\">Item 2</div>\n    <div class=\"p-5 border color-bg-subtle\">Item 3</div>\n  </div>\n)\n\nexport const Wrap = ({}) => (\n  <div class=\"border d-flex flex-wrap\">\n    <div class=\"p-5 px-6 border color-bg-subtle\">1</div>\n    <div class=\"p-5 px-6 border color-bg-subtle\">2</div>\n    <div class=\"p-5 px-6 border color-bg-subtle\">3</div>\n    <div class=\"p-5 px-6 border color-bg-subtle\">4</div>\n    <div class=\"p-5 px-6 border color-bg-subtle\">5</div>\n    <div class=\"p-5 px-6 border color-bg-subtle\">6</div>\n    <div class=\"p-5 px-6 border color-bg-subtle\">7</div>\n    <div class=\"p-5 px-6 border color-bg-subtle\">8</div>\n    <div class=\"p-5 px-6 border color-bg-subtle\">9</div>\n  </div>\n)\n\nexport const Nowrap = ({}) => (\n  <div class=\"border d-flex flex-nowrap\">\n    <div class=\"p-5 px-6 border color-bg-subtle\">1</div>\n    <div class=\"p-5 px-6 border color-bg-subtle\">2</div>\n    <div class=\"p-5 px-6 border color-bg-subtle\">3</div>\n    <div class=\"p-5 px-6 border color-bg-subtle\">4</div>\n    <div class=\"p-5 px-6 border color-bg-subtle\">5</div>\n    <div class=\"p-5 px-6 border color-bg-subtle\">6</div>\n    <div class=\"p-5 px-6 border color-bg-subtle\">7</div>\n    <div class=\"p-5 px-6 border color-bg-subtle\">8</div>\n    <div class=\"p-5 px-6 border color-bg-subtle\">9</div>\n  </div>\n)\n\nexport const WrapReverse = ({}) => (\n  <div class=\"border d-flex flex-wrap-reverse\">\n    <div class=\"p-5 px-6 border color-bg-subtle\">1</div>\n    <div class=\"p-5 px-6 border color-bg-subtle\">2</div>\n    <div class=\"p-5 px-6 border color-bg-subtle\">3</div>\n    <div class=\"p-5 px-6 border color-bg-subtle\">4</div>\n    <div class=\"p-5 px-6 border color-bg-subtle\">5</div>\n    <div class=\"p-5 px-6 border color-bg-subtle\">6</div>\n    <div class=\"p-5 px-6 border color-bg-subtle\">7</div>\n    <div class=\"p-5 px-6 border color-bg-subtle\">8</div>\n    <div class=\"p-5 px-6 border color-bg-subtle\">9</div>\n  </div>\n)\n\nexport const JustifyStart = ({}) => (\n  <div class=\"border d-flex flex-justify-start\">\n    <div class=\"p-5 border color-bg-subtle\">1</div>\n    <div class=\"p-5 border color-bg-subtle\">2</div>\n    <div class=\"p-5 border color-bg-subtle\">3</div>\n  </div>\n)\n\nexport const JustifyEnd = ({}) => (\n  <div class=\"border d-flex flex-justify-end\">\n    <div class=\"p-5 border color-bg-subtle\">1</div>\n    <div class=\"p-5 border color-bg-subtle\">2</div>\n    <div class=\"p-5 border color-bg-subtle\">3</div>\n  </div>\n)\n\nexport const JustifyCenter = ({}) => (\n  <div class=\"border d-flex flex-justify-center\">\n    <div class=\"p-5 border color-bg-subtle\">1</div>\n    <div class=\"p-5 border color-bg-subtle\">2</div>\n    <div class=\"p-5 border color-bg-subtle\">3</div>\n  </div>\n)\n\nexport const JustifyBetween = ({}) => (\n  <div class=\"border d-flex flex-justify-between\">\n    <div class=\"p-5 border color-bg-subtle\">1</div>\n    <div class=\"p-5 border color-bg-subtle\">2</div>\n    <div class=\"p-5 border color-bg-subtle\">3</div>\n  </div>\n)\n\nexport const JustifyAround = ({}) => (\n  <div class=\"border d-flex flex-justify-around\">\n    <div class=\"p-5 border color-bg-subtle\">1</div>\n    <div class=\"p-5 border color-bg-subtle\">2</div>\n    <div class=\"p-5 border color-bg-subtle\">3</div>\n  </div>\n)\n\nexport const AlignItemsStart = ({}) => (\n  <div class=\"border d-flex flex-items-start\" style={{minHeight: '150px'}}>\n    <div class=\"p-5 border color-bg-subtle\">1</div>\n    <div class=\"p-5 border color-bg-subtle\">2</div>\n    <div class=\"p-5 border color-bg-subtle\">3</div>\n    <div class=\"p-5 border color-bg-subtle\">4</div>\n  </div>\n)\n\nexport const AlignItemsEnd = ({}) => (\n  <div class=\"border d-flex flex-items-end\" style={{minHeight: '150px'}}>\n    <div class=\"p-5 border color-bg-subtle\">1</div>\n    <div class=\"p-5 border color-bg-subtle\">2</div>\n    <div class=\"p-5 border color-bg-subtle\">3</div>\n    <div class=\"p-5 border color-bg-subtle\">4</div>\n  </div>\n)\n\nexport const AlignItemsCenter = ({}) => (\n  <div class=\"border d-flex flex-items-center\" style={{minHeight: '150px'}}>\n    <div class=\"p-5 border color-bg-subtle\">1</div>\n    <div class=\"p-5 border color-bg-subtle\">2</div>\n    <div class=\"p-5 border color-bg-subtle\">3</div>\n    <div class=\"p-5 border color-bg-subtle\">4</div>\n  </div>\n)\n\nexport const AlignItemsBaseline = ({}) => (\n  <div class=\"border d-flex flex-items-baseline\" style={{minHeight: '150px'}}>\n    <div class=\"p-5 border color-bg-subtle f1\">1</div>\n    <div class=\"p-5 border color-bg-subtle\">2</div>\n    <div class=\"p-5 border color-bg-subtle f3\">3</div>\n    <div class=\"p-5 border color-bg-subtle\">4</div>\n  </div>\n)\n\nexport const AlignItemsStretch = ({}) => (\n  <div class=\"border d-flex flex-items-stretch\" style={{minHeight: '150px'}}>\n    <div class=\"p-5 border color-bg-subtle\">1</div>\n    <div class=\"p-5 border color-bg-subtle\">2</div>\n    <div class=\"p-5 border color-bg-subtle\">3</div>\n    <div class=\"p-5 border color-bg-subtle\">4</div>\n  </div>\n)\n\nexport const AlignContentStart = ({}) => (\n  <div class=\"border d-flex flex-wrap flex-content-start\" style={{minHeight: '300px'}}>\n    <div class=\"p-5 border color-bg-subtle\">1</div>\n    <div class=\"p-5 border color-bg-subtle\">2</div>\n    <div class=\"p-5 border color-bg-subtle\">3</div>\n    <div class=\"p-5 border color-bg-subtle\">4</div>\n    <div class=\"p-5 border color-bg-subtle\">5</div>\n    <div class=\"p-5 border color-bg-subtle\">6</div>\n    <div class=\"p-5 border color-bg-subtle\">7</div>\n    <div class=\"p-5 border color-bg-subtle\">8</div>\n    <div class=\"p-5 border color-bg-subtle\">9</div>\n    <div class=\"p-5 border color-bg-subtle\">10</div>\n    <div class=\"p-5 border color-bg-subtle\">11</div>\n    <div class=\"p-5 border color-bg-subtle\">12</div>\n  </div>\n)\n\nexport const AlignContentEnd = ({}) => (\n  <div class=\"border d-flex flex-wrap flex-content-end\" style={{minHeight: '300px'}}>\n    <div class=\"p-5 border color-bg-subtle\">1</div>\n    <div class=\"p-5 border color-bg-subtle\">2</div>\n    <div class=\"p-5 border color-bg-subtle\">3</div>\n    <div class=\"p-5 border color-bg-subtle\">4</div>\n    <div class=\"p-5 border color-bg-subtle\">5</div>\n    <div class=\"p-5 border color-bg-subtle\">6</div>\n    <div class=\"p-5 border color-bg-subtle\">7</div>\n    <div class=\"p-5 border color-bg-subtle\">8</div>\n    <div class=\"p-5 border color-bg-subtle\">9</div>\n    <div class=\"p-5 border color-bg-subtle\">10</div>\n    <div class=\"p-5 border color-bg-subtle\">11</div>\n    <div class=\"p-5 border color-bg-subtle\">12</div>\n  </div>\n)\n\nexport const AlignContentCenter = ({}) => (\n  <div class=\"border d-flex flex-wrap flex-content-center\" style={{minHeight: '300px'}}>\n    <div class=\"p-5 border color-bg-subtle\">1</div>\n    <div class=\"p-5 border color-bg-subtle\">2</div>\n    <div class=\"p-5 border color-bg-subtle\">3</div>\n    <div class=\"p-5 border color-bg-subtle\">4</div>\n    <div class=\"p-5 border color-bg-subtle\">5</div>\n    <div class=\"p-5 border color-bg-subtle\">6</div>\n    <div class=\"p-5 border color-bg-subtle\">7</div>\n    <div class=\"p-5 border color-bg-subtle\">8</div>\n    <div class=\"p-5 border color-bg-subtle\">9</div>\n    <div class=\"p-5 border color-bg-subtle\">10</div>\n    <div class=\"p-5 border color-bg-subtle\">11</div>\n    <div class=\"p-5 border color-bg-subtle\">12</div>\n  </div>\n)\n\nexport const AlignContentBetween = ({}) => (\n  <div class=\"border d-flex flex-wrap flex-content-between\" style={{minHeight: '300px'}}>\n    <div class=\"p-5 border color-bg-subtle\">1</div>\n    <div class=\"p-5 border color-bg-subtle\">2</div>\n    <div class=\"p-5 border color-bg-subtle\">3</div>\n    <div class=\"p-5 border color-bg-subtle\">4</div>\n    <div class=\"p-5 border color-bg-subtle\">5</div>\n    <div class=\"p-5 border color-bg-subtle\">6</div>\n    <div class=\"p-5 border color-bg-subtle\">7</div>\n    <div class=\"p-5 border color-bg-subtle\">8</div>\n    <div class=\"p-5 border color-bg-subtle\">9</div>\n    <div class=\"p-5 border color-bg-subtle\">10</div>\n    <div class=\"p-5 border color-bg-subtle\">11</div>\n    <div class=\"p-5 border color-bg-subtle\">12</div>\n  </div>\n)\n\nexport const AlignContentAround = ({}) => (\n  <div class=\"border d-flex flex-wrap flex-content-around\" style={{minHeight: '300px'}}>\n    <div class=\"p-5 border color-bg-subtle\">1</div>\n    <div class=\"p-5 border color-bg-subtle\">2</div>\n    <div class=\"p-5 border color-bg-subtle\">3</div>\n    <div class=\"p-5 border color-bg-subtle\">4</div>\n    <div class=\"p-5 border color-bg-subtle\">5</div>\n    <div class=\"p-5 border color-bg-subtle\">6</div>\n    <div class=\"p-5 border color-bg-subtle\">7</div>\n    <div class=\"p-5 border color-bg-subtle\">8</div>\n    <div class=\"p-5 border color-bg-subtle\">9</div>\n    <div class=\"p-5 border color-bg-subtle\">10</div>\n    <div class=\"p-5 border color-bg-subtle\">11</div>\n    <div class=\"p-5 border color-bg-subtle\">12</div>\n  </div>\n)\n\nexport const AlignContentStretch = ({}) => (\n  <div class=\"border d-flex flex-wrap flex-content-stretch\" style={{minHeight: '300px'}}>\n    <div class=\"p-5 border color-bg-subtle\">1</div>\n    <div class=\"p-5 border color-bg-subtle\">2</div>\n    <div class=\"p-5 border color-bg-subtle\">3</div>\n    <div class=\"p-5 border color-bg-subtle\">4</div>\n    <div class=\"p-5 border color-bg-subtle\">5</div>\n    <div class=\"p-5 border color-bg-subtle\">6</div>\n    <div class=\"p-5 border color-bg-subtle\">7</div>\n    <div class=\"p-5 border color-bg-subtle\">8</div>\n    <div class=\"p-5 border color-bg-subtle\">9</div>\n    <div class=\"p-5 border color-bg-subtle\">10</div>\n    <div class=\"p-5 border color-bg-subtle\">11</div>\n    <div class=\"p-5 border color-bg-subtle\">12</div>\n  </div>\n)\n\nexport const Flex1 = ({}) => (\n  <div class=\"border d-flex\">\n    <div class=\"p-5 border color-bg-subtle\">flex item</div>\n    <div class=\"p-5 border color-bg-subtle flex-1\">.flex-1</div>\n    <div class=\"p-5 border color-bg-subtle\">flex item</div>\n  </div>\n)\n\nexport const Flex1All = ({}) => (\n  <div class=\"border d-flex\">\n    <div class=\"p-5 border color-bg-subtle flex-1\">.flex-1</div>\n    <div class=\"p-5 border color-bg-subtle flex-1\">.flex-1</div>\n    <div class=\"p-5 border color-bg-subtle flex-1\">.flex-1</div>\n  </div>\n)\n\nexport const FlexAuto = ({}) => (\n  <div class=\"border d-flex\">\n    <div class=\"p-5 border color-bg-subtle flex-1\">.flex-1</div>\n    <div class=\"p-5 border color-bg-subtle flex-auto\">.flex-auto with a bit more text</div>\n    <div class=\"p-5 border color-bg-subtle flex-1\">.flex-1</div>\n  </div>\n)\n\nexport const FlexGrow0 = ({}) => (\n  <div class=\"border d-flex\">\n    <div class=\"p-5 border color-bg-subtle\">flex item</div>\n    <div class=\"p-5 border color-bg-subtle flex-auto flex-sm-grow-0\">.flex-auto .flex-sm-grow-0</div>\n    <div class=\"p-5 border color-bg-subtle\">flex item</div>\n  </div>\n)\n\nexport const FlexShrink0 = ({}) => (\n  <div class=\"p-2 border d-flex\" style={{maxWidth: '340px'}}>\n    <div class=\"p-5 border color-bg-subtle\">flex item</div>\n    <div class=\"p-5 border color-bg-subtle flex-shrink-0\">.flex-shrink-0</div>\n    <div class=\"p-5 border color-bg-subtle\">flex item</div>\n  </div>\n)\n\nexport const AlignSelfAuto = ({}) => (\n  <div class=\"border d-flex\" style={{minHeight: '150px'}}>\n    <div class=\"p-5 border color-bg-subtle flex-self-auto\">.flex-self-auto</div>\n    <div class=\"p-5 border color-bg-subtle\">&nbsp;</div>\n    <div class=\"p-5 border color-bg-subtle\">&nbsp;</div>\n  </div>\n)\n\nexport const AlignSelfStart = ({}) => (\n  <div class=\"border d-flex\" style={{minHeight: '150px'}}>\n    <div class=\"p-5 border color-bg-subtle flex-self-start\">.flex-self-start</div>\n    <div class=\"p-5 border color-bg-subtle\">&nbsp;</div>\n    <div class=\"p-5 border color-bg-subtle\">&nbsp;</div>\n  </div>\n)\n\nexport const AlignSelfEnd = ({}) => (\n  <div class=\"border d-flex\" style={{minHeight: '150px'}}>\n    <div class=\"p-5 border color-bg-subtle flex-self-end\">.flex-self-end</div>\n    <div class=\"p-5 border color-bg-subtle\">&nbsp;</div>\n    <div class=\"p-5 border color-bg-subtle\">&nbsp;</div>\n  </div>\n)\n\nexport const AlignSelfCenter = ({}) => (\n  <div class=\"border d-flex\" style={{minHeight: '150px'}}>\n    <div class=\"p-5 border color-bg-subtle flex-self-center\">.flex-self-center</div>\n    <div class=\"p-5 border color-bg-subtle\">&nbsp;</div>\n    <div class=\"p-5 border color-bg-subtle\">&nbsp;</div>\n  </div>\n)\n\nexport const AlignSelfBaseline = ({}) => (\n  <div class=\"border d-flex flex-items-end\" style={{minHeight: '150px'}}>\n    <div class=\"p-5 border color-bg-subtle flex-self-baseline f4\">.flex-self-baseline</div>\n    <div class=\"p-5 border color-bg-subtle f1\">item</div>\n    <div class=\"p-5 border color-bg-subtle f00\">item</div>\n  </div>\n)\n\nexport const AlignSelfStretch = ({}) => (\n  <div class=\"border d-flex flex-items-start\" style={{minHeight: '150px'}}>\n    <div class=\"p-5 border color-bg-subtle flex-self-stretch\">.flex-self-stretch</div>\n    <div class=\"p-5 border color-bg-subtle\">&nbsp;</div>\n    <div class=\"p-5 border color-bg-subtle\">&nbsp;</div>\n  </div>\n)\n\nexport const Order = ({}) => (\n  <div class=\"border d-flex\">\n    <div class=\"p-5 border color-bg-subtle flex-order-2\">1. .flex-order-2</div>\n    <div class=\"p-5 border color-bg-subtle\">2.</div>\n    <div class=\"p-5 border color-bg-subtle flex-order-1\">3. .flex-order-1</div>\n  </div>\n)\n\nexport const OrderNone = ({}) => (\n  <div class=\"border d-flex\">\n    <div class=\"p-5 border color-bg-subtle flex-order-1 flex-sm-order-none\">1. .flex-order-1 .flex-sm-order-none</div>\n    <div class=\"p-5 border color-bg-subtle\">2.</div>\n    <div class=\"p-5 border color-bg-subtle\">3.</div>\n  </div>\n)\n\nexport const Responsive = ({}) => (\n  <div class=\"border d-flex flex-items-start flex-sm-items-center flex-justify-start flex-lg-justify-between\" style={{minHeight: '150px'}}>\n    <div class=\"p-5 border color-bg-subtle flex-sm-self-stretch\">.flex-self-stretch</div>\n    <div class=\"p-5 border color-bg-subtle\">&nbsp;</div>\n    <div class=\"p-5 border color-bg-subtle\">&nbsp;</div>\n  </div>\n)\n\nexport const MediaObject = ({}) => (\n  <div class=\"border d-flex flex-items-center p-4\">\n    <div class=\"p-5 border color-bg-subtle\">image</div>\n    <p class=\"pl-4 m-0\"><b>Body</b> Bacon ipsum dolor sit amet chuck prosciutto landjaeger ham hock filet mignon shoulder hamburger pig venison.</p>\n  </div>\n)\n\nexport const MediaObjectResponsive = ({}) => (\n  <div class=\"border p-3 d-flex flex-column flex-sm-row flex-sm-items-center\">\n    <div class=\"pr-0 pr-sm-3 mb-3 mb-sm-0 d-flex flex-justify-center flex-sm-justify-start\">\n      <img style={{maxWidth: '100px', maxHeight: '100px'}} src=\"https://github.com/github.png\" />\n    </div>\n    <div class=\"d-flex text-center text-sm-left\">\n      <p><b>Body</b> Bacon ipsum dolor sit amet chuck prosciutto landjaeger ham hock filet mignon shoulder hamburger pig venison.</p>\n    </div>\n    <div class=\"ml-sm-3 d-flex flex-justify-center\">\n      <svg height=\"32\" class=\"octicon octicon-mark-github\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"32\" aria-hidden=\"true\"><path fill-rule=\"evenodd\" d=\"M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0 0 16 8c0-4.42-3.58-8-8-8z\"></path></svg>\n    </div>\n  </div>\n)\n\n"
  },
  {
    "path": "docs/stories/utilities/Grid.stories.jsx",
    "content": "export default {\n  title: 'Utilities/Grid'\n}\n\nexport const Flexbox = ({}) => (\n  <div class=\"d-flex flex-column flex-md-row flex-items-center flex-md-items-center\">\n    <div class=\"col-2 d-flex flex-items-center flex-items-center flex-md-items-start\">\n      <img class=\"width-full avatar mb-2 mb-md-0\" src=\"https://github.com/github.png\" alt=\"github\" />\n    </div>\n    <div class=\"col-12 col-md-10 d-flex flex-column flex-justify-center flex-items-center flex-md-items-start pl-md-4\">\n      <h1 class=\"text-normal lh-condensed\">GitHub</h1>\n      <p class=\"h4 color-fg-muted text-normal mb-2\">How people build software.</p>\n      <a class=\"color-fg-muted text-small\" href=\"#url\">https://github.com/about</a>\n    </div>\n  </div>\n)\n\nexport const Float = ({}) => (\n  <div class=\"container-lg clearfix\">\n    <div class=\"col-4 float-left border p-4\">\n      My column\n    </div>\n    <div class=\"col-4 float-left border p-4\">\n      Looks better\n    </div>\n    <div class=\"col-4 float-left border p-4\">\n      Than your column\n    </div>\n  </div>\n)\n\nexport const FloatReversed = ({}) => (\n  <div class=\"container-lg clearfix\">\n    <div class=\"col-4 float-right border p-4\">\n      One\n    </div>\n    <div class=\"col-4 float-right border p-4\">\n      Two\n    </div>\n    <div class=\"col-4 float-right border p-4\">\n      Three\n    </div>\n  </div>\n)\n\nexport const Nested = ({}) => (\n  <div class=\"clearfix\">\n    <div class=\"col-6 float-left px-1\">\n      <div class=\"border p-1\">Unnested</div>\n    </div>\n    <div class=\"col-6 float-left\">\n      <div class=\"clearfix\">\n        <div class=\"col-6 float-left px-1\">\n          <div class=\"border p-1\">1 x Nested</div>\n        </div>\n        <div class=\"col-6 float-left\">\n          <div class=\"col-6 float-left px-1\">\n            <div class=\"border p-1\">2 x Nested</div>\n          </div>\n          <div class=\"col-6 float-left px-1\">\n            <div class=\"border p-1\">2 x Nested</div>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n)\n\nexport const Centered = ({}) => (\n  <div class=\"border\">\n    <div class=\"col-6 p-2 mx-auto border\">\n      This column is the center of my world.\n    </div>\n  </div>\n)\n\nexport const ColumnWidth = ({}) => (\n  <div>\n    <div class=\"col-4 float-right p-2 border color-fg-danger\">\n      <svg class=\"octicon octicon-heart\" viewBox=\"0 0 12 16\" version=\"1.1\" width=\"12\" height=\"16\" aria-hidden=\"true\"><path fill-rule=\"evenodd\" d=\"M9 2c-.97 0-1.69.42-2.2 1-.51.58-.78.92-.8 1-.02-.08-.28-.42-.8-1-.52-.58-1.17-1-2.2-1-1.632.086-2.954 1.333-3 3 0 .52.09 1.52.67 2.67C1.25 8.82 3.01 10.61 6 13c2.98-2.39 4.77-4.17 5.34-5.33C11.91 6.51 12 5.5 12 5c-.047-1.69-1.342-2.913-3-3z\"></path></svg>\n      <span>Don't go bacon my heart.</span>\n    </div>\n    <p>T-bone drumstick alcatra ribeye. Strip steak chuck andouille tenderloin bacon tri-tip ball tip beef capicola rump. Meatloaf bresaola drumstick ball tip salami. Drumstick ham bacon alcatra pig porchetta, spare ribs leberkas pork belly.</p>\n  </div>\n)\n\nexport const ColumnOffset = ({}) => (\n  <div class=\"clearfix\">\n    <div class=\"offset-1 col-3 border p-3\">.offset-1</div>\n    <div class=\"offset-2 col-3 border p-3\">.offset-2</div>\n  </div>\n)\n\nexport const Gutter = ({}) => (\n  <div class=\"clearfix gutter-md-spacious border\">\n    <div class=\"col-3 float-left\">\n      <div class=\"border p-3\">.col-md-3</div>\n    </div>\n    <div class=\"col-3 float-left\">\n      <div class=\"border p-3\">.col-md-3</div>\n    </div>\n    <div class=\"col-3 float-left\">\n      <div class=\"border p-3\">.col-md-3</div>\n    </div>\n    <div class=\"col-3 float-left\">\n      <div class=\"border p-3\">.col-md-3</div>\n    </div>\n  </div>\n)\n\nexport const GutterWithPadding = ({}) => (\n  <div>\n    <div class=\"container-lg clearfix\">\n      <div class=\"col-3 float-left pr-2 mb-3\">\n        <div class=\"border color-bg-attention\">.pr-2</div>\n      </div>\n      <div class=\"col-3 float-left px-2 mb-3\">\n        <div class=\"border color-bg-attention\">.px-2</div>\n      </div>\n      <div class=\"col-3 float-left px-2 mb-3\">\n        <div class=\"border color-bg-attention\">.px-2</div>\n      </div>\n      <div class=\"col-3 float-left pl-2 mb-3\">\n        <div class=\"border color-bg-attention\">.pl-2</div>\n      </div>\n    </div>\n    <div class=\"container-lg clearfix\">\n      <div class=\"col-3 float-left pr-2\">\n        <div class=\"border color-bg-attention\">.pr-2</div>\n      </div>\n      <div class=\"col-9 float-left pl-2\">\n        <div class=\"border color-bg-attention\">.pl-2</div>\n      </div>\n    </div>\n  </div>\n)\n\nexport const InlineBlock = ({}) => (\n  <div>\n    <div class=\"col-4 d-inline-block border\">\n      .col-4 .d-inline-block\n    </div>\n    <div class=\"col-4 d-inline-block border\">\n      .col-4 .d-inline-block\n    </div>\n    <div class=\"col-4 d-inline-block border\">\n      .col-4 .d-inline-block\n    </div>\n  </div>\n)\n\nexport const InlineBlockWithColumnWidth = ({}) => (\n  <ul class=\"list-style-none\">\n    <li class=\"d-inline-block col-2 p-2\">\n      <img class=\"width-full avatar\" src=\"https://github.com/broccolini.png\" alt=\"broccolini\" />\n    </li>\n    <li class=\"d-inline-block col-2 p-2\">\n      <img class=\"width-full avatar\" src=\"https://github.com/jonrohan.png\" alt=\"jonrohan\" />\n    </li>\n    <li class=\"d-inline-block col-2 p-2\">\n      <img class=\"width-full avatar\" src=\"https://github.com/muan.png\" alt=\"muan\" />\n    </li>\n    <li class=\"d-inline-block col-2 p-2\">\n      <img class=\"width-full avatar\" src=\"https://github.com/pmarsceill.png\" alt=\"pmarsceill\" />\n    </li>\n    <li class=\"d-inline-block col-2 p-2\">\n      <img class=\"width-full avatar\" src=\"https://github.com/sophshep.png\" alt=\"sophshep\" />\n    </li>\n    <li class=\"d-inline-block col-2 p-2\">\n      <img class=\"width-full avatar\" src=\"https://github.com/cmwinters.png\" alt=\"cmwinters\" />\n    </li>\n    <li class=\"d-inline-block col-2 p-2\">\n      <img class=\"width-full avatar\" src=\"https://github.com/jeejkang.png\" alt=\"jeejkang\" />\n    </li>\n    <li class=\"d-inline-block col-2 p-2\"><img class=\"width-full avatar\" src=\"https://github.com/mdo.png\" alt=\"mdo\" /></li>\n  </ul>\n)\n\nexport const Table = ({}) => (\n  <div class=\"d-table col-12\">\n    <div class=\"col-4 d-table-cell border p-2\">\n      Bacon ipsum dolor amet leberkas pork pig kielbasa shankle ribeye meatball, salami alcatra venison.\n    </div>\n    <div class=\"col-4 d-table-cell border p-2\">\n      Pork chop cupim cow turkey frankfurter, landjaeger fatback hamburger meatball salami spare ribs. Rump tenderloin\n      salami, hamburger frankfurter landjaeger andouille.\n    </div>\n    <div class=\"col-4 d-table-cell border p-2\">\n      Brisket tongue frankfurter cupim strip steak rump picanha pancetta pork pig kevin pastrami biltong. Shankle venison\n      meatball swine sausage ground round. Tail pork loin ribeye kielbasa short ribs pork chop.\n    </div>\n  </div>\n)\n\nexport const TableCell = ({}) => (\n  <div class=\"d-table col-12\">\n    <div class=\"col-4 d-table-cell border\">\n      .col-4 .d-table-cell\n    </div>\n    <div class=\"col-4 d-table-cell border\">\n      .col-4 .d-table-cell\n    </div>\n    <div class=\"col-2 d-table-cell border\">\n      .col-2 .d-table-cell\n    </div>\n  </div>\n)\n\nexport const Responsive = ({}) => (\n  <div class=\"container-lg clearfix\">\n    <div class=\"col-sm-6 col-md-3 col-lg-2 float-left p-2 border\">\n      .col-sm-6 .col-md-3 .col-lg-2\n    </div>\n    <div class=\"col-sm-6 col-md-3 col-lg-2 float-left p-2 border\">\n      .col-sm-6 .col-md-3 .col-lg-2\n    </div>\n    <div class=\"col-sm-6 col-md-3 col-lg-2 float-left p-2 border\">\n      .col-sm-6 .col-md-3 .col-lg-2\n    </div>\n    <div class=\"col-sm-6 col-md-3 col-lg-2 float-left p-2 border\">\n      .col-sm-6 .col-md-3 .col-lg-2\n    </div>\n    <div class=\"col-sm-6 col-md-3 col-lg-2 float-left p-2 border\">\n      .col-sm-6 .col-md-3 .col-lg-2\n    </div>\n    <div class=\"col-sm-6 col-md-3 col-lg-2 float-left p-2 border\">\n      .col-sm-6 .col-md-3 .col-lg-2\n    </div>\n  </div>\n)\n\nexport const ResponsiveSmall = ({}) => (\n  <div class=\"container-lg clearfix\">\n    <div class=\"col-sm-6 float-left p-2 border\">\n      .col-sm-6\n    </div>\n    <div class=\"col-sm-6 float-left p-2 border\">\n      .col-sm-6\n    </div>\n    <div class=\"col-sm-6 float-left p-2 border\">\n      .col-sm-6\n    </div>\n    <div class=\"col-sm-6 float-left p-2 border\">\n      .col-sm-6\n    </div>\n    <div class=\"col-sm-6 float-left p-2 border\">\n      .col-sm-6\n    </div>\n    <div class=\"col-sm-6 float-left p-2 border\">\n      .col-sm-6\n    </div>\n  </div>\n)\n\nexport const ResponsiveMedium = ({}) => (\n  <div class=\"container-lg clearfix\">\n    <div class=\"col-md-3 float-left p-2 border\">\n      .col-md-3\n    </div>\n    <div class=\"col-md-3 float-left p-2 border\">\n      .col-md-3\n    </div>\n    <div class=\"col-md-3 float-left p-2 border\">\n      .col-md-3\n    </div>\n    <div class=\"col-md-3 float-left p-2 border\">\n      .col-md-3\n    </div>\n    <div class=\"col-md-3 float-left p-2 border\">\n      .col-md-3\n    </div>\n    <div class=\"col-md-3 float-left p-2 border\">\n      .col-md-3\n    </div>\n  </div>\n)\n\nexport const ResponsiveLarge = ({}) => (\n  <div class=\"container-lg clearfix\">\n    <div class=\"col-lg-2 float-left p-2 border\">\n      .col-lg-2\n    </div>\n    <div class=\"col-lg-2 float-left p-2 border\">\n      .col-lg-2\n    </div>\n    <div class=\"col-lg-2 float-left p-2 border\">\n      .col-lg-2\n    </div>\n    <div class=\"col-lg-2 float-left p-2 border\">\n      .col-lg-2\n    </div>\n    <div class=\"col-lg-2 float-left p-2 border\">\n      .col-lg-2\n    </div>\n    <div class=\"col-lg-2 float-left p-2 border\">\n      .col-lg-2\n    </div>\n  </div>\n)\n\nexport const Container = ({}) => (\n  <div>\n    <div class=\"container-sm border\">\n      .container-sm, max-width 544px\n    </div>\n\n    <div class=\"container-md border\">\n      .container-md, max-width 768px\n    </div>\n\n    <div class=\"container-lg border\">\n      .container-lg, max-width 1012px\n    </div>\n\n    <div class=\"container-xl border\">\n      .container-xl, max-width 1280px\n    </div>\n  </div>\n)\n"
  },
  {
    "path": "docs/stories/utilities/Layout.stories.jsx",
    "content": "export default {\n  title: 'Utilities/Layout'\n}\n\nexport const Display = ({}) => (\n  <div class=\"d-inline border\">\n    .d-inline\n    <div class=\"d-inline-block border\">\n      .d-inline-block\n    </div>\n    <span class=\"d-block border\">.d-block</span>\n    <div class=\"d-table border\">\n      <div class=\"d-table-cell border\">\n        .d-table-cell\n      </div>\n    </div>\n    <div class=\"d-table-cell border\">\n      .d-table-cell\n    </div>\n    <div class=\"d-none\">\n      .d-none\n    </div>\n  </div>\n)\n\nexport const Table = ({}) => (\n  <div class=\"d-table table-fixed width-full\">\n    <div class=\"d-table-cell border\">\n      .d-table-cell\n    </div>\n    <div class=\"d-table-cell col-10 border\">\n      d-table-cell .col-10\n    </div>\n  </div>\n)\n\nexport const Responsive = ({}) => (\n  <div>\n    <h5 class=\"d-md-inline-block\">.d-md-inline-block</h5>\n    <ul class=\"d-md-inline-block border\">\n      <li class=\"d-inline border\">.d-inline</li>\n      <li class=\"d-inline border\">.d-inline</li>\n    </ul>\n  </div>\n)\n\nexport const ResponsiveHide = ({}) => (\n  <div>\n    <h3>Potato update</h3>\n    <span class=\"hide-sm hide-md\">Opened by <a href=\"#url\">broccolini</a></span>\n    <span class=\"d-md-none\">Updated</span> 3 hours ago\n  </div>\n)\n\nexport const Floats = ({}) => (\n  <div class=\"clearfix border\">\n    <div class=\"float-left border\">\n      .float-left\n    </div>\n    <div class=\"float-right border\">\n      .float-right\n    </div>\n  </div>\n)\n\nexport const FloatsResponsive = ({}) => (\n  <div class=\"clearfix border\">\n    <div class=\"float-md-left border\">\n      .float-md-left\n    </div>\n    <div class=\"float-md-right border\">\n      .float-md-right\n    </div>\n  </div>\n)\n\nexport const Align = ({}) => (\n  <div class=\"d-table border\">\n    <div class=\"d-table-cell\"><h1>Potatoes</h1></div>\n    <div class=\"d-table-cell v-align-baseline\">.v-align-baseline</div>\n    <div class=\"d-table-cell v-align-top\">.v-align-top</div>\n    <div class=\"d-table-cell v-align-middle\">.v-align-middle</div>\n    <div class=\"d-table-cell v-align-bottom\">.v-align-bottom</div>\n  </div>\n)\n\nexport const AlignText = ({}) => (\n  <div class=\"border\">\n    <h1 class=\"mr-1\">Potatoes\n      <span class=\"f4 v-align-text-top mr-1\">.v-align-text-top</span>\n      <span class=\"f4 v-align-text-bottom mr-1\">.v-align-text-bottom</span>\n    </h1>\n  </div>\n)\n\nexport const WidthFit = ({}) => (\n  <div class=\"one-fourth column\">\n    <img class=\"width-fit color-bg-subtle\" src=\"https://github.com/github.png\" alt=\"width fitted octocat\" />\n  </div>\n)\n\nexport const WidthFull = ({}) => (\n  <div class=\"d-table width-full\">\n    <div class=\"d-table-cell\">\n      <input class=\"form-control width-full\" type=\"text\" value=\"Full width form field\" aria-label=\"Sample full width form field\" />\n    </div>\n  </div>\n)\n\nexport const WidthAuto = ({}) => (\n  <div class=\"d-table width-full width-md-auto\">\n    <div class=\"d-table-cell\">\n      <input class=\"form-control width-full\" type=\"text\" value=\"Responsive width form field\" aria-label=\"Sample full responsive width form field\" />\n    </div>\n  </div>\n)\n\nexport const HeightFit = ({}) => (\n  <div class=\"one-fourth column\" style={{height: '100px', overflow: 'auto'}}>\n    <div class=\"p-3 height-fit border\">\n      Bacon ipsum dolor amet meatball flank beef tail pig boudin ham hock chicken capicola. Shoulder ham spare ribs turducken pork tongue. Bresaola corned beef sausage jowl ribeye kielbasa tenderloin andouille leberkas tongue. Ribeye tri-tip tenderloin pig, chuck ground round chicken tongue corned beef biltong.\n    </div>\n  </div>\n)\n\nexport const HeightFull = ({}) => (\n  <div class=\"d-table border\">\n    <div class=\"d-table-cell height-full v-align-middle pl-3\">\n      <svg class=\"octicon octicon-three-bars\" viewBox=\"0 0 12 16\" version=\"1.1\" width=\"12\" height=\"16\" aria-hidden=\"true\"><path fill-rule=\"evenodd\" d=\"M11.41 9H.59C0 9 0 8.59 0 8c0-.59 0-1 .59-1H11.4c.59 0 .59.41.59 1 0 .59 0 1-.59 1h.01zm0-4H.59C0 5 0 4.59 0 4c0-.59 0-1 .59-1H11.4c.59 0 .59.41.59 1 0 .59 0 1-.59 1h.01zM.59 11H11.4c.59 0 .59.41.59 1 0 .59 0 1-.59 1H.59C0 13 0 12.59 0 12c0-.59 0-1 .59-1z\"></path></svg>\n    </div>\n    <div class=\"p-3\">\n      Bacon ipsum dolor amet meatball flank beef tail pig boudin ham hock chicken capicola. Shoulder ham spare ribs turducken pork tongue. Bresaola corned beef sausage jowl ribeye kielbasa tenderloin andouille leberkas tongue. Ribeye tri-tip tenderloin pig, chuck ground round chicken tongue corned beef biltong.\n    </div>\n  </div>\n)\n\nexport const Position = ({}) => (\n  <div style={{height: '64px'}}>\n    <div class=\"border position-absolute top-0 left-0\">\n      .top-0 .left-0\n    </div>\n    <div class=\"border position-absolute top-0 right-0\">\n      .top-0 .right-0\n    </div>\n    <div class=\"border position-absolute bottom-0 right-0\">\n      .bottom-0 .right-0\n    </div>\n    <div class=\"border position-absolute bottom-0 left-0\">\n      .bottom-0 .left-0\n    </div>\n  </div>\n)\n\nexport const PositionRelative = ({}) => (\n  <div style={{height: '150px'}}>\n    <div class=\"d-inline-block float-left color-bg-accent-emphasis color-fg-on-emphasis m-3\" style={{width: '100px', height: '100px'}}>\n      One\n    </div>\n    <div class=\"d-inline-block float-left position-relative color-bg-accent-emphasis color-fg-on-emphasis m-3\" style={{width: '100px', height: '100px', top: '12px', left: '12px'}}>\n      Two\n    </div>\n    <div class=\"d-inline-block float-left color-bg-accent-emphasis color-fg-on-emphasis m-3\" style={{width: '100px', height: '100px'}}>\n      Three\n    </div>\n    <div class=\"d-inline-block float-left color-bg-accent-emphasis color-fg-on-emphasis m-3\" style={{width: '100px', height: '100px'}}>\n      Four\n    </div>\n  </div>\n)\n\nexport const PositionAbsolute = ({}) => (\n  <div class=\"position-relative\" style={{height: '116px'}}>\n    <button type=\"button\" class=\"btn mb-1\">Button</button>\n    <div class=\"position-absolute border p-2\">\n      <a href=\"#url\" class=\"d-block p-1\">Mashed potatoes</a>\n      <a href=\"#url\" class=\"d-block p-1\">Fries</a>\n    </div>\n  </div>\n)\n\nexport const PositionFixed = ({}) => (\n  <div style={{height: '64px'}}>\n    <div class=\"position-fixed right-0 bottom-0 color-bg-subtle border p-2\">\n      .position-fixed\n    </div>\n  </div>\n)\n\nexport const PositionFixedFilled = ({}) => (\n  <div class=\"position-fixed left-0 right-0 p-3 color-bg-accent-emphasis color-fg-on-emphasis\">\n    .position-fixed .left-0 .right-0\n  </div>\n)\n\nexport const PositionStickyTop = ({}) => (\n  <div style={{maxWidth: '300px', height: '300px'}}>\n    <section class=\"mb-3\">\n      <header class=\"border position-sticky top-0 color-bg-subtle p-3\" style={{zIndex: 1}}>Sticky header 1</header>\n      <main class=\"border border-top-0 p-3\">\n        <p>Until recently, the prevailing view assumed lorem ipsum was born as a nonsense text. “It's not Latin, though it looks like it, and it actually says nothing,” Before & After magazine answered a curious reader, “Its ‘words’ loosely approximate the frequency with which letters occur in English, which is why at a glance it looks pretty real.”</p>\n      </main>\n    </section>\n\n    <section class=\"mb-3\">\n      <header class=\"border position-sticky top-0 color-bg-subtle p-3\">Sticky header 2</header>\n      <main class=\"border border-top-0 p-3\">\n        <p>As Cicero would put it, “Um, not so fast.”</p>\n\n        <p>The placeholder text, beginning with the line “Lorem ipsum dolor sit amet, consectetur adipiscing elit”, looks like Latin because in its youth, centuries ago, it was Latin.</p>\n      </main>\n    </section>\n\n    <section class=\"mb-3\">\n      <header class=\"border position-sticky top-0 color-bg-subtle p-3\">Sticky header 3</header>\n      <main class=\"border border-top-0 p-3\">\n        <p>Richard McClintock, a Latin scholar from Hampden-Sydney College, is credited with discovering the source behind the ubiquitous filler text. In seeing a sample of lorem ipsum, his interest was piqued by consectetur—a genuine, albeit rare, Latin word. Consulting a Latin dictionary led McClintock to a passage from De Finibus Bonorum et Malorum (“On the Extremes of Good and Evil”), a first-century B.C. text from the Roman philosopher Cicero.</p>\n      </main>\n    </section>\n  </div>\n)\n\nexport const PositionStickyBottom = ({}) => (\n  <div style={{maxWidth: '300px', height: '300px'}}>\n    <section class=\"mb-3\">\n      <main class=\"border border-bottom-0 p-3\">\n        <h3>Title</h3>\n        <p>Until recently, the prevailing view assumed lorem ipsum was born as a nonsense text. “It's not Latin, though it looks like it, and it actually says nothing,” Before & After magazine answered a curious reader, “Its ‘words’ loosely approximate the frequency with which letters occur in English, which is why at a glance it looks pretty real.”</p>\n      </main>\n      <footer class=\"border position-sticky bottom-0 color-bg-subtle p-3\">Sticky footer 1</footer>\n    </section>\n\n    <section class=\"mb-3\">\n      <main class=\"border border-bottom-0 p-3\">\n        <h3>Title</h3>\n        <p>Richard McClintock, a Latin scholar from Hampden-Sydney College, is credited with discovering the source behind the ubiquitous filler text. In seeing a sample of lorem ipsum, his interest was piqued by consectetur—a genuine, albeit rare, Latin word. Consulting a Latin dictionary led McClintock to a passage from De Finibus Bonorum et Malorum (“On the Extremes of Good and Evil”), a first-century B.C. text from the Roman philosopher Cicero.</p>\n      </main>\n      <footer class=\"border position-sticky bottom-0 color-bg-subtle p-3\">Sticky footer 2</footer>\n    </section>\n  </div>\n)\n\nexport const PositionStickyLeftRight = ({}) => (\n  <div class=\"d-flex border overflow-x-auto\">\n    <section class=\"d-flex\">\n      <span class=\"border position-sticky left-0 color-bg-subtle p-4\">A</span>\n      <span class=\"border p-4\">1</span><span class=\"border p-4\">2</span><span class=\"border p-4\">3</span><span class=\"border p-4\">4</span><span class=\"border p-4\">5</span><span class=\"border p-4\">6</span><span class=\"border p-4\">7</span><span class=\"border p-4\">8</span><span class=\"border p-4\">9</span>\n    </section>\n    <section class=\"d-flex\">\n      <span class=\"border position-sticky left-0 color-bg-subtle p-4\">B</span>\n      <span class=\"border p-4\">1</span><span class=\"border p-4\">2</span><span class=\"border p-4\">3</span><span class=\"border p-4\">4</span><span class=\"border p-4\">5</span><span class=\"border p-4\">6</span><span class=\"border p-4\">7</span><span class=\"border p-4\">8</span><span class=\"border p-4\">9</span>\n    </section>\n    <section class=\"d-flex\">\n      <span class=\"border position-sticky left-0 color-bg-subtle p-4\">C</span>\n      <span class=\"border p-4\">1</span><span class=\"border p-4\">2</span><span class=\"border p-4\">3</span><span class=\"border p-4\">4</span><span class=\"border p-4\">5</span><span class=\"border p-4\">6</span><span class=\"border p-4\">7</span><span class=\"border p-4\">8</span><span class=\"border p-4\">9</span>\n    </section>\n    <section class=\"d-flex\">\n      <span class=\"border position-sticky left-0 color-bg-subtle p-4\">D</span>\n      <span class=\"border p-4\">1</span><span class=\"border p-4\">2</span><span class=\"border p-4\">3</span><span class=\"border p-4\">4</span><span class=\"border p-4\">5</span><span class=\"border p-4\">6</span><span class=\"border p-4\">7</span><span class=\"border p-4\">8</span><span class=\"border p-4\">9</span>\n    </section>\n    <section class=\"d-flex\">\n      <span class=\"border position-sticky left-0 color-bg-subtle p-4\">E</span>\n      <span class=\"border p-4\">1</span><span class=\"border p-4\">2</span><span class=\"border p-4\">3</span><span class=\"border p-4\">4</span><span class=\"border p-4\">5</span><span class=\"border p-4\">6</span><span class=\"border p-4\">7</span><span class=\"border p-4\">8</span><span class=\"border p-4\">9</span>\n      <span class=\"border position-sticky right-0 color-bg-subtle p-4\">...</span>\n    </section>\n  </div>\n)\n\nexport const PositionResponsive = ({}) => (\n  <div style={{height: '64px'}}>\n    <div class=\"border position-md-absolute top-0 right-0\">\n      .position-md-absolute .top-0 .right-0\n    </div>\n  </div>\n)\n\nexport const ScreenReaderOnly = ({}) => (\n  <div class=\"js-details-container Details\">\n    <button type=\"button\" class=\"btn\">Tab once from this button, and press enter</button>\n    <button type=\"button\" class=\"sr-only js-details-target\">\n      Screen reader only button\n    </button>\n    <div class=\"Details-content--hidden\">\n      Button activated!\n    </div>\n  </div>\n)\n\nexport const ShowOnFocus = ({}) => (\n  <div>\n    <div class=\"mb-2\">Click here and press tab to make the \".show-on-focus\" element appear</div>\n    <button type=\"button\" class=\"btn show-on-focus\">.show-on-focus</button>\n  </div>\n)\n\nexport const MediaObject = ({}) => (\n  <div class=\"clearfix p-3 border\">\n    <div class=\"float-left p-3 mr-3 color-bg-subtle\">\n      Image\n    </div>\n    <div class=\"overflow-hidden\">\n      <p><b>Body</b> Bacon ipsum dolor amet shankle rump tenderloin pork chop meatball strip steak bresaola doner sirloin capicola biltong shank pig. Alcatra frankfurter ham hock, ribeye prosciutto hamburger kevin brisket chuck burgdoggen short loin.</p>\n    </div>\n  </div>\n)\n\nexport const MediaObjectDouble = ({}) => (\n  <div class=\"clearfix p-3 border\">\n    <div class=\"float-left p-3 mr-3 color-bg-subtle\">\n      Image\n    </div>\n    <div class=\"float-right p-3 ml-3 color-bg-subtle\">\n      Image\n    </div>\n    <div class=\"overflow-hidden\">\n      <p><b>Body</b> Bacon ipsum dolor amet shankle rump tenderloin pork chop meatball strip steak bresaola doner sirloin capicola biltong shank pig. Alcatra frankfurter ham hock, ribeye prosciutto hamburger kevin brisket chuck burgdoggen short loin.</p>\n    </div>\n  </div>\n)\n\n\n"
  },
  {
    "path": "docs/stories/utilities/Margin.stories.jsx",
    "content": "export default {\n  title: 'Utilities/Margin'\n}\n\nexport const Uniform = ({}) => (\n  <div class=\"d-flex flex-items-baseline flex-justify-around\">\n    <div class=\"color-bg-attention\"><div class=\"m-0 p-1 color-bg-subtle\">.m-0</div></div>\n    <div class=\"color-bg-attention\"><div class=\"m-1 p-1 color-bg-subtle\">.m-1</div></div>\n    <div class=\"color-bg-attention\"><div class=\"m-2 p-1 color-bg-subtle\">.m-2</div></div>\n    <div class=\"color-bg-attention\"><div class=\"m-3 p-1 color-bg-subtle\">.m-3</div></div>\n    <div class=\"color-bg-attention\"><div class=\"m-4 p-1 color-bg-subtle\">.m-4</div></div>\n    <div class=\"color-bg-attention\"><div class=\"m-5 p-1 color-bg-subtle\">.m-5</div></div>\n    <div class=\"color-bg-attention\"><div class=\"m-6 p-1 color-bg-subtle\">.m-6</div></div>\n  </div>\n)\n\nexport const Directional = ({}) => (\n  <div class=\"d-flex flex-items-baseline flex-justify-around\">\n    <div class=\"color-bg-attention\"><div class=\"mt-3 p-1 color-bg-subtle\">.mt-3</div></div>\n    <div class=\"color-bg-attention\"><div class=\"mr-3 p-1 color-bg-subtle\">.mr-3</div></div>\n    <div class=\"color-bg-attention\"><div class=\"mb-3 p-1 color-bg-subtle\">.mb-3</div></div>\n    <div class=\"color-bg-attention\"><div class=\"ml-3 p-1 color-bg-subtle\">.ml-3</div></div>\n    <div class=\"color-bg-attention\"><div class=\"mx-3 p-1 color-bg-subtle\">.mx-3</div></div>\n    <div class=\"color-bg-attention\"><div class=\"my-3 p-1 color-bg-subtle\">.my-3</div></div>\n  </div>\n)\n\nexport const DirectionalExtended = ({}) => (\n  <div>\n    <div class=\"color-bg-attention d-inline-block\"><div class=\"mt-7  p-1 color-bg-subtle\">.mt-7</div></div>\n    <div class=\"color-bg-attention d-inline-block\"><div class=\"mt-8  p-1 color-bg-subtle\">.mt-8</div></div>\n    <div class=\"color-bg-attention d-inline-block\"><div class=\"mt-9  p-1 color-bg-subtle\">.mt-9</div></div>\n    <div class=\"color-bg-attention d-inline-block\"><div class=\"mt-10 p-1 color-bg-subtle\">.mt-10</div></div>\n    <div class=\"color-bg-attention d-inline-block\"><div class=\"mt-11 p-1 color-bg-subtle\">.mt-11</div></div>\n    <div class=\"color-bg-attention d-inline-block\"><div class=\"mt-12 p-1 color-bg-subtle\">.mt-12</div></div>\n  </div>\n)\n\nexport const Auto = ({}) => (\n  <div class=\"color-bg-attention\">\n    <div class=\"mx-auto color-bg-subtle text-center\" style={{maxWidth: '500px'}}>.mx-auto</div>\n  </div>\n)\n\nexport const AutoDirectional = ({}) => (\n  <div>\n    <div class=\"d-flex border mb-4\">\n      <div style={{height: '100px'}}></div>\n      <div class=\"border mt-auto\">`mt-auto` will push this box to the bottom.</div>\n      <div class=\"border mb-auto\">`mb-auto` will push this box to the top.</div>\n    </div>\n    <div class=\"d-flex flex-column border\">\n      <div class=\"border ml-auto\">`ml-auto` will push this box to the right.</div>\n      <div class=\"border mr-auto\">`mr-auto` will push this box to the left.</div>\n    </div>\n  </div>\n)\n\nexport const Reset = ({}) => (\n  <div class=\"color-bg-attention border\">\n    <p class=\"mb-0 color-bg-subtle p-1\">No bottom margin on this paragraph.</p>\n  </div>\n)\n\nexport const Responsive = ({}) => (\n  <div class=\"color-bg-attention d-inline-block\">\n    <div class=\"mx-sm-2 mx-md-4 color-bg-subtle p-1\">\n      .mx-sm-2 .mx-md-4\n    </div>\n  </div>\n)\n\nexport const Negative = ({}) => (\n  <div class=\"d-flex flex-justify-center\">\n    <div class=\"color-bg-attention\">\n      <div class=\"m-3 ml-n4 ml-md-n6 border-left color-border-danger color-bg-subtle p-2\">\n        .m-3 .ml-n4 .ml-md-n6\n      </div>\n    </div>\n  </div>\n)\n\nexport const NegativeExtended = ({}) => (\n  <div class=\"d-flex flex-justify-center\">\n    <div class=\"py-6 px-3 color-bg-attention\">\n      <div class=\"mt-n8 border-left color-border-danger color-bg-subtle p-2\">\n        .mt-n8\n      </div>\n    </div>\n  </div>\n)\n"
  },
  {
    "path": "docs/stories/utilities/MarketingFilters.mdx",
    "content": "import {Canvas, Meta} from '@storybook/blocks'\n\nimport * as MarketingFiltersStories from './MarketingFilters.stories'\n\n<Meta of={MarketingFiltersStories} />\n\n# Marketing filters\n\nFilter utility classes can be applied to divs or images to apply visual effects.\n\n## Grayscale\n\nApplying `.grayscale` to an element will remove all of its colors, and make it render in black and white.\n\n<Canvas of={MarketingFiltersStories.Grayscale} />\n"
  },
  {
    "path": "docs/stories/utilities/MarketingFilters.stories.jsx",
    "content": "export default {\n  title: 'Utilities/Marketing/Filters',\n}\n\nexport const Grayscale = ({}) => (\n  <>\n    <img src=\"https://github.com/probot.png\" class=\"img-responsive grayscale\" alt=\"\" />\n  </>\n)\n"
  },
  {
    "path": "docs/stories/utilities/MarketingLayout.mdx",
    "content": "import {Canvas, Meta} from '@storybook/blocks'\n\nimport * as MarketingLayoutStories from './MarketingLayout.stories'\n\n<Meta of={MarketingLayoutStories} />\n\n# Marketing layout\n\n## Position elements with spacing utilities\n\nPosition elements from all four element edges (`top`, `right`, `bottom`, and `left`) using any spacing utility from the global spacing scale and the marketing spacing scale (from `$spacer-1` to `$spacer-12`), including negative and 0 values.\n\nUse these with `.position-absolute` to position decorative assets and shapes on marketing sites.\n\nIn an effort to reduce the size of our CSS, responsive breakpoints are only supported for `md` and `lg` breakpoints. **There is no support for `sm` and `xl` breakpoints.**\n\n<Canvas of={MarketingLayoutStories.Positions} />\n\n## Negative offset columns\n\nUsing column offset classes can pull a div over X number of columns to the left. Negative offsets are available in spacings from 1 to 7.\n\n<Canvas of={MarketingLayoutStories.Offset} />\n"
  },
  {
    "path": "docs/stories/utilities/MarketingLayout.stories.jsx",
    "content": "export default {\n  title: 'Utilities/Marketing/Layout',\n}\n\nexport const Positions = ({}) => (\n  <>\n    <div class=\"position-relative p-6 color-bg-subtle\">\n      <div class=\"border color-bg-default position-absolute top-2\">.top-2</div>\n      <div class=\"border color-bg-default position-absolute position-lg-static right-md-4\">.right-md-4</div>\n      <div class=\"border color-bg-default position-lg-absolute left-lg-1\">.left-lg-1</div>\n    </div>\n  </>\n)\n\nexport const Offset = ({}) => (\n  <>\n    <div class=\"mx-auto border\" style=\"width: 300px\">\n      <div class=\"offset-n1 col-4 border p-3\">.offset-n1</div>\n      <div class=\"offset-n2 col-4 border p-3\">.offset-n2</div>\n    </div>\n  </>\n)\n"
  },
  {
    "path": "docs/stories/utilities/MarketingTypography.mdx",
    "content": "import {Canvas, Meta, Story} from '@storybook/blocks'\n\nimport * as MarketingTypographyStories from './MarketingTypography.stories'\n\n<Meta of={MarketingTypographyStories} />\n\n# Marketing typography\n\nThe typography for our marketing pages differs from Primer CSS's core. It is responsive, on a slightly different scale, and headlines are set in the [defined marketing font](https://github.com/primer/css/blob/main/src/marketing/support/variables.scss).\n\n## Heading utilities\n\n<Canvas of={MarketingTypographyStories.HeadingUtilities} />\n\nUse `.h0-mktg` to `.h6-mktg` to change an element's font, size, and weight on marketing pages.\n\n## Body content utilities\n\n<Canvas of={MarketingTypographyStories.BoxContentUtilities} />\n\nUse `.f0-mktg` to `.f6-mktg` to change an element's body font, size, and weight on marketing pages.\n\n## Typographic utilities\n\nThese utilities are meant to be used in addition to Primer CSS's core utilities.\n\n<Canvas of={MarketingTypographyStories.TypographicUtilities} />\n"
  },
  {
    "path": "docs/stories/utilities/MarketingTypography.stories.jsx",
    "content": "export default {\n  title: 'Utilities/Marketing/Typography',\n}\n\nexport const HeadingUtilities = ({}) => (\n  <>\n    <p class=\"h0-mktg\">This is heading 0</p>\n    <p class=\"h1-mktg\">This is heading 1</p>\n    <p class=\"h2-mktg\">This is heading 2</p>\n    <p class=\"h3-mktg\">This is heading 3</p>\n    <p class=\"h4-mktg\">This is heading 4</p>\n    <p class=\"h5-mktg\">This is heading 5</p>\n    <p class=\"h6-mktg\">This is heading 6</p>\n  </>\n)\n\nexport const BodyContentUtilities = ({}) => (\n  <>\n    <p class=\"f0-mktg mb-6\">\n      Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean ultricies ante sit amet neque facilisis feugiat.\n      Cras nec lectus et dolor feugiat sodales vel id mi. Quisque diam massa, tempus at auctor vitae, porttitor vel\n      ligula. Donec in tortor volutpat, gravida elit at, faucibus orci.\n    </p>\n\n    <p class=\"f1-mktg mb-6\">\n      Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean ultricies ante sit amet neque facilisis feugiat.\n      Cras nec lectus et dolor feugiat sodales vel id mi. Quisque diam massa, tempus at auctor vitae, porttitor vel\n      ligula. Donec in tortor volutpat, gravida elit at, faucibus orci.\n    </p>\n\n    <p class=\"f2-mktg mb-6\">\n      Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean ultricies ante sit amet neque facilisis feugiat.\n      Cras nec lectus et dolor feugiat sodales vel id mi. Quisque diam massa, tempus at auctor vitae, porttitor vel\n      ligula. Donec in tortor volutpat, gravida elit at, faucibus orci.\n    </p>\n\n    <p class=\"f3-mktg mb-6\">\n      Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean ultricies ante sit amet neque facilisis feugiat.\n      Cras nec lectus et dolor feugiat sodales vel id mi. Quisque diam massa, tempus at auctor vitae, porttitor vel\n      ligula. Donec in tortor volutpat, gravida elit at, faucibus orci.\n    </p>\n\n    <p class=\"f4-mktg mb-6\">\n      Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean ultricies ante sit amet neque facilisis feugiat.\n      Cras nec lectus et dolor feugiat sodales vel id mi. Quisque diam massa, tempus at auctor vitae, porttitor vel\n      ligula. Donec in tortor volutpat, gravida elit at, faucibus orci.\n    </p>\n\n    <p class=\"f5-mktg mb-6\">\n      Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean ultricies ante sit amet neque facilisis feugiat.\n      Cras nec lectus et dolor feugiat sodales vel id mi. Quisque diam massa, tempus at auctor vitae, porttitor vel\n      ligula. Donec in tortor volutpat, gravida elit at, faucibus orci.\n    </p>\n\n    <p class=\"f6-mktg mb-6\">\n      Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean ultricies ante sit amet neque facilisis feugiat.\n      Cras nec lectus et dolor feugiat sodales vel id mi. Quisque diam massa, tempus at auctor vitae, porttitor vel\n      ligula. Donec in tortor volutpat, gravida elit at, faucibus orci.\n    </p>\n  </>\n)\n\nexport const TypographicUtilities = ({}) => (\n  <>\n    <p class=\"pullquote\">I'm a pullquote. Someone said these words in real life, and now they're on the internet</p>\n  </>\n)\n"
  },
  {
    "path": "docs/stories/utilities/Padding.stories.jsx",
    "content": "export default {\n  title: 'Utilities/Padding'\n}\n\nexport const Uniform = ({}) => (\n  <div>\n    <div class=\"p-0 mr-3 color-bg-attention d-inline-block\"><div class=\"color-bg-subtle p-1\">.p-0</div></div>\n    <div class=\"p-1 mr-3 color-bg-attention d-inline-block\"><div class=\"color-bg-subtle p-1\">.p-1</div></div>\n    <div class=\"p-2 mr-3 color-bg-attention d-inline-block\"><div class=\"color-bg-subtle p-1\">.p-2</div></div>\n    <div class=\"p-3 mr-3 color-bg-attention d-inline-block\"><div class=\"color-bg-subtle p-1\">.p-3</div></div>\n    <div class=\"p-4 mr-3 color-bg-attention d-inline-block\"><div class=\"color-bg-subtle p-1\">.p-4</div></div>\n    <div class=\"p-5 mr-3 color-bg-attention d-inline-block\"><div class=\"color-bg-subtle p-1\">.p-5</div></div>\n    <div class=\"p-6 mr-3 color-bg-attention d-inline-block\"><div class=\"color-bg-subtle p-1\">.p-6</div></div>\n  </div>\n)\n\nexport const Directional = ({}) => (\n  <div>\n    <div class=\"pt-3 mr-3 color-bg-attention d-inline-block\"><div class=\"color-bg-subtle p-1\">.pt-3</div></div>\n    <div class=\"pr-3 mr-3 color-bg-attention d-inline-block\"><div class=\"color-bg-subtle p-1\">.pr-3</div></div>\n    <div class=\"pb-3 mr-3 color-bg-attention d-inline-block\"><div class=\"color-bg-subtle p-1\">.pb-3</div></div>\n    <div class=\"pl-3 mr-3 color-bg-attention d-inline-block\"><div class=\"color-bg-subtle p-1\">.pl-3</div></div>\n    <div class=\"py-3 mr-3 color-bg-attention d-inline-block\"><div class=\"color-bg-subtle p-1\">.py-3</div></div>\n    <div class=\"px-3 mr-3 color-bg-attention d-inline-block\"><div class=\"color-bg-subtle p-1\">.px-3</div></div>\n  </div>\n)\n\nexport const DirectionalExtended = ({}) => (\n  <div>\n    <div class=\"pt-7  mr-1 color-bg-attention d-inline-block\"><div class=\"color-bg-subtle p-1\">.pt-7</div></div>\n    <div class=\"pt-8  mr-1 color-bg-attention d-inline-block\"><div class=\"color-bg-subtle p-1\">.pt-8</div></div>\n    <div class=\"pt-9  mr-1 color-bg-attention d-inline-block\"><div class=\"color-bg-subtle p-1\">.pt-9</div></div>\n    <div class=\"pt-10 mr-1 color-bg-attention d-inline-block\"><div class=\"color-bg-subtle p-1\">.pt-10</div></div>\n    <div class=\"pt-11 mr-1 color-bg-attention d-inline-block\"><div class=\"color-bg-subtle p-1\">.pt-11</div></div>\n    <div class=\"pt-12 mr-1 color-bg-attention d-inline-block\"><div class=\"color-bg-subtle p-1\">.pt-12</div></div>\n  </div>\n)\n\nexport const Responsive = ({}) => (\n  <div class=\"px-sm-2 px-md-4 color-bg-attention d-inline-block\">\n    <div class=\"color-bg-subtle p-1\">.px-sm-2 .px-md-4</div>\n  </div>\n)\n\nexport const ResponsiveContainer = ({}) => (\n  <div class=\"p-responsive color-bg-attention\">\n    <div class=\"color-bg-subtle p-1\">.p-responsive</div>\n  </div>\n)\n"
  },
  {
    "path": "docs/stories/utilities/Shadow.stories.jsx",
    "content": "export default {\n  title: 'Utilities/Shadow'\n}\n\nexport const Small = ({}) => (\n  <span class=\"color-shadow-small p-2\">\n    .color-shadow-small\n  </span>\n)\n\nexport const SmallExample = ({}) => (\n  <div class=\"Box color-shadow-small\" style={{maxWidth: '320px'}}>\n    <div class=\"Box-row\">\n      <h3 class=\"m-0\">Organization</h3>\n    </div>\n    <div class=\"Box-row\">\n      <p class=\"mb-0 color-fg-muted\">\n        Taxidermy live-edge mixtape, keytar tumeric locavore meh selvage deep v letterpress vexillologist lo-fi tousled\n        church-key thundercats. Brooklyn bicycle rights tousled, marfa actually.\n      </p>\n    </div>\n    <div class=\"Box-row\">\n      <button type=\"button\" name=\"Create an organization\" class=\"btn btn-primary btn-block\">\n        Create an organization\n      </button>\n    </div>\n  </div>\n)\n\nexport const Medium = ({}) => (\n  <span class=\"color-shadow-medium p-2\">\n    .color-shadow-medium\n  </span>\n)\n\nexport const MediumExample = ({}) => (\n  <a class=\"d-block color-shadow-medium px-3 pt-4 pb-6 position-relative rounded-1 overflow-hidden no-underline\" href=\"#\" style={{maxWidth: '320px'}}>\n    <h3 class=\"color-fg-default\">Serverless architecture</h3>\n    <p class=\"color-fg-muted\">\n      Build powerful, event-driven, serverless architectures with these open-source libraries and frameworks.\n    </p>\n    <ul class=\"position-absolute bottom-0 pb-3 text-small color-fg-muted list-style-none \">\n      <li class=\"d-inline-block mr-1\">\n        <svg class=\"octicon octicon-repo mr-1\" viewBox=\"0 0 12 16\" version=\"1.1\" width=\"12\" height=\"16\" aria-hidden=\"true\"><path fill-rule=\"evenodd\" d=\"M4 9H3V8h1v1zm0-3H3v1h1V6zm0-2H3v1h1V4zm0-2H3v1h1V2zm8-1v12c0 .55-.45 1-1 1H6v2l-1.5-1.5L3 16v-2H1c-.55 0-1-.45-1-1V1c0-.55.45-1 1-1h10c.55 0 1 .45 1 1zm-1 10H1v2h2v-1h3v1h5v-2zm0-10H2v9h9V1z\"></path></svg>\n        12 Repositories\n      </li>\n      <li class=\"d-inline-block\">\n        <svg class=\"octicon octicon-code mr-1\" viewBox=\"0 0 14 16\" version=\"1.1\" width=\"14\" height=\"16\" aria-hidden=\"true\"><path fill-rule=\"evenodd\" d=\"M9.5 3L8 4.5 11.5 8 8 11.5 9.5 13 14 8 9.5 3zm-5 0L0 8l4.5 5L6 11.5 2.5 8 6 4.5 4.5 3z\"></path></svg>\n        5 Languages\n      </li>\n    </ul>\n  </a>\n)\n\nexport const Large = ({}) => (\n  <span class=\"color-shadow-large p-2\">\n    .color-shadow-large\n  </span>\n)\n\nexport const LargeExample = ({}) => (\n  <span class=\"color-shadow-large rounded-2 d-inline-block overflow-hidden\">\n    <img src=\"https://github.com/nasa.png\" class=\"img-responsive\" alt=\"NASA is on GitHub\" style={{maxWidth: '320px'}} />\n  </span>\n)\n\nexport const ExtraLarge = ({}) => (\n  <span class=\"color-shadow-extra-large p-2\">\n    .color-shadow-extra-large\n  </span>\n)\n\nexport const None = ({}) => (\n  <span class=\"color-shadow-large box-shadow-none p-2\">\n    .box-shadow-none\n  </span>\n)\n\n"
  },
  {
    "path": "docs/stories/utilities/Typography.stories.jsx",
    "content": "export default {\n  title: 'Utilities/Typography'\n}\n\nexport const Heading = ({}) => (\n  <div>\n    <p class=\"h1\">Pizza .h1</p>\n    <p class=\"h2\">Pizza .h2</p>\n    <p class=\"h3\">Pizza .h3</p>\n    <p class=\"h4\">Pizza .h4</p>\n    <p class=\"h5\">Pizza .h5</p>\n    <p class=\"h6\">Pizza .h6</p>\n  </div>\n)\n\nexport const HeadingSemantic = ({}) => (\n  <h2 class=\"h1\">Looks like a heading 1, semantically a heading 2</h2>\n)\n\nexport const FontSize = ({}) => (\n  <div>\n    <p class=\"f1\">Focaccia .f1</p>\n    <p class=\"f2\">Focaccia .f2</p>\n    <p class=\"f3\">Focaccia .f3</p>\n    <p class=\"f4\">Focaccia .f4</p>\n    <p class=\"f5\">Focaccia .f5</p>\n    <p class=\"f6\">Focaccia .f6</p>\n  </div>\n)\n\nexport const FontSizeLight = ({}) => (\n  <div>\n    <h1 class=\"f00-light\">Potato chips .f00-light</h1>\n    <h1 class=\"f0-light\">Potato chips .f0-light</h1>\n    <h1 class=\"f1-light\">Potato chips .f1-light</h1>\n    <h1 class=\"f2-light\">Potato chips .f2-light</h1>\n    <h1 class=\"f3-light\">Potato chips .f3-light</h1>\n  </div>\n)\n\nexport const LineHeight = ({}) => (\n  <div>\n    <p class=\"lh-default\">\n      .lh-default Bacon ipsum dolor amet tri-tip chicken kielbasa, cow swine beef corned beef ground round prosciutto hamburger porchetta sausage alcatra tail. Jowl chuck biltong flank meatball, beef short ribs. Jowl tenderloin ground round, short loin tri-tip ribeye picanha filet mignon pig chicken kielbasa t-bone fatback. Beef ribs meatball chicken corned beef salami.\n    </p>\n    <p class=\"lh-condensed\">\n      .lh-condensed Bacon ipsum dolor amet tri-tip chicken kielbasa, cow swine beef corned beef ground round prosciutto hamburger porchetta sausage alcatra tail. Jowl chuck biltong flank meatball, beef short ribs. Jowl tenderloin ground round, short loin tri-tip ribeye picanha filet mignon pig chicken kielbasa t-bone fatback. Beef ribs meatball chicken corned beef salami.\n    </p>\n    <p class=\"lh-condensed-ultra\">\n      .lh-condensed-ultra Bacon ipsum dolor amet tri-tip chicken kielbasa, cow swine beef corned beef ground round prosciutto hamburger porchetta sausage alcatra tail. Jowl chuck biltong flank meatball, beef short ribs. Jowl tenderloin ground round, short loin tri-tip ribeye picanha filet mignon pig chicken kielbasa t-bone fatback. Beef ribs meatball chicken corned beef salami.\n    </p>\n  </div>\n)\n\nexport const TypographicStyles = ({}) => (\n  <div>\n    <p class=\"text-normal\">.text-normal</p>\n    <p class=\"text-italic\">.text-italic</p>\n    <p class=\"text-bold\">.text-bold</p>\n    <p class=\"text-semibold\">.text-semibold</p>\n    <p class=\"text-light\">.text-light</p>\n    <p class=\"text-uppercase\">.text-uppercase</p>\n    <p class=\"no-wrap\">.no-wrap</p>\n    <p class=\"ws-normal\">.ws-normal</p>\n    <p class=\"text-underline\">.text-underline</p>\n    <p class=\"no-underline\">.no-underline</p>\n    <p class=\"text-emphasized\">.text-emphasized</p>\n    <p class=\"text-small\">.text-small</p>\n    <p class=\"lead\">.lead Bacon ipsum dolor amet tri-tip chicken kielbasa, cow swine beef corned beef ground round prosciutto hamburger porchetta sausage alcatra tail.</p>\n    <p class=\"text-mono\">.text-mono</p>\n    <p class=\"user-select-none\">.user-select-none</p>\n    <p class=\"text-capitalize\">.text-capitalize</p>\n  </div>\n)\n\nexport const WordBreak = ({}) => (\n  <div>\n    <p class=\"wb-break-word p-2 color-bg-subtle col-3 border-right\">.wb-break-word will only break long words that exceed the line length, such as supercalifragilisticexpialidocious. Long words like \"exceedingly\" will simply break to the next line.</p>\n    <p class=\"wb-break-all p-2 color-bg-subtle col-3 border-right\">.wb-break-all will break any word that meets the end its line, and should be used sparingly. As you can see here, it's not particularly nice to read text that breaks in weird places.</p>\n  </div>\n)\n\nexport const TextAlignment = ({}) => (\n  <div>\n    <p class=\"text-left\">.text-left</p>\n    <p class=\"text-center\">.text-center</p>\n    <p class=\"text-right\">.text-right</p>\n  </div>\n)\n\nexport const TextAlignmentResponsive = ({}) => (\n  <p class=\"text-left text-sm-center text-lg-right\">Left in a small viewport, centered in mid-sized viewports, and right aligned in larger viewports</p>\n)\n\nexport const List = ({}) => (\n  <ul class=\"list-style-none\">\n    <li>First list item</li>\n    <li>Second list item</li>\n    <li>Third list item</li>\n  </ul>\n)\n"
  },
  {
    "path": "eslint.config.cjs",
    "content": "module.exports = [{\n  \"languageOptions\": {\n    \"sourceType\": \"module\",\n    \"ecmaVersion\": \"latest\"\n  }\n}]\n"
  },
  {
    "path": "migrations/v16.md",
    "content": "Primer v16.0.0 introduces the idea of _color modes_ and _functional variables_. A color mode defines a set of colors in the Primer system that differs from that of other color modes. Currently, Primer ships with a light mode and a dark mode.\n\nBecause colors differ in each color mode, it doesn't make sense to try to make an element a specific color; instead, Primer now applies colors based on the function of an element using functional variables. As a result, the Sass color variables that existed in Primer prior to version 16.0.0 have been replaced with functional CSS variables. These variables have different values depending on the current color mode. For a list of the new functional CSS color variables, see [the color system page](/support/color-system). The color utility classes have also been updated to match; see [the color utilities page](/utilities/colors) for more information.\n\n## Components\n\nMost components don't need to be updated and should work without making changes. However some components that use presentational class names now use functional class names.\n\n### Buttons\n\n| `v15`       | `v16` |\n| ----------- | ----- |\n| `.btn-blue` | n/a   |\n\n### Counters\n\n| [`v15`](https://primer.style/css/components/labels#counters) | `v16`                 |\n| ------------------------------------------------------------ | --------------------- |\n| `.Counter--gray`                                             | `.Counter--primary`   |\n| `.Counter--gray-light`                                       | `.Counter--secondary` |\n\n### Dropdown\n\n| [`v15`](https://primer.style/css/components/dropdown#dark) | `v16` |\n| ---------------------------------------------------------- | ----- |\n| `.dropdown-menu-dark`                                      | n/a   |\n\n### Labels\n\n| [`v15`](https://primer.style/css/components/labels) | `v16`               |\n| --------------------------------------------------- | ------------------- |\n| `.Label--gray-darker`                               | `.Label--primary`   |\n| `.Label--gray`                                      | `.Label--secondary` |\n| `.Label--blue`                                      | `.Label--info`      |\n| `.Label--green`                                     | `.Label--success`   |\n| `.Label--yellow`                                    | `.Label--warning`   |\n| `.Label--red`                                       | `.Label--danger`    |\n| `.Label--orange`                                    | n/a                 |\n| `.Label--purple`                                    | n/a                 |\n| `.Label--pink`                                      | n/a                 |\n\n### States\n\n| [`v15`](https://primer.style/css/components/labels#states) | `v16`            |\n| ---------------------------------------------------------- | ---------------- |\n| n/a                                                        | `.State--draft`  |\n| `.State--green`                                            | `.State--open`   |\n| `.State--purple`                                           | `.State--merged` |\n| `.State--red`                                              | `.State--closed` |\n\n## Utility classes\n\nSee [color utility classes](/utilities/colors) for a list of all the functional color utility classes.\n\n### Text\n\n| [`v15`](https://primer.style/css/utilities/colors#text-color-utilities) | `v16`                   |\n| ----------------------------------------------------------------------- | ----------------------- |\n| `.text-gray-dark`                                                       | `.color-text-primary`   |\n| `.text-gray`                                                            | `.color-text-secondary` |\n| `.text-gray-light`                                                      | `.color-text-tertiary`  |\n| `.text-blue`                                                            | `.color-text-link`      |\n| `.text-green`                                                           | `.color-text-success`   |\n| `.text-yellow`                                                          | `.color-text-warning`   |\n| `.text-red`                                                             | `.color-text-danger`    |\n| `.text-white`                                                           | `.color-text-white`     |\n| n/a                                                                     | `.color-text-inverse`   |\n| `.text-black`                                                           | n/a                     |\n| `.text-orange`                                                          | n/a                     |\n| `.text-orange-light`                                                    | n/a                     |\n| `.text-purple`                                                          | n/a                     |\n| `.text-pink`                                                            | n/a                     |\n\n### Icon\n\n| `v15` | `v16`                   |\n| ----- | ----------------------- |\n| n/a   | `.color-icon-primary`   |\n| n/a   | `.color-icon-secondary` |\n| n/a   | `.color-icon-tertiary`  |\n| n/a   | `.color-icon-info`      |\n| n/a   | `.color-icon-success`   |\n| n/a   | `.color-icon-warning`   |\n| n/a   | `.color-icon-danger`    |\n\n### Border\n\n| [`v15`](https://primer.style/css/utilities/borders#border-color-utilities) | `v16`                     |\n| -------------------------------------------------------------------------- | ------------------------- |\n| `.border-gray`                                                             | `.color-border-primary`   |\n| `.border-gray-light`                                                       | `.color-border-secondary` |\n| `.border-gray-dark`                                                        | `.color-border-tertiary`  |\n| `.border-blue`                                                             | `.color-border-info`      |\n| `.border-green`                                                            | `.color-border-success`   |\n| `.border-yellow`                                                           | `.color-border-warning`   |\n| `.border-red`                                                              | `.color-border-danger`    |\n| `.border-white`                                                            | `.color-border-inverse`   |\n| `.border-gray-darker`                                                      | n/a                       |\n| `.border-blue-light`                                                       | n/a                       |\n| `.border-red-light`                                                        | n/a                       |\n| `.border-purple`                                                           | n/a                       |\n| `.border-black-fade`                                                       | n/a                       |\n| `.border-white-fade`                                                       | n/a                       |\n| `.border-white-fade-15`                                                    | n/a                       |\n| `.border-white-fade-30`                                                    | n/a                       |\n| `.border-white-fade-50`                                                    | n/a                       |\n| `.border-white-fade-70`                                                    | n/a                       |\n| `.border-white-fade-85`                                                    | n/a                       |\n\n### Background\n\n| [`v15`](https://primer.style/css/utilities/colors#background-utilities) | `v16`                       |\n| ----------------------------------------------------------------------- | --------------------------- |\n| `.bg-white`                                                             | `.color-bg-primary`         |\n| `.bg-gray-light`                                                        | `.color-bg-secondary`       |\n| `.bg-gray`                                                              | `.color-bg-tertiary`        |\n| `.bg-gray-dark`                                                         | `.color-bg-canvas-inverse`  |\n| `.bg-blue-light`                                                        | `.color-bg-info`            |\n| `.bg-blue`                                                              | `.color-bg-info-inverse`    |\n| `.bg-green-light`                                                       | `.color-bg-success`         |\n| `.bg-green`                                                             | `.color-bg-success-inverse` |\n| `.bg-yellow-light`                                                      | `.color-bg-warning`         |\n| `.bg-yellow`                                                            | `.color-bg-warning-inverse` |\n| `.bg-red-light`                                                         | `.color-bg-danger`          |\n| `.bg-red`                                                               | `.color-bg-danger-inverse`  |\n| n/a                                                                     | `.color-bg-canvas`          |\n| n/a                                                                     | `.color-bg-canvas-inset`    |\n| n/a                                                                     | `.color-bg-overlay`         |\n| `.bg-purple-light`                                                      | n/a                         |\n| `.bg-purple`                                                            | n/a                         |\n| `.bg-yellow-dark`                                                       | n/a                         |\n| `.bg-orange`                                                            | n/a                         |\n| `.bg-pink`                                                              | n/a                         |\n\n### Shadow\n\n| `v15`                     | `v16`                       |\n| ------------------------- | --------------------------- |\n| `.box-shadow`             | `.color-shadow-small`       |\n| `.box-shadow-medium`      | `.color-shadow-medium`      |\n| `.box-shadow-large`       | `.color-shadow-large`       |\n| `.box-shadow-extra-large` | `.color-shadow-extra-large` |\n\n### Link\n\nThe `link` utilities are part of the `Link` component.\n\n| [`v15`](https://primer.style/css/utilities/colors##link-colors) | `v16`              |\n| --------------------------------------------------------------- | ------------------ |\n| `.link-gray-dark`                                               | `.Link--primary`   |\n| `.link-gray`                                                    | `.Link--secondary` |\n| `.muted-link`                                                   | `.Link--muted`     |\n| `.link-hover-blue`                                              | `.Link--onHover`   |\n| n/a                                                             | `.Link`            |\n\n## Mixins\n\n| `v15`           | `v16` |\n| --------------- | ----- |\n| `btn-solid()`   | n/a   |\n| `btn-inverse()` | n/a   |\n| `btn-outline()` | n/a   |\n\n## Variables\n\nSee [color system](/support/color-system) for a list of all the functional CSS variables.\n\n### Text\n\n| `v15`                                | `v16`                           |\n| ------------------------------------ | ------------------------------- |\n| `$text-gray-dark` (`$gray-900`)      | `var(--color-text-primary)`     |\n| `$text-gray` (`$gray-600`)           | `var(--color-text-secondary)`   |\n| `$text-gray-light` (`$gray-500`)     | `var(--color-text-tertiary)`    |\n| `$text-blue` (`$blue-500`)           | `var(--color-text-link)`        |\n| `$text-green` (`$green-600`)         | `var(--color-text-success)`     |\n| `$text-red` (`$red-600`)             | `var(--color-text-danger)`      |\n| `$text-yellow` (`$yellow-800`)       | `var(--color-text-warning)`     |\n| `$text-white` (`$white`)             | `var(--color-text-white)`       |\n| n/a                                  | `var(--color-text-inverse)`     |\n| n/a                                  | `var(--color-text-placeholder)` |\n| n/a                                  | `var(--color-text-disabled)`    |\n| `$text-black` (`$black`)             | n/a                             |\n| `$text-orange` (`$orange-900`)       | n/a                             |\n| `$text-orange-light` (`$orange-600`) | n/a                             |\n| `$text-purple` (`$purple-500`)       | n/a                             |\n| `$text-pink` (`$pink-500`)           | n/a                             |\n\n### Icon\n\n| `v15` | `v16`                         |\n| ----- | ----------------------------- |\n| n/a   | `var(--color-icon-primary)`   |\n| n/a   | `var(--color-icon-secondary)` |\n| n/a   | `var(--color-icon-tertiary)`  |\n| n/a   | `var(--color-icon-info)`      |\n| n/a   | `var(--color-icon-danger)`    |\n| n/a   | `var(--color-icon-success)`   |\n| n/a   | `var(--color-icon-warning)`   |\n\n### Border\n\n| `v15`                                                 | `v16`                           |\n| ----------------------------------------------------- | ------------------------------- |\n| `$border-color` (`$gray-200`)                         | `var(--color-border-primary)`   |\n| `$border-gray` (`$gray-200`)                          | `var(--color-border-primary)`   |\n| `$border-gray-light` (`lighten($gray-200, 3%)`)       | `var(--color-border-secondary)` |\n| `$border-gray-dark` (`$gray-300`)                     | `var(--color-border-tertiary)`  |\n| `$border-white` (`$white`)                            | `var(--color-border-inverse)`   |\n| `$border-blue` (`$blue-500`)                          | `var(--color-border-info)`      |\n| `$border-green` (`$green-400`)                        | `var(--color-border-success)`   |\n| `$border-red` (`$red-500`)                            | `var(--color-border-danger)`    |\n| `$border-yellow` (`$yellow-600`)                      | `var(--color-border-warning)`   |\n| `$border-gray-darker` (`$gray-700`)                   | n/a                             |\n| `$border-blue-light` (`$blue-200`)                    | n/a                             |\n| `$border-red-light` (`$red-300`)                      | n/a                             |\n| `$border-purple` (`$purple-500`)                      | n/a                             |\n| `$border-black-fade` (`$black-fade-15`)               | n/a                             |\n| `$border-white-fade` (`$white-fade-15`)               | n/a                             |\n| `$border-green-light` (`desaturate($green-300, 40%)`) | n/a                             |\n\n### Background\n\n| `v15`                               | `v16`                             |\n| ----------------------------------- | --------------------------------- |\n| `$bg-white` (`$white`)              | `var(--color-bg-primary)`         |\n| `$bg-gray-light` (`$gray-000`)      | `var(--color-bg-secondary)`       |\n| `$bg-gray` (`$gray-100`)            | `var(--color-bg-tertiary)`        |\n| `$bg-gray-dark` (`$gray-900`)       | `var(--color-bg-canvas-inverse)`  |\n| `$bg-red` (`$red-500`)              | `var(--color-bg-danger-inverse)`  |\n| `$bg-red-light` (`$red-000`)        | `var(--color-bg-danger)`          |\n| `$bg-green` (`$green-500`)          | `var(--color-bg-success-inverse)` |\n| `$bg-green-light` (`$green-100`)    | `var(--color-bg-success)`         |\n| `$bg-blue` (`$blue-500`)            | `var(--color-bg-info-inverse)`    |\n| `$bg-blue-light` (`$blue-000`)      | `var(--color-bg-info)`            |\n| `$bg-yellow` (`$yellow-500`)        | `var(--color-bg-warning-inverse)` |\n| `$bg-yellow-light` (`$yellow-200`)  | `var(--color-bg-warning)`         |\n| n/a                                 | `var(--color-bg-canvas)`          |\n| n/a                                 | `var(--color-bg-canvas-inset)`    |\n| n/a                                 | `var(--color-bg-overlay)`         |\n| `$bg-black` (`$black`)              | n/a                               |\n| `$bg-black-fade` (`$black-fade-50`) | n/a                               |\n| `$bg-orange` (`$orange-700`)        | n/a                               |\n| `$bg-purple` (`$purple-500`)        | n/a                               |\n| `$bg-purple-light` (`$purple-000`)  | n/a                               |\n| `$bg-pink` (`$pink-500`)            | n/a                               |\n| `$bg-yellow-dark` (`$yellow-700`)   | n/a                               |\n\n### Shadow\n\n| `v15`                     | `v16`                             |\n| ------------------------- | --------------------------------- |\n| `$box-shadow`             | `var(--color-shadow-small)`       |\n| `$box-shadow-medium`      | `var(--color-shadow-medium)`      |\n| `$box-shadow-large`       | `var(--color-shadow-large)`       |\n| `$box-shadow-extra-large` | `var(--color-shadow-extra-large)` |\n| `$box-shadow-highlight`   | `var(--color-shadow-highlight)`   |\n| `$box-shadow-inset`       | `var(--color-shadow-inset)`       |\n| `$box-shadow-focus`       | `var(--color-state-focus-shadow)` |\n\n## Color system\n\n| `v15`       | `v16`                       |\n| ----------- | --------------------------- |\n| `$black`    | `var(--color-scale-black)`  |\n| `$white`    | `var(--color-scale-white)`  |\n| `$gray-000` | `var(--color-scale-gray-0)` |\n| `$gray-100` | `var(--color-scale-gray-1)` |\n| `$gray-200` | `var(--color-scale-gray-2)` |\n| ...         | ...                         |\n| `$pink-700` | `var(--color-scale-pink-7)` |\n| `$pink-800` | `var(--color-scale-pink-8)` |\n| `$pink-900` | `var(--color-scale-pink-9)` |\n\n## Auto colors\n\n| `v15` | `v16`                      |\n| ----- | -------------------------- |\n| n/a   | `var(--color-auto-black)`  |\n| n/a   | `var(--color-auto-white)`  |\n| n/a   | `var(--color-auto-gray-0)` |\n| n/a   | `var(--color-auto-gray-1)` |\n| n/a   | `var(--color-auto-gray-2)` |\n| ...   | ...                        |\n| n/a   | `var(--color-auto-pink-7)` |\n| n/a   | `var(--color-auto-pink-8)` |\n| n/a   | `var(--color-auto-pink-9)` |\n\nNote: The `auto` colors automatically invert based on the color mode. Example:\n\n| Variable                   | In `light` mode | In `dark` mode |\n| -------------------------- | --------------- | -------------- |\n| `var(--color-auto-gray-0)` | light gray      | dark gray      |\n| `var(--color-auto-gray-9)` | dark gray       | light gray     |\n\nThis doesn't work perfectly all the time, so you should use functional variables as much as possible. But in some cases auto colors can still be handy.\n\n## Misc\n\nA few more selectors and variables were removed. Please refer to [deprecations.js](https://github.com/primer/css/blob/main/deprecations.js) for a complete list.\n"
  },
  {
    "path": "migrations/v18.md",
    "content": "Primer CSS `v18.0.0` replaces color modes V1 with V2. To help with the migration, please refer to the guide below.\n\n<Note>\n  The functional CSS color variables changed as well. Please refer to the <a href=\"https://primer.style/primitives/colors#deprecated-variables\">deprecated variables section</a>.\n</Note>\n\n## Utility classes\n\nSee [color utility classes](/utilities/colors) for a list of all the functional color utility classes.\n\n### Text\n\n| `v16`                   | `v18`                   |\n| ----------------------- | ----------------------- |\n| `.color-text-primary`   | `.color-fg-default`     |\n| `.color-text-secondary` | `.color-fg-muted`       |\n| `.color-text-tertiary`  | `.color-fg-muted`       |\n| `.color-text-link`      | `.color-fg-accent`      |\n| `.color-text-success`   | `.color-fg-success`     |\n| `.color-text-warning`   | `.color-fg-attention`   |\n| `.color-text-danger`    | `.color-fg-danger`      |\n| `.color-text-inverse`   | `.color-fg-on-emphasis` |\n| `.color-text-white`     | n/a*                    |\n\n* Often `.color-text-white` can be replaced with `.color-fg-on-emphasis`, but there are some cases where that's not ideal. If in doubt, please reach out to the `#primer` team.\n\n### Icon\n\n| `v16`                   | `v18`                 |\n| ----------------------- | --------------------- |\n| `.color-icon-primary`   | `.color-fg-default`   |\n| `.color-icon-secondary` | `.color-fg-muted`     |\n| `.color-icon-tertiary`  | `.color-fg-muted`     |\n| `.color-icon-info`      | `.color-fg-accent`    |\n| `.color-icon-danger`    | `.color-fg-danger`    |\n| `.color-icon-success`   | `.color-fg-success`   |\n| `.color-icon-warning`   | `.color-fg-attention` |\n\n### Border\n\n| `v16`                     | `v18`                              |\n| ------------------------- | ---------------------------------- |\n| `.color-border-primary`   | `.color-border-default`            |\n| `.color-border-secondary` | `.color-border-muted`              |\n| `.color-border-tertiary`  | `.color-border-default`            |\n| `.color-border-inverse`   | n/a                                |\n| `.color-border-info`      | `.color-border-accent-emphasis`    |\n| `.color-border-warning`   | `.color-border-attention-emphasis` |\n\n### Background\n\n| `v16`                       | `v18`                          |\n| --------------------------- | ------------------------------ |\n| `.color-bg-canvas`          | `.color-bg-default`            |\n| `.color-bg-canvas-inverse`  | `.color-bg-emphasis`           |\n| `.color-bg-canvas-inset`    | `.color-bg-inset`              |\n| `.color-bg-primary`         | `.color-bg-default`            |\n| `.color-bg-secondary`       | `.color-bg-subtle`             |\n| `.color-bg-tertiary`        | `.color-bg-subtle`             |\n| `.color-bg-info`            | `.color-bg-accent`             |\n| `.color-bg-info-inverse`    | `.color-bg-accent-emphasis`    |\n| `.color-bg-danger-inverse`  | `.color-bg-danger-emphasis`    |\n| `.color-bg-success-inverse` | `.color-bg-success-emphasis`   |\n| `.color-bg-warning`         | `.color-bg-attention`          |\n| `.color-bg-warning-inverse` | `.color-bg-attention-emphasis` |\n\n## Misc\n\n| `v16`           | `v18`               |\n| --------------- | ------------------- |\n| `.text-inherit` | `.color-fg-inherit` |\n\nA few more selectors and variables were removed. Please refer to [deprecations.json](https://github.com/primer/css/blob/main/src/deprecations.json) for a complete list.\n\nNote: The `<kbd>` styles also got removed from the markdown bundle. In case you import the `markdown` bundle **without** the `base` bundle, make sure to import the `<kbd>` styles as well:\n\n```diff\n@import \"@primer/css/markdown/index.scss\";\n+ @import \"@primer/css/base/kbd.scss\";\n```\n"
  },
  {
    "path": "package.json",
    "content": "{\n  \"name\": \"@primer/css\",\n  \"version\": \"22.1.1\",\n  \"description\": \"The CSS implementation of GitHub's Primer Design System\",\n  \"homepage\": \"https://primer.style/css\",\n  \"author\": \"GitHub, Inc.\",\n  \"engines\": {\n    \"node\": \">=16.0.0\"\n  },\n  \"license\": \"MIT\",\n  \"style\": \"dist/primer.css\",\n  \"sass\": \"index.scss\",\n  \"type\": \"module\",\n  \"main\": \"dist/primer.js\",\n  \"repository\": \"https://github.com/primer/css\",\n  \"bugs\": {\n    \"url\": \"https://github.com/primer/css/issues\"\n  },\n  \"keywords\": [\n    \"primer\",\n    \"css\",\n    \"github\",\n    \"design-system\"\n  ],\n  \"scripts\": {\n    \"build:docs\": \"script/build-docs\",\n    \"build:docs:preview\": \"script/build-docs preview\",\n    \"build:css\": \"script/build-css.js\",\n    \"dist\": \"script/dist.js\",\n    \"dist:watch\": \"chokidar \\\"src/**/*.scss\\\" -c \\\"script/dist.js\\\"\",\n    \"stylelint\": \"stylelint --quiet --rd 'src/**/*.scss'\",\n    \"stylelint:fix\": \"npm run stylelint -- --fix\",\n    \"stylelint:remove-disables\": \"script/stylelint-remove-disables.js 'src/**/*.scss'\",\n    \"stylelint:add-disables\": \"script/stylelint-add-disables.js 'src/**/*.scss'\",\n    \"eslint\": \"eslint deprecations.js __tests__ script\",\n    \"prepublishOnly\": \"script/prepublish\",\n    \"pretest\": \"npm run dist && script/pretest\",\n    \"test\": \"NODE_OPTIONS=--experimental-vm-modules npx jest\",\n    \"release\": \"changeset publish\",\n    \"storybook\": \"cd docs && npm i && npx storybook build\",\n    \"build:storybook\": \"cd docs && npm i && npm run build:storybook\"\n  },\n  \"devDependencies\": {\n    \"@changesets/changelog-github\": \"^0.6.0\",\n    \"@changesets/cli\": \"^2.27.12\",\n    \"@csstools/postcss-sass\": \"^5.1.1\",\n    \"@github/prettier-config\": \"^0.0.6\",\n    \"@primer/primitives\": \"^11.3.1\",\n    \"@primer/stylelint-config\": \"^13.2.3\",\n    \"autoprefixer\": \"^10.4.18\",\n    \"chokidar-cli\": \"^3.0.0\",\n    \"cssstats\": \"^4.0.5\",\n    \"eslint\": \"^10.0.2\",\n    \"eslint-plugin-github\": \"^6.0.0\",\n    \"eslint-plugin-jest\": \"^29.2.1\",\n    \"eslint-plugin-prettier\": \"^5.2.3\",\n    \"filesize\": \"^11.0.13\",\n    \"front-matter\": \"^4.0.2\",\n    \"fs-extra\": \"^11.3.0\",\n    \"globby\": \"^16.0.0\",\n    \"jest\": \"^29.5.0\",\n    \"js-yaml\": \"^4.1.0\",\n    \"postcss\": \"^8.5.1\",\n    \"postcss-calc\": \"^10.1.0\",\n    \"postcss-import\": \"^16.0.1\",\n    \"postcss-load-config\": \"^6.0.1\",\n    \"postcss-scss\": \"^4.0.5\",\n    \"postcss-simple-vars\": \"^7.0.1\",\n    \"prettier\": \"^3.4.2\",\n    \"semver\": \"^7.6.0\",\n    \"stylelint\": \"^17.0.0\",\n    \"table\": \"^6.8.1\",\n    \"tslib\": \"^2.8.1\"\n  },\n  \"peerDependencies\": {\n    \"@primer/primitives\": \"10.x || 11.x\"\n  },\n  \"jest\": {\n    \"testEnvironment\": \"node\",\n    \"testPathIgnorePatterns\": [\n      \"/node_modules/\",\n      \"/__tests__/utils/\",\n      \"/__tests__/docs.test.js\"\n    ],\n    \"transform\": {}\n  },\n  \"browserslist\": [\n    \"last 10 Chrome versions\",\n    \"last 4 Firefox versions\",\n    \"last 3 Safari versions\",\n    \"not Safari 12\",\n    \"last 4 Edge versions\",\n    \"not Edge <= 18\",\n    \"Firefox ESR\"\n  ],\n  \"eslintConfig\": {\n    \"extends\": [\n      \"plugin:github/internal\",\n      \"plugin:github/recommended\"\n    ],\n    \"env\": {\n      \"es6\": true,\n      \"node\": true\n    },\n    \"parserOptions\": {\n      \"ecmaVersion\": 2017,\n      \"requireConfigFile\": false\n    }\n  }\n}\n"
  },
  {
    "path": "postcss.config.cjs",
    "content": "const autoprefixer = require('autoprefixer')\nconst sass = require('@csstools/postcss-sass')\nconst scss = require('postcss-scss')\nconst scssImport = require('postcss-import')\nconst { join } = require('path')\n\nmodule.exports = {\n  map: {\n    sourcesContent: false,\n    annotation: true\n  },\n  customSyntax: scss,\n  parser: scss,\n  plugins: [\n    scssImport,\n    sass({\n      includePaths: [join(__dirname, 'node_modules')],\n      outputStyle: process.env.CSS_MINIFY === '0' ? 'expanded' : 'compressed'\n    }),\n    autoprefixer\n  ]\n}\n"
  },
  {
    "path": "prettier.config.cjs",
    "content": "module.exports = require('@github/prettier-config')\n"
  },
  {
    "path": "script/.eslintrc.json",
    "content": "{\n  \"rules\": {\n    \"no-console\": 0\n  }\n}\n"
  },
  {
    "path": "script/analyze-variables.js",
    "content": "#!/usr/bin/env node\nimport postcss from 'postcss'\nimport {join} from 'path'\nimport fs from 'fs'\nimport atImport from 'postcss-import'\nimport syntax from 'postcss-scss'\nimport calc from 'postcss-calc'\nimport simpleVars from 'postcss-simple-vars'\n\nimport { dirname } from 'path';\nimport { fileURLToPath } from 'url';\n\nconst __dirname = dirname(fileURLToPath(import.meta.url));\n\nconst processor = postcss([\n  atImport({path: ['src']}),\n  collectVariables(),\n  simpleVars({includePaths: [join(__dirname, '../src/support/variables')]})\n])\n\nasync function analyzeVariables(fileName) {\n  const contents = fs.readFileSync(fileName, 'utf8')\n\n  const result = await processor.process(contents, {from: fileName, map: false, syntax})\n  for (const message of result.messages) {\n    if (message.plugin === 'postcss-simple-vars' && message.type === 'variable') {\n      if (!result.variables[`$${message.name}`].values.includes(message.value)) {\n        result.variables[`$${message.name}`].values.push(message.value)\n      }\n      let computed = message.value\n      try {\n        const c = `--temp-property: calc(${message.value})`.replace('round(', '(')\n        computed = postcss().use(calc()).process(c).css\n        computed = computed.replace('--temp-property: ', '')\n      } catch (e) {\n        // Couldn't calculate because value might not be a number\n      }\n      result.variables[`$${message.name}`].computed = computed\n    }\n  }\n  return result.variables\n}\n\nfunction checkNode(node) {\n  const allowedFuncts = ['var', 'round', 'cubic-bezier']\n  const funcMatch = node.value.match(/([^\\s]*)\\(/)\n  let approvedMatch = true\n  if (funcMatch && !allowedFuncts.includes(funcMatch[1])) {\n    approvedMatch = false\n  }\n  return node.variable && approvedMatch\n}\n\nfunction collectVariables() {\n  return {\n    postcssPlugin: 'prepare-contents',\n    prepare(result) {\n      const variables = {}\n      return {\n        AtRule(atRule) {\n          atRule.remove()\n        },\n        Comment(comment) {\n          comment.remove()\n        },\n        Declaration(node) {\n          if (checkNode(node)) {\n            node.value = node.value.replace(' !default', '')\n            const fileName = node.source.input.file.replace(`${process.cwd()}/`, '')\n            variables[node.prop] = {\n              // computed: value,\n              values: [node.value],\n              source: {\n                path: fileName,\n                line: node.source.start.line\n              }\n            }\n          } else {\n            node.remove()\n          }\n        },\n        OnceExit() {\n          result.variables = variables\n        }\n      }\n    }\n  }\n}\n\nexport default analyzeVariables\n\n;(async () => {\n  const args = process.argv.slice(2)\n  const file = args.length ? args.shift() : 'src/support/index.scss'\n  const variables = await analyzeVariables(file)\n  JSON.stringify(variables, null, 2)\n})()\n"
  },
  {
    "path": "script/axe-docs",
    "content": "#!/bin/bash\n\n# This workflow runs axe checks on modified doc/content/components/* or doc/content/components/* pages because those include code examples.\n# Developers frequently copy and paste examples directly so it's important to ensure the examples are accessible.\n# Learn about @axe-core/cli: https://github.com/dequelabs/axe-core-npm/tree/develop/packages/cli\n\nif [ -z \"$STRING_OF_PATHS_WE_CARE_ABOUT\" ]; then\n  echo \"The script cannot run because STRING_OF_PATHS_WE_CARE_ABOUT is not correctly set for some reason\"\n  echo \"Exiting...\"\n  exit 1\nelse\n  array=($STRING_OF_PATHS_WE_CARE_ABOUT)\n  printf \"%s\\n\" \"${array[@]}\" > temp.txt\nfi\n\n# Parsing paths from the filenames...\nnav_paths=()\nwhile IFS= read -r file\ndo\n  prefix=\"docs/content\"\n  suffix=\".md\"\n  doc_path=${file#\"$prefix\"}\n  doc_path=${doc_path%\"$suffix\"}\n  nav_paths+=($doc_path)\ndone < temp.txt\nrm temp.txt\n\n# https://stackoverflow.com/a/8574392\ncontainsElement () {\n  local e match=\"$1\"\n  shift\n  for e; do [[ \"$e\" == \"$match\" ]] && return 0; done\n  return 1\n}\n\n# Starting point violations\n# DO NOT ADD TO THIS LIST!\nneeds_to_be_fixed=(\n  /components/autocomplete\n  /components/avatars\n  /components/box\n  /components/buttons\n  /components/header\n  /components/markdown\n  /components/progress\n  /components/select-menu\n  /components/labels\n  /components/timeline\n  /components/toasts\n  /utilities/flexbox\n  /utilities/layout \n)\n\necho \"Pages that included in this starting point violations list are excluded from checks:\"\nprintf '%s\\n' \"${needs_to_be_fixed[@]}\"\n\ndoc_urls=()\nskipped=()\nfor i in \"${nav_paths[@]}\"; \ndo\n  if containsElement \"${i//\\\"/}\" \"${needs_to_be_fixed[@]}\"; then\n    skipped+=($i)\n    continue\n  else\n    doc_url=\"http://localhost:8000$i\"\n    doc_url=\"${doc_url//\\\"/}\"\n    doc_urls+=($doc_url)\n  fi\ndone\n\nif (( ${#skipped[@]} )); then\n  echo \"===========================================================================================\"\n  echo \"WARNING\"\n  echo \"\"\n  echo \"Oh no! We have to skip accessibility checks on these doc pages you updated:\"\n  echo \"\"\n  printf '%s\\n' \"${skipped[@]}\"\n  echo \"\"\n  echo \"because they are part of the starting point violations list.\"\n  echo \"\"\n  echo \"Help us get one closer to getting rid of this list!\"\n  echo \"Consider addressing the accessibility issues on the examples of these pages as part of your PR ❤️\"\n  echo \"===========================================================================================\"\nfi\n\n# Run axe checks only if there are pages to run it on\nif [ ${#doc_urls[@]} -eq 0 ]; then\n  exit\nelse\n  echo \"Installing axe...\"\n  npm install -g @axe-core/cli\n  # https://github.com/dequelabs/axe-core-npm/tree/develop/packages/cli\n  # We exclude rules that depend on full page context.\n  echo \"Running axe...\"\n  axe ${doc_urls[@]} --include \"iframe\" --disable html-has-lang,frame-title,page-has-heading-one,region,color-contrast,landmark-unique,landmark-one-main --exit --show-errors\nfi\n"
  },
  {
    "path": "script/build-css.js",
    "content": "#!/usr/bin/env node\nimport {globby} from 'globby'\nimport compiler from './primer-css-compiler.js'\nimport {dirname, join} from 'path'\n\nimport fsExtra from 'fs-extra'\nconst {mkdirp, readFile, writeFile} = fsExtra\n\n\nconst inDir = 'src'\nconst outDir = 'dist'\nconst bundleNames = {\n  'index.scss': 'primer'\n}\n\nconst files = await globby([`${inDir}/**/index.scss`])\nawait mkdirp(outDir)\nconst inPattern = new RegExp(`^${inDir}/`)\nconst tasks = files.map(async from => {\n  const path = from.replace(inPattern, '')\n  const name = bundleNames[path] || dirname(path).replace(/\\//g, '-')\n\n  const to = join(outDir, `${name}.css`)\n\n  const result = await compiler(await readFile(from, 'utf8'), {from, to})\n\n  await Promise.all([\n    writeFile(to, result.css, 'utf8'),\n  ])\n})\n\nawait Promise.all(tasks)\n"
  },
  {
    "path": "script/build-docs",
    "content": "#!/bin/bash -e\n\n# Build the base project so we can pull out the JSON data\nnpm run dist\ncp -rf dist docs\n\n# Now build the docs site using that data\ncd docs\n\nif [ -n \"$1\" ]; then\n  CI=true npm run build:storybook preview\nelse\n  CI=true npm run build:storybook\nfi\n"
  },
  {
    "path": "script/bundle-size-report.js",
    "content": "#!/usr/bin/env node\nimport { join } from 'path'\nimport { table } from 'table'\nimport { dirname } from 'path'\nimport { fileURLToPath } from 'url'\nimport {filesize} from 'filesize'\nimport fs from 'fs'\n\nconst __dirname = dirname(fileURLToPath(import.meta.url))\n\n// ensure that K and B values line up vertically\nconst filesizeConfig = {symbols: {KB: 'K'}}\nconst prettySize = bytes => filesize(bytes, filesizeConfig)\n\nfunction getBundles(path) {\n  const meta = JSON.parse(fs.readFileSync(join(path, './dist/meta.json')))\n  let metaBundles = Object.values(meta.bundles)\n\n  // filter out support bundles, since they don't generate CSS\n  metaBundles = metaBundles.filter(bundle => !isSupportBundleName(bundle.name))\n  const bundles = {}\n  for (const bundle of metaBundles) {\n    const stats = JSON.parse(fs.readFileSync(join(path, `./${bundle.stats}`)))\n    const entry = {\n      name: bundle.name,\n      path: bundle.css,\n      stats: stats\n    }\n    bundles[bundle.name] = entry\n  }\n\n  return bundles\n}\n\nconst tableOptions = {\n  singleLine: true,\n  border: {\n    topBody: '',\n    topJoin: '',\n    topLeft: '',\n    topRight: '',\n\n    bottomBody: '',\n    bottomJoin: '',\n    bottomLeft: '',\n    bottomRight: '',\n\n    bodyLeft: '|',\n    bodyRight: '|',\n    bodyJoin: '|',\n\n    joinBody: '',\n    joinLeft: '',\n    joinRight: '',\n    joinJoin: ''\n  }\n}\n\n// const sortByName = (a, b) => (a[0] < b[0] ? -1 : a[0] > b[0] ? 1 : 0)\nconst sortByGZipSize = (a, b) => b[3] - a[3]\n// const sortByRawSize = (a, b) => b[5] - a[5]\nconst posNeg = v => (v > 0 ? '+ ' : v < 0 ? '- ' : '')\n\n;(async () => {\n  const currentBundles = getBundles(join(__dirname, '../'))\n  const latestBundles = getBundles(join(__dirname, '../tmp/node_modules/@primer/css/'))\n\n  let data = []\n\n  // Build the rows\n  for (const name of Object.keys(currentBundles)) {\n    const {\n      stats: {\n        selectors: {\n          total: current_selectors_total\n        },\n        gzipSize: current_gzip_size,\n        size: current_size\n      }\n    } = currentBundles[name] || { stats: { selectors: { total: 0 }, gzipSize: 0, size: 0 } }\n\n    const {\n      stats: {\n        selectors: {\n          total: latest_selectors_total\n        },\n        gzipSize: latest_gzip_size,\n        size: latest_size\n      }\n    } = latestBundles[name] || { stats: { selectors: { total: 0 }, gzipSize: 0, size: 0 } }\n\n    const delta = [\n      current_selectors_total - latest_selectors_total,\n      current_gzip_size - latest_gzip_size,\n      current_size - latest_size\n    ].reduce((a, b) => a + b, 0)\n\n    if (delta !== 0) {\n      data.push([\n        name,\n        current_selectors_total,\n        current_selectors_total - latest_selectors_total,\n        current_gzip_size,\n        current_gzip_size - latest_gzip_size,\n        current_size,\n        current_size - latest_size\n      ])\n    }\n  }\n\n  // Sort the data\n  data = data.sort(sortByGZipSize)\n\n  // Beautify the data\n  data = data.map(row => {\n    console.log(row)\n    row[2] = posNeg(row[2]) + `${row[2]}`.replace('-', '')\n    row[3] = prettySize(row[3])\n    row[4] = posNeg(row[4]) + `${prettySize(row[4])}`.replace('-', '')\n    row[5] = prettySize(row[5])\n    row[6] = posNeg(row[6]) + `${prettySize(row[6])}`.replace('-', '')\n    return row\n  })\n\n  // Adding header\n  data = [\n    ['name', 'selectors', '±', 'gzip size', '±', 'raw size', '±'],\n    [':-', '-:', '-:', '-:', '-:', '-:', '-:']\n  ].concat(data)\n\n  console.log(table(data, tableOptions))\n})()\n\nfunction isSupportBundleName(bundleName) {\n  // \"support\", \"marketing-support\", and any future ones?\n  return bundleName.endsWith('support')\n}\n"
  },
  {
    "path": "script/check-for-changeset",
    "content": "#! /bin/bash\n\nDEEPEN_LENGTH=${DEEPEN_LENGTH:-10}\nMAX_DEPTH=${MAX_DEPTH:-300}\n\ndepth=0\n\n# Fetch the base ref, i.e. main\ngit fetch --no-tags --progress --depth=1 origin \"+refs/heads/$GITHUB_BASE_REF:refs/heads/$GITHUB_BASE_REF\"\n\n# Keep fetching more commits until a merge base can be found\nwhile [ -z \"$(git merge-base \"$GITHUB_BASE_REF\" \"origin/$GITHUB_HEAD_REF\")\" ]; do\n  git fetch --no-tags -q --deepen=\"$DEEPEN_LENGTH\" origin \"$GITHUB_BASE_REF\" \"$GITHUB_HEAD_REF\" > /dev/null\n  depth=$(( depth + $DEEPEN_LENGTH ))\n\n  # Make sure we don't end up in an infinite loop\n  if [[ \"$depth\" -ge \"$MAX_DEPTH\" ]]; then\n    echo \"Could not find merge base, max depth exceeded.\"\n    exit 1\n  fi\ndone\n\n# Check for added .md files in the .changeset directory\ngit diff --name-only origin/${GITHUB_BASE_REF}...origin/${GITHUB_HEAD_REF} | grep '.changeset/.*.md' > /dev/null || (\n  exit_code=$?\n  echo \"No changeset found. If these changes should not result in a new version, apply the ${SKIP_LABEL} label to this pull request. If these changes should result in a version bump, please add a changeset https://git.io/J6QvQ\"\n  exit \"${exit_code}\"\n)\n"
  },
  {
    "path": "script/dist.js",
    "content": "#!/usr/bin/env node\nimport {globby} from 'globby'\nimport compiler from './primer-css-compiler.js'\nimport cssstats from 'cssstats'\nimport {dirname, join} from 'path'\n\nimport analyzeVariables from './analyze-variables.js'\n\nimport fsExtra from 'fs-extra'\nconst {copy, remove, mkdirp, readFile, writeFile} = fsExtra\n\nconst inDir = 'src'\nconst outDir = 'dist'\nconst statsDir = join(outDir, 'stats')\nconst encoding = 'utf8'\n\n// Bundle paths are normalized in getPathName() using dirname() and then\n// replacing any slashes with hyphens, but some bundles need to be\n// special-cased. Keys in this object are the path minus the \"src/\" prefix,\n// and values are the bundle file base name. (\"primer\" produces\n// \"dist/primer.css\", etc.)\nconst bundleNames = {\n  'index.scss': 'primer'\n}\n\nasync function dist() {\n  try {\n    const bundles = {}\n\n    await remove(outDir)\n    await mkdirp(statsDir)\n    const files = await globby([`${inDir}/**/index.scss`])\n\n    const inPattern = new RegExp(`^${inDir}/`)\n    const tasks = files.map(async from => {\n      const path = from.replace(inPattern, '')\n      const name = bundleNames[path] || getPathName(dirname(path))\n\n      const to = join(outDir, `${name}.css`)\n      const meta = {\n        name,\n        source: from,\n        sass: `@primer/css/${path}`,\n        css: to,\n        map: `${to}.map`,\n        js: join(outDir, `${name}.js`),\n        stats: join(statsDir, `${name}.json`),\n        legacy: `primer-${name}/index.scss`\n      }\n\n      const scss = await readFile(from, encoding)\n      meta.imports = getExternalImports(scss, path).map(getPathName)\n      const result = await compiler(scss, {from, to})\n      const warnings = result.warnings()\n\n      // We don't want to release changes that cause warnings with postcss. Fail the dist build if any warnings are detected.\n      if (warnings.length) {\n        for (const warning of warnings) {\n          console.warn(warning.toString())\n        }\n        throw new Error(`Warnings while compiling ${from}.  See output above.`)\n      }\n\n      await Promise.all([\n        writeFile(to, result.css, encoding),\n        writeFile(meta.stats, JSON.stringify(cssstats(result.css)), encoding),\n        writeFile(meta.js, `export {cssstats: require('./stats/${name}.json')}`, encoding),\n        result.map ? writeFile(meta.map, result.map.toString(), encoding) : null\n      ])\n      bundles[name] = meta\n    })\n\n    await Promise.all(tasks)\n\n    const meta = {bundles}\n    await writeFile(join(outDir, 'meta.json'), JSON.stringify(meta, null, 2), encoding)\n    await writeVariableData()\n    await copy(join(inDir, 'deprecations.json'), join(outDir, 'deprecations.json'))\n  } catch (error) {\n    console.error(error)\n    process.exitCode = 1\n  }\n}\n\nfunction getExternalImports(scss, relativeTo) {\n  const imports = []\n  const dir = dirname(relativeTo)\n  // XXX: this might *seem* fragile, but since we enforce double quotes via\n  // stylelint, I think it's kosher.\n  scss.replace(/@import \"(.+)\\/index\\.scss\";/g, (_, dep) => {\n    imports.push(join(dir, dep))\n  })\n  return imports\n}\n\nfunction getPathName(path) {\n  return path.replace(/\\//g, '-')\n}\n\ndist()\n\nasync function writeVariableData() {\n  const support = await analyzeVariables('src/support/index.scss')\n  const marketing = await analyzeVariables('src/marketing/support/index.scss')\n  const data = Object.assign({}, support, marketing)\n  writeFile(join(outDir, 'variables.json'), JSON.stringify(data, null, 2))\n}\n"
  },
  {
    "path": "script/prepublish",
    "content": "#!/bin/bash\nset -e\n\n# generate the build directory\nnpm run dist > /dev/null\n\nfiles=$(git ls-files src | sed -e 's#^src/##' | sed -e 's#/.*$##' | sort -u)\necho $files > publish-files.log\ncd src\ncp -rv $files ..\ncd -\n"
  },
  {
    "path": "script/pretest",
    "content": "#!/bin/bash\nset -e\n\nmkdir -p tmp\ncd tmp\necho \"{\\\"package\\\":\\\"tmp\\\",\\\"version\\\":\\\"0.0.0\\\"}\" > package.json\nnpm i @primer/css@latest --force\n"
  },
  {
    "path": "script/primer-css-compiler.js",
    "content": "import postcss from 'postcss'\nimport postCssConfig from '../postcss.config.cjs'\n\nexport default async function compiler(css, options) {\n  const { plugins, ...config } = postCssConfig\n\n  const result = await postcss(plugins).process(css, {\n    ...config,\n    ...options\n  })\n  return result\n}\n"
  },
  {
    "path": "script/selector-diff-report",
    "content": "#!/bin/bash\nset -e\n\nfunction log() {\n  echo \"$@\" 1>&2\n}\n\nfunction warn() {\n  echo \"$@\" 1>&2\n}\n\npkg=\"@primer/css\"\npath=\"dist/stats/primer.json\"\ncp \"tmp/node_modules/@primer/css/dist/stats/primer.json\" before.json\n\ncp $path after.json\n\nkey=\".selectors.values[]\"\njq -r $key before.json | sort | uniq > before.txt\njq -r $key after.json | sort | uniq > after.txt\n\ndiff -U 1 {before,after}.txt\n\nrm {before,after}.{json,txt}\n"
  },
  {
    "path": "script/stylelint-add-disables.js",
    "content": "#!/usr/bin/env -S NODE_NO_WARNINGS=1 node\n// Disables stylelint rules in SASS/CSS files with next-line comments. This is\n// useful when introducing a new rule that causes many failures. The comments\n// can be fixed and removed at while updating the file later.\n//\n// Usage:\n//\n//  script/stylelint-add-disables.js src/**/*.scss\n\nimport fs from 'fs'\nimport {execFile} from 'child_process'\n\nexecFile('stylelint', ['--quiet', '--formatter', 'json', process.argv[2]], (error, stdout, stderr) => {\n  for (const result of JSON.parse(stdout || stderr || '[]')) {\n    const filename = result.source\n    const jsLines = fs.readFileSync(filename, 'utf8').split('\\n')\n    const offensesByLine = {}\n    let addedLines = 0\n\n    // Produces {47: ['github/no-d-none', 'github/no-blur'], 83: ['github/no-blur']}\n    for (const message of result.warnings) {\n      if (offensesByLine[message.lin] && offensesByLine[message.line].includes(message.rule)) {\n        continue\n      } else if (offensesByLine[message.line]) {\n        offensesByLine[message.line].push(message.rule)\n      } else {\n        offensesByLine[message.line] = [message.rule]\n      }\n    }\n\n    for (const line of Object.keys(offensesByLine)) {\n      const lineIndex = Number(line) - 1 + addedLines\n      const previousLine = jsLines[lineIndex - 1]\n      const ruleIds = Array.from(new Set(offensesByLine[line])).join(', ')\n      if (isDisableComment(previousLine)) {\n        if (previousLine.match(/\\s?\\*\\/$/)) {\n          jsLines[lineIndex - 1] = previousLine.replace(/\\s?\\*\\/$/, `, ${ruleIds} */`)\n        } else {\n          jsLines[lineIndex - 1] = `${jsLines[lineIndex - 1]}, ${ruleIds}`\n        }\n      } else {\n        const leftPad = ' '.repeat(jsLines[lineIndex].match(/^\\s*/g)[0].length)\n        jsLines.splice(lineIndex, 0, `${leftPad}// stylelint-disable-next-line ${ruleIds}`)\n        addedLines += 1\n      }\n    }\n\n    if (result.warnings.length !== 0) {\n      fs.writeFileSync(filename, jsLines.join('\\n'), 'utf8')\n    }\n  }\n})\n\nfunction isDisableComment(line) {\n  return line && line.match(/\\/(\\*|\\/) stylelint-disable(-next-line)? .+(\\*\\/)?/)\n}\n"
  },
  {
    "path": "script/stylelint-remove-disables.js",
    "content": "#!/usr/bin/env node\nimport {execFile} from 'child_process'\nimport {readFileSync, writeFileSync} from 'fs'\n\nconst files = process.argv.slice(2)\nif (files.length === 0) {\n  files.push('app/assets/stylesheets')\n}\n\n// we use an empty \"marker\" to delineate removed lines\nconst REMOVED = `===REMOVED@${Date.now()}===`\n\nexecFile('stylelint', ['--rd', '--quiet', '--formatter', 'json', process.argv[2]], (error, stdout) => {\n\n  // Filter to only needless disables comments\n  const results = JSON.parse(stdout)\n    .filter(result => result.warnings.length > 0)\n    .map(({source, warnings}) => {\n      return {\n        source,\n        warnings: warnings.filter(warning => warning.rule === '--report-needless-disables')\n      }\n    })\n\n  for (const {source, warnings} of results) {\n    console.log(`--- ${source}\\n+++ ${source}`)\n    const lines = readFileSync(source, 'utf8').split(/\\n/)\n    for (const {text, line: lineNum} of warnings) {\n      const ruleName = text.match(/^Needless disable for \"(.+)\"$/)[1]\n      const line = lines[lineNum - 1]\n      let disableComment = parseDisableComment(line)\n\n      if (disableComment) {\n        const rules = new Set(disableComment.rules)\n        rules.delete(ruleName)\n        let replacementLine = line\n        if (rules.size === 0) {\n          console.log(`@@ ${lineNum},${lineNum - 1} @@`)\n          replacementLine = line.replace(`// ${disableComment.content}`, REMOVED)\n        } else {\n          console.log(`@@ ${lineNum},${lineNum} @@`)\n          replacementLine = line.replace(disableComment.content, `${disableComment.type} ${Array.from(rules).join(', ')}`)\n        }\n        lines[lineNum - 1] = replacementLine\n\n        if (lines[lineNum - 2]) {\n          console.log(`${lines[lineNum - 2]}`)\n        }\n        console.log(`- ${line}`)\n        if (!replacementLine.includes(REMOVED)) {\n          console.log(`+ ${replacementLine}`)\n        }\n        if (lines[lineNum]) {\n          console.log(`${lines[lineNum]}`)\n        }\n      }\n    }\n    console.log('')\n    const output = lines.map(line => {\n      if (line.trim() === REMOVED) {\n        return null\n      } else if (line.includes(REMOVED)) {\n        line = line.replace(REMOVED, '').trimEnd()\n      }\n\n      return line\n    }).filter(line => line !== null).join('\\n')\n\n    writeFileSync(source, output, 'utf8')\n  }\n})\n\nfunction parseDisableComment(str) {\n  const match = str.match(/(stylelint-disable((-next)?-line)?)\\s+(.+)$/)\n  return match\n    ? {\n        content: match[0],\n        type: match[1],\n        rules: match[4].split(/,\\s+/)\n      }\n    : false\n}\n"
  },
  {
    "path": "src/autocomplete/README.md",
    "content": "---\nbundle: \"autocomplete\"\ngenerated: true\n---\n\n# Primer CSS: `autocomplete` bundle\n\n## Usage\n\nPrimer CSS source files are written in [SCSS]. To include this Primer CSS module in your own build, ensure that your `node_modules` directory is listed in your Sass include paths, then import it with:\n\n```scss\n@import \"@primer/css/autocomplete/index.scss\";\n```\n\n## Build\n\nThe `@primer/css` npm package includes a standalone CSS build of this module in `dist/autocomplete.css`.\n\n## License\n\n[MIT](https://github.com/primer/css/blob/main/LICENSE) &copy; [GitHub](https://github.com/)\n\n\n[scss]: https://sass-lang.com/documentation/syntax#scss\n"
  },
  {
    "path": "src/autocomplete/index.scss",
    "content": "// support files\n@import '../support/index.scss';\n@import './suggester.scss';\n"
  },
  {
    "path": "src/autocomplete/suggester.scss",
    "content": "// Needs refactoring\n// stylelint-disable selector-max-type, selector-no-qualifying-type\n\n.suggester {\n  position: relative;\n  top: 0;\n  left: 0;\n  min-width: 180px;\n  padding: 0;\n  margin: 0;\n  margin-top: var(--base-size-24);\n  list-style: none;\n  cursor: pointer;\n  background: var(--overlay-bgColor, var(--color-canvas-overlay));\n  // stylelint-disable-next-line primer/borders, primer/colors\n  border: $border-width $border-style var(--borderColor-default, var(--color-border-default));\n  // stylelint-disable-next-line primer/borders\n  border-radius: $border-radius;\n  box-shadow: var(--shadow-resting-medium, var(--color-shadow-medium));\n\n  li {\n    display: block;\n    padding: var(--base-size-4) var(--base-size-8);\n    // stylelint-disable-next-line primer/typography\n    font-weight: $font-weight-semibold;\n    // stylelint-disable-next-line primer/borders, primer/colors\n    border-bottom: $border-width $border-style var(--borderColor-muted, var(--color-border-muted));\n\n    small {\n      // stylelint-disable-next-line primer/typography\n      font-weight: $font-weight-normal;\n      color: var(--fgColor-muted, var(--color-fg-muted));\n    }\n\n    &:last-child {\n      border-bottom: 0;\n      // stylelint-disable-next-line primer/borders\n      border-bottom-right-radius: $border-radius;\n      // stylelint-disable-next-line primer/borders\n      border-bottom-left-radius: $border-radius;\n    }\n\n    &:first-child {\n      // stylelint-disable-next-line primer/borders\n      border-top-left-radius: $border-radius;\n      // stylelint-disable-next-line primer/borders\n      border-top-right-radius: $border-radius;\n    }\n\n    &:hover {\n      color: var(--fgColor-onEmphasis, var(--color-fg-on-emphasis));\n      text-decoration: none;\n      background: var(--bgColor-accent-emphasis, var(--color-accent-emphasis));\n\n      small {\n        color: var(--fgColor-onEmphasis, var(--color-fg-on-emphasis));\n      }\n\n      .octicon {\n        color: inherit !important;\n      }\n    }\n\n    &[aria-selected='true'],\n    &.navigation-focus {\n      color: var(--fgColor-onEmphasis, var(--color-fg-on-emphasis));\n      text-decoration: none;\n      background: var(--bgColor-accent-emphasis, var(--color-accent-emphasis));\n\n      small {\n        color: var(--fgColor-onEmphasis, var(--color-fg-on-emphasis));\n      }\n\n      .octicon {\n        color: inherit !important;\n      }\n    }\n  }\n}\n\n.suggester-container {\n  position: absolute;\n  top: 0;\n  left: 0;\n  z-index: 30;\n}\n\n// Responsive\n\n.page-responsive {\n  @media (max-width: $width-sm) {\n    .suggester-container {\n      right: var(--base-size-8) !important;\n      left: var(--base-size-8) !important;\n    }\n\n    .suggester li {\n      padding: var(--base-size-8) var(--base-size-16);\n    }\n  }\n}\n"
  },
  {
    "path": "src/avatars/README.md",
    "content": "---\nbundle: \"avatars\"\ngenerated: true\n---\n\n# Primer CSS: `avatars` bundle\n\n## Usage\n\nPrimer CSS source files are written in [SCSS]. To include this Primer CSS module in your own build, ensure that your `node_modules` directory is listed in your Sass include paths, then import it with:\n\n```scss\n@import \"@primer/css/avatars/index.scss\";\n```\n\n## Build\n\nThe `@primer/css` npm package includes a standalone CSS build of this module in `dist/avatars.css`.\n\n## License\n\n[MIT](https://github.com/primer/css/blob/main/LICENSE) &copy; [GitHub](https://github.com/)\n\n\n[scss]: https://sass-lang.com/documentation/syntax#scss\n"
  },
  {
    "path": "src/avatars/avatar-parent-child.scss",
    "content": "// .avatar-parent-child is when you see a small avatar at the bottom right\n// corner of a larger avatar.\n//\n// No Styleguide version\n.avatar-parent-child {\n  position: relative;\n}\n\n.avatar-child {\n  position: absolute;\n  right: -15%;\n  bottom: -9%;\n  background-color: var(--bgColor-default, var(--color-canvas-default)); // For transparent backgrounds\n  // stylelint-disable-next-line primer/borders\n  border-radius: $border-radius-1;\n  box-shadow: var(--avatar-shadow, var(--color-avatar-child-shadow));\n}\n"
  },
  {
    "path": "src/avatars/circle-badge.scss",
    "content": "// Circle badge icon with drop shadow for icons and logos\n\n.CircleBadge {\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  background-color: var(--bgColor-default, var(--color-canvas-default));\n  border-radius: 50%;\n  box-shadow: var(--shadow-resting-medium, var(--color-shadow-medium));\n}\n\n.CircleBadge-icon {\n  max-width: 60% !important;\n  height: auto !important;\n  max-height: 55% !important;\n}\n\n// Small badge\n.CircleBadge--small {\n  width: 56px;\n  height: 56px;\n}\n\n// Medium badge\n.CircleBadge--medium {\n  width: 96px;\n  height: 96px;\n}\n\n// Large badge\n.CircleBadge--large {\n  width: 128px;\n  height: 128px;\n}\n\n// Dashed line that connects badges..\n// Wrap around 2 or more badges to create a horizonal line:\n\n.DashedConnection {\n  position: relative;\n\n  &::before {\n    position: absolute;\n    top: 50%;\n    left: 0;\n    width: 100%;\n    content: '';\n    // stylelint-disable-next-line primer/borders\n    border-bottom: 2px dashed var(--borderColor-default, var(--color-border-default));\n  }\n\n  .CircleBadge {\n    position: relative;\n  }\n}\n"
  },
  {
    "path": "src/avatars/index.scss",
    "content": "@import '../support/index.scss';\n\n// Avatars\n@import './avatar-parent-child.scss';\n@import './circle-badge.scss';\n"
  },
  {
    "path": "src/base/README.md",
    "content": "---\nbundle: \"base\"\ngenerated: true\n---\n\n# Primer CSS: `base` bundle\n\n## Usage\n\nPrimer CSS source files are written in [SCSS]. To include this Primer CSS module in your own build, ensure that your `node_modules` directory is listed in your Sass include paths, then import it with:\n\n```scss\n@import \"@primer/css/base/index.scss\";\n```\n\n## Build\n\nThe `@primer/css` npm package includes a standalone CSS build of this module in `dist/base.css`.\n\n## License\n\n[MIT](https://github.com/primer/css/blob/main/LICENSE) &copy; [GitHub](https://github.com/)\n\n\n[scss]: https://sass-lang.com/documentation/syntax#scss\n"
  },
  {
    "path": "src/base/base.scss",
    "content": "// stylelint-disable selector-max-type, selector-no-qualifying-type, primer/typography\n* {\n  box-sizing: border-box;\n}\n\ninput,\nselect,\ntextarea,\nbutton {\n  font-family: inherit;\n  font-size: inherit;\n  line-height: inherit;\n}\n\nbody {\n  font-family: $body-font;\n  font-size: var(--body-font-size, $body-font-size);\n  font-weight: var(--base-text-weight-normal, 400);\n  line-height: $body-line-height;\n  color: var(--fgColor-default, var(--color-fg-default));\n  background-color: var(--bgColor-default, var(--color-canvas-default));\n}\n\na {\n  color: var(--fgColor-accent, var(--color-accent-fg));\n  text-decoration: none;\n\n  &:hover {\n    text-decoration: underline;\n  }\n}\n\nb,\nstrong {\n  font-weight: $font-weight-bold;\n}\n\nfieldset {\n  padding: 0;\n  margin: 0;\n  border: 0;\n}\n\nlabel {\n  font-weight: $font-weight-bold;\n}\n\n// Custom styling for HTML5 validation bubbles (WebKit only)\n::placeholder {\n  color: var(--fgColor-muted, var(--color-fg-subtle));\n  opacity: 1; // override opacity in normalize.css\n}\n\n// Horizontal lines\n//\n// TODO-MDO: Remove `.rule` from everywhere and replace with `<hr>`s\nhr,\n.rule {\n  height: 0;\n  // stylelint-disable-next-line primer/spacing\n  margin: 15px 0;\n  overflow: hidden;\n  background: transparent;\n  border: 0;\n  // stylelint-disable-next-line primer/borders, primer/colors\n  border-bottom: $border-width $border-style var(--borderColor-muted, var(--color-border-muted));\n\n  @include clearfix();\n}\n\n//\n// Remove most spacing between table cells.\n//\n\ntable {\n  border-spacing: 0;\n  // stylelint-disable-next-line primer/borders\n  border-collapse: collapse;\n}\n\ntd,\nth {\n  padding: 0;\n}\n\nbutton {\n  cursor: pointer;\n  // Remove border radius added by Chrome macOS\n  border-radius: 0;\n}\n\n// increase the selector specificity for [hidden]\n// so that it always overrides utility classes (.d-block, etc.)\n[hidden][hidden] {\n  display: none !important;\n}\n\ndetails {\n  summary {\n    cursor: pointer;\n  }\n}\n\n// global focus styles\n\na,\nbutton,\n[role='button'],\ninput[type='radio'],\ninput[type='checkbox'] {\n  // fallback :focus state\n  &:focus {\n    @include focusOutline;\n\n    // remove fallback :focus if :focus-visible is supported\n    &:not(:focus-visible) {\n      outline: solid 1px transparent;\n    }\n  }\n\n  // default focus state\n  &:focus-visible {\n    @include focusOutline;\n  }\n}\n\na:not([class]),\ninput[type='radio'],\ninput[type='checkbox'] {\n  &:focus,\n  &:focus-visible {\n    outline-offset: 0;\n  }\n}\n\n// for handling focus conditionally\n.focus {\n  @include focusBoxShadowInset;\n}\n\n// Windows High Contrast mode\n@media (forced-colors: active) {\n  *:focus,\n  *:focus-visible {\n    outline: solid 1px transparent;\n  }\n\n  input:not([type='radio'], [type='checkbox']),\n  textarea,\n  select {\n    &:focus,\n    &:focus-visible {\n      outline-offset: 2px;\n    }\n  }\n}\n"
  },
  {
    "path": "src/base/index.scss",
    "content": "@import '../support/index.scss';\n@import './native-colors.scss';\n@import './normalize.scss';\n@import './base.scss';\n@import './kbd.scss';\n@import './typography-base.scss';\n@import './octicons.scss';\n"
  },
  {
    "path": "src/base/kbd.scss",
    "content": "// Keyboard shortcuts\n// stylelint-disable selector-max-type\n\nkbd {\n  display: inline-block;\n  padding: var(--base-size-4);\n  // stylelint-disable-next-line primer/typography, declaration-property-value-no-unknown\n  font: 11px $mono-font;\n  // stylelint-disable-next-line primer/typography\n  line-height: 10px;\n  color: var(--fgColor-default, var(--color-fg-default));\n  vertical-align: middle;\n  background-color: var(--bgColor-muted, var(--color-canvas-subtle));\n  // stylelint-disable-next-line primer/borders, primer/colors\n  border: $border-style $border-width var(--borderColor-neutral-muted, var(--color-neutral-muted));\n  border-bottom-color: var(--borderColor-neutral-muted, var(--color-neutral-muted));\n  // stylelint-disable-next-line primer/borders\n  border-radius: $border-radius;\n  // stylelint-disable-next-line primer/box-shadow\n  box-shadow: inset 0 -1px 0 var(--borderColor-neutral-muted, var(--color-neutral-muted));\n  max-width: 100%;\n}\n"
  },
  {
    "path": "src/base/native-colors.scss",
    "content": "// color-scheme\n// Enables color modes for native elements\n\n@include color-mode(light) { color-scheme: light; }\n\n@include color-mode(dark) { color-scheme: dark; }\n\n[data-color-mode] {\n  color: var(--fgColor-default, var(--color-fg-default));\n  background-color: var(--bgColor-default, var(--color-canvas-default));\n}\n\n// Windows High Contrast mode\n\n// Improves focus state for various components when Windows High Contrast mode is enabled\n// stylelint-disable selector-max-type\n@media (forced-colors: active) {\n  body {\n    --color-accent-emphasis: Highlight;\n    --color-fg-on-emphasis: LinkText;\n    --fgColor-onEmphasis: LinkText;\n    --fgColor-accent: Highlight;\n  }\n}\n"
  },
  {
    "path": "src/base/normalize.scss",
    "content": "// stylelint-disable\n/*! normalize.css v4.1.1 | MIT License | github.com/necolas/normalize.css */\n\n/**\n * 1. Change the default font family in all browsers (opinionated).\n * 2. Prevent adjustments of font size after orientation changes in IE and iOS.\n */\n\nhtml {\n  font-size: 16px; /* this can be removed when all of GitHub uses rem units */\n  font-family: sans-serif; /* 1 */\n  -ms-text-size-adjust: 100%; /* 2 */\n  -webkit-text-size-adjust: 100%; /* 2 */\n}\n\n/**\n * Remove the margin in all browsers (opinionated).\n */\n\nbody {\n  margin: 0;\n}\n\n/* HTML5 display definitions\n   ========================================================================== */\n\n/**\n * Add the correct display in IE 9-.\n * 1. Add the correct display in Edge, IE, and Firefox.\n * 2. Add the correct display in IE.\n */\n\narticle,\naside,\ndetails, /* 1 */\nfigcaption,\nfigure,\nfooter,\nheader,\nmain, /* 2 */\nmenu,\nnav,\nsection {\n  /* 1 */\n  display: block;\n}\n\nsummary {\n  display: list-item;\n}\n\n/**\n * Add the correct display in IE 9-.\n */\n\naudio,\ncanvas,\nprogress,\nvideo {\n  display: inline-block;\n}\n\n/**\n * Add the correct display in iOS 4-7.\n */\n\naudio:not([controls]) {\n  display: none;\n  height: 0;\n}\n\n/**\n * Add the correct vertical alignment in Chrome, Firefox, and Opera.\n */\n\nprogress {\n  vertical-align: baseline;\n}\n\n/**\n * Add the correct display in IE 10-.\n * 1. Add the correct display in IE.\n */\n\ntemplate, /* 1 */\n[hidden] {\n  display: none !important;\n}\n\n/* Links\n   ========================================================================== */\n\n/**\n * Remove the gray background on active links in IE 10.\n */\n\na {\n  background-color: transparent; /* 1 */\n}\n\n/* Text-level semantics\n   ========================================================================== */\n\n/**\n * 1. Remove the bottom border in Firefox 39-.\n * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.\n */\n\nabbr[title] {\n  border-bottom: none; /* 1 */\n  text-decoration: underline; /* 2 */\n  text-decoration: underline dotted; /* 2 */\n}\n\n/**\n * Prevent the duplicate application of `bolder` by the next rule in Safari 6.\n */\n\nb,\nstrong {\n  font-weight: inherit;\n}\n\n/**\n * Add the correct font weight in Chrome, Edge, and Safari.\n */\n\nb,\nstrong {\n  font-weight: bolder;\n}\n\n/**\n * Add the correct font style in Android 4.3-.\n */\n\ndfn {\n  font-style: italic;\n}\n\n/**\n * Correct the font size and margin on `h1` elements within `section` and\n * `article` contexts in Chrome, Firefox, and Safari.\n */\n\nh1 {\n  font-size: 2em;\n  margin: 0.67em 0;\n}\n\n/**\n * Add the correct background and color in IE 9-.\n */\n\nmark {\n  background-color: var(--bgColor-attention-muted, var(--color-attention-subtle));\n  color: var(--fgColor-default, var(--color-fg-default));\n}\n\n/**\n * Add the correct font size in all browsers.\n */\n\nsmall {\n  font-size: 80%;\n}\n\n/**\n * Prevent `sub` and `sup` elements from affecting the line height in\n * all browsers.\n */\n\nsub,\nsup {\n  font-size: 75%;\n  line-height: 0;\n  position: relative;\n  vertical-align: baseline;\n}\n\nsub {\n  bottom: -0.25em;\n}\n\nsup {\n  top: -0.5em;\n}\n\n/* Embedded content\n   ========================================================================== */\n\n/**\n * Remove the border on images inside links in IE 10-.\n */\n\nimg {\n  border-style: none;\n}\n\n/**\n * Hide the overflow in IE.\n */\n\nsvg:not(:root) {\n  overflow: hidden;\n}\n\n/* Grouping content\n   ========================================================================== */\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\ncode,\nkbd,\npre,\nsamp {\n  font-family: monospace; /* 1 */\n  font-size: 1em; /* 2 */\n}\n\n/**\n * Add the correct margin in IE 8.\n */\n\nfigure {\n  margin: 1em var(--base-size-40);\n}\n\n/**\n * 1. Add the correct box sizing in Firefox.\n * 2. Show the overflow in Edge and IE.\n */\n\nhr {\n  box-sizing: content-box; /* 1 */\n  height: 0; /* 1 */\n  overflow: visible; /* 2 */\n}\n\n/* Forms\n   ========================================================================== */\n\n/**\n * 1. Change font properties to `inherit` in all browsers (opinionated).\n * 2. Remove the margin in Firefox and Safari.\n */\n\nbutton,\ninput,\nselect,\ntextarea {\n  font: inherit; /* 1 */\n  margin: 0; /* 2 */\n}\n\n/**\n * Restore the font weight unset by the previous rule.\n */\n\noptgroup {\n  font-weight: $font-weight-bold;\n}\n\n/**\n * Show the overflow in IE.\n * 1. Show the overflow in Edge.\n */\n\nbutton,\ninput {\n  /* 1 */\n  overflow: visible;\n}\n\n/**\n * Remove the inheritance of text transform in Edge, Firefox, and IE.\n * 1. Remove the inheritance of text transform in Firefox.\n */\n\nbutton,\nselect {\n  /* 1 */\n  text-transform: none;\n}\n\n/**\n * 1. Prevent a WebKit bug where (2) destroys native `audio` and `video`\n *    controls in Android 4.\n * 2. Correct the inability to style clickable types in iOS and Safari.\n */\n\nbutton,\nhtml [type=\"button\"], /* 1 */\n[type=\"reset\"],\n[type=\"submit\"] {\n  -webkit-appearance: button; /* 2 */\n}\n\n/**\n * Change the border, margin, and padding in all browsers (opinionated).\n */\n\nfieldset {\n  border: $border-width $border-style #c0c0c0;\n  margin: 0 2px;\n  padding: 0.35em 0.625em $em-spacer-6;\n}\n\n/**\n * 1. Correct the text wrapping in Edge and IE.\n * 2. Correct the color inheritance from `fieldset` elements in IE.\n * 3. Remove the padding so developers are not caught out when they zero out\n *    `fieldset` elements in all browsers.\n */\n\nlegend {\n  box-sizing: border-box; /* 1 */\n  color: inherit; /* 2 */\n  display: table; /* 1 */\n  max-width: 100%; /* 1 */\n  padding: 0; /* 3 */\n  white-space: normal; /* 1 */\n}\n\n/**\n * Remove the default vertical scrollbar in IE.\n */\n\ntextarea {\n  overflow: auto;\n}\n\n/**\n * 1. Add the correct box sizing in IE 10-.\n * 2. Remove the padding in IE 10-.\n */\n\n[type='checkbox'],\n[type='radio'] {\n  box-sizing: border-box; /* 1 */\n  padding: 0; /* 2 */\n}\n\n/**\n * Correct the cursor style of increment and decrement buttons in Chrome.\n */\n\n[type='number']::-webkit-inner-spin-button,\n[type='number']::-webkit-outer-spin-button {\n  height: auto;\n}\n\n/**\n * Remove the inner padding and cancel buttons in Chrome and Safari on OS X.\n */\n\n[type='search']::-webkit-search-cancel-button,\n[type='search']::-webkit-search-decoration {\n  -webkit-appearance: none;\n}\n\n/**\n * Correct the text style of placeholders in Chrome, Edge, and Safari.\n */\n\n::-webkit-input-placeholder {\n  color: inherit;\n  opacity: 0.54;\n}\n\n/**\n * 1. Correct the inability to style clickable types in iOS and Safari.\n * 2. Change font properties to `inherit` in Safari.\n */\n\n::-webkit-file-upload-button {\n  -webkit-appearance: button; /* 1 */\n  font: inherit; /* 2 */\n}\n"
  },
  {
    "path": "src/base/octicons.scss",
    "content": ".octicon {\n  display: inline-block;\n  overflow: visible !important;\n  vertical-align: text-bottom;\n  fill: currentColor;\n}\n"
  },
  {
    "path": "src/base/typography-base.scss",
    "content": "// Headings\n// --------------------------------------------------\n// stylelint-disable selector-max-type\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n  margin-top: 0;\n  margin-bottom: 0;\n}\n\nh1 { @include h1; }\nh2 { @include h2; }\nh3 { @include h3; }\nh4 { @include h4; }\nh5 { @include h5; }\nh6 { @include h6; }\n\n// Body text\n// --------------------------------------------------\n\np {\n  margin-top: 0;\n  // stylelint-disable-next-line primer/spacing\n  margin-bottom: 10px;\n}\n\nsmall {\n  // stylelint-disable-next-line primer/typography\n  font-size: 90%;\n}\n\nblockquote {\n  margin: 0;\n}\n\n// Lists\n// --------------------------------------------------\n\nul,\nol {\n  padding-left: 0;\n  margin-top: 0;\n  margin-bottom: 0;\n}\n\nol ol,\nul ol {\n  list-style-type: lower-roman;\n}\n\nul ul ol,\nul ol ol,\nol ul ol,\nol ol ol {\n  list-style-type: lower-alpha;\n}\n\ndd {\n  margin-left: 0;\n}\n\n// Monospaced\n// --------------------------------------------------\n\ntt,\ncode,\nsamp {\n  // stylelint-disable-next-line primer/typography\n  font-family: $mono-font;\n  // stylelint-disable-next-line primer/typography\n  font-size: $font-size-small;\n}\n\npre {\n  margin-top: 0;\n  margin-bottom: 0;\n  // stylelint-disable-next-line primer/typography\n  font-family: $mono-font;\n  // stylelint-disable-next-line primer/typography\n  font-size: $font-size-small;\n}\n\n// Octicons\n// --------------------------------------------------\n\n// Move this over here as a temporary override to the octicons source repo\n// instead of updating that upstream.\n.octicon {\n  vertical-align: text-bottom;\n}\n"
  },
  {
    "path": "src/box/README.md",
    "content": "---\nbundle: \"box\"\ngenerated: true\n---\n\n# Primer CSS: `box` bundle\n\n## Usage\n\nPrimer CSS source files are written in [SCSS]. To include this Primer CSS module in your own build, ensure that your `node_modules` directory is listed in your Sass include paths, then import it with:\n\n```scss\n@import \"@primer/css/box/index.scss\";\n```\n\n## Build\n\nThe `@primer/css` npm package includes a standalone CSS build of this module in `dist/box.css`.\n\n## License\n\n[MIT](https://github.com/primer/css/blob/main/LICENSE) &copy; [GitHub](https://github.com/)\n\n\n[scss]: https://sass-lang.com/documentation/syntax#scss\n"
  },
  {
    "path": "src/box/box-overlay.scss",
    "content": ".Box--overlay {\n  // stylelint-disable-next-line primer/responsive-widths\n  width: 448px;\n  margin-right: auto;\n  margin-left: auto;\n  background-color: var(--bgColor-default, var(--color-canvas-default));\n  background-clip: padding-box;\n  border-color: var(--borderColor-default, var(--color-border-default));\n  // stylelint-disable-next-line primer/box-shadow\n  box-shadow: 0 0 18px rgb(0, 0, 0, 0.4);\n\n  .Box-header {\n    margin: 0;\n    border-width: 0;\n    // stylelint-disable-next-line primer/borders\n    border-bottom-width: $border-width;\n    // stylelint-disable-next-line primer/borders\n    border-top-left-radius: $border-radius;\n    // stylelint-disable-next-line primer/borders\n    border-top-right-radius: $border-radius;\n  }\n}\n\n.Box-overlay--narrow {\n  width: 320px;\n}\n\n.Box-overlay--wide {\n  // stylelint-disable-next-line primer/responsive-widths\n  width: 640px;\n}\n\n.Box-body {\n  &.scrollable-overlay {\n    max-height: 400px;\n    overflow-y: scroll;\n  }\n\n  .help {\n    padding-top: var(--base-size-8);\n    margin: 0;\n    color: var(--fgColor-muted, var(--color-fg-muted));\n    text-align: center;\n  }\n}\n"
  },
  {
    "path": "src/box/index.scss",
    "content": "@import '../support/index.scss';\n@import './box-overlay.scss';\n"
  },
  {
    "path": "src/branch-name/README.md",
    "content": "---\nbundle: \"branch-name\"\ngenerated: true\n---\n\n# Primer CSS: `branch-name` bundle\n\n## Usage\n\nPrimer CSS source files are written in [SCSS]. To include this Primer CSS module in your own build, ensure that your `node_modules` directory is listed in your Sass include paths, then import it with:\n\n```scss\n@import \"@primer/css/branch-name/index.scss\";\n```\n\n## Build\n\nThe `@primer/css` npm package includes a standalone CSS build of this module in `dist/branch-name.css`.\n\n## License\n\n[MIT](https://github.com/primer/css/blob/main/LICENSE) &copy; [GitHub](https://github.com/)\n\n\n[scss]: https://sass-lang.com/documentation/syntax#scss\n"
  },
  {
    "path": "src/branch-name/branch-name.scss",
    "content": "// stylelint-disable selector-max-type, selector-no-qualifying-type\n\n// A nice way to display branch names inside the UI. Can be a link or not.\n\n.branch-name {\n  display: inline-block;\n  // stylelint-disable-next-line primer/spacing\n  padding: 2px 6px;\n  // stylelint-disable-next-line primer/typography, declaration-property-value-no-unknown\n  font: 12px $mono-font;\n  color: var(--fgColor-muted, var(--color-fg-muted));\n  word-break: break-all;\n  background-color: var(--bgColor-accent-muted, var(--color-accent-subtle));\n  // stylelint-disable-next-line primer/borders\n  border-radius: $border-radius;\n\n  .octicon {\n    // stylelint-disable-next-line primer/spacing\n    margin: 1px -2px 0 0;\n    color: var(--fgColor-muted, var(--color-fg-muted));\n  }\n}\n\n// When a branch name is a link\n\na.branch-name {\n  color: var(--fgColor-accent, var(--color-accent-fg));\n  background-color: var(--bgColor-accent-muted, var(--color-accent-subtle));\n\n  .octicon {\n    color: var(--fgColor-accent, var(--color-accent-fg));\n  }\n}\n"
  },
  {
    "path": "src/branch-name/index.scss",
    "content": "// support files\n@import '../support/index.scss';\n@import './branch-name.scss';\n"
  },
  {
    "path": "src/buttons/README.md",
    "content": "---\nbundle: \"buttons\"\ngenerated: true\n---\n\n# Primer CSS: `buttons` bundle\n\n## Usage\n\nPrimer CSS source files are written in [SCSS]. To include this Primer CSS module in your own build, ensure that your `node_modules` directory is listed in your Sass include paths, then import it with:\n\n```scss\n@import \"@primer/css/buttons/index.scss\";\n```\n\n## Build\n\nThe `@primer/css` npm package includes a standalone CSS build of this module in `dist/buttons.css`.\n\n## License\n\n[MIT](https://github.com/primer/css/blob/main/LICENSE) &copy; [GitHub](https://github.com/)\n\n\n[scss]: https://sass-lang.com/documentation/syntax#scss\n"
  },
  {
    "path": "src/buttons/button-group.scss",
    "content": "// Button group\n//\n// A button group is a series of buttons laid out next to each other, all part\n// of one visual button, but separated by rules to be separate.\n\n.BtnGroup {\n  display: inline-block;\n  vertical-align: middle;\n\n  @include clearfix();\n\n  // Proper spacing for multiple button groups (a la, gollum editor)\n  + .BtnGroup,\n  + .btn {\n    margin-left: var(--base-size-4);\n  }\n}\n\n.BtnGroup-item {\n  position: relative;\n  float: left;\n  border-right-width: 0;\n  border-radius: 0;\n\n  &:first-child {\n    // stylelint-disable-next-line primer/borders\n    border-top-left-radius: $border-radius;\n    // stylelint-disable-next-line primer/borders\n    border-bottom-left-radius: $border-radius;\n  }\n\n  &:last-child {\n    // stylelint-disable-next-line primer/borders\n    border-right-width: $border-width;\n    // stylelint-disable-next-line primer/borders\n    border-top-right-radius: $border-radius;\n    // stylelint-disable-next-line primer/borders\n    border-bottom-right-radius: $border-radius;\n  }\n\n  &.selected,\n  &[aria-selected='true'],\n  &:focus,\n  &:active,\n  &:hover {\n    // stylelint-disable-next-line primer/borders\n    border-right-width: $border-width;\n\n    + .BtnGroup-item,\n    + .BtnGroup-parent .BtnGroup-item {\n      border-left-width: 0;\n    }\n  }\n}\n\n.BtnGroup-parent {\n  float: left;\n\n  &:first-child .BtnGroup-item {\n    // stylelint-disable-next-line primer/borders\n    border-top-left-radius: $border-radius;\n    // stylelint-disable-next-line primer/borders\n    border-bottom-left-radius: $border-radius;\n  }\n\n  &:last-child .BtnGroup-item {\n    // stylelint-disable-next-line primer/borders\n    border-right-width: $border-width;\n    // stylelint-disable-next-line primer/borders\n    border-top-right-radius: $border-radius;\n    // stylelint-disable-next-line primer/borders\n    border-bottom-right-radius: $border-radius;\n  }\n\n  .BtnGroup-item {\n    border-right-width: 0;\n    border-radius: 0;\n  }\n\n  &.selected,\n  &[aria-selected='true'],\n  &:focus,\n  &:active,\n  &:hover {\n    .BtnGroup-item {\n      // stylelint-disable-next-line primer/borders\n      border-right-width: $border-width;\n    }\n\n    + .BtnGroup-item,\n    + .BtnGroup-parent .BtnGroup-item {\n      border-left-width: 0;\n    }\n  }\n}\n\n// ensure that the focus ring sits above the adjacent buttons\n.BtnGroup-item,\n.BtnGroup-parent {\n  &:focus,\n  &:active {\n    z-index: 1;\n  }\n}\n"
  },
  {
    "path": "src/buttons/button.scss",
    "content": "// stylelint-disable selector-max-type, no-duplicate-selectors\n\n// Base button styles\n.btn {\n  position: relative;\n  display: inline-block;\n  // stylelint-disable-next-line primer/spacing\n  padding: 5px var(--base-size-16);\n  // stylelint-disable-next-line primer/typography\n  font-size: $body-font-size;\n  // stylelint-disable-next-line primer/typography\n  font-weight: $font-weight-semibold;\n  // stylelint-disable-next-line primer/typography\n  line-height: 20px; // Specifically not inherit our `<body>` default\n  white-space: nowrap;\n  vertical-align: middle;\n  cursor: pointer;\n  user-select: none;\n  // stylelint-disable-next-line primer/borders, primer/colors\n  border: $border-width $border-style;\n  // stylelint-disable-next-line primer/borders\n  border-radius: $border-radius;\n  appearance: none; // Corrects inability to style clickable `input` types in iOS.\n\n  &:hover {\n    text-decoration: none;\n  }\n\n  &:disabled,\n  &.disabled,\n  &[aria-disabled='true'] {\n    cursor: default;\n  }\n\n  i {\n    font-style: normal;\n    // stylelint-disable-next-line primer/typography\n    font-weight: $font-weight-semibold;\n    opacity: 0.75;\n  }\n\n  .octicon {\n    margin-right: var(--base-size-4);\n    color: var(--fgColor-muted, var(--color-fg-muted));\n    vertical-align: text-bottom;\n\n    &:only-child {\n      margin-right: 0;\n    }\n  }\n\n  .Counter {\n    // stylelint-disable-next-line primer/spacing\n    margin-left: 2px;\n    color: inherit;\n    text-shadow: none;\n    vertical-align: top;\n    background-color: var(--buttonCounter-default-bgColor-rest, var(--color-btn-counter-bg));\n  }\n\n  .dropdown-caret {\n    margin-left: var(--base-size-4);\n    opacity: 0.8;\n  }\n}\n\n// Default button\n\n.btn {\n  color: var(--button-default-fgColor-rest, var(--color-btn-text));\n  background-color: var(--button-default-bgColor-rest, var(--color-btn-bg));\n  border-color: var(--button-default-borderColor-rest, var(--color-btn-border));\n  box-shadow: var(--button-default-shadow-resting, var(--color-btn-shadow)), var(--button-default-shadow-inset, var(--color-btn-inset-shadow));\n  transition: 80ms cubic-bezier(0.33, 1, 0.68, 1);\n  transition-property: color, background-color, box-shadow, border-color;\n\n  &:hover,\n  &.hover,\n  [open] > & {\n    background-color: var(--button-default-bgColor-hover, var(--color-btn-hover-bg));\n    border-color: var(--button-default-borderColor-hover, var(--color-btn-hover-border));\n    transition-duration: 0.1s;\n  }\n\n  &:active {\n    background-color: var(--button-default-bgColor-active, var(--color-btn-active-bg));\n    border-color: var(--button-default-borderColor-active, var(--color-btn-active-border));\n    transition: none;\n  }\n\n  &.selected,\n  &[aria-selected='true'] {\n    background-color: var(--button-default-bgColor-selected, var(--color-btn-selected-bg));\n    box-shadow: var(--shadow-inset, var(--color-primer-shadow-inset));\n  }\n\n  &:disabled,\n  &.disabled,\n  &[aria-disabled='true'] {\n    color: var(--fgColor-disabled, var(--color-primer-fg-disabled));\n    background-color: var(--button-default-bgColor-disabled, var(--color-btn-bg));\n    border-color: var(--button-default-borderColor-disabled, var(--color-btn-border));\n\n    .octicon {\n      color: var(--fgColor-disabled, var(--color-primer-fg-disabled));\n    }\n  }\n}\n\n// Primary button\n\n.btn-primary {\n  color: var(--button-primary-fgColor-rest, var(--color-btn-primary-text));\n  background-color: var(--button-primary-bgColor-rest, var(--color-btn-primary-bg));\n  border-color: var(--button-primary-borderColor-rest, var(--color-btn-primary-border));\n  box-shadow: var(--shadow-resting-small, var(--color-btn-primary-shadow)), var(--shadow-highlight, var(--color-btn-primary-inset-shadow));\n\n  &:hover,\n  &.hover,\n  [open] > & {\n    background-color: var(--button-primary-bgColor-hover, var(--color-btn-primary-hover-bg));\n    border-color: var(--button-primary-borderColor-hover, var(--color-btn-primary-hover-border));\n  }\n\n  // fallback :focus state\n  &:focus {\n    @include focusOutlineOnEmphasis;\n\n    // remove fallback :focus if :focus-visible is supported\n    &:not(:focus-visible) {\n      outline: solid 1px transparent;\n      box-shadow: none;\n    }\n  }\n\n  // default focus state\n  &:focus-visible {\n    @include focusOutlineOnEmphasis;\n  }\n\n  &:active,\n  &.selected,\n  &[aria-selected='true'] {\n    background-color: var(--button-primary-bgColor-active, var(--color-btn-primary-selected-bg));\n    box-shadow: var(--button-primary-shadow-selected, var(--color-btn-primary-selected-shadow));\n  }\n\n  &:disabled,\n  &.disabled,\n  &[aria-disabled='true'] {\n    color: var(--button-primary-fgColor-disabled, var(--color-btn-primary-disabled-text));\n    background-color: var(--button-primary-bgColor-disabled, var(--color-btn-primary-disabled-bg));\n    border-color: var(--button-primary-borderColor-disabled, var(--color-btn-primary-disabled-border));\n\n    .octicon {\n      color: var(--button-primary-fgColor-disabled, var(--color-btn-primary-disabled-text));\n    }\n  }\n\n  .Counter {\n    color: inherit;\n    background-color: var(--buttonCounter-primary-bgColor-rest, var(--color-btn-primary-counter-bg));\n  }\n\n  .octicon {\n    color: var(--button-primary-iconColor-rest, var(--color-btn-primary-icon));\n  }\n}\n\n// ensure links styled as button primary gets proper focus style\n// stylelint-disable-next-line selector-no-qualifying-type\na.btn-primary {\n  // fallback :focus state\n  &:focus {\n    @include focusOutlineOnEmphasis;\n\n    // remove fallback :focus if :focus-visible is supported\n    &:not(:focus-visible) {\n      outline: solid 1px transparent;\n      box-shadow: none;\n    }\n  }\n\n  // default focus state\n  &:focus-visible {\n    @include focusOutlineOnEmphasis;\n  }\n}\n\n// Outline button\n\n.btn-outline {\n  color: var(--button-outline-fgColor-rest, var(--color-btn-outline-text));\n\n  &:hover,\n  [open] > & {\n    color: var(--button-outline-fgColor-hover, var(--color-btn-outline-hover-text));\n    background-color: var(--button-outline-bgColor-hover, var(--color-btn-outline-hover-bg));\n    border-color: var(--button-outline-borderColor-hover, var(--color-btn-outline-hover-border));\n    box-shadow: var(--shadow-resting-small, var(--color-btn-outline-hover-shadow)), var(--shadow-highlight, var(--color-btn-outline-hover-inset-shadow));\n\n    .Counter {\n      background-color: var(--buttonCounter-outline-bgColor-hover, var(--color-btn-outline-hover-counter-bg));\n    }\n\n    .octicon {\n      color: inherit;\n    }\n  }\n\n  &:active,\n  &.selected,\n  &[aria-selected='true'] {\n    color: var(--button-outline-fgColor-active, var(--color-btn-outline-selected-text));\n    background-color: var(--button-outline-bgColor-active, var(--color-btn-outline-selected-bg));\n    border-color: var(--button-outline-borderColor-active, var(--color-btn-outline-selected-border));\n    box-shadow: var(--button-outline-shadow-selected, var(--color-btn-outline-selected-shadow));\n\n    // fallback :focus state\n    &:focus {\n      @include focusOutlineOnEmphasis;\n\n      // remove fallback :focus if :focus-visible is supported\n      &:not(:focus-visible) {\n        outline: solid 1px transparent;\n        box-shadow: none;\n      }\n    }\n\n    // default focus state\n    &:focus-visible {\n      @include focusOutlineOnEmphasis;\n    }\n  }\n\n  &:disabled,\n  &.disabled,\n  &[aria-disabled='true'] {\n    color: var(--button-outline-fgColor-disabled, var(--color-btn-outline-disabled-text));\n    background-color: var(--button-outline-bgColor-disabled, var(--color-btn-outline-disabled-bg));\n    border-color: var(--button-default-borderColor-rest, var(--color-btn-border));\n    box-shadow: none;\n\n    .Counter {\n      background-color: var(--buttonCounter-outline-bgColor-disabled, var(--color-btn-outline-disabled-counter-bg));\n    }\n  }\n\n  .Counter {\n    color: inherit;\n    background-color: var(--buttonCounter-outline-bgColor-rest, var(--color-btn-outline-counter-bg));\n  }\n}\n\n// Danger button\n\n.btn-danger {\n  color: var(--button-danger-fgColor-rest, var(--color-btn-danger-text));\n\n  .octicon {\n    color: var(--button-danger-iconColor-rest, var(--color-btn-danger-icon));\n  }\n\n  &:hover,\n  [open] > & {\n    color: var(--button-danger-fgColor-hover, var(--color-btn-danger-hover-text));\n    background-color: var(--button-danger-bgColor-hover, var(--color-btn-danger-hover-bg));\n    border-color: var(--button-danger-borderColor-hover, var(--color-btn-danger-hover-border));\n    box-shadow: var(--shadow-resting-small, var(--color-btn-danger-hover-shadow)), var(--shadow-highlight, var(--color-btn-danger-hover-inset-shadow));\n\n    .Counter {\n      background-color: var(--buttonCounter-danger-bgColor-hover, var(--color-btn-danger-hover-counter-bg));\n    }\n\n    .octicon {\n      color: var(--button-danger-iconColor-hover, var(--color-btn-danger-hover-icon));\n    }\n  }\n\n  &:active,\n  &.selected,\n  &[aria-selected='true'] {\n    color: var(--button-danger-fgColor-active, var(--color-btn-danger-selected-text));\n    background-color: var(--button-danger-bgColor-active, var(--color-btn-danger-selected-bg));\n    border-color: var(--button-danger-borderColor-active, var(--color-btn-danger-selected-border));\n    box-shadow: var(--button-danger-shadow-selected, var(--color-btn-danger-selected-shadow));\n  }\n\n  &:disabled,\n  &.disabled,\n  &[aria-disabled='true'] {\n    color: var(--button-danger-fgColor-disabled, var(--color-btn-danger-disabled-text));\n    background-color: var(--button-danger-bgColor-disabled, var(--color-btn-danger-disabled-bg));\n    border-color: var(--button-default-borderColor-rest, var(--color-btn-border));\n    box-shadow: none;\n\n    .Counter {\n      background-color: var(--buttonCounter-danger-bgColor-disabled, var(--color-btn-danger-disabled-counter-bg));\n    }\n\n    .octicon {\n      color: var(--button-danger-fgColor-disabled, var(--color-btn-danger-disabled-text));\n    }\n  }\n\n  .Counter {\n    color: inherit;\n    background-color: var(--buttonCounter-danger-bgColor-rest, var(--color-btn-danger-counter-bg));\n  }\n}\n\n// Sizes\n//\n// Tweak `line-height` to make them smaller.\n.btn-sm {\n  // stylelint-disable-next-line primer/spacing\n  padding: 3px 12px;\n  // stylelint-disable-next-line primer/typography\n  font-size: $font-size-small;\n  // stylelint-disable-next-line primer/typography\n  line-height: 20px;\n\n  .octicon {\n    vertical-align: text-top;\n  }\n}\n\n// Large button adds more padding around text. Use font-size utils to increase font-size.. e.g, <p class=\"text-gamma\"><button class=\"btn btn-large btn-primary\" type=\"button\">Big green button</button></p>\n.btn-large {\n  // stylelint-disable-next-line primer/spacing\n  padding: $em-spacer-6 1.5em;\n  font-size: inherit;\n  // stylelint-disable-next-line primer/typography\n  line-height: $lh-default;\n\n  // stylelint-disable-next-line primer/borders\n  border-radius: 0.5em;\n}\n\n// Full-width button\n//\n// These buttons expand to the full width of their parent container\n.btn-block {\n  display: block;\n  width: 100%;\n  text-align: center;\n}\n"
  },
  {
    "path": "src/buttons/index.scss",
    "content": "@import '../support/index.scss';\n@import './button.scss';\n@import './button-group.scss';\n@import './misc.scss';\n"
  },
  {
    "path": "src/buttons/misc.scss",
    "content": "// stylelint-disable selector-max-type\n\n// Link-like buttons\n//\n// This class is for styling <button> and <input> elements to look like links\n.btn-link {\n  display: inline-block;\n  padding: 0;\n  font-size: inherit;\n  color: var(--fgColor-accent, var(--color-accent-fg));\n  text-decoration: none;\n  white-space: nowrap;\n  cursor: pointer;\n  user-select: none;\n  background-color: transparent;\n  border: 0;\n  appearance: none; // Corrects inability to style clickable `input` types in iOS.\n\n  &:hover {\n    text-decoration: underline;\n  }\n\n  &:disabled,\n  &[aria-disabled='true'] {\n    &,\n    &:hover {\n      color: var(--fgColor-disabled, var(--color-primer-fg-disabled));\n      cursor: default;\n    }\n  }\n\n  &:not(.dropdown-item) {\n    &:focus,\n    &:focus-visible {\n      // stylelint-disable-next-line primer/borders\n      border-radius: $border-radius;\n      outline-offset: 0;\n    }\n  }\n}\n\n// Invisible button\n//\n// Typically used as a \"cancel\" button next to a .btn\n.btn-invisible {\n  color: var(--fgColor-accent, var(--color-accent-fg));\n  background-color: transparent; // Reset default gradient backgrounds and colors\n  border: 0;\n  // stylelint-disable-next-line primer/borders\n  border-radius: $border-radius;\n  box-shadow: none;\n\n  &:hover,\n  &.zeroclipboard-is-hover {\n    color: var(--fgColor-accent, var(--color-accent-fg));\n    background-color: var(--button-default-bgColor-hover, var(--color-btn-hover-bg));\n    outline: none;\n    box-shadow: none;\n  }\n\n  &:active,\n  &.selected,\n  &[aria-selected='true'],\n  &.zeroclipboard-is-active {\n    color: var(--fgColor-accent, var(--color-accent-fg));\n    background: none;\n    border-color: var(--button-default-borderColor-active, var(--color-btn-active-border));\n\n    @include focusOutline;\n  }\n\n  &:active &.zeroclipboard-is-active {\n    background-color: var(--button-default-bgColor-selected, var(--color-btn-selected-bg));\n  }\n\n  &:disabled,\n  &.disabled,\n  &[aria-disabled='true'] {\n    color: var(--fgColor-disabled, var(--color-primer-fg-disabled));\n    background-color: transparent;\n  }\n}\n\n// Octicon button\n//\n// Icon-only buttons\n.btn-octicon {\n  display: inline-block;\n  // stylelint-disable-next-line primer/spacing\n  padding: 5px;\n  // stylelint-disable-next-line primer/spacing\n  margin-left: 5px;\n  // stylelint-disable-next-line primer/typography\n  line-height: $lh-condensed-ultra;\n  color: var(--fgColor-muted, var(--color-fg-muted));\n  vertical-align: middle;\n\n  // For `<button>` elements\n  background: transparent;\n  border: 0;\n  box-shadow: none;\n\n  &:hover {\n    color: var(--fgColor-accent, var(--color-accent-fg));\n  }\n\n  &:focus,\n  &:focus-visible {\n    // stylelint-disable-next-line primer/borders\n    border-radius: $border-radius;\n  }\n\n  &.disabled,\n  &[aria-disabled='true'] {\n    color: var(--fgColor-disabled, var(--color-primer-fg-disabled));\n    cursor: default;\n\n    &:hover {\n      color: var(--fgColor-disabled, var(--color-primer-fg-disabled));\n    }\n  }\n}\n\n.btn-octicon-danger:hover {\n  color: var(--fgColor-danger, var(--color-danger-fg));\n}\n\n// Close button\n//\n// Typically used with an octicon-x\n.close-button {\n  padding: 0;\n  color: var(--fgColor-muted, var(--color-fg-muted));\n  background: transparent;\n  border: 0;\n\n  &:hover {\n    color: var(--fgColor-default, var(--color-fg-default));\n  }\n\n  &:active {\n    @include focusOutline;\n  }\n}\n\n// Hidden text button\n//\n// Use `.hidden-text-expander` to indicate and expand hidden text.\n.hidden-text-expander {\n  display: block;\n\n  &.inline {\n    position: relative;\n    // stylelint-disable-next-line primer/spacing\n    top: -1px;\n    display: inline-block;\n    // stylelint-disable-next-line primer/spacing\n    margin-left: 5px;\n    // stylelint-disable-next-line primer/typography\n    line-height: 0;\n  }\n}\n\n.hidden-text-expander a,\n.ellipsis-expander {\n  display: inline-block;\n  height: 12px;\n  // stylelint-disable-next-line primer/spacing\n  padding: 0 5px 5px;\n  // stylelint-disable-next-line primer/typography\n  font-size: $font-size-small;\n  // stylelint-disable-next-line primer/typography\n  font-weight: $font-weight-bold;\n  // stylelint-disable-next-line primer/typography\n  line-height: 6px;\n  color: var(--fgColor-default, var(--color-fg-default));\n  text-decoration: none;\n  vertical-align: middle;\n  background: var(--bgColor-neutral-muted, var(--color-neutral-muted));\n  border: 0;\n  // stylelint-disable-next-line primer/borders\n  border-radius: 1px;\n\n  &:hover {\n    text-decoration: none;\n    background-color: var(--bgColor-accent-muted, var(--color-accent-muted));\n  }\n\n  &:active {\n    color: var(--fgColor-onEmphasis, var(--color-fg-on-emphasis));\n    background-color: var(--bgColor-accent-emphasis, var(--color-accent-emphasis));\n  }\n}\n\n// Social button count\n// TODO: Deprecate? Use BtnGroup instead?\n\n.btn-with-count {\n  float: left;\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n\n  &:focus {\n    z-index: 1;\n  }\n}\n\n// Social count bubble\n//\n// A container that is used for social bubbles counts.\n\n.social-count {\n  position: relative;\n  float: left;\n  // stylelint-disable-next-line primer/spacing\n  padding: 3px 12px;\n  // stylelint-disable-next-line primer/typography\n  font-size: $font-size-small;\n  // stylelint-disable-next-line primer/typography\n  font-weight: $font-weight-bold;\n  // stylelint-disable-next-line primer/typography\n  line-height: 20px;\n  color: var(--fgColor-default, var(--color-fg-default));\n  vertical-align: middle;\n  background-color: var(--bgColor-default, var(--color-canvas-default));\n  // stylelint-disable-next-line primer/borders, primer/colors\n  border: $border-width $border-style var(--button-default-borderColor-rest, var(--color-btn-border));\n  border-left: 0;\n  // stylelint-disable-next-line primer/borders\n  border-top-right-radius: $border-radius;\n  // stylelint-disable-next-line primer/borders\n  border-bottom-right-radius: $border-radius;\n  box-shadow: var(--shadow-resting-small, var(--color-shadow-small)), var(--shadow-highlight, var(--color-primer-shadow-highlight));\n\n  &:hover,\n  &:active {\n    text-decoration: none;\n  }\n\n  &:hover {\n    color: var(--fgColor-accent, var(--color-accent-fg));\n    cursor: pointer;\n  }\n}\n"
  },
  {
    "path": "src/color-modes/index.scss",
    "content": "// All themes\n\n@import './themes/light.scss';\n@import './themes/light_colorblind.scss';\n@import './themes/light_high_contrast.scss';\n@import './themes/light_tritanopia.scss';\n@import './themes/dark.scss';\n@import './themes/dark_dimmed.scss';\n@import './themes/dark_high_contrast.scss';\n@import './themes/dark_colorblind.scss';\n@import './themes/dark_tritanopia.scss';\n"
  },
  {
    "path": "src/color-modes/themes/dark.scss",
    "content": "@import '@primer/primitives/dist/css/functional/themes/dark';\n"
  },
  {
    "path": "src/color-modes/themes/dark_colorblind.scss",
    "content": "@import '@primer/primitives/dist/css/functional/themes/dark-colorblind';\n"
  },
  {
    "path": "src/color-modes/themes/dark_dimmed.scss",
    "content": "@import '@primer/primitives/dist/css/functional/themes/dark-dimmed';\n"
  },
  {
    "path": "src/color-modes/themes/dark_high_contrast.scss",
    "content": "@import '@primer/primitives/dist/css/functional/themes/dark-high-contrast';\n"
  },
  {
    "path": "src/color-modes/themes/dark_tritanopia.scss",
    "content": "@import '@primer/primitives/dist/css/functional/themes/dark-tritanopia';\n"
  },
  {
    "path": "src/color-modes/themes/light.scss",
    "content": "@import '@primer/primitives/dist/css/functional/themes/light';\n"
  },
  {
    "path": "src/color-modes/themes/light_colorblind.scss",
    "content": "@import '@primer/primitives/dist/css/functional/themes/light-colorblind';\n"
  },
  {
    "path": "src/color-modes/themes/light_high_contrast.scss",
    "content": "@import '@primer/primitives/dist/css/functional/themes/light-high-contrast';\n"
  },
  {
    "path": "src/color-modes/themes/light_tritanopia.scss",
    "content": "@import '@primer/primitives/dist/css/functional/themes/light-tritanopia';\n"
  },
  {
    "path": "src/core/README.md",
    "content": "---\nbundle: \"core\"\ngenerated: true\n---\n\n# Primer CSS: `core` bundle\n\n## Usage\n\nPrimer CSS source files are written in [SCSS]. To include this Primer CSS module in your own build, ensure that your `node_modules` directory is listed in your Sass include paths, then import it with:\n\n```scss\n@import \"@primer/css/core/index.scss\";\n```\n\n## Build\n\nThe `@primer/css` npm package includes a standalone CSS build of this module in `dist/core.css`.\n\n## License\n\n[MIT](https://github.com/primer/css/blob/main/LICENSE) &copy; [GitHub](https://github.com/)\n\n\n[scss]: https://sass-lang.com/documentation/syntax#scss\n"
  },
  {
    "path": "src/core/index.scss",
    "content": "/*!\n * @primer/css/core\n * http://primer.style/css\n *\n * Released under MIT license. Copyright (c) 2019 GitHub Inc.\n */\n\n// Global requirements\n@import '../support/index.scss';\n\n// Color modes\n\n// Core modules\n@import '../base/index.scss';\n@import '../box/index.scss';\n@import '../buttons/index.scss';\n@import '../table-object/index.scss';\n@import '../forms/index.scss';\n@import '../layout/index.scss';\n@import '../navigation/index.scss';\n@import '../pagination/index.scss';\n@import '../tooltips/index.scss';\n\n// Utilities always go last so that they can override components\n@import '../utilities/index.scss';\n"
  },
  {
    "path": "src/deprecations.json",
    "content": "{\n  \"selectors\": {\n    \"color-text-primary\": \"color-fg-default\",\n    \"color-text-secondary\": \"color-fg-muted\",\n    \"color-text-tertiary\": \"color-fg-muted\",\n    \"color-text-link\": \"color-fg-accent\",\n    \"color-text-success\": \"color-fg-success\",\n    \"color-text-warning\": \"color-fg-attention\",\n    \"color-text-danger\": \"color-fg-danger\",\n    \"color-text-inverse\": \"color-fg-on-emphasis\",\n    \"color-text-white\": null,\n    \"color-icon-primary\": \"color-fg-default\",\n    \"color-icon-secondary\": \"color-fg-muted\",\n    \"color-icon-tertiary\": \"color-fg-muted\",\n    \"color-icon-info\": \"color-fg-accent\",\n    \"color-icon-danger\": \"color-fg-danger\",\n    \"color-icon-success\": \"color-fg-success\",\n    \"color-icon-warning\": \"color-fg-attention\",\n    \"color-border-primary\": \"color-border-default\",\n    \"color-border-secondary\": \"color-border-muted\",\n    \"color-border-tertiary\": \"color-border-default\",\n    \"color-border-inverse\": null,\n    \"color-border-info\": \"color-border-accent-emphasis\",\n    \"color-border-warning\": \"color-border-attention-emphasis\",\n    \"color-bg-canvas\": \"color-bg-default\",\n    \"color-bg-canvas-inverse\": \"color-bg-emphasis\",\n    \"color-bg-canvas-inset\": \"color-bg-inset\",\n    \"color-bg-primary\": \"color-bg-default\",\n    \"color-bg-secondary\": \"color-bg-subtle\",\n    \"color-bg-tertiary\": \"color-bg-subtle\",\n    \"color-bg-info\": \"color-bg-accent\",\n    \"color-bg-info-inverse\": \"color-bg-accent-emphasis\",\n    \"color-bg-danger-inverse\": \"color-bg-danger-emphasis\",\n    \"color-bg-success-inverse\": \"color-bg-success-emphasis\",\n    \"color-bg-warning\": \"color-bg-attention\",\n    \"color-bg-warning-inverse\": \"color-bg-attention-emphasis\",\n    \"text-inherit\": \"color-fg-inherit\",\n    \"centered\": \"mx-auto\",\n    \"dropdown-menu-content\": null,\n    \"break-word\": \"wb-break-word\",\n    \"h000-mktg\": null,\n    \"h00-mktg\": null,\n    \"lead-mktg\": null,\n    \"p-7\": \"pt-7 pr-7 pb-7 pl-7\",\n    \"p-8\": \"pt-8 pr-8 pb-8 pl-8\",\n    \"p-9\": \"pt-9 pr-9 pb-9 pl-9\",\n    \"p-10\": \"pt-10 pr-10 pb-10 pl-10\",\n    \"p-11\": \"pt-11 pr-11 pb-11 pl-11\",\n    \"p-12\": \"pt-12 pr-12 pb-12 pl-12\",\n    \"p-sm-7\": \"pt-sm-7 pr-sm-7 pb-sm-7 pl-sm-7\",\n    \"p-sm-8\": \"pt-sm-8 pr-sm-8 pb-sm-8 pl-sm-8\",\n    \"p-sm-9\": \"pt-sm-9 pr-sm-9 pb-sm-9 pl-sm-9\",\n    \"p-sm-10\": \"pt-sm-10 pr-sm-10 pb-sm-10 pl-sm-10\",\n    \"p-sm-11\": \"pt-sm-11 pr-sm-11 pb-sm-11 pl-sm-11\",\n    \"p-sm-12\": \"pt-sm-12 pr-sm-12 pb-sm-12 pl-sm-12\",\n    \"p-md-7\": \"pt-md-7 pr-md-7 pb-md-7 pl-md-7\",\n    \"p-md-8\": \"pt-md-8 pr-md-8 pb-md-8 pl-md-8\",\n    \"p-md-9\": \"pt-md-9 pr-md-9 pb-md-9 pl-md-9\",\n    \"p-md-10\": \"pt-md-10 pr-md-10 pb-md-10 pl-md-10\",\n    \"p-md-11\": \"pt-md-11 pr-md-11 pb-md-11 pl-md-11\",\n    \"p-md-12\": \"pt-md-12 pr-md-12 pb-md-12 pl-md-12\",\n    \"p-lg-7\": \"pt-lg-7 pr-lg-7 pb-lg-7 pl-lg-7\",\n    \"p-lg-8\": \"pt-lg-8 pr-lg-8 pb-lg-8 pl-lg-8\",\n    \"p-lg-9\": \"pt-lg-9 pr-lg-9 pb-lg-9 pl-lg-9\",\n    \"p-lg-10\": \"pt-lg-10 pr-lg-10 pb-lg-10 pl-lg-10\",\n    \"p-lg-11\": \"pt-lg-11 pr-lg-11 pb-lg-11 pl-lg-11\",\n    \"p-lg-12\": \"pt-lg-12 pr-lg-12 pb-lg-12 pl-lg-12\",\n    \"p-xl-7\": \"pt-xl-7 pr-xl-7 pb-xl-7 pl-xl-7\",\n    \"p-xl-8\": \"pt-xl-8 pr-xl-8 pb-xl-8 pl-xl-8\",\n    \"p-xl-9\": \"pt-xl-9 pr-xl-9 pb-xl-9 pl-xl-9\",\n    \"p-xl-10\": \"pt-xl-10 pr-xl-10 pb-xl-10 pl-xl-10\",\n    \"p-xl-11\": \"pt-xl-11 pr-xl-11 pb-xl-11 pl-xl-11\",\n    \"p-xl-12\": \"pt-xl-12 pr-xl-12 pb-xl-12 pl-xl-12\",\n    \"top-n0\": \"top-0\",\n    \"right-n0\": \"right-0\",\n    \"bottom-n0\": \"bottom-0\",\n    \"left-n0\": \"left-0\",\n    \"top-md-n0\": \"top-md-0\",\n    \"right-md-n0\": \"right-md-0\",\n    \"bottom-md-n0\": \"bottom-md-0\",\n    \"left-md-n0\": \"left-md-0\",\n    \"top-lg-n0\": \"top-lg-0\",\n    \"right-lg-n0\": \"right-lg-0\",\n    \"bottom-lg-n0\": \"bottom-lg-0\",\n    \"left-lg-n0\": \"left-lg-0\",\n    \"mt-n0\": \"mt-0\",\n    \"mb-n0\": \"mb-0\",\n    \"mt-sm-n0\": \"mt-sm-0\",\n    \"mb-sm-n0\": \"mb-sm-0\",\n    \"mt-md-n0\": \"mt-md-0\",\n    \"mb-md-n0\": \"mb-md-0\",\n    \"mt-lg-n0\": \"mt-lg-0\",\n    \"mb-lg-n0\": \"mb-lg-0\",\n    \"mt-xl-n0\": \"mt-xl-0\",\n    \"mb-xl-n0\": \"mb-xl-0\",\n    \"bg-shade-gradient\": \"color-bg-secondary\",\n    \"color-border-overlay\": \"color-border-primary\",\n    \"btn-blue\": null,\n    \"input-dark\": null,\n    \"border-blue\": null,\n    \"border-blue-light\": null,\n    \"border-green\": null,\n    \"border-green-light\": null,\n    \"border-red\": null,\n    \"border-red-light\": null,\n    \"border-purple\": null,\n    \"border-yellow\": null,\n    \"border-gray-light\": null,\n    \"border-gray-dark\": null,\n    \"border-black-fade\": null,\n    \"border-white-fade\": null,\n    \"border-white-fade-15\": null,\n    \"border-white-fade-30\": null,\n    \"border-white-fade-50\": null,\n    \"border-white-fade-70\": null,\n    \"border-white-fade-85\": null,\n    \"box-shadow\": null,\n    \"box-shadow-medium\": null,\n    \"box-shadow-large\": null,\n    \"box-shadow-extra-large\": null,\n    \"bg-white\": null,\n    \"bg-blue\": null,\n    \"bg-blue-light\": null,\n    \"bg-gray-dark\": null,\n    \"bg-gray\": null,\n    \"bg-gray-light\": null,\n    \"bg-green\": null,\n    \"bg-green-light\": null,\n    \"bg-red\": null,\n    \"bg-red-light\": null,\n    \"bg-yellow\": null,\n    \"bg-yellow-light\": null,\n    \"bg-yellow-dark\": null,\n    \"bg-purple\": null,\n    \"bg-pink\": null,\n    \"bg-purple-light\": null,\n    \"bg-orange\": null,\n    \"color-gray-0\": null,\n    \"bg-gray-0\": null,\n    \"color-gray-1\": null,\n    \"bg-gray-1\": null,\n    \"color-gray-2\": null,\n    \"bg-gray-2\": null,\n    \"color-gray-3\": null,\n    \"bg-gray-3\": null,\n    \"color-gray-4\": null,\n    \"bg-gray-4\": null,\n    \"color-gray-5\": null,\n    \"bg-gray-5\": null,\n    \"color-gray-6\": null,\n    \"bg-gray-6\": null,\n    \"color-gray-7\": null,\n    \"bg-gray-7\": null,\n    \"color-gray-8\": null,\n    \"bg-gray-8\": null,\n    \"color-gray-9\": null,\n    \"bg-gray-9\": null,\n    \"color-blue-0\": null,\n    \"bg-blue-0\": null,\n    \"color-blue-1\": null,\n    \"bg-blue-1\": null,\n    \"color-blue-2\": null,\n    \"bg-blue-2\": null,\n    \"color-blue-3\": null,\n    \"bg-blue-3\": null,\n    \"color-blue-4\": null,\n    \"bg-blue-4\": null,\n    \"color-blue-5\": null,\n    \"bg-blue-5\": null,\n    \"color-blue-6\": null,\n    \"bg-blue-6\": null,\n    \"color-blue-7\": null,\n    \"bg-blue-7\": null,\n    \"color-blue-8\": null,\n    \"bg-blue-8\": null,\n    \"color-blue-9\": null,\n    \"bg-blue-9\": null,\n    \"color-green-0\": null,\n    \"bg-green-0\": null,\n    \"color-green-1\": null,\n    \"bg-green-1\": null,\n    \"color-green-2\": null,\n    \"bg-green-2\": null,\n    \"color-green-3\": null,\n    \"bg-green-3\": null,\n    \"color-green-4\": null,\n    \"bg-green-4\": null,\n    \"color-green-5\": null,\n    \"bg-green-5\": null,\n    \"color-green-6\": null,\n    \"bg-green-6\": null,\n    \"color-green-7\": null,\n    \"bg-green-7\": null,\n    \"color-green-8\": null,\n    \"bg-green-8\": null,\n    \"color-green-9\": null,\n    \"bg-green-9\": null,\n    \"color-yellow-0\": null,\n    \"bg-yellow-0\": null,\n    \"color-yellow-1\": null,\n    \"bg-yellow-1\": null,\n    \"color-yellow-2\": null,\n    \"bg-yellow-2\": null,\n    \"color-yellow-3\": null,\n    \"bg-yellow-3\": null,\n    \"color-yellow-4\": null,\n    \"bg-yellow-4\": null,\n    \"color-yellow-5\": null,\n    \"bg-yellow-5\": null,\n    \"color-yellow-6\": null,\n    \"bg-yellow-6\": null,\n    \"color-yellow-7\": null,\n    \"bg-yellow-7\": null,\n    \"color-yellow-8\": null,\n    \"bg-yellow-8\": null,\n    \"color-yellow-9\": null,\n    \"bg-yellow-9\": null,\n    \"color-orange-0\": null,\n    \"bg-orange-0\": null,\n    \"color-orange-1\": null,\n    \"bg-orange-1\": null,\n    \"color-orange-2\": null,\n    \"bg-orange-2\": null,\n    \"color-orange-3\": null,\n    \"bg-orange-3\": null,\n    \"color-orange-4\": null,\n    \"bg-orange-4\": null,\n    \"color-orange-5\": null,\n    \"bg-orange-5\": null,\n    \"color-orange-6\": null,\n    \"bg-orange-6\": null,\n    \"color-orange-7\": null,\n    \"bg-orange-7\": null,\n    \"color-orange-8\": null,\n    \"bg-orange-8\": null,\n    \"color-orange-9\": null,\n    \"bg-orange-9\": null,\n    \"color-red-0\": null,\n    \"bg-red-0\": null,\n    \"color-red-1\": null,\n    \"bg-red-1\": null,\n    \"color-red-2\": null,\n    \"bg-red-2\": null,\n    \"color-red-3\": null,\n    \"bg-red-3\": null,\n    \"color-red-4\": null,\n    \"bg-red-4\": null,\n    \"color-red-5\": null,\n    \"bg-red-5\": null,\n    \"color-red-6\": null,\n    \"bg-red-6\": null,\n    \"color-red-7\": null,\n    \"bg-red-7\": null,\n    \"color-red-8\": null,\n    \"bg-red-8\": null,\n    \"color-red-9\": null,\n    \"bg-red-9\": null,\n    \"color-purple-0\": null,\n    \"bg-purple-0\": null,\n    \"color-purple-1\": null,\n    \"bg-purple-1\": null,\n    \"color-purple-2\": null,\n    \"bg-purple-2\": null,\n    \"color-purple-3\": null,\n    \"bg-purple-3\": null,\n    \"color-purple-4\": null,\n    \"bg-purple-4\": null,\n    \"color-purple-5\": null,\n    \"bg-purple-5\": null,\n    \"color-purple-6\": null,\n    \"bg-purple-6\": null,\n    \"color-purple-7\": null,\n    \"bg-purple-7\": null,\n    \"color-purple-8\": null,\n    \"bg-purple-8\": null,\n    \"color-purple-9\": null,\n    \"bg-purple-9\": null,\n    \"color-pink-0\": null,\n    \"bg-pink-0\": null,\n    \"color-pink-1\": null,\n    \"bg-pink-1\": null,\n    \"color-pink-2\": null,\n    \"bg-pink-2\": null,\n    \"color-pink-3\": null,\n    \"bg-pink-3\": null,\n    \"color-pink-4\": null,\n    \"bg-pink-4\": null,\n    \"color-pink-5\": null,\n    \"bg-pink-5\": null,\n    \"color-pink-6\": null,\n    \"bg-pink-6\": null,\n    \"color-pink-7\": null,\n    \"bg-pink-7\": null,\n    \"color-pink-8\": null,\n    \"bg-pink-8\": null,\n    \"color-pink-9\": null,\n    \"bg-pink-9\": null,\n    \"text-blue\": null,\n    \"text-red\": null,\n    \"text-gray-light\": null,\n    \"text-gray\": null,\n    \"text-gray-dark\": null,\n    \"text-green\": null,\n    \"text-yellow\": null,\n    \"text-orange\": null,\n    \"text-orange-light\": null,\n    \"text-purple\": null,\n    \"text-pink\": null,\n    \"text-white\": null,\n    \"link-gray\": null,\n    \"link-gray-dark\": null,\n    \"muted-link\": null,\n    \"text-shadow-dark\": null,\n    \"text-shadow-light\": null,\n    \"dropdown-menu-dark\": null,\n    \"Label--outline\": null,\n    \"Label--gray\": null,\n    \"Label--gray-darker\": null,\n    \"Label--yellow\": null,\n    \"Label--orange\": null,\n    \"Label--red\": null,\n    \"Label--outline-green\": null,\n    \"Label--green\": null,\n    \"Label--blue\": null,\n    \"Label--purple\": null,\n    \"Label--pink\": null,\n    \"State--green\": null,\n    \"State--red\": null,\n    \"State--purple\": null,\n    \"Counter--gray-light\": null,\n    \"Counter--gray\": null,\n    \"flex-item-equal\": \"flex-1\",\n    \"flex-sm-item-equal\": \"flex-sm-1\",\n    \"flex-md-item-equal\": \"flex-md-1\",\n    \"flex-lg-item-equal\": \"flex-lg-1\",\n    \"flex-xl-item-equal\": \"flex-xl-1\",\n    \"btn-purple\": null,\n    \"btn-primary-mktg\": \"btn-signup-mktg\",\n    \"btn-enterprise-mktg\": \"btn-mktg\",\n    \"btn-outline-mktg\": \"btn-muted-mktg\",\n    \"btn-transparent\": \"btn-subtle-mktg\",\n    \"text-pending\": \"text-yellow\",\n    \"tooltipped\": null,\n    \"bg-pending\": \"bg-yellow-dark\",\n    \"container\": null,\n    \"columns\": null,\n    \"column\": null,\n    \"one-third\": null,\n    \"two-thirds\": null,\n    \"one-fourth\": null,\n    \"one-half\": null,\n    \"three-fourths\": null,\n    \"one-fifth\": null,\n    \"four-fifths\": null\n  },\n\n  \"variables\": {\n    \"$h000-size\": null,\n    \"$h000-size-mobile\": null,\n    \"$bg-black\": null,\n    \"$bg-black-fade\": null,\n    \"$bg-blue\": null,\n    \"$bg-blue-light\": null,\n    \"$bg-diffstat-added\": null,\n    \"$bg-diffstat-deleted\": null,\n    \"$bg-diffstat-neutral\": null,\n    \"$bg-gray\": null,\n    \"$bg-gray-dark\": null,\n    \"$bg-gray-light\": null,\n    \"$bg-green\": null,\n    \"$bg-green-light\": null,\n    \"$bg-orange\": null,\n    \"$bg-pink\": null,\n    \"$bg-purple\": null,\n    \"$bg-purple-light\": null,\n    \"$bg-red\": null,\n    \"$bg-red-light\": null,\n    \"$bg-white\": null,\n    \"$bg-yellow\": null,\n    \"$bg-yellow-dark\": null,\n    \"$bg-yellow-light\": null,\n    \"$black\": null,\n    \"$black-fade-15\": null,\n    \"$black-fade-30\": null,\n    \"$black-fade-50\": null,\n    \"$black-fade-70\": null,\n    \"$black-fade-85\": null,\n    \"$blue\": null,\n    \"$blue-000\": null,\n    \"$blue-100\": null,\n    \"$blue-200\": null,\n    \"$blue-300\": null,\n    \"$blue-400\": null,\n    \"$blue-500\": null,\n    \"$blue-600\": null,\n    \"$blue-700\": null,\n    \"$blue-800\": null,\n    \"$blue-900\": null,\n    \"$border-black-fade\": null,\n    \"$border-blue\": null,\n    \"$border-blue-light\": null,\n    \"$border-color\": null,\n    \"$border-color-button\": null,\n    \"$border-gray\": null,\n    \"$border-gray-dark\": null,\n    \"$border-gray-darker\": null,\n    \"$border-gray-light\": null,\n    \"$border-green\": null,\n    \"$border-green-light\": null,\n    \"$border-purple\": null,\n    \"$border-red\": null,\n    \"$border-red-light\": null,\n    \"$border-white\": null,\n    \"$border-white-fade\": null,\n    \"$border-yellow\": null,\n    \"$box-shadow\": null,\n    \"$box-shadow-extra-large\": null,\n    \"$box-shadow-focus\": null,\n    \"$box-shadow-highlight\": null,\n    \"$box-shadow-inset\": null,\n    \"$box-shadow-large\": null,\n    \"$box-shadow-medium\": null,\n    \"$btn-active-shadow\": null,\n    \"$btn-input-focus-shadow\": null,\n    \"$form-control-shadow\": null,\n    \"$gray\": null,\n    \"$gray-000\": null,\n    \"$gray-100\": null,\n    \"$gray-200\": null,\n    \"$gray-300\": null,\n    \"$gray-400\": null,\n    \"$gray-500\": null,\n    \"$gray-600\": null,\n    \"$gray-700\": null,\n    \"$gray-800\": null,\n    \"$gray-900\": null,\n    \"$gray-dark\": null,\n    \"$gray-light\": null,\n    \"$green\": null,\n    \"$green-000\": null,\n    \"$green-100\": null,\n    \"$green-200\": null,\n    \"$green-300\": null,\n    \"$green-400\": null,\n    \"$green-500\": null,\n    \"$green-600\": null,\n    \"$green-700\": null,\n    \"$green-800\": null,\n    \"$green-900\": null,\n    \"$orange\": null,\n    \"$orange-000\": null,\n    \"$orange-100\": null,\n    \"$orange-200\": null,\n    \"$orange-300\": null,\n    \"$orange-400\": null,\n    \"$orange-500\": null,\n    \"$orange-600\": null,\n    \"$orange-700\": null,\n    \"$orange-800\": null,\n    \"$orange-900\": null,\n    \"$pink-000\": null,\n    \"$pink-100\": null,\n    \"$pink-200\": null,\n    \"$pink-300\": null,\n    \"$pink-400\": null,\n    \"$pink-500\": null,\n    \"$pink-600\": null,\n    \"$pink-700\": null,\n    \"$pink-800\": null,\n    \"$pink-900\": null,\n    \"$purple\": null,\n    \"$purple-000\": null,\n    \"$purple-100\": null,\n    \"$purple-200\": null,\n    \"$purple-300\": null,\n    \"$purple-400\": null,\n    \"$purple-500\": null,\n    \"$purple-600\": null,\n    \"$purple-700\": null,\n    \"$purple-800\": null,\n    \"$purple-900\": null,\n    \"$red\": null,\n    \"$red-000\": null,\n    \"$red-100\": null,\n    \"$red-200\": null,\n    \"$red-300\": null,\n    \"$red-400\": null,\n    \"$red-500\": null,\n    \"$red-600\": null,\n    \"$red-700\": null,\n    \"$red-800\": null,\n    \"$red-900\": null,\n    \"$text-black\": null,\n    \"$text-blue\": null,\n    \"$text-gray\": null,\n    \"$text-gray-dark\": null,\n    \"$text-gray-light\": null,\n    \"$text-green\": null,\n    \"$text-orange\": null,\n    \"$text-orange-light\": null,\n    \"$text-pink\": null,\n    \"$text-purple\": null,\n    \"$text-red\": null,\n    \"$text-white\": null,\n    \"$text-yellow\": null,\n    \"$tooltip-background-color\": null,\n    \"$tooltip-text-color\": null,\n    \"$white\": null,\n    \"$white-fade-15\": null,\n    \"$white-fade-30\": null,\n    \"$white-fade-50\": null,\n    \"$white-fade-70\": null,\n    \"$white-fade-85\": null,\n    \"$yellow\": null,\n    \"$yellow-000\": null,\n    \"$yellow-100\": null,\n    \"$yellow-200\": null,\n    \"$yellow-300\": null,\n    \"$yellow-400\": null,\n    \"$yellow-500\": null,\n    \"$yellow-600\": null,\n    \"$yellow-700\": null,\n    \"$yellow-800\": null,\n    \"$yellow-900\": null,\n    \"$blue-mktg\": null,\n    \"$green-mktg\": null,\n    \"$status-pending\": null,\n    \"$highlight-yellow\": null,\n    \"$repo-private-text\": null,\n    \"$repo-private-bg\": null,\n    \"$repo-private-icon\": null,\n    \"$marketingSpacers\": \"$marketing-spacers\",\n    \"$allSpacers\": \"$marketing-all-spacers\",\n    \"$exploregrid-item-border-radius\": \"4px\",\n    \"$stats-switcher-py\": null,\n    \"$stats-viewport-height\": null,\n    \"$min_tab_size\": null,\n    \"$max_tab_size\": null\n  },\n\n  \"mixins\": {\n    \"rem\": null\n  }\n}\n"
  },
  {
    "path": "src/docs.scss",
    "content": "/*!\n * Primer CSS\n * https://primer.style\n *\n * Released under MIT license.\n */\n\n// Docs styles\n// Only meant for the docs at https://primer.style/css\n\n// CSS color variables\n@import './color-modes/index.scss';\n\n// Global requirements\n@import './core/index.scss';\n@import './product/index.scss';\n@import './marketing/index.scss';\n"
  },
  {
    "path": "src/forms/README.md",
    "content": "---\nbundle: \"forms\"\ngenerated: true\n---\n\n# Primer CSS: `forms` bundle\n\n## Usage\n\nPrimer CSS source files are written in [SCSS]. To include this Primer CSS module in your own build, ensure that your `node_modules` directory is listed in your Sass include paths, then import it with:\n\n```scss\n@import \"@primer/css/forms/index.scss\";\n```\n\n## Build\n\nThe `@primer/css` npm package includes a standalone CSS build of this module in `dist/forms.css`.\n\n## License\n\n[MIT](https://github.com/primer/css/blob/main/LICENSE) &copy; [GitHub](https://github.com/)\n\n\n[scss]: https://sass-lang.com/documentation/syntax#scss\n"
  },
  {
    "path": "src/forms/form-control.scss",
    "content": "// Needs refactoring\n// stylelint-disable selector-no-qualifying-type\n// stylelint-disable selector-max-type\n// Base form controls\n//\n// Overrides for common inputs for easier styling.\n\n.form-control,\n.form-select {\n  // stylelint-disable-next-line primer/spacing\n  padding: 5px 12px;\n  // stylelint-disable-next-line primer/typography\n  font-size: $body-font-size;\n  // stylelint-disable-next-line primer/typography\n  line-height: 20px;\n  color: var(--fgColor-default, var(--color-fg-default));\n  vertical-align: middle;\n  background-color: var(--bgColor-default, var(--color-canvas-default));\n  background-repeat: no-repeat; // Repeat and position set for form states (success, error, etc)\n  background-position: right 8px center; // For form validation. This keeps images 8px from right and centered vertically.\n  // stylelint-disable-next-line primer/borders, primer/colors\n  border: $border-width $border-style var(--control-borderColor-rest, var(--color-border-default));\n  // stylelint-disable-next-line primer/borders\n  border-radius: $border-radius;\n  box-shadow: var(--shadow-inset, var(--color-primer-shadow-inset));\n  transition: 80ms cubic-bezier(0.33, 1, 0.68, 1);\n  transition-property: color, background-color, box-shadow, border-color;\n\n  &:focus {\n    @include focusBoxShadowInset;\n\n    // remove fallback :focus if :focus-visible is supported\n    &:not(:focus-visible) {\n      border-color: transparent;\n\n      @include focusBoxShadowInset(1px, transparent);\n    }\n  }\n\n  // default focus state\n  &:focus-visible {\n    @include focusBoxShadowInset;\n  }\n\n  // override form controls with no border in focused state\n  &.border-0 {\n    &:focus,\n    &:focus-visible {\n      // stylelint-disable-next-line primer/borders, primer/colors\n      border: $border-width $border-style var(--borderColor-accent-emphasis, var(--color-accent-fg)) !important;\n    }\n  }\n\n  &[disabled],\n  fieldset[disabled] & {\n    color: var(--control-fgColor-disabled, var(--color-primer-fg-disabled));\n    background-color: var(--control-bgColor-disabled, var(--color-input-disabled-bg));\n    border-color: var(--control-borderColor-disabled, var(--color-border-default));\n    -webkit-text-fill-color: var(--control-fgColor-disabled, var(--color-primer-fg-disabled)); // Fix for Safari\n    opacity: 1; // Fix for Safari iOS\n\n    &::placeholder {\n      color: var(--control-fgColor-disabled, var(--color-primer-fg-disabled));\n    }\n  }\n\n  // Ensures inputs don't zoom on mobile iPhone but are body-font size on iPad\n  @supports (-webkit-touch-callout: none) {\n    // stylelint-disable-next-line primer/typography\n    font-size: $h4-size;\n\n    @include breakpoint(md) {\n      // stylelint-disable-next-line primer/typography\n      font-size: $body-font-size;\n    }\n  }\n}\n\n// Textarea\ntextarea.form-control {\n  padding-top: var(--base-size-8);\n  padding-bottom: var(--base-size-8);\n  // stylelint-disable-next-line primer/typography\n  line-height: $lh-default;\n}\n\n// Inputs with contrast for easy light gray backgrounds against white.\n// changing the value to default as to not remove the class all together, but deprecate the visual distinction for \"contrast\"\n.input-contrast {\n  background-color: var(--bgColor-default);\n\n  &:focus {\n    background-color: var(--bgColor-default, var(--color-canvas-default));\n  }\n}\n\n// Mini inputs, to match .minibutton\n.input-sm {\n  min-height: $size-4;\n  // stylelint-disable-next-line primer/spacing\n  padding-top: 3px;\n  // stylelint-disable-next-line primer/spacing\n  padding-bottom: 3px;\n  // stylelint-disable-next-line primer/typography\n  font-size: $font-size-small;\n  // stylelint-disable-next-line primer/typography\n  line-height: 20px;\n}\n\n// Large inputs\n.input-lg {\n  // stylelint-disable-next-line primer/typography\n  font-size: $h4-size;\n}\n\n// Full-width inputs\n.input-block {\n  display: block;\n  width: 100%;\n}\n\n// Inputs with monospace text\n.input-monospace {\n  // stylelint-disable-next-line primer/typography\n  font-family: $mono-font;\n}\n\n// Hide the icon that tries to autofill contact info in webkit\n.input-hide-webkit-autofill {\n  &::-webkit-contacts-auto-fill-button {\n    position: absolute;\n    right: 0;\n    display: none !important;\n    pointer-events: none;\n    visibility: hidden;\n  }\n}\n\n// Checkboxes and Radiobuttons\n//\n// For checkboxes and radio button selections.\n.form-checkbox {\n  // stylelint-disable-next-line primer/spacing\n  padding-left: 20px;\n  // stylelint-disable-next-line primer/spacing\n  margin: 15px 0;\n  vertical-align: middle;\n\n  label {\n    em.highlight {\n      position: relative;\n      left: calc(var(--base-size-4) * -1);\n      // stylelint-disable-next-line primer/spacing\n      padding: 2px var(--base-size-4);\n      font-style: normal;\n      background: var(--bgColor-attention-muted, var(--color-attention-subtle));\n      // stylelint-disable-next-line primer/borders\n      border-radius: $border-radius;\n    }\n  }\n\n  input[type='checkbox'],\n  input[type='radio'] {\n    float: left;\n    // stylelint-disable-next-line primer/spacing\n    margin: 5px 0 0 -20px;\n    vertical-align: middle;\n  }\n\n  .note {\n    display: block;\n    margin: 0;\n    // stylelint-disable-next-line primer/typography\n    font-size: $font-size-small;\n    // stylelint-disable-next-line primer/typography\n    font-weight: $font-weight-normal;\n    color: var(--fgColor-muted, var(--color-fg-muted));\n  }\n}\n\n.form-checkbox-details {\n  display: none;\n}\n\n.form-checkbox-details-trigger {\n  &:checked {\n    // child of sibling or sibling\n    ~ * .form-checkbox-details,\n    ~ .form-checkbox-details {\n      display: block;\n    }\n  }\n}\n\n// Field groups\n//\n// Wrap field groups in `<div.hfields>` to lay them out horizontally - great for\n// the top of pages with autosave.\n.hfields {\n  // stylelint-disable-next-line primer/spacing\n  margin: 15px 0;\n\n  @include clearfix;\n\n  .form-group {\n    float: left;\n    // stylelint-disable-next-line primer/spacing\n    margin: 0 30px 0 0;\n\n    dt, // TODO: Deprecate\n    .form-group-header {\n      label {\n        display: inline-block;\n        // stylelint-disable-next-line primer/spacing\n        margin: 5px 0 0;\n        color: var(--fgColor-muted, var(--color-fg-muted));\n      }\n\n      img {\n        position: relative;\n        // stylelint-disable-next-line primer/spacing\n        top: -2px;\n      }\n    }\n  }\n\n  .btn {\n    float: left;\n    // stylelint-disable-next-line primer/spacing\n    margin: 28px 25px 0 -20px;\n  }\n\n  .form-select {\n    // stylelint-disable-next-line primer/spacing\n    margin-top: 5px;\n  }\n}\n\n// Hide the up/down buttons in <input type=\"number\"> in the login form, the\n// input is used for two-factor auth codes, type=\"number\" makes it more usable\n// on phones\ninput::-webkit-outer-spin-button,\ninput::-webkit-inner-spin-button {\n  margin: 0;\n  appearance: none;\n}\n\n// Input groups\n\n.form-actions {\n  @include clearfix;\n\n  .btn {\n    float: right;\n\n    + .btn {\n      // stylelint-disable-next-line primer/spacing\n      margin-right: 5px;\n    }\n  }\n}\n\n.form-warning {\n  // stylelint-disable-next-line primer/spacing\n  padding: var(--base-size-8) 10px;\n  // stylelint-disable-next-line primer/spacing\n  margin: 10px 0;\n  // stylelint-disable-next-line primer/typography\n  font-size: $h5-size;\n  color: var(--fgColor-attention, var(--color-attention-fg));\n  background: var(--bgColor-attention-muted, var(--color-attention-subtle));\n  // stylelint-disable-next-line primer/borders, primer/colors\n  border: $border-width $border-style var(--borderColor-attention-emphasis, var(--color-attention-emphasis));\n  // stylelint-disable-next-line primer/borders\n  border-radius: $border-radius;\n\n  p {\n    margin: 0;\n    // stylelint-disable-next-line primer/typography\n    line-height: $lh-default;\n  }\n\n  a {\n    // stylelint-disable-next-line primer/typography\n    font-weight: $font-weight-bold;\n  }\n}\n"
  },
  {
    "path": "src/forms/form-group.scss",
    "content": "// stylelint-disable selector-max-type\n\n// Form groups\n//\n// Usage:\n//\n// <div class=\"form-group\">\n//   <div class=\"form-group-header\"> containing the label\n//   <div class=\"form-group-body\"> containing the form elements\n// </div>\n\n.form-group {\n  // stylelint-disable-next-line primer/spacing\n  margin: 15px 0;\n\n  // Autocomplete with embedded icon\n  .form-control.autocomplete-embedded-icon-wrap {\n    &:focus-within {\n      background-color: var(--bgColor-default, var(--color-canvas-default));\n    }\n  }\n\n  // Text fields\n  .form-control {\n    // stylelint-disable-next-line primer/responsive-widths\n    width: 440px;\n    max-width: 100%;\n    // stylelint-disable-next-line primer/spacing\n    margin-right: 5px;\n    background-color: var(--bgColor-muted, var(--color-canvas-inset));\n\n    &:focus {\n      background-color: var(--bgColor-default, var(--color-canvas-default));\n    }\n\n    &.shorter {\n      width: 130px;\n    }\n\n    &.short {\n      width: 250px;\n    }\n\n    &.input-block,\n    &.long {\n      width: 100%;\n    }\n  }\n\n  // Textarea\n  // stylelint-disable selector-no-qualifying-type\n  textarea.form-control {\n    width: 100%;\n    height: 200px;\n    min-height: 200px;\n\n    &.short {\n      height: 50px;\n      min-height: 50px;\n    }\n  }\n  // stylelint-enable selector-no-qualifying-type\n\n  // The Label\n  dt, // TODO: Deprecate\n  .form-group-header {\n    // stylelint-disable-next-line primer/spacing\n    margin: 0 0 6px;\n  }\n\n  label {\n    // fix for chrome bug, see https://github.com/github/github/issues/53931\n    position: static;\n  }\n\n  &.flattened dt, // TODO: Deprecate\n  &.flattened .form-group-header {\n    float: left;\n    margin: 0;\n    // stylelint-disable-next-line primer/typography\n    line-height: 32px;\n  }\n\n  &.flattened dd, // TODO: Deprecate\n  &.flattened .form-group-body {\n    // stylelint-disable-next-line primer/typography\n    line-height: 32px;\n  }\n\n  //\n  // Form Elements\n  //\n  // stylelint-disable selector-no-qualifying-type\n  dd, // TODO: Deprecate\n  .form-group-body {\n    h4 {\n      margin: var(--base-size-4) 0 0;\n\n      &.is-error {\n        color: var(--fgColor-danger, var(--color-danger-fg));\n      }\n\n      &.is-success {\n        color: var(--fgColor-success, var(--color-success-fg));\n      }\n\n      + .note {\n        margin-top: 0;\n      }\n    }\n  }\n  // stylelint-enable selector-no-qualifying-type\n\n  //\n  // Variants\n  //\n\n  &.required {\n    dt label::after, // TODO: Deprecate\n    .form-group-header label::after {\n      // stylelint-disable-next-line primer/spacing\n      padding-left: 5px;\n      color: var(--fgColor-danger, var(--color-danger-fg));\n      content: '*';\n    }\n  }\n\n  // Form AJAX states\n  //\n  // Form fields that need feedback for AJAX loading, success\n  // states and errored states.\n  .success,\n  .error,\n  .indicator {\n    display: none;\n    // stylelint-disable-next-line primer/typography\n    font-size: $font-size-small;\n    // stylelint-disable-next-line primer/typography\n    font-weight: $font-weight-bold;\n  }\n\n  &.loading {\n    opacity: 0.5;\n\n    .indicator {\n      display: inline;\n    }\n\n    .spinner {\n      display: inline-block;\n      vertical-align: middle;\n    }\n  }\n\n  &.successful {\n    .success {\n      display: inline;\n      color: var(--fgColor-success, var(--color-success-fg));\n    }\n  }\n\n  // Form validation\n  //\n  // Our inline errors\n\n  &.successed,\n  &.warn,\n  &.errored {\n    .success,\n    .warning,\n    .error {\n      position: absolute;\n      z-index: 10;\n      display: block; // Show up in errored/warn state\n      max-width: 450px; // Keep our long errors readable\n      padding: var(--base-size-4) var(--base-size-8);\n      margin: var(--base-size-8) 0 0;\n      // stylelint-disable-next-line primer/typography\n      font-size: $font-size-small;\n      // stylelint-disable-next-line primer/typography\n      font-weight: $font-weight-normal;\n      // stylelint-disable-next-line primer/borders\n      border-style: $border-style;\n      // stylelint-disable-next-line primer/borders\n      border-width: $border-width;\n      // stylelint-disable-next-line primer/borders\n      border-radius: $border-radius;\n\n      &::after,\n      &::before {\n        position: absolute;\n        bottom: 100%;\n        // stylelint-disable-next-line primer/spacing\n        left: 10px;\n        z-index: 15;\n        width: 0;\n        height: 0;\n        pointer-events: none;\n        content: ' ';\n        // stylelint-disable-next-line primer/borders, primer/colors\n        border: $border-style transparent;\n      }\n\n      &::after {\n        // stylelint-disable-next-line primer/borders\n        border-width: 5px;\n      }\n\n      &::before {\n        // stylelint-disable-next-line primer/spacing\n        margin-left: -1px;\n        // stylelint-disable-next-line primer/borders\n        border-width: 6px;\n      }\n    }\n  }\n\n  &.successed {\n    .success {\n      color: var(--fgColor-default, var(--color-fg-default));\n      background-color: var(--bgColor-default, var(--color-canvas-default)); // Makes sure the background is opaque to cover any content underneath\n      background-image: linear-gradient(var(--bgColor-success-muted, var(--bgColor-success-muted, var(--color-success-subtle))), var(--color-success-subtle));\n      border-color: var(--borderColor-success-muted, var(--color-success-muted));\n\n      &::after {\n        border-bottom-color: var(--borderColor-success-muted, var(--color-success-muted));\n      }\n\n      &::before {\n        border-bottom-color: var(--borderColor-success-muted, var(--color-success-muted));\n      }\n    }\n  }\n\n  &.warn {\n    .form-control:not(:focus, :focus-visible) {\n      border-color: var(--borderColor-attention-emphasis, var(--color-attention-emphasis));\n    }\n\n    .warning {\n      color: var(--fgColor-default, var(--color-fg-default));\n      background-color: var(--bgColor-default, var(--color-canvas-default)); // Makes sure the background is opaque to cover any content underneath\n      background-image: linear-gradient(var(--bgColor-attention-muted, var(--bgColor-attention-muted, var(--color-attention-subtle))), var(--color-attention-subtle));\n      border-color: var(--borderColor-attention-muted, var(--color-attention-muted));\n\n      &::after {\n        border-bottom-color: var(--borderColor-attention-muted, var(--color-attention-muted));\n      }\n\n      &::before {\n        border-bottom-color: var(--borderColor-attention-muted, var(--color-attention-muted));\n      }\n    }\n  }\n\n  &.errored {\n    .form-control:not(:focus, :focus-visible) {\n      border-color: var(--borderColor-danger-emphasis, var(--color-danger-emphasis));\n    }\n\n    label {\n      color: var(--fgColor-danger, var(--color-danger-fg));\n    }\n\n    .error {\n      color: var(--fgColor-default, var(--color-fg-default));\n      background-color: var(--bgColor-default, var(--color-canvas-default)); // Makes sure the background is opaque to cover any content underneath\n      background-image: linear-gradient(var(--bgColor-danger-muted, var(--bgColor-danger-muted, var(--color-danger-subtle))), var(--color-danger-subtle));\n      border-color: var(--borderColor-danger-muted, var(--color-danger-muted));\n\n      &::after {\n        border-bottom-color: var(--borderColor-danger-muted, var(--color-danger-muted));\n      }\n\n      &::before {\n        border-bottom-color: var(--borderColor-danger-muted, var(--color-danger-muted));\n      }\n    }\n  }\n}\n\n// tooltip\n.note {\n  min-height: 17px;\n  // stylelint-disable-next-line primer/spacing\n  margin: var(--base-size-4) 0 2px;\n  // stylelint-disable-next-line primer/typography\n  font-size: $font-size-small;\n  color: var(--fgColor-muted, var(--color-fg-muted));\n\n  .spinner {\n    // stylelint-disable-next-line primer/spacing\n    margin-right: 3px;\n    vertical-align: middle;\n  }\n}\n"
  },
  {
    "path": "src/forms/form-select.scss",
    "content": "// Custom select\n//\n// Apply `.select` to any `<select>` element for custom styles.\n.form-select {\n  display: inline-block;\n  max-width: 100%;\n  height: $size-5;\n  padding-right: var(--base-size-24);\n  background-color: var(--bgColor-default, var(--color-canvas-default));\n  // SVG with fill: #586069 (--color-icon-secondary)\n  background-image: url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0iIzU4NjA2OSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNNC40MjcgOS40MjdsMy4zOTYgMy4zOTZhLjI1MS4yNTEgMCAwMC4zNTQgMGwzLjM5Ni0zLjM5NkEuMjUuMjUgMCAwMDExLjM5NiA5SDQuNjA0YS4yNS4yNSAwIDAwLS4xNzcuNDI3ek00LjQyMyA2LjQ3TDcuODIgMy4wNzJhLjI1LjI1IDAgMDEuMzU0IDBMMTEuNTcgNi40N2EuMjUuMjUgMCAwMS0uMTc3LjQyN0g0LjZhLjI1LjI1IDAgMDEtLjE3Ny0uNDI3eiIgLz48L3N2Zz4=');\n  background-repeat: no-repeat;\n  background-position: right 4px center;\n  background-size: 16px;\n  appearance: none;\n\n  // Hides the default caret in IE11\n  &::-ms-expand {\n    opacity: 0;\n  }\n\n  &[multiple] {\n    height: auto;\n  }\n}\n\n@include color-mode(dark) {\n  .form-select {\n    // SVG with fill: #6e7681 (--color-icon-secondary)\n    background-image: url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0iIzZlNzY4MSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNNC40MjcgOS40MjdsMy4zOTYgMy4zOTZhLjI1MS4yNTEgMCAwMC4zNTQgMGwzLjM5Ni0zLjM5NkEuMjUuMjUgMCAwMDExLjM5NiA5SDQuNjA0YS4yNS4yNSAwIDAwLS4xNzcuNDI3ek00LjQyMyA2LjQ3TDcuODIgMy4wNzJhLjI1LjI1IDAgMDEuMzU0IDBMMTEuNTcgNi40N2EuMjUuMjUgMCAwMS0uMTc3LjQyN0g0LjZhLjI1LjI1IDAgMDEtLjE3Ny0uNDI3eiIgLz48L3N2Zz4=');\n  }\n}\n\n.select-sm {\n  height: $size-4;\n  // stylelint-disable-next-line primer/spacing\n  padding-top: 3px;\n  // stylelint-disable-next-line primer/spacing\n  padding-bottom: 3px;\n  // stylelint-disable-next-line primer/typography\n  font-size: $font-size-small;\n\n  &[multiple] {\n    height: auto;\n    min-height: 0;\n  }\n}\n"
  },
  {
    "path": "src/forms/index.scss",
    "content": "@import '../support/index.scss';\n@import './form-control.scss';\n@import './form-select.scss';\n@import './form-group.scss';\n@import './input-group.scss';\n@import './radio-group.scss';\n"
  },
  {
    "path": "src/forms/input-group.scss",
    "content": ".input-group {\n  display: table;\n\n  .form-control {\n    position: relative;\n    width: 100%;\n\n    &:focus {\n      z-index: 2;\n    }\n\n    + .btn {\n      margin-left: 0;\n    }\n  }\n\n  // For when you want the input group to behave like inline-block.\n  &.inline {\n    display: inline-table;\n  }\n\n  // within input group, if button exists change focus styles to match input (no offset)\n  &:focus-within {\n    // stylelint-disable-next-line selector-max-type\n    button {\n      outline-offset: 0;\n    }\n  }\n\n  // Autocomplete with embedded icon\n  .form-control.autocomplete-embedded-icon-wrap {\n    display: inline-flex;\n    padding: calc(var(--base-size-4) * 1.25) var(--base-size-8);\n  }\n}\n\n.input-group .form-control,\n.input-group-button {\n  display: table-cell;\n}\n\n.input-group-button {\n  width: 1%;\n  vertical-align: middle; // Match the inputs\n}\n\n.input-group-button--autocomplete-embedded-icon {\n  vertical-align: bottom;\n}\n\n.input-group .form-control:first-child,\n.input-group-button:first-child .btn {\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n}\n\n.input-group .form-control:first-child,\n.input-group-button:first-child .btn:not(.btn-primary) {\n  border-color: var(--control-borderColor-rest, var(--color-border-default));\n}\n\n.input-group-button:first-child .btn {\n  // stylelint-disable-next-line primer/spacing\n  margin-right: -1px;\n}\n\n.input-group .form-control:last-child,\n.input-group-button:last-child .btn {\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0;\n}\n\n.input-group .form-control:last-child,\n.input-group-button:last-child .btn:not(.btn-primary) {\n  border-color: var(--control-borderColor-rest, var(--color-border-default));\n}\n\n.input-group-button:last-child .btn {\n  // stylelint-disable-next-line primer/spacing\n  margin-left: -1px;\n}\n"
  },
  {
    "path": "src/forms/radio-group.scss",
    "content": "// Tab like radio group\n\n.radio-group {\n  @include clearfix;\n}\n\n.radio-label {\n  float: left;\n  // stylelint-disable-next-line primer/spacing\n  padding: 6px var(--base-size-16) 6px calc(var(--base-size-16) + 12px + var(--base-size-8)); // 12px is the size of the radio-input\n  // stylelint-disable-next-line primer/spacing\n  margin-left: -1px;\n  // stylelint-disable-next-line primer/typography\n  font-size: $body-font-size;\n  // stylelint-disable-next-line primer/typography\n  line-height: 20px; // Specifically not inherit our `<body>` default\n  color: var(--fgColor-default, var(--color-fg-default));\n  cursor: pointer;\n  // stylelint-disable-next-line primer/borders, primer/colors\n  border: $border-width $border-style var(--borderColor-default, var(--color-border-default));\n\n  :checked + & {\n    position: relative;\n    z-index: 1;\n    border-color: var(--borderColor-accent-emphasis, var(--color-accent-emphasis));\n  }\n\n  &:first-of-type {\n    margin-left: 0;\n    // stylelint-disable-next-line primer/borders\n    border-top-left-radius: $border-radius;\n    // stylelint-disable-next-line primer/borders\n    border-bottom-left-radius: $border-radius;\n  }\n\n  &:last-of-type {\n    // stylelint-disable-next-line primer/borders\n    border-top-right-radius: $border-radius;\n    // stylelint-disable-next-line primer/borders\n    border-bottom-right-radius: $border-radius;\n  }\n\n  .octicon {\n    margin-left: var(--base-size-4);\n    color: var(--fgColor-muted, var(--color-fg-subtle));\n  }\n}\n\n.radio-input {\n  z-index: 3;\n  float: left;\n  // stylelint-disable-next-line primer/spacing\n  margin: 10px calc(var(--base-size-32) * -1) 0 var(--base-size-16);\n\n  &:disabled {\n    position: relative; // enables z-index\n\n    + .radio-label {\n      color: var(--fgColor-disabled, var(--color-primer-fg-disabled));\n      cursor: default;\n      background-color: var(--bgColor-neutral-muted, var(--color-neutral-subtle));\n\n      .octicon {\n        color: inherit;\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "src/header/README.md",
    "content": "---\nbundle: \"header\"\ngenerated: true\n---\n\n# Primer CSS: `header` bundle\n\n## Usage\n\nPrimer CSS source files are written in [SCSS]. To include this Primer CSS module in your own build, ensure that your `node_modules` directory is listed in your Sass include paths, then import it with:\n\n```scss\n@import \"@primer/css/header/index.scss\";\n```\n\n## Build\n\nThe `@primer/css` npm package includes a standalone CSS build of this module in `dist/header.css`.\n\n## License\n\n[MIT](https://github.com/primer/css/blob/main/LICENSE) &copy; [GitHub](https://github.com/)\n\n\n[scss]: https://sass-lang.com/documentation/syntax#scss\n"
  },
  {
    "path": "src/header/header.scss",
    "content": ".Header {\n  z-index: 32; // TODO: Figure out z-index system\n  display: flex;\n  padding: var(--base-size-16);\n  // stylelint-disable-next-line primer/typography\n  font-size: $h5-size;\n  // stylelint-disable-next-line primer/typography\n  line-height: $lh-default;\n  color: var(--header-fgColor-default, var(--color-header-text));\n  background-color: var(--header-bgColor, var(--color-header-bg));\n  align-items: center;\n  flex-wrap: nowrap;\n}\n\n.Header-item {\n  display: flex;\n  margin-right: var(--base-size-16);\n  align-self: stretch;\n  align-items: center;\n  flex-wrap: nowrap;\n}\n\n.Header-item--full {\n  flex: auto;\n}\n\n.Header-link {\n  // stylelint-disable-next-line primer/typography\n  font-weight: $font-weight-bold;\n  color: var(--header-fgColor-logo, var(--color-header-logo));\n  white-space: nowrap;\n\n  &:hover,\n  &:focus {\n    color: var(--header-fgColor-default, var(--color-header-text));\n    text-decoration: none;\n  }\n}\n\n.Header-input {\n  color: var(--header-fgColor-default, var(--color-header-text));\n  background-color: var(--headerSearch-bgColor, var(--color-header-search-bg));\n  // stylelint-disable-next-line primer/borders, primer/colors\n  border: $border-width $border-style var(--headerSearch-borderColor, var(--color-header-search-border));\n  box-shadow: none;\n\n  &::placeholder {\n    // stylelint-disable-next-line primer/colors\n    color: rgb(255, 255, 255, 0.75);\n  }\n}\n"
  },
  {
    "path": "src/header/index.scss",
    "content": "@import '../support/index.scss';\n@import './header.scss';\n"
  },
  {
    "path": "src/index.scss",
    "content": "/*!\n * Primer CSS\n * https://primer.style\n *\n * Released under MIT license.\n */\n\n// Primer main file\n//\n// Imports all Primer files in their intended order for easy mass-inclusion.\n// Should you need specific files, you can easily use separate `@import`s.\n\n// CSS color variables\n@import './color-modes/index.scss';\n@import './primitives/index.scss';\n\n// Global requirements\n@import './core/index.scss';\n@import './product/index.scss';\n@import './marketing/index.scss';\n"
  },
  {
    "path": "src/labels/README.md",
    "content": "---\nbundle: \"labels\"\ngenerated: true\n---\n\n# Primer CSS: `labels` bundle\n\n## Usage\n\nPrimer CSS source files are written in [SCSS]. To include this Primer CSS module in your own build, ensure that your `node_modules` directory is listed in your Sass include paths, then import it with:\n\n```scss\n@import \"@primer/css/labels/index.scss\";\n```\n\n## Build\n\nThe `@primer/css` npm package includes a standalone CSS build of this module in `dist/labels.css`.\n\n## License\n\n[MIT](https://github.com/primer/css/blob/main/LICENSE) &copy; [GitHub](https://github.com/)\n\n\n[scss]: https://sass-lang.com/documentation/syntax#scss\n"
  },
  {
    "path": "src/labels/index.scss",
    "content": "@import '../support/index.scss';\n@import './mixins.scss';\n@import './issue-labels.scss';\n"
  },
  {
    "path": "src/labels/issue-labels.scss",
    "content": "// Issue Labels\n\n// TODO: Replace with .Label once solid backgrounds are supported\n\n.IssueLabel {\n  @include labels-base;\n\n  .g-emoji {\n    position: relative;\n    // stylelint-disable-next-line primer/spacing\n    top: -0.05em;\n    display: inline-block;\n    // stylelint-disable-next-line primer/typography\n    font-size: 1em;\n    // stylelint-disable-next-line primer/typography\n    line-height: $lh-condensed-ultra;\n  }\n\n  &:hover {\n    text-decoration: none;\n  }\n}\n\n.IssueLabel--big {\n  @include labels-large;\n}\n"
  },
  {
    "path": "src/labels/mixins.scss",
    "content": "// Label mixins\n\n// Default: 20px\n// Large: 24px\n// Inline: em based\n\n@mixin labels-base {\n  display: inline-block;\n  // stylelint-disable-next-line primer/spacing\n  padding: 0 7px;\n  // stylelint-disable-next-line primer/typography\n  font-size: $font-size-small;\n  // stylelint-disable-next-line primer/typography\n  font-weight: $font-weight-semibold;\n  // stylelint-disable-next-line primer/typography\n  line-height: 18px;\n  white-space: nowrap;\n  // stylelint-disable-next-line primer/borders, primer/colors\n  border: $border-width $border-style transparent;\n  // stylelint-disable-next-line primer/borders\n  border-radius: 2em;\n}\n\n@mixin labels-large {\n  // stylelint-disable-next-line primer/spacing\n  padding-right: 10px;\n  // stylelint-disable-next-line primer/spacing\n  padding-left: 10px;\n  // stylelint-disable-next-line primer/typography\n  line-height: 22px;\n}\n\n// Inline\n//\n// Doesn't increase height of parent element\n// Can be used with different font-sizes\n\n@mixin labels--inline {\n  display: inline;\n  // stylelint-disable-next-line primer/spacing\n  padding: 0.12em $em-spacer-5;\n  // stylelint-disable-next-line primer/typography\n  font-size: 85%;\n}\n"
  },
  {
    "path": "src/layout/README.md",
    "content": "---\nbundle: \"layout\"\ngenerated: true\n---\n\n# Primer CSS: `layout` bundle\n\n## Usage\n\nPrimer CSS source files are written in [SCSS]. To include this Primer CSS module in your own build, ensure that your `node_modules` directory is listed in your Sass include paths, then import it with:\n\n```scss\n@import \"@primer/css/layout/index.scss\";\n```\n\n## Build\n\nThe `@primer/css` npm package includes a standalone CSS build of this module in `dist/layout.css`.\n\n## License\n\n[MIT](https://github.com/primer/css/blob/main/LICENSE) &copy; [GitHub](https://github.com/)\n\n\n[scss]: https://sass-lang.com/documentation/syntax#scss\n"
  },
  {
    "path": "src/layout/app-frame.scss",
    "content": "// stylelint-disable max-nesting-depth\n// stylelint-disable primer/spacing\n\n.AppFrame {\n\n  // AppFrame structure\n  // ===================\n  //\n  // .AppFrame\n  // ├─ .AppFrame-a11yNav\n  // │  ├─ .AppFrame-a11yLink\n  // │\n  // ├─ .AppFrame-main\n  // │  ├─ .AppFrame-header-wrapper\n  // │  │   ├─ .AppFrame-header\n  // │  │   ├─ .AppFrame-subheader\n  // │  │\n  // │  ├─ #start-of-content\n  // │  ├─ .AppFrame-body\n  // │\n  // │  .AppFrame-footer\n\n  // Accessibility navigation\n\n  .AppFrame-a11yNav {\n    position: absolute;\n    z-index: 1000;\n    display: flex;\n    width: 100%;\n    padding: var(--base-size-16, 16px);\n    background: var(--bgColor-inset, var(--color-canvas-inset));\n    padding-block-end: calc(var(--base-size-16, 16px) - var(--borderWidth-thin, 1px));\n    isolation: isolate;\n    align-items: center;\n    gap: var(--base-size-8, 8px);\n\n    &:not(:focus-within) {\n      width: 1px;\n      height: 1px;\n      padding: 0;\n      margin: -1px;\n      overflow: hidden;\n      clip: rect(1px, 1px, 1px, 1px); /* stylelint-disable-line property-no-deprecated */\n      border: 0;\n    }\n\n    &:focus-within {\n      top: 0;\n      left: 0;\n\n      // Narrow viewport\n      @media (max-width: #{map-get($breakpoints, 'md') - 0.02px}) {\n        justify-content: center;\n      }\n    }\n  }\n\n  .AppFrame-a11yLink {\n    transition: none;\n\n    &:not(:focus) {\n      display: block;\n      width: var(--base-size-8, 8px);\n      height: var(--base-size-8, 8px);\n      overflow: hidden;\n      text-indent: var(--base-size-128, 128px);\n      pointer-events: none;\n      // stylelint-disable-next-line primer/colors\n      background: var(--borderColor-default, var(--color-border-default));\n      border-radius: var(--borderRadius-full, 100vh);\n    }\n\n    &:focus {\n      z-index: 20;\n      display: grid;\n      width: auto;\n      height: auto;\n      min-height: var(--control-medium-size, 32px);\n      padding: 0 var(--control-medium-paddingInline-spacious, 16px);\n      overflow: auto;\n      color: var(--fgColor-onEmphasis, var(--color-fg-on-emphasis));\n      background: var(--bgColor-accent-emphasis, var(--color-accent-emphasis));\n      border-radius: var(--borderRadius-full, 100vh);\n      align-items: center;\n\n      @media (pointer: coarse) {\n        &::after {\n          @include minTouchTarget(var(--control-minTarget-coarse, 44px));\n        }\n      }\n\n      @media (prefers-reduced-motion: no-preference) {\n        animation: AppFrame-a11yLink-focus 200ms ease-out;\n      }\n\n      @keyframes AppFrame-a11yLink-focus {\n        0% {\n          color: var(--fgColor-accent, var(--color-accent-emphasis));\n          transform: scale(0.3, 0.25);\n        }\n\n        50% {\n          color: var(--fgColor-accent, var(--color-accent-emphasis));\n          transform: scale(1, 1);\n        }\n\n        55% {\n          color: var(--fgColor-onEmphasis, var(--color-fg-on-emphasis));\n        }\n\n        100% {\n          transform: scaleX(1);\n        }\n      }\n    }\n  }\n\n  .AppFrame-main {\n    display: flex;\n    min-height: 100vh;\n    flex-direction: column;\n\n    @supports (height: 100dvh) {\n      min-height: 100dvh;\n    }\n  }\n\n  .AppFrame-header-wrapper {\n    position: relative;\n    height: min-content;\n    overflow: visible;\n\n    .AppFrame-header {\n      position: sticky;\n      top: 0;\n      z-index: 1;\n    }\n  }\n\n  .AppFrame-header {\n    flex: 0 0 auto;\n  }\n\n  .AppFrame-subheader {\n    flex: 0 0 auto;\n  }\n\n  .AppFrame-body {\n    flex: 1 0;\n    height: 100%;\n  }\n\n  .AppFrame-footer {\n    flex: 0 0 auto;\n  }\n}\n"
  },
  {
    "path": "src/layout/container.scss",
    "content": "// Fixed-width, centered column for site content.\n// Handy container styles that match our breakpoints\n\n// 544px\n.container-sm {\n  max-width: $width-sm;\n  margin-right: auto;\n  margin-left: auto;\n}\n\n// 768px\n.container-md {\n  max-width: $container-md;\n  margin-right: auto;\n  margin-left: auto;\n}\n\n// 1004px - this matches the current fixed width: 980px + padding: px-3\n.container-lg {\n  max-width: $container-lg;\n  margin-right: auto;\n  margin-left: auto;\n}\n\n// 1280px\n.container-xl {\n  max-width: $container-xl;\n  margin-right: auto;\n  margin-left: auto;\n}\n"
  },
  {
    "path": "src/layout/grid-offset.scss",
    "content": "// Optional offset options to work with grid.scss\n\n// Offset Columns\n\n@each $breakpoint, $variant in $responsive-variants {\n  @include breakpoint($breakpoint) {\n    .offset#{$variant}-1 { margin-left: (1 * 0.0833333333 * 100%) !important; }\n    .offset#{$variant}-2 { margin-left: (2 * 0.0833333333 * 100%) !important; }\n    .offset#{$variant}-3 { margin-left: (3 * 0.0833333333 * 100%) !important; }\n    .offset#{$variant}-4 { margin-left: (4 * 0.0833333333 * 100%) !important; }\n    .offset#{$variant}-5 { margin-left: (5 * 0.0833333333 * 100%) !important; }\n    .offset#{$variant}-6 { margin-left: (6 * 0.0833333333 * 100%) !important; }\n    .offset#{$variant}-7 { margin-left: (7 * 0.0833333333 * 100%) !important; }\n    .offset#{$variant}-8 { margin-left: (8 * 0.0833333333 * 100%) !important; }\n    .offset#{$variant}-9 { margin-left: (9 * 0.0833333333 * 100%) !important; }\n    .offset#{$variant}-10 { margin-left: (10 * 0.0833333333 * 100%) !important; }\n    .offset#{$variant}-11 { margin-left: (11 * 0.0833333333 * 100%) !important; }\n  }\n}\n"
  },
  {
    "path": "src/layout/grid.scss",
    "content": "// GRID\n\n// Columns\n\n// stylelint-disable-next-line  declaration-property-value-no-unknown\n.col-1 { width: (1 * 0.0833333333 * 100%); }\n// stylelint-disable-next-line  declaration-property-value-no-unknown\n.col-2 { width: (2 * 0.0833333333 * 100%); }\n// stylelint-disable-next-line  declaration-property-value-no-unknown\n.col-3 { width: (3 * 0.0833333333 * 100%); }\n// stylelint-disable-next-line  declaration-property-value-no-unknown\n.col-4 { width: (4 * 0.0833333333 * 100%); }\n// stylelint-disable-next-line  declaration-property-value-no-unknown\n.col-5 { width: (5 * 0.0833333333 * 100%); }\n// stylelint-disable-next-line  declaration-property-value-no-unknown\n.col-6 { width: (6 * 0.0833333333 * 100%); }\n// stylelint-disable-next-line  declaration-property-value-no-unknown\n.col-7 { width: (7 * 0.0833333333 * 100%); }\n// stylelint-disable-next-line  declaration-property-value-no-unknown\n.col-8 { width: (8 * 0.0833333333 * 100%); }\n// stylelint-disable-next-line  declaration-property-value-no-unknown\n.col-9 { width: (9 * 0.0833333333 * 100%); }\n// stylelint-disable-next-line  declaration-property-value-no-unknown\n.col-10 { width: (10 * 0.0833333333 * 100%); }\n// stylelint-disable-next-line  declaration-property-value-no-unknown\n.col-11 { width: (11 * 0.0833333333 * 100%); }\n.col-12 { width: 100%; }\n\n@each $breakpoint in map-keys($breakpoints) {\n  @include breakpoint($breakpoint) {\n    .col-#{$breakpoint}-1 { width: ( 1 * 0.0833333333 * 100%); }\n    .col-#{$breakpoint}-2 { width: ( 2 * 0.0833333333 * 100%); }\n    .col-#{$breakpoint}-3 { width: ( 3 * 0.0833333333 * 100%); }\n    .col-#{$breakpoint}-4 { width: ( 4 * 0.0833333333 * 100%); }\n    .col-#{$breakpoint}-5 { width: ( 5 * 0.0833333333 * 100%); }\n    .col-#{$breakpoint}-6 { width: ( 6 * 0.0833333333 * 100%); }\n    .col-#{$breakpoint}-7 { width: ( 7 * 0.0833333333 * 100%); }\n    .col-#{$breakpoint}-8 { width: ( 8 * 0.0833333333 * 100%); }\n    .col-#{$breakpoint}-9 { width: ( 9 * 0.0833333333 * 100%); }\n    .col-#{$breakpoint}-10 { width: ( 10 * 0.0833333333 * 100%); }\n    .col-#{$breakpoint}-11 { width: ( 11 * 0.0833333333 * 100%); }\n    .col-#{$breakpoint}-12 { width: 100%; }\n  }\n}\n\n// Gutters\n// Apply padding and a negative margin to the outside of the container\n// stylelint-disable primer/spacing\n@mixin gutters ($gutter-width: var(--base-size-16)) {\n  margin-right: calc($gutter-width * -1);\n  margin-left: calc($gutter-width * -1);\n\n  > [class*='col-'] {\n    padding-right: $gutter-width !important;\n    padding-left: $gutter-width !important;\n  }\n}\n\n.gutter {\n  @include gutters(var(--base-size-16));\n}\n\n.gutter-condensed {\n  @include gutters(var(--base-size-8));\n}\n\n.gutter-spacious {\n  @include gutters(var(--base-size-24));\n}\n\n@each $breakpoint in map-keys($breakpoints) {\n  @include breakpoint($breakpoint) {\n    .gutter-#{$breakpoint} { @include gutters(var(--base-size-16)); }\n    .gutter-#{$breakpoint}-condensed { @include gutters(var(--base-size-8)); }\n    .gutter-#{$breakpoint}-spacious { @include gutters(var(--base-size-24)); }\n  }\n}\n"
  },
  {
    "path": "src/layout/index.scss",
    "content": "@import '../support/index.scss';\n@import './app-frame.scss';\n@import './container.scss';\n@import './grid.scss';\n@import './grid-offset.scss';\n@import './page-layout.scss';\n@import './stack.scss';\n"
  },
  {
    "path": "src/layout/page-layout.scss",
    "content": "// stylelint-disable max-nesting-depth\n// stylelint-disable selector-max-specificity\n// stylelint-disable no-duplicate-selectors\n\n$Layout-divider-color: var(--borderColor-default, var(--color-border-default)) !default;\n$Layout-responsive-variant-max-breakpoint: 'md' !default;\n\n:root {\n  --Layout-pane-width: #{map-get($sidebar-width, 'sm')};\n  --Layout-content-width: 100%;\n  --Layout-template-columns: 1fr var(--Layout-pane-width);\n  --Layout-template-areas: 'content pane';\n  --Layout-column-gap: var(--base-size-16);\n  --Layout-row-gap: var(--base-size-16);\n\n  // the `px` unit is mandatory for `calc()` execution. See https://stackoverflow.com/a/32518348\n  --Layout-outer-spacing-x: 0px; // wrapper margin x\n  --Layout-outer-spacing-y: 0px; // wrapper margin y\n  --Layout-inner-spacing-min: 0px; // default region padding\n  --Layout-inner-spacing-max: 0px; // relaxed content horizontal padding\n}\n\n// Layout beta mixins\n\n// responsive region dividers\n\n@mixin Layout-line-divider {\n  position: absolute;\n  // stylelint-disable-next-line primer/spacing\n  left: calc(var(--Layout-outer-spacing-x) * -1);\n  display: block;\n  width: calc(100% + (var(--Layout-outer-spacing-x) * 2));\n  height: 1px;\n  content: '';\n  // stylelint-disable-next-line primer/colors\n  background-color: $Layout-divider-color;\n}\n\n@mixin Layout-filled-divider {\n  position: absolute;\n  bottom: calc(var(--base-size-8) * -1);\n  // stylelint-disable-next-line primer/spacing\n  left: calc(var(--Layout-outer-spacing-x) * -1);\n  display: block;\n  width: calc(100% + (var(--Layout-outer-spacing-x) * 2));\n  height: var(--base-size-8);\n  content: '';\n  background-color: var(--bgColor-inset, var(--color-canvas-inset));\n  // stylelint-disable-next-line primer/box-shadow\n  box-shadow: inset 0 1px $Layout-divider-color, inset 0 -1px $Layout-divider-color;\n}\n\n.PageLayout {\n  display: block;\n  // stylelint-disable-next-line primer/spacing\n  margin: var(--Layout-outer-spacing-y) var(--Layout-outer-spacing-x);\n\n  // multi-column desktop-friendly layout\n\n  @include breakpoint($Layout-responsive-variant-max-breakpoint) {\n\n    // Set a `content` region width, to work with loading states when\n    // `pane` is not yet loaded. See https://github.com/primer/css/pull/1818\n    $Layout-content-full-width: minmax(0, calc(100% - var(--Layout-pane-width) - var(--Layout-column-gap)));\n\n    &.PageLayout--panePos-start {\n      --Layout-template-columns: var(--Layout-pane-width) #{$Layout-content-full-width};\n      --Layout-template-areas: 'pane content';\n    }\n\n    &.PageLayout--panePos-end {\n      --Layout-template-columns: #{$Layout-content-full-width} var(--Layout-pane-width);\n      --Layout-template-areas: 'content pane';\n    }\n\n    // header divider\n\n    .PageLayout-header--hasDivider {\n      // stylelint-disable-next-line primer/spacing\n      padding-bottom: max(var(--Layout-row-gap), var(--Layout-inner-spacing-min));\n      // stylelint-disable-next-line primer/borders, primer/colors\n      border-bottom: $border-width solid $Layout-divider-color;\n    }\n\n    // footer divider\n\n    .PageLayout-footer--hasDivider {\n      // stylelint-disable-next-line primer/spacing\n      padding-top: max(var(--Layout-row-gap), var(--Layout-inner-spacing-min));\n      // stylelint-disable-next-line primer/borders, primer/colors\n      border-top: $border-width solid $Layout-divider-color;\n    }\n\n    // pane divider\n\n    &.PageLayout--hasPaneDivider {\n      &.PageLayout--panePos-start {\n        .PageLayout-pane {\n          // stylelint-disable-next-line primer/borders, primer/colors\n          border-right: $border-width solid $Layout-divider-color;\n        }\n\n        &:not(.PageLayout--columnGap-none) {\n          .PageLayout-pane {\n            // stylelint-disable-next-line primer/spacing\n            padding-right: calc(var(--Layout-column-gap) - #{$border-width});\n            // stylelint-disable-next-line primer/spacing\n            margin-right: calc(var(--Layout-column-gap) * -1);\n          }\n\n          .PageLayout-content {\n            // stylelint-disable-next-line primer/spacing\n            margin-left: var(--Layout-column-gap);\n          }\n        }\n      }\n\n      &.PageLayout--panePos-end {\n        .PageLayout-pane {\n          // stylelint-disable-next-line primer/borders, primer/colors\n          border-left: $border-width solid $Layout-divider-color;\n        }\n\n        &:not(.PageLayout--columnGap-none) {\n          .PageLayout-pane {\n            // stylelint-disable-next-line primer/spacing\n            padding-left: calc(var(--Layout-column-gap) - #{$border-width});\n            // stylelint-disable-next-line primer/spacing\n            margin-left: calc(var(--Layout-column-gap) * -1);\n          }\n\n          .PageLayout-content {\n            // stylelint-disable-next-line primer/spacing\n            margin-right: var(--Layout-column-gap);\n          }\n        }\n      }\n    }\n\n    // sticky pane\n\n    .PageLayout-pane--sticky {\n      position: sticky;\n      top: 0;\n      max-height: 100vh;\n      overflow: auto;\n      scrollbar-width: thin;\n\n      @supports (max-height: 100dvh) {\n        max-height: 100dvh;\n      }\n    }\n\n    // content width\n\n    [class^='PageLayout-content-centered-'] {\n      max-width: calc(var(--Layout-content-width) + var(--Layout-pane-width) + var(--Layout-column-gap));\n      margin-right: auto;\n      margin-left: auto;\n    }\n\n    &.PageLayout--hasPaneDivider {\n      [class^='PageLayout-content-centered-'] {\n        max-width: calc(var(--Layout-content-width) + var(--Layout-pane-width) + (var(--Layout-column-gap) * 2));\n      }\n    }\n\n    &.PageLayout--panePos-start {\n      [class^='PageLayout-content-centered-'] > [class^='container-'] {\n        margin-left: 0;\n      }\n    }\n\n    &.PageLayout--panePos-end {\n      [class^='PageLayout-content-centered-'] > [class^='container-'] {\n        margin-right: 0;\n      }\n    }\n\n    @each $breakpoint in map-keys($breakpoints) {\n      .PageLayout-content-centered-#{$breakpoint} {\n        --Layout-content-width: #{map-get($breakpoints, $breakpoint)};\n      }\n    }\n\n    // pane width\n\n    @each $breakpoint in map-keys($sidebar-width) {\n      @include breakpoint($breakpoint) {\n        --Layout-pane-width: #{map-get($sidebar-width, $breakpoint)};\n      }\n    }\n\n    &.PageLayout--paneWidth-narrow {\n      @each $breakpoint in map-keys($sidebar-narrow-width) {\n        @include breakpoint($breakpoint) {\n          --Layout-pane-width: #{map-get($sidebar-narrow-width, $breakpoint)};\n        }\n      }\n    }\n\n    &.PageLayout--paneWidth-wide {\n      @each $breakpoint in map-keys($sidebar-wide-width) {\n        @include breakpoint($breakpoint) {\n          --Layout-pane-width: #{map-get($sidebar-wide-width, $breakpoint)};\n        }\n      }\n    }\n  }\n\n  // responsive behaviors on narrow viewports\n\n  @media (max-width: #{map-get($breakpoints, $Layout-responsive-variant-max-breakpoint) - 0.02px}) {\n\n    // variant: stackRegions\n\n    &.PageLayout--responsive-stackRegions {\n      --Layout-template-columns: 1fr;\n\n      // responsive-panePos: end (default)\n      --Layout-template-areas: 'content' 'pane';\n\n      // responsive-panePos: start\n      &.PageLayout--responsive-panePos-start {\n        --Layout-template-areas: 'pane' 'content';\n      }\n    }\n\n    // variant: separateRegions\n\n    &.PageLayout--responsive-separateRegions {\n      --Layout-template-columns: 1fr;\n      --Layout-template-areas: 'content';\n\n      &.PageLayout--responsive-primary-content {\n        --Layout-template-areas: 'content';\n\n        .PageLayout-pane {\n          display: none;\n        }\n      }\n\n      &.PageLayout--responsive-primary-pane {\n        --Layout-template-areas: 'pane';\n\n        .PageLayout-content {\n          display: none;\n        }\n      }\n    }\n\n    // region dividers on narrow viewports\n\n    .PageLayout-region--dividerNarrow-line-before {\n      position: relative;\n      // stylelint-disable-next-line primer/spacing\n      margin-top: var(--Layout-row-gap);\n\n      &::before {\n        @include Layout-line-divider;\n\n        // stylelint-disable-next-line primer/spacing\n        top: calc(#{$border-width * -1} - var(--Layout-row-gap));\n      }\n    }\n\n    .PageLayout-region--dividerNarrow-line-after {\n      position: relative;\n      // stylelint-disable-next-line primer/spacing\n      margin-bottom: var(--Layout-row-gap);\n\n      &::after {\n        @include Layout-line-divider;\n\n        // stylelint-disable-next-line primer/spacing\n        bottom: calc(#{$border-width * -1} - var(--Layout-row-gap));\n      }\n    }\n\n    .PageLayout-region--dividerNarrow-filled-before {\n      position: relative;\n      // stylelint-disable-next-line primer/spacing\n      margin-top: calc(var(--base-size-8) + var(--Layout-row-gap));\n\n      &::after {\n        @include Layout-filled-divider;\n\n        // stylelint-disable-next-line primer/spacing\n        top: calc(calc(var(--base-size-8) * -1) - var(--Layout-row-gap));\n      }\n    }\n\n    .PageLayout-region--dividerNarrow-filled-after {\n      position: relative;\n      // stylelint-disable-next-line primer/spacing\n      margin-bottom: calc(var(--base-size-8) + var(--Layout-row-gap));\n\n      &::before {\n        @include Layout-filled-divider;\n\n        // stylelint-disable-next-line primer/spacing\n        bottom: calc(calc(var(--base-size-8) * -1) - var(--Layout-row-gap));\n      }\n    }\n  }\n}\n\n// PageLayout-wrapper bundles header, footer, pane, and content regions\n.PageLayout-wrapper {\n  display: grid;\n  grid: auto-flow / 1fr;\n  row-gap: var(--Layout-row-gap);\n}\n\n// PageLayout-columns wrap pane and content regions\n// If layout has no pane, PageLayout-columns is not present\n.PageLayout-columns {\n  display: grid;\n  column-gap: var(--Layout-column-gap);\n  row-gap: var(--Layout-row-gap);\n  grid-template-columns: var(--Layout-template-columns);\n  grid-template-rows: 1fr;\n  grid-template-areas: var(--Layout-template-areas);\n\n  .PageLayout-content {\n    // stylelint-disable-next-line primer/spacing\n    padding-right: var(--Layout-inner-spacing-max);\n    // stylelint-disable-next-line primer/spacing\n    padding-left: var(--Layout-inner-spacing-max);\n    grid-area: content;\n  }\n\n  .PageLayout-pane {\n    grid-area: pane;\n  }\n}\n\n// outer spacing\n\n.PageLayout--outerSpacing-normal {\n  --Layout-outer-spacing-x: var(--base-size-16);\n  --Layout-outer-spacing-y: var(--base-size-16);\n\n  @include breakpoint(lg) {\n    --Layout-outer-spacing-x: var(--base-size-24);\n    --Layout-outer-spacing-y: var(--base-size-24);\n  }\n}\n\n.PageLayout--outerSpacing-condensed {\n  --Layout-outer-spacing-x: var(--base-size-16);\n  --Layout-outer-spacing-y: var(--base-size-16);\n}\n\n// inner spacing\n\n.PageLayout--innerSpacing-normal {\n  --Layout-inner-spacing-min: var(--base-size-16);\n  --Layout-inner-spacing-max: var(--base-size-16);\n\n  @include breakpoint(lg) {\n    --Layout-inner-spacing-max: var(--base-size-24);\n  }\n}\n\n.PageLayout--innerSpacing-condensed {\n  --Layout-inner-spacing-min: var(--base-size-16);\n  --Layout-inner-spacing-max: var(--base-size-16);\n}\n\n// column gap\n\n.PageLayout--columnGap-normal {\n  --Layout-column-gap: var(--base-size-16);\n\n  @include breakpoint(lg) {\n    --Layout-column-gap: var(--base-size-24);\n  }\n}\n\n.PageLayout--columnGap-condensed {\n  --Layout-column-gap: var(--base-size-16);\n}\n\n.PageLayout--columnGap-none {\n  // the `px` unit is mandatory for `calc()` execution. See https://stackoverflow.com/a/32518348\n  --Layout-column-gap: 0px;\n}\n\n// row gap\n\n.PageLayout--rowGap-normal {\n  --Layout-row-gap: var(--base-size-16);\n\n  @include breakpoint(lg) {\n    --Layout-row-gap: var(--base-size-24);\n  }\n}\n\n.PageLayout--rowGap-none {\n  // the `px` unit is mandatory for `calc()` execution. See https://stackoverflow.com/a/32518348\n  --Layout-row-gap: 0px;\n}\n\n.PageLayout--rowGap-condensed {\n  --Layout-row-gap: var(--base-size-16);\n}\n\n// regions\n\n.PageLayout-header,\n.PageLayout-content,\n.PageLayout-pane,\n.PageLayout-footer {\n  // stylelint-disable-next-line primer/spacing\n  padding: var(--Layout-inner-spacing-min);\n}\n"
  },
  {
    "path": "src/layout/stack.scss",
    "content": "// Stack layout helper component\n\n.Stack {\n\n  // A Stack component lays elements horizontally or vertically on the page.\n  //\n  // Stack is a simple abstraction of CSS' Flexbox. Use it to structure elements\n  // that are visually grouped, following the same direction.\n  //\n  // Markup structure\n  // ================\n  //\n  // .Stack\n  // ├─ &.Stack--dir-[ inline | block ]-[ whenNarrow | whenRegular | whenWide ]\n  // ├─ &.Stack--gap-[ none | condensed | normal | spacious ]-[ whenNarrow | whenRegular | whenWide ]\n  // ├─ &.Stack--align-[ start | center | end | baseline ]-[ whenNarrow | whenRegular | whenWide ]\n  // ├─ &.Stack--alignWrap-[ start | center | end | distribute | distributeEvenly ]-[ whenNarrow | whenRegular | whenWide ]\n  // ├─ &.Stack--spread-[ start | center | end | distribute | distributeEvenly ]-[ whenNarrow | whenRegular | whenWide ]\n  // ├─ &.Stack--wrap-[ whenNarrow | whenRegular | whenWide ]\n  // ├─ &.Stack--nowrap-[ whenNarrow | whenRegular | whenWide ]\n  // ├─ &.Stack--showDividers-[ whenNarrow | whenRegular | whenWide ]\n  // │\n  // ├─ .Stack-divider\n  // ├─ .Stack-item\n  // │  ├─ &.Stack-item--expand-[ whenNarrow | whenRegular | whenWide ]\n  // │  ├─ &.Stack-item--keepSize-[ whenNarrow | whenRegular | whenWide ]\n\n  $Stack-gap-default: var(--stack-gap-normal, 16px);\n\n  --Stack-gap-whenRegular: #{$Stack-gap-default};\n  --Stack-gap-whenNarrow: #{$Stack-gap-default};\n  --Stack-gap-whenWide: var(--Stack-gap-whenRegular);\n  --Stack-divider-color: var(--borderColor-default, var(--color-border-default));\n\n  display: flex;\n  flex-flow: column;\n  align-items: stretch;\n  align-content: flex-start;\n  gap: var(--Stack-gap-whenRegular);\n\n  @media ($viewport-narrow) {\n    gap: var(--Stack-gap-whenNarrow);\n  }\n\n  @media ($viewport-wide) {\n    gap: var(--Stack-gap-whenWide);\n  }\n}\n\n@mixin Stack--modifiers($viewportRange: '') {\n  // direction\n\n  .Stack--dir-inline#{$viewportRange} {\n    flex-flow: row;\n  }\n\n  .Stack--dir-block#{$viewportRange} {\n    flex-flow: column;\n  }\n\n  // gap\n\n  .Stack--gap-none#{$viewportRange} {\n    --Stack-gap#{$viewportRange}: 0;\n  }\n\n  .Stack--gap-condensed#{$viewportRange} {\n    --Stack-gap#{$viewportRange}: var(--stack-gap-condensed, 8px);\n  }\n\n  .Stack--gap-normal#{$viewportRange} {\n    --Stack-gap#{$viewportRange}: var(--stack-gap-normal, 16px);\n  }\n\n  // There's no .Stack--gap-spacious-whenNarrow\n  // Narrow viewports render `spacious` gap as `normal`\n  @if $viewportRange != '-whenNarrow' {\n    .Stack--gap-spacious#{$viewportRange} {\n      --Stack-gap#{$viewportRange}: var(--stack-gap-spacious, 24px);\n    }\n  }\n\n  // align\n\n  .Stack--align-start#{$viewportRange} {\n    align-items: flex-start;\n  }\n\n  .Stack--align-center#{$viewportRange} {\n    align-items: center;\n  }\n\n  .Stack--align-end#{$viewportRange} {\n    align-items: flex-end;\n  }\n\n  .Stack--align-baseline#{$viewportRange} {\n    align-items: baseline;\n  }\n\n  // alignWrap\n\n  .Stack--alignWrap-start#{$viewportRange} {\n    align-content: flex-start;\n  }\n\n  .Stack--alignWrap-center#{$viewportRange} {\n    align-content: center;\n  }\n\n  .Stack--alignWrap-end#{$viewportRange} {\n    align-content: flex-end;\n  }\n\n  .Stack--alignWrap-distribute#{$viewportRange} {\n    align-content: space-between;\n  }\n\n  .Stack--alignWrap-distributeEvenly#{$viewportRange} {\n    align-content: space-evenly;\n  }\n\n  // spread\n\n  .Stack--spread-start#{$viewportRange} {\n    justify-content: flex-start;\n  }\n\n  .Stack--spread-center#{$viewportRange} {\n    justify-content: center;\n  }\n\n  .Stack--spread-end#{$viewportRange} {\n    justify-content: flex-end;\n  }\n\n  .Stack--spread-distribute#{$viewportRange} {\n    justify-content: space-between;\n  }\n\n  .Stack--spread-distributeEvenly#{$viewportRange} {\n    justify-content: space-evenly;\n  }\n\n  // wrap\n\n  .Stack--wrap#{$viewportRange} {\n    flex-wrap: wrap;\n  }\n\n  .Stack--nowrap#{$viewportRange} {\n    flex-wrap: nowrap;\n  }\n\n  // showDividers\n\n  .Stack--showDividers#{$viewportRange} > .Stack-divider,\n  .Stack--showDividers#{$viewportRange} > .Stack-item > .Stack-divider {\n    display: block;\n  }\n\n  :not(.Stack--dir-inline#{$viewportRange}) > .Stack-divider,\n  :not(.Stack--dir-inline#{$viewportRange}) > .Stack-item > .Stack-divider {\n    border-block-end: var(--borderWidth-thin, var(--borderWidth-thin)) solid var(--Stack-divider-color);\n    inline-size: auto;\n    block-size: 0;\n  }\n\n  .Stack--dir-inline#{$viewportRange} > .Stack-divider,\n  .Stack--dir-inline#{$viewportRange} > .Stack-item > .Stack-divider {\n    border-inline-end: var(--borderWidth-thin, var(--borderWidth-thin)) solid var(--Stack-divider-color);\n    inline-size: 0;\n    block-size: auto;\n  }\n}\n\n// Stack-divider\n\n.Stack-divider {\n  display: none;\n  padding: 0;\n  margin: 0;\n  border: 0;\n  align-self: stretch;\n}\n\n// Stack-item\n\n.Stack-item {\n  flex: 0 1 auto;\n  min-inline-size: 0;\n}\n\n@mixin Stack-item--modifiers($viewportRange: '') {\n\n  .Stack-item--expand#{$viewportRange} {\n    flex-grow: 1;\n  }\n\n  .Stack-item--keepSize#{$viewportRange} {\n    flex-shrink: 0;\n  }\n}\n\n// Responsive composition\n\n@media ($viewport-narrow) {\n  @include Stack--modifiers('-whenNarrow');\n  @include Stack-item--modifiers('-whenNarrow');\n}\n\n@media ($viewport-regular) {\n  @include Stack--modifiers('-whenRegular');\n  @include Stack-item--modifiers('-whenRegular');\n}\n\n@media ($viewport-wide) {\n  @include Stack--modifiers('-whenWide');\n  @include Stack-item--modifiers('-whenWide');\n}\n"
  },
  {
    "path": "src/loaders/README.md",
    "content": "---\nbundle: \"loaders\"\ngenerated: true\n---\n\n# Primer CSS: `loaders` bundle\n\n## Usage\n\nPrimer CSS source files are written in [SCSS]. To include this Primer CSS module in your own build, ensure that your `node_modules` directory is listed in your Sass include paths, then import it with:\n\n```scss\n@import \"@primer/css/loaders/index.scss\";\n```\n\n## Build\n\nThe `@primer/css` npm package includes a standalone CSS build of this module in `dist/loaders.css`.\n\n## License\n\n[MIT](https://github.com/primer/css/blob/main/LICENSE) &copy; [GitHub](https://github.com/)\n\n\n[scss]: https://sass-lang.com/documentation/syntax#scss\n"
  },
  {
    "path": "src/loaders/index.scss",
    "content": "@import '../support/index.scss';\n@import './loaders.scss';\n"
  },
  {
    "path": "src/loaders/loaders.scss",
    "content": "// Loaders\n\n// Animated Ellipsis\n\n.AnimatedEllipsis {\n  display: inline-block;\n  overflow: hidden;\n  vertical-align: bottom;\n\n  &::after {\n    display: inline-block;\n    content: '...';\n    animation: AnimatedEllipsis-keyframes 1.2s steps(4, jump-none) infinite;\n  }\n\n  @keyframes AnimatedEllipsis-keyframes {\n    0% { transform: translateX(-100%); }\n  }\n}\n"
  },
  {
    "path": "src/markdown/README.md",
    "content": "---\nbundle: \"markdown\"\ngenerated: true\n---\n\n# Primer CSS: `markdown` bundle\n\n## Usage\n\nPrimer CSS source files are written in [SCSS]. To include this Primer CSS module in your own build, ensure that your `node_modules` directory is listed in your Sass include paths, then import it with:\n\n```scss\n@import \"@primer/css/markdown/index.scss\";\n```\n\n## Build\n\nThe `@primer/css` npm package includes a standalone CSS build of this module in `dist/markdown.css`.\n\n## License\n\n[MIT](https://github.com/primer/css/blob/main/LICENSE) &copy; [GitHub](https://github.com/)\n\n\n[scss]: https://sass-lang.com/documentation/syntax#scss\n"
  },
  {
    "path": "src/markdown/blob-csv.scss",
    "content": "// stylelint-disable selector-max-type\n.markdown-body .csv-data {\n  td,\n  th {\n    // stylelint-disable-next-line primer/spacing\n    padding: 5px;\n    overflow: hidden;\n    // stylelint-disable-next-line primer/typography\n    font-size: $font-size-small;\n    // stylelint-disable-next-line primer/typography\n    line-height: $lh-condensed-ultra;\n    text-align: left;\n    white-space: nowrap;\n  }\n\n  .blob-num {\n    // stylelint-disable-next-line primer/spacing\n    padding: 10px var(--base-size-8) 9px;\n    text-align: right;\n    background: var(--bgColor-default, var(--color-canvas-default));\n    border: 0;\n  }\n\n  tr { border-top: 0; }\n\n  th {\n    // stylelint-disable-next-line primer/typography\n    font-weight: $font-weight-bold;\n    background: var(--bgColor-muted, var(--color-canvas-subtle));\n    border-top: 0;\n  }\n}\n"
  },
  {
    "path": "src/markdown/code.scss",
    "content": "// stylelint-disable selector-max-type\n.markdown-body {\n  // Inline code snippets\n  code,\n  tt {\n    // stylelint-disable-next-line primer/spacing\n    padding: 0.2em 0.4em;\n    margin: 0;\n    // stylelint-disable-next-line primer/typography\n    font-size: 85%;\n    white-space: break-spaces; // keeps rendering spaces, but breaks them onto multiple lines\n    background-color: var(--bgColor-neutral-muted, var(--color-neutral-muted));\n    // stylelint-disable-next-line primer/borders\n    border-radius: $border-radius;\n\n    br { display: none; }\n  }\n\n  del code { text-decoration: inherit; }\n\n  samp {\n    // stylelint-disable-next-line primer/typography\n    font-size: 85%;\n  }\n\n  pre {\n    overflow-wrap: normal;\n\n    code {\n      // stylelint-disable-next-line primer/typography\n      font-size: 100%;\n    }\n\n    // Code tags within code blocks (<pre>s)\n    > code {\n      padding: 0;\n      margin: 0;\n      word-break: normal;\n      white-space: pre;\n      background: transparent;\n      border: 0;\n    }\n  }\n\n  .highlight {\n    margin-bottom: var(--base-size-16);\n\n    pre {\n      margin-bottom: 0;\n      word-break: normal;\n    }\n  }\n\n  .highlight pre,\n  pre {\n    padding: var(--base-size-16);\n    overflow: auto;\n    // stylelint-disable-next-line primer/typography\n    font-size: 85%;\n    // stylelint-disable-next-line primer/typography\n    line-height: 1.45;\n    color: var(--fgColor-default, var(--color-fg-default));\n    background-color: var(--bgColor-muted, var(--color-canvas-subtle));\n    // stylelint-disable-next-line primer/borders\n    border-radius: $border-radius;\n  }\n\n  pre code,\n  pre tt {\n    display: inline;\n    padding: 0;\n    margin: 0;\n    overflow: visible;\n    line-height: inherit;\n    overflow-wrap: normal;\n    background-color: transparent;\n    border: 0;\n  }\n}\n"
  },
  {
    "path": "src/markdown/footnotes.scss",
    "content": "// stylelint-disable selector-max-type\n\n.markdown-body {\n  [data-footnote-ref] {\n    &::before {\n      content: '[';\n    }\n\n    &::after {\n      content: ']';\n    }\n  }\n\n  .footnotes {\n    // stylelint-disable-next-line primer/typography\n    font-size: $h6-size;\n    color: var(--fgColor-muted, var(--color-fg-muted));\n    // stylelint-disable-next-line primer/borders, primer/colors\n    border-top: $border;\n\n    ol {\n      padding-left: var(--base-size-16);\n\n      ul {\n        display: inline-block;\n        padding-left: var(--base-size-16);\n        margin-top: var(--base-size-16);\n      }\n    }\n\n    li {\n      position: relative;\n    }\n\n    li:target::before {\n      position: absolute;\n      top: calc(var(--base-size-8) * -1);\n      right: calc(var(--base-size-8) * -1);\n      bottom: calc(var(--base-size-8) * -1);\n      left: calc(var(--base-size-24) * -1);\n      pointer-events: none;\n      content: '';\n      // stylelint-disable-next-line primer/borders, primer/colors\n      border: 2px $border-style var(--borderColor-accent-emphasis, var(--color-accent-emphasis));\n      // stylelint-disable-next-line primer/borders\n      border-radius: $border-radius;\n    }\n\n    li:target {\n      color: var(--fgColor-default, var(--color-fg-default));\n    }\n\n    .data-footnote-backref g-emoji {\n      // stylelint-disable-next-line primer/typography\n      font-family: monospace;\n    }\n  }\n}\n"
  },
  {
    "path": "src/markdown/headings.scss",
    "content": "// Needs refactoring\n// stylelint-disable selector-max-specificity\n// stylelint-disable selector-max-type\n.markdown-body {\n  // Headings\n  h1,\n  h2,\n  h3,\n  h4,\n  h5,\n  h6 {\n    margin-top: var(--base-size-24);\n    margin-bottom: var(--base-size-16);\n    // stylelint-disable-next-line primer/typography\n    font-weight: $font-weight-bold;\n    // stylelint-disable-next-line primer/typography\n    line-height: $lh-condensed;\n\n    .octicon-link {\n      color: var(--fgColor-default, var(--color-fg-default));\n      vertical-align: middle;\n      visibility: hidden;\n    }\n\n    &:hover .anchor {\n      text-decoration: none;\n\n      .octicon-link {\n        visibility: visible;\n      }\n    }\n\n    tt,\n    code {\n      // stylelint-disable-next-line primer/spacing\n      padding: 0 0.2em;\n      font-size: inherit;\n    }\n  }\n\n  h1 {\n    // stylelint-disable-next-line primer/spacing\n    padding-bottom: 0.3em;\n    // stylelint-disable-next-line primer/typography\n    font-size: 2em;\n    // stylelint-disable-next-line primer/borders, primer/colors\n    border-bottom: $border-width $border-style var(--borderColor-muted, var(--color-border-muted));\n  }\n\n  h2 {\n    // stylelint-disable-next-line primer/spacing\n    padding-bottom: 0.3em;\n    // stylelint-disable-next-line primer/typography\n    font-size: 1.5em;\n    // stylelint-disable-next-line primer/borders, primer/colors\n    border-bottom: $border-width $border-style var(--borderColor-muted, var(--color-border-muted));\n  }\n\n  h3 {\n    // stylelint-disable-next-line primer/typography\n    font-size: 1.25em;\n  }\n\n  h4 {\n    // stylelint-disable-next-line primer/typography\n    font-size: 1em;\n  }\n\n  h5 {\n    // stylelint-disable-next-line primer/typography\n    font-size: 0.875em;\n  }\n\n  h6 {\n    // stylelint-disable-next-line primer/typography\n    font-size: 0.85em;\n    color: var(--fgColor-muted, var(--color-fg-muted));\n  }\n\n  summary {\n    h1,\n    h2,\n    h3,\n    h4,\n    h5,\n    h6 {\n      display: inline-block;\n\n      .anchor {\n        // stylelint-disable-next-line primer/spacing\n        margin-left: -40px;\n      }\n    }\n\n    h1,\n    h2 {\n      padding-bottom: 0;\n      border-bottom: 0;\n    }\n  }\n}\n"
  },
  {
    "path": "src/markdown/images.scss",
    "content": "// Need to target base styles\n// stylelint-disable selector-no-qualifying-type\n// stylelint-disable selector-max-type\n.markdown-body {\n  // Images & Stuff\n  img {\n    max-width: 100%;\n    // because we put padding on the images to hide header lines, and some people\n    // specify the width of their images in their markdown.\n    box-sizing: content-box;\n\n    &[align='right'] {\n      // stylelint-disable-next-line primer/spacing\n      padding-left: 20px;\n    }\n\n    &[align='left'] {\n      // stylelint-disable-next-line primer/spacing\n      padding-right: 20px;\n    }\n  }\n\n  .emoji {\n    max-width: none;\n    vertical-align: text-top;\n    // Override `<img>` styles so Emojis don't clash with zebra striping in our tables\n    background-color: transparent;\n  }\n\n  // Gollum Image Tags\n\n  // Framed\n  span.frame {\n    display: block;\n    overflow: hidden;\n\n    > span {\n      display: block;\n      float: left;\n      width: auto;\n      // stylelint-disable-next-line primer/spacing\n      padding: 7px;\n      // stylelint-disable-next-line primer/spacing\n      margin: 13px 0 0;\n      overflow: hidden;\n      // stylelint-disable-next-line primer/borders, primer/colors\n      border: $border-width $border-style var(--borderColor-default, var(--color-border-default));\n    }\n\n    span img {\n      display: block;\n      float: left;\n    }\n\n    span span {\n      display: block;\n      // stylelint-disable-next-line primer/spacing\n      padding: 5px 0 0;\n      clear: both;\n      color: var(--fgColor-default, var(--color-fg-default));\n    }\n  }\n\n  span.align-center {\n    display: block;\n    overflow: hidden;\n    clear: both;\n\n    > span {\n      display: block;\n      // stylelint-disable-next-line primer/spacing\n      margin: 13px auto 0;\n      overflow: hidden;\n      text-align: center;\n    }\n\n    span img {\n      margin: 0 auto;\n      text-align: center;\n    }\n  }\n\n  span.align-right {\n    display: block;\n    overflow: hidden;\n    clear: both;\n\n    > span {\n      display: block;\n      // stylelint-disable-next-line primer/spacing\n      margin: 13px 0 0;\n      overflow: hidden;\n      text-align: right;\n    }\n\n    span img {\n      margin: 0;\n      text-align: right;\n    }\n  }\n\n  span.float-left {\n    display: block;\n    float: left;\n    // stylelint-disable-next-line primer/spacing\n    margin-right: 13px;\n    overflow: hidden;\n\n    span {\n      // stylelint-disable-next-line primer/spacing\n      margin: 13px 0 0;\n    }\n  }\n\n  span.float-right {\n    display: block;\n    float: right;\n    // stylelint-disable-next-line primer/spacing\n    margin-left: 13px;\n    overflow: hidden;\n\n    > span {\n      display: block;\n      // stylelint-disable-next-line primer/spacing\n      margin: 13px auto 0;\n      overflow: hidden;\n      text-align: right;\n    }\n  }\n}\n"
  },
  {
    "path": "src/markdown/index.scss",
    "content": "@import '../support/index.scss';\n@import './markdown-body.scss';\n@import './headings.scss';\n@import './lists.scss';\n@import './tables.scss';\n@import './images.scss';\n@import './code.scss';\n@import './blob-csv.scss';\n@import './footnotes.scss';\n"
  },
  {
    "path": "src/markdown/lists.scss",
    "content": "// Base styles\n// stylelint-disable selector-no-qualifying-type\n// stylelint-disable selector-max-type\n.markdown-body {\n  // Lists, Blockquotes & Such\n  ul,\n  ol {\n    // stylelint-disable-next-line primer/spacing\n    padding-left: 2em;\n\n    &.no-list {\n      padding: 0;\n      list-style-type: none;\n    }\n  }\n\n  ol[type='a s'] {\n    list-style-type: lower-alpha;\n  }\n\n  ol[type='A s'] {\n    list-style-type: upper-alpha;\n  }\n\n  ol[type='i s'] {\n    list-style-type: lower-roman;\n  }\n\n  ol[type='I s'] {\n    list-style-type: upper-roman;\n  }\n\n  ol[type='1'] {\n    list-style-type: decimal;\n  }\n\n  // Reset <ol> style to decimal (HTML default) specifically for AsciiDoc\n  // <div><ol> construction (doesn't affect MarkDown)\n  div > ol:not([type]) {\n    list-style-type: decimal;\n  }\n\n  // Did someone complain about list spacing? Encourage them\n  // to create the spacing with their markdown formatting.\n  // List behavior should be controled by the markup, not the css.\n  //\n  // For lists with padding between items, use blank\n  // lines between items. This will generate paragraphs with\n  // padding to space things out.\n  //\n  // - item\n  //\n  // - item\n  //\n  // - item\n  //\n  // For list without padding, don't use blank lines.\n  //\n  // - item\n  // - item\n  // - item\n  //\n  // Modifying the css to emulate these behaviors merely brakes\n  // one case in the process of solving another. Don't change\n  // this unless it's really really a bug.\n  ul ul,\n  ul ol,\n  ol ol,\n  ol ul {\n    margin-top: 0;\n    margin-bottom: 0;\n  }\n\n  li > p {\n    margin-top: var(--base-size-16);\n  }\n\n  li + li {\n    // stylelint-disable-next-line primer/spacing\n    margin-top: $em-spacer-3;\n  }\n\n  dl {\n    padding: 0;\n\n    dt {\n      padding: 0;\n      margin-top: var(--base-size-16);\n      // stylelint-disable-next-line primer/typography\n      font-size: 1em;\n      font-style: italic;\n      // stylelint-disable-next-line primer/typography\n      font-weight: $font-weight-bold;\n    }\n\n    dt + dt {\n      margin-top: 0;\n    }\n\n    dd {\n      padding: 0 var(--base-size-16);\n      margin-bottom: var(--base-size-16);\n    }\n  }\n}\n"
  },
  {
    "path": "src/markdown/markdown-body.scss",
    "content": "// All of our block level items should have the same margin\n// stylelint-disable selector-max-type\n\n// This is styling for generic markdownized text. Anything you put in a\n// container with .markdown-body on it should render generally well. It also\n// includes some GitHub Flavored Markdown specific styling (like @mentions)\n.markdown-body {\n  // stylelint-disable-next-line primer/typography\n  font-family: $body-font;\n  // stylelint-disable-next-line primer/typography\n  font-size: $h4-size;\n  // stylelint-disable-next-line primer/typography\n  line-height: $body-line-height;\n  overflow-wrap: break-word;\n\n  // Clearfix on the markdown body\n  &::before {\n    display: table;\n    content: '';\n  }\n\n  &::after {\n    display: table;\n    clear: both;\n    content: '';\n  }\n\n  > *:first-child {\n    margin-top: 0 !important;\n  }\n\n  > *:last-child {\n    margin-bottom: 0 !important;\n  }\n\n  // Anchors like <a name=\"examples\">. These sometimes end up wrapped around\n  // text when users mistakenly forget to close the tag or use self-closing tag\n  // syntax. We don't want them to appear like links.\n  // FIXME: a:not(:link):not(:visited) would be a little clearer here (and\n  // possibly faster to match), but it breaks styling of <a href> elements due\n  // to https://bugs.webkit.org/show_bug.cgi?id=142737.\n  // stylelint-disable-next-line selector-no-qualifying-type\n  a:not([href]) {\n    color: inherit;\n    text-decoration: none;\n  }\n\n  // Link Colors\n  .absent {\n    color: var(--fgColor-danger, var(--color-danger-fg));\n  }\n\n  .anchor {\n    float: left;\n    padding-right: var(--base-size-4);\n    // stylelint-disable-next-line primer/spacing\n    margin-left: -20px;\n    // stylelint-disable-next-line primer/typography\n    line-height: $lh-condensed-ultra;\n\n    &:focus {\n      outline: none;\n    }\n  }\n\n  p,\n  blockquote,\n  ul,\n  ol,\n  dl,\n  table,\n  pre,\n  details {\n    margin-top: 0;\n    margin-bottom: var(--base-size-16);\n  }\n\n  hr {\n    height: $em-spacer-3;\n    padding: 0;\n    margin: var(--base-size-24) 0;\n    // stylelint-disable-next-line primer/colors\n    background-color: var(--borderColor-default, var(--color-border-default));\n    border: 0;\n  }\n\n  blockquote {\n    // stylelint-disable-next-line primer/spacing\n    padding: 0 1em;\n    color: var(--fgColor-muted, var(--color-fg-muted));\n    // stylelint-disable-next-line primer/borders, primer/colors\n    border-left: 0.25em $border-style var(--borderColor-default, var(--color-border-default));\n\n    > :first-child {\n      margin-top: 0;\n    }\n\n    > :last-child {\n      margin-bottom: 0;\n    }\n  }\n}\n"
  },
  {
    "path": "src/markdown/tables.scss",
    "content": "// Needs refactoring\n// stylelint-disable selector-max-type\n.markdown-body {\n  // Tables\n  table {\n    display: block;\n    width: 100%; // keep for backwards compatibility\n    width: max-content;\n    max-width: 100%;\n    overflow: auto;\n    font-variant: tabular-nums;\n\n    th {\n      // stylelint-disable-next-line primer/typography\n      font-weight: $font-weight-bold;\n    }\n\n    th,\n    td {\n      // stylelint-disable-next-line primer/spacing\n      padding: 6px 13px;\n      // stylelint-disable-next-line primer/borders, primer/colors\n      border: $border-width $border-style var(--borderColor-default, var(--color-border-default));\n    }\n\n    td {\n      > :last-child {\n        margin-bottom: 0;\n      }\n    }\n\n    tr {\n      background-color: var(--bgColor-default, var(--color-canvas-default));\n      // stylelint-disable-next-line primer/borders, primer/colors\n      border-top: $border-width $border-style var(--borderColor-muted, var(--color-border-muted));\n\n      &:nth-child(2n) {\n        background-color: var(--bgColor-muted, var(--color-canvas-subtle));\n      }\n    }\n\n    img {\n      background-color: transparent;\n    }\n  }\n}\n"
  },
  {
    "path": "src/marketing/README.md",
    "content": "---\nbundle: \"marketing\"\ngenerated: true\n---\n\n# Primer CSS: `marketing` bundle\n\n## Usage\n\nPrimer CSS source files are written in [SCSS]. To include this Primer CSS module in your own build, ensure that your `node_modules` directory is listed in your Sass include paths, then import it with:\n\n```scss\n@import \"@primer/css/marketing/index.scss\";\n```\n\n## Build\n\nThe `@primer/css` npm package includes a standalone CSS build of this module in `dist/marketing.css`.\n\n## License\n\n[MIT](https://github.com/primer/css/blob/main/LICENSE) &copy; [GitHub](https://github.com/)\n\n\n[scss]: https://sass-lang.com/documentation/syntax#scss\n"
  },
  {
    "path": "src/marketing/buttons/button.scss",
    "content": ".btn-mktg {\n  position: relative;\n  z-index: 1;\n  display: inline-block;\n  // stylelint-disable-next-line primer/spacing\n  padding: 0.9rem 1.5rem 1.1rem;\n  // stylelint-disable-next-line primer/typography\n  font-size: 1rem;\n  // stylelint-disable-next-line primer/typography\n  font-weight: $font-weight-bold;\n  // stylelint-disable-next-line primer/typography\n  line-height: 1;\n  // stylelint-disable-next-line primer/colors\n  color: var(--bgColor-default, var(--color-canvas-default));\n  text-align: center;\n  white-space: nowrap;\n  vertical-align: middle;\n  user-select: none;\n  background:\n    linear-gradient(180deg, rgb(255, 255, 255, 0.15) 0%, rgb(255, 255, 255, 0) 100%), // stylelint-disable-line primer/colors\n    var(--color-mktg-btn-bg) !important;\n  border: 0;\n  // stylelint-disable-next-line primer/borders\n  border-radius: 0.375rem;\n  transition: box-shadow 0.2s, outline 0.2s ease;\n  appearance: none !important;\n\n  &::before {\n    position: absolute;\n    top: 0;\n    right: 0;\n    bottom: 0;\n    left: 0;\n    z-index: -1;\n    content: '';\n    // stylelint-disable-next-line primer/colors\n    background: linear-gradient(180deg, rgb(255, 255, 255, 0.15) 0%, rgb(255, 255, 255, 0) 100%) !important;\n    border-radius: inherit;\n    opacity: 0;\n    opacity: 0;\n    transition: opacity 0.2s;\n    background-blend-mode: normal;\n  }\n\n  &:hover {\n    text-decoration: none;\n    // stylelint-disable-next-line primer/box-shadow\n    box-shadow: var(--color-mktg-btn-shadow-hover) !important;\n  }\n\n  &:hover,\n  &:focus,\n  &:focus-visible,\n  &.focus {\n    &::before {\n      opacity: 1;\n    }\n  }\n\n  // fallback :focus state\n  &:focus {\n    @include focusOutline(2px, var(--focus-outlineColor, var(--color-accent-fg)));\n\n    // remove fallback :focus if :focus-visible is supported\n    &:not(:focus-visible) {\n      outline: solid 1px transparent;\n      box-shadow: none;\n    }\n  }\n\n  // default focus state\n  &:focus-visible {\n    @include focusOutline(2px, var(--focus-outlineColor, var(--color-accent-fg)));\n  }\n\n  &:active {\n    &::before {\n      opacity: 0.5 !important;\n    }\n  }\n\n  &.disabled,\n  &[disabled] {\n    pointer-events: none;\n    cursor: default;\n    opacity: 0.5;\n  }\n}\n\n.btn-muted-mktg {\n  color: var(--fgColor-default, var(--color-fg-default)) !important;\n  background: none !important;\n  // stylelint-disable-next-line primer/box-shadow\n  box-shadow: var(--color-mktg-btn-shadow-outline);\n\n  &::before {\n    display: none;\n  }\n\n  &:hover {\n    // stylelint-disable-next-line primer/box-shadow\n    box-shadow: var(--color-mktg-btn-shadow-hover-muted) !important;\n  }\n\n  &:active {\n    // stylelint-disable-next-line primer/box-shadow\n    box-shadow: var(--fgColor-default, var(--color-fg-default)) 0 0 0 3px inset !important;\n  }\n\n  &:disabled {\n    // stylelint-disable-next-line primer/box-shadow\n    box-shadow: var(--fgColor-muted, var(--color-fg-subtle)) 0 0 0 1px inset !important;\n  }\n}\n\n.btn-subtle-mktg {\n  color: var(--fgColor-default, var(--color-fg-default)) !important;\n  background: none !important;\n  box-shadow: none !important;\n\n  &::before {\n    background: none !important;\n  }\n\n  &:hover {\n    // stylelint-disable-next-line primer/box-shadow\n    box-shadow: var(--color-mktg-btn-shadow-hover-muted) !important;\n  }\n}\n\n.btn-signup-mktg {\n  // stylelint-disable-next-line primer/colors\n  color: #fff;\n  // stylelint-disable-next-line primer/colors\n  background: linear-gradient(180deg, rgb(52, 183, 89, 0.15) 0%, rgb(46, 164, 79, 0) 100%), rgb(46, 164, 79) !important;\n\n  &::before {\n    // stylelint-disable-next-line primer/colors\n    background: linear-gradient(180deg, rgb(52, 183, 89, 0.15) 0%, rgb(46, 164, 79, 0) 100%) !important;\n  }\n\n  // fallback :focus state\n  &:focus {\n    @include focusOutline(2px, var(--focus-outlineColor, var(--color-accent-fg)));\n\n    // remove fallback :focus if :focus-visible is supported\n    &:not(:focus-visible) {\n      outline: solid 1px transparent;\n      box-shadow: none;\n    }\n  }\n\n  // default focus state\n  &:focus-visible {\n    @include focusOutline(2px, var(--focus-outlineColor, var(--color-accent-fg)));\n  }\n}\n\n// Size modifiers\n\n.btn-small-mktg {\n  // stylelint-disable-next-line primer/spacing\n  padding: 0.625rem 1rem 0.8125rem;\n}\n\n.btn-large-mktg {\n  // stylelint-disable-next-line primer/spacing\n  padding: 16px 30px 20px !important;\n  // stylelint-disable-next-line primer/typography\n  font-size: 1.25rem;\n}\n"
  },
  {
    "path": "src/marketing/buttons/index.scss",
    "content": "// support files\n@import '../support/index.scss';\n@import './button.scss';\n"
  },
  {
    "path": "src/marketing/index.scss",
    "content": "/*!\n * @primer/css/marketing\n * http://primer.style/css\n *\n * Released under MIT license. Copyright (c) 2019 GitHub Inc.\n */\n\n// Global requirements\n@import './support/index.scss';\n\n// marketing specific css modules\n@import './type/index.scss';\n@import './buttons/index.scss';\n@import './links/index.scss';\n@import './utilities/index.scss';\n"
  },
  {
    "path": "src/marketing/links/index.scss",
    "content": "// support files\n@import '../support/index.scss';\n@import './link.scss';\n"
  },
  {
    "path": "src/marketing/links/link.scss",
    "content": ".link-mktg {\n  position: relative;\n  display: inline-block;\n\n  &:hover {\n    text-decoration: none;\n  }\n\n  &::after,\n  &.link-emphasis-mktg::before {\n    position: absolute;\n    // stylelint-disable-next-line primer/spacing\n    bottom: -0.15em;\n    left: 0;\n    width: calc(100% - 1em);\n    height: 2px;\n    pointer-events: none;\n    content: '';\n    background-color: currentColor;\n    transform: scaleX(0);\n    transform-origin: 0 0;\n\n    @media screen and (prefers-reduced-motion: no-preference) {\n      transition: transform 0.3s ease;\n    }\n  }\n\n  &.link-emphasis-mktg::before {\n    opacity: 0.2;\n    transform: scaleX(1);\n  }\n\n  &:hover,\n  &:active {\n    &::after {\n      transform: scaleX(1);\n    }\n  }\n\n  &:focus,\n  &:focus-visible {\n    outline-offset: 2px;\n  }\n\n  &.arrow-target-mktg {\n    .arrow-symbol-mktg {\n      // stylelint-disable-next-line primer/spacing\n      margin-left: -$em-spacer-3;\n    }\n  }\n}\n"
  },
  {
    "path": "src/marketing/support/index.scss",
    "content": "@import '../../support/index.scss';\n@import './variables.scss';\n"
  },
  {
    "path": "src/marketing/support/variables.scss",
    "content": "// Typography\n$marketing-font-path: '/fonts/' !default;\n\n$font-mktg: $body-font !default;\n$font-weight-medium: 450 !default;\n$font-weight-extrabold: 800 !default;\n\n$mktg-font-feature-settings: 'ss02' on, 'ss01' on !default;\n$mktg-header-spacing-large: -0.03em !default;\n$mktg-header-spacing-default: -0.01em !default;\n$mktg-header-spacing-threshold: 48px !default;\n$mktg-header-weight-large: $font-weight-extrabold !default;\n$mktg-header-weight-default: $font-weight-bold !default;\n$mktg-header-weight-threshold: 24px !default;\n\n// Header size steps\n$mktg-h-size-0:  96px !default;\n$mktg-h-size-1:  72px !default;\n$mktg-h-size-2:  64px !default;\n$mktg-h-size-3:  56px !default;\n$mktg-h-size-4:  48px !default;\n$mktg-h-size-5:  40px !default;\n$mktg-h-size-6:  32px !default;\n$mktg-h-size-7:  28px !default;\n$mktg-h-size-8:  24px !default;\n$mktg-h-size-9:  20px !default;\n$mktg-h-size-10: 16px !default;\n\n// Header Line-height steps\n$mktg-h-lh-0:  100px !default;\n$mktg-h-lh-1:  76px !default;\n$mktg-h-lh-2:  68px !default;\n$mktg-h-lh-3:  60px !default;\n$mktg-h-lh-4:  52px !default;\n$mktg-h-lh-5:  44px !default;\n$mktg-h-lh-6:  36px !default;\n$mktg-h-lh-7:  32px !default;\n$mktg-h-lh-8:  28px !default;\n$mktg-h-lh-9:  24px !default;\n$mktg-h-lh-10: 20px !default;\n\n$mktg-header-pairings: (\n  0:  (size: $mktg-h-size-0,  lh: $mktg-h-lh-0),\n  1:  (size: $mktg-h-size-1,  lh: $mktg-h-lh-1),\n  2:  (size: $mktg-h-size-2,  lh: $mktg-h-lh-2),\n  3:  (size: $mktg-h-size-3,  lh: $mktg-h-lh-3),\n  4:  (size: $mktg-h-size-4,  lh: $mktg-h-lh-4),\n  5:  (size: $mktg-h-size-5,  lh: $mktg-h-lh-5),\n  6:  (size: $mktg-h-size-6,  lh: $mktg-h-lh-6),\n  7:  (size: $mktg-h-size-7,  lh: $mktg-h-lh-7),\n  8:  (size: $mktg-h-size-8,  lh: $mktg-h-lh-8),\n  9:  (size: $mktg-h-size-9,  lh: $mktg-h-lh-9),\n  10: (size: $mktg-h-size-10, lh: $mktg-h-lh-10)\n) !default;\n\n// Responsive headers, where first number is mobile (default), second is tablet/md, and third is desktop/lg\n$mktg-headers: (\n  0: [4, 1, 0],\n  1: [5, 3, 1],\n  2: [6, 4, 2],\n  3: [7, 5, 4],\n  4: [8, 7, 6],\n  5: [9, 8, 8],\n  6: [10, 9, 9]\n) !default;\n\n// Body content\n$mktg-body-spacing-threshold: 28px !default;\n$mktg-body-weight-threshold: 24px !default;\n$mktg-body-spacing-large: -0.01em !default;\n\n// Body size steps\n$mktg-body-size-0:  48px !default;\n$mktg-body-size-1:  40px !default;\n$mktg-body-size-2:  32px !default;\n$mktg-body-size-3:  28px !default;\n$mktg-body-size-4:  24px !default;\n$mktg-body-size-5:  20px !default;\n$mktg-body-size-6:  16px !default;\n$mktg-body-size-7:  14px !default;\n$mktg-body-size-8:  12px !default;\n\n// Body line-height steps\n$mktg-body-lh-0:  64px !default;\n$mktg-body-lh-1:  52px !default;\n$mktg-body-lh-2:  44px !default;\n$mktg-body-lh-3:  40px !default;\n$mktg-body-lh-4:  32px !default;\n$mktg-body-lh-5:  28px !default;\n$mktg-body-lh-6:  24px !default;\n$mktg-body-lh-7:  20px !default;\n$mktg-body-lh-8:  20px !default;\n\n$mktg-body-pairings: (\n  0:  (size: $mktg-body-size-0,  lh: $mktg-body-lh-0),\n  1:  (size: $mktg-body-size-1,  lh: $mktg-body-lh-1),\n  2:  (size: $mktg-body-size-2,  lh: $mktg-body-lh-2),\n  3:  (size: $mktg-body-size-3,  lh: $mktg-body-lh-3),\n  4:  (size: $mktg-body-size-4,  lh: $mktg-body-lh-4),\n  5:  (size: $mktg-body-size-5,  lh: $mktg-body-lh-5),\n  6:  (size: $mktg-body-size-6,  lh: $mktg-body-lh-6),\n  7:  (size: $mktg-body-size-7,  lh: $mktg-body-lh-7),\n  8:  (size: $mktg-body-size-8,  lh: $mktg-body-lh-8)\n) !default;\n\n// Responsive body content, where first number is mobile (default), second is tablet/md, and third is desktop/lg\n$mktg-body-spacing-large: -0.01em !default;\n\n$mktg-bodies: (\n  0: [3, 1, 0],\n  1: [4, 3, 2],\n  2: [5, 5, 4],\n  3: [6, 5, 5],\n  4: [6, 6, 6],\n  5: [7, 7, 7],\n  6: [8, 8, 8]\n) !default;\n\n// Animations\n$transition-time: 0.4s !default;\n$ease-mktg: cubic-bezier(0.16, 1, 0.3, 1) !default;\n\n$marketing-position-variants: (\n  '': '',\n  md: '-md',\n  lg: '-lg',\n) !default;\n\n$mktg-btn-shadow-hover-light: 0 3px 2px rgb(0, 0, 0, 0.07), 0 7px 5px rgb(0, 0, 0, 0.04), 0 12px 10px rgb(0, 0, 0, 0.03), 0 22px 18px rgb(0, 0, 0, 0.03), 0 42px 33px rgb(0, 0, 0, 0.02), 0 100px 80px rgb(0, 0, 0, 0.02);\n$mktg-btn-shadow-hover-dark: 0 4px 7px rgb(0, 0, 0, 0.15), 0 100px 80px rgb(255, 255, 255, 0.02), 0 42px 33px rgb(255, 255, 255, 0.024), 0 22px 18px rgb(255, 255, 255, 0.028), 0 12px 10px rgb(255, 255, 255, 0.034), 0 7px 5px rgb(255, 255, 255, 0.04), 0 3px 2px rgb(255, 255, 255, 0.07);\n\n@include color-variables(\n  (\n    (mktg-btn-shadow-outline, (light: rgb(0,0,0,0.15) 0 0 0 1px inset, dark: rgb(255,255,255,0.25) 0 0 0 1px inset)),\n    (mktg-btn-bg, (light: #1b1f23, dark: #f6f8fa)),\n    (mktg-btn-shadow-focus, (light: rgb(0 0 0 / 15%) 0 0 0 4px, dark: rgb(255 255 255 / 25%) 0 0 0 4px)),\n    (mktg-btn-shadow-hover, (light: $mktg-btn-shadow-hover-light, dark: $mktg-btn-shadow-hover-dark)),\n    (mktg-btn-shadow-hover-muted, (light: rgb(0 0 0 / 70%) 0 0 0 2px inset, dark: rgb(255 255 255) 0 0 0 2px inset)),\n  )\n);\n"
  },
  {
    "path": "src/marketing/type/index.scss",
    "content": "// support files\n@import '../support/index.scss';\n@import './typography.scss';\n"
  },
  {
    "path": "src/marketing/type/typography.scss",
    "content": "// Headings\n.h0-mktg,\n.h1-mktg,\n.h2-mktg,\n.h3-mktg,\n.h4-mktg,\n.h5-mktg,\n.h6-mktg {\n  // stylelint-disable-next-line primer/typography\n  font-family: $font-mktg;\n  font-feature-settings: $mktg-font-feature-settings;\n  // stylelint-disable-next-line primer/typography\n  font-weight: $mktg-header-weight-default !important;\n  letter-spacing: $mktg-header-spacing-default;\n}\n\n@each $header, $sizes in $mktg-headers {\n  .h#{$header}-mktg {\n    $pairing: map-get($mktg-header-pairings, nth($sizes, 1));\n    $pairing-md: map-get($mktg-header-pairings, nth($sizes, 2));\n    $pairing-lg: map-get($mktg-header-pairings, nth($sizes, 3));\n\n    // stylelint-disable-next-line primer/typography\n    font-size: map-get($pairing, 'size') !important;\n    // stylelint-disable-next-line primer/typography\n    line-height: map-get($pairing, 'lh') !important;\n\n    // stylelint-disable-next-line primer/typography\n    @if (map-get($pairing, 'size') >= $mktg-header-weight-threshold) { font-weight: $mktg-header-weight-large !important; }\n\n    @if (nth($sizes, 1) != nth($sizes, 2)) {\n      @include breakpoint(md) {\n        // stylelint-disable-next-line primer/typography\n        font-size: map-get($pairing-md, 'size') !important;\n        // stylelint-disable-next-line primer/typography\n        line-height: map-get($pairing-md, 'lh') !important;\n\n        @if (map-get($pairing-md, 'size') >= $mktg-header-spacing-threshold and map-get($pairing, 'size') < $mktg-header-spacing-threshold) {\n          letter-spacing: $mktg-header-spacing-large;\n        }\n\n        @if (map-get($pairing-md, 'size') >= $mktg-header-weight-threshold and map-get($pairing, 'size') < $mktg-header-weight-threshold) {\n          // stylelint-disable-next-line primer/typography\n          font-weight: $mktg-header-weight-large !important;\n        }\n      }\n    }\n\n    @if (nth($sizes, 2) != nth($sizes, 3)) {\n      @include breakpoint(lg) {\n        // stylelint-disable-next-line primer/typography\n        font-size: map-get($pairing-lg, 'size') !important;\n        // stylelint-disable-next-line primer/typography\n        line-height: map-get($pairing-lg, 'lh') !important;\n\n        @if (map-get($pairing-lg, 'size') >= $mktg-header-spacing-threshold and map-get($pairing-md, 'size') < $mktg-header-spacing-threshold) {\n          letter-spacing: $mktg-header-spacing-large;\n        }\n\n        @if (map-get($pairing-lg, 'size') >= $mktg-header-weight-threshold and map-get($pairing-md, 'size') < $mktg-header-weight-threshold) {\n          // stylelint-disable-next-line primer/typography\n          font-weight: $mktg-header-weight-large !important;\n        }\n      }\n    }\n  }\n}\n\n.f0-mktg,\n.f1-mktg,\n.f2-mktg,\n.f3-mktg,\n.f4-mktg,\n.f5-mktg,\n.f6-mktg {\n  // stylelint-disable-next-line primer/typography\n  font-family: $font-mktg;\n  font-feature-settings: $mktg-font-feature-settings;\n  // stylelint-disable-next-line primer/typography\n  font-weight: $font-weight-normal;\n}\n\n@each $body, $sizes in $mktg-bodies {\n  .f#{$body}-mktg {\n    $pairing: map-get($mktg-body-pairings, nth($sizes, 1));\n    $pairing-md: map-get($mktg-body-pairings, nth($sizes, 2));\n    $pairing-lg: map-get($mktg-body-pairings, nth($sizes, 3));\n\n    // stylelint-disable-next-line primer/typography\n    font-size: map-get($pairing, 'size') !important;\n    // stylelint-disable-next-line primer/typography\n    line-height: map-get($pairing, 'lh') !important;\n\n    @if (map-get($pairing, 'size') >= $mktg-body-spacing-threshold) { letter-spacing: $mktg-body-spacing-large; }\n\n    // stylelint-disable-next-line primer/typography\n    @if (map-get($pairing, 'size') >= $mktg-body-weight-threshold) { font-weight: $font-weight-semibold; }\n\n    @if (nth($sizes, 1) != nth($sizes, 2)) {\n      @include breakpoint(md) {\n        // stylelint-disable-next-line primer/typography\n        font-size: map-get($pairing-md, 'size') !important;\n        // stylelint-disable-next-line primer/typography\n        line-height: map-get($pairing-md, 'lh') !important;\n\n        @if (map-get($pairing-md, 'size') >= $mktg-body-spacing-threshold and map-get($pairing, 'size') < $mktg-body-spacing-threshold) {\n          letter-spacing: $mktg-body-spacing-large;\n        }\n\n        @if (map-get($pairing-md, 'size') >= $mktg-body-weight-threshold and map-get($pairing, 'size') < $mktg-body-weight-threshold) {\n          // stylelint-disable-next-line primer/typography\n          font-weight: $font-weight-medium;\n        }\n      }\n    }\n\n    @if (nth($sizes, 2) != nth($sizes, 3)) {\n      @include breakpoint(lg) {\n        // stylelint-disable-next-line primer/typography\n        font-size: map-get($pairing-lg, 'size') !important;\n        // stylelint-disable-next-line primer/typography\n        line-height: map-get($pairing-lg, 'lh') !important;\n\n        @if (map-get($pairing-lg, 'size') >= $mktg-body-spacing-threshold and map-get($pairing-md, 'size') < $mktg-body-spacing-threshold) {\n          letter-spacing: $mktg-body-spacing-large;\n        }\n\n        @if (map-get($pairing-lg, 'size') >= $mktg-body-weight-threshold and map-get($pairing-md, 'size') < $mktg-body-weight-threshold) {\n          // stylelint-disable-next-line primer/typography\n          font-weight: $font-weight-medium;\n        }\n      }\n    }\n  }\n}\n\n.text-medium {\n  // stylelint-disable-next-line primer/typography\n  font-weight: $font-weight-medium !important;\n}\n"
  },
  {
    "path": "src/marketing/utilities/animations.scss",
    "content": "// Animation utilities for marketing\n\n.hover-grow-mktg {\n  // stylelint-disable-next-line declaration-property-value-no-unknown\n  transition: transform 0.4s $ease-mktg;\n\n  &:hover {\n    transform: scale3d(1.025, 1.025, 1.025);\n  }\n}\n\n// Animated arrow symbol, used in marketing links, buttons, etc.\n.btn-mktg,\n.link-mktg,\n.arrow-target-mktg {\n  .octicon {\n    width: 1em;\n    height: 1em;\n  }\n\n  .arrow-symbol-mktg {\n    transition: transform 0.2s;\n    transform: translateX(0);\n\n    // stylelint-disable-next-line selector-max-type\n    path:last-child {\n      stroke-dasharray: 10;\n      stroke-dashoffset: 10;\n      transition: stroke-dashoffset 0.2s;\n    }\n  }\n\n  @media screen and (prefers-reduced-motion: no-preference) {\n    &:hover,\n    &:focus {\n      .arrow-symbol-mktg {\n        transform: translateX(4px);\n\n        // stylelint-disable-next-line selector-max-type, selector-max-specificity, max-nesting-depth\n        path:last-child {\n          stroke-dashoffset: 20;\n        }\n      }\n    }\n\n    &:active {\n      .arrow-symbol-mktg {\n        transform: translateX(6px);\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "src/marketing/utilities/borders.scss",
    "content": "// Marketing border utilities\n\n// XXX If you're looking for responsive border utilities, they've moved to\n// ../../utilities/borders.scss\n"
  },
  {
    "path": "src/marketing/utilities/filters.scss",
    "content": ".grayscale {\n  filter: grayscale(100%);\n}\n"
  },
  {
    "path": "src/marketing/utilities/index.scss",
    "content": "@import '../support/index.scss';\n// utilities\n@import './animations.scss';\n@import './borders.scss';\n@import './filters.scss';\n@import './layout.scss';\n"
  },
  {
    "path": "src/marketing/utilities/layout.scss",
    "content": "// Layout utilities\n\n// Responsive utilities to position content\n// No utilities for sm and xl breakpoints\n@each $breakpoint, $variant in $marketing-position-variants {\n  @include breakpoint($breakpoint) {\n    @each $scale, $size in $spacer-map-extended {\n      @if ($size != 0 or $variant != '') {\n        // stylelint-disable-next-line primer/spacing\n        .top#{$variant}-#{$scale}     { top: $size !important; }\n        // stylelint-disable-next-line primer/spacing\n        .right#{$variant}-#{$scale}   { right: $size !important; }\n        // stylelint-disable-next-line primer/spacing\n        .bottom#{$variant}-#{$scale}  { bottom: $size !important; }\n        // stylelint-disable-next-line primer/spacing\n        .left#{$variant}-#{$scale}    { left: $size !important; }\n      }\n\n      @if ($size != 0) {\n        // stylelint-disable-next-line primer/spacing\n        .top#{$variant}-n#{$scale}     { top: -$size !important; }\n        // stylelint-disable-next-line primer/spacing\n        .right#{$variant}-n#{$scale}   { right: -$size !important; }\n        // stylelint-disable-next-line primer/spacing\n        .bottom#{$variant}-n#{$scale}  { bottom: -$size !important; }\n        // stylelint-disable-next-line primer/spacing\n        .left#{$variant}-n#{$scale}    { left: -$size !important; }\n      }\n    }\n  }\n}\n\n// Negative offset columns\n@each $breakpoint, $variant in $responsive-variants {\n  @include breakpoint($breakpoint) {\n    @for $offset from 1 through 7 {\n      // stylelint-disable-next-line primer/spacing\n      .offset#{$variant}-n#{$offset} { margin-left: -($offset * 0.0833333333 * 100%); }\n    }\n  }\n}\n\n// Width and height utilities, especially needed when the\n// dimensions of an image are set in HTML\n.width-auto { width: auto !important; }\n.height-auto { height: auto !important; }\n\n// Make an object fill its parent\n.object-fit-cover { object-fit: cover !important; }\n\n// Handling z-index\n.z-1 { z-index: 1 !important; }\n.z-2 { z-index: 2 !important; }\n.z-3 { z-index: 3 !important; }\n\n// Negative z-index\n.z-n1 { z-index: -1 !important; }\n.z-n2 { z-index: -2 !important; }\n"
  },
  {
    "path": "src/navigation/README.md",
    "content": "---\nbundle: \"navigation\"\ngenerated: true\n---\n\n# Primer CSS: `navigation` bundle\n\n## Usage\n\nPrimer CSS source files are written in [SCSS]. To include this Primer CSS module in your own build, ensure that your `node_modules` directory is listed in your Sass include paths, then import it with:\n\n```scss\n@import \"@primer/css/navigation/index.scss\";\n```\n\n## Build\n\nThe `@primer/css` npm package includes a standalone CSS build of this module in `dist/navigation.css`.\n\n## License\n\n[MIT](https://github.com/primer/css/blob/main/LICENSE) &copy; [GitHub](https://github.com/)\n\n\n[scss]: https://sass-lang.com/documentation/syntax#scss\n"
  },
  {
    "path": "src/navigation/filter-list.scss",
    "content": "// stylelint-disable selector-max-specificity\n\n// Filters list\n//\n// A vertical list of filters.\n.filter-list {\n  list-style-type: none;\n\n  &.small .filter-item {\n    // stylelint-disable-next-line primer/spacing\n    padding: 6px 12px;\n    // stylelint-disable-next-line primer/typography\n    font-size: $font-size-small;\n  }\n\n  &.pjax-active .filter-item {\n    color: var(--fgColor-muted, var(--color-fg-muted));\n    background-color: transparent;\n\n    &.pjax-active {\n      color: var(--fgColor-onEmphasis, var(--color-fg-on-emphasis));\n      background-color: var(--bgColor-accent-emphasis, var(--color-accent-emphasis));\n    }\n  }\n}\n\n.filter-item {\n  position: relative;\n  display: block;\n  padding: var(--base-size-8) var(--base-size-16);\n  margin-bottom: var(--base-size-4);\n  overflow: hidden;\n  // stylelint-disable-next-line primer/typography\n  font-size: $h5-size;\n  color: var(--fgColor-muted, var(--color-fg-muted));\n  text-decoration: none;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n  cursor: pointer;\n  // stylelint-disable-next-line primer/borders\n  border-radius: $border-radius;\n\n  &:hover {\n    text-decoration: none;\n    background-color: var(--bgColor-muted, var(--color-canvas-subtle));\n  }\n\n  &.selected,\n  &[aria-selected='true'],\n  &[aria-current]:not([aria-current='false']) {\n    color: var(--fgColor-onEmphasis, var(--color-fg-on-emphasis));\n    background-color: var(--bgColor-accent-emphasis, var(--color-accent-emphasis));\n\n    // fallback :focus state\n    &:focus {\n      @include focusOutlineOnEmphasis;\n\n      // remove fallback :focus if :focus-visible is supported\n      &:not(:focus-visible) {\n        outline: solid 1px transparent;\n        box-shadow: none;\n      }\n    }\n\n    // default focus state\n    &:focus-visible {\n      @include focusOutlineOnEmphasis;\n    }\n  }\n\n  .count {\n    float: right;\n    // stylelint-disable-next-line primer/typography\n    font-weight: $font-weight-bold;\n  }\n\n  .bar {\n    position: absolute;\n    top: var(--base-size-2);\n    right: 0;\n    bottom: var(--base-size-2);\n    z-index: -1;\n    display: inline-block;\n    background-color: var(--bgColor-neutral-muted, var(--color-neutral-subtle));\n  }\n}\n"
  },
  {
    "path": "src/navigation/index.scss",
    "content": "@import '../support/index.scss';\n// Navigation\n@import './filter-list.scss';\n@import './sidenav.scss';\n@import './subnav.scss';\n"
  },
  {
    "path": "src/navigation/sidenav.scss",
    "content": "// Side Nav\n//\n// A vertical list of navigational links, typically used on the left side of a page.\n\n.SideNav {\n  background-color: var(--bgColor-muted, var(--color-canvas-subtle));\n}\n\n.SideNav-item {\n  position: relative;\n  display: block;\n  width: 100%;\n  // stylelint-disable-next-line primer/spacing\n  padding: 12px var(--base-size-16);\n  color: var(--fgColor-default, var(--color-fg-default));\n  text-align: left;\n  background-color: transparent;\n  border: 0;\n  // stylelint-disable-next-line primer/borders, primer/colors\n  border-top: $border-width $border-style var(--borderColor-muted, var(--color-border-muted));\n\n  &:first-child {\n    border-top: 0;\n  }\n\n  &:last-child {\n    // makes sure there is a \"bottom border\" in case the list is not long enough\n    // stylelint-disable-next-line primer/box-shadow\n    box-shadow: 0 $border-width 0 var(--borderColor-default, var(--color-border-default));\n  }\n\n  // Bar on the left\n  &::before {\n    position: absolute;\n    top: 0;\n    bottom: 0;\n    left: 0;\n    z-index: 1;\n    width: 2px;\n    pointer-events: none;\n    content: '';\n  }\n}\n\n// States\n\n.SideNav-item:hover {\n  text-decoration: none;\n  background-color: var(--bgColor-neutral-muted, var(--color-neutral-subtle));\n}\n\n.SideNav-item:active {\n  background-color: var(--bgColor-muted, var(--color-canvas-subtle));\n}\n\n.SideNav-item[aria-current]:not([aria-current='false']),\n.SideNav-item[aria-selected='true'] {\n  background-color: var(--sideNav-bgColor-selected, var(--color-sidenav-selected-bg));\n\n  // Bar on the left\n  &::before {\n    // stylelint-disable-next-line primer/colors\n    background-color: var(--underlineNav-borderColor-active, var(--color-primer-border-active));\n  }\n}\n\n// Icon\n//\n// Makes sure multiple icons are vertically aligned\n\n.SideNav-icon {\n  width: 16px;\n  margin-right: var(--base-size-8);\n  color: var(--fgColor-muted, var(--color-fg-muted));\n}\n\n// Sub Nav\n//\n// A more lightweight version, suited as a sub nav\n\n.SideNav-subItem {\n  position: relative;\n  display: block;\n  width: 100%;\n  padding: var(--base-size-4) 0;\n  color: var(--fgColor-accent, var(--color-accent-fg));\n  text-align: left;\n  background-color: transparent;\n  border: 0;\n}\n\n.SideNav-subItem:hover {\n  color: var(--fgColor-default, var(--color-fg-default));\n  text-decoration: none;\n}\n\n.SideNav-subItem[aria-current]:not([aria-current='false']),\n.SideNav-subItem[aria-selected='true'] {\n  // stylelint-disable-next-line primer/typography\n  font-weight: $font-weight-semibold;\n  color: var(--fgColor-default, var(--color-fg-default));\n}\n"
  },
  {
    "path": "src/navigation/subnav.scss",
    "content": "// stylelint-disable selector-max-specificity\n\n// Needs refactoring\n// Sub nav\n.subnav {\n  // stylelint-disable-next-line primer/spacing\n  margin-bottom: 20px;\n\n  @include clearfix();\n}\n\n.subnav-bordered {\n  // stylelint-disable-next-line primer/spacing\n  padding-bottom: 20px;\n  // stylelint-disable-next-line primer/borders, primer/colors\n  border-bottom: $border-width $border-style var(--borderColor-muted, var(--color-border-muted));\n}\n\n.subnav-flush {\n  margin-bottom: 0;\n}\n\n.subnav-item {\n  position: relative;\n  float: left;\n  // stylelint-disable-next-line primer/spacing\n  padding: 5px var(--base-size-16);\n  // stylelint-disable-next-line primer/typography\n  font-weight: $font-weight-semibold;\n  // stylelint-disable-next-line primer/typography\n  line-height: 20px;\n  color: var(--fgColor-default, var(--color-fg-default));\n  // stylelint-disable-next-line primer/borders, primer/colors\n  border: $border-width $border-style var(--control-borderColor-rest, var(--color-border-default));\n\n  + .subnav-item {\n    // stylelint-disable-next-line primer/spacing\n    margin-left: -1px;\n  }\n\n  &:hover,\n  &:focus {\n    text-decoration: none;\n    background-color: var(--bgColor-muted, var(--color-canvas-subtle));\n  }\n\n  &.selected,\n  &[aria-selected='true'],\n  &[aria-current]:not([aria-current='false']) {\n    z-index: 2;\n    color: var(--fgColor-onEmphasis, var(--color-fg-on-emphasis));\n    background-color: var(--bgColor-accent-emphasis, var(--color-accent-emphasis));\n    border-color: var(--borderColor-accent-emphasis, var(--color-accent-emphasis));\n\n    // fallback :focus state\n    &:focus {\n      @include focusOutlineOnEmphasis;\n\n      // remove fallback :focus if :focus-visible is supported\n      &:not(:focus-visible) {\n        outline: solid 1px transparent;\n        box-shadow: none;\n      }\n    }\n\n    // default focus state\n    &:focus-visible {\n      @include focusOutlineOnEmphasis;\n    }\n  }\n\n  &:first-child {\n    // stylelint-disable-next-line primer/borders\n    border-top-left-radius: $border-radius;\n    // stylelint-disable-next-line primer/borders\n    border-bottom-left-radius: $border-radius;\n  }\n\n  &:last-child {\n    // stylelint-disable-next-line primer/borders\n    border-top-right-radius: $border-radius;\n    // stylelint-disable-next-line primer/borders\n    border-bottom-right-radius: $border-radius;\n  }\n}\n\n.subnav-search {\n  position: relative;\n  // stylelint-disable-next-line primer/spacing\n  margin-left: 12px;\n}\n\n.subnav-search-input {\n  width: 320px;\n  padding-left: var(--base-size-32);\n  color: var(--fgColor-muted, var(--color-fg-muted));\n}\n\n.subnav-search-input-wide {\n  // stylelint-disable-next-line primer/responsive-widths\n  width: 500px;\n}\n\n.subnav-search-icon {\n  position: absolute;\n  // stylelint-disable-next-line primer/spacing\n  top: 9px;\n  left: var(--base-size-8);\n  display: block;\n  color: var(--fgColor-muted, var(--color-fg-muted));\n  text-align: center;\n  pointer-events: none;\n}\n\n.subnav-search-context {\n  .btn {\n    border-top-right-radius: 0;\n    border-bottom-right-radius: 0;\n\n    &:hover,\n    &:focus,\n    &:active,\n    &.selected {\n      z-index: 2;\n    }\n  }\n\n  + .subnav-search {\n    // stylelint-disable-next-line primer/spacing\n    margin-left: -1px;\n\n    .subnav-search-input {\n      border-top-left-radius: 0;\n      border-bottom-left-radius: 0;\n    }\n  }\n\n  .select-menu-modal-holder {\n    z-index: 30;\n  }\n\n  .select-menu-modal {\n    width: 220px;\n  }\n\n  .select-menu-item-icon {\n    color: inherit;\n  }\n}\n\n.subnav-spacer-right {\n  // stylelint-disable-next-line primer/spacing\n  padding-right: 12px;\n}\n"
  },
  {
    "path": "src/pagination/README.md",
    "content": "---\nbundle: \"pagination\"\ngenerated: true\n---\n\n# Primer CSS: `pagination` bundle\n\n## Usage\n\nPrimer CSS source files are written in [SCSS]. To include this Primer CSS module in your own build, ensure that your `node_modules` directory is listed in your Sass include paths, then import it with:\n\n```scss\n@import \"@primer/css/pagination/index.scss\";\n```\n\n## Build\n\nThe `@primer/css` npm package includes a standalone CSS build of this module in `dist/pagination.css`.\n\n## License\n\n[MIT](https://github.com/primer/css/blob/main/LICENSE) &copy; [GitHub](https://github.com/)\n\n\n[scss]: https://sass-lang.com/documentation/syntax#scss\n"
  },
  {
    "path": "src/pagination/index.scss",
    "content": "// support files\n@import '../support/index.scss';\n@import './pagination.scss';\n"
  },
  {
    "path": "src/pagination/pagination.scss",
    "content": "// Needs refactoring\n// stylelint-disable selector-max-type\n.pagination {\n  a,\n  span,\n  em {\n    min-width: 32px;\n    // stylelint-disable-next-line primer/spacing\n    padding: 5px 10px;\n    font-style: normal;\n    // stylelint-disable-next-line primer/typography\n    line-height: 20px;\n    color: var(--fgColor-default, var(--color-fg-default));\n    text-align: center;\n    white-space: nowrap;\n    vertical-align: middle;\n    cursor: pointer;\n    user-select: none;\n    // stylelint-disable-next-line primer/borders, primer/colors\n    border: $border-width $border-style transparent;\n    // stylelint-disable-next-line primer/borders\n    border-radius: $border-radius;\n    transition: border-color 0.2s cubic-bezier(0.3, 0, 0.5, 1);\n\n    &:hover,\n    &:focus {\n      text-decoration: none;\n      border-color: var(--borderColor-default, var(--color-border-default));\n      transition-duration: 0.1s;\n    }\n\n    &:active {\n      border-color: var(--borderColor-muted, var(--color-border-muted));\n      transition: none;\n    }\n  }\n\n  .previous_page,\n  .next_page {\n    color: var(--fgColor-accent, var(--color-accent-fg));\n  }\n\n  .current,\n  .current:hover,\n  [aria-current]:not([aria-current='false']) {\n    color: var(--fgColor-onEmphasis, var(--color-fg-on-emphasis));\n    background-color: var(--bgColor-accent-emphasis, var(--color-accent-emphasis));\n    border-color: transparent;\n  }\n\n  .gap,\n  .disabled,\n  [aria-disabled='true'],\n  .gap:hover,\n  .disabled:hover,\n  [aria-disabled='true']:hover {\n    color: var(--fgColor-disabled, var(--color-primer-fg-disabled));\n    cursor: default;\n    border-color: transparent;\n  }\n\n  // chevron icons using clip-path\n  @supports (clip-path: polygon(50% 0, 100% 50%, 50% 100%)) {\n    .previous_page::before,\n    .next_page::after {\n      display: inline-block;\n      width: 16px;\n      height: 16px;\n      vertical-align: text-bottom;\n      content: '';\n      background-color: currentColor;\n    }\n\n    // chevron-left\n    .previous_page::before {\n      margin-right: var(--base-size-4);\n      clip-path:\n        polygon(\n          9.8px 12.8px,\n          8.7px 12.8px,\n          4.5px 8.5px,\n          4.5px 7.5px,\n          8.7px 3.2px,\n          9.8px 4.3px,\n          6.1px 8px,\n          9.8px 11.7px,\n          9.8px 12.8px\n        );\n    }\n\n    // chevron-right\n    .next_page::after {\n      margin-left: var(--base-size-4);\n      clip-path:\n        polygon(\n          6.2px 3.2px,\n          7.3px 3.2px,\n          11.5px 7.5px,\n          11.5px 8.5px,\n          7.3px 12.8px,\n          6.2px 11.7px,\n          9.9px 8px,\n          6.2px 4.3px,\n          6.2px 3.2px\n        );\n    }\n  }\n\n  // Responsive\n\n  // Hide everything by default\n  > * {\n    display: none;\n  }\n\n  // 0 -> sm\n  // Only show [Previous] [Next]\n\n  > :first-child,\n  > :last-child,\n  > .previous_page,\n  > .next_page {\n    display: inline-block;\n  }\n\n  // sm -> md\n  // Also show [first] [last] [current number] and [...]\n\n  @include breakpoint(sm) {\n    > :nth-child(2),\n    > :nth-last-child(2),\n    > .current,\n    > .gap {\n      display: inline-block;\n    }\n  }\n\n  // md -> or more\n  // Show everything\n\n  @include breakpoint(md) {\n    > * {\n      display: inline-block;\n    }\n  }\n}\n\n// Unified centered pagination across the site\n.paginate-container {\n  margin-top: var(--base-size-16);\n  margin-bottom: var(--base-size-16);\n  text-align: center;\n\n  .pagination {\n    display: inline-block;\n  }\n}\n"
  },
  {
    "path": "src/primitives/index.scss",
    "content": "@import '@primer/primitives/dist/css/base/size/size';\n@import '@primer/primitives/dist/css/base/typography/typography';\n@import '@primer/primitives/dist/css/functional/size/border';\n@import '@primer/primitives/dist/css/functional/size/breakpoints';\n@import '@primer/primitives/dist/css/functional/size/size';\n@import '@primer/primitives/dist/css/functional/size/viewport';\n@import '@primer/primitives/dist/css/functional/typography/typography';\n@import './temp-typography-tokens.scss';\n"
  },
  {
    "path": "src/primitives/temp-typography-tokens.scss",
    "content": "// Temporary typography vars in rem units variables\n:root {\n  // Heading sizes - mobile\n  // h4-h6 remain the same size on both mobile & desktop\n  --h00-size-mobile: 2.5rem;\n  --h0-size-mobile: 2rem;\n  --h1-size-mobile: 1.625rem;\n  --h2-size-mobile: 1.375rem;\n  --h3-size-mobile: 1.125rem;\n\n  // Heading sizes - desktop\n  --h00-size: 3rem;\n  --h0-size: 2.5rem;\n  --h1-size: 2rem;\n  --h2-size: 1.5rem;\n  --h3-size: 1.25rem;\n  --h4-size: 1rem;\n  --h5-size: 0.875rem;\n  --h6-size: 0.75rem;\n  --body-font-size: 0.875rem;\n  --font-size-small: 0.75rem;\n}\n"
  },
  {
    "path": "src/product/README.md",
    "content": "---\nbundle: \"product\"\ngenerated: true\n---\n\n# Primer CSS: `product` bundle\n\n## Usage\n\nPrimer CSS source files are written in [SCSS]. To include this Primer CSS module in your own build, ensure that your `node_modules` directory is listed in your Sass include paths, then import it with:\n\n```scss\n@import \"@primer/css/product/index.scss\";\n```\n\n## Build\n\nThe `@primer/css` npm package includes a standalone CSS build of this module in `dist/product.css`.\n\n## License\n\n[MIT](https://github.com/primer/css/blob/main/LICENSE) &copy; [GitHub](https://github.com/)\n\n\n[scss]: https://sass-lang.com/documentation/syntax#scss\n"
  },
  {
    "path": "src/product/index.scss",
    "content": "/*!\n * @primer/css/product\n * http://primer.style/css\n *\n * Released under MIT license. Copyright (c) 2019 GitHub Inc.\n */\n\n// Global requirements\n@import '../support/index.scss';\n\n// Product specific css modules\n@import '../autocomplete/index.scss';\n@import '../avatars/index.scss';\n@import '../branch-name/index.scss';\n@import '../header/index.scss';\n@import '../labels/index.scss';\n@import '../loaders/index.scss';\n@import '../markdown/index.scss';\n@import '../select-menu/index.scss';\n@import '../toasts/index.scss';\n"
  },
  {
    "path": "src/select-menu/README.md",
    "content": "---\nbundle: \"select-menu\"\ngenerated: true\n---\n\n# Primer CSS: `select-menu` bundle\n\n## Usage\n\nPrimer CSS source files are written in [SCSS]. To include this Primer CSS module in your own build, ensure that your `node_modules` directory is listed in your Sass include paths, then import it with:\n\n```scss\n@import \"@primer/css/select-menu/index.scss\";\n```\n\n## Build\n\nThe `@primer/css` npm package includes a standalone CSS build of this module in `dist/select-menu.css`.\n\n## License\n\n[MIT](https://github.com/primer/css/blob/main/LICENSE) &copy; [GitHub](https://github.com/)\n\n\n[scss]: https://sass-lang.com/documentation/syntax#scss\n"
  },
  {
    "path": "src/select-menu/index.scss",
    "content": "// support files\n@import '../support/index.scss';\n@import './select-menu.scss';\n"
  },
  {
    "path": "src/select-menu/select-menu.scss",
    "content": "// stylelint-disable selector-max-type, selector-no-qualifying-type\n// selector-max-type is needed for body:not(.intent-mouse) to target keyboard only styles.\n\n$SelectMenu-max-height: 480px !default;\n\n// Select Menu\n//\n// A more advanced menu with support for navigation, filtering, and more.\n\n.SelectMenu {\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 99;\n  display: flex;\n  padding: var(--base-size-16);\n  pointer-events: none;\n  flex-direction: column;\n\n  @include breakpoint(sm) {\n    position: absolute;\n    top: auto;\n    right: auto;\n    bottom: auto;\n    left: auto;\n    padding: 0;\n  }\n}\n\n// Backdrop\n//\n// Adds a dark, semi transparent \"cover\" underneath the modal. Only visible for xs.\n\n.SelectMenu::before {\n  position: absolute;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  pointer-events: none;\n  content: '';\n  background-color: var(--overlay-backdrop-bgColor, var(--color-primer-canvas-backdrop));\n\n  @include breakpoint(sm) {\n    display: none;\n  }\n}\n\n// Modal\n//\n// The main \"box\" that contains the content\n\n.SelectMenu-modal {\n  position: relative;\n  z-index: 99; // Needs to be higher than .details-overlay's z-index: 80.\n  display: flex;\n  max-height: 66%;\n  margin: auto 0;\n  overflow: hidden; // Enables border radius on scrollable child elements\n  pointer-events: auto;\n  flex-direction: column;\n  background-color: var(--overlay-bgColor, var(--color-canvas-overlay));\n  // stylelint-disable-next-line primer/borders, primer/colors\n  border: $border-width $border-style var(--selectMenu-borderColor, var(--color-select-menu-backdrop-border));\n  // stylelint-disable-next-line primer/borders\n  border-radius: $border-radius * 2;\n  box-shadow: var(--shadow-floating-legacy, var(--color-overlay-shadow));\n  animation: SelectMenu-modal-animation 0.12s cubic-bezier(0, 0.1, 0.1, 1) backwards;\n\n  @keyframes SelectMenu-modal-animation {\n    0% {\n      opacity: 0;\n      transform: scale(0.9);\n    }\n  }\n\n  @keyframes SelectMenu-modal-animation--sm {\n    0% {\n      opacity: 0;\n      transform: translateY(calc(var(--base-size-16) * -1));\n    }\n  }\n\n  @include breakpoint(sm) {\n    width: 300px;\n    height: auto;\n    max-height: $SelectMenu-max-height;\n    margin: var(--base-size-8) 0 var(--base-size-16) 0;\n    // stylelint-disable-next-line primer/typography\n    font-size: $font-size-small;\n    border-color: var(--borderColor-default, var(--color-border-default));\n    // stylelint-disable-next-line primer/borders\n    border-radius: $border-radius;\n    box-shadow: var(--shadow-floating-legacy, var(--color-overlay-shadow));\n    animation-name: SelectMenu-modal-animation--sm;\n  }\n}\n\n// Header\n//\n// Used for showing a title and the close button. Close button is only visible for xs.\n\n.SelectMenu-header {\n  display: flex;\n  padding: var(--base-size-16);\n  flex: none; // fixes header from getting squeezed in Safari iOS\n  align-items: center;\n  // stylelint-disable-next-line primer/borders, primer/colors\n  border-bottom: $border-width $border-style var(--borderColor-muted, var(--color-border-muted));\n\n  @include breakpoint(sm) {\n    // stylelint-disable-next-line primer/spacing\n    padding: 7px 7px 7px var(--base-size-16);\n  }\n}\n\n.SelectMenu-title {\n  flex: 1;\n  // stylelint-disable-next-line primer/typography\n  font-size: $body-font-size;\n  // stylelint-disable-next-line primer/typography\n  font-weight: $font-weight-bold;\n\n  @include breakpoint(sm) {\n    font-size: inherit;\n  }\n}\n\n.SelectMenu-closeButton {\n  padding: var(--base-size-16);\n  margin: calc(var(--base-size-16) * -1);\n  // stylelint-disable-next-line primer/typography\n  line-height: 1;\n  color: var(--fgColor-muted, var(--color-fg-muted));\n  background-color: transparent;\n  border: 0;\n\n  @include breakpoint(sm) {\n    padding: var(--base-size-8);\n    // stylelint-disable-next-line primer/spacing\n    margin: calc(var(--base-size-8) * -1) (-7px); // Using -7px fixes a :focus glitch\n  }\n}\n\n// Filter\n//\n// An input to filter a large list\n\n.SelectMenu-filter {\n  padding: var(--base-size-16);\n  margin: 0;\n  // stylelint-disable-next-line primer/borders, primer/colors\n  border-bottom: $border-width $border-style var(--borderColor-muted, var(--color-border-muted));\n\n  @include breakpoint(sm) {\n    padding: var(--base-size-8);\n  }\n}\n\n.SelectMenu-input {\n  display: block;\n  width: 100%;\n\n  @include breakpoint(sm) {\n    // stylelint-disable-next-line primer/typography\n    font-size: $h5-size;\n  }\n}\n\n// List\n//\n// The container that holds all the list items. Starts scrolling when the list gets too long.\n\n.SelectMenu-list {\n  position: relative;\n  padding: 0;\n  margin: 0;\n  // stylelint-disable-next-line primer/spacing\n  margin-bottom: -$border-width; // Hides the last border in the list\n  flex: auto;\n  overflow-x: hidden;\n  overflow-y: auto;\n  background-color: var(--overlay-bgColor, var(--color-canvas-overlay));\n  -webkit-overflow-scrolling: touch; // Adds momentum + bouncy scrolling\n}\n\n// List Item\n//\n// The interactive element used to make a selection\n\n.SelectMenu-item {\n  display: flex;\n  align-items: center;\n  width: 100%;\n  padding: var(--base-size-16);\n  overflow: hidden;\n  color: var(--fgColor-default, var(--color-fg-default));\n  text-align: left;\n  cursor: pointer;\n  background-color: var(--overlay-bgColor, var(--color-canvas-overlay));\n  border: 0;\n  // stylelint-disable-next-line primer/borders, primer/colors\n  border-bottom: $border-width $border-style var(--borderColor-muted, var(--color-border-muted));\n\n  @include breakpoint(sm) {\n    // stylelint-disable-next-line primer/spacing\n    padding-top: 7px;\n    // stylelint-disable-next-line primer/spacing\n    padding-bottom: 7px;\n  }\n\n  // Borderless\n  .SelectMenu-list--borderless & {\n    border-bottom: 0;\n  }\n}\n\n// Icon\n//\n// Icon shown on the left of a list item.\n\n.SelectMenu-icon {\n  width: var(--base-size-16); // fixed width to make sure following content aligns\n  margin-right: var(--base-size-8);\n  flex-shrink: 0;\n}\n\n// Check icon\n.SelectMenu-icon--check {\n  visibility: hidden;\n  transition: transform 0.12s cubic-bezier(0.5, 0.1, 1, 0.5), visibility 0s 0.12s linear;\n  transform: scale(0);\n}\n\n// Tabs\n//\n// Allows switching between multiple lists\n\n.SelectMenu-tabs {\n  display: flex;\n  flex-shrink: 0;\n  overflow-x: auto;\n  overflow-y: hidden;\n  // stylelint-disable-next-line primer/box-shadow\n  box-shadow: inset 0 -1px 0 var(--borderColor-muted, var(--color-border-muted));\n  -webkit-overflow-scrolling: touch;\n\n  // Hide scrollbar so it doesn't cover the text\n  &::-webkit-scrollbar {\n    display: none;\n  }\n\n  @include breakpoint(sm) {\n    padding: var(--base-size-8) var(--base-size-8) 0 var(--base-size-8);\n  }\n}\n\n.SelectMenu-tab {\n  flex: 1;\n  padding: var(--base-size-8) var(--base-size-16);\n  // stylelint-disable-next-line primer/typography\n  font-size: $font-size-small;\n  // stylelint-disable-next-line primer/typography\n  font-weight: $font-weight-semibold;\n  color: var(--fgColor-muted, var(--color-fg-muted));\n  text-align: center;\n  background-color: transparent;\n  border: 0;\n  // stylelint-disable-next-line primer/box-shadow\n  box-shadow: inset 0 -1px 0 var(--borderColor-muted, var(--color-border-muted));\n\n  @include breakpoint(sm) {\n    flex: none;\n    padding: var(--base-size-4) var(--base-size-16);\n    // stylelint-disable-next-line primer/borders, primer/colors\n    border: $border-width $border-style transparent;\n    border-bottom-width: 0;\n    // stylelint-disable-next-line primer/borders\n    border-top-left-radius: $border-radius;\n    // stylelint-disable-next-line primer/borders\n    border-top-right-radius: $border-radius;\n  }\n\n  &[aria-selected='true'] {\n    z-index: 1; // Keeps box-shadow visible when hovering\n    color: var(--fgColor-default, var(--color-fg-default));\n    cursor: default;\n    background-color: var(--overlay-bgColor, var(--color-canvas-overlay));\n    // stylelint-disable-next-line primer/box-shadow\n    box-shadow: 0 0 0 1px var(--borderColor-muted, var(--color-border-muted));\n\n    @include breakpoint(sm) {\n      border-color: var(--borderColor-muted, var(--color-border-muted));\n      box-shadow: none;\n    }\n  }\n}\n\n// Message\n//\n// A container used to show different kinds of text messages.\n\n.SelectMenu-message {\n  // stylelint-disable-next-line primer/spacing\n  padding: 7px var(--base-size-16);\n  text-align: center;\n  background-color: var(--overlay-bgColor, var(--color-canvas-overlay));\n  // stylelint-disable-next-line primer/borders, primer/colors\n  border-bottom: $border-width $border-style var(--borderColor-muted, var(--color-border-muted));\n}\n\n// Blankslate and Loading\n//\n// A container used to show a blankslate or the loading animation.\n\n.SelectMenu-blankslate,\n.SelectMenu-loading {\n  padding: var(--base-size-24) var(--base-size-16);\n  text-align: center;\n  background-color: var(--overlay-bgColor, var(--color-canvas-overlay));\n}\n\n// Divider\n//\n// Can be used to divide the list into multiple groups\n\n.SelectMenu-divider {\n  padding: var(--base-size-4) var(--base-size-16);\n  margin: 0;\n  // stylelint-disable-next-line primer/typography\n  font-size: $font-size-small;\n  // stylelint-disable-next-line primer/typography\n  font-weight: $font-weight-semibold;\n  color: var(--fgColor-muted, var(--color-fg-muted));\n  background-color: var(--bgColor-muted, var(--color-canvas-subtle));\n  // stylelint-disable-next-line primer/borders, primer/colors\n  border-bottom: $border-width $border-style var(--borderColor-muted, var(--color-border-muted));\n\n  // Borderless\n  .SelectMenu-list--borderless & {\n    // stylelint-disable-next-line primer/borders, primer/colors\n    border-top: $border-width $border-style var(--borderColor-muted, var(--color-border-muted));\n\n    &:empty {\n      padding: 0;\n      border-top: 0;\n    }\n  }\n}\n\n// Footer\n//\n// A container at the bottom.\n\n.SelectMenu-footer {\n  z-index: 0; // Avoid top border from getting covered by the negative margin of the list\n  padding: var(--base-size-8) var(--base-size-16);\n  // stylelint-disable-next-line primer/typography\n  font-size: $font-size-small;\n  color: var(--fgColor-muted, var(--color-fg-muted));\n  text-align: center;\n  // stylelint-disable-next-line primer/borders, primer/colors\n  border-top: $border-width $border-style var(--borderColor-muted, var(--color-border-muted));\n\n  @include breakpoint(sm) {\n    // stylelint-disable-next-line primer/spacing\n    padding: 7px var(--base-size-16);\n  }\n}\n\n// Has Filter (modifier)\n//\n// Makes sure that the filter input keeps a fixed position at the top while typing. Only visible for xs.\n\n.SelectMenu--hasFilter {\n  .SelectMenu-modal {\n    height: 80%;\n    max-height: none;\n    margin-top: 0;\n\n    @include breakpoint(sm) {\n      height: auto;\n      max-height: $SelectMenu-max-height;\n      margin-top: var(--base-size-8);\n    }\n  }\n}\n\n// States\n//\n// Different states\n\n// Reset outlines\n.SelectMenu-tab:focus,\n.SelectMenu-item:focus {\n  outline: 0;\n}\n\n// Reset <a> elements\n.SelectMenu-item:hover {\n  text-decoration: none;\n}\n\n// Selected\n//\n// Visible when a user clicks/taps on a list item\n\n.SelectMenu-item[aria-checked='true'] {\n  // stylelint-disable-next-line primer/typography\n  font-weight: $font-weight-semibold;\n  color: var(--fgColor-default, var(--color-fg-default));\n\n  .SelectMenu-icon--check {\n    visibility: visible;\n    transition: transform 0.12s cubic-bezier(0, 0, 0.2, 1), visibility 0s linear;\n    transform: scale(1);\n  }\n}\n\n// Disabled\n//\n// Prevent list items to be selected\n\n.SelectMenu-item:disabled,\n.SelectMenu-item[aria-disabled='true'] {\n  color: var(--fgColor-disabled, var(--color-primer-fg-disabled));\n  pointer-events: none;\n}\n\n// Can hover states\n//\n// For mouse/keyboard input\n\n@media (hover: hover) {\n  body:not(.intent-mouse) .SelectMenu-closeButton:focus,\n  .SelectMenu-closeButton:hover {\n    color: var(--fgColor-default, var(--color-fg-default));\n  }\n\n  .SelectMenu-closeButton:active {\n    color: var(--fgColor-muted, var(--color-fg-muted));\n  }\n\n  body:not(.intent-mouse) .SelectMenu-item:focus,\n  .SelectMenu-item:hover {\n    background-color: var(--bgColor-neutral-muted, var(--color-neutral-subtle));\n  }\n\n  .SelectMenu-item:active {\n    background-color: var(--bgColor-muted, var(--color-canvas-subtle));\n  }\n\n  body:not(.intent-mouse) .SelectMenu-tab:focus {\n    background-color: var(--selectMenu-bgColor-active, var(--color-select-menu-tap-focus-bg));\n  }\n\n  .SelectMenu-tab:hover {\n    color: var(--fgColor-default, var(--color-fg-default));\n  }\n\n  .SelectMenu-tab:not([aria-selected='true']):active {\n    color: var(--fgColor-default, var(--color-fg-default));\n    background-color: var(--bgColor-muted, var(--color-canvas-subtle));\n  }\n}\n\n// Can not hover states\n//\n// For touch input\n\n@media (hover: none) {\n  // Android\n  .SelectMenu-item:focus,\n  .SelectMenu-item:active {\n    background-color: var(--bgColor-muted, var(--color-canvas-subtle));\n  }\n\n  // iOS Safari\n  // :active would work if ontouchstart is added to the button\n  // Instead this tweaks the \"native\" highlight color\n  .SelectMenu-item {\n    -webkit-tap-highlight-color: var(--control-bgColor-active, var(--color-select-menu-tap-highlight));\n  }\n}\n"
  },
  {
    "path": "src/support/README.md",
    "content": "---\nbundle: \"support\"\ngenerated: true\n---\n\n# Primer CSS: `support` bundle\n\n## Usage\n\nPrimer CSS source files are written in [SCSS]. To include this Primer CSS module in your own build, ensure that your `node_modules` directory is listed in your Sass include paths, then import it with:\n\n```scss\n@import \"@primer/css/support/index.scss\";\n```\n\n## Build\n\nThe `@primer/css` npm package includes a standalone CSS build of this module in `dist/support.css`.\n\n## License\n\n[MIT](https://github.com/primer/css/blob/main/LICENSE) &copy; [GitHub](https://github.com/)\n\n\n[scss]: https://sass-lang.com/documentation/syntax#scss\n"
  },
  {
    "path": "src/support/index.scss",
    "content": "// variables\n@import './variables/typography.scss';\n@import './variables/layout.scss';\n@import './variables/misc.scss';\n\n// mixins\n@import './mixins/color-modes.scss';\n@import './mixins/typography.scss';\n@import './mixins/layout.scss';\n@import './mixins/misc.scss';\n"
  },
  {
    "path": "src/support/mixins/color-modes.scss",
    "content": "// This mixin is used to output the tokens/variables from Primitives\n//\n// Example:\n//\n// @include color-mode-theme(dark) {\n//   --color: black;\n// }\n//\n// Warning!!!\n// Don't use this mixin with a class. E.g.\n// @include color-mode-theme(dark) {\n//   .my-class {\n//     color: red;\n//   }\n// }\n//\n// The outputted `::selection .my-class` will make the selector invalid and the entire ruleset is disregarded.\n// At some point we hopefully can remove the need for `&, &::selection {}` again (once the spec/implementation changes).\n\n@mixin color-mode-theme($theme-name, $include-root: false) {\n  @if $include-root {\n    :root,\n    [data-color-mode=\"light\"][data-light-theme=\"#{$theme-name}\"],\n    [data-color-mode=\"dark\"][data-dark-theme=\"#{$theme-name}\"] {\n      &,\n      &::selection {\n        @content;\n      }\n\n      /*! */ // This is a fix for a cssstats bug see https://github.com/cssstats/cssstats/issues/331\n    }\n\n    ::backdrop,\n    [data-color-mode=\"light\"][data-light-theme=\"#{$theme-name}\"] ::backdrop,\n    [data-color-mode=\"dark\"][data-dark-theme=\"#{$theme-name}\"] ::backdrop {\n      @content;\n\n      /*! */ // Must remain separate from the above selector to not break browsers which don't support ::backdrop, e.g. Safari 14.\n    }\n  }\n\n  @else {\n    [data-color-mode=\"light\"][data-light-theme=\"#{$theme-name}\"],\n    [data-color-mode=\"dark\"][data-dark-theme=\"#{$theme-name}\"] {\n      &,\n      &::selection {\n        @content;\n      }\n    }\n\n    ::backdrop,\n    [data-color-mode=\"light\"][data-light-theme=\"#{$theme-name}\"] ::backdrop,\n    [data-color-mode=\"dark\"][data-dark-theme=\"#{$theme-name}\"] ::backdrop {\n      @content;\n\n      /*! */ // Must remain separate from the above selector to not break browsers which don't support ::backdrop, e.g. Safari 14.\n    }\n  }\n\n  @media (prefers-color-scheme: light) {\n    [data-color-mode=\"auto\"][data-light-theme=\"#{$theme-name}\"] {\n      &,\n      &::selection {\n        @content;\n      }\n    }\n\n    [data-color-mode=\"auto\"][data-light-theme=\"#{$theme-name}\"] ::backdrop {\n      @content;\n\n      /*! */ // Must remain separate from the above selector to not break browsers which don't support ::backdrop, e.g. Safari 14.\n    }\n  }\n\n  @media (prefers-color-scheme: dark) {\n    [data-color-mode=\"auto\"][data-dark-theme=\"#{$theme-name}\"] {\n      &,\n      &::selection {\n        @content;\n      }\n    }\n\n    [data-color-mode=\"auto\"][data-light-theme=\"#{$theme-name}\"] ::backdrop {\n      @content;\n\n      /*! */ // Must remain separate from the above selector to not break browsers which don't support ::backdrop, e.g. Safari 14.\n    }\n  }\n}\n\n// This mixin wraps styles with light or dark mode selectors\n// If possible, use a color variable instead.\n//\n// Example:\n//\n// @include color-mode('dark') {\n//   .my-class {\n//     color: red;\n//   }\n// }\n//\n// Returns:\n//\n// [data-color-mode=light][data-light-theme*=dark] .my-class,\n// [data-color-mode=dark][data-dark-theme*=dark] .my-class {\n//   color: red;\n// }\n//\n// @media (prefers-color-scheme: light) {\n//   [data-color-mode=auto][data-light-theme*=dark] .my-class {\n//     color: red;\n//   }\n// }\n// @media (prefers-color-scheme: dark) {\n//   [data-color-mode=auto][data-dark-theme*=dark] .my-class {\n//     color: red;\n//   }\n// }\n\n@mixin color-mode($mode) {\n  @if $mode == light {\n    :root,\n    [data-color-mode=\"light\"][data-light-theme*=\"#{$mode}\"],\n    [data-color-mode=\"dark\"][data-dark-theme*=\"#{$mode}\"] {\n      @content;\n    }\n  }\n\n  @else {\n    [data-color-mode=\"light\"][data-light-theme*=\"#{$mode}\"],\n    [data-color-mode=\"dark\"][data-dark-theme*=\"#{$mode}\"] {\n      @content;\n    }\n  }\n\n  @media (prefers-color-scheme: light) {\n    [data-color-mode=\"auto\"][data-light-theme*=\"#{$mode}\"] {\n      @content;\n    }\n  }\n\n  @media (prefers-color-scheme: dark) {\n    [data-color-mode=\"auto\"][data-dark-theme*=\"#{$mode}\"] {\n      @content;\n    }\n  }\n}\n\n// This mixin takes a map of color mode vars and splits them into dark and light mode\n// The goal is to reduce the amount of dark/light mode selectors compiled.\n//\n// Example input for $color-map\n//\n// @include color-variables((\"custom-css-variable-1\": (\n//     light: var(--color-scale-gray-3),\n//     dark: var(--color-scale-gray-5)\n//   ),\n//   \"custom-css-variable-2\": (\n//     light: var(--color-scale-gray-2),\n//     dark: var(--color-scale-gray-6)\n//   ),\n//   \"custom-css-variable-3\": (\n//     light: var(--color-scale-gray-2),\n//     dark: var(--color-scale-gray-6)\n//   )\n// ));\n@mixin color-variables($color-map) {\n  // Create map to store incoming variables\n  $dark-colors: ();\n  $light-colors: ();\n\n  @each $name, $value in $color-map {\n    @each $type, $color in $value {\n      @if $type == dark {\n        $dark-colors: append($dark-colors, (--color-#{$name}, #{$color}));\n      }\n\n      @else {\n        $light-colors: append($light-colors, (--color-#{$name}, #{$color}));\n      }\n    }\n  }\n\n  $mode-colors: (\n    dark: $dark-colors,\n    light: $light-colors\n  );\n\n  // Loop through sorted list\n  @each $mode, $variables in $mode-colors {\n    @include color-mode($mode) {\n      @each $prop, $val in $variables {\n        #{$prop}: $val;\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "src/support/mixins/layout.scss",
    "content": "// Responsive media queries\n\n@mixin breakpoint($breakpoint) {\n  @if $breakpoint == '' {\n    @content;\n  }\n\n  @else {\n    // Retrieves the value from the key\n    $value: map-get($breakpoints, $breakpoint);\n\n    // If the key exists in the map\n    @if $value != null {\n      // Prints a media query based on the value\n      @media (min-width: $value) {\n        @content;\n      }\n    }\n\n    // If the key doesn't exist in the map\n    @else {\n      @warn 'Unfortunately, no value could be retrieved from `#{$breakpoint}`. '\n        + 'Please make sure it is defined in `$breakpoints` map.';\n    }\n  }\n}\n\n// Retina media query\n\n@mixin retina-media-query {\n  @media\n    only screen and (-webkit-min-device-pixel-ratio: 2),\n    only screen and (min--moz-device-pixel-ratio: 2),\n    only screen and (-moz-min-device-pixel-ratio: 2),\n    only screen and (-o-min-device-pixel-ratio: 2/1),\n    only screen and (min-device-pixel-ratio: 2),\n    only screen and (min-resolution: 192dpi),\n    only screen and (min-resolution: 2dppx) {\n    @content;\n  }\n}\n\n// Clearfix\n//\n// Clears floats via mixin.\n\n@mixin clearfix {\n  // stylelint-disable nesting-selector-no-missing-scoping-root\n  &::before {\n    display: table;\n    content: '';\n  }\n\n  &::after {\n    display: table;\n    clear: both;\n    content: '';\n  }\n  // stylelint-enable nesting-selector-no-missing-scoping-root\n}\n"
  },
  {
    "path": "src/support/mixins/misc.scss",
    "content": "// Generate a two-color caret for any element.\n@mixin double-caret($background: var(--bgColor-default, var(--color-canvas-default)), $border: var(--borderColor-default, var(--color-border-default))) {\n  // stylelint-disable nesting-selector-no-missing-scoping-root\n  &::after,\n  &::before {\n    position: absolute;\n    // stylelint-disable-next-line primer/spacing\n    top: 11px;\n    right: 100%;\n    left: calc(var(--base-size-8) * -1);\n    display: block;\n    width: 8px;\n    height: 16px;\n    pointer-events: none;\n    content: ' ';\n    clip-path: polygon(0 50%, 100% 0, 100% 100%);\n  }\n\n  &::after {\n    // stylelint-disable-next-line primer/spacing\n    margin-left: 2px;\n    background-color: var(--bgColor-default, var(--color-canvas-default));\n    background-image: linear-gradient($background, $background);\n  }\n\n  &::before {\n    // stylelint-disable-next-line primer/colors\n    background-color: $border;\n  }\n  // stylelint-enable nesting-selector-no-missing-scoping-root\n}\n\n// global focus styles\n\n// inset box-shadow for form controls\n@mixin focusBoxShadowInset($outlineWidth: 1px, $outlineColor: var(--focus-outlineColor, var(--color-accent-fg))) {\n  // stylelint-disable-next-line primer/colors\n  border-color: var(--focus-outlineColor, var(--color-accent-fg));\n  outline: none;\n  // stylelint-disable-next-line primer/box-shadow\n  box-shadow: inset 0 0 0 $outlineWidth $outlineColor;\n}\n\n// box-shadow for :target styles (no inset)\n// !important to override PCSS utilities\n@mixin targetBoxShadow($outlineWidth: 2px, $outlineColor: var(--focus-outlineColor, var(--color-accent-fg))) {\n  outline: none !important;\n  // stylelint-disable-next-line primer/box-shadow\n  box-shadow: 0 0 0 $outlineWidth $outlineColor !important;\n}\n\n// outline\n@mixin focusOutline($outlineOffset: -2px, $outlineColor: var(--focus-outlineColor, var(--color-accent-fg))) {\n  outline: 2px solid $outlineColor;\n  outline-offset: $outlineOffset;\n  box-shadow: none;\n}\n\n// outline with fg box-shadow for buttons\n@mixin focusOutlineOnEmphasis($outlineOffset: -2px, $outlineColor: var(--focus-outlineColor, var(--color-accent-fg))) {\n  outline: 2px solid $outlineColor;\n  outline-offset: $outlineOffset;\n  // stylelint-disable-next-line primer/box-shadow\n  box-shadow: inset 0 0 0 3px var(--fgColor-onEmphasis, var(--color-fg-on-emphasis));\n}\n\n// if min-width is undefined, return only min-height\n@mixin minTouchTarget($min-height: 32px, $min-width: '') {\n  position: absolute;\n  top: 50%;\n  left: 50%;\n  width: 100%;\n  height: 100%;\n  min-height: $min-height;\n  content: '';\n  transform: translateX(-50%) translateY(-50%);\n\n  @if $min-width != '' {\n    min-width: $min-width;\n  }\n}\n"
  },
  {
    "path": "src/support/mixins/typography.scss",
    "content": "// Text hiding for image based text replacement.\n// Higher performance than -9999px because it only renders\n// the size of the actual text, not a full 9999px box.\n@mixin hide-text() {\n  overflow: hidden;\n  text-indent: 100%;\n  white-space: nowrap;\n}\n\n// Heading mixins for use within components\n// These match heading utilities in utilities/typography\n@mixin h1 {\n  // stylelint-disable-next-line primer/typography\n  font-size: var(--h1-size, $h1-size);\n  // stylelint-disable-next-line primer/typography\n  font-weight: $font-weight-bold;\n}\n\n@mixin h2 {\n  // stylelint-disable-next-line primer/typography\n  font-size: var(--h2-size, $h2-size);\n  // stylelint-disable-next-line primer/typography\n  font-weight: $font-weight-bold;\n}\n\n@mixin h3 {\n  // stylelint-disable-next-line primer/typography\n  font-size: var(--h3-size, $h3-size);\n  // stylelint-disable-next-line primer/typography\n  font-weight: $font-weight-bold;\n}\n\n@mixin h4 {\n  // stylelint-disable-next-line primer/typography\n  font-size: var(--h4-size, $h4-size);\n  // stylelint-disable-next-line primer/typography\n  font-weight: $font-weight-bold;\n}\n\n@mixin h5 {\n  // stylelint-disable-next-line primer/typography\n  font-size: var(--h5-size, $h5-size);\n  // stylelint-disable-next-line primer/typography\n  font-weight: $font-weight-bold;\n}\n\n@mixin h6 {\n  // stylelint-disable-next-line primer/typography\n  font-size: var(--h6-size, $h6-size);\n  // stylelint-disable-next-line primer/typography\n  font-weight: $font-weight-bold;\n}\n\n// Responsive heading mixins\n// There are no responsive mixins for h4-h6 because they are small\n// and don't need to be smaller on mobile.\n@mixin f1-responsive {\n  // stylelint-disable-next-line primer/typography\n  font-size: var(--h1-size-mobile, $h1-size-mobile);\n\n  // 32px on desktop\n  @include breakpoint(md) {\n    // stylelint-disable-next-line primer/typography\n    font-size: var(--h1-size, $h1-size);\n  }\n}\n\n@mixin f2-responsive {\n  // stylelint-disable-next-line primer/typography\n  font-size: var(--h2-size-mobile, $h2-size-mobile);\n\n  // 24px on desktop\n  @include breakpoint(md) {\n    // stylelint-disable-next-line primer/typography\n    font-size: var(--h2-size, $h2-size);\n  }\n}\n\n@mixin f3-responsive {\n  // stylelint-disable-next-line primer/typography\n  font-size: var(--h3-size-mobile, $h3-size-mobile);\n\n  // 20px on desktop\n  @include breakpoint(md) {\n    // stylelint-disable-next-line primer/typography\n    font-size: var(--h3-size, $h3-size);\n  }\n}\n\n// These use the mixins from above for responsive heading sizes.\n// The following mixins can be used where it's convenient or necessary to\n// couple the responsive font-size with the font-weight.\n@mixin h1-responsive {\n  @include f1-responsive;\n\n  // stylelint-disable-next-line primer/typography\n  font-weight: $font-weight-bold;\n}\n\n@mixin h2-responsive {\n  @include f2-responsive;\n\n  // stylelint-disable-next-line primer/typography\n  font-weight: $font-weight-bold;\n}\n\n@mixin h3-responsive {\n  @include f3-responsive;\n\n  // stylelint-disable-next-line primer/typography\n  font-weight: $font-weight-bold;\n}\n"
  },
  {
    "path": "src/support/variables/layout.scss",
    "content": "// Layout variables\n\n// these are values for the display CSS property\n$display-values: (\n  block,\n  flex,\n  inline,\n  inline-block,\n  inline-flex,\n  none,\n  table,\n  table-cell) !default;\n\n// maps edges to respective corners for border-radius\n$edges: (\n  top: (top-left, top-right),\n  right: (top-right, bottom-right),\n  bottom: (bottom-right, bottom-left),\n  left: (bottom-left, top-left)) !default;\n\n// These are our margin and padding utility spacers. The default step size we\n// use is 8px. This gives us a key of:\n//    0 => 0px\n//    1 => 4px\n//    2 => 8px\n//    3 => 16px\n//    4 => 24px\n//    5 => 32px\n//    6 => 40px\n$spacer: 8px !default;\n\n// Our spacing scale\n$spacer-0: 0 !default; // 0\n$spacer-1: $spacer * 0.5 !default; // 4px\n$spacer-2: $spacer !default; // 8px\n$spacer-3: $spacer * 2 !default; // 16px\n$spacer-4: $spacer * 3 !default; // 24px\n$spacer-5: $spacer * 4 !default; // 32px\n$spacer-6: $spacer * 5 !default; // 40px\n\n// The list of spacer values\n$spacers: (\n  $spacer-0,\n  $spacer-1,\n  $spacer-2,\n  $spacer-3,\n  $spacer-4,\n  $spacer-5,\n  $spacer-6,\n) !default;\n\n// And the map of spacers, for easier looping:\n// @each $scale, $length in $spacer-map { ... }\n$spacer-map: (\n  0: $spacer-0,\n  1: $spacer-1,\n  2: $spacer-2,\n  3: $spacer-3,\n  4: $spacer-4,\n  5: $spacer-5,\n  6: $spacer-6,\n) !default;\n\n// Increases the core spacing scale first by 8px for $spacer-7, then by 16px\n// increments from $spacer-8 to $spacer-12, i.e. after 40px, we have 48, 64,\n// 80, 96, etc.\n$spacer-7: $spacer * 6 !default; // 48px\n$spacer-8: $spacer * 8 !default; // 64px\n$spacer-9: $spacer * 10 !default; // 80px\n$spacer-10: $spacer * 12 !default; // 96px\n$spacer-11: $spacer * 14 !default; // 112px\n$spacer-12: $spacer * 16 !default; // 128px\n\n$spacers-large: (\n  7: $spacer-7,\n  8: $spacer-8,\n  9: $spacer-9,\n  10: $spacer-10,\n  11: $spacer-11,\n  12: $spacer-12,\n) !default;\n\n$spacer-map-extended: map-merge(\n  (0: 0,\n  1: $spacer-1,\n  2: $spacer-2,\n  3: $spacer-3,\n  4: $spacer-4,\n  5: $spacer-5,\n  6: $spacer-6,\n),\n$spacers-large,\n) !default;\n\n// Em spacer variables\n$em-spacer-1: 0.0625em !default; // 1/16\n$em-spacer-2: 0.125em !default; // 1/8\n$em-spacer-3: 0.25em !default; // 1/4\n$em-spacer-4: 0.375em !default; // 3/8\n$em-spacer-5: 0.5em !default; // 1/2\n$em-spacer-6: 0.75em !default; // 3/4\n\n// Size scale\n// Used for buttons, inputs, labels, avatars etc.\n$size: 16px !default;\n\n$size-0: 0 !default;\n$size-1: $size !default; // 16px\n$size-2: $size-1 + 4px !default; // 20px\n$size-3: $size-2 + 4px !default; // 24px\n$size-4: $size-3 + 4px !default; // 28px\n$size-5: $size-4 + 4px !default; // 32px\n$size-6: $size-5 + 8px !default; // 40px\n$size-7: $size-6 + 8px !default; // 48px\n$size-8: $size-7 + 16px !default; // 64px\n\n// Fixed-width container variables\n$container-width: 980px !default;\n$grid-gutter: 10px !default;\n\n// Breakpoint widths\n$width-xs: 0 !default;\n// Small screen / phone\n$width-sm: 544px !default;\n// Medium screen / tablet\n$width-md: 768px !default;\n// Large screen / desktop (980 + (16 * 2)) <= container + gutters\n$width-lg: 1012px !default;\n// Extra large screen / wide desktop\n$width-xl: 1280px !default;\n\n// Responsive container widths\n$container-sm: $width-sm !default;\n$container-md: $width-md !default;\n$container-lg: $width-lg !default;\n$container-xl: $width-xl !default;\n\n// Breakpoints in the form (name: length)\n$breakpoints: (\n  sm: $width-sm,\n  md: $width-md,\n  lg: $width-lg,\n  xl: $width-xl) !default;\n\n// Viewport ranges\n// Soon to be provided by Primer Primitives directly\n// https://github.com/primer/primitives/blob/main/tokens/functional/size/viewport.json\n$viewport-narrow: 'max-width: #{$width-md - 0.02px}' !default;\n$viewport-regular: 'min-width: #{$width-md}' !default;\n$viewport-wide: 'min-width: 1400px' !default;\n\n// This map in the form (breakpoint: variant) is used to iterate over\n// breakpoints and create both responsive and non-responsive classes in one\n// loop:\n$responsive-variants: (\n  '': '',\n  sm: '-sm',\n  md: '-md',\n  lg: '-lg',\n  xl: '-xl',\n) !default;\n\n// responsive utility position values\n$responsive-positions: (\n  static,\n  relative,\n  absolute,\n  fixed,\n  sticky) !default;\n\n$sidebar-width: (\n  sm: 220px,\n  md: 256px,\n  lg: 296px) !default;\n\n$sidebar-narrow-width: (\n  md: 240px,\n  lg: 256px) !default;\n\n$sidebar-wide-width: (\n  lg: 320px,\n  xl: 336px) !default;\n\n$gutter: (\n  md: $spacer-3,\n  lg: $spacer-4,\n  xl: $spacer-5) !default;\n\n$gutter-condensed: (\n  md: $spacer-3,\n  lg: $spacer-3,\n  xl: $spacer-4) !default;\n\n$gutter-spacious: (\n  md: $spacer-4,\n  lg: $spacer-5,\n  xl: $spacer-6) !default;\n\n// rem unit support\n\n$spacer-map-rem: (\n  0: 0,\n  1: var(--base-size-4, 4px),\n  2: var(--base-size-8, 8px),\n  3: var(--base-size-16, 16px),\n  4: var(--base-size-24, 24px),\n  5: var(--base-size-32, 32px),\n  6: var(--base-size-40, 40px),\n) !default;\n\n$spacers-large-rem: (\n  7: var(--base-size-48, 48px),\n  8: var(--base-size-64, 64px),\n  9: var(--base-size-80, 80px),\n  10: var(--base-size-96, 96px),\n  11: var(--base-size-112, 112px),\n  12: var(--base-size-128, 128px),\n) !default;\n\n$spacer-map-rem-extended: map-merge(\n  (0: 0,\n  1: var(--base-size-4, 4px),\n  2: var(--base-size-8, 8px),\n  3: var(--base-size-16, 16px),\n  4: var(--base-size-24, 24px),\n  5: var(--base-size-32, 32px),\n  6: var(--base-size-40, 40px),\n),\n$spacers-large-rem,\n) !default;\n"
  },
  {
    "path": "src/support/variables/misc.scss",
    "content": "// Miscellaneous variables\n\n// Border\n$border-width: 1px !default;\n$border-style: solid !default;\n$border: $border-width $border-style var(--borderColor-default, var(--color-border-default)) !default;\n$border-rem: var(--borderWidth-thin, 1px) solid var(--borderColor-default, var(--color-border-default)) !default;\n\n// Border Radius\n$border-radius-1:  4px !default;\n$border-radius-2:  6px !default;\n$border-radius-3:  8px !default;\n$border-radius: $border-radius-2 !default;\n\n// Tooltips\n$tooltip-max-width: 250px !default;\n$tooltip-delay: 0.4s !default;\n$tooltip-duration: 0.1s !default;\n"
  },
  {
    "path": "src/support/variables/typography.scss",
    "content": "// Typography variables\n\n// Heading sizes - mobile\n// h4-h6 remain the same size on both mobile & desktop\n$h00-size-mobile: 40px !default;\n$h0-size-mobile: 32px !default;\n$h1-size-mobile: 26px !default;\n$h2-size-mobile: 22px !default;\n$h3-size-mobile: 18px !default;\n\n// Heading sizes - desktop\n$h00-size: 48px !default;\n$h0-size: 40px !default;\n$h1-size: 32px !default;\n$h2-size: 24px !default;\n$h3-size: 20px !default;\n$h4-size: 16px !default;\n$h5-size: 14px !default;\n$h6-size: 12px !default;\n\n$font-size-small: 12px !default;\n\n// Font weights\n$font-weight-bold: var(--base-text-weight-semibold, 600) !default;\n$font-weight-semibold: var(--base-text-weight-medium, 500) !default;\n$font-weight-normal: var(--base-text-weight-normal, 400) !default;\n$font-weight-light: var(--base-text-weight-light, 300) !default;\n\n// Line heights\n$lh-condensed-ultra: 1 !default;\n$lh-condensed: 1.25 !default;\n$lh-default: 1.5 !default;\n\n// Font stacks\n$body-font: var(--fontStack-sansSerif, -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Noto Sans', Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji') !default;\n\n// Monospace font stack\n// Note: SFMono-Regular needs to come before SF Mono to fix an older version of the font in Chrome\n$mono-font: var(--fontStack-monospace, ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace) !default;\n\n// The base body size\n$body-font-size: 14px !default;\n$body-line-height: $lh-default !default;\n"
  },
  {
    "path": "src/table-object/index.scss",
    "content": "@import './table-object.scss';\n"
  },
  {
    "path": "src/table-object/table-object.scss",
    "content": "// Deprecated\n// TODO: Replace TableObject with flexbox or a new Table component\n\n// TableObject is a module for creating dynamically resizable elements that\n// always sit on the same horizontal line (e.g., they never wrap). Using\n// tables means it's cross browser friendly.\n\n.TableObject {\n  display: table;\n}\n\n// Place this on every \"cell\"\n.TableObject-item {\n  display: table-cell;\n  width: 1%;\n  white-space: nowrap;\n  vertical-align: middle;\n}\n\n// Place this on the largest or most important \"cell\"\n.TableObject-item--primary {\n  width: 99%;\n}\n"
  },
  {
    "path": "src/toasts/README.md",
    "content": "---\nbundle: \"toasts\"\ngenerated: true\n---\n\n# Primer CSS: `toasts` bundle\n\n## Usage\n\nPrimer CSS source files are written in [SCSS]. To include this Primer CSS module in your own build, ensure that your `node_modules` directory is listed in your Sass include paths, then import it with:\n\n```scss\n@import \"@primer/css/toasts/index.scss\";\n```\n\n## Build\n\nThe `@primer/css` npm package includes a standalone CSS build of this module in `dist/toasts.css`.\n\n## License\n\n[MIT](https://github.com/primer/css/blob/main/LICENSE) &copy; [GitHub](https://github.com/)\n\n\n[scss]: https://sass-lang.com/documentation/syntax#scss\n"
  },
  {
    "path": "src/toasts/index.scss",
    "content": "@import '../support/index.scss';\n@import './toasts.scss';\n"
  },
  {
    "path": "src/toasts/toasts.scss",
    "content": "// Toast\n\n.Toast {\n  display: flex;\n  margin: var(--base-size-8);\n  color: var(--fgColor-default, var(--color-fg-default));\n  background-color: var(--bgColor-default, var(--color-canvas-default));\n  // stylelint-disable-next-line primer/borders\n  border-radius: $border-radius;\n  box-shadow: inset 0 0 0 1px var(--borderColor-default, var(--color-border-default)), var(--shadow-floating-legacy, var(--color-overlay-shadow));\n\n  @include breakpoint(sm) {\n    width: max-content;\n    max-width: 450px;\n    margin: var(--base-size-16);\n  }\n}\n\n.Toast-icon {\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  width: calc(var(--base-size-16) * 3);\n  flex-shrink: 0;\n  color: var(--fgColor-onEmphasis, var(--color-fg-on-emphasis));\n  background-color: var(--bgColor-accent-emphasis, var(--color-accent-emphasis));\n  // stylelint-disable-next-line primer/borders, primer/colors\n  border: $border-width $border-style transparent;\n  border-right: 0;\n  border-top-left-radius: inherit;\n  border-bottom-left-radius: inherit;\n}\n\n.Toast-content {\n  padding: var(--base-size-16);\n}\n\n.Toast-dismissButton {\n  max-height: 54px; // keeps button aligned to the top\n  padding: var(--base-size-16);\n  color: inherit;\n  background-color: transparent;\n  border: 0;\n\n  &:hover {\n    opacity: 0.7;\n  }\n\n  &:active {\n    opacity: 0.5;\n  }\n}\n\n// Modifier\n\n.Toast--loading {\n  color: var(--fgColor-default, var(--color-fg-default));\n  box-shadow: inset 0 0 0 1px var(--borderColor-default, var(--color-border-default)), var(--shadow-floating-legacy, var(--color-overlay-shadow));\n\n  .Toast-icon {\n    background-color: var(--bgColor-neutral-emphasis, var(--color-neutral-emphasis));\n  }\n}\n\n.Toast--error {\n  color: var(--fgColor-default, var(--color-fg-default));\n  box-shadow: inset 0 0 0 1px var(--borderColor-default, var(--color-border-default)), var(--shadow-floating-legacy, var(--color-overlay-shadow));\n\n  .Toast-icon {\n    background-color: var(--bgColor-danger-emphasis, var(--color-danger-emphasis));\n  }\n}\n\n.Toast--warning {\n  color: var(--fgColor-default, var(--color-fg-default));\n  box-shadow: inset 0 0 0 1px var(--borderColor-default, var(--color-border-default)), var(--shadow-floating-legacy, var(--color-overlay-shadow));\n\n  .Toast-icon {\n    background-color: var(--bgColor-attention-emphasis, var(--color-attention-emphasis));\n  }\n}\n\n.Toast--success {\n  color: var(--fgColor-default, var(--color-fg-default));\n  box-shadow: inset 0 0 0 1px var(--borderColor-default, var(--color-border-default)), var(--shadow-floating-legacy, var(--color-overlay-shadow));\n\n  .Toast-icon {\n    background-color: var(--bgColor-success-emphasis, var(--color-success-emphasis));\n  }\n}\n\n// Animations\n\n.Toast--animateIn {\n  animation: Toast--animateIn 0.18s cubic-bezier(0.22, 0.61, 0.36, 1) backwards;\n}\n\n@keyframes Toast--animateIn {\n  0% {\n    opacity: 0;\n    transform: translateY(100%);\n  }\n}\n\n.Toast--animateOut {\n  animation: Toast--animateOut 0.18s cubic-bezier(0.55, 0.06, 0.68, 0.19) forwards;\n}\n\n@keyframes Toast--animateOut {\n  100% {\n    pointer-events: none;\n    opacity: 0;\n    transform: translateY(100%);\n  }\n}\n\n.Toast--spinner {\n  animation: Toast--spinner 1000ms linear infinite;\n}\n\n@keyframes Toast--spinner {\n  from {\n    transform: rotate(0deg);\n  }\n\n  to {\n    transform: rotate(360deg);\n  }\n}\n"
  },
  {
    "path": "src/tooltips/README.md",
    "content": "---\nbundle: \"tooltips\"\ngenerated: true\n---\n\n# Primer CSS: `tooltips` bundle\n\n## Usage\n\nPrimer CSS source files are written in [SCSS]. To include this Primer CSS module in your own build, ensure that your `node_modules` directory is listed in your Sass include paths, then import it with:\n\n```scss\n@import \"@primer/css/tooltips/index.scss\";\n```\n\n## Build\n\nThe `@primer/css` npm package includes a standalone CSS build of this module in `dist/tooltips.css`.\n\n## License\n\n[MIT](https://github.com/primer/css/blob/main/LICENSE) &copy; [GitHub](https://github.com/)\n\n\n[scss]: https://sass-lang.com/documentation/syntax#scss\n"
  },
  {
    "path": "src/tooltips/index.scss",
    "content": "@import '../support/index.scss';\n@import './tooltips.scss';\n"
  },
  {
    "path": "src/tooltips/tooltips.scss",
    "content": "/* stylelint-disable primer/spacing */\n\n.tooltipped {\n  position: relative;\n}\n\n// This is the tooltip bubble\n.tooltipped::after {\n  position: absolute;\n  z-index: 1000000;\n  display: none;\n  padding: var(--overlay-paddingBlock-condensed, 0.25rem) var(--overlay-padding-condensed, 0.5rem);\n  font: var(--text-body-shorthand-small, normal normal 11px/1.5 $body-font);\n  -webkit-font-smoothing: subpixel-antialiased;\n  color: var(--fgColor-onEmphasis, var(--color-fg-on-emphasis));\n  text-align: center;\n  text-decoration: none;\n  text-shadow: none;\n  text-transform: none;\n  letter-spacing: normal;\n  overflow-wrap: break-word;\n  white-space: pre;\n  pointer-events: none;\n  content: attr(aria-label);\n  background: var(--bgColor-emphasis, var(--color-neutral-emphasis-plus));\n  border-radius: var(--borderRadius-medium);\n  opacity: 0;\n}\n\n// delay animation for tooltip\n@keyframes tooltip-appear {\n  from {\n    opacity: 0;\n  }\n\n  to {\n    opacity: 1;\n  }\n}\n\n// This will indicate when we'll activate the tooltip\n.tooltipped:hover,\n.tooltipped:active,\n.tooltipped:focus {\n  &::before,\n  &::after {\n    display: inline-block;\n    text-decoration: none;\n    animation-name: tooltip-appear;\n    animation-duration: $tooltip-duration;\n    animation-fill-mode: forwards;\n    animation-timing-function: ease-in;\n  }\n}\n\n.tooltipped-no-delay:hover,\n.tooltipped-no-delay:active,\n.tooltipped-no-delay:focus {\n  &::before,\n  &::after {\n    animation-delay: 0s;\n  }\n}\n\n.tooltipped-multiline:hover,\n.tooltipped-multiline:active,\n.tooltipped-multiline:focus {\n  &::after {\n    display: table-cell;\n  }\n}\n\n// Tooltipped south\n.tooltipped-s,\n.tooltipped-se,\n.tooltipped-sw {\n  &::after {\n    top: 100%;\n    right: 50%;\n    margin-top: 6px;\n  }\n}\n\n.tooltipped-se {\n  &::after {\n    right: auto;\n    left: 50%;\n    margin-left: calc(var(--base-size-16) * -1);\n  }\n}\n\n.tooltipped-sw::after {\n  margin-right: calc(var(--base-size-16) * -1);\n}\n\n// Tooltips above the object\n.tooltipped-n,\n.tooltipped-ne,\n.tooltipped-nw {\n  &::after {\n    right: 50%;\n    bottom: 100%;\n    margin-bottom: 6px;\n  }\n}\n\n.tooltipped-ne {\n  &::after {\n    right: auto;\n    left: 50%;\n    margin-left: calc(var(--base-size-16) * -1);\n  }\n}\n\n.tooltipped-nw::after {\n  margin-right: calc(var(--base-size-16) * -1);\n}\n\n// Move the tooltip body to the center of the object.\n.tooltipped-s::after,\n.tooltipped-n::after {\n  transform: translateX(50%);\n}\n\n// Tooltipped to the left\n.tooltipped-w {\n  &::after {\n    right: 100%;\n    bottom: 50%;\n    margin-right: 6px;\n    transform: translateY(50%);\n  }\n}\n\n// tooltipped to the right\n.tooltipped-e {\n  &::after {\n    bottom: 50%;\n    left: 100%;\n    margin-left: 6px;\n    transform: translateY(50%);\n  }\n}\n\n// Tooltip align right and left\n.tooltipped-align-right-1,\n.tooltipped-align-right-2 {\n  &::after {\n    right: 0;\n    margin-right: 0;\n  }\n}\n\n.tooltipped-align-right-1 {\n  &::before {\n    right: 10px;\n  }\n}\n\n.tooltipped-align-right-2 {\n  &::before {\n    right: 15px;\n  }\n}\n\n.tooltipped-align-left-1,\n.tooltipped-align-left-2 {\n  &::after {\n    left: 0;\n    margin-left: 0;\n  }\n}\n\n.tooltipped-align-left-1 {\n  &::before {\n    left: 5px;\n  }\n}\n\n.tooltipped-align-left-2 {\n  &::before {\n    left: 10px;\n  }\n}\n\n// Multiline tooltips\n//\n// `.tooltipped-multiline` Add this class when you have long content.\n// The downside is you cannot preformat the text with newlines and `[w,e]`\n// are always `$tooltip-max-width` wide.\n.tooltipped-multiline {\n  &::after {\n    width: max-content;\n    max-width: var(--overlay-width-small, 20rem);\n    overflow-wrap: break-word;\n    white-space: pre-line;\n    // stylelint-disable-next-line primer/borders\n    border-collapse: separate;\n  }\n\n  &.tooltipped-s::after,\n  &.tooltipped-n::after {\n    right: auto;\n    left: 50%;\n    transform: translateX(-50%);\n  }\n\n  &.tooltipped-w::after,\n  &.tooltipped-e::after {\n    right: 100%;\n  }\n}\n\n// Sticky tooltips\n//\n// Always show the tooltip.\n.tooltipped-sticky {\n  &::before,\n  &::after {\n    display: inline-block;\n  }\n\n  &.tooltipped-multiline {\n    &::after {\n      display: table-cell;\n    }\n  }\n}\n"
  },
  {
    "path": "src/utilities/README.md",
    "content": "---\nbundle: \"utilities\"\ngenerated: true\n---\n\n# Primer CSS: `utilities` bundle\n\n## Usage\n\nPrimer CSS source files are written in [SCSS]. To include this Primer CSS module in your own build, ensure that your `node_modules` directory is listed in your Sass include paths, then import it with:\n\n```scss\n@import \"@primer/css/utilities/index.scss\";\n```\n\n## Build\n\nThe `@primer/css` npm package includes a standalone CSS build of this module in `dist/utilities.css`.\n\n## License\n\n[MIT](https://github.com/primer/css/blob/main/LICENSE) &copy; [GitHub](https://github.com/)\n\n\n[scss]: https://sass-lang.com/documentation/syntax#scss\n"
  },
  {
    "path": "src/utilities/animations.scss",
    "content": "// This file contains reusable animations for github.\n\n/* Fade in an element */\n.anim-fade-in {\n  animation-name: fade-in;\n  animation-duration: 1s;\n  animation-timing-function: ease-in-out;\n\n  &.fast {\n    animation-duration: 300ms;\n  }\n}\n\n@keyframes fade-in {\n  0% {\n    opacity: 0;\n  }\n\n  100% {\n    opacity: 1;\n  }\n}\n\n/* Fade out an element */\n.anim-fade-out {\n  animation-name: fade-out;\n  animation-duration: 1s;\n  animation-fill-mode: forwards;\n  animation-timing-function: ease-out;\n\n  &.fast {\n    animation-duration: 0.3s;\n  }\n}\n\n@keyframes fade-out {\n  0% {\n    opacity: 1;\n  }\n\n  100% {\n    opacity: 0;\n  }\n}\n\n/* Fade in and slide up an element */\n.anim-fade-up {\n  opacity: 0;\n  animation-name: fade-up;\n  animation-duration: 0.3s;\n  animation-fill-mode: forwards;\n  animation-timing-function: ease-out;\n  animation-delay: 1s;\n}\n\n@keyframes fade-up {\n  0% {\n    opacity: 0.8;\n    transform: translateY(100%);\n  }\n\n  100% {\n    opacity: 1;\n    transform: translateY(0);\n  }\n}\n\n/* Fade an element out and slide down */\n.anim-fade-down {\n  animation-name: fade-down;\n  animation-duration: 0.3s;\n  animation-fill-mode: forwards;\n  animation-timing-function: ease-in;\n}\n\n@keyframes fade-down {\n  0% {\n    opacity: 1;\n    transform: translateY(0);\n  }\n\n  100% {\n    opacity: 0.5;\n    transform: translateY(100%);\n  }\n}\n\n/* Grow an element width from 0 to 100% */\n.anim-grow-x {\n  width: 0%;\n  animation-name: grow-x;\n  animation-duration: 0.3s;\n  animation-fill-mode: forwards;\n  animation-timing-function: ease;\n  animation-delay: 0.5s;\n}\n\n@keyframes grow-x {\n  to { width: 100%; }\n}\n\n/* Shrink an element from 100% to 0% */\n.anim-shrink-x {\n  animation-name: shrink-x;\n  animation-duration: 0.3s;\n  animation-fill-mode: forwards;\n  animation-timing-function: ease-in-out;\n  animation-delay: 0.5s;\n}\n\n@keyframes shrink-x {\n  to { width: 0%; }\n}\n\n/* Fade in an element and scale it fast */\n.anim-scale-in {\n  animation-name: scale-in;\n  animation-duration: 0.15s;\n  animation-timing-function: cubic-bezier(0.2, 0, 0.13, 1.5);\n}\n\n@keyframes scale-in {\n  0% {\n    opacity: 0;\n    transform: scale(0.5);\n  }\n\n  100% {\n    opacity: 1;\n    transform: scale(1);\n  }\n}\n\n/* Pulse an element's opacity */\n.anim-pulse {\n  animation-name: pulse;\n  animation-duration: 2s;\n  animation-timing-function: linear;\n  animation-iteration-count: infinite;\n}\n\n@keyframes pulse {\n  0% {\n    opacity: 0.3;\n  }\n\n  10% {\n    opacity: 1;\n  }\n\n  100% {\n    opacity: 0.3;\n  }\n}\n\n/* Pulse in an element */\n.anim-pulse-in {\n  animation-name: pulse-in;\n  animation-duration: 0.5s;\n}\n\n@keyframes pulse-in {\n  0% {\n    transform: scale3d(1, 1, 1);\n  }\n\n  50% {\n    transform: scale3d(1.1, 1.1, 1.1);\n  }\n\n  100% {\n    transform: scale3d(1, 1, 1);\n  }\n}\n\n/* Increase scale of an element on hover */\n.hover-grow,\n.anim-hover-grow {\n  transition: transform 0.3s;\n  backface-visibility: hidden;\n\n  &:hover {\n    transform: scale(1.025);\n  }\n}\n\n/* Rotate an element 360 degrees over and over, used for spinners */\n.anim-rotate {\n  animation: rotate-keyframes 1s linear infinite;\n}\n\n@keyframes rotate-keyframes {\n  100% {\n    transform: rotate(360deg);\n  }\n}\n"
  },
  {
    "path": "src/utilities/borders.scss",
    "content": "// Core border utilities\n// stylelint-disable primer/borders\n\n/* Add a gray border to the left and right */\n.border-x {\n  // stylelint-disable-next-line primer/colors\n  border-right: $border-rem !important;\n  // stylelint-disable-next-line primer/colors\n  border-left: $border-rem !important;\n}\n\n/* Add a gray border to the top and bottom */\n.border-y {\n  // stylelint-disable-next-line primer/colors\n  border-top: $border-rem !important;\n  // stylelint-disable-next-line primer/colors\n  border-bottom: $border-rem !important;\n}\n\n/* Responsive gray borders */\n@each $breakpoint, $variant in $responsive-variants {\n  @include breakpoint($breakpoint) {\n    /* Add a gray border on all sides at/above this breakpoint */\n    // stylelint-disable-next-line primer/colors\n    .border#{$variant}        { border: $border-rem !important; }\n    .border#{$variant}-0      { border: 0 !important; }\n\n    // stylelint-disable-next-line primer/colors\n    .border#{$variant}-top    { border-top: $border-rem !important; }\n    // stylelint-disable-next-line primer/colors\n    .border#{$variant}-right  { border-right: $border-rem !important; }\n    // stylelint-disable-next-line primer/colors\n    .border#{$variant}-bottom { border-bottom: $border-rem !important; }\n    // stylelint-disable-next-line primer/colors\n    .border#{$variant}-left   { border-left: $border-rem !important; }\n\n    .border#{$variant}-top-0    { border-top: 0 !important; }\n    .border#{$variant}-right-0  { border-right: 0 !important; }\n    .border#{$variant}-bottom-0 { border-bottom: 0 !important; }\n    .border#{$variant}-left-0   { border-left: 0 !important; }\n\n    // Rounded corners\n    .rounded#{$variant}   { border-radius: var(--borderRadius-medium, $border-radius-2) !important; }\n    .rounded#{$variant}-0 { border-radius: 0 !important; }\n    .rounded#{$variant}-1 { border-radius: var(--borderRadius-small, $border-radius-1) !important; }\n    .rounded#{$variant}-2 { border-radius: var(--borderRadius-medium, $border-radius-2) !important; }\n    .rounded#{$variant}-3 { border-radius: var(--borderRadius-large, $border-radius-3) !important; }\n\n    @each $edge, $corners in $edges {\n      .rounded#{$variant}-#{$edge}-0 {\n        @each $corner in $corners {\n          border-#{$corner}-radius: 0 !important;\n        }\n      }\n\n      .rounded#{$variant}-#{$edge}-1 {\n        @each $corner in $corners {\n          border-#{$corner}-radius: var(--borderRadius-small, $border-radius-1) !important;\n        }\n      }\n\n      .rounded#{$variant}-#{$edge}-2 {\n        @each $corner in $corners {\n          border-#{$corner}-radius: var(--borderRadius-medium, $border-radius-2) !important;\n        }\n      }\n\n      .rounded#{$variant}-#{$edge}-3 {\n        @each $corner in $corners {\n          border-#{$corner}-radius: var(--borderRadius-medium, $border-radius-3) !important;\n        }\n      }\n    }\n  }\n}\n\n/* Add a 50% border-radius to make something into a circle */\n.circle { border-radius: var(--borderRadius-full, 50%) !important; }\n\n/* Change the border style to dashed, in conjunction with another utility */\n.border-dashed {\n  border-style: dashed !important;\n}\n"
  },
  {
    "path": "src/utilities/box-shadow.scss",
    "content": "// Box shadow utilities\n\n// Box shadows\n\n.color-shadow-small {\n  box-shadow: var(--shadow-resting-small, var(--color-shadow-small)) !important;\n}\n\n.color-shadow-medium {\n  box-shadow: var(--shadow-resting-medium, var(--color-shadow-medium)) !important;\n}\n\n.color-shadow-large {\n  box-shadow: var(--shadow-floating-large, var(--color-shadow-large)) !important;\n}\n\n.color-shadow-extra-large {\n  box-shadow: var(--shadow-floating-xlarge, var(--color-shadow-extra-large)) !important;\n}\n\n.shadow-floating-small {\n  box-shadow: var(--shadow-floating-small, var(--color-overlay-shadow)) !important;\n}\n\n// Turn off box shadow\n\n.box-shadow-none {\n  box-shadow: none !important;\n}\n"
  },
  {
    "path": "src/utilities/colors.scss",
    "content": "\n// Foreground\n\n.color-fg-default, .fgColor-default     { color: var(--fgColor-default, var(--color-fg-default)) !important; }\n.color-fg-muted, .fgColor-muted      { color: var(--fgColor-muted, var(--color-fg-muted)) !important; }\n.color-fg-subtle      { color: var(--fgColor-muted, var(--color-fg-subtle)) !important; }\n\n.color-fg-accent, .fgColor-accent    { color: var(--fgColor-accent, var(--color-accent-fg)) !important; }\n.color-fg-success, .fgColor-success   { color: var(--fgColor-success, var(--color-success-fg)) !important; }\n.color-fg-attention, .fgColor-attention { color: var(--fgColor-attention, var(--color-attention-fg)) !important; }\n.color-fg-severe, .fgColor-severe    { color: var(--fgColor-severe, var(--color-severe-fg)) !important; }\n.color-fg-danger, .fgColor-danger    { color: var(--fgColor-danger, var(--color-danger-fg)) !important; }\n.color-fg-open, .fgColor-open      { color: var(--fgColor-open, var(--color-open-fg)) !important; }\n.color-fg-closed, .fgColor-closed    { color: var(--fgColor-closed, var(--color-closed-fg)) !important; }\n.color-fg-done, .fgColor-done      { color: var(--fgColor-done, var(--color-done-fg)) !important; }\n.color-fg-sponsors, .fgColor-sponsors  { color: var(--fgColor-sponsors, var(--color-sponsors-fg)) !important; }\n\n.color-fg-on-emphasis, .fgColor-onEmphasis { color: var(--fgColor-onEmphasis, var(--color-fg-on-emphasis)) !important; }\n\n// Background\n\n.color-bg-default, .bgColor-default  { background-color: var(--bgColor-default, var(--color-canvas-default)) !important; }\n.color-bg-overlay  { background-color: var(--overlay-bgColor, var(--color-canvas-overlay)) !important; }\n.color-bg-inset, .bgColor-inset    { background-color: var(--bgColor-inset, var(--color-canvas-inset)) !important; }\n.color-bg-subtle, .bgColor-muted   { background-color: var(--bgColor-muted, var(--color-canvas-subtle)) !important; }\n.color-bg-emphasis, .bgColor-emphasis { background-color: var(--bgColor-emphasis, var(--color-neutral-emphasis-plus)) !important; }\n\n.color-bg-accent, .bgColor-accent-muted          { background-color: var(--bgColor-accent-muted, var(--color-accent-subtle)) !important; }\n.color-bg-accent-emphasis, .bgColor-accent-emphasis { background-color: var(--bgColor-accent-emphasis, var(--color-accent-emphasis)) !important; }\n\n.color-bg-success, .bgColor-success-muted          { background-color: var(--bgColor-success-muted, var(--color-success-subtle)) !important; }\n.color-bg-success-emphasis, .bgColor-success-emphasis { background-color: var(--bgColor-success-emphasis, var(--color-success-emphasis)) !important; }\n\n.color-bg-attention, .bgColor-attention-muted          { background-color: var(--bgColor-attention-muted, var(--color-attention-subtle)) !important; }\n.color-bg-attention-emphasis, .bgColor-attention-emphasis { background-color: var(--bgColor-attention-emphasis, var(--color-attention-emphasis)) !important; }\n\n.color-bg-severe, .bgColor-severe-muted          { background-color: var(--bgColor-severe-muted, var(--color-severe-subtle)) !important; }\n.color-bg-severe-emphasis, .bgColor-severe-emphasis { background-color: var(--bgColor-severe-emphasis, var(--color-severe-emphasis)) !important; }\n\n.color-bg-danger, .bgColor-danger-muted          { background-color: var(--bgColor-danger-muted, var(--color-danger-subtle)) !important; }\n.color-bg-danger-emphasis, .bgColor-danger-emphasis { background-color: var(--bgColor-danger-emphasis, var(--color-danger-emphasis)) !important; }\n\n.color-bg-open, .bgColor-open-muted          { background-color: var(--bgColor-open-muted, var(--color-open-subtle)) !important; }\n.color-bg-open-emphasis, .bgColor-open-emphasis { background-color: var(--bgColor-open-emphasis, var(--color-open-emphasis)) !important; }\n\n.color-bg-closed, .bgColor-closed-muted          { background-color: var(--bgColor-closed-muted, var(--color-closed-subtle)) !important; }\n.color-bg-closed-emphasis, .bgColor-closed-emphasis { background-color: var(--bgColor-closed-emphasis, var(--color-closed-emphasis)) !important; }\n\n.color-bg-done, .bgColor-done-muted          { background-color: var(--bgColor-done-muted, var(--color-done-subtle)) !important; }\n.color-bg-done-emphasis, .bgColor-done-emphasis { background-color: var(--bgColor-done-emphasis, var(--color-done-emphasis)) !important; }\n\n.color-bg-sponsors, .bgColor-sponsors-muted          { background-color: var(--bgColor-sponsors-muted, var(--color-sponsors-subtle)) !important; }\n.color-bg-sponsors-emphasis, .bgColor-sponsors-emphasis { background-color: var(--bgColor-sponsors-emphasis, var(--color-sponsors-emphasis)) !important; }\n\n.color-bg-transparent, .bgColor-transparent { background-color: transparent !important; }\n\n// Border\n\n.color-border-default, .borderColor-default { border-color: var(--borderColor-default, var(--color-border-default)) !important; }\n.color-border-muted, .borderColor-muted   { border-color: var(--borderColor-muted, var(--color-border-muted)) !important; }\n.color-border-subtle  { border-color: var(--borderColor-muted, var(--color-border-subtle)) !important; }\n\n.color-border-accent, .borderColor-accent-muted          { border-color: var(--borderColor-accent-muted, var(--color-accent-muted)) !important; }\n.color-border-accent-emphasis, .borderColor-accent-emphasis { border-color: var(--borderColor-accent-emphasis, var(--color-accent-emphasis)) !important; }\n\n.color-border-success, .borderColor-success-muted          { border-color: var(--borderColor-success-muted, var(--color-success-muted)) !important; }\n.color-border-success-emphasis, .borderColor-success-emphasis { border-color: var(--borderColor-success-emphasis, var(--color-success-emphasis)) !important; }\n\n.color-border-attention, .borderColor-attention-muted          { border-color: var(--borderColor-attention-muted, var(--color-attention-muted)) !important; }\n.color-border-attention-emphasis, .borderColor-attention-emphasis { border-color: var(--borderColor-attention-emphasis, var(--color-attention-emphasis)) !important; }\n\n.color-border-severe, .borderColor-severe-muted          { border-color: var(--borderColor-severe-muted, var(--color-severe-muted)) !important; }\n.color-border-severe-emphasis, .borderColor-severe-emphasis { border-color: var(--borderColor-severe-emphasis, var(--color-severe-emphasis)) !important; }\n\n.color-border-danger, .borderColor-danger-muted          { border-color: var(--borderColor-danger-muted, var(--color-danger-muted)) !important; }\n.color-border-danger-emphasis, .borderColor-danger-emphasis { border-color: var(--borderColor-danger-emphasis, var(--color-danger-emphasis)) !important; }\n\n.color-border-open, .borderColor-open-muted          { border-color: var(--borderColor-open-muted, var(--color-open-muted)) !important; }\n.color-border-open-emphasis, .borderColor-open-emphasis { border-color: var(--borderColor-open-emphasis, var(--color-open-emphasis)) !important; }\n\n.color-border-closed, .borderColor-closed-muted          { border-color: var(--borderColor-closed-muted, var(--color-closed-muted)) !important; }\n.color-border-closed-emphasis, .borderColor-closed-emphasis { border-color: var(--borderColor-closed-emphasis, var(--color-closed-emphasis)) !important; }\n\n.color-border-done, .borderColor-done-muted          { border-color: var(--borderColor-done-muted, var(--color-done-muted)) !important; }\n.color-border-done-emphasis, .borderColor-done-emphasis { border-color: var(--borderColor-done-emphasis, var(--color-done-emphasis)) !important; }\n\n.color-border-sponsors, .borderColor-sponsors-muted          { border-color: var(--borderColor-sponsors-muted, var(--color-sponsors-muted)) !important; }\n.color-border-sponsors-emphasis, .borderColor-sponsors-emphasis { border-color: var(--borderColor-sponsors-emphasis, var(--color-sponsors-emphasis)) !important; }\n\n// Misc\n\n.color-fg-inherit, .fgColor-inherit {\n  color: inherit !important;\n}\n"
  },
  {
    "path": "src/utilities/details.scss",
    "content": "// stylelint-disable selector-max-type, selector-max-specificity, max-nesting-depth, selector-no-qualifying-type\n\n.details-overlay[open] > summary::before {\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 80;\n  display: block;\n  cursor: default;\n  content: ' ';\n  background: transparent;\n}\n\n.details-overlay-dark[open] > summary::before {\n  z-index: 111;\n  background: var(--overlay-backdrop-bgColor, var(--color-primer-canvas-backdrop));\n}\n\n.details-reset {\n  // Remove marker added by the display: list-item browser default\n  > summary {\n    list-style: none;\n    transition: 80ms cubic-bezier(0.33, 1, 0.68, 1);\n    transition-property: color, background-color, box-shadow, border-color;\n    // fallback :focus state\n    &:focus {\n      @include focusOutline;\n\n      // remove fallback :focus if :focus-visible is supported\n      &:not(:focus-visible) {\n        outline: solid 1px transparent;\n      }\n    }\n\n    // default focus state\n    &:focus-visible {\n      @include focusOutline;\n    }\n\n    &.btn-primary {\n      // fallback :focus state\n      &:focus {\n        @include focusOutlineOnEmphasis;\n\n        // remove fallback :focus if :focus-visible is supported\n        &:not(:focus-visible) {\n          outline: solid 1px transparent;\n          box-shadow: none;\n        }\n      }\n\n      // default focus state\n      &:focus-visible {\n        @include focusOutlineOnEmphasis;\n      }\n    }\n  }\n  // Remove marker added by details polyfill\n  > summary::before {\n    display: none;\n  }\n  // Remove marker added by Chrome\n  > summary::-webkit-details-marker {\n    display: none;\n  }\n}\n\n.details-overlay > summary {\n  transition: 80ms cubic-bezier(0.33, 1, 0.68, 1);\n  transition-property: color, background-color, box-shadow, border-color;\n  // fallback :focus state\n  &:focus {\n    @include focusOutline;\n\n    // remove fallback :focus if :focus-visible is supported\n    &:not(:focus-visible) {\n      outline: solid 1px transparent;\n    }\n  }\n\n  // default focus state\n  &:focus-visible {\n    @include focusOutline;\n  }\n\n  &.btn-primary {\n    // fallback :focus state\n    &:focus {\n      @include focusOutlineOnEmphasis;\n\n      // remove fallback :focus if :focus-visible is supported\n      &:not(:focus-visible) {\n        outline: solid 1px transparent;\n        box-shadow: none;\n      }\n    }\n\n    // default focus state\n    &:focus-visible {\n      @include focusOutlineOnEmphasis;\n    }\n  }\n}\n"
  },
  {
    "path": "src/utilities/flexbox.scss",
    "content": "// Flex utility classes\n@each $breakpoint, $variant in $responsive-variants {\n  @include breakpoint($breakpoint) {\n    // Flexbox classes\n    // Container\n    .flex#{$variant}-row            { flex-direction: row !important; }\n    .flex#{$variant}-row-reverse    { flex-direction: row-reverse !important; }\n    .flex#{$variant}-column         { flex-direction: column !important; }\n    .flex#{$variant}-column-reverse { flex-direction: column-reverse !important; }\n\n    .flex#{$variant}-wrap             { flex-wrap: wrap !important; }\n    .flex#{$variant}-nowrap           { flex-wrap: nowrap !important; }\n    .flex#{$variant}-wrap-reverse     { flex-wrap: wrap-reverse !important; }\n\n    .flex#{$variant}-justify-start    { justify-content: flex-start !important; }\n    .flex#{$variant}-justify-end      { justify-content: flex-end !important; }\n    .flex#{$variant}-justify-center   { justify-content: center !important; }\n    .flex#{$variant}-justify-between  { justify-content: space-between !important; }\n    .flex#{$variant}-justify-around   { justify-content: space-around !important; }\n\n    .flex#{$variant}-items-start      { align-items: flex-start !important; }\n    .flex#{$variant}-items-end        { align-items: flex-end !important; }\n    .flex#{$variant}-items-center     { align-items: center !important; }\n    .flex#{$variant}-items-baseline   { align-items: baseline !important; }\n    .flex#{$variant}-items-stretch    { align-items: stretch !important; }\n\n    .flex#{$variant}-content-start    { align-content: flex-start !important; }\n    .flex#{$variant}-content-end      { align-content: flex-end !important; }\n    .flex#{$variant}-content-center   { align-content: center !important; }\n    .flex#{$variant}-content-between  { align-content: space-between !important; }\n    .flex#{$variant}-content-around   { align-content: space-around !important; }\n    .flex#{$variant}-content-stretch  { align-content: stretch !important; }\n\n    // Item\n    .flex#{$variant}-1        { flex: 1 !important; }\n    .flex#{$variant}-auto     { flex: auto !important; }\n    .flex#{$variant}-grow-0   { flex-grow: 0 !important; }\n    .flex#{$variant}-shrink-0 { flex-shrink: 0 !important; }\n\n    .flex#{$variant}-self-auto        { align-self: auto !important; }\n    .flex#{$variant}-self-start       { align-self: flex-start !important; }\n    .flex#{$variant}-self-end         { align-self: flex-end !important; }\n    .flex#{$variant}-self-center      { align-self: center !important; }\n    .flex#{$variant}-self-baseline    { align-self: baseline !important; }\n    .flex#{$variant}-self-stretch     { align-self: stretch !important; }\n\n    .flex#{$variant}-order-1 { order: 1 !important; }\n    .flex#{$variant}-order-2 { order: 2 !important; }\n    .flex#{$variant}-order-none { order: inherit !important; }\n  }\n}\n"
  },
  {
    "path": "src/utilities/index.scss",
    "content": "@import '../support/index.scss';\n// utilities\n@import './animations.scss';\n@import './borders.scss';\n@import './box-shadow.scss';\n@import './colors.scss';\n@import './details.scss';\n@import './flexbox.scss';\n@import './layout.scss';\n@import './margin.scss';\n@import './padding.scss';\n@import './typography.scss';\n// Visibility and display should always come last in the imports so that they override other utilities with !important\n@import './visibility-display.scss';\n"
  },
  {
    "path": "src/utilities/layout.scss",
    "content": "// Layout\n\n/* Position */\n@each $breakpoint, $variant in $responsive-variants {\n  @include breakpoint($breakpoint) {\n    @each $position in $responsive-positions {\n      .position#{$variant}-#{$position} {\n        position: $position !important;\n      }\n    }\n  }\n}\n\n/* Final position */\n@each $breakpoint, $variant in $responsive-variants {\n  @include breakpoint($breakpoint) {\n    .top#{$variant}-0 { top: 0 !important; }\n    .right#{$variant}-0 { right: 0 !important; }\n    .bottom#{$variant}-0 { bottom: 0 !important; }\n    .left#{$variant}-0 { left: 0 !important; }\n    .top#{$variant}-auto { top: auto !important; }\n    .right#{$variant}-auto { right: auto !important; }\n    .bottom#{$variant}-auto { bottom: auto !important; }\n    .left#{$variant}-auto { left: auto !important; }\n  }\n}\n\n/* Vertical align middle */\n.v-align-middle      { vertical-align: middle !important; }\n/* Vertical align top */\n.v-align-top         { vertical-align: top !important; }\n/* Vertical align bottom */\n.v-align-bottom      { vertical-align: bottom !important; }\n/* Vertical align to the top of the text */\n.v-align-text-top    { vertical-align: text-top !important; }\n/* Vertical align to the bottom of the text */\n.v-align-text-bottom { vertical-align: text-bottom !important; }\n/* Vertical align to the parent's baseline */\n.v-align-baseline    { vertical-align: baseline !important; }\n\n// Overflow utilities\n@each $breakpoint, $variant in $responsive-variants {\n  @include breakpoint($breakpoint) {\n    @each $overflow in (visible, hidden, auto, scroll) {\n      .overflow#{$variant}-#{$overflow}   { overflow: $overflow !important; }\n      .overflow#{$variant}-x-#{$overflow} { overflow-x: $overflow !important; }\n      .overflow#{$variant}-y-#{$overflow} { overflow-y: $overflow !important; }\n    }\n  }\n}\n\n// Clear floats\n/* Clear floats around the element */\n.clearfix {\n  @include clearfix;\n}\n\n// Floats\n@each $breakpoint, $variant in $responsive-variants {\n  @include breakpoint($breakpoint) {\n    /* Float to the left */\n    .float#{$variant}-left  { float: left !important; }\n    /* Float to the right */\n    .float#{$variant}-right  { float: right !important; }\n    /* No float */\n    .float#{$variant}-none { float: none !important; }\n  }\n}\n\n// Width and height utilities, helpful in combination\n// with display-table utilities and images\n/* Max width 100% */\n.width-fit         { max-width: 100% !important; }\n/* Set the width to 100% */\n.width-full        { width: 100% !important; }\n/* Set the max-width to 65 characters */\n.width-comfortable { max-width: 65ch !important; }\n/* Max height 100% */\n.height-fit        { max-height: 100% !important; }\n/* Set the height to 100% */\n.height-full       { height: 100% !important; }\n\n/* Remove min-width from element */\n.min-width-0 { min-width: 0 !important; }\n\n@each $breakpoint, $variant in $responsive-variants {\n  @include breakpoint($breakpoint) {\n\n    // Auto variants\n    .width#{$variant}-auto { width: auto !important; }\n\n    /* Set the direction to rtl */\n    .direction#{$variant}-rtl { direction: rtl !important; }\n    /* Set the direction to ltr */\n    .direction#{$variant}-ltr { direction: ltr !important; }\n  }\n}\n"
  },
  {
    "path": "src/utilities/margin.scss",
    "content": "// Margin spacer utilities\n// stylelint-disable primer/spacing\n\n// Loop through the breakpoint values\n@each $breakpoint, $variant in $responsive-variants {\n  @include breakpoint($breakpoint) {\n    // Loop through the spacer values\n    @each $scale, $size in $spacer-map-rem-extended {\n      @if ($scale < length($spacer-map-rem)) {\n        /* Set a $size margin to all sides at $breakpoint */\n        .m#{$variant}-#{$scale}  { margin: $size !important; }\n      }\n\n      /* Set a $size margin on the top at $breakpoint */\n      .mt#{$variant}-#{$scale} { margin-top: $size !important; }\n      /* Set a $size margin on the bottom at $breakpoint */\n      .mb#{$variant}-#{$scale} { margin-bottom: $size !important; }\n\n      @if ($scale < length($spacer-map-rem)) {\n        /* Set a $size margin on the right at $breakpoint */\n        .mr#{$variant}-#{$scale} { margin-right: $size !important; }\n        /* Set a $size margin on the left at $breakpoint */\n        .ml#{$variant}-#{$scale} { margin-left: $size !important; }\n      }\n\n      @if ($size != 0) {\n        /* Set a negative $size margin on top at $breakpoint */\n        .mt#{$variant}-n#{$scale} { margin-top: calc(-1 * $size) !important; }\n        /* Set a negative $size margin on the bottom at $breakpoint */\n        .mb#{$variant}-n#{$scale} { margin-bottom: calc(-1 * $size) !important; }\n\n        @if ($scale < length($spacer-map-rem)) {\n          /* Set a negative $size margin on the right at $breakpoint */\n          .mr#{$variant}-n#{$scale} { margin-right : calc(-1 * $size) !important; }\n          /* Set a negative $size margin on the left at $breakpoint */\n          .ml#{$variant}-n#{$scale} { margin-left  : calc(-1 * $size) !important; }\n        }\n      }\n\n      @if ($scale < length($spacer-map-rem)) {\n        /* Set a $size margin on the left & right at $breakpoint */\n        .mx#{$variant}-#{$scale} {\n          margin-right: $size !important;\n          margin-left: $size !important;\n        }\n      }\n\n      /* Set a $size margin on the top & bottom at $breakpoint */\n      .my#{$variant}-#{$scale} {\n        margin-top: $size !important;\n        margin-bottom: $size !important;\n      }\n    }\n\n    /* responsive horizontal auto margins */\n    .mx#{$variant}-auto {\n      margin-right: auto !important;\n      margin-left: auto !important;\n    }\n  }\n}\n\n.m-auto { margin: auto !important; }\n\n.mt-auto { margin-top: auto !important; }\n.mr-auto { margin-right: auto !important; }\n.mb-auto { margin-bottom: auto !important; }\n.ml-auto { margin-left: auto !important; }\n"
  },
  {
    "path": "src/utilities/padding.scss",
    "content": "// Padding spacer utilities\n// stylelint-disable primer/spacing\n\n// Responsive padding spacer utilities\n@each $breakpoint, $variant in $responsive-variants {\n  @include breakpoint($breakpoint) {\n    // Loop through the spacer values\n    @each $scale, $size in $spacer-map-rem-extended {\n      @if ($scale < length($spacer-map-rem)) {\n        /* Set a $size padding to all sides at $breakpoint */\n        .p#{$variant}-#{$scale}  { padding: $size !important; }\n      }\n\n      /* Set a $size padding to the top at $breakpoint */\n      .pt#{$variant}-#{$scale} { padding-top: $size !important; }\n      /* Set a $size padding to the right at $breakpoint */\n      .pr#{$variant}-#{$scale} { padding-right: $size !important; }\n      /* Set a $size padding to the bottom at $breakpoint */\n      .pb#{$variant}-#{$scale} { padding-bottom: $size !important; }\n      /* Set a $size padding to the left at $breakpoint */\n      .pl#{$variant}-#{$scale} { padding-left: $size !important; }\n\n      @if ($scale < length($spacer-map-rem)) {\n        /* Set a $size padding to the left & right at $breakpoint */\n        .px#{$variant}-#{$scale} {\n          padding-right: $size !important;\n          padding-left: $size !important;\n        }\n      }\n\n      /* Set a $size padding to the top & bottom at $breakpoint */\n      .py#{$variant}-#{$scale} {\n        padding-top: $size !important;\n        padding-bottom: $size !important;\n      }\n    }\n  }\n}\n\n// responsive padding for containers\n.p-responsive {\n  padding-right: var(--base-size-16) !important;\n  padding-left: var(--base-size-16) !important;\n\n  @include breakpoint(sm) {\n    padding-right: var(--base-size-40) !important;\n    padding-left: var(--base-size-40) !important;\n  }\n\n  @include breakpoint(lg) {\n    padding-right: var(--base-size-16) !important;\n    padding-left: var(--base-size-16) !important;\n  }\n}\n"
  },
  {
    "path": "src/utilities/typography.scss",
    "content": "// stylelint-disable primer/typography\n\n// Type scale variables found in ../support/lib/variables.scss\n// $h00-size-mobile: 40px;\n// $h0-size-mobile: 32px;\n// $h1-size-mobile: 26px;\n// $h2-size-mobile: 22px;\n// $h3-size-mobile: 18px;\n// $h00-size: 48px;\n// $h0-size: 40px;\n// $h1-size: 32px;\n// $h2-size: 24px;\n// $h3-size: 20px;\n// $h4-size: 16px;\n// $h5-size: 14px;\n// $h6-size: 12px;\n\n/* Set the font size to 26px */\n.h1 {\n  font-size: var(--h1-size-mobile, $h1-size-mobile) !important;\n\n  @include breakpoint(md) {\n    font-size: var(--h1-size, $h1-size) !important;\n  }\n}\n\n/* Set the font size to 22px */\n.h2 {\n  font-size: var(--h2-size-mobile, $h2-size-mobile) !important;\n\n  @include breakpoint(md) {\n    font-size: var(--h2-size, $h2-size) !important;\n  }\n}\n\n/* Set the font size to 18px */\n.h3 {\n  font-size: var(--h3-size-mobile, $h3-size-mobile) !important;\n\n  @include breakpoint(md) {\n    font-size: var(--h3-size, $h3-size) !important;\n  }\n}\n\n/* Set the font size to #{$h4-size} */\n.h4 {\n  font-size: var(--h4-size, $h4-size) !important;\n}\n\n/* Set the font size to #{$h5-size} */\n.h5 {\n  font-size: var(--h5-size, $h5-size) !important;\n}\n\n// Does not include color property like typography base\n// styles, color should be applied with color utilities.\n/* Set the font size to #{$h6-size} */\n.h6 {\n  font-size: var(--h6-size, $h6-size) !important;\n}\n\n// Heading utilities\n.h1,\n.h2,\n.h3,\n.h4,\n.h5,\n.h6 {\n  font-weight: $font-weight-bold !important;\n}\n\n// Type utilities that match type sale\n/* Set the font size to 26px */\n.f1 {\n  font-size: var(--h1-size-mobile, $h1-size-mobile) !important;\n\n  @include breakpoint(md) {\n    font-size: var(--h1-size, $h1-size) !important;\n  }\n}\n\n/* Set the font size to 22px */\n.f2 {\n  font-size: var(--h2-size-mobile, $h2-size-mobile) !important;\n\n  @include breakpoint(md) {\n    font-size: var(--h2-size, $h2-size) !important;\n  }\n}\n\n/* Set the font size to 18px */\n.f3 {\n  font-size: var(--h3-size-mobile, $h3-size-mobile) !important;\n\n  @include breakpoint(md) {\n    font-size: var(--h3-size, $h3-size) !important;\n  }\n}\n\n/* Set the font size to #{$h4-size} */\n.f4 {\n  font-size: var(--h4-size, $h4-size) !important;\n\n  @include breakpoint(md) {\n    font-size: var(--h4-size, $h4-size) !important;\n  }\n}\n\n/* Set the font size to #{$h5-size} */\n.f5 {\n  font-size: var(--h5-size, $h5-size) !important;\n}\n\n/* Set the font size to #{$h6-size} */\n.f6 {\n  font-size: var(--h6-size, $h6-size) !important;\n}\n\n// Type utils with light weight that match type scale\n/* Set the font size to 40px and weight to light */\n.f00-light {\n  font-size: var(--h00-size-mobile, $h00-size-mobile) !important;\n  font-weight: $font-weight-light !important;\n\n  @include breakpoint(md) {\n    font-size: var(--h00-size, $h00-size) !important;\n  }\n}\n\n/* Set the font size to 32px and weight to light */\n.f0-light {\n  font-size: var(--h0-size-mobile, $h0-size-mobile) !important;\n  font-weight: $font-weight-light !important;\n\n  @include breakpoint(md) {\n    font-size: var(--h0-size, $h0-size) !important;\n  }\n}\n\n/* Set the font size to 26px and weight to light */\n.f1-light {\n  font-size: var(--h1-size-mobile, $h1-size-mobile) !important;\n  font-weight: $font-weight-light !important;\n\n  @include breakpoint(md) {\n    font-size: var(--h1-size, $h1-size) !important;\n  }\n}\n\n/* Set the font size to 22px and weight to light */\n.f2-light {\n  font-size: var(--h2-size-mobile, $h2-size-mobile) !important;\n  font-weight: $font-weight-light !important;\n\n  @include breakpoint(md) {\n    font-size: var(--h2-size, $h2-size) !important;\n  }\n}\n\n// Same size and weight as .lead but without color property\n/* Set the font size to 18px and weight to light */\n.f3-light {\n  font-size: var(--h3-size-mobile, $h3-size-mobile) !important;\n  font-weight: $font-weight-light !important;\n\n  @include breakpoint(md) {\n    font-size: var(--h3-size, $h3-size) !important;\n  }\n}\n\n// Smallest text size\n/* Set the font size to ${#h6-size} */\n.text-small {\n  font-size: var(--h6-size, $h6-size) !important;\n}\n\n// 12px\n\n/* Large leading paragraphs */\n.lead {\n  // stylelint-disable-next-line primer/spacing\n  margin-bottom: 30px;\n  font-size: var(--h3-size, $h3-size);\n  font-weight: $font-weight-light;\n}\n\n// Line-height variations\n// Close to commonly used line-heights. Most line-heights\n// combined with type size equate to whole pixels.\n// Will be improved with future typography scale updates.\n// Responsive line-height\n@each $breakpoint, $variant in $responsive-variants {\n  @include breakpoint($breakpoint) {\n\n    /* Set the line height to ultra condensed */\n    .lh#{$variant}-condensed-ultra {\n      line-height: $lh-condensed-ultra !important;\n    }\n\n    /* Set the line height to condensed */\n    .lh#{$variant}-condensed {\n      line-height: $lh-condensed !important;\n    }\n\n    /* Set the line height to default */\n    .lh#{$variant}-default {\n      line-height: $lh-default !important;\n    }\n\n    /* Set the line height to zero */\n    .lh#{$variant}-0 {\n      line-height: 0 !important;\n    }\n  }\n}\n\n// Text alignments\n// Responsive text alignment\n@each $breakpoint, $variant in $responsive-variants {\n  @include breakpoint($breakpoint) {\n\n    /* Text align to the right */\n    .text#{$variant}-right {\n      text-align: right !important;\n    }\n\n    /* Text align to the left */\n    .text#{$variant}-left {\n      text-align: left !important;\n    }\n\n    /* Text align to the center */\n    .text#{$variant}-center {\n      text-align: center !important;\n    }\n  }\n}\n\n// Text styles\n/* Set the font weight to normal */\n.text-normal {\n  font-weight: $font-weight-normal !important;\n}\n\n/* Set the font weight to bold */\n.text-bold {\n  font-weight: $font-weight-bold !important;\n}\n\n.text-semibold {\n  font-weight: $font-weight-semibold !important;\n}\n\n.text-light {\n  font-weight: $font-weight-light !important;\n}\n\n/* Set the font to italic */\n.text-italic {\n  font-style: italic !important;\n}\n\n/* Make text uppercase */\n.text-uppercase {\n  text-transform: uppercase !important;\n}\n\n/* Underline text */\n.text-underline {\n  text-decoration: underline !important;\n}\n\n/* Don't underline text */\n.no-underline {\n  text-decoration: none !important;\n}\n\n/* Don't wrap white space */\n.no-wrap {\n  white-space: nowrap !important;\n}\n\n/* Normal white space */\n.ws-normal {\n  white-space: normal !important;\n}\n\n/* Force long \"words\" to wrap if they exceed the width of the container */\n.wb-break-word {\n    // stylelint-disable-next-line declaration-property-value-keyword-no-deprecated\n  word-break: break-word !important;\n  overflow-wrap: break-word !important;\n}\n\n/*\n * Specifically apply word-break: break-all; per MDN:\n *\n * > Note: In contrast to `word-break: break-word` and `overflow-wrap: break-word`,\n * > `word-break: break-all` will create a break at the exact place where text would\n * > otherwise overflow its container (even if putting an entire word on its own line\n * > would negate the need for a break).\n *\n * see: https://developer.mozilla.org/en-US/docs/Web/CSS/word-break#Values\n */\n.wb-break-all {\n  word-break: break-all !important;\n}\n\n.text-emphasized {\n  font-weight: $font-weight-bold;\n}\n\n// List styles\n.list-style-none {\n  list-style: none !important;\n}\n\n/* Set to monospace font */\n.text-mono {\n  font-family: $mono-font !important;\n}\n\n/* Disallow user from selecting text */\n.user-select-none {\n  user-select: none !important;\n}\n\n/* Make text capitalized (transforms first character to uppercase) */\n.text-capitalize {\n  text-transform: capitalize !important;\n}\n"
  },
  {
    "path": "src/utilities/visibility-display.scss",
    "content": "// Visibility and display utilities\n\n// Responsive display utilities\n@each $breakpoint, $variant in $responsive-variants {\n  @include breakpoint($breakpoint) {\n    @each $display in $display-values {\n      .d#{$variant}-#{$display} { display: $display !important; }\n    }\n  }\n}\n\n.v-hidden { visibility: hidden !important; }\n.v-visible { visibility: visible !important; }\n\n// Hide utilities for each breakpoint\n// Each hide utility only applies to one breakpoint range.\n@media (max-width: $width-sm - 0.02px) {\n  .hide-sm {\n    display: none !important;\n  }\n}\n\n@media (min-width: $width-sm) and (max-width: $width-md - 0.02px) {\n  .hide-md {\n    display: none !important;\n  }\n}\n\n@media (min-width: $width-md) and (max-width: $width-lg - 0.02px) {\n  .hide-lg {\n    display: none !important;\n  }\n}\n\n@media (min-width: $width-lg) {\n  .hide-xl {\n    display: none !important;\n  }\n}\n\n// Show/Hide Viewport range utilities\n\n.show-whenNarrow,\n.show-whenRegular,\n.show-whenWide,\n.show-whenRegular.hide-whenWide {\n  display: none !important;\n}\n\n.hide-whenNarrow,\n.hide-whenRegular,\n.hide-whenWide {\n  display: block !important;\n}\n\n@media (max-width: $width-md - 0.02px) {\n  .show-whenNarrow {\n    display: block !important;\n  }\n\n  .hide-whenNarrow {\n    display: none !important;\n  }\n}\n\n@media (min-width: $width-md) {\n  .show-whenRegular,\n  .show-whenRegular.hide-whenWide {\n    display: block !important;\n  }\n\n  .hide-whenRegular {\n    display: none !important;\n  }\n}\n\n// The width of a `wide` viewport range may change as we're finalizing\n// the Primer primitives viewport ranges proposal\n@media (min-width: $width-xl) {\n  .show-whenWide {\n    display: block !important;\n  }\n\n  .hide-whenWide,\n  .show-whenRegular.hide-whenWide {\n    display: none !important;\n  }\n}\n\n/* Set the table-layout to fixed */\n.table-fixed { table-layout: fixed !important; }\n\n// Only display content to screen readers\n//\n// See: http://a11yproject.com/posts/how-to-hide-content/\n.sr-only {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  padding: 0;\n  overflow: hidden;\n  clip-path: rect(0 0 0 0);\n  // Workaround for https://bugzilla.mozilla.org/show_bug.cgi?id=1241631\n  overflow-wrap: normal;\n  border: 0;\n}\n\n// Only display content on focus\n.show-on-focus {\n  position: absolute !important;\n\n  &:not(:focus) {\n    width: 1px !important;\n    height: 1px !important;\n    padding: 0 !important;\n    overflow: hidden !important;\n    clip: rect(1px, 1px, 1px, 1px) !important; /* stylelint-disable-line property-no-deprecated */\n    border: 0 !important;\n  }\n\n  &:focus {\n    z-index: 999;\n  }\n}\n"
  },
  {
    "path": "stylelint.config.cjs",
    "content": "module.exports = {\n  extends: ['@primer/stylelint-config'],\n  ignoreFiles: ['**/*.js', '**/*.cjs'],\n  rules: {}\n}\n"
  }
]