[
  {
    "path": ".github/CONTRIBUTING.md",
    "content": "# Contributing to Radix Themes\n\n## Code of Conduct\n\nRadix has adopted the [Contributor Covenant](https://www.contributor-covenant.org/) as its Code of Conduct, and we expect project participants to adhere to it.\n\nPlease read [the full text](/CODE_OF_CONDUCT.md) so that you can understand what actions will and will not be tolerated.\n\n## Heuristics\n\n[heuristic](<https://en.wikipedia.org/wiki/Heuristic_(computer_science)>)\n/ˌhjʊ(ə)ˈrɪstɪk/\n\n> A technique designed for solving a problem more quickly when classic methods are too slow, or for finding an approximate solution when classic methods fail to find any exact solution\n\n- Priority is the best User Experience\n- Complexity should be introduced when it’s inevitable\n- Code should be easy to reason about\n- Code should be easy to delete\n- Avoid abstracting too early\n- Avoid thinking too far in the future\n\n## Questions\n\nIf you have questions about Radix Themes, be sure to check out the docs where we have several examples and detailed API references that may help you solve your problem. You can also share your questions on [GitHub Discussions](https://github.com/radix-ui/themes/discussions).\n\n## How to contribute\n\nThere are many ways to contribute to the project. Code is just one possible means of contribution.\n\n- **Feedback.** Tell us what we're doing well or where we can improve.\n- **Support.** You can answer questions on StackOverflow or [GitHub Discussions](https://github.com/radix-ui/themes/discussions), or provide solutions for others in [open issues](https://github.com/radix-ui/themes/issues).\n- **Write.** If you come up with an interesting example, write about it. Post it to your blog and share it with us. We'd love to see what folks in the community build with Radix Themes!\n- **Report.** Create issues with bug reports so we can make Radix Themes even better.\n\n## Working on your first Pull Request?\n\nThere are a lot of great resources on creating a good pull request. We've included a few below, but don't be shy—we appreciate all contributions and are happy to help those who are willing to help us!\n\n- [How to Contribute to a Project on GitHub](https://egghead.io/courses/how-to-contribute-to-an-open-source-project-on-github)\n\n## Preparing a Pull Request\n\n[Pull Requests](https://docs.github.com/en/free-pro-team@latest/github/collaborating-with-issues-and-pull-requests/creating-a-pull-request) are always welcome, but before working on a large change, it is best to open an issue first to discuss it with maintainers.\n\nA good PR is small, focuses on a single feature or improvement, and clearly communicates the problem it solves. Try not to include more than one issue in a single PR. It's much easier for us to review multiple small pull requests than one that is large and unwieldy.\n\n1. [Fork the repository](https://docs.github.com/en/free-pro-team@latest/github/getting-started-with-github/fork-a-repo).\n\n2. Clone the fork to your local machine and add upstream remote:\n\n```sh\ngit clone https://github.com/<your username>/themes.git\ncd themes\ngit remote add upstream https://github.com/radix-ui/themes.git\n```\n\n1. Synchronize your local `main` branch with the upstream remote:\n\n```sh\ngit checkout main\ngit pull upstream main\n```\n\n1. Make sure your Node version matches the [.nvmrc](../.nvmrc).\n\n```\nnode -v\n```\n\n1. Install dependencies with [pnpm](https://pnpm.io):\n\n```sh\npnpm install\n```\n\n1. Create a new branch related to your PR:\n\n```sh\ngit checkout -b my-bug-fix\n```\n\n6. Make changes, then commit and push to your forked repository:\n\n```sh\ngit push -u origin HEAD\n```\n\n7. Go to [the repository](https://github.com/radix-ui/themes/pulls) and [make a Pull Request](https://docs.github.com/en/free-pro-team@latest/github/collaborating-with-issues-and-pull-requests/creating-a-pull-request).\n\n8. We will review your Pull Request and either merge it, request changes to it, or close it with an explanation.\n\n## Working locally\n\nThe repo is managed with [pnpm Workspaces](https://pnpm.io/workspaces).\n\n### Development\n\n```bash\n# install dependencies\npnpm install\n\n# start playground and see examples in the browser\npnpm dev\n```\n\nAfter staring the development server, navigate to `http://localhost:3000/sink` to view the playground. Visit other demos by navigating to pages in the app directory (./app/\\*), such as `/demo`, `/explore-components`, `/home-os`.\n\nMake your changes and check that they resolve the problem with an example in `/sink` or another demo page. If there are no examples in the playground to support your change, we suggest adding one and then running local development to make sure nothing is broken.\n\nLastly, run `pnpm build` to ensure that the build runs successfully before submitting the pull request.\n"
  },
  {
    "path": ".github/PULL_REQUEST_TEMPLATE.md",
    "content": "<!--\n\nThank you for contributing! Please follow the steps below to help us process your PR quickly.\n\n- 📝 Use a meaningful title for the pull request and include the name of the package modified.\n- 🔍 Add or edit demo examples in ./app/sink or other pages to reflect the change (run `pnpm dev`).\n- 🙏 Please review your own PR to check for anything you may have missed.\n\n-->\n\n## Description\n\n<!-- Describe the change you are introducing -->\n\n## Testing steps\n\n<!-- Describe step by step how to test the change being introduced -->\n\n## Relates issues / PRs\n\n<!-- List out related issues and PR links -->\n"
  },
  {
    "path": ".github/actions/ci-setup/action.yml",
    "content": "name: Setup CI\n\nruns:\n  using: composite\n  steps:\n    - name: Setup pnpm\n      uses: pnpm/action-setup@v4\n      with:\n        run_install: false\n\n    - name: Setup Node.js\n      uses: actions/setup-node@v4\n      with:\n        node-version-file: .nvmrc\n        cache: pnpm\n\n    - name: Install dependencies\n      shell: bash\n      run: pnpm install --frozen-lockfile\n"
  },
  {
    "path": ".github/workflows/ci.yml",
    "content": "name: CI\n\non:\n  pull_request:\n  push:\n    branches:\n      - main\n\npermissions:\n  contents: read\n\njobs:\n  build:\n    name: Build\n    runs-on: ubuntu-latest\n    steps:\n      - name: Checkout\n        uses: actions/checkout@v4\n\n      - name: CI Setup\n        uses: ./.github/actions/ci-setup\n\n      - name: Build packages\n        run: pnpm --filter \"@radix-ui/*\" build\n\n      - name: Upload build artifacts\n        uses: actions/upload-artifact@v6\n        with:\n          name: build-output\n          path: |\n            packages/*/dist\n            packages/radix-ui-themes/layout\n            packages/radix-ui-themes/tokens\n            packages/radix-ui-themes/*.css\n          retention-days: 1\n\n  lint:\n    name: Lint\n    runs-on: ubuntu-latest\n    steps:\n      - name: Checkout\n        uses: actions/checkout@v4\n\n      - name: CI Setup\n        uses: ./.github/actions/ci-setup\n\n      - name: Lint\n        run: pnpm --filter \"@radix-ui/*\" lint\n\n  format:\n    name: Check Formatting\n    runs-on: ubuntu-latest\n    steps:\n      - name: Checkout\n        uses: actions/checkout@v4\n\n      - name: CI Setup\n        uses: ./.github/actions/ci-setup\n\n      - name: Check formatting\n        run: pnpm format:check\n\n  test-vr:\n    name: 'Tests: Visual regression'\n    needs: build\n    runs-on: macos-latest\n    steps:\n      - name: Checkout\n        uses: actions/checkout@v4\n\n      - name: CI Setup\n        uses: ./.github/actions/ci-setup\n\n      - name: Download build artifacts\n        uses: actions/download-artifact@v7\n        with:\n          name: build-output\n          path: packages\n\n      - name: Install Playwright Browsers\n        run: pnpm --filter \"playground\" exec playwright install --with-deps\n\n      - name: Run Visual Regression Tests\n        run: pnpm test:vr\n\n      - name: Upload test results\n        if: failure()\n        uses: actions/upload-artifact@v6\n        with:\n          name: playwright-report\n          path: apps/playground/test-results/\n          retention-days: 30\n"
  },
  {
    "path": ".github/workflows/publish.yml",
    "content": "name: Publish Package\n\non:\n  release:\n    types: [created]\n\nenv:\n  GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n\nconcurrency:\n  group: ${{ github.workflow }}-${{ github.ref }}\n  cancel-in-progress: true\n\njobs:\n  publish:\n    name: Publish Package\n    if: github.repository == 'radix-ui/themes'\n    runs-on: ubuntu-latest\n    permissions:\n      contents: read\n      id-token: write\n    steps:\n      - name: Checkout\n        uses: actions/checkout@v4\n\n      - name: CI Setup\n        uses: ./.github/actions/ci-setup\n\n      - name: Setup npm registry\n        uses: actions/setup-node@v4\n        with:\n          registry-url: 'https://registry.npmjs.org'\n\n      - name: Lint\n        run: pnpm --filter \"@radix-ui/*\" lint\n\n      - name: Build packages\n        run: pnpm --filter \"@radix-ui/*\" build\n\n      - name: Publish packages\n        run: pnpm --filter \"@radix-ui/*\" publish --access public --provenance --no-git-checks\n"
  },
  {
    "path": ".gitignore",
    "content": ".DS_Store\nnode_modules\n.turbo\n*.log\n.next\ndist\ndist-ssr\n*.local\n.env\n.cache\nserver/dist\npublic/dist\npackages/radix-ui-themes/*.css\npackages/radix-ui-themes/tokens\npackages/radix-ui-themes/layout\n"
  },
  {
    "path": ".npmrc",
    "content": "use-beta-cli=true\n"
  },
  {
    "path": ".nvmrc",
    "content": "24\n"
  },
  {
    "path": ".prettierignore",
    "content": "pnpm-lock.yaml\nnode_modules\n.turbo\n.next\nnext-env.d.ts\ndist\npackages/radix-ui-themes/tokens\npackages/radix-ui-themes/layout\npackages/radix-ui-themes/styles.css\npackages/radix-ui-themes/components.css\npackages/radix-ui-themes/utilities.css\npackages/radix-ui-themes/tokens.css\npackages/radix-ui-themes/layout.css\napps/playground/playwright-report\napps/playground/test-results\n"
  },
  {
    "path": ".prettierrc",
    "content": "{\n  \"printWidth\": 100,\n  \"singleQuote\": true,\n  \"overrides\": [\n    {\n      \"files\": \"*.css\",\n      \"options\": {\n        \"printWidth\": 120\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": ".vscode/extensions.json",
    "content": "{\n  \"recommendations\": [\"stylelint.vscode-stylelint\"]\n}\n"
  },
  {
    "path": ".vscode/settings.json",
    "content": "{\n  \"stylelint.enable\": true\n}\n"
  },
  {
    "path": "AGENTS.md",
    "content": "# AGENTS.md — Radix Themes\n\n> Context file for AI agents working in this repository.\n\n## Project Overview\n\n**Radix Themes** (`@radix-ui/themes`) is an open-source React component library optimized for fast development, easy maintenance, and accessibility. It provides a comprehensive set of pre-styled, themeable UI components built on top of [Radix Primitives](https://www.radix-ui.com/primitives).\n\n- **Package name:** `@radix-ui/themes`\n- **Current version:** 3.x (check `packages/radix-ui-themes/package.json` for exact version)\n- **License:** MIT\n- **Documentation:** https://www.radix-ui.com/themes/docs/theme\n\n## Documentation\n\nThe full docs for this project are hosted at:\n\n- **Theme overview:** https://www.radix-ui.com/themes/docs/theme/overview\n- **Component docs:** https://www.radix-ui.com/themes/docs/components (e.g., `.../components/button`, `.../components/dialog`)\n- **Utilities:** https://www.radix-ui.com/themes/docs/utilities/box\n- **Releases:** https://www.radix-ui.com/themes/docs/overview/releases\n\nWhen you need to understand a component's API, intended behavior, or usage patterns, **consult the docs at the URLs above** rather than guessing. The documentation site lives in a [separate repository](https://github.com/radix-ui/website).\n\n## Repository Structure\n\nThis is a **pnpm monorepo** managed with **Turborepo**.\n\n```\nthemes/\n├── packages/\n│   └── radix-ui-themes/          # The core library (published as @radix-ui/themes)\n│       ├── src/\n│       │   ├── components/       # All component source files\n│       │   │   ├── _internal/    # Shared base components (not exported)\n│       │   │   ├── *.tsx         # Component implementations\n│       │   │   ├── *.props.tsx   # Component prop definitions\n│       │   │   ├── *.css         # Component styles\n│       │   │   └── index.tsx     # Public component exports\n│       │   ├── helpers/          # Utility functions (prop extraction, responsive styles, etc.)\n│       │   ├── props/            # Shared prop definitions (color, margin, radius, etc.)\n│       │   ├── styles/\n│       │   │   ├── tokens/       # Design tokens (colors, typography, radius, shadow, spacing)\n│       │   │   └── utilities/    # CSS utility classes (layout, typography)\n│       │   └── index.ts          # Package entry point\n│       ├── scripts/              # Build scripts (esbuild CJS/ESM)\n│       ├── postcss.config.cjs    # PostCSS config with custom plugins\n│       ├── tsconfig.json\n│       └── package.json\n├── apps/\n│   └── playground/               # Next.js App Router playground for development\n│       ├── app/\n│       │   ├── (themeable)/sink/ # Main component showcase (http://localhost:3000/sink)\n│       │   ├── (themeable)/test/ # Test pages for specific scenarios\n│       │   └── (themeable)/demo/ # Demo pages\n│       ├── tests/                # Playwright visual regression tests\n│       └── playwright.config.ts\n├── .github/\n│   ├── workflows/\n│   │   ├── ci.yml                # Build, lint, format check, visual regression\n│   │   └── publish.yml           # Publish to npm on GitHub release\n│   └── CONTRIBUTING.md\n├── package.json                  # Root monorepo config\n├── pnpm-workspace.yaml\n└── turbo.json\n```\n\n## Tech Stack\n\n| Concern                | Tool                                                       |\n| ---------------------- | ---------------------------------------------------------- |\n| Package manager        | pnpm 10 (see `.npmrc`)                                     |\n| Node version           | 24 (see `.nvmrc`)                                          |\n| Monorepo orchestration | Turborepo                                                  |\n| Language               | TypeScript (strict)                                        |\n| Framework              | React (16.8+, 17, 18, 19 supported)                        |\n| JS bundler             | esbuild (dual CJS + ESM output)                            |\n| CSS processing         | PostCSS (nesting, custom-media, breakpoints, autoprefixer) |\n| Linting                | ESLint (flat config), Stylelint (for CSS)                  |\n| Formatting             | Prettier (single quotes, 100 print width, 120 for CSS)     |\n| Playground             | Next.js (App Router)                                       |\n| Testing                | Playwright (visual regression)                             |\n\n## Key Commands\n\nRun all commands from the **repository root** unless stated otherwise:\n\n```bash\n# Install dependencies\npnpm install\n\n# Start development (playground + watch mode)\npnpm dev\n# Then visit http://localhost:3000/sink\n\n# Build the library\npnpm build\n\n# Build only the themes package\npnpm build:pkg\n\n# Lint everything\npnpm lint\n\n# Format code\npnpm format\n\n# Check formatting\npnpm format:check\n\n# Run visual regression tests\npnpm test:vr\n\n# Update visual regression snapshots\npnpm test:vr:update\n\n# Clean all build artifacts\npnpm clean\n```\n\n## Component Architecture\n\n### File Convention\n\nEach component typically consists of three co-located files:\n\n- **`component-name.tsx`** — React component implementation\n- **`component-name.props.tsx`** — Prop type definitions and default values\n- **`component-name.css`** — Component styles using CSS custom properties and data attributes\n\nSome complex components also have a `.primitive.tsx` file for lower-level behavior (e.g., `checkbox-cards.primitive.tsx`).\n\n### Styling Approach\n\n- Components use **CSS custom properties** (CSS variables) for theming\n- Design tokens are defined in `src/styles/tokens/` and include 27+ color scales from `@radix-ui/colors`\n- Responsive props use breakpoint-based classes generated via a custom PostCSS plugin (`postcss-breakpoints.cjs`)\n- Layout utility classes are generated from `src/styles/utilities/`\n- The `Theme` component wraps the app and provides theming context (appearance, accent color, gray color, radius, scaling)\n\n### Prop System\n\n- Components use a typed prop definition system in `src/props/prop-def.ts`\n- Most visual props support **responsive objects** (e.g., `size={{ initial: '1', md: '3' }}`)\n- Common shared props: `color`, `highContrast`, `radius`, `variant`, `size`, `weight`, `asChild`\n- Margin props (`m`, `mx`, `my`, `mt`, `mr`, `mb`, `ml`) are extracted via `extractMarginProps()`\n\n## Build System\n\nThe package produces:\n\n1. **CJS output** → `dist/cjs/` (via esbuild)\n2. **ESM output** → `dist/esm/` (via esbuild)\n3. **Type declarations** → `dist/cjs/` and `dist/esm/` (via tsc)\n4. **CSS output** → multiple CSS files at package root:\n   - `styles.css` — Full styles (tokens + components + utilities)\n   - `components.css` — Component styles only\n   - `utilities.css` — Utility classes only\n   - `tokens.css` — Design tokens only\n   - `tokens/base.css`, `tokens/colors/*.css` — Granular token files\n   - `layout.css`, `layout/*.css` — Layout-only subset\n\n## Development Workflow\n\n1. Run `pnpm dev` to start the playground and watch mode\n2. Visit `http://localhost:3000/sink` to see all components\n3. Test pages are at `http://localhost:3000/test/*` for specific scenarios\n4. Demo pages at `http://localhost:3000/demo`\n5. Always run `pnpm build` before submitting a PR to ensure the build succeeds\n6. Visual regression tests compare screenshots across browsers (Chromium, Firefox, WebKit)\n\n## Coding Conventions\n\n- **Prettier** for formatting (single quotes, 100 char width, 120 for CSS)\n- **ESLint** with TypeScript, React Hooks, and jsx-a11y rules\n- **Stylelint** for CSS (enforces selector specificity, class naming patterns)\n- CSS class names follow the pattern `.rt-ComponentName` (e.g., `.rt-Button`, `.rt-DialogContent`)\n- CSS custom properties use `--` prefix namespacing\n- Component files use kebab-case naming (e.g., `alert-dialog.tsx`)\n- Props files export a `*PropDefs` object defining allowed values and defaults\n- Use `classnames` library for conditional class merging\n\n## Release Process\n\n1. PRs that fix bugs or add features should update `packages/radix-ui-themes/CHANGELOG.md`\n2. Releases follow semver and are published via GitHub Releases\n3. The `publish.yml` workflow automatically publishes to npm when a GitHub release is created\n4. Pre-releases use `pnpm publish -r --tag <alpha|beta|rc>`\n\nSee `release-process.md` for the full release checklist.\n\n## Important Notes for Agents\n\n- The **documentation site** is in a separate repo ([`radix-ui/website`](https://github.com/radix-ui/website)), not this one\n- Built CSS files at the package root (e.g., `styles.css`, `components.css`) are **gitignored** — they are build artifacts\n- The `dist/`, `tokens/`, and `layout/` directories are also gitignored build artifacts\n- When modifying a component, update all three files (`.tsx`, `.props.tsx`, `.css`) as needed\n- The `Theme` component (`theme.tsx`) is the root provider — all other components must be used within it\n"
  },
  {
    "path": "CLAUDE.md",
    "content": "# AGENTS.md — Radix Themes\n\n> Context file for AI agents working in this repository.\n\n## Project Overview\n\n**Radix Themes** (`@radix-ui/themes`) is an open-source React component library optimized for fast development, easy maintenance, and accessibility. It provides a comprehensive set of pre-styled, themeable UI components built on top of [Radix Primitives](https://www.radix-ui.com/primitives).\n\n- **Package name:** `@radix-ui/themes`\n- **Current version:** 3.x (check `packages/radix-ui-themes/package.json` for exact version)\n- **License:** MIT\n- **Documentation:** https://www.radix-ui.com/themes/docs/theme\n\n## Documentation\n\nThe full docs for this project are hosted at:\n\n- **Theme overview:** https://www.radix-ui.com/themes/docs/theme/overview\n- **Component docs:** https://www.radix-ui.com/themes/docs/components (e.g., `.../components/button`, `.../components/dialog`)\n- **Utilities:** https://www.radix-ui.com/themes/docs/utilities/box\n- **Releases:** https://www.radix-ui.com/themes/docs/overview/releases\n\nWhen you need to understand a component's API, intended behavior, or usage patterns, **consult the docs at the URLs above** rather than guessing. The documentation site lives in a [separate repository](https://github.com/radix-ui/website).\n\n## Repository Structure\n\nThis is a **pnpm monorepo** managed with **Turborepo**.\n\n```\nthemes/\n├── packages/\n│   └── radix-ui-themes/          # The core library (published as @radix-ui/themes)\n│       ├── src/\n│       │   ├── components/       # All component source files\n│       │   │   ├── _internal/    # Shared base components (not exported)\n│       │   │   ├── *.tsx         # Component implementations\n│       │   │   ├── *.props.tsx   # Component prop definitions\n│       │   │   ├── *.css         # Component styles\n│       │   │   └── index.tsx     # Public component exports\n│       │   ├── helpers/          # Utility functions (prop extraction, responsive styles, etc.)\n│       │   ├── props/            # Shared prop definitions (color, margin, radius, etc.)\n│       │   ├── styles/\n│       │   │   ├── tokens/       # Design tokens (colors, typography, radius, shadow, spacing)\n│       │   │   └── utilities/    # CSS utility classes (layout, typography)\n│       │   └── index.ts          # Package entry point\n│       ├── scripts/              # Build scripts (esbuild CJS/ESM)\n│       ├── postcss.config.cjs    # PostCSS config with custom plugins\n│       ├── tsconfig.json\n│       └── package.json\n├── apps/\n│   └── playground/               # Next.js App Router playground for development\n│       ├── app/\n│       │   ├── (themeable)/sink/ # Main component showcase (http://localhost:3000/sink)\n│       │   ├── (themeable)/test/ # Test pages for specific scenarios\n│       │   └── (themeable)/demo/ # Demo pages\n│       ├── tests/                # Playwright visual regression tests\n│       └── playwright.config.ts\n├── .github/\n│   ├── workflows/\n│   │   ├── ci.yml                # Build, lint, format check, visual regression\n│   │   └── publish.yml           # Publish to npm on GitHub release\n│   └── CONTRIBUTING.md\n├── package.json                  # Root monorepo config\n├── pnpm-workspace.yaml\n└── turbo.json\n```\n\n## Tech Stack\n\n| Concern                | Tool                                                       |\n| ---------------------- | ---------------------------------------------------------- |\n| Package manager        | pnpm 10 (see `.npmrc`)                                     |\n| Node version           | 24 (see `.nvmrc`)                                          |\n| Monorepo orchestration | Turborepo                                                  |\n| Language               | TypeScript (strict)                                        |\n| Framework              | React (16.8+, 17, 18, 19 supported)                        |\n| JS bundler             | esbuild (dual CJS + ESM output)                            |\n| CSS processing         | PostCSS (nesting, custom-media, breakpoints, autoprefixer) |\n| Linting                | ESLint (flat config), Stylelint (for CSS)                  |\n| Formatting             | Prettier (single quotes, 100 print width, 120 for CSS)     |\n| Playground             | Next.js (App Router)                                       |\n| Testing                | Playwright (visual regression)                             |\n\n## Key Commands\n\nRun all commands from the **repository root** unless stated otherwise:\n\n```bash\n# Install dependencies\npnpm install\n\n# Start development (playground + watch mode)\npnpm dev\n# Then visit http://localhost:3000/sink\n\n# Build the library\npnpm build\n\n# Build only the themes package\npnpm build:pkg\n\n# Lint everything\npnpm lint\n\n# Format code\npnpm format\n\n# Check formatting\npnpm format:check\n\n# Run visual regression tests\npnpm test:vr\n\n# Update visual regression snapshots\npnpm test:vr:update\n\n# Clean all build artifacts\npnpm clean\n```\n\n## Component Architecture\n\n### File Convention\n\nEach component typically consists of three co-located files:\n\n- **`component-name.tsx`** — React component implementation\n- **`component-name.props.tsx`** — Prop type definitions and default values\n- **`component-name.css`** — Component styles using CSS custom properties and data attributes\n\nSome complex components also have a `.primitive.tsx` file for lower-level behavior (e.g., `checkbox-cards.primitive.tsx`).\n\n### Styling Approach\n\n- Components use **CSS custom properties** (CSS variables) for theming\n- Design tokens are defined in `src/styles/tokens/` and include 27+ color scales from `@radix-ui/colors`\n- Responsive props use breakpoint-based classes generated via a custom PostCSS plugin (`postcss-breakpoints.cjs`)\n- Layout utility classes are generated from `src/styles/utilities/`\n- The `Theme` component wraps the app and provides theming context (appearance, accent color, gray color, radius, scaling)\n\n### Prop System\n\n- Components use a typed prop definition system in `src/props/prop-def.ts`\n- Most visual props support **responsive objects** (e.g., `size={{ initial: '1', md: '3' }}`)\n- Common shared props: `color`, `highContrast`, `radius`, `variant`, `size`, `weight`, `asChild`\n- Margin props (`m`, `mx`, `my`, `mt`, `mr`, `mb`, `ml`) are extracted via `extractMarginProps()`\n\n## Build System\n\nThe package produces:\n\n1. **CJS output** → `dist/cjs/` (via esbuild)\n2. **ESM output** → `dist/esm/` (via esbuild)\n3. **Type declarations** → `dist/cjs/` and `dist/esm/` (via tsc)\n4. **CSS output** → multiple CSS files at package root:\n   - `styles.css` — Full styles (tokens + components + utilities)\n   - `components.css` — Component styles only\n   - `utilities.css` — Utility classes only\n   - `tokens.css` — Design tokens only\n   - `tokens/base.css`, `tokens/colors/*.css` — Granular token files\n   - `layout.css`, `layout/*.css` — Layout-only subset\n\n## Development Workflow\n\n1. Run `pnpm dev` to start the playground and watch mode\n2. Visit `http://localhost:3000/sink` to see all components\n3. Test pages are at `http://localhost:3000/test/*` for specific scenarios\n4. Demo pages at `http://localhost:3000/demo`\n5. Always run `pnpm build` before submitting a PR to ensure the build succeeds\n6. Visual regression tests compare screenshots across browsers (Chromium, Firefox, WebKit)\n\n## Coding Conventions\n\n- **Prettier** for formatting (single quotes, 100 char width, 120 for CSS)\n- **ESLint** with TypeScript, React Hooks, and jsx-a11y rules\n- **Stylelint** for CSS (enforces selector specificity, class naming patterns)\n- CSS class names follow the pattern `.rt-ComponentName` (e.g., `.rt-Button`, `.rt-DialogContent`)\n- CSS custom properties use `--` prefix namespacing\n- Component files use kebab-case naming (e.g., `alert-dialog.tsx`)\n- Props files export a `*PropDefs` object defining allowed values and defaults\n- Use `classnames` library for conditional class merging\n\n## Release Process\n\n1. PRs that fix bugs or add features should update `packages/radix-ui-themes/CHANGELOG.md`\n2. Releases follow semver and are published via GitHub Releases\n3. The `publish.yml` workflow automatically publishes to npm when a GitHub release is created\n4. Pre-releases use `pnpm publish -r --tag <alpha|beta|rc>`\n\nSee `release-process.md` for the full release checklist.\n\n## Important Notes for Agents\n\n- The **documentation site** is in a separate repo ([`radix-ui/website`](https://github.com/radix-ui/website)), not this one\n- Built CSS files at the package root (e.g., `styles.css`, `components.css`) are **gitignored** — they are build artifacts\n- The `dist/`, `tokens/`, and `layout/` directories are also gitignored build artifacts\n- When modifying a component, update all three files (`.tsx`, `.props.tsx`, `.css`) as needed\n- The `Theme` component (`theme.tsx`) is the root provider — all other components must be used within it\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 other behaviors 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 colm@workos.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": "LICENSE",
    "content": "MIT License\n\nCopyright (c) 2023 WorkOS\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": "[![Radix Themes Logo](https://radix-ui.com/social/themes.png)](https://radix-ui.com/themes)\n\n# Radix Themes\n\n**An open-source component library optimized for fast development, easy maintenance, and accessibility.**\n\n---\n\n## Documentation\n\nFor full documentation, visit [radix-ui.com/themes/docs](https://radix-ui.com/themes/docs).\n\n## Releases\n\nFor changelog, visit [radix-ui.com/themes/docs/overview/releases](https://radix-ui.com/themes/docs/overview/releases).\n\n## Authors\n\n- Benoît Grélard ([@benoitgrelard](https://twitter.com/benoitgrelard))\n- Vlad Moroz ([@vladyslavmoroz](https://twitter.com/vladyslavmoroz))\n- Andy Hook ([@Andy_Hook](https://twitter.com/Andy_Hook))\n- Lucas Motta ([@elmotta](https://twitter.com/elmotta))\n\n---\n\n## Community\n\nSee our [contribution guidelines](./.github/CONTRIBUTING.md) for information on local development and creating a pull request.\n\n- [Github Discussions](https://github.com/radix-ui/themes/discussions) - Ask questions and get answers from other community members.\n- [Discord](https://discord.com/invite/7Xb99uG) - To get involved with the Radix community, ask questions and share tips.\n- [Twitter](https://twitter.com/radix_ui) - To receive updates, announcements, blog posts, and general Radix tips.\n\n## License\n\nLicensed under the MIT License, Copyright © 2023-present [WorkOS](https://workos.com).\n\nSee [LICENSE](./LICENSE) for more information.\n"
  },
  {
    "path": "apps/playground/.gitignore",
    "content": "# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.\n\n# dependencies\n/node_modules\n/.pnp\n.pnp.js\n\n# testing\n/coverage\n/test-results/\n/playwright-report/\n/playwright/.cache/\n\n# next.js\n/.next/\n/out/\n/next-env.d.ts\n\n# production\n/build\n\n# misc\n.DS_Store\n*.pem\ntsconfig.tsbuildinfo\n\n# debug\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\n\n# local env files\n.env.local\n.env.development.local\n.env.test.local\n.env.production.local\n\n# vercel\n.vercel\n"
  },
  {
    "path": "apps/playground/app/(static-theme)/layout.tsx",
    "content": "import { Theme } from './theme';\n\nexport default function Layout({ children }: LayoutProps<'/'>) {\n  return <Theme>{children}</Theme>;\n}\n"
  },
  {
    "path": "apps/playground/app/(static-theme)/theme.tsx",
    "content": "'use client';\n\nimport * as React from 'react';\nimport { Theme as RadixTheme, ThemeProps } from '@radix-ui/themes';\nimport { accentColors, appearances, radii, scalings } from '@radix-ui/themes/props';\nimport { useSearchParams } from 'next/navigation';\n\nfunction ThemeImpl({\n  appearance,\n  accentColor,\n  radius,\n  scaling,\n  ...props\n}: ThemeProps & {\n  appearance: (typeof appearances)[number] | undefined;\n  accentColor: (typeof accentColors)[number] | undefined;\n  radius: (typeof radii)[number] | undefined;\n  scaling: (typeof scalings)[number] | undefined;\n}) {\n  return (\n    <RadixTheme\n      appearance={appearance}\n      accentColor={accentColor}\n      radius={radius}\n      scaling={scaling}\n      {...props}\n    />\n  );\n}\n\nfunction Themeable(props: ThemeProps) {\n  const searchParams = useSearchParams();\n  const appearance = searchParams.get('appearance');\n  const accentColor = searchParams.get('accentColor') ?? 'violet';\n  const radius = searchParams.get('radius');\n  const scaling = searchParams.get('scaling');\n  return (\n    <ThemeImpl\n      appearance={isAppearance(appearance) ? appearance : 'dark'}\n      accentColor={isAccentColor(accentColor) ? accentColor : 'violet'}\n      radius={isRadius(radius) ? radius : undefined}\n      scaling={isScaling(scaling) ? scaling : undefined}\n      {...props}\n    />\n  );\n}\n\nexport function Theme(props: ThemeProps) {\n  return (\n    <React.Suspense\n      fallback={\n        <ThemeImpl appearance=\"dark\" accentColor=\"violet\" radius={undefined} scaling={undefined} />\n      }\n    >\n      <Themeable {...props} />\n    </React.Suspense>\n  );\n}\n\nfunction isAppearance(value: unknown): value is (typeof appearances)[number] {\n  return isString(value) && appearances.includes(value as (typeof appearances)[number]);\n}\n\nfunction isAccentColor(value: unknown): value is (typeof accentColors)[number] {\n  return isString(value) && accentColors.includes(value as (typeof accentColors)[number]);\n}\n\nfunction isRadius(value: unknown): value is (typeof radii)[number] {\n  return isString(value) && radii.includes(value as (typeof radii)[number]);\n}\n\nfunction isScaling(value: unknown): value is (typeof scalings)[number] {\n  return isString(value) && scalings.includes(value as (typeof scalings)[number]);\n}\n\nfunction isString(value: unknown): value is string {\n  return typeof value === 'string';\n}\n"
  },
  {
    "path": "apps/playground/app/(themeable)/demo/page.tsx",
    "content": "import * as React from 'react';\nimport {\n  Avatar,\n  Flex,\n  Separator,\n  Text,\n  Button,\n  IconButton,\n  Dialog,\n  TextField,\n  Select,\n  Box,\n  Container,\n} from '@radix-ui/themes';\nimport { Pencil1Icon } from '@radix-ui/react-icons';\nimport { users } from './users';\n\nexport default function Demo() {\n  return (\n    <Container size=\"1\" py=\"8\" mx=\"4\">\n      {users.map((user) => {\n        return (\n          <React.Fragment key={user.id}>\n            <Flex align=\"center\" justify=\"between\">\n              <Flex align=\"center\" gap=\"3\">\n                <Avatar src={user.image} fallback={user.name[0]} radius=\"full\" />\n                <Flex direction=\"column\">\n                  <Text size=\"2\">{user.name}</Text>\n                  <Text size=\"1\" color=\"gray\">\n                    {user.handle}\n                  </Text>\n                </Flex>\n              </Flex>\n              <Dialog.Root>\n                <Dialog.Trigger>\n                  <IconButton aria-label=\"Edit user\" variant=\"soft\">\n                    <Pencil1Icon />\n                  </IconButton>\n                </Dialog.Trigger>\n                <Dialog.Content>\n                  <Flex direction=\"column\" gap=\"5\">\n                    <Box>\n                      <Dialog.Title>{user.name}</Dialog.Title>\n                      <Dialog.Description>Edit and save details below.</Dialog.Description>\n                    </Box>\n                    <Flex direction=\"column\">\n                      <Flex direction=\"column\">\n                        <Text\n                          size=\"1\"\n                          weight=\"bold\"\n                          color=\"gray\"\n                          mb=\"1\"\n                          as=\"label\"\n                          htmlFor={`name-field-${user.id}`}\n                        >\n                          Name\n                        </Text>\n                        <TextField.Root\n                          defaultValue={user.name}\n                          mb=\"2\"\n                          id={`name-field-${user.id}`}\n                        />\n                      </Flex>\n                      <Flex direction=\"column\">\n                        <Text\n                          size=\"1\"\n                          weight=\"bold\"\n                          color=\"gray\"\n                          mb=\"1\"\n                          id={`role-label-${user.id}`}\n                          as=\"label\"\n                        >\n                          Role\n                        </Text>\n                        <Select.Root defaultValue={user.role}>\n                          <Select.Trigger aria-labelledby={`role-label-${user.id}`} />\n                          <Select.Content variant=\"soft\" color=\"gray\">\n                            <Select.Item value=\"viewer\">Viewer</Select.Item>\n                            <Select.Item value=\"maintainer\">Maintainer</Select.Item>\n                            <Select.Item value=\"contributor\">Contributor</Select.Item>\n                            <Select.Item value=\"admin\">Admin</Select.Item>\n                          </Select.Content>\n                        </Select.Root>\n                      </Flex>\n                    </Flex>\n                    <Flex justify=\"end\" gap=\"3\">\n                      <Dialog.Close>\n                        <Button variant=\"soft\" color=\"gray\">\n                          Cancel\n                        </Button>\n                      </Dialog.Close>\n                      <Dialog.Close>\n                        <Button variant=\"solid\">Save</Button>\n                      </Dialog.Close>\n                    </Flex>\n                  </Flex>\n                </Dialog.Content>\n              </Dialog.Root>\n            </Flex>\n            <Separator size=\"4\" my=\"3\" />\n          </React.Fragment>\n        );\n      })}\n    </Container>\n  );\n}\n"
  },
  {
    "path": "apps/playground/app/(themeable)/demo/users.ts",
    "content": "type User = {\n  id: string;\n  image?: string;\n  name: string;\n  handle: string;\n  role: 'admin' | 'maintainer' | 'contributor' | 'viewer';\n};\n\nexport const users: User[] = [\n  {\n    id: 'user1',\n    image: avatar('1544005313-94ddf0286df2'),\n    name: 'Emmeline Labrie',\n    handle: '@emmeline_labrie',\n    role: 'contributor',\n  },\n  {\n    id: 'user2',\n    image: avatar('1522075469751-3a6694fb2f61'),\n    name: 'Zac Wight',\n    handle: '@zacwight',\n    role: 'admin',\n  },\n  {\n    id: 'user3',\n    image: avatar('1632765854612-9b02b6ec2b15', { x: 0.4, y: 0.35, zoom: 1.05 }),\n    name: 'Zahra Ambessa',\n    handle: '@zahraambessa',\n    role: 'viewer',\n  },\n  {\n    id: 'user4',\n    image: avatar('1533933269825-da140ad3132f', { y: 0.46, zoom: 1.25 }),\n    name: 'Tilde Thygesen',\n    handle: '@tildethygesen',\n    role: 'maintainer',\n  },\n  {\n    id: 'user5',\n    name: 'Joaquin Verdugo',\n    handle: '@joaquinverdugo',\n    role: 'viewer',\n  },\n  {\n    id: 'user6',\n    image: avatar('1496345875659-11f7dd282d1d', { x: 0.49, y: 0.5, zoom: 2.5 }),\n    name: 'Craig Caldwell',\n    handle: '@craigcaldwell',\n    role: 'contributor',\n  },\n  {\n    id: 'user7',\n    name: 'Harrison Mellor',\n    handle: '@harrison_mellor',\n    role: 'viewer',\n  },\n];\n\n//\n//\n//\n//\n//\n//\n//\nfunction avatar(id: string, params?: { x?: number; y?: number; zoom?: number }) {\n  let crop = '';\n  if (params === undefined) {\n    crop = 'faces';\n  } else {\n    const { x = 0.5, y = 0.5, zoom = 1 } = params ?? {};\n    crop = `focalpoint&fp-x=${x}&fp-y=${y}&fp-z=${zoom}`;\n  }\n  return `https://images.unsplash.com/photo-${id}?&w=64&h=64&dpr=2&q=70&crop=${crop}&fit=crop`;\n}\n"
  },
  {
    "path": "apps/playground/app/(themeable)/ghost-balance/page.tsx",
    "content": "import * as React from 'react';\nimport {\n  Section,\n  Flex,\n  Grid,\n  Button,\n  IconButton,\n  Link,\n  Popover,\n  Container,\n} from '@radix-ui/themes';\nimport {\n  ChatBubbleIcon,\n  DotsHorizontalIcon,\n  FileTextIcon,\n  QuestionMarkCircledIcon,\n  SunIcon,\n} from '@radix-ui/react-icons';\n\nexport default function Ghost() {\n  return (\n    <Container py=\"8\" mx=\"4\">\n      <Flex wrap=\"wrap\" width=\"100%\">\n        <Grid columns=\"2\">\n          {(['row', 'column'] as const).map((direction) => (\n            <Section key={direction}>\n              <Flex direction={direction === 'row' ? 'column' : 'row'} gap=\"7\">\n                <Flex\n                  direction={direction}\n                  align={direction === 'row' ? 'center' : 'start'}\n                  gap=\"4\"\n                >\n                  <Button variant=\"ghost\" size=\"1\">\n                    Action\n                  </Button>\n                  <Button variant=\"ghost\" size=\"1\">\n                    Cancel\n                  </Button>\n                  <Button size=\"1\">Save</Button>\n                  <Button size=\"1\">Delete</Button>\n                  <IconButton variant=\"ghost\" size=\"1\" radius=\"full\">\n                    <SunIcon />\n                  </IconButton>\n                </Flex>\n\n                <Flex\n                  direction={direction}\n                  align={direction === 'row' ? 'center' : 'start'}\n                  gap=\"4\"\n                >\n                  <Button variant=\"ghost\" size=\"2\">\n                    Action\n                  </Button>\n                  <Button variant=\"ghost\" size=\"2\">\n                    Cancel\n                  </Button>\n                  <Button size=\"2\">Save</Button>\n                  <Button size=\"2\">Delete</Button>\n                  <IconButton variant=\"ghost\" size=\"2\" radius=\"full\">\n                    <SunIcon />\n                  </IconButton>\n                </Flex>\n\n                <Flex\n                  direction={direction}\n                  align={direction === 'row' ? 'center' : 'start'}\n                  gap=\"5\"\n                >\n                  <Button variant=\"ghost\" size=\"3\">\n                    Action\n                  </Button>\n                  <Button variant=\"ghost\" size=\"3\">\n                    Cancel\n                  </Button>\n                  <Button size=\"3\">Save</Button>\n                  <Button size=\"3\">Delete</Button>\n                  <IconButton variant=\"ghost\" size=\"3\" radius=\"full\">\n                    <SunIcon />\n                  </IconButton>\n                </Flex>\n\n                <Flex\n                  direction={direction}\n                  align={direction === 'row' ? 'center' : 'start'}\n                  gap=\"4\"\n                >\n                  <Button variant=\"ghost\" size=\"2\">\n                    <QuestionMarkCircledIcon />\n                    Help\n                  </Button>\n                  <Button variant=\"ghost\" size=\"2\">\n                    <ChatBubbleIcon />\n                    Feedback\n                  </Button>\n                  <Flex asChild align=\"center\" gap=\"1\">\n                    <Link size=\"2\" href=\"#\">\n                      <FileTextIcon />\n                      Docs\n                    </Link>\n                  </Flex>\n                  <IconButton variant=\"ghost\" size=\"2\" radius=\"full\">\n                    <SunIcon />\n                  </IconButton>\n                </Flex>\n\n                <Flex\n                  direction={direction}\n                  align={direction === 'row' ? 'center' : 'start'}\n                  gap=\"4\"\n                >\n                  <Popover.Root>\n                    <Popover.Trigger>\n                      <Button variant=\"ghost\">Open</Button>\n                    </Popover.Trigger>\n                    <Popover.Content sideOffset={0} style={{ padding: 100 }} />\n                  </Popover.Root>\n\n                  <Popover.Root>\n                    <Popover.Trigger>\n                      <IconButton variant=\"ghost\">\n                        <DotsHorizontalIcon />\n                      </IconButton>\n                    </Popover.Trigger>\n                    <Popover.Content sideOffset={0} style={{ padding: 100 }} />\n                  </Popover.Root>\n                </Flex>\n              </Flex>\n            </Section>\n          ))}\n        </Grid>\n        <Flex direction=\"column\" gap=\"2\" mb=\"5\">\n          <Flex align=\"center\" gap=\"5\">\n            <Button variant=\"ghost\">Cancel</Button>\n            <Button>Save</Button>\n          </Flex>\n\n          <Flex align=\"center\">\n            <Button variant=\"ghost\" mr=\"5\">\n              Cancel\n            </Button>\n            <Button>Save</Button>\n          </Flex>\n        </Flex>\n        <Flex direction=\"column\" gap=\"2\" style={{ width: 500 }}>\n          <Flex align=\"center\" justify=\"between\">\n            <Button variant=\"ghost\">Cancel</Button>\n            <Button>Save</Button>\n          </Flex>\n\n          <Flex align=\"center\">\n            <Button variant=\"ghost\" mr=\"auto\">\n              Cancel\n            </Button>\n            <Button>Save</Button>\n          </Flex>\n        </Flex>\n      </Flex>\n    </Container>\n  );\n}\n"
  },
  {
    "path": "apps/playground/app/(themeable)/layout.tsx",
    "content": "import { Theme, ThemePanel } from '@radix-ui/themes';\n\nexport default function Layout({ children }: LayoutProps<'/'>) {\n  return (\n    <Theme appearance=\"dark\" accentColor=\"violet\">\n      {children}\n      <ThemePanel defaultOpen={false} />\n    </Theme>\n  );\n}\n"
  },
  {
    "path": "apps/playground/app/(themeable)/sink/_components.tsx",
    "content": "import type * as React from 'react';\nimport {\n  ContextMenu,\n  DropdownMenu,\n  Flex,\n  Grid,\n  Select,\n  Switch,\n  Table,\n  Text,\n  TextArea,\n  TextField,\n  Button,\n  Heading,\n} from '@radix-ui/themes';\n\nexport function DropdownMenuContentDemo(props: React.ComponentProps<typeof DropdownMenu.Content>) {\n  return (\n    <DropdownMenu.Content {...props}>\n      <DropdownMenu.Item shortcut=\"⌘+T\">New Tab</DropdownMenu.Item>\n      <DropdownMenu.Item shortcut=\"⌘+N\">New Window</DropdownMenu.Item>\n      <DropdownMenu.Item shortcut=\"⇧+⌘+N\" disabled>\n        New Private Window\n      </DropdownMenu.Item>\n      <DropdownMenu.Sub>\n        <DropdownMenu.SubTrigger>More Tools</DropdownMenu.SubTrigger>\n\n        <DropdownMenu.SubContent>\n          <DropdownMenu.Item shortcut=\"⌘+S\">Save Page As…</DropdownMenu.Item>\n          <DropdownMenu.Item>Create Shortcut…</DropdownMenu.Item>\n          <DropdownMenu.Item>Name Window…</DropdownMenu.Item>\n          <DropdownMenu.Separator />\n          <DropdownMenu.Item>Developer Tools</DropdownMenu.Item>\n        </DropdownMenu.SubContent>\n      </DropdownMenu.Sub>\n\n      <DropdownMenu.Separator />\n      <DropdownMenu.Group>\n        <DropdownMenu.Label>Other</DropdownMenu.Label>\n        <DropdownMenu.Item shortcut=\"⌘+P\">Print</DropdownMenu.Item>\n        <DropdownMenu.Item shortcut=\"⌘+Q\" asChild>\n          <a href=\"#logout\">Logout</a>\n        </DropdownMenu.Item>\n      </DropdownMenu.Group>\n\n      {props.variant === 'solid' && (\n        <>\n          <DropdownMenu.Separator />\n\n          <DropdownMenu.CheckboxItem shortcut=\"⌘+B\" checked>\n            Show Bookmarks\n          </DropdownMenu.CheckboxItem>\n          <DropdownMenu.CheckboxItem>Show Full URLs</DropdownMenu.CheckboxItem>\n\n          <DropdownMenu.Separator />\n\n          <DropdownMenu.Label>People</DropdownMenu.Label>\n          <DropdownMenu.RadioGroup value=\"pedro\">\n            <DropdownMenu.RadioItem value=\"pedro\">Pedro Duarte</DropdownMenu.RadioItem>\n            <DropdownMenu.RadioItem value=\"colm\">Colm Tuite</DropdownMenu.RadioItem>\n          </DropdownMenu.RadioGroup>\n\n          <DropdownMenu.Separator />\n\n          <DropdownMenu.Item color=\"red\">Delete</DropdownMenu.Item>\n        </>\n      )}\n    </DropdownMenu.Content>\n  );\n}\n\nexport function ContextMenuContentDemo(props: React.ComponentProps<typeof ContextMenu.Content>) {\n  return (\n    <ContextMenu.Content {...props}>\n      <ContextMenu.Item shortcut=\"⌘+T\">New Tab</ContextMenu.Item>\n      <ContextMenu.Item shortcut=\"⌘+N\">New Window</ContextMenu.Item>\n      <ContextMenu.Item shortcut=\"⇧+⌘+N\" disabled>\n        New Private Window\n      </ContextMenu.Item>\n      <ContextMenu.Sub>\n        <ContextMenu.SubTrigger>More Tools</ContextMenu.SubTrigger>\n\n        <ContextMenu.SubContent>\n          <ContextMenu.Item shortcut=\"⌘+S\">Save Page As…</ContextMenu.Item>\n          <ContextMenu.Item>Create Shortcut…</ContextMenu.Item>\n          <ContextMenu.Item>Name Window…</ContextMenu.Item>\n          <ContextMenu.Separator />\n          <ContextMenu.Item>Developer Tools</ContextMenu.Item>\n        </ContextMenu.SubContent>\n      </ContextMenu.Sub>\n\n      <ContextMenu.Separator />\n      <ContextMenu.Group>\n        <ContextMenu.Label>Other</ContextMenu.Label>\n        <ContextMenu.Item shortcut=\"⌘+P\">Print</ContextMenu.Item>\n        <ContextMenu.Item shortcut=\"⌘+Q\" asChild>\n          <a href=\"#logout\">Logout</a>\n        </ContextMenu.Item>\n      </ContextMenu.Group>\n\n      {props.variant === 'solid' && (\n        <>\n          <ContextMenu.Separator />\n\n          <ContextMenu.CheckboxItem shortcut=\"⌘+B\" checked>\n            Show Bookmarks\n          </ContextMenu.CheckboxItem>\n          <ContextMenu.CheckboxItem>Show Full URLs</ContextMenu.CheckboxItem>\n\n          <ContextMenu.Separator />\n\n          <ContextMenu.Label>People</ContextMenu.Label>\n          <ContextMenu.RadioGroup value=\"pedro\">\n            <ContextMenu.RadioItem value=\"pedro\">Pedro Duarte</ContextMenu.RadioItem>\n            <ContextMenu.RadioItem value=\"colm\">Colm Tuite</ContextMenu.RadioItem>\n          </ContextMenu.RadioGroup>\n\n          <DropdownMenu.Separator />\n\n          <ContextMenu.Item color=\"red\">Delete</ContextMenu.Item>\n        </>\n      )}\n    </ContextMenu.Content>\n  );\n}\n\ntype RightClickAreaProps = React.ComponentProps<typeof Grid> & {\n  size: '1' | '2';\n};\nexport function RightClickArea({ size = '2', ...props }: RightClickAreaProps) {\n  return (\n    <Grid\n      height={size === '2' ? '48px' : '32px'}\n      px=\"3\"\n      {...props}\n      style={{\n        placeItems: 'center',\n        borderRadius: 'var(--radius-3)',\n        border: '1px dashed var(--accent-6)',\n        cursor: 'default',\n        ...props.style,\n      }}\n    >\n      <Text size=\"1\" color=\"gray\">\n        Right-click here\n      </Text>\n    </Grid>\n  );\n}\n\nexport function SelectItemsDemo() {\n  return (\n    <>\n      <Select.Group>\n        <Select.Label>Fruits</Select.Label>\n        <Select.Item value=\"orange\">Orange</Select.Item>\n        <Select.Item value=\"apple\">Apple</Select.Item>\n        <Select.Item value=\"grapes\" disabled>\n          Grape\n        </Select.Item>\n      </Select.Group>\n\n      <Select.Separator />\n\n      <Select.Group>\n        <Select.Label>Vegetables</Select.Label>\n        <Select.Item value=\"carrot\">Carrot</Select.Item>\n        <Select.Item value=\"potato\">Potato</Select.Item>\n      </Select.Group>\n    </>\n  );\n}\n\nexport function AspectRatioImage() {\n  return (\n    <img\n      src=\"https://images.unsplash.com/photo-1605030753481-bb38b08c384a?&auto=format&fit=crop&w=400&q=80\"\n      alt=\"A house in a forest\"\n      style={{ objectFit: 'cover', width: '100%', height: '100%' }}\n    />\n  );\n}\n\nexport function CustomUserIcon() {\n  return (\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      viewBox=\"0 0 24 24\"\n      fill=\"currentColor\"\n      style={{ width: '60%', height: '60%' }}\n    >\n      <path\n        fillRule=\"evenodd\"\n        d=\"M7.5 6a4.5 4.5 0 119 0 4.5 4.5 0 01-9 0zM3.751 20.105a8.25 8.25 0 0116.498 0 .75.75 0 01-.437.695A18.683 18.683 0 0112 22.5c-2.786 0-5.433-.608-7.812-1.7a.75.75 0 01-.437-.695z\"\n        clipRule=\"evenodd\"\n      />\n    </svg>\n  );\n}\n\nexport function SampleNestedUI({\n  children,\n  title,\n  ...props\n}: React.ComponentPropsWithRef<typeof Flex>) {\n  return (\n    <Flex\n      p=\"5\"\n      gap=\"9\"\n      {...props}\n      style={{\n        boxShadow: '0 0 0 1px var(--gray-a6)',\n        borderRadius: 'var(--radius-2)',\n      }}\n    >\n      <div>\n        <Heading size=\"2\" trim=\"start\" mb=\"3\">\n          {title}\n        </Heading>\n        <Flex direction=\"column\" gap=\"3\">\n          <Grid gap=\"1\">\n            <Text as=\"p\" weight=\"bold\">\n              Feedback\n            </Text>\n            <TextArea variant=\"classic\" placeholder=\"Your feedback\" />\n          </Grid>\n          <Flex asChild justify=\"between\">\n            <label>\n              <Text color=\"gray\" size=\"2\">\n                Attach screenshot?\n              </Text>\n              <Switch size=\"1\" variant=\"classic\" defaultChecked highContrast />\n            </label>\n          </Flex>\n          <Grid columns=\"2\" gap=\"2\">\n            <Button variant=\"surface\">Back</Button>\n            <Button variant=\"classic\">Submit</Button>\n          </Grid>\n        </Flex>\n      </div>\n\n      {children}\n    </Flex>\n  );\n}\n\nexport function PlaygroundForm({\n  size,\n  ...props\n}: React.ComponentProps<typeof Flex> & {\n  size?: React.ComponentProps<typeof TextField.Root>['size'];\n}) {\n  return (\n    <Flex direction=\"column\" gap=\"3\" {...props}>\n      <Grid gap=\"1\">\n        <Text size={size} weight=\"bold\">\n          Email\n        </Text>\n        <TextField.Root size={size} variant=\"classic\" placeholder=\"Your email\" />\n      </Grid>\n      <Grid gap=\"1\">\n        <Text size={size} weight=\"bold\">\n          Subject\n        </Text>\n        <Select.Root defaultValue=\"customer\" size={size}>\n          <Select.Trigger variant=\"classic\" />\n          <Select.Content>\n            <Select.Item value=\"customer\">Customer feedback</Select.Item>\n            <Select.Item value=\"help\">Help</Select.Item>\n          </Select.Content>\n        </Select.Root>\n      </Grid>\n      <Grid gap=\"1\">\n        <Text size={size} weight=\"bold\">\n          Feedback\n        </Text>\n        <TextArea size={size} variant=\"classic\" placeholder=\"Your feedback\" />\n      </Grid>\n      <Grid columns=\"2\" gap=\"2\">\n        <Button size={size} variant=\"surface\">\n          Back\n        </Button>\n        <Button size={size} variant=\"classic\">\n          Submit\n        </Button>\n      </Grid>\n    </Flex>\n  );\n}\n\nexport function TableExample(\n  props: React.ComponentProps<typeof Table.Root> & { noEmail?: boolean },\n) {\n  const { noEmail, ...rootProps } = props;\n  return (\n    <Table.Root {...rootProps}>\n      <Table.Header>\n        <Table.Row>\n          <Table.ColumnHeaderCell>Full name</Table.ColumnHeaderCell>\n          {!noEmail && <Table.ColumnHeaderCell>Email</Table.ColumnHeaderCell>}\n          <Table.ColumnHeaderCell>Group</Table.ColumnHeaderCell>\n        </Table.Row>\n      </Table.Header>\n      <Table.Body>\n        <Table.Row>\n          <Table.RowHeaderCell>Andy</Table.RowHeaderCell>\n          {!noEmail && <Table.Cell>andy@workos.com</Table.Cell>}\n          <Table.Cell>Developer</Table.Cell>\n        </Table.Row>\n        <Table.Row>\n          <Table.RowHeaderCell>Benoit</Table.RowHeaderCell>\n          {!noEmail && <Table.Cell>benoit@workos.com</Table.Cell>}\n          <Table.Cell>Admin</Table.Cell>\n        </Table.Row>\n        <Table.Row>\n          <Table.RowHeaderCell>Lucas</Table.RowHeaderCell>\n          {!noEmail && <Table.Cell>lucas@workos.com</Table.Cell>}\n          <Table.Cell>Developer</Table.Cell>\n        </Table.Row>\n        <Table.Row>\n          <Table.RowHeaderCell>Vlad</Table.RowHeaderCell>\n          {!noEmail && <Table.Cell>vlad@workos.com</Table.Cell>}\n          <Table.Cell>Designer</Table.Cell>\n        </Table.Row>\n      </Table.Body>\n    </Table.Root>\n  );\n}\n"
  },
  {
    "path": "apps/playground/app/(themeable)/sink/_utils.tsx",
    "content": "export function upperFirst(string: string) {\n  return string.charAt(0).toUpperCase() + string.slice(1);\n}\n\nexport const colorsRegular = [\n  'tomato',\n  'red',\n  'ruby',\n  'crimson',\n  'pink',\n  'plum',\n  'purple',\n  'violet',\n  'iris',\n  'indigo',\n  'blue',\n  'cyan',\n  'teal',\n  'jade',\n  'green',\n  'grass',\n  'brown',\n  'orange',\n] as const;\nexport const colorsBright = ['sky', 'mint', 'lime', 'yellow', 'amber'] as const;\nexport const colorsMetal = ['gold', 'bronze'] as const;\nexport const accentColorsGrouped = [\n  { label: 'Regulars', values: colorsRegular },\n  { label: 'Brights', values: colorsBright },\n  { label: 'Metals', values: colorsMetal },\n  { label: 'Gray', values: ['gray'] as const },\n];\n"
  },
  {
    "path": "apps/playground/app/(themeable)/sink/alert-dialog/page.tsx",
    "content": "import { AlertDialog, Button, Flex } from '@radix-ui/themes';\nimport { DocsSection, DocsSectionBody, DocsSectionHeading } from '../docs-section';\n\nexport default function AlertDialogPage() {\n  return (\n    <DocsSection>\n      <DocsSectionHeading>AlertDialog</DocsSectionHeading>\n      <DocsSectionBody>\n        <AlertDialog.Root>\n          <AlertDialog.Trigger>\n            <Button variant=\"solid\">Open</Button>\n          </AlertDialog.Trigger>\n          <AlertDialog.Content maxWidth=\"450px\">\n            <Flex direction=\"column\" gap=\"3\">\n              <AlertDialog.Title>Revoke setup link</AlertDialog.Title>\n              <AlertDialog.Description>\n                The setup link will no longer be accessible and any existing setup sessions will be\n                revoked.\n              </AlertDialog.Description>\n              <Flex gap=\"3\" mt=\"4\" justify=\"end\">\n                <AlertDialog.Cancel>\n                  <Button variant=\"soft\" color=\"gray\">\n                    Cancel\n                  </Button>\n                </AlertDialog.Cancel>\n                <AlertDialog.Action>\n                  <Button variant=\"solid\" color=\"red\">\n                    Revoke link\n                  </Button>\n                </AlertDialog.Action>\n              </Flex>\n            </Flex>\n          </AlertDialog.Content>\n        </AlertDialog.Root>\n      </DocsSectionBody>\n    </DocsSection>\n  );\n}\n"
  },
  {
    "path": "apps/playground/app/(themeable)/sink/aspect-ratio/page.tsx",
    "content": "import { AspectRatio, Grid, Text } from '@radix-ui/themes';\nimport { DocsSection, DocsSectionBody, DocsSectionHeading } from '../docs-section';\nimport { AspectRatioImage } from '../_components';\n\nexport default function AspectRatioPage() {\n  return (\n    <DocsSection>\n      <DocsSectionHeading>AspectRatio</DocsSectionHeading>\n      <DocsSectionBody>\n        <Grid gap=\"5\" columns=\"4\">\n          <div>\n            <Text as=\"p\" size=\"1\" color=\"gray\" mb=\"2\">\n              1x2\n            </Text>\n            <AspectRatio ratio={1 / 2}>\n              <AspectRatioImage />\n            </AspectRatio>\n          </div>\n          <div>\n            <Text as=\"p\" size=\"1\" color=\"gray\" mb=\"2\">\n              1x1\n            </Text>\n            <AspectRatio>\n              <AspectRatioImage />\n            </AspectRatio>\n          </div>\n          <div>\n            <Text as=\"p\" size=\"1\" color=\"gray\" mb=\"2\">\n              16x9\n            </Text>\n            <AspectRatio ratio={16 / 9}>\n              <AspectRatioImage />\n            </AspectRatio>\n          </div>\n          <div>\n            <Text as=\"p\" size=\"1\" color=\"gray\" mb=\"2\">\n              2x1\n            </Text>\n            <AspectRatio ratio={2 / 1}>\n              <AspectRatioImage />\n            </AspectRatio>\n          </div>\n        </Grid>\n      </DocsSectionBody>\n    </DocsSection>\n  );\n}\n"
  },
  {
    "path": "apps/playground/app/(themeable)/sink/avatar/page.tsx",
    "content": "import { Fragment } from 'react';\nimport { Avatar, Box, Code, Flex, Table, Text } from '@radix-ui/themes';\nimport { avatarPropDefs } from '@radix-ui/themes/props';\nimport { DocsSection, DocsSectionBody, DocsSectionHeading } from '../docs-section';\nimport { CustomUserIcon } from '../_components';\nimport { accentColorsGrouped } from '../_utils';\n\nexport default function AvatarPage() {\n  return (\n    <DocsSection>\n      <DocsSectionHeading>Avatar</DocsSectionHeading>\n      <DocsSectionBody>\n        <Table.Root>\n          <Table.Header>\n            <Table.Row>\n              <Table.ColumnHeaderCell />\n              <Table.ColumnHeaderCell>image</Table.ColumnHeaderCell>\n              <Table.ColumnHeaderCell>1 letter</Table.ColumnHeaderCell>\n              <Table.ColumnHeaderCell>2 letters</Table.ColumnHeaderCell>\n              <Table.ColumnHeaderCell>icon</Table.ColumnHeaderCell>\n              <Table.ColumnHeaderCell>+ high-contrast</Table.ColumnHeaderCell>\n              <Table.ColumnHeaderCell>gray</Table.ColumnHeaderCell>\n              <Table.ColumnHeaderCell>+ high-contrast</Table.ColumnHeaderCell>\n            </Table.Row>\n          </Table.Header>\n          <Table.Body>\n            {avatarPropDefs.variant.values.map((variant) => (\n              <Table.Row key={variant}>\n                <Table.RowHeaderCell>{variant}</Table.RowHeaderCell>\n                <Table.Cell>\n                  <Avatar variant={variant} src=\"./api/avatar\" fallback=\"D\" />\n                </Table.Cell>\n                <Table.Cell>\n                  <Avatar variant={variant} fallback=\"D\" />\n                </Table.Cell>\n                <Table.Cell>\n                  <Avatar variant={variant} fallback=\"BG\" />\n                </Table.Cell>\n                <Table.Cell>\n                  <Avatar variant={variant} fallback={<CustomUserIcon />} />\n                </Table.Cell>\n                <Table.Cell>\n                  <Avatar variant={variant} highContrast fallback=\"D\" />\n                </Table.Cell>\n                <Table.Cell>\n                  <Avatar variant={variant} color=\"gray\" fallback=\"D\" />\n                </Table.Cell>\n                <Table.Cell>\n                  <Avatar variant={variant} color=\"gray\" highContrast fallback=\"D\" />\n                </Table.Cell>\n              </Table.Row>\n            ))}\n          </Table.Body>\n        </Table.Root>\n\n        <Table.Root>\n          <Table.Body>\n            {avatarPropDefs.size.values.map((size) => (\n              <Table.Row key={size}>\n                <Table.RowHeaderCell>{size}</Table.RowHeaderCell>\n                <Table.Cell>\n                  <Flex gap=\"3\">\n                    <Avatar size={size} src=\"./api/avatar\" fallback=\"D\" />\n                    <Avatar size={size} fallback=\"D\" />\n                    <Avatar size={size} fallback=\"BG\" />\n                  </Flex>\n                </Table.Cell>\n              </Table.Row>\n            ))}\n          </Table.Body>\n        </Table.Root>\n\n        <Text as=\"p\" my=\"5\">\n          <Code>radius</Code> can be set per instance:\n        </Text>\n\n        <details>\n          <summary>\n            <Text size=\"2\" color=\"gray\">\n              See specific radius examples\n            </Text>\n          </summary>\n          <Box mt=\"3\">\n            <Table.Root>\n              <Table.Header>\n                <Table.Row>\n                  <Table.ColumnHeaderCell />\n                  {avatarPropDefs.size.values.map((size) => (\n                    <Table.ColumnHeaderCell key={size}>size {size}</Table.ColumnHeaderCell>\n                  ))}\n                </Table.Row>\n              </Table.Header>\n              <Table.Body>\n                {avatarPropDefs.radius.values.map((radius) => (\n                  <Table.Row key={radius}>\n                    <Table.RowHeaderCell>{radius}</Table.RowHeaderCell>\n                    {avatarPropDefs.size.values.map((size) => (\n                      <Table.Cell key={size}>\n                        <Avatar size={size} radius={radius} src=\"./api/avatar\" fallback=\"D\" />\n                      </Table.Cell>\n                    ))}\n                  </Table.Row>\n                ))}\n              </Table.Body>\n            </Table.Root>\n          </Box>\n        </details>\n\n        <Text as=\"p\" my=\"5\">\n          <Code>color</Code> can be set per instance:\n        </Text>\n\n        <details>\n          <summary>\n            <Text size=\"2\" color=\"gray\">\n              See colors & variants combinations\n            </Text>\n          </summary>\n          {accentColorsGrouped.map(({ label, values }) => (\n            <Fragment key={label}>\n              <Text as=\"p\" weight=\"bold\" mt=\"6\" mb=\"4\">\n                {label}\n              </Text>\n              <Table.Root>\n                <Table.Header>\n                  <Table.Row>\n                    <Table.ColumnHeaderCell />\n                    {avatarPropDefs.variant.values.map((variant) => (\n                      <Table.ColumnHeaderCell key={variant}>{variant}</Table.ColumnHeaderCell>\n                    ))}\n                  </Table.Row>\n                </Table.Header>\n                <Table.Body>\n                  {values.map((color) => (\n                    <Table.Row key={color}>\n                      <Table.RowHeaderCell>{color}</Table.RowHeaderCell>\n                      {avatarPropDefs.variant.values.map((variant) => (\n                        <Table.Cell key={variant}>\n                          <Avatar variant={variant} color={color} fallback=\"D\" />\n                          <Avatar\n                            variant={variant}\n                            color={color}\n                            highContrast\n                            fallback=\"D\"\n                            ml=\"2\"\n                          />\n                        </Table.Cell>\n                      ))}\n                    </Table.Row>\n                  ))}\n                </Table.Body>\n              </Table.Root>\n            </Fragment>\n          ))}\n        </details>\n      </DocsSectionBody>\n    </DocsSection>\n  );\n}\n"
  },
  {
    "path": "apps/playground/app/(themeable)/sink/badge/page.tsx",
    "content": "import { Fragment } from 'react';\nimport { Badge, Box, Code, Flex, Text, Table } from '@radix-ui/themes';\nimport { badgePropDefs } from '@radix-ui/themes/props';\nimport { DocsSection, DocsSectionBody, DocsSectionHeading } from '../docs-section';\nimport { accentColorsGrouped, upperFirst } from '../_utils';\n\nexport default function BadgePage() {\n  return (\n    <DocsSection>\n      <DocsSectionHeading>Badge</DocsSectionHeading>\n      <DocsSectionBody>\n        <Table.Root>\n          <Table.Header>\n            <Table.Row>\n              <Table.ColumnHeaderCell />\n              {badgePropDefs.size.values.map((size) => (\n                <Table.ColumnHeaderCell key={size}>size {size}</Table.ColumnHeaderCell>\n              ))}\n            </Table.Row>\n          </Table.Header>\n          <Table.Body>\n            {badgePropDefs.variant.values.map((variant) => (\n              <Table.Row key={variant}>\n                <Table.RowHeaderCell>{variant}</Table.RowHeaderCell>\n                {badgePropDefs.size.values.map((size) => (\n                  <Table.Cell key={size}>\n                    <Flex key={variant} gap=\"3\" wrap=\"wrap\" style={{ maxWidth: 600 }}>\n                      {(['orange', 'violet', 'cyan', 'gray'] as const).map((color) => (\n                        <Flex key={color} direction=\"column\" gap=\"1\">\n                          <Badge size={size} variant={variant} color={color}>\n                            {upperFirst(color)}\n                          </Badge>\n                        </Flex>\n                      ))}\n                    </Flex>\n                  </Table.Cell>\n                ))}\n              </Table.Row>\n            ))}\n          </Table.Body>\n        </Table.Root>\n\n        <Text as=\"p\" my=\"5\">\n          <Code>radius</Code> can be set per instance:\n        </Text>\n\n        <details>\n          <summary>\n            <Text size=\"2\" color=\"gray\">\n              See specific radius examples\n            </Text>\n          </summary>\n          <Box mt=\"3\">\n            <Table.Root>\n              <Table.Header>\n                <Table.Row>\n                  <Table.ColumnHeaderCell />\n                  {badgePropDefs.size.values.map((size) => (\n                    <Table.ColumnHeaderCell key={size}>size {size}</Table.ColumnHeaderCell>\n                  ))}\n                </Table.Row>\n              </Table.Header>\n              <Table.Body>\n                {badgePropDefs.radius.values.map((radius) => (\n                  <Table.Row key={radius}>\n                    <Table.RowHeaderCell>{radius}</Table.RowHeaderCell>\n                    {badgePropDefs.size.values.map((size) => (\n                      <Table.Cell key={size}>\n                        <Badge size={size} radius={radius}>\n                          {upperFirst(radius)}\n                        </Badge>\n                      </Table.Cell>\n                    ))}\n                  </Table.Row>\n                ))}\n              </Table.Body>\n            </Table.Root>\n          </Box>\n        </details>\n\n        <Text as=\"p\" my=\"5\">\n          <Code>color</Code> can be set per instance:\n        </Text>\n\n        <details>\n          <summary>\n            <Text size=\"2\" color=\"gray\">\n              See colors & variants combinations\n            </Text>\n          </summary>\n          {accentColorsGrouped.map(({ label, values }) => (\n            <Fragment key={label}>\n              <Text as=\"p\" weight=\"bold\" mt=\"6\" mb=\"4\">\n                {label}\n              </Text>\n              <Table.Root>\n                <Table.Header>\n                  <Table.Row>\n                    <Table.ColumnHeaderCell />\n                    {badgePropDefs.variant.values.map((variant) => (\n                      <Table.ColumnHeaderCell key={variant}>{variant}</Table.ColumnHeaderCell>\n                    ))}\n                  </Table.Row>\n                </Table.Header>\n                <Table.Body>\n                  {values.map((color) => (\n                    <Table.Row key={color}>\n                      <Table.RowHeaderCell>{color}</Table.RowHeaderCell>\n                      {badgePropDefs.variant.values.map((variant) => (\n                        <Table.Cell key={variant}>\n                          <Flex direction=\"column\" align=\"start\" gap=\"1\">\n                            <Badge variant={variant} color={color}>\n                              {color}\n                            </Badge>\n                            <Badge variant={variant} color={color} highContrast>\n                              {color}\n                            </Badge>\n                          </Flex>\n                        </Table.Cell>\n                      ))}\n                    </Table.Row>\n                  ))}\n                </Table.Body>\n              </Table.Root>\n            </Fragment>\n          ))}\n        </details>\n      </DocsSectionBody>\n    </DocsSection>\n  );\n}\n"
  },
  {
    "path": "apps/playground/app/(themeable)/sink/blockquote/page.tsx",
    "content": "import { Blockquote, Flex, Text } from '@radix-ui/themes';\nimport { DocsSection, DocsSectionBody, DocsSectionHeading } from '../docs-section';\n\nexport default function BlockquotePage() {\n  return (\n    <DocsSection>\n      <DocsSectionHeading>Blockquote</DocsSectionHeading>\n      <DocsSectionBody>\n        <Flex direction=\"column\" align=\"start\" gap=\"5\">\n          <Blockquote size=\"6\" style={{ maxWidth: '50ch' }}>\n            The goal of typography is to relate font size, line height, and line width in a\n            proportional way that maximizes beauty and makes reading easier and more pleasant. The\n            question is: What proportion(s) will give us the best results?\n          </Blockquote>\n\n          <Blockquote size=\"4\" style={{ maxWidth: '50ch' }} color=\"gray\" highContrast>\n            The goal of typography is to relate font size, line height, and line width in a\n            proportional way that maximizes <Text color=\"pink\">beauty</Text> and makes reading\n            easier and more pleasant. The question is: What proportion(s) will give us the best\n            results?\n          </Blockquote>\n\n          <Blockquote size=\"2\" style={{ maxWidth: '50ch' }} color=\"blue\">\n            The goal of typography is to relate font size, line height, and line width in a\n            proportional way that maximizes <Text highContrast>beauty</Text> and makes reading\n            easier and more pleasant. The question is: What proportion(s) will give us the best\n            results?\n          </Blockquote>\n        </Flex>\n      </DocsSectionBody>\n    </DocsSection>\n  );\n}\n"
  },
  {
    "path": "apps/playground/app/(themeable)/sink/button/page.tsx",
    "content": "import { Fragment } from 'react';\nimport { ArrowRightIcon, Pencil2Icon } from '@radix-ui/react-icons';\nimport { Button, Box, Text, Table, Code } from '@radix-ui/themes';\nimport { buttonPropDefs } from '@radix-ui/themes/props';\nimport { DocsSection, DocsSectionBody, DocsSectionHeading } from '../docs-section';\nimport { accentColorsGrouped } from '../_utils';\n\nexport default function ButtonPage() {\n  return (\n    <DocsSection>\n      <DocsSectionHeading>Button</DocsSectionHeading>\n      <DocsSectionBody>\n        <Table.Root>\n          <Table.Header>\n            <Table.Row>\n              <Table.ColumnHeaderCell />\n              {buttonPropDefs.size.values.map((size) => (\n                <Table.ColumnHeaderCell key={size}>size {size}</Table.ColumnHeaderCell>\n              ))}\n              <Table.ColumnHeaderCell>+ high-contrast</Table.ColumnHeaderCell>\n              <Table.ColumnHeaderCell />\n              <Table.ColumnHeaderCell>gray</Table.ColumnHeaderCell>\n              <Table.ColumnHeaderCell>+ high-contrast</Table.ColumnHeaderCell>\n              <Table.ColumnHeaderCell />\n              <Table.ColumnHeaderCell>disabled</Table.ColumnHeaderCell>\n            </Table.Row>\n          </Table.Header>\n          <Table.Body>\n            {buttonPropDefs.variant.values.map((variant) => (\n              <Table.Row key={variant}>\n                <Table.RowHeaderCell>{variant}</Table.RowHeaderCell>\n                {buttonPropDefs.size.values.map((size) => (\n                  <Table.Cell key={size}>\n                    <Button size={size} variant={variant}>\n                      Next <ArrowRightIcon />\n                    </Button>\n                  </Table.Cell>\n                ))}\n                <Table.Cell>\n                  <Button variant={variant} highContrast>\n                    Next <ArrowRightIcon />\n                  </Button>\n                </Table.Cell>\n                <Table.Cell />\n                <Table.Cell>\n                  <Button variant={variant} color=\"gray\">\n                    Next <ArrowRightIcon />\n                  </Button>\n                </Table.Cell>\n                <Table.Cell>\n                  <Button variant={variant} color=\"gray\" highContrast>\n                    Next <ArrowRightIcon />\n                  </Button>\n                </Table.Cell>\n                <Table.Cell />\n                <Table.Cell>\n                  <Button variant={variant} disabled>\n                    Next <ArrowRightIcon />\n                  </Button>\n                </Table.Cell>\n              </Table.Row>\n            ))}\n          </Table.Body>\n        </Table.Root>\n\n        <Text as=\"p\" my=\"5\">\n          <Code>radius</Code> can be set per instance:\n        </Text>\n\n        <details>\n          <summary>\n            <Text size=\"2\" color=\"gray\">\n              See specific radius examples\n            </Text>\n          </summary>\n          <Box mt=\"3\">\n            <Table.Root>\n              <Table.Header>\n                <Table.Row>\n                  <Table.ColumnHeaderCell />\n                  {buttonPropDefs.size.values.map((size) => (\n                    <Table.ColumnHeaderCell key={size}>size {size}</Table.ColumnHeaderCell>\n                  ))}\n                </Table.Row>\n              </Table.Header>\n              <Table.Body>\n                {buttonPropDefs.radius.values.map((radius) => (\n                  <Table.Row key={radius}>\n                    <Table.RowHeaderCell>{radius}</Table.RowHeaderCell>\n                    {buttonPropDefs.size.values.map((size) => (\n                      <Table.Cell key={size}>\n                        <Button size={size} radius={radius}>\n                          Next <ArrowRightIcon />\n                        </Button>\n                      </Table.Cell>\n                    ))}\n                  </Table.Row>\n                ))}\n              </Table.Body>\n            </Table.Root>\n          </Box>\n        </details>\n\n        <Text as=\"p\" my=\"5\">\n          <Code>color</Code> can be set per instance:\n        </Text>\n\n        <details>\n          <summary>\n            <Text size=\"2\" color=\"gray\">\n              See colors & variants combinations\n            </Text>\n          </summary>\n          {accentColorsGrouped.map(({ label, values }) => (\n            <Fragment key={label}>\n              <Text as=\"p\" weight=\"bold\" mt=\"6\" mb=\"4\">\n                {label}\n              </Text>\n              <Table.Root>\n                <Table.Header>\n                  <Table.Row>\n                    <Table.ColumnHeaderCell />\n                    {buttonPropDefs.variant.values.map((variant) => (\n                      <Table.ColumnHeaderCell key={variant}>{variant}</Table.ColumnHeaderCell>\n                    ))}\n                  </Table.Row>\n                </Table.Header>\n                <Table.Body>\n                  {values.map((color) => (\n                    <Table.Row key={color}>\n                      <Table.RowHeaderCell>{color}</Table.RowHeaderCell>\n                      {buttonPropDefs.variant.values.map((variant) => (\n                        <Table.Cell key={variant}>\n                          <Button variant={variant} color={color}>\n                            <Pencil2Icon />\n                            Edit\n                          </Button>\n                          <Button variant={variant} color={color} highContrast ml=\"2\">\n                            <Pencil2Icon />\n                            Edit\n                          </Button>\n                        </Table.Cell>\n                      ))}\n                    </Table.Row>\n                  ))}\n                </Table.Body>\n              </Table.Root>\n            </Fragment>\n          ))}\n        </details>\n      </DocsSectionBody>\n    </DocsSection>\n  );\n}\n"
  },
  {
    "path": "apps/playground/app/(themeable)/sink/callout/page.tsx",
    "content": "import { Fragment } from 'react';\nimport { InfoCircledIcon, Cross1Icon } from '@radix-ui/react-icons';\nimport { Callout, Flex, IconButton, Link, Separator, Text, Code, Table } from '@radix-ui/themes';\nimport { calloutRootPropDefs } from '@radix-ui/themes/props';\nimport { DocsSection, DocsSectionBody, DocsSectionHeading } from '../docs-section';\nimport { accentColorsGrouped } from '../_utils';\n\nexport default function CalloutPage() {\n  return (\n    <DocsSection>\n      <DocsSectionHeading>Callout</DocsSectionHeading>\n      <DocsSectionBody>\n        <Table.Root>\n          <Table.Header>\n            <Table.Row>\n              <Table.ColumnHeaderCell />\n              <Table.ColumnHeaderCell>default</Table.ColumnHeaderCell>\n              <Table.ColumnHeaderCell>+ high-contrast</Table.ColumnHeaderCell>\n            </Table.Row>\n          </Table.Header>\n          <Table.Body>\n            {calloutRootPropDefs.variant.values.map((variant) => (\n              <Table.Row key={variant}>\n                <Table.RowHeaderCell>{variant}</Table.RowHeaderCell>\n                <Table.Cell style={{ width: 450 }}>\n                  <Callout.Root variant={variant}>\n                    <Callout.Icon>\n                      <InfoCircledIcon />\n                    </Callout.Icon>\n                    <Callout.Text>\n                      We have detected multiple issues in your application configuration file.\n                      Please read our <Link href=\"/\">Configuration Guide</Link> for more details.\n                    </Callout.Text>\n                  </Callout.Root>\n                </Table.Cell>\n                <Table.Cell style={{ width: 450 }}>\n                  <Callout.Root variant={variant} highContrast>\n                    <Callout.Icon>\n                      <InfoCircledIcon />\n                    </Callout.Icon>\n                    <Callout.Text>\n                      We have detected multiple issues in your application configuration file.\n                      Please read our <Link href=\"/\">Configuration Guide</Link> for more details.\n                    </Callout.Text>\n                  </Callout.Root>\n                </Table.Cell>\n              </Table.Row>\n            ))}\n          </Table.Body>\n        </Table.Root>\n\n        <Table.Root>\n          <Table.Body>\n            {calloutRootPropDefs.size.values.map((size) => (\n              <Table.Row key={size}>\n                <Table.RowHeaderCell>size {size}</Table.RowHeaderCell>\n                <Table.Cell style={{ width: 450 }}>\n                  <Callout.Root size={size}>\n                    <Callout.Icon>\n                      <InfoCircledIcon\n                        width={size === '3' ? 20 : 15}\n                        height={size === '3' ? 20 : 15}\n                      />\n                    </Callout.Icon>\n                    <Callout.Text>\n                      We have detected multiple issues in your application configuration file.\n                      Please read our <Link href=\"/\">Configuration Guide</Link> for more details.\n                    </Callout.Text>\n                  </Callout.Root>\n                </Table.Cell>\n                <Table.Cell style={{ width: 450 }}>\n                  <Callout.Root size={size}>\n                    <Callout.Icon>\n                      <InfoCircledIcon\n                        width={size === '3' ? 20 : 15}\n                        height={size === '3' ? 20 : 15}\n                      />\n                    </Callout.Icon>\n                    <Callout.Text>There was an error in your configuration.</Callout.Text>\n                  </Callout.Root>\n                </Table.Cell>\n              </Table.Row>\n            ))}\n          </Table.Body>\n        </Table.Root>\n\n        <Text as=\"p\" my=\"5\">\n          <Code>color</Code> can be set per instance:\n        </Text>\n\n        <details>\n          <summary>\n            <Text size=\"2\" color=\"gray\">\n              See colors & variants combinations\n            </Text>\n          </summary>\n          {accentColorsGrouped.map(({ label, values }) => (\n            <Fragment key={label}>\n              <Text as=\"p\" weight=\"bold\" mt=\"6\" mb=\"4\">\n                {label}\n              </Text>\n              <Table.Root>\n                <Table.Header>\n                  <Table.Row>\n                    <Table.ColumnHeaderCell />\n                    {calloutRootPropDefs.variant.values.map((variant) => (\n                      <Table.ColumnHeaderCell key={variant}>{variant}</Table.ColumnHeaderCell>\n                    ))}\n                  </Table.Row>\n                </Table.Header>\n                <Table.Body>\n                  {values.map((color) => (\n                    <Table.Row key={color}>\n                      <Table.RowHeaderCell>{color}</Table.RowHeaderCell>\n                      {calloutRootPropDefs.variant.values.map((variant) => (\n                        <Table.Cell key={variant}>\n                          <Flex direction=\"column\" align=\"start\" gap=\"2\">\n                            <Callout.Root variant={variant} color={color}>\n                              <Callout.Icon>\n                                <InfoCircledIcon />\n                              </Callout.Icon>\n                              <Flex gap=\"3\">\n                                <Callout.Text>\n                                  We have detected multiple issues in your application configuration\n                                  file. Please read our <Link href=\"/\">Configuration Guide</Link>{' '}\n                                  for more details.\n                                </Callout.Text>\n                                <IconButton size=\"1\" variant=\"soft\">\n                                  <Cross1Icon />\n                                </IconButton>\n                              </Flex>\n                            </Callout.Root>\n                            <Callout.Root variant={variant} color={color} highContrast>\n                              <Callout.Icon>\n                                <InfoCircledIcon />\n                              </Callout.Icon>\n                              <Callout.Text>\n                                We have detected multiple issues in your application configuration\n                                file. Please read our <Link href=\"/\">Configuration Guide</Link> for\n                                more details.\n                              </Callout.Text>\n                            </Callout.Root>\n                          </Flex>\n                        </Table.Cell>\n                      ))}\n                    </Table.Row>\n                  ))}\n                </Table.Body>\n              </Table.Root>\n            </Fragment>\n          ))}\n        </details>\n\n        <details>\n          <summary>\n            <Text size=\"2\" color=\"gray\">\n              See layout & size combinations\n            </Text>\n          </summary>\n\n          <Flex direction=\"column\" my=\"5\" gap=\"5\" style={{ maxWidth: 500 }}>\n            {calloutRootPropDefs.size.values.map((size) => (\n              <Fragment key={size}>\n                <Callout.Root size={size}>\n                  <Callout.Text trim=\"both\">\n                    We have detected multiple issues in your application configuration file. Please\n                    read our <Link href=\"/\">Configuration Guide</Link> for more details.\n                  </Callout.Text>\n                </Callout.Root>\n\n                <Callout.Root size={size}>\n                  <Callout.Text trim=\"start\">\n                    There was an error in your configuration.\n                  </Callout.Text>\n                  <Callout.Text trim=\"end\">\n                    We have detected multiple issues in your application configuration file. Please\n                    read our <Link href=\"/\">Configuration Guide</Link> for more details.\n                  </Callout.Text>\n                </Callout.Root>\n\n                <Callout.Root size={size}>\n                  <Callout.Icon>\n                    <InfoCircledIcon\n                      width={size === '3' ? 20 : 15}\n                      height={size === '3' ? 20 : 15}\n                    />\n                  </Callout.Icon>\n                  <Callout.Text>\n                    We have detected multiple issues in your application configuration file. Please\n                    read our <Link href=\"/\">Configuration Guide</Link> for more details.\n                  </Callout.Text>\n                </Callout.Root>\n\n                <Callout.Root size={size}>\n                  <Callout.Icon>\n                    <InfoCircledIcon\n                      width={size === '3' ? 20 : 15}\n                      height={size === '3' ? 20 : 15}\n                    />\n                  </Callout.Icon>\n                  <Callout.Text>There was an error in your configuration.</Callout.Text>\n                  <Callout.Text>\n                    We have detected multiple issues in your application configuration file. Please\n                    read our <Link href=\"/\">Configuration Guide</Link> for more details.\n                  </Callout.Text>\n                </Callout.Root>\n\n                <Separator />\n              </Fragment>\n            ))}\n          </Flex>\n        </details>\n      </DocsSectionBody>\n    </DocsSection>\n  );\n}\n"
  },
  {
    "path": "apps/playground/app/(themeable)/sink/card/page.tsx",
    "content": "import { Avatar, Card, Flex, Grid, Heading, Text, Table } from '@radix-ui/themes';\nimport { cardPropDefs } from '@radix-ui/themes/props';\nimport { DocsSection, DocsSectionBody, DocsSectionHeading } from '../docs-section';\n\nexport default function CardPage() {\n  return (\n    <DocsSection>\n      <DocsSectionHeading>Card</DocsSectionHeading>\n      <DocsSectionBody>\n        <Table.Root>\n          <Table.Body>\n            {cardPropDefs.variant.values.map((variant) => (\n              <Table.Row key={variant}>\n                <Table.RowHeaderCell>{variant}</Table.RowHeaderCell>\n                <Table.Cell>\n                  <Flex gap=\"5\">\n                    <Card variant={variant}>\n                      <Text as=\"p\" size=\"2\" weight=\"bold\">\n                        Quick start\n                      </Text>\n                      <Text as=\"p\" color=\"gray\" size=\"2\">\n                        Create a proof of concept app\n                      </Text>\n                    </Card>\n\n                    <Card variant={variant} asChild>\n                      <a href=\"#some-page\">\n                        <Text as=\"p\" size=\"2\" weight=\"bold\">\n                          Quick start\n                        </Text>\n                        <Text as=\"p\" color=\"gray\" size=\"2\">\n                          Create a proof of concept app\n                        </Text>\n                      </a>\n                    </Card>\n                  </Flex>\n                </Table.Cell>\n              </Table.Row>\n            ))}\n          </Table.Body>\n        </Table.Root>\n\n        <Grid columns=\"4\" gap=\"5\" my=\"7\" style={{ marginLeft: 124 }}>\n          <div>\n            <Heading>Contacts</Heading>\n            <Text as=\"p\" color=\"gray\" mb=\"4\">\n              Here are all your contacts:\n            </Text>\n            <Flex direction=\"column\" gap=\"3\">\n              {Array.from({ length: 4 }, (_, i) => (\n                <Card key={i} variant=\"surface\" asChild>\n                  <a href=\"#some-page\">\n                    <Flex align=\"center\" gap=\"2\">\n                      <Avatar src=\"./api/avatar\" fallback=\"D\" />\n                      <div>\n                        <Text as=\"p\" size=\"2\" weight=\"medium\">\n                          Poppy Nichols\n                        </Text>\n                        <Text as=\"p\" color=\"gray\" size=\"1\">\n                          poppy.nichols@gmail.com\n                        </Text>\n                      </div>\n                    </Flex>\n                  </a>\n                </Card>\n              ))}\n            </Flex>\n          </div>\n          <div>\n            <Heading>Contacts</Heading>\n            <Text as=\"p\" color=\"gray\" mb=\"4\">\n              Here are all your contacts:\n            </Text>\n            <Flex direction=\"column\" gap=\"3\">\n              {Array.from({ length: 4 }, (_, i) => (\n                <Card key={i} variant=\"classic\" asChild>\n                  <a href=\"#some-page\">\n                    <Flex align=\"center\" gap=\"2\">\n                      <Avatar src=\"./api/avatar\" fallback=\"D\" />\n                      <div>\n                        <Text as=\"p\" size=\"2\" weight=\"medium\">\n                          Poppy Nichols\n                        </Text>\n                        <Text as=\"p\" color=\"gray\" size=\"1\">\n                          poppy.nichols@gmail.com\n                        </Text>\n                      </div>\n                    </Flex>\n                  </a>\n                </Card>\n              ))}\n            </Flex>\n          </div>\n          <div>\n            <Heading>Contacts</Heading>\n            <Text as=\"p\" color=\"gray\" mb=\"4\">\n              Here are all your contacts:\n            </Text>\n            <Flex direction=\"column\" gap=\"5\">\n              {Array.from({ length: 4 }, (_, i) => (\n                <Card key={i} variant=\"ghost\" asChild>\n                  <a href=\"#some-page\">\n                    <Flex align=\"center\" gap=\"2\">\n                      <Avatar src=\"./api/avatar\" fallback=\"D\" />\n                      <div>\n                        <Text as=\"p\" size=\"2\" weight=\"medium\">\n                          Poppy Nichols\n                        </Text>\n                        <Text as=\"p\" color=\"gray\" size=\"1\">\n                          poppy.nichols@gmail.com\n                        </Text>\n                      </div>\n                    </Flex>\n                  </a>\n                </Card>\n              ))}\n            </Flex>\n          </div>\n        </Grid>\n\n        <Table.Root>\n          <Table.Body>\n            {cardPropDefs.size.values.map((size) => (\n              <Table.Row key={size}>\n                <Table.RowHeaderCell>size {size}</Table.RowHeaderCell>\n                <Table.Cell>\n                  <Card size={size} style={{ maxWidth: 'fit-content' }}>\n                    <Text as=\"p\" size={size} weight=\"bold\" mb={size}>\n                      Typography\n                    </Text>\n                    <Text as=\"p\" color=\"gray\" size={size} style={{ maxWidth: '40ch' }}>\n                      The goal of typography is to relate font size, line height, and line width in\n                      a proportional way that maximizes beauty and makes reading easier and more\n                      pleasant.\n                    </Text>\n                  </Card>\n                </Table.Cell>\n              </Table.Row>\n            ))}\n          </Table.Body>\n        </Table.Root>\n      </DocsSectionBody>\n    </DocsSection>\n  );\n}\n"
  },
  {
    "path": "apps/playground/app/(themeable)/sink/checkbox/page.tsx",
    "content": "import { Fragment } from 'react';\nimport { DocsSection, DocsSectionBody, DocsSectionHeading } from '../docs-section';\nimport { Checkbox, Grid, Flex, Text, Code, Box, Separator, Table } from '@radix-ui/themes';\nimport { accentColorsGrouped } from '../_utils';\nimport { checkboxPropDefs } from '@radix-ui/themes/props';\n\nexport default function CheckboxPage() {\n  return (\n    <DocsSection>\n      <DocsSectionHeading>Checkbox</DocsSectionHeading>\n      <DocsSectionBody>\n        <Grid columns=\"2\" gap=\"9\">\n          <div>\n            <Table.Root>\n              <Table.Header>\n                <Table.Row>\n                  <Table.ColumnHeaderCell />\n                  <Table.ColumnHeaderCell>not checked</Table.ColumnHeaderCell>\n                  <Table.ColumnHeaderCell>checked</Table.ColumnHeaderCell>\n                  <Table.ColumnHeaderCell>indeterminate</Table.ColumnHeaderCell>\n                  <Table.ColumnHeaderCell>disabled</Table.ColumnHeaderCell>\n                  <Table.ColumnHeaderCell>disabled checked</Table.ColumnHeaderCell>\n                </Table.Row>\n              </Table.Header>\n              <Table.Body>\n                {checkboxPropDefs.variant.values.map((variant) => (\n                  <Fragment key={variant}>\n                    {[variant, '+ high-contrast'].map((label) => (\n                      <Table.Row key={label}>\n                        <Table.RowHeaderCell>{label}</Table.RowHeaderCell>\n                        <Table.Cell>\n                          <Checkbox variant={variant} highContrast={label === '+ high-contrast'} />\n                        </Table.Cell>\n                        <Table.Cell>\n                          <Checkbox\n                            variant={variant}\n                            highContrast={label === '+ high-contrast'}\n                            defaultChecked\n                          />\n                        </Table.Cell>\n                        <Table.Cell>\n                          <Checkbox\n                            variant={variant}\n                            highContrast={label === '+ high-contrast'}\n                            defaultChecked=\"indeterminate\"\n                          />\n                        </Table.Cell>\n                        <Table.Cell>\n                          <Checkbox\n                            variant={variant}\n                            highContrast={label === '+ high-contrast'}\n                            disabled\n                          />\n                        </Table.Cell>\n                        <Table.Cell>\n                          <Checkbox\n                            variant={variant}\n                            highContrast={label === '+ high-contrast'}\n                            disabled\n                            defaultChecked\n                          />\n                        </Table.Cell>\n                      </Table.Row>\n                    ))}\n                  </Fragment>\n                ))}\n              </Table.Body>\n            </Table.Root>\n\n            <Table.Root>\n              <Table.Body>\n                {checkboxPropDefs.size.values.map((size) => (\n                  <Table.Row key={size}>\n                    <Table.RowHeaderCell>size {size}</Table.RowHeaderCell>\n                    <Table.Cell>\n                      <Flex gap=\"2\">\n                        <Checkbox size={size} />\n                        <Checkbox size={size} defaultChecked />\n                      </Flex>\n                    </Table.Cell>\n                  </Table.Row>\n                ))}\n              </Table.Body>\n            </Table.Root>\n          </div>\n\n          <div>\n            <Box py=\"4\">\n              <Text as=\"p\" size=\"2\">\n                Alignment\n              </Text>\n            </Box>\n\n            <Flex direction=\"column\" gap=\"5\" style={{ maxWidth: 320 }}>\n              <Separator size=\"4\" />\n\n              <Text size=\"1\" asChild>\n                <label>\n                  <Flex gap=\"2\">\n                    <Checkbox size=\"1\" />\n                    <Text>Agree to Terms and Conditions</Text>\n                  </Flex>\n                </label>\n              </Text>\n\n              <Separator size=\"4\" />\n\n              <Text size=\"2\" asChild>\n                <label>\n                  <Flex gap=\"2\">\n                    <Checkbox size=\"1\" />\n                    <Text>Agree to Terms and Conditions</Text>\n                  </Flex>\n                </label>\n              </Text>\n\n              <Separator size=\"4\" />\n\n              <Text size=\"2\" asChild>\n                <label>\n                  <Flex gap=\"2\">\n                    <Checkbox size=\"2\" />\n                    <Text>Agree to Terms and Conditions</Text>\n                  </Flex>\n                </label>\n              </Text>\n\n              <Separator size=\"4\" />\n\n              <Text size=\"3\" asChild>\n                <label>\n                  <Flex gap=\"2\">\n                    <Checkbox size=\"2\" />\n                    <Text>Agree to Terms and Conditions</Text>\n                  </Flex>\n                </label>\n              </Text>\n\n              <Separator size=\"4\" />\n\n              <Text size=\"3\" asChild>\n                <label>\n                  <Flex gap=\"2\">\n                    <Checkbox size=\"3\" />\n                    <Text>Agree to Terms and Conditions</Text>\n                  </Flex>\n                </label>\n              </Text>\n\n              <Separator size=\"4\" />\n\n              <Text size=\"4\" asChild>\n                <label>\n                  <Flex gap=\"2\">\n                    <Checkbox size=\"3\" />\n                    <Text>Agree to Terms and Conditions</Text>\n                  </Flex>\n                </label>\n              </Text>\n\n              <Separator size=\"4\" />\n            </Flex>\n          </div>\n        </Grid>\n\n        <Text as=\"p\" my=\"5\">\n          <Code>color</Code> can be set per instance:\n        </Text>\n\n        <details>\n          <summary>\n            <Text size=\"2\" color=\"gray\">\n              See colors & variants combinations\n            </Text>\n          </summary>\n          {accentColorsGrouped.map(({ label, values }) => (\n            <Fragment key={label}>\n              <Text as=\"p\" weight=\"bold\" mt=\"6\" mb=\"4\">\n                {label}\n              </Text>\n              <Table.Root>\n                <Table.Header>\n                  <Table.Row>\n                    <Table.ColumnHeaderCell />\n                    {checkboxPropDefs.variant.values.map((variant) => (\n                      <Table.ColumnHeaderCell key={variant}>{variant}</Table.ColumnHeaderCell>\n                    ))}\n                  </Table.Row>\n                </Table.Header>\n                <Table.Body>\n                  {values.map((color) => (\n                    <Table.Row key={color}>\n                      <Table.RowHeaderCell>{color}</Table.RowHeaderCell>\n                      {checkboxPropDefs.variant.values.map((variant) => (\n                        <Table.Cell key={variant}>\n                          <Checkbox variant={variant} color={color} defaultChecked />\n                          <Checkbox\n                            variant={variant}\n                            color={color}\n                            highContrast\n                            defaultChecked\n                            ml=\"2\"\n                          />\n                        </Table.Cell>\n                      ))}\n                    </Table.Row>\n                  ))}\n                </Table.Body>\n              </Table.Root>\n            </Fragment>\n          ))}\n        </details>\n      </DocsSectionBody>\n    </DocsSection>\n  );\n}\n"
  },
  {
    "path": "apps/playground/app/(themeable)/sink/checkbox-cards/page.tsx",
    "content": "import { Fragment } from 'react';\nimport { CheckboxCards, Box, Text, Code, Flex, Table } from '@radix-ui/themes';\nimport { CodeIcon } from '@radix-ui/react-icons';\nimport { checkboxCardsRootPropDefs } from '@radix-ui/themes/props';\nimport { DocsSection, DocsSectionBody, DocsSectionHeading } from '../docs-section';\nimport { accentColorsGrouped } from '../_utils';\n\nexport default function CheckboxCardsPage() {\n  return (\n    <DocsSection>\n      <DocsSectionHeading>CheckboxCards</DocsSectionHeading>\n      <DocsSectionBody>\n        <Table.Root>\n          <Table.Body>\n            {checkboxCardsRootPropDefs.variant.values.map((variant, index) => (\n              <Table.Row key={variant}>\n                <Table.RowHeaderCell>{variant}</Table.RowHeaderCell>\n                <Table.Cell>\n                  <CheckboxCards.Root defaultValue={[String(index)]} columns=\"3\" variant={variant}>\n                    <CheckboxCards.Item value=\"0\">\n                      <CodeIcon />\n                      <Text truncate>Node.js</Text>\n                    </CheckboxCards.Item>\n                    <CheckboxCards.Item value=\"1\" disabled>\n                      Ruby\n                    </CheckboxCards.Item>\n                    <CheckboxCards.Item value=\"2\">Go</CheckboxCards.Item>\n                  </CheckboxCards.Root>\n                </Table.Cell>\n              </Table.Row>\n            ))}\n          </Table.Body>\n        </Table.Root>\n\n        <Box mb=\"7\" />\n\n        <Table.Root>\n          <Table.Body>\n            {checkboxCardsRootPropDefs.size.values.map((size, index) => (\n              <Table.Row key={size}>\n                <Table.RowHeaderCell>size {size}</Table.RowHeaderCell>\n                <Table.Cell>\n                  <CheckboxCards.Root\n                    defaultValue={[String(index)]}\n                    size={size}\n                    columns=\"3\"\n                    style={{ width: 400 + Number(size) * 100 }}\n                  >\n                    <CheckboxCards.Item value=\"0\">Node.js</CheckboxCards.Item>\n                    <CheckboxCards.Item value=\"1\" disabled>\n                      Ruby\n                    </CheckboxCards.Item>\n                    <CheckboxCards.Item value=\"2\">Go</CheckboxCards.Item>\n                  </CheckboxCards.Root>\n                </Table.Cell>\n              </Table.Row>\n            ))}\n          </Table.Body>\n        </Table.Root>\n\n        <Text as=\"p\" my=\"5\">\n          <Code>color</Code> can be set per instance:\n        </Text>\n\n        <details>\n          <summary>\n            <Text size=\"2\" color=\"gray\">\n              See colors & variants combinations\n            </Text>\n          </summary>\n          {accentColorsGrouped.map(({ label, values }) => (\n            <Fragment key={label}>\n              <Text as=\"p\" weight=\"bold\" mt=\"6\" mb=\"4\">\n                {label}\n              </Text>\n              <Table.Root>\n                <Table.Header>\n                  <Table.Row>\n                    <Table.ColumnHeaderCell />\n                    {checkboxCardsRootPropDefs.variant.values.map((variant) => (\n                      <Table.ColumnHeaderCell key={variant}>{variant}</Table.ColumnHeaderCell>\n                    ))}\n                  </Table.Row>\n                </Table.Header>\n                <Table.Body>\n                  {values.map((color) => (\n                    <Table.Row key={color}>\n                      <Table.RowHeaderCell>{color}</Table.RowHeaderCell>\n                      {checkboxCardsRootPropDefs.variant.values.map((variant) => (\n                        <Table.Cell key={variant}>\n                          <Flex direction=\"column\" gap=\"2\">\n                            <CheckboxCards.Root\n                              defaultValue={['0']}\n                              size=\"1\"\n                              gap=\"2\"\n                              columns=\"3\"\n                              variant={variant}\n                              color={color}\n                              style={{ width: 400 }}\n                            >\n                              <CheckboxCards.Item value=\"0\">Node.js</CheckboxCards.Item>\n                              <CheckboxCards.Item value=\"1\" disabled>\n                                Ruby\n                              </CheckboxCards.Item>\n                              <CheckboxCards.Item value=\"2\">Go</CheckboxCards.Item>\n                            </CheckboxCards.Root>\n\n                            <CheckboxCards.Root\n                              defaultValue={['0']}\n                              size=\"1\"\n                              gap=\"2\"\n                              columns=\"3\"\n                              variant={variant}\n                              color={color}\n                              highContrast\n                              style={{ width: 400 }}\n                            >\n                              <CheckboxCards.Item value=\"0\">Node.js</CheckboxCards.Item>\n                              <CheckboxCards.Item value=\"1\" disabled>\n                                Ruby\n                              </CheckboxCards.Item>\n                              <CheckboxCards.Item value=\"2\">Go</CheckboxCards.Item>\n                            </CheckboxCards.Root>\n                          </Flex>\n                        </Table.Cell>\n                      ))}\n                    </Table.Row>\n                  ))}\n                </Table.Body>\n              </Table.Root>\n            </Fragment>\n          ))}\n        </details>\n      </DocsSectionBody>\n    </DocsSection>\n  );\n}\n"
  },
  {
    "path": "apps/playground/app/(themeable)/sink/checkbox-group/page.tsx",
    "content": "import { Fragment } from 'react';\nimport { CheckboxGroup, Grid, Box, Text, Code, Flex, Separator, Table } from '@radix-ui/themes';\nimport { checkboxGroupRootPropDefs } from '@radix-ui/themes/props';\nimport { DocsSection, DocsSectionBody, DocsSectionHeading } from '../docs-section';\nimport { accentColorsGrouped } from '../_utils';\n\nexport default function CheckboxGroupPage() {\n  return (\n    <DocsSection>\n      <DocsSectionHeading>CheckboxGroup</DocsSectionHeading>\n      <DocsSectionBody>\n        <Grid columns=\"2\" gap=\"9\">\n          <div>\n            <Table.Root>\n              <Table.Header>\n                <Table.Row>\n                  <Table.ColumnHeaderCell />\n                  <Table.ColumnHeaderCell>not checked</Table.ColumnHeaderCell>\n                  <Table.ColumnHeaderCell>checked</Table.ColumnHeaderCell>\n                  <Table.ColumnHeaderCell>disabled</Table.ColumnHeaderCell>\n                  <Table.ColumnHeaderCell>disabled checked</Table.ColumnHeaderCell>\n                </Table.Row>\n              </Table.Header>\n              <Table.Body>\n                {checkboxGroupRootPropDefs.variant.values.map((variant) => (\n                  <Fragment key={variant}>\n                    {[variant, '+ high-contrast'].map((label) => (\n                      <Table.Row key={label}>\n                        <Table.RowHeaderCell>{label}</Table.RowHeaderCell>\n                        <Table.Cell>\n                          <CheckboxGroup.Root\n                            variant={variant}\n                            highContrast={label === '+ high-contrast'}\n                          >\n                            <CheckboxGroup.Item value=\"value\" />\n                          </CheckboxGroup.Root>\n                        </Table.Cell>\n                        <Table.Cell>\n                          <CheckboxGroup.Root\n                            variant={variant}\n                            defaultValue={['value']}\n                            highContrast={label === '+ high-contrast'}\n                          >\n                            <CheckboxGroup.Item value=\"value\" />\n                          </CheckboxGroup.Root>\n                        </Table.Cell>\n                        <Table.Cell>\n                          <CheckboxGroup.Root\n                            variant={variant}\n                            highContrast={label === '+ high-contrast'}\n                          >\n                            <CheckboxGroup.Item value=\"value\" disabled />\n                          </CheckboxGroup.Root>\n                        </Table.Cell>\n                        <Table.Cell>\n                          <CheckboxGroup.Root\n                            variant={variant}\n                            highContrast={label === '+ high-contrast'}\n                            disabled\n                            defaultValue={['value']}\n                          >\n                            <CheckboxGroup.Item value=\"value\" />\n                          </CheckboxGroup.Root>\n                        </Table.Cell>\n                      </Table.Row>\n                    ))}\n                  </Fragment>\n                ))}\n              </Table.Body>\n            </Table.Root>\n\n            <Table.Root>\n              <Table.Body>\n                {checkboxGroupRootPropDefs.size.values.map((size) => (\n                  <Table.Row key={size}>\n                    <Table.RowHeaderCell>size {size}</Table.RowHeaderCell>\n                    <Table.Cell style={{ width: '100%' }}>\n                      <CheckboxGroup.Root size={size} defaultValue={['red']}>\n                        <CheckboxGroup.Item value=\"red\">Red</CheckboxGroup.Item>\n                        <CheckboxGroup.Item value=\"green\">Green</CheckboxGroup.Item>\n                        <CheckboxGroup.Item value=\"blue\">Blue</CheckboxGroup.Item>\n                        <CheckboxGroup.Item value=\"violet\">Violet</CheckboxGroup.Item>\n                      </CheckboxGroup.Root>\n                    </Table.Cell>\n                  </Table.Row>\n                ))}\n              </Table.Body>\n            </Table.Root>\n          </div>\n\n          <div>\n            <Box py=\"4\">\n              <Text as=\"p\" size=\"2\">\n                Alignment\n              </Text>\n            </Box>\n\n            <Flex direction=\"column\" gap=\"5\" style={{ maxWidth: 320 }}>\n              <Separator size=\"4\" />\n\n              <CheckboxGroup.Root defaultValue={['1']} size=\"1\">\n                <Flex direction=\"column\" gap=\"1\">\n                  <Text as=\"label\" size=\"1\">\n                    <Flex gap=\"2\">\n                      <CheckboxGroup.Item value=\"1\" />\n                      <Text>Agree to Terms and Conditions</Text>\n                    </Flex>\n                  </Text>\n                  <Text as=\"label\" size=\"1\">\n                    <Flex gap=\"2\">\n                      <CheckboxGroup.Item value=\"2\" />\n                      <Text>Agree to Privacy Policy</Text>\n                    </Flex>\n                  </Text>\n                </Flex>\n              </CheckboxGroup.Root>\n\n              <Separator size=\"4\" />\n\n              <CheckboxGroup.Root defaultValue={['1']} size=\"1\">\n                <Flex direction=\"column\" gap=\"1\">\n                  <Text as=\"label\" size=\"2\">\n                    <Flex gap=\"2\">\n                      <CheckboxGroup.Item value=\"1\" />\n                      <Text>Agree to Terms and Conditions</Text>\n                    </Flex>\n                  </Text>\n                  <Text as=\"label\" size=\"2\">\n                    <Flex gap=\"2\">\n                      <CheckboxGroup.Item value=\"2\" />\n                      <Text>Agree to Privacy Policy</Text>\n                    </Flex>\n                  </Text>\n                </Flex>\n              </CheckboxGroup.Root>\n\n              <Separator size=\"4\" />\n\n              <CheckboxGroup.Root defaultValue={['1']} size=\"2\">\n                <Flex direction=\"column\" gap=\"1\">\n                  <Text as=\"label\" size=\"2\">\n                    <Flex gap=\"2\">\n                      <CheckboxGroup.Item value=\"1\" />\n                      <Text>Agree to Terms and Conditions</Text>\n                    </Flex>\n                  </Text>\n                  <Text as=\"label\" size=\"2\">\n                    <Flex gap=\"2\">\n                      <CheckboxGroup.Item value=\"2\" />\n                      <Text>Agree to Privacy Policy</Text>\n                    </Flex>\n                  </Text>\n                </Flex>\n              </CheckboxGroup.Root>\n\n              <Separator size=\"4\" />\n\n              <CheckboxGroup.Root defaultValue={['1']} size=\"2\">\n                <Flex direction=\"column\" gap=\"1\">\n                  <Text as=\"label\" size=\"3\">\n                    <Flex gap=\"2\">\n                      <CheckboxGroup.Item value=\"1\" />\n                      <Text>Agree to Terms and Conditions</Text>\n                    </Flex>\n                  </Text>\n                  <Text as=\"label\" size=\"3\">\n                    <Flex gap=\"2\">\n                      <CheckboxGroup.Item value=\"2\" />\n                      <Text>Agree to Privacy Policy</Text>\n                    </Flex>\n                  </Text>\n                </Flex>\n              </CheckboxGroup.Root>\n\n              <Separator size=\"4\" />\n\n              <CheckboxGroup.Root defaultValue={['1']} size=\"3\">\n                <Flex direction=\"column\" gap=\"1\">\n                  <Text as=\"label\" size=\"3\">\n                    <Flex gap=\"2\">\n                      <CheckboxGroup.Item value=\"1\" />\n                      <Text>Agree to Terms and Conditions</Text>\n                    </Flex>\n                  </Text>\n                  <Text as=\"label\" size=\"3\">\n                    <Flex gap=\"2\">\n                      <CheckboxGroup.Item value=\"2\" />\n                      <Text>Agree to Privacy Policy</Text>\n                    </Flex>\n                  </Text>\n                </Flex>\n              </CheckboxGroup.Root>\n\n              <Separator size=\"4\" />\n\n              <CheckboxGroup.Root defaultValue={['1']} size=\"3\">\n                <Flex direction=\"column\" gap=\"1\">\n                  <Text as=\"label\" size=\"4\">\n                    <Flex gap=\"2\">\n                      <CheckboxGroup.Item value=\"1\" />\n                      <Text>Agree to Terms and Conditions</Text>\n                    </Flex>\n                  </Text>\n                  <Text as=\"label\" size=\"4\">\n                    <Flex gap=\"2\">\n                      <CheckboxGroup.Item value=\"2\" />\n                      <Text>Agree to Privacy Policy</Text>\n                    </Flex>\n                  </Text>\n                </Flex>\n              </CheckboxGroup.Root>\n\n              <Separator size=\"4\" />\n            </Flex>\n          </div>\n        </Grid>\n\n        <Text as=\"p\" my=\"5\">\n          <Code>color</Code> can be set per instance:\n        </Text>\n\n        <details>\n          <summary>\n            <Text size=\"2\" color=\"gray\">\n              See colors & variants combinations\n            </Text>\n          </summary>\n          {accentColorsGrouped.map(({ label, values }) => (\n            <Fragment key={label}>\n              <Text as=\"p\" weight=\"bold\" mt=\"6\" mb=\"4\">\n                {label}\n              </Text>\n              <Table.Root>\n                <Table.Header>\n                  <Table.Row>\n                    <Table.ColumnHeaderCell />\n                    {checkboxGroupRootPropDefs.variant.values.map((variant) => (\n                      <Table.ColumnHeaderCell key={variant}>{variant}</Table.ColumnHeaderCell>\n                    ))}\n                  </Table.Row>\n                </Table.Header>\n                <Table.Body>\n                  {values.map((color) => (\n                    <Table.Row key={color}>\n                      <Table.RowHeaderCell>{color}</Table.RowHeaderCell>\n                      {checkboxGroupRootPropDefs.variant.values.map((variant) => (\n                        <Table.Cell key={variant}>\n                          <Flex gap=\"2\">\n                            <CheckboxGroup.Root\n                              variant={variant}\n                              color={color}\n                              defaultValue={['value']}\n                            >\n                              <CheckboxGroup.Item value=\"value\" />\n                            </CheckboxGroup.Root>\n                            <CheckboxGroup.Root\n                              variant={variant}\n                              color={color}\n                              defaultValue={['value']}\n                              highContrast\n                            >\n                              <CheckboxGroup.Item value=\"value\" />\n                            </CheckboxGroup.Root>\n                          </Flex>\n                        </Table.Cell>\n                      ))}\n                    </Table.Row>\n                  ))}\n                </Table.Body>\n              </Table.Root>\n            </Fragment>\n          ))}\n        </details>\n\n        <Separator size=\"3\" my=\"5\" />\n      </DocsSectionBody>\n    </DocsSection>\n  );\n}\n"
  },
  {
    "path": "apps/playground/app/(themeable)/sink/code/page.tsx",
    "content": "import { Fragment } from 'react';\nimport { Code, Text, Grid, Flex, Strong, Em, Kbd, Quote, Link, Table } from '@radix-ui/themes';\nimport { codePropDefs } from '@radix-ui/themes/props';\nimport { DocsSection, DocsSectionBody, DocsSectionHeading } from '../docs-section';\nimport { accentColorsGrouped } from '../_utils';\n\nexport default function CodePage() {\n  return (\n    <DocsSection>\n      <DocsSectionHeading>Code</DocsSectionHeading>\n      <DocsSectionBody>\n        <Table.Root>\n          <Table.Header>\n            <Table.Row>\n              <Table.ColumnHeaderCell />\n              <Table.ColumnHeaderCell>color</Table.ColumnHeaderCell>\n              <Table.ColumnHeaderCell>+ high-contrast</Table.ColumnHeaderCell>\n              <Table.ColumnHeaderCell>gray</Table.ColumnHeaderCell>\n              <Table.ColumnHeaderCell>+ high-contrast</Table.ColumnHeaderCell>\n            </Table.Row>\n          </Table.Header>\n          <Table.Body>\n            {codePropDefs.variant.values.map((variant) => (\n              <Table.Row key={variant}>\n                <Table.RowHeaderCell>{variant}</Table.RowHeaderCell>\n                <Table.Cell>\n                  <Code variant={variant}>console.log()</Code>\n                </Table.Cell>\n                <Table.Cell>\n                  <Code variant={variant} highContrast>\n                    console.log()\n                  </Code>\n                </Table.Cell>\n                <Table.Cell>\n                  <Code variant={variant} color=\"gray\">\n                    console.log()\n                  </Code>\n                </Table.Cell>\n                <Table.Cell>\n                  <Code variant={variant} color=\"gray\" highContrast>\n                    console.log()\n                  </Code>\n                </Table.Cell>\n              </Table.Row>\n            ))}\n          </Table.Body>\n        </Table.Root>\n\n        <Grid columns=\"400px 400px\" gap=\"5\" my=\"7\">\n          {codePropDefs.variant.values.map((variant) => (\n            <Text as=\"p\" size=\"3\" key={variant}>\n              The CSS rule <Code variant={variant}>antialiased</Code> has been applied to all\n              fonts.google.com pages where fonts are rendered. This results in browsers using the{' '}\n              <Strong>greyscale antialiasing method</Strong> rather than default{' '}\n              <Em>subpixel rendering</Em> of fonts. Press <Kbd>⌘ Q</Kbd> to quit.{' '}\n              <Quote>\n                I believe this was probably introduced to get around inconsistencies in rendering\n                between browsers\n              </Quote>\n              , particular between Chrome and Safari on MacOS.\n            </Text>\n          ))}\n        </Grid>\n\n        <Grid columns=\"400px 400px\" gap=\"5\" my=\"7\">\n          {codePropDefs.variant.values.map((variant) => (\n            <Text as=\"p\" size=\"3\" key={variant}>\n              The{' '}\n              <Link href=\"https://developer.mozilla.org/en-US/docs/Web/HTML/Element/code\">\n                <Code variant={variant}>\n                  {'<'}code{'>'}\n                </Code>\n              </Link>{' '}\n              HTML element displays its contents styled in a fashion intended to indicate that the\n              text is a short fragment of computer code.\n            </Text>\n          ))}\n        </Grid>\n\n        <Flex direction=\"column\" gap=\"4\" mt=\"7\">\n          {codePropDefs.size.values\n            .slice()\n            .reverse()\n            .map((size) => (\n              <Code key={size} size={size} variant=\"ghost\">\n                The quick brown fox jumped{Number(size) < 9 && ' over the lazy dog'}\n              </Code>\n            ))}\n        </Flex>\n\n        <Text as=\"p\" my=\"5\">\n          <Code>color</Code> can be set per instance:\n        </Text>\n\n        <details>\n          <summary>\n            <Text size=\"2\" color=\"gray\">\n              See colors & variants combinations\n            </Text>\n          </summary>\n          {accentColorsGrouped.map(({ label, values }) => (\n            <Fragment key={label}>\n              <Text as=\"p\" weight=\"bold\" mt=\"6\" mb=\"4\">\n                {label}\n              </Text>\n              <Table.Root>\n                <Table.Header>\n                  <Table.Row>\n                    <Table.ColumnHeaderCell />\n                    {codePropDefs.variant.values.map((variant) => (\n                      <Table.ColumnHeaderCell key={variant}>{variant}</Table.ColumnHeaderCell>\n                    ))}\n                  </Table.Row>\n                </Table.Header>\n                <Table.Body>\n                  {values.map((color) => (\n                    <Table.Row key={color}>\n                      <Table.RowHeaderCell>{color}</Table.RowHeaderCell>\n                      {codePropDefs.variant.values.map((variant) => (\n                        <Table.Cell key={variant}>\n                          <Code variant={variant} color={color}>\n                            console.log()\n                          </Code>\n                        </Table.Cell>\n                      ))}\n                    </Table.Row>\n                  ))}\n                </Table.Body>\n              </Table.Root>\n            </Fragment>\n          ))}\n        </details>\n      </DocsSectionBody>\n    </DocsSection>\n  );\n}\n"
  },
  {
    "path": "apps/playground/app/(themeable)/sink/container/page.tsx",
    "content": "import { Container, Box, Text, Code } from '@radix-ui/themes';\nimport { DocsSection, DocsSectionBody, DocsSectionHeading } from '../docs-section';\n\nexport default function ContainerPage() {\n  return (\n    <DocsSection>\n      <DocsSectionHeading>Container</DocsSectionHeading>\n      <DocsSectionBody>\n        <Text as=\"p\" my=\"5\">\n          <Code>size</Code> can be set on nested <Code>Container</Code> instances:\n        </Text>\n\n        <Container size=\"4\">\n          <Box\n            style={{\n              backgroundColor: 'var(--color-panel-solid)',\n              borderRadius: 'var(--radius-2)',\n              boxShadow: 'inset 0 0 0 1px var(--gray-a4)',\n            }}\n            p=\"2\"\n          >\n            <Text>This should be size 4</Text>\n          </Box>\n          <Container size=\"1\">\n            <Box\n              style={{\n                backgroundColor: 'var(--color-panel-solid)',\n                borderRadius: 'var(--radius-2)',\n                boxShadow: 'inset 0 0 0 1px var(--gray-a4)',\n              }}\n              p=\"2\"\n            >\n              <Text>This should be size 1</Text>\n            </Box>\n          </Container>\n        </Container>\n      </DocsSectionBody>\n    </DocsSection>\n  );\n}\n"
  },
  {
    "path": "apps/playground/app/(themeable)/sink/context-menu/page.tsx",
    "content": "import { ContextMenu, Table } from '@radix-ui/themes';\nimport { contextMenuContentPropDefs } from '@radix-ui/themes/props';\nimport { DocsSection, DocsSectionBody, DocsSectionHeading } from '../docs-section';\nimport { ContextMenuContentDemo, RightClickArea } from '../_components';\n\nexport default function ContextMenuPage() {\n  return (\n    <DocsSection>\n      <DocsSectionHeading>ContextMenu</DocsSectionHeading>\n      <DocsSectionBody>\n        <Table.Root>\n          <Table.Header>\n            <Table.Row>\n              {contextMenuContentPropDefs.size.values.map((size) => (\n                <Table.ColumnHeaderCell key={size}>size {size}</Table.ColumnHeaderCell>\n              ))}\n            </Table.Row>\n          </Table.Header>\n          <Table.Body>\n            {contextMenuContentPropDefs.variant.values.map((variant) => (\n              <Table.Row key={variant}>\n                {contextMenuContentPropDefs.size.values.map((size) => (\n                  <Table.Cell key={size}>\n                    <ContextMenu.Root>\n                      <ContextMenu.Trigger>\n                        <RightClickArea size={size} />\n                      </ContextMenu.Trigger>\n                      <ContextMenuContentDemo size={size} variant={variant} />\n                    </ContextMenu.Root>\n                  </Table.Cell>\n                ))}\n              </Table.Row>\n            ))}\n          </Table.Body>\n        </Table.Root>\n      </DocsSectionBody>\n    </DocsSection>\n  );\n}\n"
  },
  {
    "path": "apps/playground/app/(themeable)/sink/cursors/page.tsx",
    "content": "import { Button, Card, DropdownMenu, Flex, Link, Text } from '@radix-ui/themes';\nimport { DocsSection, DocsSectionBody, DocsSectionHeading } from '../docs-section';\nimport { PointerCursorsCheckbox } from '../pointer-cursors-checkbox';\nimport { DropdownMenuContentDemo } from '../_components';\n\nexport default function CursorsPage() {\n  return (\n    <DocsSection>\n      <DocsSectionHeading>Cursors</DocsSectionHeading>\n      <DocsSectionBody>\n        <Flex align=\"center\" gap=\"5\" wrap=\"wrap\" my=\"5\">\n          <Card asChild>\n            <button>\n              <Text as=\"p\" size=\"2\" weight=\"bold\" trim=\"start\">\n                Button\n              </Text>\n              <Text as=\"p\" color=\"gray\" size=\"2\" trim=\"end\">\n                That looks like card\n              </Text>\n            </button>\n          </Card>\n\n          <Card asChild>\n            <a href=\"#Cursors\">\n              <Text as=\"p\" size=\"2\" weight=\"bold\" trim=\"start\">\n                Link\n              </Text>\n              <Text as=\"p\" color=\"gray\" size=\"2\" trim=\"end\">\n                That looks like card\n              </Text>\n            </a>\n          </Card>\n\n          <DropdownMenu.Root>\n            <DropdownMenu.Trigger>\n              <Button>\n                Dropdown Menu <DropdownMenu.TriggerIcon />\n              </Button>\n            </DropdownMenu.Trigger>\n            <DropdownMenuContentDemo />\n          </DropdownMenu.Root>\n\n          <Button>Button</Button>\n\n          <Button asChild>\n            <a href=\"#Cursors\">Link</a>\n          </Button>\n\n          <Link href=\"#Cursors\">Link</Link>\n\n          <Link asChild>\n            <button>Button</button>\n          </Link>\n        </Flex>\n\n        <PointerCursorsCheckbox />\n      </DocsSectionBody>\n    </DocsSection>\n  );\n}\n"
  },
  {
    "path": "apps/playground/app/(themeable)/sink/data-list/page.tsx",
    "content": "import { Box, Button, Code, DataList, Flex, Link, Table, Tabs, Text } from '@radix-ui/themes';\nimport { dataListLabelPropDefs, dataListRootPropDefs } from '@radix-ui/themes/props';\nimport { DocsSection, DocsSectionBody, DocsSectionHeading } from '../docs-section';\nimport { upperFirst } from '../_utils';\n\nexport default function DataListPage() {\n  return (\n    <DocsSection>\n      <DocsSectionHeading>DataList</DocsSectionHeading>\n      <DocsSectionBody>\n        <Flex gap=\"4\" align=\"center\">\n          <Tabs.Root defaultValue=\"specimen\">\n            <Tabs.List size=\"2\">\n              <Tabs.Trigger value=\"specimen\">Specimen</Tabs.Trigger>\n              <Tabs.Trigger value=\"all-orientations\">All orientations</Tabs.Trigger>\n              <Tabs.Trigger value=\"all-sizes\">All sizes</Tabs.Trigger>\n            </Tabs.List>\n\n            <Tabs.Content value=\"specimen\">\n              <Box my=\"6\" style={{ maxWidth: '688px' }}>\n                <DataList.Root>\n                  <DataList.Item>\n                    <DataList.Label width=\"200px\">Name</DataList.Label>\n                    <DataList.Value>Susan Kare</DataList.Value>\n                  </DataList.Item>\n                  <DataList.Item>\n                    <DataList.Label>Email</DataList.Label>\n                    <DataList.Value>susan.kare@apple.com</DataList.Value>\n                  </DataList.Item>\n                  <DataList.Item>\n                    <DataList.Label>Status</DataList.Label>\n                    <DataList.Value>\n                      <Button color=\"green\" size=\"1\">\n                        Active\n                      </Button>\n                    </DataList.Value>\n                  </DataList.Item>\n                  <DataList.Item>\n                    <DataList.Label>Bio</DataList.Label>\n                    <DataList.Value>\n                      Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla ac nisl et\n                      libero ultricies viverra quis vitae quam. Proin a feugiat metus.\n                    </DataList.Value>\n                  </DataList.Item>\n                  <DataList.Item>\n                    <DataList.Label>Organization</DataList.Label>\n                    <DataList.Value>\n                      <Link href=\"https://workos.com\">WorkOS</Link>\n                    </DataList.Value>\n                  </DataList.Item>\n                </DataList.Root>\n              </Box>\n            </Tabs.Content>\n\n            <Tabs.Content value=\"all-orientations\">\n              <Box my=\"6\">\n                <Table.Root>\n                  <Table.Body>\n                    {dataListRootPropDefs.orientation.values.map((orientation) => (\n                      <Table.Row key={orientation}>\n                        <Table.RowHeaderCell>{upperFirst(orientation)}</Table.RowHeaderCell>\n                        <Table.Cell style={{ textAlign: 'left' }}>\n                          <DataList.Root orientation={orientation} my=\"3\">\n                            <DataList.Item>\n                              <DataList.Label>Name</DataList.Label>\n                              <DataList.Value>Susan Kare</DataList.Value>\n                            </DataList.Item>\n                            <DataList.Item>\n                              <DataList.Label>Email</DataList.Label>\n                              <DataList.Value>susan.kare@apple.com</DataList.Value>\n                            </DataList.Item>\n                          </DataList.Root>\n                        </Table.Cell>\n                      </Table.Row>\n                    ))}\n                  </Table.Body>\n                </Table.Root>\n              </Box>\n            </Tabs.Content>\n\n            <Tabs.Content value=\"all-sizes\">\n              <Box my=\"6\">\n                <Table.Root>\n                  <Table.Body>\n                    {dataListRootPropDefs.size.values.map((size) => (\n                      <Table.Row key={size}>\n                        <Table.RowHeaderCell>{`Size ${size}`}</Table.RowHeaderCell>\n                        <Table.Cell style={{ textAlign: 'left' }}>\n                          <DataList.Root size={size} my=\"3\">\n                            <DataList.Item>\n                              <DataList.Label>Name</DataList.Label>\n                              <DataList.Value>Susan Kare</DataList.Value>\n                            </DataList.Item>\n                            <DataList.Item>\n                              <DataList.Label>Email</DataList.Label>\n                              <DataList.Value>susan.kare@apple.com</DataList.Value>\n                            </DataList.Item>\n                          </DataList.Root>\n                        </Table.Cell>\n                      </Table.Row>\n                    ))}\n                  </Table.Body>\n                </Table.Root>\n              </Box>\n            </Tabs.Content>\n          </Tabs.Root>\n        </Flex>\n\n        <Text as=\"p\" my=\"5\">\n          <Code>color</Code> can be set per <Code>DataListLabel</Code> instance:\n        </Text>\n\n        <details>\n          <summary>\n            <Text size=\"2\" color=\"gray\">\n              See color combinations\n            </Text>\n          </summary>\n          <Table.Root>\n            <Table.Header>\n              <Table.Row>\n                <Table.ColumnHeaderCell />\n                <Table.ColumnHeaderCell>Color</Table.ColumnHeaderCell>\n                <Table.ColumnHeaderCell>High Contrast</Table.ColumnHeaderCell>\n              </Table.Row>\n            </Table.Header>\n\n            <Table.Body>\n              {dataListLabelPropDefs.color.values.map((color) => (\n                <Table.Row key={color}>\n                  <Table.RowHeaderCell style={{ whiteSpace: 'nowrap' }}>\n                    {color}\n                  </Table.RowHeaderCell>\n                  <Table.Cell>\n                    <DataList.Root my=\"3\">\n                      <DataList.Item>\n                        <DataList.Label color={color}>Name</DataList.Label>\n                        <DataList.Value>Susan Kare</DataList.Value>\n                      </DataList.Item>\n                      <DataList.Item>\n                        <DataList.Label color={color}>Email</DataList.Label>\n                        <DataList.Value>susan.kare@apple.com</DataList.Value>\n                      </DataList.Item>\n                    </DataList.Root>\n                  </Table.Cell>\n                  <Table.Cell>\n                    <DataList.Root my=\"3\" ml=\"6\">\n                      <DataList.Item>\n                        <DataList.Label highContrast color={color}>\n                          Name\n                        </DataList.Label>\n                        <DataList.Value>Susan Kare</DataList.Value>\n                      </DataList.Item>\n                      <DataList.Item>\n                        <DataList.Label highContrast color={color}>\n                          Email\n                        </DataList.Label>\n                        <DataList.Value>susan.kare@apple.com</DataList.Value>\n                      </DataList.Item>\n                    </DataList.Root>\n                  </Table.Cell>\n                </Table.Row>\n              ))}\n            </Table.Body>\n          </Table.Root>\n        </details>\n\n        <Text as=\"p\" my=\"5\">\n          <Code>width</Code> can be set per <Code>DataListLabel</Code> instance:\n        </Text>\n\n        <details>\n          <summary>\n            <Text size=\"2\" color=\"gray\">\n              See width examples\n            </Text>\n          </summary>\n          <Table.Root>\n            <Table.Body>\n              {['64px', '80px', '128px'].map((width) => {\n                return (\n                  <Table.Row key={width}>\n                    <Table.RowHeaderCell>{`${width}`}</Table.RowHeaderCell>\n                    <Table.Cell>\n                      <DataList.Root my=\"3\">\n                        <DataList.Item>\n                          <DataList.Label width={width}>Name</DataList.Label>\n                          <DataList.Value>Susan Kare</DataList.Value>\n                        </DataList.Item>\n                        <DataList.Item>\n                          <DataList.Label width={width}>Email</DataList.Label>\n                          <DataList.Value>susan.kare@apple.com</DataList.Value>\n                        </DataList.Item>\n                      </DataList.Root>\n                    </Table.Cell>\n                  </Table.Row>\n                );\n              })}\n            </Table.Body>\n          </Table.Root>\n        </details>\n      </DocsSectionBody>\n    </DocsSection>\n  );\n}\n"
  },
  {
    "path": "apps/playground/app/(themeable)/sink/dialog/page.tsx",
    "content": "import { Button, Dialog, Flex } from '@radix-ui/themes';\nimport { DocsSection, DocsSectionBody, DocsSectionHeading } from '../docs-section';\nimport { InfoCircledIcon, Share2Icon } from '@radix-ui/react-icons';\n\nexport default function DialogPage() {\n  return (\n    <DocsSection>\n      <DocsSectionHeading>Dialog</DocsSectionHeading>\n      <DocsSectionBody>\n        <Dialog.Root>\n          <Dialog.Trigger>\n            <Button variant=\"solid\">Open</Button>\n          </Dialog.Trigger>\n          <Dialog.Content asChild maxWidth=\"450px\">\n            <Flex direction=\"column\" gap=\"3\">\n              <InfoCircledIcon style={{ position: 'absolute', top: '24px', right: '20px' }} />\n              <Dialog.Title>Share resource</Dialog.Title>\n              <Dialog.Description>\n                Jan Tschichold was a German calligrapher, typographer and book designer. He played a\n                significant role in the development of graphic design in the 20th century.\n              </Dialog.Description>\n              <Flex gap=\"3\" mt=\"4\" justify=\"end\">\n                <Dialog.Close>\n                  <Button variant=\"soft\" color=\"gray\">\n                    Cancel\n                  </Button>\n                </Dialog.Close>\n                <Dialog.Close>\n                  <Button variant=\"solid\">\n                    Share <Share2Icon />\n                  </Button>\n                </Dialog.Close>\n              </Flex>\n            </Flex>\n          </Dialog.Content>\n        </Dialog.Root>\n      </DocsSectionBody>\n    </DocsSection>\n  );\n}\n"
  },
  {
    "path": "apps/playground/app/(themeable)/sink/docs-section.tsx",
    "content": "import { Box, Flex, Heading } from '@radix-ui/themes';\n\nexport function DocsSectionHeading({ children }: { children: React.ReactNode }) {\n  return (\n    <Heading size=\"6\" as=\"h2\">\n      {children}\n    </Heading>\n  );\n}\n\nexport function DocsSection({ children }: { children: React.ReactNode }) {\n  return (\n    <Flex asChild direction=\"column\" gap=\"4\">\n      <section>{children}</section>\n    </Flex>\n  );\n}\n\nexport function DocsSectionBody({ children }: { children: React.ReactNode }) {\n  return <Box>{children}</Box>;\n}\n"
  },
  {
    "path": "apps/playground/app/(themeable)/sink/dropdown-menu/page.tsx",
    "content": "'use client';\nimport { Fragment } from 'react';\nimport { DropdownMenu, Button, IconButton, Text, Code, Table } from '@radix-ui/themes';\nimport { DotsHorizontalIcon } from '@radix-ui/react-icons';\nimport { dropdownMenuContentPropDefs } from '@radix-ui/themes/props';\nimport { DocsSection, DocsSectionBody, DocsSectionHeading } from '../docs-section';\nimport { DropdownMenuContentDemo } from '../_components';\nimport { accentColorsGrouped } from '../_utils';\n\nexport default function DropdownMenuPage() {\n  return (\n    <DocsSection>\n      <DocsSectionHeading>DropdownMenu</DocsSectionHeading>\n      <DocsSectionBody>\n        <Table.Root>\n          <Table.Header>\n            <Table.Row>\n              <Table.ColumnHeaderCell />\n              {dropdownMenuContentPropDefs.size.values.map((size) => (\n                <Table.ColumnHeaderCell key={size}>size {size}</Table.ColumnHeaderCell>\n              ))}\n              <Table.ColumnHeaderCell>+ high-contrast</Table.ColumnHeaderCell>\n              <Table.ColumnHeaderCell>gray</Table.ColumnHeaderCell>\n              <Table.ColumnHeaderCell>+ high-contrast</Table.ColumnHeaderCell>\n            </Table.Row>\n          </Table.Header>\n          <Table.Body>\n            {dropdownMenuContentPropDefs.variant.values.map((variant) => (\n              <Table.Row key={variant}>\n                <Table.RowHeaderCell>{variant}</Table.RowHeaderCell>\n                {dropdownMenuContentPropDefs.size.values.map((size) => (\n                  <Table.Cell key={size}>\n                    <DropdownMenu.Root>\n                      <DropdownMenu.Trigger>\n                        <Button size={size} variant=\"soft\" color=\"gray\">\n                          More <DropdownMenu.TriggerIcon />\n                        </Button>\n                      </DropdownMenu.Trigger>\n                      <DropdownMenuContentDemo size={size} variant={variant} />\n                    </DropdownMenu.Root>\n                  </Table.Cell>\n                ))}\n                <Table.Cell>\n                  <DropdownMenu.Root>\n                    <DropdownMenu.Trigger>\n                      <Button variant=\"soft\" color=\"gray\">\n                        More <DropdownMenu.TriggerIcon />\n                      </Button>\n                    </DropdownMenu.Trigger>\n                    <DropdownMenuContentDemo variant={variant} highContrast />\n                  </DropdownMenu.Root>\n                </Table.Cell>\n                <Table.Cell>\n                  <DropdownMenu.Root>\n                    <DropdownMenu.Trigger>\n                      <Button variant=\"soft\" color=\"gray\">\n                        More <DropdownMenu.TriggerIcon />\n                      </Button>\n                    </DropdownMenu.Trigger>\n                    <DropdownMenuContentDemo variant={variant} color=\"gray\" />\n                  </DropdownMenu.Root>\n                </Table.Cell>\n                <Table.Cell>\n                  <DropdownMenu.Root>\n                    <DropdownMenu.Trigger>\n                      <Button variant=\"soft\" color=\"gray\">\n                        More <DropdownMenu.TriggerIcon />\n                      </Button>\n                    </DropdownMenu.Trigger>\n                    <DropdownMenuContentDemo variant={variant} color=\"gray\" highContrast />\n                  </DropdownMenu.Root>\n                </Table.Cell>\n              </Table.Row>\n            ))}\n          </Table.Body>\n        </Table.Root>\n\n        <Text as=\"p\" my=\"5\">\n          <Code>color</Code> can be set per instance:\n        </Text>\n\n        <details>\n          <summary>\n            <Text size=\"2\" color=\"gray\">\n              See colors & variants combinations\n            </Text>\n          </summary>\n          {accentColorsGrouped.map(({ label, values }) => (\n            <Fragment key={label}>\n              <Text as=\"p\" weight=\"bold\" mt=\"6\" mb=\"4\">\n                {label}\n              </Text>\n              <Table.Root>\n                <Table.Header>\n                  <Table.Row>\n                    <Table.ColumnHeaderCell />\n                    {dropdownMenuContentPropDefs.variant.values.map((variant) => (\n                      <Table.ColumnHeaderCell key={variant}>{variant}</Table.ColumnHeaderCell>\n                    ))}\n                  </Table.Row>\n                </Table.Header>\n                <Table.Body>\n                  {values.map((color) => (\n                    <Table.Row key={color}>\n                      <Table.RowHeaderCell>{color}</Table.RowHeaderCell>\n                      {dropdownMenuContentPropDefs.variant.values.map((variant) => (\n                        <Table.Cell key={variant}>\n                          <DropdownMenu.Root>\n                            <DropdownMenu.Trigger>\n                              <IconButton variant=\"soft\" color=\"gray\">\n                                <DotsHorizontalIcon />\n                              </IconButton>\n                            </DropdownMenu.Trigger>\n                            <DropdownMenuContentDemo variant={variant} color={color} />\n                          </DropdownMenu.Root>\n                          <DropdownMenu.Root>\n                            <DropdownMenu.Trigger>\n                              <IconButton variant=\"soft\" color=\"gray\" ml=\"2\">\n                                <DotsHorizontalIcon />\n                              </IconButton>\n                            </DropdownMenu.Trigger>\n                            <DropdownMenuContentDemo variant={variant} color={color} highContrast />\n                          </DropdownMenu.Root>\n                        </Table.Cell>\n                      ))}\n                    </Table.Row>\n                  ))}\n                </Table.Body>\n              </Table.Root>\n            </Fragment>\n          ))}\n        </details>\n      </DocsSectionBody>\n    </DocsSection>\n  );\n}\n"
  },
  {
    "path": "apps/playground/app/(themeable)/sink/grid/page.tsx",
    "content": "import { Box, Grid } from '@radix-ui/themes';\nimport { DocsSection, DocsSectionBody, DocsSectionHeading } from '../docs-section';\n\nexport default function GridPage() {\n  return (\n    <DocsSection>\n      <DocsSectionHeading>Grid</DocsSectionHeading>\n      <DocsSectionBody>\n        {/* Ensure breakpoints work */}\n        <Grid columns={{ initial: '1', md: '2', lg: '3' }} gap=\"3\" mb=\"8\">\n          <Box style={{ height: 256 }}>\n            {/* Ensure default value works */}\n            <Grid gap=\"3\" style={{ height: 256 }}>\n              {Array.from(Array(4).keys()).map((i) => (\n                <Box key={i} style={{ height: 55, background: 'var(--accent-9)' }} />\n              ))}\n            </Grid>\n          </Box>\n\n          <Box style={{ height: 256 }}>\n            {/* Ensure plain strings works */}\n            <Grid columns=\"5\" gap=\"3\" height=\"100%\">\n              {Array.from(Array(5).keys()).map((i) => (\n                <Box key={i} style={{ background: 'var(--accent-9)' }} />\n              ))}\n            </Grid>\n          </Box>\n\n          <Box style={{ height: 256 }}>\n            {/* Ensure initial is equal to plain strings */}\n            <Grid columns={{ initial: '5' }} gap=\"3\" height=\"100%\">\n              {Array.from(Array(20).keys()).map((i) => (\n                <Box key={i} style={{ background: 'var(--accent-9)' }} />\n              ))}\n            </Grid>\n          </Box>\n        </Grid>\n\n        <Grid gap=\"3\" columns=\"4\">\n          {/* Ensure arbitrary values work */}\n          <Grid gap=\"3\" columns=\"1fr 1fr 2fr\">\n            {Array.from(Array(3).keys()).map((i) => (\n              <Box key={i} style={{ height: 55, background: 'var(--accent-9)' }} />\n            ))}\n          </Grid>\n\n          {/* Ensure arbitrary values work with theme values */}\n          <Grid gap=\"3\" columns={{ xs: '3', md: '1fr 1fr 2fr' }}>\n            {Array.from(Array(3).keys()).map((i) => (\n              <Box key={i} style={{ height: 55, background: 'var(--accent-9)' }} />\n            ))}\n          </Grid>\n\n          {/* Ensure CSS source order is correct for arbitrary and theme values */}\n          <Grid gap=\"3\" columns={{ xs: '3', md: '1fr 1fr 2fr', lg: '3' }}>\n            {Array.from(Array(3).keys()).map((i) => (\n              <Box key={i} style={{ height: 55, background: 'var(--accent-9)' }} />\n            ))}\n          </Grid>\n\n          {/* Ensure mapped values work*/}\n          <Grid gap=\"1\" columns={{ xs: '20' }}>\n            {Array.from(Array(20).keys()).map((i) => (\n              <Box key={i} style={{ height: 55, background: 'var(--accent-9)' }} />\n            ))}\n          </Grid>\n        </Grid>\n      </DocsSectionBody>\n    </DocsSection>\n  );\n}\n"
  },
  {
    "path": "apps/playground/app/(themeable)/sink/heading/page.tsx",
    "content": "import { Flex, Heading, Text } from '@radix-ui/themes';\nimport { headingPropDefs } from '@radix-ui/themes/props';\nimport { DocsSection, DocsSectionBody, DocsSectionHeading } from '../docs-section';\nimport { upperFirst } from '../_utils';\n\nexport default function HeadingPage() {\n  return (\n    <DocsSection>\n      <DocsSectionHeading>Heading</DocsSectionHeading>\n      <DocsSectionBody>\n        <Flex direction=\"column\" gap=\"4\">\n          {headingPropDefs.size.values\n            .slice()\n            .reverse()\n            .map((size) => (\n              <Heading key={size} size={size}>\n                The quick brown fox jumped{Number(size) < 9 && ' over the lazy dog'}\n              </Heading>\n            ))}\n\n          <Flex direction=\"column\" gap=\"6\" mt=\"5\">\n            <Heading size=\"9\" style={{ width: '50%' }}>\n              Principles of the Typographic Craft\n            </Heading>\n            <Heading size=\"8\" style={{ width: '40%' }}>\n              Principles of the Typographic Craft\n            </Heading>\n            <Heading size=\"7\" style={{ width: '30%' }}>\n              Principles of the Typographic Craft\n            </Heading>\n            <Heading size=\"6\" style={{ width: '25%' }}>\n              Principles of the Typographic Craft\n            </Heading>\n            <Heading size=\"5\" style={{ width: '20%' }}>\n              Principles of the Typographic Craft\n            </Heading>\n            <Heading size=\"4\" style={{ width: '15%' }}>\n              Principles of the Typographic Craft\n            </Heading>\n            <Heading size=\"3\" style={{ width: '15%' }}>\n              Principles of the Typographic Craft\n            </Heading>\n            <Heading size=\"2\" style={{ width: '15%' }}>\n              Principles of the Typographic Craft\n            </Heading>\n            <Heading size=\"1\" style={{ width: '10%' }}>\n              Principles of the Typographic Craft\n            </Heading>\n          </Flex>\n        </Flex>\n\n        <Flex direction=\"column\" gap=\"5\" mt=\"8\">\n          <Flex gap=\"5\">\n            {(['red', 'yellow', 'green', 'gray'] as const).map((color) => (\n              <Flex key={color} direction=\"column\" gap=\"1\">\n                <Heading color={color}>{upperFirst(color)}</Heading>\n                <Heading color={color} highContrast>\n                  {upperFirst(color)}\n                </Heading>\n              </Flex>\n            ))}\n          </Flex>\n\n          <Heading color=\"red\" highContrast>\n            This is some red text in high-contrast and this <Text color=\"blue\">word</Text> should be\n            blue.\n          </Heading>\n\n          <Heading color=\"red\">\n            This is some red text and this <Text highContrast>word</Text> should be in\n            high-contrast.\n          </Heading>\n        </Flex>\n      </DocsSectionBody>\n    </DocsSection>\n  );\n}\n"
  },
  {
    "path": "apps/playground/app/(themeable)/sink/hide-cursor.tsx",
    "content": "'use client';\n\nimport * as React from 'react';\nimport { useIdle } from 'react-use';\n\nfunction hideCursor() {\n  document.body.classList.add('hide-cursor');\n}\nfunction showCursor() {\n  document.body.classList.remove('hide-cursor');\n}\n\nexport function HideCursor() {\n  const isIdle = useIdle(1000);\n\n  React.useEffect(() => {\n    if (isIdle) {\n      hideCursor();\n    } else {\n      showCursor();\n    }\n  }, [isIdle]);\n\n  return null;\n}\n"
  },
  {
    "path": "apps/playground/app/(themeable)/sink/hover-card/page.tsx",
    "content": "import { HoverCard, Link, Text } from '@radix-ui/themes';\nimport { DocsSection, DocsSectionBody, DocsSectionHeading } from '../docs-section';\n\nexport default function HoverCardPage() {\n  return (\n    <DocsSection>\n      <DocsSectionHeading>HoverCard</DocsSectionHeading>\n      <DocsSectionBody>\n        <HoverCard.Root>\n          <HoverCard.Trigger>\n            <Link>A fancy link</Link>\n          </HoverCard.Trigger>\n          <HoverCard.Content width=\"200px\">\n            <Text as=\"p\" size=\"2\">\n              Jan Tschichold was a German calligrapher, typographer and book designer. He played a\n              significant role in the development of graphic design in the 20th century.\n            </Text>\n          </HoverCard.Content>\n        </HoverCard.Root>\n      </DocsSectionBody>\n    </DocsSection>\n  );\n}\n"
  },
  {
    "path": "apps/playground/app/(themeable)/sink/icon-button/page.tsx",
    "content": "import { Fragment } from 'react';\nimport { Share2Icon } from '@radix-ui/react-icons';\nimport { IconButton, Box, Text, Code, Table } from '@radix-ui/themes';\nimport { iconButtonPropDefs } from '@radix-ui/themes/props';\nimport { DocsSection, DocsSectionBody, DocsSectionHeading } from '../docs-section';\nimport { accentColorsGrouped } from '../_utils';\n\nexport default function IconButtonPage() {\n  return (\n    <DocsSection>\n      <DocsSectionHeading>IconButton</DocsSectionHeading>\n      <DocsSectionBody>\n        <Table.Root>\n          <Table.Header>\n            <Table.Row>\n              <Table.ColumnHeaderCell />\n              {iconButtonPropDefs.size.values.map((size) => (\n                <Table.ColumnHeaderCell key={size}>size {size}</Table.ColumnHeaderCell>\n              ))}\n              <Table.ColumnHeaderCell>+ high-contrast</Table.ColumnHeaderCell>\n              <Table.ColumnHeaderCell />\n              <Table.ColumnHeaderCell>gray</Table.ColumnHeaderCell>\n              <Table.ColumnHeaderCell>+ high-contrast</Table.ColumnHeaderCell>\n              <Table.ColumnHeaderCell />\n              <Table.ColumnHeaderCell>disabled</Table.ColumnHeaderCell>\n            </Table.Row>\n          </Table.Header>\n          <Table.Body>\n            {iconButtonPropDefs.variant.values.map((variant) => (\n              <Table.Row key={variant}>\n                <Table.RowHeaderCell>{variant}</Table.RowHeaderCell>\n                {iconButtonPropDefs.size.values.map((size) => (\n                  <Table.Cell key={size}>\n                    <IconButton size={size} variant={variant}>\n                      <Share2Icon />\n                    </IconButton>\n                  </Table.Cell>\n                ))}\n                <Table.Cell>\n                  <IconButton variant={variant} highContrast>\n                    <Share2Icon />\n                  </IconButton>\n                </Table.Cell>\n                <Table.Cell />\n                <Table.Cell>\n                  <IconButton variant={variant} color=\"gray\">\n                    <Share2Icon />\n                  </IconButton>\n                </Table.Cell>\n                <Table.Cell>\n                  <IconButton variant={variant} color=\"gray\" highContrast>\n                    <Share2Icon />\n                  </IconButton>\n                </Table.Cell>\n                <Table.Cell />\n                <Table.Cell>\n                  <IconButton variant={variant} disabled>\n                    <Share2Icon />\n                  </IconButton>\n                </Table.Cell>\n              </Table.Row>\n            ))}\n          </Table.Body>\n        </Table.Root>\n\n        <Text as=\"p\" my=\"5\">\n          <Code>radius</Code> can be set per instance:\n        </Text>\n\n        <details>\n          <summary>\n            <Text size=\"2\" color=\"gray\">\n              See specific radius examples\n            </Text>\n          </summary>\n          <Box mt=\"3\">\n            <Table.Root>\n              <Table.Header>\n                <Table.Row>\n                  <Table.ColumnHeaderCell />\n                  {iconButtonPropDefs.size.values.map((size) => (\n                    <Table.ColumnHeaderCell key={size}>size {size}</Table.ColumnHeaderCell>\n                  ))}\n                </Table.Row>\n              </Table.Header>\n              <Table.Body>\n                {iconButtonPropDefs.radius.values.map((radius) => (\n                  <Table.Row key={radius}>\n                    <Table.RowHeaderCell>{radius}</Table.RowHeaderCell>\n                    {iconButtonPropDefs.size.values.map((size) => (\n                      <Table.Cell key={size}>\n                        <IconButton size={size} radius={radius}>\n                          <Share2Icon />\n                        </IconButton>\n                      </Table.Cell>\n                    ))}\n                  </Table.Row>\n                ))}\n              </Table.Body>\n            </Table.Root>\n          </Box>\n        </details>\n\n        <Text as=\"p\" my=\"5\">\n          <Code>color</Code> can be set per instance:\n        </Text>\n\n        <details>\n          <summary>\n            <Text size=\"2\" color=\"gray\">\n              See colors & variants combinations\n            </Text>\n          </summary>\n          {accentColorsGrouped.map(({ label, values }) => (\n            <Fragment key={label}>\n              <Text as=\"p\" weight=\"bold\" mt=\"6\" mb=\"4\">\n                {label}\n              </Text>\n              <Table.Root>\n                <Table.Header>\n                  <Table.Row>\n                    <Table.ColumnHeaderCell />\n                    {iconButtonPropDefs.variant.values.map((variant) => (\n                      <Table.ColumnHeaderCell key={variant}>{variant}</Table.ColumnHeaderCell>\n                    ))}\n                  </Table.Row>\n                </Table.Header>\n                <Table.Body>\n                  {values.map((color) => (\n                    <Table.Row key={color}>\n                      <Table.RowHeaderCell>{color}</Table.RowHeaderCell>\n                      {iconButtonPropDefs.variant.values.map((variant) => (\n                        <Table.Cell key={variant}>\n                          <IconButton variant={variant} color={color}>\n                            <Share2Icon />\n                          </IconButton>\n                          <IconButton variant={variant} color={color} highContrast ml=\"2\">\n                            <Share2Icon />\n                          </IconButton>\n                        </Table.Cell>\n                      ))}\n                    </Table.Row>\n                  ))}\n                </Table.Body>\n              </Table.Root>\n            </Fragment>\n          ))}\n        </details>\n      </DocsSectionBody>\n    </DocsSection>\n  );\n}\n"
  },
  {
    "path": "apps/playground/app/(themeable)/sink/kbd/page.tsx",
    "content": "import { Kbd, Flex, Table } from '@radix-ui/themes';\nimport { kbdPropDefs } from '@radix-ui/themes/props';\nimport { DocsSection, DocsSectionBody, DocsSectionHeading } from '../docs-section';\n\nexport default function KbdPage() {\n  return (\n    <DocsSection>\n      <DocsSectionHeading>Kbd</DocsSectionHeading>\n      <DocsSectionBody>\n        <Flex gap=\"4\">\n          <Kbd asChild>\n            <button>Enter</button>\n          </Kbd>\n          <Kbd asChild>\n            <button>Tab</button>\n          </Kbd>\n          <Kbd asChild>\n            <button>Shift + Tab</button>\n          </Kbd>\n        </Flex>\n\n        <Table.Root>\n          <Table.Header>\n            <Table.Row>\n              <Table.ColumnHeaderCell />\n              {kbdPropDefs.variant.values.map((variant) => (\n                <Table.ColumnHeaderCell key={variant}>{variant}</Table.ColumnHeaderCell>\n              ))}\n            </Table.Row>\n          </Table.Header>\n          <Table.Body>\n            {kbdPropDefs.size.values\n              .slice()\n              .reverse()\n              .map((size) => (\n                <Table.Row key={size}>\n                  <Table.RowHeaderCell>size {size}</Table.RowHeaderCell>\n                  {kbdPropDefs.variant.values.map((variant) => (\n                    <Table.Cell key={variant} style={{ paddingRight: 'var(--space-6)' }}>\n                      <Flex gap=\"2\">\n                        <Kbd size={size} variant={variant}>\n                          /\n                        </Kbd>\n                        <Kbd size={size} variant={variant}>\n                          X\n                        </Kbd>\n                        <Kbd size={size} variant={variant}>\n                          ⇧ ⌘ V\n                        </Kbd>\n                      </Flex>\n                    </Table.Cell>\n                  ))}\n                </Table.Row>\n              ))}\n          </Table.Body>\n        </Table.Root>\n      </DocsSectionBody>\n    </DocsSection>\n  );\n}\n"
  },
  {
    "path": "apps/playground/app/(themeable)/sink/layout.tsx",
    "content": "import NextLink from 'next/link';\nimport { Collapsible } from 'radix-ui';\nimport {\n  Box,\n  Container,\n  Flex,\n  Grid,\n  Heading,\n  IconButton,\n  Link,\n  Reset,\n  Separator,\n  Tooltip,\n} from '@radix-ui/themes';\nimport { RadixLogo } from './radix-logo';\nimport { HamburgerMenuIcon } from '@radix-ui/react-icons';\n\n// prettier-ignore\nconst NAV_ITEMS = [\n  { label: 'Alert Dialog', href: 'alert-dialog' },\n  { label: 'Aspect Ratio', href: 'aspect-ratio' },\n  { label: 'Avatar', href: 'avatar' },\n  { label: 'Badge', href: 'badge' },\n  { label: 'Blockquote', href: 'blockquote' },\n  { label: 'Button', href: 'button' },\n  { label: 'Callout', href: 'callout' },\n  { label: 'Card', href: 'card' },\n  { label: 'Checkbox', href: 'checkbox' },\n  { label: 'Checkbox Cards', href: 'checkbox-cards' },\n  { label: 'Checkbox Group', href: 'checkbox-group' },\n  { label: 'Code', href: 'code' },\n  { label: 'Container', href: 'container' },\n  { label: 'Context Menu', href: 'context-menu' },\n  { label: 'Cursors', href: 'cursors' },\n  { label: 'Data List', href: 'data-list' },\n  { label: 'Dialog', href: 'dialog' },\n  { label: 'Dropdown Menu', href: 'dropdown-menu' },\n  { label: 'Grid', href: 'grid' },\n  { label: 'Heading', href: 'heading' },\n  { label: 'Hover Card', href: 'hover-card' },\n  { label: 'Icon Button', href: 'icon-button' },\n  { label: 'Kbd', href: 'kbd' },\n  { label: 'Link', href: 'link' },\n  { label: 'Mixed Nested Themes Test', href: 'mixed-nested-themes-test' },\n  { label: 'Nested Appearances Test', href: 'nested-appearances-test' },\n  { label: 'Nested Colors Test', href: 'nested-colors-test' },\n  { label: 'Playground', href: 'playground' },\n  { label: 'Popover', href: 'popover' },\n  { label: 'Progress', href: 'progress' },\n  { label: 'Radio', href: 'radio' },\n  { label: 'Radio Cards', href: 'radio-cards' },\n  { label: 'Radio Group', href: 'radio-group' },\n  { label: 'Scroll Area', href: 'scroll-area' },\n  { label: 'Segmented Control', href: 'segmented-control' },\n  { label: 'Select', href: 'select' },\n  { label: 'Separator', href: 'separator' },\n  { label: 'Shadow Tokens', href: 'shadow-tokens' },\n  { label: 'Skeleton', href: 'skeleton' },\n  { label: 'Slider', href: 'slider' },\n  { label: 'Spinner', href: 'spinner' },\n  { label: 'Switch', href: 'switch' },\n  { label: 'Tab Nav', href: 'tab-nav' },\n  { label: 'Table', href: 'table' },\n  { label: 'Tabs', href: 'tabs' },\n  { label: 'Text', href: 'text' },\n  { label: 'Text Area', href: 'text-area' },\n  { label: 'Text Field', href: 'text-field' },\n  { label: 'Tooltip', href: 'tooltip' },\n  { label: 'Typography', href: 'typography' },\n] satisfies { label: string; href: string }[];\n\nexport default function SinkLayout({ children }: { children: React.ReactNode }) {\n  return (\n    <Container size=\"4\" maxWidth=\"1680px\">\n      <Grid\n        areas={{ initial: '\"header\" \"separator\" \"main\"', md: '\"main separator header\"' }}\n        columns={{ initial: '1', md: '1fr 1px 360px', xl: '1fr 1px 480px' }}\n        rows={{ initial: 'auto 1px 1fr', md: '1' }}\n        height=\"100%\"\n        minHeight=\"100svh\"\n      >\n        <Collapsible.Root asChild>\n          <Grid\n            asChild\n            flexGrow={{ initial: '0', md: '1' }}\n            flexShrink={{ initial: '0', md: '1' }}\n            flexBasis={{ initial: '0', md: '1' }}\n            align={{ initial: 'center', md: 'start' }}\n            justify=\"center\"\n            gridArea=\"header\"\n            position={{ initial: undefined, md: 'sticky' }}\n            top={{ initial: undefined, md: '0' }}\n            alignSelf={{ initial: undefined, md: 'start' }}\n            maxHeight={{ initial: undefined, md: '100svh' }}\n            overflow={{ initial: undefined, md: 'auto' }}\n            rows=\"auto 1fr\"\n          >\n            <header>\n              <Box\n                width=\"100%\"\n                alignSelf=\"center\"\n                style={{ backgroundColor: 'var(--color-background)' }}\n                position={{ initial: undefined, md: 'sticky' }}\n                top={{ initial: undefined, md: '0' }}\n                pt={{ initial: '4', md: '9' }}\n                pb=\"4\"\n              >\n                <Flex height=\"100%\" width=\"100%\" align=\"center\">\n                  <Container mx=\"4\" size=\"4\">\n                    <Flex gap=\"4\" align=\"center\">\n                      <Flex align=\"center\" gap=\"1\" flexGrow=\"1\">\n                        <RadixLogo />\n                        <Heading size=\"5\">Radix Themes</Heading>\n                      </Flex>\n                      <Tooltip content=\"Toggle navigation\">\n                        <Collapsible.Trigger asChild>\n                          <IconButton aria-label=\"Toggle navigation\" variant=\"ghost\" color=\"gray\">\n                            <HamburgerMenuIcon />\n                          </IconButton>\n                        </Collapsible.Trigger>\n                      </Tooltip>\n                    </Flex>\n                  </Container>\n                </Flex>\n              </Box>\n              <Collapsible.Content asChild>\n                <Box asChild height=\"100%\" py=\"4\" pb={{ initial: undefined, md: '9' }}>\n                  <nav aria-label=\"Main\">\n                    <Container mx=\"4\" size=\"4\">\n                      <NavigationMenu />\n                    </Container>\n                  </nav>\n                </Box>\n              </Collapsible.Content>\n            </header>\n          </Grid>\n        </Collapsible.Root>\n        <Box asChild gridArea=\"separator\">\n          <Separator size=\"4\" aria-hidden orientation={{ initial: 'horizontal', md: 'vertical' }} />\n        </Box>\n        <Box\n          asChild\n          flexGrow=\"1\"\n          flexShrink=\"1\"\n          flexBasis=\"0\"\n          gridArea=\"main\"\n          py={{ initial: '6', md: '9' }}\n        >\n          <main>\n            <Container mx=\"4\" size=\"4\" position=\"relative\" width=\"100%\" height=\"100%\">\n              {children}\n            </Container>\n          </main>\n        </Box>\n      </Grid>\n    </Container>\n  );\n}\n\nfunction NavigationMenu() {\n  return (\n    <Flex direction=\"column\" gap=\"2\">\n      <Link asChild highContrast>\n        <NextLink href=\"/sink\">Kitchen sink</NextLink>\n      </Link>\n      <Separator size=\"4\" />\n      <Flex direction=\"column\" gap=\"1\" asChild>\n        <Reset>\n          <ul>\n            {NAV_ITEMS.map((item) => (\n              <Box display=\"contents\" asChild key={item.label}>\n                <li>\n                  <Link asChild highContrast>\n                    <NextLink href={`/sink${item.href ? '/' + item.href : ''}`}>\n                      {item.label}\n                    </NextLink>\n                  </Link>\n                </li>\n              </Box>\n            ))}\n          </ul>\n        </Reset>\n      </Flex>\n    </Flex>\n  );\n}\n"
  },
  {
    "path": "apps/playground/app/(themeable)/sink/link/page.tsx",
    "content": "import { ArrowTopRightIcon } from '@radix-ui/react-icons';\nimport { Flex, Link, Separator, Text } from '@radix-ui/themes';\nimport { linkPropDefs } from '@radix-ui/themes/props';\nimport { DocsSection, DocsSectionBody, DocsSectionHeading } from '../docs-section';\n\nexport default function LinkPage() {\n  return (\n    <DocsSection>\n      <DocsSectionHeading>Link</DocsSectionHeading>\n      <DocsSectionBody>\n        <Flex gap=\"4\" mb=\"5\">\n          <Link color=\"purple\" href=\"/\">\n            This is a link\n          </Link>\n          <Link color=\"gray\" href=\"/\">\n            This is a link\n          </Link>\n          <Link color=\"green\" href=\"/\">\n            This is a link\n          </Link>\n          <Link color=\"red\" href=\"/\">\n            This is a link\n          </Link>\n          <Link color=\"yellow\" href=\"/\">\n            This is a link\n          </Link>\n          <Link color=\"blue\" href=\"/\">\n            This is a link\n          </Link>\n\n          <Text as=\"p\" color=\"gray\">\n            <Link href=\"/\">This is a link</Link>\n          </Text>\n        </Flex>\n        <Flex gap=\"4\" mb=\"5\">\n          <Link color=\"purple\" highContrast href=\"/\">\n            This is a link\n          </Link>\n          <Link color=\"gray\" highContrast href=\"/\">\n            This is a link\n          </Link>\n          <Link color=\"green\" highContrast href=\"/\">\n            This is a link\n          </Link>\n          <Link color=\"red\" highContrast href=\"/\">\n            This is a link\n          </Link>\n          <Link color=\"yellow\" highContrast href=\"/\">\n            This is a link\n          </Link>\n          <Link color=\"blue\" highContrast href=\"/\">\n            This is a link\n          </Link>\n        </Flex>\n\n        <Flex direction=\"column\" align=\"start\" gap=\"4\" mb=\"5\">\n          {linkPropDefs.size.values\n            .slice()\n            .reverse()\n            .map((size) => (\n              <Link key={size} href=\"/\" size={size}>\n                This is a link\n              </Link>\n            ))}\n\n          <Flex align=\"center\" gap=\"1\" asChild>\n            <Link color=\"purple\" href=\"/\" size=\"3\">\n              This is a link\n              <ArrowTopRightIcon />\n            </Link>\n          </Flex>\n\n          <Flex align=\"center\" gap=\"1\" asChild>\n            <Link color=\"gray\" href=\"/\" size=\"3\">\n              This is a link\n              <ArrowTopRightIcon />\n            </Link>\n          </Flex>\n\n          <Text as=\"p\" size=\"6\">\n            Single Sign-On (SSO) is the most frequently asked for requirement by enterprise\n            organizations looking to adopt new SaaS applications. SSO enables authentication via an\n            organization&apos;s Identity Provider (IdP), such as Google Workspace or Okta, as\n            opposed to users or <Link href=\"/\">IT admins</Link> managing hundreds, if not thousands,\n            of usernames and passwords. Facilitate greater security, easier account management, and\n            accelerated application onboarding and adoption by{' '}\n            <Link href=\"/\">adding SSO to your app</Link>.\n          </Text>\n\n          <Text as=\"p\" size=\"6\">\n            Single Sign-On (SSO) is the most frequently asked for requirement by enterprise\n            organizations looking to adopt new SaaS applications. SSO enables authentication via an\n            organization&apos;s Identity Provider (IdP), such as Google Workspace or Okta, as\n            opposed to users or <Link href=\"/\">IT admins</Link> managing hundreds, if not thousands,\n            of usernames and passwords. Facilitate greater security, easier account management, and\n            accelerated application onboarding and adoption by{' '}\n            <Link href=\"/\">adding SSO to your app</Link>.\n          </Text>\n\n          <Separator size=\"3\" my=\"5\" />\n\n          <Text as=\"p\" color=\"gray\" size=\"6\">\n            Single Sign-On (SSO) is the most frequently asked for requirement by enterprise\n            organizations looking to adopt new SaaS applications. SSO enables authentication via an\n            organization&apos;s Identity Provider (IdP), such as Google Workspace or Okta, as\n            opposed to users or <Link href=\"/\">IT admins</Link> managing hundreds, if not thousands,\n            of usernames and passwords. Facilitate greater security, easier account management, and\n            accelerated application onboarding and adoption by{' '}\n            <Link href=\"/\">adding SSO to your app</Link>.\n          </Text>\n\n          <Text as=\"p\" color=\"purple\" size=\"6\">\n            Single Sign-On (SSO) is the most frequently asked for requirement by enterprise\n            organizations looking to adopt new SaaS applications. SSO enables authentication via an\n            organization&apos;s Identity Provider (IdP), such as Google Workspace or Okta, as\n            opposed to users or <Link href=\"/\">IT admins</Link> managing hundreds, if not thousands,\n            of usernames and passwords. Facilitate greater security, easier account management, and\n            accelerated application onboarding and adoption by{' '}\n            <Link href=\"/\">adding SSO to your app</Link>.\n          </Text>\n\n          <Text as=\"p\" color=\"blue\" size=\"6\">\n            Single Sign-On (SSO) is the most frequently asked for requirement by enterprise\n            organizations looking to adopt new SaaS applications. SSO enables authentication via an\n            organization&apos;s Identity Provider (IdP), such as Google Workspace or Okta, as\n            opposed to users or <Link href=\"/\">IT admins</Link> managing hundreds, if not thousands,\n            of usernames and passwords. Facilitate greater security, easier account management, and\n            accelerated application onboarding and adoption by{' '}\n            <Link href=\"/\">adding SSO to your app</Link>.\n          </Text>\n\n          <Text as=\"p\" color=\"green\" size=\"6\">\n            Single Sign-On (SSO) is the most frequently asked for requirement by enterprise\n            organizations looking to adopt new SaaS applications. SSO enables authentication via an\n            organization&apos;s Identity Provider (IdP), such as Google Workspace or Okta, as\n            opposed to users or <Link href=\"/\">IT admins</Link> managing hundreds, if not thousands,\n            of usernames and passwords. Facilitate greater security, easier account management, and\n            accelerated application onboarding and adoption by{' '}\n            <Link href=\"/\">adding SSO to your app</Link>.\n          </Text>\n\n          <Text as=\"p\" color=\"yellow\" size=\"6\">\n            Single Sign-On (SSO) is the most frequently asked for requirement by enterprise\n            organizations looking to adopt new SaaS applications. SSO enables authentication via an\n            organization&apos;s Identity Provider (IdP), such as Google Workspace or Okta, as\n            opposed to users or <Link href=\"/\">IT admins</Link> managing hundreds, if not thousands,\n            of usernames and passwords. Facilitate greater security, easier account management, and\n            accelerated application onboarding and adoption by{' '}\n            <Link href=\"/\">adding SSO to your app</Link>.\n          </Text>\n\n          <Text as=\"p\" color=\"red\" size=\"6\">\n            Single Sign-On (SSO) is the most frequently asked for requirement by enterprise\n            organizations looking to adopt new SaaS applications. SSO enables authentication via an\n            organization&apos;s Identity Provider (IdP), such as Google Workspace or Okta, as\n            opposed to users or <Link href=\"/\">IT admins</Link> managing hundreds, if not thousands,\n            of usernames and passwords. Facilitate greater security, easier account management, and\n            accelerated application onboarding and adoption by{' '}\n            <Link href=\"/\">adding SSO to your app</Link>.\n          </Text>\n        </Flex>\n      </DocsSectionBody>\n    </DocsSection>\n  );\n}\n"
  },
  {
    "path": "apps/playground/app/(themeable)/sink/mixed-nested-themes-test/page.tsx",
    "content": "import { Theme } from '@radix-ui/themes';\nimport { DocsSection, DocsSectionBody, DocsSectionHeading } from '../docs-section';\nimport { SampleNestedUI } from '../_components';\n\nexport default function MixedNestedThemesTest() {\n  return (\n    <DocsSection>\n      <DocsSectionHeading>Mixed nested themes test</DocsSectionHeading>\n      <DocsSectionBody>\n        <SampleNestedUI title=\"Global theme\">\n          <Theme asChild accentColor=\"mint\" appearance=\"dark\" radius=\"none\" scaling=\"90%\">\n            <SampleNestedUI title=\"Dark, Mint, no radius, 90%\">\n              <Theme asChild accentColor=\"amber\" appearance=\"light\" radius=\"full\" scaling=\"110%\">\n                <SampleNestedUI title=\"Light, Amber, full radius, 110%\">\n                  <Theme\n                    asChild\n                    accentColor=\"tomato\"\n                    appearance=\"dark\"\n                    radius=\"large\"\n                    scaling=\"100%\"\n                  >\n                    <SampleNestedUI title=\"Dark, Tomato, large radius, 100%\" />\n                  </Theme>\n                </SampleNestedUI>\n              </Theme>\n            </SampleNestedUI>\n          </Theme>\n        </SampleNestedUI>\n      </DocsSectionBody>\n    </DocsSection>\n  );\n}\n"
  },
  {
    "path": "apps/playground/app/(themeable)/sink/nested-appearances-test/page.tsx",
    "content": "import { Theme } from '@radix-ui/themes';\nimport { DocsSection, DocsSectionBody, DocsSectionHeading } from '../docs-section';\nimport { SampleNestedUI } from '../_components';\n\nexport default function NestedAppearancesTest() {\n  return (\n    <DocsSection>\n      <DocsSectionHeading>Nested appearances test</DocsSectionHeading>\n      <DocsSectionBody>\n        <SampleNestedUI title=\"Global appearance\">\n          <Theme asChild appearance=\"dark\">\n            <SampleNestedUI title=\"Always dark\">\n              <Theme asChild appearance=\"light\">\n                <SampleNestedUI title=\"Always light\">\n                  <Theme asChild appearance=\"dark\">\n                    <SampleNestedUI title=\"Always dark\" />\n                  </Theme>\n                </SampleNestedUI>\n              </Theme>\n            </SampleNestedUI>\n          </Theme>\n        </SampleNestedUI>\n      </DocsSectionBody>\n    </DocsSection>\n  );\n}\n"
  },
  {
    "path": "apps/playground/app/(themeable)/sink/nested-colors-test/page.tsx",
    "content": "import { Theme } from '@radix-ui/themes';\nimport { DocsSection, DocsSectionBody, DocsSectionHeading } from '../docs-section';\nimport { SampleNestedUI } from '../_components';\n\nexport default function NestedColorsTest() {\n  return (\n    <DocsSection>\n      <DocsSectionHeading>Nested colors test</DocsSectionHeading>\n      <DocsSectionBody>\n        <SampleNestedUI title=\"Global color\">\n          <Theme asChild accentColor=\"mint\">\n            <SampleNestedUI title=\"Always mint\">\n              <Theme asChild accentColor=\"amber\">\n                <SampleNestedUI title=\"Always amber\">\n                  <Theme asChild accentColor=\"tomato\">\n                    <SampleNestedUI title=\"Always tomato\" />\n                  </Theme>\n                </SampleNestedUI>\n              </Theme>\n            </SampleNestedUI>\n          </Theme>\n        </SampleNestedUI>\n      </DocsSectionBody>\n    </DocsSection>\n  );\n}\n"
  },
  {
    "path": "apps/playground/app/(themeable)/sink/page.module.css",
    "content": ".root {\n  margin-bottom: 400px;\n}\n\n.root :global(summary) {\n  cursor: pointer;\n}\n.root :global(summary:focus-visible) {\n  outline: 2px solid var(--accent-8);\n  outline-offset: 2px;\n}\n\n.root :global(.hide-cursor),\n.root :global(.hide-cursor *) {\n  cursor: none !important;\n}\n\n.table {\n  border-collapse: collapse;\n}\n.table + .table {\n  margin-top: var(--space-3);\n}\n\n.table thead tr,\n.table tbody tr:not(:last-child) {\n  border-bottom: 1px solid var(--gray-a5);\n}\n\n.table th {\n  font-weight: 400;\n}\n\n.table th,\n.table td {\n  padding: 0;\n  padding-top: var(--space-4);\n  padding-right: var(--space-4);\n  padding-bottom: var(--space-4);\n}\n\n.table .rowHeaderCell {\n  padding-left: 0;\n  padding-right: var(--space-5);\n  min-width: 100px;\n}\n"
  },
  {
    "path": "apps/playground/app/(themeable)/sink/page.tsx",
    "content": "'use client';\nimport { Flex, Separator } from '@radix-ui/themes';\nimport AlertDialogPage from './alert-dialog/page';\nimport AspectRatioPage from './aspect-ratio/page';\nimport AvatarPage from './avatar/page';\nimport BadgePage from './badge/page';\nimport BlockquotePage from './blockquote/page';\nimport ButtonPage from './button/page';\nimport CalloutPage from './callout/page';\nimport CardPage from './card/page';\nimport CheckboxPage from './checkbox/page';\nimport CheckboxCardsPage from './checkbox-cards/page';\nimport CheckboxGroupPage from './checkbox-group/page';\nimport CodePage from './code/page';\nimport ContainerPage from './container/page';\nimport ContextMenuPage from './context-menu/page';\nimport CursorsPage from './cursors/page';\nimport DataListPage from './data-list/page';\nimport DialogPage from './dialog/page';\nimport DropdownMenuPage from './dropdown-menu/page';\nimport GridPage from './grid/page';\nimport HeadingPage from './heading/page';\nimport HoverCardPage from './hover-card/page';\nimport IconButtonPage from './icon-button/page';\nimport KbdPage from './kbd/page';\nimport LinkPage from './link/page';\nimport MixedNestedThemesTestPage from './mixed-nested-themes-test/page';\nimport NestedAppearancesTestPage from './nested-appearances-test/page';\nimport NestedColorsTestPage from './nested-colors-test/page';\nimport PlaygroundPage from './playground/page';\nimport PopoverPage from './popover/page';\nimport ProgressPage from './progress/page';\nimport RadioPage from './radio/page';\nimport RadioCardsPage from './radio-cards/page';\nimport RadioGroupPage from './radio-group/page';\nimport ScrollAreaPage from './scroll-area/page';\nimport SegmentedControlPage from './segmented-control/page';\nimport SelectPage from './select/page';\nimport SeparatorPage from './separator/page';\nimport ShadowTokensPage from './shadow-tokens/page';\nimport SkeletonPage from './skeleton/page';\nimport SliderPage from './slider/page';\nimport SpinnerPage from './spinner/page';\nimport SwitchPage from './switch/page';\nimport TablePage from './table/page';\nimport TabNavPage from './tab-nav/page';\nimport TabsPage from './tabs/page';\nimport TextPage from './text/page';\nimport TextAreaPage from './text-area/page';\nimport TextFieldPage from './text-field/page';\nimport TooltipPage from './tooltip/page';\nimport TypographyPage from './typography/page';\n\nexport default function Sink() {\n  return (\n    <div id=\"root\">\n      <div\n        style={{\n          display: 'none',\n          position: 'fixed',\n          backgroundAttachment: 'fixed',\n          inset: 0,\n          backgroundSize: '100% max(100%, 600px)',\n          backgroundImage: [\n            'radial-gradient(at 0% 0%, transparent, transparent)',\n            'radial-gradient(at 41% 18%, var(--blue-1) 0, hsla(212, 92%, 67%, 0) 50%)',\n            'radial-gradient(at 76% 14%, var(--purple-3) 0, hsla(239, 87%, 67%, 0) 50%)',\n            'radial-gradient(at 7% 83%, var(--green-2) 0, hsla(165, 92%, 67%, 0) 50%)',\n            'radial-gradient(at 72% 2%, var(--purple-4) 0, hsla(248, 95%, 67%, 0) 50%)',\n            'radial-gradient(at 38% 76%, var(--red-3) 0, hsla(23, 86%, 55%, 0) 50%)',\n            'radial-gradient(at 88% 24%, var(--green-1) 0, hsla(82, 92%, 68%, 0) 50%)',\n            'radial-gradient(at 4% 89%, var(--green-4) 0, hsla(95, 86%, 55%, 0) 50%)',\n            'radial-gradient(at 54% 17%, var(--red-3) 0, hsla(2, 93%, 63%, 0) 50%)',\n            'radial-gradient(at 65% 86%, var(--red-2) 0, hsla(328, 85%, 64%, 0) 50%)',\n            'radial-gradient(at 68% 5%, var(--green-1) 0, hsla(173, 87%, 55%, 0) 50%)',\n            'radial-gradient(at 0% 64%, var(--red-1) 0, hsla(8, 90%, 67%, 0) 50%)',\n          ].join(', '),\n        }}\n      />\n      <Flex direction=\"column\" gap=\"6\">\n        <DialogPage />\n        <Separator size=\"4\" />\n        <HoverCardPage />\n        <Separator size=\"4\" />\n        <TooltipPage />\n        <Separator size=\"4\" />\n        <AlertDialogPage />\n        <Separator size=\"4\" />\n        <PopoverPage />\n        <Separator size=\"4\" />\n        <DropdownMenuPage />\n        <Separator size=\"4\" />\n        <ContextMenuPage />\n        <Separator size=\"4\" />\n        <SelectPage />\n        <Separator size=\"4\" />\n        <SwitchPage />\n        <Separator size=\"4\" />\n        <SliderPage />\n        <Separator size=\"4\" />\n        <ProgressPage />\n        <Separator size=\"4\" />\n        <SpinnerPage />\n        <Separator size=\"4\" />\n        <CheckboxPage />\n        <Separator size=\"4\" />\n        <CheckboxGroupPage />\n        <Separator size=\"4\" />\n        <CheckboxCardsPage />\n        <Separator size=\"4\" />\n        <RadioPage />\n        <Separator size=\"4\" />\n        <RadioGroupPage />\n        <Separator size=\"4\" />\n        <RadioCardsPage />\n        <Separator size=\"4\" />\n        <ButtonPage />\n        <Separator size=\"4\" />\n        <IconButtonPage />\n        <Separator size=\"4\" />\n        <TextFieldPage />\n        <Separator size=\"4\" />\n        <TextAreaPage />\n        <Separator size=\"4\" />\n        <BadgePage />\n        <Separator size=\"4\" />\n        <AvatarPage />\n        <Separator size=\"4\" />\n        <CardPage />\n        <Separator size=\"4\" />\n        <TablePage />\n        <Separator size=\"4\" />\n        <TypographyPage />\n        <Separator size=\"4\" />\n        <TextPage />\n        <Separator size=\"4\" />\n        <CodePage />\n        <Separator size=\"4\" />\n        <HeadingPage />\n        <Separator size=\"4\" />\n        <LinkPage />\n        <Separator size=\"4\" />\n        <BlockquotePage />\n        <Separator size=\"4\" />\n        <CalloutPage />\n        <Separator size=\"4\" />\n        <KbdPage />\n        <Separator size=\"4\" />\n        <TabNavPage />\n        <Separator size=\"4\" />\n        <TabsPage />\n        <Separator size=\"4\" />\n        <AspectRatioPage />\n        <Separator size=\"4\" />\n        <ScrollAreaPage />\n        <Separator size=\"4\" />\n        <PlaygroundPage />\n        <Separator size=\"4\" />\n        <NestedAppearancesTestPage />\n        <Separator size=\"4\" />\n        <NestedColorsTestPage />\n        <Separator size=\"4\" />\n        <MixedNestedThemesTestPage />\n        <Separator size=\"4\" />\n        <ShadowTokensPage />\n        <Separator size=\"4\" />\n        <GridPage />\n        <Separator size=\"4\" />\n        <SeparatorPage />\n        <Separator size=\"4\" />\n        <CursorsPage />\n        <Separator size=\"4\" />\n        <SkeletonPage />\n        <Separator size=\"4\" />\n        <DataListPage />\n        <Separator size=\"4\" />\n        <SegmentedControlPage />\n        <Separator size=\"4\" />\n        <ContainerPage />\n      </Flex>\n    </div>\n  );\n}\n"
  },
  {
    "path": "apps/playground/app/(themeable)/sink/playground/page.tsx",
    "content": "import { Card, Flex, Text } from '@radix-ui/themes';\nimport { textFieldRootPropDefs } from '@radix-ui/themes/props';\nimport { DocsSection, DocsSectionBody, DocsSectionHeading } from '../docs-section';\nimport { PlaygroundForm } from '../_components';\n\nexport default function PlaygroundPage() {\n  return (\n    <DocsSection>\n      <DocsSectionHeading>Playground</DocsSectionHeading>\n      <DocsSectionBody>\n        <Text as=\"p\" mb=\"5\">\n          In this section, I am just throwing together some of the components to get a sense of how\n          harmonious they are.\n        </Text>\n        <Flex gap=\"9\">\n          {textFieldRootPropDefs.size.values.map((size) => (\n            <PlaygroundForm key={size} size={size} style={{ width: (Number(size) + 1) * 100 }} />\n          ))}\n        </Flex>\n\n        <Card size=\"4\" style={{ width: 400 }} mt=\"3\">\n          <PlaygroundForm size=\"2\" />\n        </Card>\n      </DocsSectionBody>\n    </DocsSection>\n  );\n}\n"
  },
  {
    "path": "apps/playground/app/(themeable)/sink/pointer-cursors-checkbox.tsx",
    "content": "'use client';\nimport { Box, Checkbox, Flex, Text } from '@radix-ui/themes';\nimport React from 'react';\n\nexport function PointerCursorsCheckbox() {\n  const [checked, setChecked] = React.useState(false);\n\n  return (\n    <Box>\n      <Text as=\"label\" size=\"2\">\n        <Flex gap=\"2\">\n          <Checkbox onCheckedChange={(value) => setChecked(!!value)} />\n          Use pointer cursors\n        </Flex>\n      </Text>\n      {checked && (\n        <style>\n          {`\n            .radix-themes {\n              --cursor-button: pointer;\n              --cursor-checkbox: pointer;\n              --cursor-disabled: default;\n              --cursor-link: pointer;\n              --cursor-menu-item: pointer;\n              --cursor-radio: pointer;\n              --cursor-slider-thumb: grab;\n              --cursor-slider-thumb-active: grabbing;\n              --cursor-switch: pointer;\n            }\n          `}\n        </style>\n      )}\n    </Box>\n  );\n}\n"
  },
  {
    "path": "apps/playground/app/(themeable)/sink/popover/page.tsx",
    "content": "import { Button, Popover, Text } from '@radix-ui/themes';\nimport { DocsSection, DocsSectionBody, DocsSectionHeading } from '../docs-section';\nimport { Share2Icon } from '@radix-ui/react-icons';\n\nexport default function PopoverPage() {\n  return (\n    <DocsSection>\n      <DocsSectionHeading>Popover</DocsSectionHeading>\n      <DocsSectionBody>\n        <Popover.Root>\n          <Popover.Trigger>\n            <Button variant=\"solid\">Popover</Button>\n          </Popover.Trigger>\n          <Popover.Content width=\"200px\">\n            <Text as=\"p\" size=\"2\" mb=\"2\">\n              Jan Tschichold was a German calligrapher, typographer and book designer. He played a\n              significant role in the development of graphic design in the 20th century.\n            </Text>\n            <Button variant=\"solid\" size=\"1\">\n              Share <Share2Icon />\n            </Button>\n          </Popover.Content>\n        </Popover.Root>\n      </DocsSectionBody>\n    </DocsSection>\n  );\n}\n"
  },
  {
    "path": "apps/playground/app/(themeable)/sink/progress/page.tsx",
    "content": "import { Fragment } from 'react';\nimport { Progress, Grid, Text, Code, Box, Flex, Table } from '@radix-ui/themes';\nimport { progressPropDefs } from '@radix-ui/themes/props';\nimport { DocsSection, DocsSectionBody, DocsSectionHeading } from '../docs-section';\nimport { accentColorsGrouped } from '../_utils';\n\nexport default function ProgressPage() {\n  return (\n    <DocsSection>\n      <DocsSectionHeading>Progress</DocsSectionHeading>\n      <DocsSectionBody>\n        <Flex direction=\"column\" gap=\"5\">\n          <div>\n            <Table.Root>\n              <Table.Header>\n                <Table.Row>\n                  <Table.ColumnHeaderCell />\n                  <Table.ColumnHeaderCell>color</Table.ColumnHeaderCell>\n                  <Table.ColumnHeaderCell>+ high-contrast</Table.ColumnHeaderCell>\n                  <Table.ColumnHeaderCell>gray</Table.ColumnHeaderCell>\n                  <Table.ColumnHeaderCell>+ high-contrast</Table.ColumnHeaderCell>\n                </Table.Row>\n              </Table.Header>\n              <Table.Body>\n                {progressPropDefs.variant.values.map((variant, index) => (\n                  <Table.Row key={variant}>\n                    <Table.RowHeaderCell>{variant}</Table.RowHeaderCell>\n                    <Table.Cell style={{ minWidth: 220 }}>\n                      <Grid gap=\"3\">\n                        <Progress variant={variant} />\n                        <Progress variant={variant} value={33 + index * 10} />\n                      </Grid>\n                    </Table.Cell>\n                    <Table.Cell style={{ minWidth: 220 }}>\n                      <Grid gap=\"3\">\n                        <Progress variant={variant} highContrast />\n                        <Progress variant={variant} highContrast value={33 + index * 10} />\n                      </Grid>\n                    </Table.Cell>\n                    <Table.Cell style={{ minWidth: 220 }}>\n                      <Grid gap=\"3\">\n                        <Progress variant={variant} color=\"gray\" />\n                        <Progress variant={variant} color=\"gray\" value={33 + index * 10} />\n                      </Grid>\n                    </Table.Cell>\n                    <Table.Cell style={{ minWidth: 220 }}>\n                      <Grid gap=\"3\">\n                        <Progress variant={variant} color=\"gray\" highContrast />\n                        <Progress\n                          variant={variant}\n                          color=\"gray\"\n                          highContrast\n                          value={33 + index * 10}\n                        />\n                      </Grid>\n                    </Table.Cell>\n                  </Table.Row>\n                ))}\n              </Table.Body>\n            </Table.Root>\n          </div>\n\n          <div>\n            <Table.Root>\n              <Table.Body>\n                {progressPropDefs.size.values.map((size) => (\n                  <Table.Row key={size}>\n                    <Table.RowHeaderCell>size {size}</Table.RowHeaderCell>\n                    <Table.Cell style={{ width: 220 }}>\n                      <Progress size={size} />\n                    </Table.Cell>\n                  </Table.Row>\n                ))}\n              </Table.Body>\n            </Table.Root>\n          </div>\n        </Flex>\n\n        <Text as=\"p\" my=\"5\">\n          <Code>radius</Code> can be set per instance:\n        </Text>\n\n        <details>\n          <summary>\n            <Text size=\"2\" color=\"gray\">\n              See specific radius examples\n            </Text>\n          </summary>\n          <Box mt=\"3\">\n            <Table.Root>\n              <Table.Header>\n                <Table.Row>\n                  <Table.ColumnHeaderCell />\n                  {progressPropDefs.size.values.map((size) => (\n                    <Table.ColumnHeaderCell key={size}>size {size}</Table.ColumnHeaderCell>\n                  ))}\n                </Table.Row>\n              </Table.Header>\n              <Table.Body>\n                {progressPropDefs.radius.values.map((radius) => (\n                  <Table.Row key={radius}>\n                    <Table.RowHeaderCell>{radius}</Table.RowHeaderCell>\n                    {progressPropDefs.size.values.map((size) => (\n                      <Table.Cell key={size} style={{ minWidth: 150 }}>\n                        <Progress size={size} radius={radius} value={66} />\n                      </Table.Cell>\n                    ))}\n                  </Table.Row>\n                ))}\n              </Table.Body>\n            </Table.Root>\n          </Box>\n        </details>\n\n        <Text as=\"p\" my=\"5\">\n          <Code>color</Code> can be set per instance:\n        </Text>\n\n        <details>\n          <summary>\n            <Text size=\"2\" color=\"gray\">\n              See colors\n            </Text>\n          </summary>\n          {accentColorsGrouped.map(({ label, values }) => (\n            <Fragment key={label}>\n              <Text as=\"p\" weight=\"bold\" mt=\"6\" mb=\"4\">\n                {label}\n              </Text>\n              <Table.Root>\n                <Table.Header>\n                  <Table.Row>\n                    <Table.ColumnHeaderCell />\n                    {progressPropDefs.variant.values.map((variant) => (\n                      <Table.RowHeaderCell key={variant}>{variant}</Table.RowHeaderCell>\n                    ))}\n                  </Table.Row>\n                </Table.Header>\n                <Table.Body>\n                  {values.map((color) => (\n                    <Table.Row key={color}>\n                      <Table.RowHeaderCell>{color}</Table.RowHeaderCell>\n                      {progressPropDefs.variant.values.map((variant) => (\n                        <Table.Cell key={variant} style={{ minWidth: 150 }}>\n                          <Progress variant={variant} color={color} mt=\"3\" mb=\"3\" />\n                          <Progress variant={variant} color={color} value={66} mt=\"5\" />\n                          <Progress\n                            variant={variant}\n                            color={color}\n                            highContrast\n                            value={66}\n                            mt=\"5\"\n                            mb=\"3\"\n                          />\n                        </Table.Cell>\n                      ))}\n                    </Table.Row>\n                  ))}\n                </Table.Body>\n              </Table.Root>\n            </Fragment>\n          ))}\n        </details>\n      </DocsSectionBody>\n    </DocsSection>\n  );\n}\n"
  },
  {
    "path": "apps/playground/app/(themeable)/sink/radio/page.tsx",
    "content": "import { Fragment } from 'react';\nimport { Radio, Grid, Flex, Text, Code, Box, Separator, Table } from '@radix-ui/themes';\nimport { radioPropDefs } from '@radix-ui/themes/props';\nimport { DocsSection, DocsSectionBody, DocsSectionHeading } from '../docs-section';\nimport { accentColorsGrouped } from '../_utils';\n\nexport default function RadioPage() {\n  return (\n    <DocsSection>\n      <DocsSectionHeading>Radio</DocsSectionHeading>\n      <DocsSectionBody>\n        <Grid columns=\"2\" gap=\"9\">\n          <div>\n            <Table.Root>\n              <Table.Header>\n                <Table.Row>\n                  <Table.ColumnHeaderCell />\n                  <Table.ColumnHeaderCell>not checked</Table.ColumnHeaderCell>\n                  <Table.ColumnHeaderCell>checked</Table.ColumnHeaderCell>\n                  <Table.ColumnHeaderCell>disabled</Table.ColumnHeaderCell>\n                  <Table.ColumnHeaderCell>disabled checked</Table.ColumnHeaderCell>\n                </Table.Row>\n              </Table.Header>\n              <Table.Body>\n                {radioPropDefs.variant.values.map((variant) => (\n                  <Fragment key={variant}>\n                    {[variant, '+ high-contrast'].map((label) => (\n                      <Table.Row key={label}>\n                        <Table.RowHeaderCell>{label}</Table.RowHeaderCell>\n                        <Table.Cell>\n                          <Radio\n                            variant={variant}\n                            highContrast={label === '+ high-contrast'}\n                            value=\"value\"\n                          />\n                        </Table.Cell>\n                        <Table.Cell>\n                          <Radio\n                            checked\n                            variant={variant}\n                            highContrast={label === '+ high-contrast'}\n                            value=\"value\"\n                          />\n                        </Table.Cell>\n                        <Table.Cell>\n                          <Radio\n                            variant={variant}\n                            highContrast={label === '+ high-contrast'}\n                            value=\"value\"\n                            disabled\n                          />\n                        </Table.Cell>\n                        <Table.Cell>\n                          <Radio\n                            checked\n                            variant={variant}\n                            highContrast={label === '+ high-contrast'}\n                            disabled\n                            value=\"value\"\n                          />\n                        </Table.Cell>\n                      </Table.Row>\n                    ))}\n                  </Fragment>\n                ))}\n              </Table.Body>\n            </Table.Root>\n\n            <Table.Root>\n              <Table.Body>\n                {radioPropDefs.size.values.map((size) => (\n                  <Table.Row key={size}>\n                    <Table.RowHeaderCell>size {size}</Table.RowHeaderCell>\n                    <Table.Cell>\n                      <Flex gap=\"2\">\n                        <Radio name={`radio-size-${size}`} size={size} value=\"value\" />\n                        <Radio\n                          name={`radio-size-${size}`}\n                          size={size}\n                          value=\"value\"\n                          defaultChecked\n                        />\n                      </Flex>\n                    </Table.Cell>\n                  </Table.Row>\n                ))}\n              </Table.Body>\n            </Table.Root>\n          </div>\n\n          <div>\n            <Box py=\"4\">\n              <Text as=\"p\" size=\"2\">\n                Alignment\n              </Text>\n            </Box>\n\n            <Flex direction=\"column\" gap=\"5\" style={{ maxWidth: 320 }}>\n              <Separator size=\"4\" />\n\n              <Flex direction=\"column\" gap=\"1\">\n                <Text as=\"label\" size=\"1\">\n                  <Flex gap=\"2\">\n                    <Radio name=\"radio-alignment-1\" size=\"1\" value=\"1\" defaultChecked />\n                    <Text>Agree to Terms and Conditions</Text>\n                  </Flex>\n                </Text>\n                <Text as=\"label\" size=\"1\">\n                  <Flex gap=\"2\">\n                    <Radio name=\"radio-alignment-1\" size=\"1\" value=\"2\" />\n                    <Text>Disagree with Terms and Conditions</Text>\n                  </Flex>\n                </Text>\n              </Flex>\n\n              <Separator size=\"4\" />\n\n              <Flex direction=\"column\" gap=\"1\">\n                <Text as=\"label\" size=\"2\">\n                  <Flex gap=\"2\">\n                    <Radio name=\"radio-alignment-2\" size=\"1\" value=\"1\" defaultChecked />\n                    <Text>Agree to Terms and Conditions</Text>\n                  </Flex>\n                </Text>\n                <Text as=\"label\" size=\"2\">\n                  <Flex gap=\"2\">\n                    <Radio name=\"radio-alignment-2\" size=\"1\" value=\"2\" />\n                    <Text>Disagree with Terms and Conditions</Text>\n                  </Flex>\n                </Text>\n              </Flex>\n\n              <Separator size=\"4\" />\n\n              <Flex direction=\"column\" gap=\"1\">\n                <Text as=\"label\" size=\"2\">\n                  <Flex gap=\"2\">\n                    <Radio name=\"radio-alignment-3\" size=\"2\" value=\"1\" defaultChecked />\n                    <Text>Agree to Terms and Conditions</Text>\n                  </Flex>\n                </Text>\n                <Text as=\"label\" size=\"2\">\n                  <Flex gap=\"2\">\n                    <Radio name=\"radio-alignment-3\" size=\"2\" value=\"2\" />\n                    <Text>Disagree with Terms and Conditions</Text>\n                  </Flex>\n                </Text>\n              </Flex>\n\n              <Separator size=\"4\" />\n\n              <Flex direction=\"column\" gap=\"1\">\n                <Text as=\"label\" size=\"3\">\n                  <Flex gap=\"2\">\n                    <Radio name=\"radio-alignment-4\" size=\"2\" value=\"1\" defaultChecked />\n                    <Text>Agree to Terms and Conditions</Text>\n                  </Flex>\n                </Text>\n                <Text as=\"label\" size=\"3\">\n                  <Flex gap=\"2\">\n                    <Radio name=\"radio-alignment-4\" size=\"2\" value=\"2\" />\n                    <Text>Disagree with Terms and Conditions</Text>\n                  </Flex>\n                </Text>\n              </Flex>\n\n              <Separator size=\"4\" />\n\n              <Flex direction=\"column\" gap=\"1\">\n                <Text as=\"label\" size=\"3\">\n                  <Flex gap=\"2\">\n                    <Radio name=\"radio-alignment-5\" size=\"3\" value=\"1\" defaultChecked />\n                    <Text>Agree to Terms and Conditions</Text>\n                  </Flex>\n                </Text>\n                <Text as=\"label\" size=\"3\">\n                  <Flex gap=\"2\">\n                    <Radio name=\"radio-alignment-5\" size=\"3\" value=\"2\" />\n                    <Text>Disagree with Terms and Conditions</Text>\n                  </Flex>\n                </Text>\n              </Flex>\n\n              <Separator size=\"4\" />\n\n              <Flex direction=\"column\" gap=\"1\">\n                <Text as=\"label\" size=\"4\">\n                  <Flex gap=\"2\">\n                    <Radio name=\"radio-alignment-6\" size=\"3\" value=\"1\" defaultChecked />\n                    <Text>Agree to Terms and Conditions</Text>\n                  </Flex>\n                </Text>\n                <Text as=\"label\" size=\"4\">\n                  <Flex gap=\"2\">\n                    <Radio name=\"radio-alignment-6\" size=\"3\" value=\"2\" />\n                    <Text>Disagree with Terms and Conditions</Text>\n                  </Flex>\n                </Text>\n              </Flex>\n\n              <Separator size=\"4\" />\n            </Flex>\n          </div>\n        </Grid>\n\n        <Text as=\"p\" my=\"5\">\n          <Code>color</Code> can be set per instance:\n        </Text>\n\n        <details>\n          <summary>\n            <Text size=\"2\" color=\"gray\">\n              See colors & variants combinations\n            </Text>\n          </summary>\n          {accentColorsGrouped.map(({ label, values }) => (\n            <Fragment key={label}>\n              <Text as=\"p\" weight=\"bold\" mt=\"6\" mb=\"4\">\n                {label}\n              </Text>\n              <Table.Root>\n                <Table.Header>\n                  <Table.Row>\n                    <Table.ColumnHeaderCell />\n                    {radioPropDefs.variant.values.map((variant) => (\n                      <Table.ColumnHeaderCell key={variant}>{variant}</Table.ColumnHeaderCell>\n                    ))}\n                  </Table.Row>\n                </Table.Header>\n                <Table.Body>\n                  {values.map((color) => (\n                    <Table.Row key={color}>\n                      <Table.RowHeaderCell>{color}</Table.RowHeaderCell>\n                      {radioPropDefs.variant.values.map((variant) => (\n                        <Table.Cell key={variant}>\n                          <Flex gap=\"2\">\n                            <Radio\n                              color={color}\n                              variant={variant}\n                              name={`radio-${variant}-${color}`}\n                              value=\"1\"\n                            />\n                            <Radio\n                              color={color}\n                              variant={variant}\n                              name={`radio-${variant}-${color}`}\n                              value=\"2\"\n                              defaultChecked\n                            />\n                            <Radio\n                              color={color}\n                              variant={variant}\n                              name={`radio-${variant}-${color}-high-contrast`}\n                              highContrast\n                              value=\"1\"\n                            />\n                            <Radio\n                              color={color}\n                              variant={variant}\n                              name={`radio-${variant}-${color}-high-contrast`}\n                              highContrast\n                              value=\"2\"\n                              defaultChecked\n                            />\n                          </Flex>\n                        </Table.Cell>\n                      ))}\n                    </Table.Row>\n                  ))}\n                </Table.Body>\n              </Table.Root>\n            </Fragment>\n          ))}\n        </details>\n\n        <Separator size=\"3\" my=\"5\" />\n      </DocsSectionBody>\n    </DocsSection>\n  );\n}\n"
  },
  {
    "path": "apps/playground/app/(themeable)/sink/radio-cards/page.tsx",
    "content": "import { Fragment } from 'react';\nimport { RadioCards, Flex, Text, Code, Box, Table } from '@radix-ui/themes';\nimport { CodeIcon } from '@radix-ui/react-icons';\nimport { radioCardsRootPropDefs } from '@radix-ui/themes/props';\nimport { DocsSection, DocsSectionBody, DocsSectionHeading } from '../docs-section';\nimport { accentColorsGrouped } from '../_utils';\n\nexport default function RadioCardsPage() {\n  return (\n    <DocsSection>\n      <DocsSectionHeading>RadioCards</DocsSectionHeading>\n      <DocsSectionBody>\n        <Table.Root>\n          <Table.Body>\n            {radioCardsRootPropDefs.variant.values.map((variant, index) => (\n              <Table.Row key={variant}>\n                <Table.RowHeaderCell>{variant}</Table.RowHeaderCell>\n                <Table.Cell>\n                  <RadioCards.Root columns=\"3\" defaultValue={String(index)} variant={variant}>\n                    <RadioCards.Item value=\"0\">\n                      <CodeIcon />\n                      <Text truncate>Node.js</Text>\n                    </RadioCards.Item>\n                    <RadioCards.Item value=\"1\" disabled>\n                      Ruby\n                    </RadioCards.Item>\n                    <RadioCards.Item value=\"2\">Go</RadioCards.Item>\n                  </RadioCards.Root>\n                </Table.Cell>\n              </Table.Row>\n            ))}\n          </Table.Body>\n        </Table.Root>\n\n        <Box mb=\"7\" />\n\n        <Table.Root>\n          <Table.Body>\n            {radioCardsRootPropDefs.size.values.map((size, index) => (\n              <Table.Row key={size}>\n                <Table.RowHeaderCell>size {size}</Table.RowHeaderCell>\n                <Table.Cell>\n                  <RadioCards.Root\n                    size={size}\n                    columns=\"3\"\n                    defaultValue={String(index)}\n                    style={{ width: 400 + Number(size) * 100 }}\n                  >\n                    <RadioCards.Item value=\"0\">Node.js</RadioCards.Item>\n                    <RadioCards.Item value=\"1\" disabled>\n                      Ruby\n                    </RadioCards.Item>\n                    <RadioCards.Item value=\"2\">Go</RadioCards.Item>\n                  </RadioCards.Root>\n                </Table.Cell>\n              </Table.Row>\n            ))}\n          </Table.Body>\n        </Table.Root>\n\n        <Text as=\"p\" my=\"5\">\n          <Code>color</Code> can be set per instance:\n        </Text>\n\n        <details>\n          <summary>\n            <Text size=\"2\" color=\"gray\">\n              See colors & variants combinations\n            </Text>\n          </summary>\n          {accentColorsGrouped.map(({ label, values }) => (\n            <Fragment key={label}>\n              <Text as=\"p\" weight=\"bold\" mt=\"6\" mb=\"4\">\n                {label}\n              </Text>\n              <Table.Root>\n                <Table.Header>\n                  <Table.Row>\n                    <Table.ColumnHeaderCell />\n                    {radioCardsRootPropDefs.variant.values.map((variant) => (\n                      <Table.ColumnHeaderCell key={variant}>{variant}</Table.ColumnHeaderCell>\n                    ))}\n                  </Table.Row>\n                </Table.Header>\n                <Table.Body>\n                  {values.map((color) => (\n                    <Table.Row key={color}>\n                      <Table.RowHeaderCell>{color}</Table.RowHeaderCell>\n                      {radioCardsRootPropDefs.variant.values.map((variant) => (\n                        <Table.Cell key={variant}>\n                          <Flex direction=\"column\" gap=\"2\">\n                            <RadioCards.Root\n                              size=\"1\"\n                              gap=\"2\"\n                              columns=\"3\"\n                              defaultValue=\"0\"\n                              variant={variant}\n                              color={color}\n                              style={{ width: 400 }}\n                            >\n                              <RadioCards.Item value=\"0\">Node.js</RadioCards.Item>\n                              <RadioCards.Item value=\"1\" disabled>\n                                Ruby\n                              </RadioCards.Item>\n                              <RadioCards.Item value=\"2\">Go</RadioCards.Item>\n                            </RadioCards.Root>\n\n                            <RadioCards.Root\n                              size=\"1\"\n                              gap=\"2\"\n                              columns=\"3\"\n                              defaultValue=\"1\"\n                              variant={variant}\n                              color={color}\n                              highContrast\n                              style={{ width: 400 }}\n                            >\n                              <RadioCards.Item value=\"0\">Node.js</RadioCards.Item>\n                              <RadioCards.Item value=\"1\" disabled>\n                                Ruby\n                              </RadioCards.Item>\n                              <RadioCards.Item value=\"2\">Go</RadioCards.Item>\n                            </RadioCards.Root>\n                          </Flex>\n                        </Table.Cell>\n                      ))}\n                    </Table.Row>\n                  ))}\n                </Table.Body>\n              </Table.Root>\n            </Fragment>\n          ))}\n        </details>\n      </DocsSectionBody>\n    </DocsSection>\n  );\n}\n"
  },
  {
    "path": "apps/playground/app/(themeable)/sink/radio-group/page.tsx",
    "content": "import { Fragment } from 'react';\nimport { RadioGroup, Grid, Flex, Text, Code, Box, Separator, Table } from '@radix-ui/themes';\nimport { radioGroupRootPropDefs } from '@radix-ui/themes/props';\nimport { DocsSection, DocsSectionBody, DocsSectionHeading } from '../docs-section';\nimport { accentColorsGrouped } from '../_utils';\n\nexport default function RadioGroupPage() {\n  return (\n    <DocsSection>\n      <DocsSectionHeading>RadioGroup</DocsSectionHeading>\n      <DocsSectionBody>\n        <Grid columns=\"2\" gap=\"9\">\n          <div>\n            <Table.Root>\n              <Table.Header>\n                <Table.Row>\n                  <Table.ColumnHeaderCell />\n                  <Table.ColumnHeaderCell>not checked</Table.ColumnHeaderCell>\n                  <Table.ColumnHeaderCell>checked</Table.ColumnHeaderCell>\n                  <Table.ColumnHeaderCell>disabled</Table.ColumnHeaderCell>\n                  <Table.ColumnHeaderCell>disabled checked</Table.ColumnHeaderCell>\n                </Table.Row>\n              </Table.Header>\n              <Table.Body>\n                {radioGroupRootPropDefs.variant.values.map((variant) => (\n                  <Fragment key={variant}>\n                    {[variant, '+ high-contrast'].map((label) => (\n                      <Table.Row key={label}>\n                        <Table.RowHeaderCell>{label}</Table.RowHeaderCell>\n                        <Table.Cell>\n                          <RadioGroup.Root\n                            variant={variant}\n                            highContrast={label === '+ high-contrast'}\n                          >\n                            <RadioGroup.Item value=\"value\" />\n                          </RadioGroup.Root>\n                        </Table.Cell>\n                        <Table.Cell>\n                          <RadioGroup.Root\n                            variant={variant}\n                            defaultValue=\"value\"\n                            highContrast={label === '+ high-contrast'}\n                          >\n                            <RadioGroup.Item value=\"value\" />\n                          </RadioGroup.Root>\n                        </Table.Cell>\n                        <Table.Cell>\n                          <RadioGroup.Root\n                            variant={variant}\n                            highContrast={label === '+ high-contrast'}\n                          >\n                            <RadioGroup.Item value=\"value\" disabled />\n                          </RadioGroup.Root>\n                        </Table.Cell>\n                        <Table.Cell>\n                          <RadioGroup.Root\n                            variant={variant}\n                            highContrast={label === '+ high-contrast'}\n                            disabled\n                            defaultValue=\"value\"\n                          >\n                            <RadioGroup.Item value=\"value\" />\n                          </RadioGroup.Root>\n                        </Table.Cell>\n                      </Table.Row>\n                    ))}\n                  </Fragment>\n                ))}\n              </Table.Body>\n            </Table.Root>\n\n            <Table.Root>\n              <Table.Body>\n                {radioGroupRootPropDefs.size.values.map((size) => (\n                  <Table.Row key={size}>\n                    <Table.RowHeaderCell>size {size}</Table.RowHeaderCell>\n                    <Table.Cell style={{ width: '100%' }}>\n                      <RadioGroup.Root size={size} defaultValue=\"red\">\n                        <RadioGroup.Item value=\"red\">Red</RadioGroup.Item>\n                        <RadioGroup.Item value=\"green\">Green</RadioGroup.Item>\n                        <RadioGroup.Item value=\"blue\">Blue</RadioGroup.Item>\n                        <RadioGroup.Item value=\"violet\">Violet</RadioGroup.Item>\n                      </RadioGroup.Root>\n                    </Table.Cell>\n                  </Table.Row>\n                ))}\n              </Table.Body>\n            </Table.Root>\n          </div>\n\n          <div>\n            <Box py=\"4\">\n              <Text as=\"p\" size=\"2\">\n                Alignment\n              </Text>\n            </Box>\n\n            <Flex direction=\"column\" gap=\"5\" style={{ maxWidth: 320 }}>\n              <Separator size=\"4\" />\n\n              <RadioGroup.Root defaultValue=\"1\" size=\"1\">\n                <Flex direction=\"column\" gap=\"1\">\n                  <Text as=\"label\" size=\"1\">\n                    <Flex gap=\"2\">\n                      <RadioGroup.Item value=\"1\" />\n                      <Text>Agree to Terms and Conditions</Text>\n                    </Flex>\n                  </Text>\n                  <Text as=\"label\" size=\"1\">\n                    <Flex gap=\"2\">\n                      <RadioGroup.Item value=\"2\" />\n                      <Text>Disagree with Terms and Conditions</Text>\n                    </Flex>\n                  </Text>\n                </Flex>\n              </RadioGroup.Root>\n\n              <Separator size=\"4\" />\n\n              <RadioGroup.Root defaultValue=\"1\" size=\"1\">\n                <Flex direction=\"column\" gap=\"1\">\n                  <Text as=\"label\" size=\"2\">\n                    <Flex gap=\"2\">\n                      <RadioGroup.Item value=\"1\" />\n                      <Text>Agree to Terms and Conditions</Text>\n                    </Flex>\n                  </Text>\n                  <Text as=\"label\" size=\"2\">\n                    <Flex gap=\"2\">\n                      <RadioGroup.Item value=\"2\" />\n                      <Text>Disagree with Terms and Conditions</Text>\n                    </Flex>\n                  </Text>\n                </Flex>\n              </RadioGroup.Root>\n\n              <Separator size=\"4\" />\n\n              <RadioGroup.Root defaultValue=\"1\" size=\"2\">\n                <Flex direction=\"column\" gap=\"1\">\n                  <Text as=\"label\" size=\"2\">\n                    <Flex gap=\"2\">\n                      <RadioGroup.Item value=\"1\" />\n                      <Text>Agree to Terms and Conditions</Text>\n                    </Flex>\n                  </Text>\n                  <Text as=\"label\" size=\"2\">\n                    <Flex gap=\"2\">\n                      <RadioGroup.Item value=\"2\" />\n                      <Text>Disagree with Terms and Conditions</Text>\n                    </Flex>\n                  </Text>\n                </Flex>\n              </RadioGroup.Root>\n\n              <Separator size=\"4\" />\n\n              <RadioGroup.Root defaultValue=\"1\" size=\"2\">\n                <Flex direction=\"column\" gap=\"1\">\n                  <Text as=\"label\" size=\"3\">\n                    <Flex gap=\"2\">\n                      <RadioGroup.Item value=\"1\" />\n                      <Text>Agree to Terms and Conditions</Text>\n                    </Flex>\n                  </Text>\n                  <Text as=\"label\" size=\"3\">\n                    <Flex gap=\"2\">\n                      <RadioGroup.Item value=\"2\" />\n                      <Text>Disagree with Terms and Conditions</Text>\n                    </Flex>\n                  </Text>\n                </Flex>\n              </RadioGroup.Root>\n\n              <Separator size=\"4\" />\n\n              <RadioGroup.Root defaultValue=\"1\" size=\"3\">\n                <Flex direction=\"column\" gap=\"1\">\n                  <Text as=\"label\" size=\"3\">\n                    <Flex gap=\"2\">\n                      <RadioGroup.Item value=\"1\" />\n                      <Text>Agree to Terms and Conditions</Text>\n                    </Flex>\n                  </Text>\n                  <Text as=\"label\" size=\"3\">\n                    <Flex gap=\"2\">\n                      <RadioGroup.Item value=\"2\" />\n                      <Text>Disagree with Terms and Conditions</Text>\n                    </Flex>\n                  </Text>\n                </Flex>\n              </RadioGroup.Root>\n\n              <Separator size=\"4\" />\n\n              <RadioGroup.Root defaultValue=\"1\" size=\"3\">\n                <Flex direction=\"column\" gap=\"1\">\n                  <Text as=\"label\" size=\"4\">\n                    <Flex gap=\"2\">\n                      <RadioGroup.Item value=\"1\" />\n                      <Text>Agree to Terms and Conditions</Text>\n                    </Flex>\n                  </Text>\n                  <Text as=\"label\" size=\"4\">\n                    <Flex gap=\"2\">\n                      <RadioGroup.Item value=\"2\" />\n                      <Text>Disagree with Terms and Conditions</Text>\n                    </Flex>\n                  </Text>\n                </Flex>\n              </RadioGroup.Root>\n\n              <Separator size=\"4\" />\n            </Flex>\n          </div>\n        </Grid>\n\n        <Text as=\"p\" my=\"5\">\n          <Code>color</Code> can be set per instance:\n        </Text>\n\n        <details>\n          <summary>\n            <Text size=\"2\" color=\"gray\">\n              See colors & variants combinations\n            </Text>\n          </summary>\n          {accentColorsGrouped.map(({ label, values }) => (\n            <Fragment key={label}>\n              <Text as=\"p\" weight=\"bold\" mt=\"6\" mb=\"4\">\n                {label}\n              </Text>\n              <Table.Root>\n                <Table.Header>\n                  <Table.Row>\n                    <Table.ColumnHeaderCell />\n                    {radioGroupRootPropDefs.variant.values.map((variant) => (\n                      <Table.ColumnHeaderCell key={variant}>{variant}</Table.ColumnHeaderCell>\n                    ))}\n                  </Table.Row>\n                </Table.Header>\n                <Table.Body>\n                  {values.map((color) => (\n                    <Table.Row key={color}>\n                      <Table.RowHeaderCell>{color}</Table.RowHeaderCell>\n                      {radioGroupRootPropDefs.variant.values.map((variant) => (\n                        <Table.Cell key={variant}>\n                          <Flex gap=\"2\">\n                            <RadioGroup.Root variant={variant} color={color} defaultValue=\"value\">\n                              <RadioGroup.Item value=\"value\" />\n                            </RadioGroup.Root>\n                            <RadioGroup.Root\n                              variant={variant}\n                              color={color}\n                              defaultValue=\"value\"\n                              highContrast\n                            >\n                              <RadioGroup.Item value=\"value\" />\n                            </RadioGroup.Root>\n                          </Flex>\n                        </Table.Cell>\n                      ))}\n                    </Table.Row>\n                  ))}\n                </Table.Body>\n              </Table.Root>\n            </Fragment>\n          ))}\n        </details>\n\n        <Separator size=\"3\" my=\"5\" />\n      </DocsSectionBody>\n    </DocsSection>\n  );\n}\n"
  },
  {
    "path": "apps/playground/app/(themeable)/sink/radix-logo.tsx",
    "content": "import React from 'react';\n\nexport const RadixLogo = (props: React.ComponentProps<'svg'>) => (\n  <svg\n    xmlns=\"http://www.w3.org/2000/svg\"\n    width=\"25\"\n    height=\"25\"\n    viewBox=\"0 0 25 25\"\n    fill=\"none\"\n    {...props}\n  >\n    <path d=\"M12 25C7.58173 25 4 21.4183 4 17C4 12.5817 7.58173 9 12 9V25Z\" fill=\"currentcolor\" />\n    <path d=\"M12 0H4V8H12V0Z\" fill=\"currentcolor\" />\n    <path\n      d=\"M17 8C19.2091 8 21 6.20914 21 4C21 1.79086 19.2091 0 17 0C14.7909 0 13 1.79086 13 4C13 6.20914 14.7909 8 17 8Z\"\n      fill=\"currentcolor\"\n    />\n  </svg>\n);\n"
  },
  {
    "path": "apps/playground/app/(themeable)/sink/scroll-area/page.tsx",
    "content": "import {\n  AspectRatio,\n  Box,\n  Code,\n  Em,\n  Kbd,\n  Quote,\n  ScrollArea,\n  Strong,\n  Text,\n  Table,\n} from '@radix-ui/themes';\nimport { scrollAreaPropDefs } from '@radix-ui/themes/props';\nimport { DocsSection, DocsSectionBody, DocsSectionHeading } from '../docs-section';\nimport { AspectRatioImage } from '../_components';\n\nexport default function ScrollAreaPage() {\n  return (\n    <DocsSection>\n      <DocsSectionHeading>ScrollArea</DocsSectionHeading>\n      <DocsSectionBody>\n        <Box style={{ width: 300, height: 350 }} mb=\"6\">\n          <ScrollArea>\n            <Box\n              mb=\"3\"\n              style={{\n                height: 200,\n                width: 600,\n                backgroundColor: 'var(--accent-3)',\n              }}\n            />\n            <Text as=\"p\">\n              The goal of typography is to relate font size, line height, and line width in a\n              proportional way that maximizes beauty and makes reading easier and more pleasant. The\n              question is: What proportion(s) will give us the best results? The golden ratio is\n              often observed in nature where beauty and utility intersect; perhaps we can use this\n              &quot;divine&quot; proportion to enhance these attributes in our typography.\n            </Text>\n            <Box style={{ width: 300 }} my=\"3\">\n              <AspectRatio ratio={16 / 9}>\n                <AspectRatioImage />\n              </AspectRatio>\n            </Box>\n            <Text as=\"p\" size=\"3\">\n              The CSS rule <Code>-webkit-font-smoothing: antialiased;</Code> has been applied to all\n              fonts.google.com pages where fonts are rendered. This results in browsers using the{' '}\n              <Strong>greyscale antialiasing method</Strong> rather than default{' '}\n              <Em>subpixel rendering</Em> of fonts. Press <Kbd>⌘ Q</Kbd> to quit.{' '}\n              <Quote>\n                I believe this was probably introduced to get around inconsistencies in rendering\n                between browsers\n              </Quote>\n              , particular between Chrome and Safari on MacOS.\n            </Text>\n            <Box style={{ width: 300 }}>\n              <AspectRatio ratio={1}>\n                <AspectRatioImage />\n              </AspectRatio>\n            </Box>\n          </ScrollArea>\n        </Box>\n\n        <Table.Root>\n          <Table.Body>\n            {scrollAreaPropDefs.size.values.map((size) => (\n              <Table.Row key={size}>\n                <Table.RowHeaderCell>size {size}</Table.RowHeaderCell>\n                <Table.Cell>\n                  <Box style={{ width: 200, height: 20 }}>\n                    <ScrollArea type=\"always\" size={size} scrollbars=\"horizontal\">\n                      <Box style={{ width: 600, height: '100%' }} />\n                    </ScrollArea>\n                  </Box>\n                </Table.Cell>\n              </Table.Row>\n            ))}\n          </Table.Body>\n        </Table.Root>\n\n        <Text as=\"p\" my=\"5\">\n          <Code>radius</Code> can be set per instance:\n        </Text>\n\n        <details>\n          <summary>\n            <Text size=\"2\" color=\"gray\">\n              See specific radius examples\n            </Text>\n          </summary>\n          <Box mt=\"3\">\n            <Table.Root>\n              <Table.Header>\n                <Table.Row>\n                  <Table.ColumnHeaderCell />\n                  {scrollAreaPropDefs.size.values.map((size) => (\n                    <Table.ColumnHeaderCell key={size}>size {size}</Table.ColumnHeaderCell>\n                  ))}\n                </Table.Row>\n              </Table.Header>\n              <Table.Body>\n                {scrollAreaPropDefs.radius.values.map((radius) => (\n                  <Table.Row key={radius}>\n                    <Table.RowHeaderCell>{radius}</Table.RowHeaderCell>\n                    {scrollAreaPropDefs.size.values.map((size) => (\n                      <Table.Cell key={size}>\n                        <Box style={{ width: 200, height: 20 }}>\n                          <ScrollArea\n                            type=\"always\"\n                            radius={radius}\n                            size={size}\n                            scrollbars=\"horizontal\"\n                          >\n                            <Box style={{ width: 600, height: '100%' }} />\n                          </ScrollArea>\n                        </Box>\n                      </Table.Cell>\n                    ))}\n                  </Table.Row>\n                ))}\n              </Table.Body>\n            </Table.Root>\n          </Box>\n        </details>\n      </DocsSectionBody>\n    </DocsSection>\n  );\n}\n"
  },
  {
    "path": "apps/playground/app/(themeable)/sink/segmented-control/page.tsx",
    "content": "import { SegmentedControl, Code, Flex, Text, Box, Separator, Table } from '@radix-ui/themes';\nimport { segmentedControlRootPropDefs } from '@radix-ui/themes/props';\nimport { DocsSection, DocsSectionBody, DocsSectionHeading } from '../docs-section';\n\nexport default function SegmentedControlPage() {\n  return (\n    <DocsSection>\n      <DocsSectionHeading>Segmented Control</DocsSectionHeading>\n      <DocsSectionBody>\n        <Table.Root>\n          <Table.Header>\n            <Table.Row>\n              <Table.ColumnHeaderCell />\n              <Table.ColumnHeaderCell>disabled</Table.ColumnHeaderCell>\n              {segmentedControlRootPropDefs.size.values.map((size) => (\n                <Table.ColumnHeaderCell key={size}>size {size}</Table.ColumnHeaderCell>\n              ))}\n            </Table.Row>\n          </Table.Header>\n          <Table.Body>\n            {segmentedControlRootPropDefs.variant.values.map((variant) => (\n              <Table.Row key={variant}>\n                <Table.RowHeaderCell>{variant}</Table.RowHeaderCell>\n                <Table.Cell>\n                  <SegmentedControl.Root\n                    size=\"1\"\n                    variant={variant}\n                    defaultValue=\"1\"\n                    disabled={true}\n                  >\n                    <SegmentedControl.Item value=\"1\">One</SegmentedControl.Item>\n                    <SegmentedControl.Item value=\"2\">Two</SegmentedControl.Item>\n                    <SegmentedControl.Item value=\"3\">Three</SegmentedControl.Item>\n                  </SegmentedControl.Root>\n                </Table.Cell>\n                {segmentedControlRootPropDefs.size.values.map((size) => (\n                  <Table.Cell key={size}>\n                    <SegmentedControl.Root size={size} variant={variant} defaultValue=\"1\">\n                      <SegmentedControl.Item value=\"1\">One</SegmentedControl.Item>\n                      <SegmentedControl.Item value=\"2\">Two</SegmentedControl.Item>\n                      <SegmentedControl.Item value=\"3\">Three</SegmentedControl.Item>\n                    </SegmentedControl.Root>\n                  </Table.Cell>\n                ))}\n              </Table.Row>\n            ))}\n          </Table.Body>\n        </Table.Root>\n\n        <Text as=\"p\" my=\"5\">\n          <Code>radius</Code> can be set per instance:\n        </Text>\n\n        <details>\n          <summary>\n            <Text size=\"2\" color=\"gray\">\n              See specific radius examples\n            </Text>\n          </summary>\n          <Box mt=\"3\">\n            <Table.Root>\n              <Table.Header>\n                <Table.Row>\n                  <Table.ColumnHeaderCell />\n                  {segmentedControlRootPropDefs.size.values.map((size) => (\n                    <Table.ColumnHeaderCell key={size}>size {size}</Table.ColumnHeaderCell>\n                  ))}\n                </Table.Row>\n              </Table.Header>\n              <Table.Body>\n                {segmentedControlRootPropDefs.radius.values.map((radius) => (\n                  <Table.Row key={radius}>\n                    <Table.RowHeaderCell>{radius}</Table.RowHeaderCell>\n                    {segmentedControlRootPropDefs.size.values.map((size) => (\n                      <Table.Cell key={size}>\n                        <SegmentedControl.Root size={size} radius={radius} defaultValue=\"1\">\n                          <SegmentedControl.Item value=\"1\">One</SegmentedControl.Item>\n                          <SegmentedControl.Item value=\"2\">Two</SegmentedControl.Item>\n                          <SegmentedControl.Item value=\"3\">Three</SegmentedControl.Item>\n                        </SegmentedControl.Root>\n                      </Table.Cell>\n                    ))}\n                  </Table.Row>\n                ))}\n              </Table.Body>\n            </Table.Root>\n          </Box>\n        </details>\n\n        <Separator size=\"4\" my=\"9\" />\n\n        <Flex direction=\"column\" gap=\"4\" my=\"7\">\n          <Flex gap=\"4\" align=\"center\">\n            <SegmentedControl.Root>\n              <SegmentedControl.Item value=\"1\">One</SegmentedControl.Item>\n            </SegmentedControl.Root>\n\n            <SegmentedControl.Root>\n              <SegmentedControl.Item value=\"1\">One</SegmentedControl.Item>\n              <SegmentedControl.Item value=\"2\">Two</SegmentedControl.Item>\n            </SegmentedControl.Root>\n\n            <SegmentedControl.Root>\n              <SegmentedControl.Item value=\"1\">One</SegmentedControl.Item>\n              <SegmentedControl.Item value=\"2\">Two</SegmentedControl.Item>\n              <SegmentedControl.Item value=\"3\">Three</SegmentedControl.Item>\n            </SegmentedControl.Root>\n\n            <SegmentedControl.Root>\n              <SegmentedControl.Item value=\"1\">One</SegmentedControl.Item>\n              <SegmentedControl.Item value=\"2\">Two</SegmentedControl.Item>\n              <SegmentedControl.Item value=\"3\">Three</SegmentedControl.Item>\n              <SegmentedControl.Item value=\"4\">Four</SegmentedControl.Item>\n            </SegmentedControl.Root>\n\n            <SegmentedControl.Root>\n              <SegmentedControl.Item value=\"1\">One</SegmentedControl.Item>\n              <SegmentedControl.Item value=\"2\">Two</SegmentedControl.Item>\n              <SegmentedControl.Item value=\"3\">Three</SegmentedControl.Item>\n              <SegmentedControl.Item value=\"4\">Four</SegmentedControl.Item>\n              <SegmentedControl.Item value=\"5\">Five</SegmentedControl.Item>\n            </SegmentedControl.Root>\n          </Flex>\n\n          <Flex gap=\"4\" align=\"center\">\n            <SegmentedControl.Root defaultValue=\"1\">\n              <SegmentedControl.Item value=\"1\">One</SegmentedControl.Item>\n            </SegmentedControl.Root>\n\n            <SegmentedControl.Root defaultValue=\"1\">\n              <SegmentedControl.Item value=\"1\">One</SegmentedControl.Item>\n              <SegmentedControl.Item value=\"2\">Two</SegmentedControl.Item>\n            </SegmentedControl.Root>\n\n            <SegmentedControl.Root defaultValue=\"1\">\n              <SegmentedControl.Item value=\"1\">One</SegmentedControl.Item>\n              <SegmentedControl.Item value=\"2\">Two</SegmentedControl.Item>\n              <SegmentedControl.Item value=\"3\">Three</SegmentedControl.Item>\n            </SegmentedControl.Root>\n\n            <SegmentedControl.Root defaultValue=\"1\">\n              <SegmentedControl.Item value=\"1\">One</SegmentedControl.Item>\n              <SegmentedControl.Item value=\"2\">Two</SegmentedControl.Item>\n              <SegmentedControl.Item value=\"3\">Three</SegmentedControl.Item>\n              <SegmentedControl.Item value=\"4\">Four</SegmentedControl.Item>\n            </SegmentedControl.Root>\n\n            <SegmentedControl.Root defaultValue=\"1\">\n              <SegmentedControl.Item value=\"1\">One</SegmentedControl.Item>\n              <SegmentedControl.Item value=\"2\">Two</SegmentedControl.Item>\n              <SegmentedControl.Item value=\"3\">Three</SegmentedControl.Item>\n              <SegmentedControl.Item value=\"4\">Four</SegmentedControl.Item>\n              <SegmentedControl.Item value=\"5\">Five</SegmentedControl.Item>\n            </SegmentedControl.Root>\n          </Flex>\n\n          <Flex gap=\"4\" align=\"center\">\n            <SegmentedControl.Root variant=\"classic\" defaultValue=\"1\">\n              <SegmentedControl.Item value=\"1\">One</SegmentedControl.Item>\n            </SegmentedControl.Root>\n\n            <SegmentedControl.Root variant=\"classic\" defaultValue=\"1\">\n              <SegmentedControl.Item value=\"1\">One</SegmentedControl.Item>\n              <SegmentedControl.Item value=\"2\">Two</SegmentedControl.Item>\n            </SegmentedControl.Root>\n\n            <SegmentedControl.Root variant=\"classic\" defaultValue=\"1\">\n              <SegmentedControl.Item value=\"1\">One</SegmentedControl.Item>\n              <SegmentedControl.Item value=\"2\">Two</SegmentedControl.Item>\n              <SegmentedControl.Item value=\"3\">Three</SegmentedControl.Item>\n            </SegmentedControl.Root>\n\n            <SegmentedControl.Root variant=\"classic\" defaultValue=\"1\">\n              <SegmentedControl.Item value=\"1\">One</SegmentedControl.Item>\n              <SegmentedControl.Item value=\"2\">Two</SegmentedControl.Item>\n              <SegmentedControl.Item value=\"3\">Three</SegmentedControl.Item>\n              <SegmentedControl.Item value=\"4\">Four</SegmentedControl.Item>\n            </SegmentedControl.Root>\n\n            <SegmentedControl.Root variant=\"classic\" defaultValue=\"1\">\n              <SegmentedControl.Item value=\"1\">One</SegmentedControl.Item>\n              <SegmentedControl.Item value=\"2\">Two</SegmentedControl.Item>\n              <SegmentedControl.Item value=\"3\">Three</SegmentedControl.Item>\n              <SegmentedControl.Item value=\"4\">Four</SegmentedControl.Item>\n              <SegmentedControl.Item value=\"5\">Five</SegmentedControl.Item>\n            </SegmentedControl.Root>\n          </Flex>\n        </Flex>\n      </DocsSectionBody>\n    </DocsSection>\n  );\n}\n"
  },
  {
    "path": "apps/playground/app/(themeable)/sink/select/page.tsx",
    "content": "import { Fragment } from 'react';\nimport { Select, Text, Code, Box, Table } from '@radix-ui/themes';\nimport {\n  selectRootPropDefs,\n  selectTriggerPropDefs,\n  selectContentPropDefs,\n} from '@radix-ui/themes/props';\nimport { DocsSection, DocsSectionBody, DocsSectionHeading } from '../docs-section';\nimport { SelectItemsDemo } from '../_components';\nimport { accentColorsGrouped } from '../_utils';\n\nexport default function SelectPage() {\n  return (\n    <DocsSection>\n      <DocsSectionHeading>Select</DocsSectionHeading>\n      <DocsSectionBody>\n        <Text as=\"p\" my=\"5\">\n          Trigger variants:\n        </Text>\n        <Table.Root>\n          <Table.Header>\n            <Table.Row>\n              <Table.ColumnHeaderCell />\n              {selectRootPropDefs.size.values.map((size) => (\n                <Table.ColumnHeaderCell key={size}>size {size}</Table.ColumnHeaderCell>\n              ))}\n              <Table.ColumnHeaderCell>+ placeholder</Table.ColumnHeaderCell>\n              <Table.ColumnHeaderCell />\n              <Table.ColumnHeaderCell>gray</Table.ColumnHeaderCell>\n              <Table.ColumnHeaderCell>+ placeholder</Table.ColumnHeaderCell>\n              <Table.ColumnHeaderCell />\n              <Table.ColumnHeaderCell>disabled</Table.ColumnHeaderCell>\n            </Table.Row>\n          </Table.Header>\n          <Table.Body>\n            {selectTriggerPropDefs.variant.values.map((variant) => (\n              <Table.Row key={variant}>\n                <Table.RowHeaderCell>{variant}</Table.RowHeaderCell>\n                {selectRootPropDefs.size.values.map((size) => (\n                  <Table.Cell key={size}>\n                    <Select.Root defaultValue=\"apple\" size={size}>\n                      <Select.Trigger variant={variant} />\n                      <Select.Content>\n                        <SelectItemsDemo />\n                      </Select.Content>\n                    </Select.Root>\n                  </Table.Cell>\n                ))}\n                <Table.Cell>\n                  <Select.Root size=\"2\">\n                    <Select.Trigger variant={variant} placeholder=\"Choose a fruit\" />\n                    <Select.Content>\n                      <SelectItemsDemo />\n                    </Select.Content>\n                  </Select.Root>\n                </Table.Cell>\n                <Table.Cell />\n                <Table.Cell>\n                  <Select.Root defaultValue=\"apple\" size=\"2\">\n                    <Select.Trigger variant={variant} color=\"gray\" />\n                    <Select.Content>\n                      <SelectItemsDemo />\n                    </Select.Content>\n                  </Select.Root>\n                </Table.Cell>\n                <Table.Cell>\n                  <Select.Root size=\"2\">\n                    <Select.Trigger variant={variant} color=\"gray\" placeholder=\"Choose a fruit\" />\n                    <Select.Content>\n                      <SelectItemsDemo />\n                    </Select.Content>\n                  </Select.Root>\n                </Table.Cell>\n                <Table.Cell />\n                <Table.Cell>\n                  <Select.Root defaultValue=\"apple\" size=\"2\" disabled>\n                    <Select.Trigger variant={variant} />\n                    <Select.Content>\n                      <SelectItemsDemo />\n                    </Select.Content>\n                  </Select.Root>\n                </Table.Cell>\n              </Table.Row>\n            ))}\n          </Table.Body>\n        </Table.Root>\n\n        <Text as=\"p\" my=\"5\">\n          Content variants:\n        </Text>\n        <Table.Root>\n          <Table.Header>\n            <Table.Row>\n              <Table.ColumnHeaderCell />\n              <Table.ColumnHeaderCell>color</Table.ColumnHeaderCell>\n              <Table.ColumnHeaderCell>+ high-contrast</Table.ColumnHeaderCell>\n              <Table.ColumnHeaderCell>gray</Table.ColumnHeaderCell>\n              <Table.ColumnHeaderCell>+ high-contrast</Table.ColumnHeaderCell>\n            </Table.Row>\n          </Table.Header>\n          <Table.Body>\n            {selectContentPropDefs.variant.values.map((variant) => (\n              <Table.Row key={variant}>\n                <Table.RowHeaderCell>{variant}</Table.RowHeaderCell>\n                <Table.Cell>\n                  <Select.Root defaultValue=\"apple\" size=\"1\">\n                    <Select.Trigger />\n                    <Select.Content variant={variant} position=\"popper\">\n                      <SelectItemsDemo />\n                    </Select.Content>\n                  </Select.Root>\n                </Table.Cell>\n                <Table.Cell>\n                  <Select.Root defaultValue=\"apple\" size=\"1\">\n                    <Select.Trigger />\n                    <Select.Content variant={variant} highContrast position=\"popper\">\n                      <SelectItemsDemo />\n                    </Select.Content>\n                  </Select.Root>\n                </Table.Cell>\n                <Table.Cell>\n                  <Select.Root defaultValue=\"apple\" size=\"1\">\n                    <Select.Trigger />\n                    <Select.Content variant={variant} color=\"gray\" position=\"popper\">\n                      <SelectItemsDemo />\n                    </Select.Content>\n                  </Select.Root>\n                </Table.Cell>\n                <Table.Cell>\n                  <Select.Root defaultValue=\"apple\" size=\"1\">\n                    <Select.Trigger />\n                    <Select.Content variant={variant} color=\"gray\" highContrast position=\"popper\">\n                      <SelectItemsDemo />\n                    </Select.Content>\n                  </Select.Root>\n                </Table.Cell>\n              </Table.Row>\n            ))}\n          </Table.Body>\n        </Table.Root>\n\n        <Text as=\"p\" my=\"5\">\n          <Code>radius</Code> can be set per instance:\n        </Text>\n\n        <details>\n          <summary>\n            <Text size=\"2\" color=\"gray\">\n              See specific radius examples\n            </Text>\n          </summary>\n          <Box mt=\"3\">\n            <Table.Root>\n              <Table.Header>\n                <Table.Row>\n                  <Table.ColumnHeaderCell />\n                  {selectRootPropDefs.size.values.map((size) => (\n                    <Table.ColumnHeaderCell key={size}>size {size}</Table.ColumnHeaderCell>\n                  ))}\n                </Table.Row>\n              </Table.Header>\n              <Table.Body>\n                {selectTriggerPropDefs.radius.values.map((radius) => (\n                  <Table.Row key={radius}>\n                    <Table.RowHeaderCell>{radius}</Table.RowHeaderCell>\n                    {selectRootPropDefs.size.values.map((size) => (\n                      <Table.Cell key={size}>\n                        <Select.Root defaultValue=\"apple\" size={size}>\n                          <Select.Trigger radius={radius} />\n                          <Select.Content>\n                            <SelectItemsDemo />\n                          </Select.Content>\n                        </Select.Root>\n                      </Table.Cell>\n                    ))}\n                  </Table.Row>\n                ))}\n              </Table.Body>\n            </Table.Root>\n          </Box>\n        </details>\n\n        <Text as=\"p\" my=\"5\">\n          <Code>color</Code> can be set per instance:\n        </Text>\n\n        <details>\n          <summary>\n            <Text size=\"2\" color=\"gray\">\n              See colors & variants combinations\n            </Text>\n          </summary>\n          {accentColorsGrouped.map(({ label, values }) => (\n            <Fragment key={label}>\n              <Text as=\"p\" weight=\"bold\" mt=\"6\" mb=\"4\">\n                {label}\n              </Text>\n              <Table.Root>\n                <Table.Header>\n                  <Table.Row>\n                    <Table.ColumnHeaderCell />\n                    {selectTriggerPropDefs.variant.values.map((variant) => (\n                      <Table.ColumnHeaderCell key={variant}>{variant}</Table.ColumnHeaderCell>\n                    ))}\n                  </Table.Row>\n                </Table.Header>\n                <Table.Body>\n                  {values.map((color) => (\n                    <Table.Row key={color}>\n                      <Table.RowHeaderCell>{color}</Table.RowHeaderCell>\n                      {selectTriggerPropDefs.variant.values.map((variant) => (\n                        <Table.Cell key={variant}>\n                          <Select.Root defaultValue=\"apple\" size=\"1\">\n                            <Select.Trigger variant={variant} color={color} />\n                            <Select.Content variant=\"soft\" color={color}>\n                              <SelectItemsDemo />\n                            </Select.Content>\n                          </Select.Root>\n                        </Table.Cell>\n                      ))}\n                    </Table.Row>\n                  ))}\n                </Table.Body>\n              </Table.Root>\n            </Fragment>\n          ))}\n        </details>\n      </DocsSectionBody>\n    </DocsSection>\n  );\n}\n"
  },
  {
    "path": "apps/playground/app/(themeable)/sink/separator/page.tsx",
    "content": "import { Flex, Separator } from '@radix-ui/themes';\nimport { accentColors } from '@radix-ui/themes/props';\nimport { DocsSection, DocsSectionBody, DocsSectionHeading } from '../docs-section';\n\nexport default function SeparatorPage() {\n  return (\n    <DocsSection>\n      <DocsSectionHeading>Separator</DocsSectionHeading>\n      <DocsSectionBody>\n        <Flex direction=\"column\" gap=\"5\" my=\"5\">\n          {accentColors.map((color) => (\n            <Separator key={color} size=\"4\" color={color} />\n          ))}\n        </Flex>\n        <Flex direction=\"row\" gap=\"5\" my=\"5\" height=\"300px\" justify=\"between\">\n          {accentColors.map((color) => (\n            <Separator key={color} orientation=\"vertical\" size=\"4\" color={color} />\n          ))}\n        </Flex>\n      </DocsSectionBody>\n    </DocsSection>\n  );\n}\n"
  },
  {
    "path": "apps/playground/app/(themeable)/sink/shadow-tokens/page.tsx",
    "content": "import { Flex, Box, Text } from '@radix-ui/themes';\nimport { DocsSection, DocsSectionBody, DocsSectionHeading } from '../docs-section';\n\nexport default function ShadowTokens() {\n  return (\n    <DocsSection>\n      <DocsSectionHeading>Shadow tokens</DocsSectionHeading>\n      <DocsSectionBody>\n        <Flex direction=\"column\" gap=\"3\" mt=\"6\" mb=\"5\">\n          <Flex\n            style={{\n              flex: 1,\n              background: 'var(--gray-1)',\n              boxShadow: 'inset 0 0 0 1px var(--gray-a4)',\n              borderRadius: 'var(--radius-3)',\n            }}\n            p=\"9\"\n            gap=\"5\"\n          >\n            {[...new Array(6)].map((_, i) => (\n              <Flex flexGrow=\"1\" align=\"center\" justify=\"center\" key={i}>\n                <Box\n                  flexGrow=\"1\"\n                  style={{\n                    backgroundColor: 'var(--color-panel-solid)',\n                    boxShadow: `var(--shadow-${i + 1})`,\n                    borderRadius: 'var(--radius-2)',\n                    height: 80,\n                  }}\n                  key={i}\n                />\n              </Flex>\n            ))}\n          </Flex>\n\n          <Flex align=\"center\" gap=\"1\" px=\"9\">\n            {[...new Array(6)].map((_, i) => (\n              <Flex align=\"center\" justify=\"center\" height=\"100%\" width=\"100%\" key={i}>\n                <Text size=\"1\" color=\"gray\">\n                  {i + 1}\n                </Text>\n              </Flex>\n            ))}\n          </Flex>\n        </Flex>\n      </DocsSectionBody>\n    </DocsSection>\n  );\n}\n"
  },
  {
    "path": "apps/playground/app/(themeable)/sink/skeleton/page.tsx",
    "content": "import { ArrowRightIcon, InfoCircledIcon, StarIcon } from '@radix-ui/react-icons';\nimport {\n  Avatar,\n  Badge,\n  Blockquote,\n  Box,\n  Button,\n  Callout,\n  Card,\n  Checkbox,\n  Code,\n  Flex,\n  Grid,\n  Heading,\n  IconButton,\n  Kbd,\n  Link,\n  RadioGroup,\n  Select,\n  Skeleton,\n  Slider,\n  Switch,\n  Text,\n  TextArea,\n  TextField,\n} from '@radix-ui/themes';\nimport { DocsSection, DocsSectionBody, DocsSectionHeading } from '../docs-section';\nimport { PlaygroundForm, SelectItemsDemo, TableExample } from '../_components';\n\nexport default function SkeletonPage() {\n  return (\n    <DocsSection>\n      <DocsSectionHeading>Skeleton</DocsSectionHeading>\n      <DocsSectionBody>\n        <Flex gap=\"9\">\n          <Box style={{ width: 400 }}>\n            <Card size=\"4\">\n              <PlaygroundForm />\n            </Card>\n\n            <Flex gap=\"3\" align=\"center\" mt=\"6\" wrap=\"wrap\">\n              <Avatar fallback=\"BG\" />\n              <Badge size=\"2\" color=\"green\">\n                New\n              </Badge>\n              <Button>\n                Next <ArrowRightIcon />\n              </Button>\n              <Checkbox size=\"3\" defaultChecked />\n              <Code>console.log()</Code>\n              <IconButton>\n                <StarIcon />\n              </IconButton>\n              <Kbd>⌘ Q</Kbd>\n              <Link href=\"/\">This is a link</Link>\n              <RadioGroup.Root defaultValue=\"value\" size=\"3\">\n                <RadioGroup.Item value=\"value\" />\n              </RadioGroup.Root>\n              <Select.Root defaultValue=\"apple\">\n                <Select.Trigger />\n                <Select.Content>\n                  <SelectItemsDemo />\n                </Select.Content>\n              </Select.Root>\n              <div style={{ minWidth: 150 }}>\n                <Slider defaultValue={[33]} />\n              </div>\n              <Switch defaultChecked />\n              <TextField.Root placeholder=\"Your name\" />\n              <TextArea placeholder=\"Your feedback\" />\n              <Heading size=\"5\">Principles of the Typographic Craft</Heading>\n\n              <Blockquote size=\"2\" style={{ maxWidth: '50ch' }} color=\"gray\">\n                The goal of typography is to relate font size, line height, and line width in a\n                proportional way that maximizes <Text highContrast>beauty</Text> and makes reading\n                easier and more pleasant. The question is: What proportion(s) will give us the best\n                results?\n              </Blockquote>\n\n              <Callout.Root>\n                <Callout.Icon>\n                  <InfoCircledIcon />\n                </Callout.Icon>\n                <Callout.Text>\n                  We have detected multiple issues in your application configuration file. Please\n                  read our <Link href=\"/\">Configuration Guide</Link> for more details.\n                </Callout.Text>\n              </Callout.Root>\n\n              <TableExample variant=\"surface\" noEmail />\n\n              <Card size=\"5\" />\n            </Flex>\n          </Box>\n\n          <Box style={{ width: 400 }}>\n            <Card size=\"4\">\n              <Flex direction=\"column\" gap=\"3\">\n                <Grid gap=\"1\">\n                  <Text weight=\"bold\">\n                    <Skeleton>Email</Skeleton>\n                  </Text>\n                  <Skeleton>\n                    <TextField.Root variant=\"classic\" placeholder=\"Your email\" />\n                  </Skeleton>\n                </Grid>\n                <Grid gap=\"1\">\n                  <Text weight=\"bold\">\n                    <Skeleton>Subject</Skeleton>\n                  </Text>\n                  <Select.Root defaultValue=\"customer\">\n                    <Skeleton>\n                      <Select.Trigger variant=\"classic\" />\n                    </Skeleton>\n                  </Select.Root>\n                </Grid>\n                <Grid gap=\"1\">\n                  <Text weight=\"bold\">\n                    <Skeleton>Feedback</Skeleton>\n                  </Text>\n                  <Skeleton>\n                    <TextArea variant=\"classic\" placeholder=\"Your feedback\" />\n                  </Skeleton>\n                </Grid>\n                <Grid columns=\"2\" gap=\"2\">\n                  <Skeleton>\n                    <Button variant=\"surface\">Back</Button>\n                  </Skeleton>\n                  <Skeleton>\n                    <Button variant=\"classic\">Submit</Button>\n                  </Skeleton>\n                </Grid>\n              </Flex>\n            </Card>\n\n            <Flex gap=\"3\" align=\"center\" mt=\"6\" wrap=\"wrap\">\n              <Skeleton>\n                <Avatar fallback=\"BG\" />\n              </Skeleton>\n              <Skeleton>\n                <Badge size=\"2\" color=\"green\">\n                  New\n                </Badge>\n              </Skeleton>\n              <Skeleton>\n                <Button>\n                  Next <ArrowRightIcon />\n                </Button>\n              </Skeleton>\n              <Skeleton>\n                <Checkbox size=\"3\" defaultChecked />\n              </Skeleton>\n              <Skeleton>\n                <Code>console.log()</Code>\n              </Skeleton>\n              <Skeleton>\n                <IconButton>\n                  <StarIcon />\n                </IconButton>\n              </Skeleton>\n              <Skeleton>\n                <Kbd>⌘ Q</Kbd>\n              </Skeleton>\n              <Skeleton>\n                <Link href=\"/\">This is a link</Link>\n              </Skeleton>\n              <RadioGroup.Root defaultValue=\"value\" size=\"3\">\n                <Skeleton>\n                  <RadioGroup.Item value=\"value\" />\n                </Skeleton>\n              </RadioGroup.Root>\n              <Select.Root defaultValue=\"apple\">\n                <Skeleton>\n                  <Select.Trigger />\n                </Skeleton>\n                <Select.Content>\n                  <SelectItemsDemo />\n                </Select.Content>\n              </Select.Root>\n              <div style={{ minWidth: 150 }}>\n                <Skeleton>\n                  <Slider defaultValue={[33]} />\n                </Skeleton>\n              </div>\n              <Skeleton>\n                <Switch defaultChecked />\n              </Skeleton>\n              <Skeleton>\n                <TextField.Root placeholder=\"Your name\" />\n              </Skeleton>\n              <Skeleton>\n                <TextArea placeholder=\"Your feedback\" />\n              </Skeleton>\n              <Skeleton>\n                <Heading size=\"5\">Principles of the Typographic Craft</Heading>\n              </Skeleton>\n\n              <Skeleton>\n                <Blockquote size=\"2\" style={{ maxWidth: '50ch' }} color=\"gray\">\n                  The goal of typography is to relate font size, line height, and line width in a\n                  proportional way that maximizes <Text highContrast>beauty</Text> and makes reading\n                  easier and more pleasant. The question is: What proportion(s) will give us the\n                  best results?\n                </Blockquote>\n              </Skeleton>\n\n              <Skeleton>\n                <Callout.Root>\n                  <Callout.Icon>\n                    <InfoCircledIcon />\n                  </Callout.Icon>\n                  <Callout.Text>\n                    We have detected multiple issues in your application configuration file. Please\n                    read our <Link href=\"/\">Configuration Guide</Link> for more details.\n                  </Callout.Text>\n                </Callout.Root>\n              </Skeleton>\n\n              <Skeleton>\n                <TableExample variant=\"surface\" noEmail />\n              </Skeleton>\n\n              <Skeleton>\n                <Card size=\"5\" />\n              </Skeleton>\n            </Flex>\n          </Box>\n        </Flex>\n      </DocsSectionBody>\n    </DocsSection>\n  );\n}\n"
  },
  {
    "path": "apps/playground/app/(themeable)/sink/slider/page.tsx",
    "content": "import { Fragment } from 'react';\nimport { Slider, Grid, Text, Flex, Code, Box, Table } from '@radix-ui/themes';\nimport { sliderPropDefs } from '@radix-ui/themes/props';\nimport { DocsSection, DocsSectionBody, DocsSectionHeading } from '../docs-section';\nimport { accentColorsGrouped } from '../_utils';\n\nexport default function SliderPage() {\n  return (\n    <DocsSection>\n      <DocsSectionHeading>Slider</DocsSectionHeading>\n      <DocsSectionBody>\n        <Grid columns=\"2\" gap=\"9\">\n          <div style={{ gridColumn: '1 / span 2' }}>\n            <Table.Root>\n              <Table.Header>\n                <Table.Row>\n                  <Table.ColumnHeaderCell />\n                  <Table.ColumnHeaderCell>color</Table.ColumnHeaderCell>\n                  <Table.ColumnHeaderCell>+ high-contrast</Table.ColumnHeaderCell>\n                  <Table.ColumnHeaderCell>gray</Table.ColumnHeaderCell>\n                  <Table.ColumnHeaderCell>+ high-contrast</Table.ColumnHeaderCell>\n                  <Table.ColumnHeaderCell>disabled</Table.ColumnHeaderCell>\n                </Table.Row>\n              </Table.Header>\n              <Table.Body>\n                {sliderPropDefs.variant.values.map((variant, index) => (\n                  <Table.Row key={variant}>\n                    <Table.RowHeaderCell>{variant}</Table.RowHeaderCell>\n                    <Table.Cell style={{ minWidth: 150 }}>\n                      <Slider variant={variant} defaultValue={[33 + index * 10]} />\n                    </Table.Cell>\n                    <Table.Cell style={{ minWidth: 150 }}>\n                      <Slider variant={variant} highContrast defaultValue={[33 + index * 10]} />\n                    </Table.Cell>\n                    <Table.Cell style={{ minWidth: 150 }}>\n                      <Slider variant={variant} color=\"gray\" defaultValue={[33 + index * 10]} />\n                    </Table.Cell>\n                    <Table.Cell style={{ minWidth: 150 }}>\n                      <Slider\n                        variant={variant}\n                        color=\"gray\"\n                        highContrast\n                        defaultValue={[33 + index * 10]}\n                      />\n                    </Table.Cell>\n                    <Table.Cell style={{ minWidth: 150 }}>\n                      <Slider variant={variant} defaultValue={[33 + index * 10]} disabled />\n                    </Table.Cell>\n                  </Table.Row>\n                ))}\n              </Table.Body>\n            </Table.Root>\n          </div>\n\n          <div>\n            <Table.Root>\n              <Table.Body>\n                {sliderPropDefs.size.values.map((size, index) => (\n                  <Table.Row key={size}>\n                    <Table.RowHeaderCell>size {size}</Table.RowHeaderCell>\n                    <Table.Cell style={{ minWidth: 316 }}>\n                      <Slider size={size} defaultValue={[33 + index * 10]} />\n                    </Table.Cell>\n                  </Table.Row>\n                ))}\n              </Table.Body>\n            </Table.Root>\n          </div>\n\n          <div>\n            <Flex gap=\"5\" style={{ height: 160 }}>\n              {sliderPropDefs.size.values.map((size, i, sizes) => {\n                return (\n                  <Fragment key={size}>\n                    {[...sliderPropDefs.variant.values, ...sliderPropDefs.variant.values]\n                      .sort()\n                      .map((variant, j, variants) => {\n                        const stepCount = variants.length * sizes.length - 1;\n                        const step = i * variants.length + j;\n                        const value = 25 + Math.round(Math.sin(Math.PI * (step / stepCount)) * 50);\n                        return (\n                          <Slider\n                            key={step}\n                            orientation=\"vertical\"\n                            defaultValue={[value]}\n                            size={size}\n                            variant={variant}\n                            highContrast={step % 2 === 1 ? true : false}\n                          />\n                        );\n                      })}\n                  </Fragment>\n                );\n              })}\n            </Flex>\n          </div>\n\n          <Box mb=\"6\">\n            <Slider defaultValue={[25, 75]} />\n          </Box>\n        </Grid>\n\n        <Text as=\"p\" my=\"5\">\n          <Code>radius</Code> can be set per instance:\n        </Text>\n\n        <details>\n          <summary>\n            <Text size=\"2\" color=\"gray\">\n              See specific radius examples\n            </Text>\n          </summary>\n          <Box mt=\"3\">\n            <Table.Root>\n              <Table.Header>\n                <Table.Row>\n                  <Table.ColumnHeaderCell />\n                  {sliderPropDefs.size.values.map((size) => (\n                    <Table.ColumnHeaderCell key={size}>size {size}</Table.ColumnHeaderCell>\n                  ))}\n                </Table.Row>\n              </Table.Header>\n              <Table.Body>\n                {sliderPropDefs.radius.values.map((radius) => (\n                  <Table.Row key={radius}>\n                    <Table.RowHeaderCell>{radius}</Table.RowHeaderCell>\n                    {sliderPropDefs.size.values.map((size) => (\n                      <Table.Cell key={size} style={{ minWidth: 150 }}>\n                        <Slider size={size} radius={radius} defaultValue={[50]} />\n                      </Table.Cell>\n                    ))}\n                  </Table.Row>\n                ))}\n              </Table.Body>\n            </Table.Root>\n          </Box>\n        </details>\n\n        <Text as=\"p\" my=\"5\">\n          <Code>color</Code> can be set per instance:\n        </Text>\n\n        <details>\n          <summary>\n            <Text size=\"2\" color=\"gray\">\n              See colors\n            </Text>\n          </summary>\n          {accentColorsGrouped.map(({ label, values }) => (\n            <Fragment key={label}>\n              <Text as=\"p\" weight=\"bold\" mt=\"6\" mb=\"4\">\n                {label}\n              </Text>\n              <Table.Root>\n                <Table.Header>\n                  <Table.Row>\n                    <Table.ColumnHeaderCell />\n                    {sliderPropDefs.variant.values.map((variant) => (\n                      <Table.ColumnHeaderCell key={variant}>{variant}</Table.ColumnHeaderCell>\n                    ))}\n                  </Table.Row>\n                </Table.Header>\n                <Table.Body>\n                  {values.map((color) => (\n                    <Table.Row key={color}>\n                      <Table.RowHeaderCell>{color}</Table.RowHeaderCell>\n                      {sliderPropDefs.variant.values.map((variant) => (\n                        <Table.Cell key={variant} style={{ minWidth: 150 }}>\n                          <Slider variant={variant} color={color} defaultValue={[50]} mt=\"3\" />\n                          <Slider\n                            variant={variant}\n                            color={color}\n                            highContrast\n                            defaultValue={[50]}\n                            mt=\"5\"\n                            mb=\"3\"\n                          />\n                        </Table.Cell>\n                      ))}\n                    </Table.Row>\n                  ))}\n                </Table.Body>\n              </Table.Root>\n            </Fragment>\n          ))}\n        </details>\n      </DocsSectionBody>\n    </DocsSection>\n  );\n}\n"
  },
  {
    "path": "apps/playground/app/(themeable)/sink/spinner/page.tsx",
    "content": "import { Spinner, Flex, Button, TextField, Grid } from '@radix-ui/themes';\nimport { DocsSection, DocsSectionBody, DocsSectionHeading } from '../docs-section';\nimport { LoadingButtons } from '../../../../components/loading-buttons';\n\nexport default function SpinnerPage() {\n  return (\n    <DocsSection>\n      <DocsSectionHeading>Spinner</DocsSectionHeading>\n      <DocsSectionBody>\n        <Grid gap=\"4\">\n          <Flex gap=\"4\" align=\"center\">\n            <Spinner size=\"1\" />\n            <Spinner size=\"2\" />\n            <Spinner size=\"3\" />\n\n            <Spinner>\n              <Button>Hello</Button>\n            </Spinner>\n          </Flex>\n\n          <Flex gap=\"4\" align=\"center\">\n            <TextField.Root defaultValue=\"horsebatterystaple\" type=\"password\" size=\"1\">\n              <TextField.Slot>\n                <Spinner size=\"1\" />\n              </TextField.Slot>\n            </TextField.Root>\n\n            <TextField.Root defaultValue=\"horsebatterystaple\" type=\"password\" size=\"2\">\n              <TextField.Slot>\n                <Spinner size=\"2\" />\n              </TextField.Slot>\n            </TextField.Root>\n\n            <TextField.Root defaultValue=\"horsebatterystaple\" type=\"password\" size=\"3\">\n              <TextField.Slot>\n                <Spinner size=\"3\" />\n              </TextField.Slot>\n            </TextField.Root>\n          </Flex>\n\n          <LoadingButtons />\n        </Grid>\n      </DocsSectionBody>\n    </DocsSection>\n  );\n}\n"
  },
  {
    "path": "apps/playground/app/(themeable)/sink/switch/page.tsx",
    "content": "import { Fragment } from 'react';\nimport { Switch, Grid, Text, Flex, Separator, Code, Box, Table } from '@radix-ui/themes';\nimport { switchPropDefs } from '@radix-ui/themes/props';\nimport { DocsSection, DocsSectionBody, DocsSectionHeading } from '../docs-section';\nimport { accentColorsGrouped } from '../_utils';\n\nexport default function SwitchPage() {\n  return (\n    <DocsSection>\n      <DocsSectionHeading>Switch</DocsSectionHeading>\n      <DocsSectionBody>\n        <Grid columns=\"2\" gap=\"9\">\n          <div>\n            <Table.Root>\n              <Table.Header>\n                <Table.Row>\n                  <Table.ColumnHeaderCell />\n                  <Table.ColumnHeaderCell>not checked</Table.ColumnHeaderCell>\n                  <Table.ColumnHeaderCell>checked</Table.ColumnHeaderCell>\n                  <Table.ColumnHeaderCell>disabled</Table.ColumnHeaderCell>\n                  <Table.ColumnHeaderCell>disabled checked</Table.ColumnHeaderCell>\n                </Table.Row>\n              </Table.Header>\n              <Table.Body>\n                {switchPropDefs.variant.values.map((variant) => (\n                  <Fragment key={variant}>\n                    {[variant, '+ high-contrast'].map((label) => (\n                      <Table.Row key={label}>\n                        <Table.RowHeaderCell>{label}</Table.RowHeaderCell>\n                        <Table.Cell>\n                          <Switch variant={variant} highContrast={label === '+ high-contrast'} />\n                        </Table.Cell>\n                        <Table.Cell>\n                          <Switch\n                            variant={variant}\n                            highContrast={label === '+ high-contrast'}\n                            defaultChecked\n                          />\n                        </Table.Cell>\n                        <Table.Cell>\n                          <Switch\n                            variant={variant}\n                            highContrast={label === '+ high-contrast'}\n                            disabled\n                          />\n                        </Table.Cell>\n                        <Table.Cell>\n                          <Switch\n                            variant={variant}\n                            highContrast={label === '+ high-contrast'}\n                            disabled\n                            defaultChecked\n                          />\n                        </Table.Cell>\n                      </Table.Row>\n                    ))}\n                  </Fragment>\n                ))}\n              </Table.Body>\n            </Table.Root>\n\n            <Table.Root>\n              <Table.Body>\n                {switchPropDefs.size.values.map((size) => (\n                  <Table.Row key={size}>\n                    <Table.RowHeaderCell>size {size}</Table.RowHeaderCell>\n                    <Table.Cell>\n                      <Switch size={size} defaultChecked={size === '2'} />\n                    </Table.Cell>\n                  </Table.Row>\n                ))}\n              </Table.Body>\n            </Table.Root>\n          </div>\n\n          <div>\n            <Box py=\"4\">\n              <Text as=\"p\" size=\"2\">\n                Alignment\n              </Text>\n            </Box>\n\n            <Flex direction=\"column\" gap=\"5\" style={{ maxWidth: 320 }}>\n              <Separator size=\"4\" />\n\n              <Text size=\"1\" asChild>\n                <label>\n                  <Flex gap=\"2\">\n                    <Switch size=\"1\" />\n                    <Text>Agree to Terms and Conditions</Text>\n                  </Flex>\n                </label>\n              </Text>\n\n              <Separator size=\"4\" />\n\n              <Text size=\"2\" asChild>\n                <label>\n                  <Flex gap=\"2\">\n                    <Switch size=\"1\" />\n                    <Text>Agree to Terms and Conditions</Text>\n                  </Flex>\n                </label>\n              </Text>\n\n              <Separator size=\"4\" />\n\n              <Text size=\"2\" asChild>\n                <label>\n                  <Flex gap=\"2\">\n                    <Switch size=\"2\" />\n                    <Text>Agree to Terms and Conditions</Text>\n                  </Flex>\n                </label>\n              </Text>\n\n              <Separator size=\"4\" />\n\n              <Text size=\"3\" asChild>\n                <label>\n                  <Flex gap=\"2\">\n                    <Switch size=\"2\" />\n                    <Text>Agree to Terms and Conditions</Text>\n                  </Flex>\n                </label>\n              </Text>\n\n              <Separator size=\"4\" />\n\n              <Text size=\"3\" asChild>\n                <label>\n                  <Flex gap=\"2\">\n                    <Switch size=\"3\" />\n                    <Text>Agree to Terms and Conditions</Text>\n                  </Flex>\n                </label>\n              </Text>\n\n              <Separator size=\"4\" />\n\n              <Text size=\"4\" asChild>\n                <label>\n                  <Flex gap=\"2\">\n                    <Switch size=\"3\" />\n                    <Text>Agree to Terms and Conditions</Text>\n                  </Flex>\n                </label>\n              </Text>\n\n              <Separator size=\"4\" />\n            </Flex>\n          </div>\n        </Grid>\n\n        <Text as=\"p\" my=\"5\">\n          <Code>radius</Code> can be set per instance:\n        </Text>\n\n        <details>\n          <summary>\n            <Text size=\"2\" color=\"gray\">\n              See specific radius examples\n            </Text>\n          </summary>\n          <Box mt=\"3\">\n            <Table.Root>\n              <Table.Header>\n                <Table.Row>\n                  <Table.ColumnHeaderCell />\n                  {switchPropDefs.size.values.map((size) => (\n                    <Table.ColumnHeaderCell key={size}>size {size}</Table.ColumnHeaderCell>\n                  ))}\n                </Table.Row>\n              </Table.Header>\n              <Table.Body>\n                {switchPropDefs.radius.values.map((radius) => (\n                  <Table.Row key={radius}>\n                    <Table.RowHeaderCell>{radius}</Table.RowHeaderCell>\n                    {switchPropDefs.size.values.map((size) => (\n                      <Table.Cell key={size}>\n                        <Switch size={size} radius={radius} />\n                      </Table.Cell>\n                    ))}\n                  </Table.Row>\n                ))}\n              </Table.Body>\n            </Table.Root>\n          </Box>\n        </details>\n\n        <Text as=\"p\" my=\"5\">\n          <Code>color</Code> can be set per instance:\n        </Text>\n\n        <details>\n          <summary>\n            <Text size=\"2\" color=\"gray\">\n              See colors\n            </Text>\n          </summary>\n          {accentColorsGrouped.map(({ label, values }) => (\n            <Fragment key={label}>\n              <Text as=\"p\" weight=\"bold\" mt=\"6\" mb=\"4\">\n                {label}\n              </Text>\n              <Table.Root>\n                <Table.Header>\n                  <Table.Row>\n                    <Table.ColumnHeaderCell />\n                    {switchPropDefs.variant.values.map((variant) => (\n                      <Table.ColumnHeaderCell key={variant}>{variant}</Table.ColumnHeaderCell>\n                    ))}\n                  </Table.Row>\n                </Table.Header>\n                <Table.Body>\n                  {values.map((color) => (\n                    <Table.Row key={color}>\n                      <Table.RowHeaderCell>{color}</Table.RowHeaderCell>\n                      {switchPropDefs.variant.values.map((variant) => (\n                        <Table.Cell key={variant}>\n                          <Switch variant={variant} color={color} />\n                          <Switch variant={variant} color={color} defaultChecked ml=\"2\" />\n                          <Switch\n                            variant={variant}\n                            color={color}\n                            highContrast\n                            defaultChecked\n                            ml=\"2\"\n                          />\n                        </Table.Cell>\n                      ))}\n                    </Table.Row>\n                  ))}\n                </Table.Body>\n              </Table.Root>\n            </Fragment>\n          ))}\n        </details>\n      </DocsSectionBody>\n    </DocsSection>\n  );\n}\n"
  },
  {
    "path": "apps/playground/app/(themeable)/sink/tab-nav/page.tsx",
    "content": "import { Fragment } from 'react';\nimport { Text, Code, Grid, Flex, Table } from '@radix-ui/themes';\nimport { tabsListPropDefs } from '@radix-ui/themes/props';\nimport { DocsSection, DocsSectionBody, DocsSectionHeading } from '../docs-section';\nimport { TabNavDemo } from '../tab-nav-demo';\n\nexport default function TabNavPage() {\n  return (\n    <DocsSection>\n      <DocsSectionHeading>Tab Nav</DocsSectionHeading>\n      <DocsSectionBody>\n        <Table.Root>\n          <Table.Body>\n            {tabsListPropDefs.size.values.map((size) => (\n              <Table.Row key={size}>\n                <Table.RowHeaderCell>size {size}</Table.RowHeaderCell>\n                <Table.Cell>\n                  <TabNavDemo size={size} />\n                </Table.Cell>\n              </Table.Row>\n            ))}\n          </Table.Body>\n        </Table.Root>\n        <Text as=\"p\" my=\"5\">\n          <Code>color</Code> can be set per instance:\n        </Text>\n        <details>\n          <summary>\n            <Text size=\"2\" color=\"gray\">\n              See color combinations\n            </Text>\n          </summary>\n          <Grid gap=\"5\" columns=\"3\" align=\"center\">\n            {tabsListPropDefs.color.values.map((color) => (\n              <Fragment key={color}>\n                <Text>{color}</Text>\n                <Flex>\n                  <TabNavDemo size=\"1\" color={color} />\n                </Flex>\n                <Flex>\n                  <TabNavDemo size=\"1\" color={color} highContrast />\n                </Flex>\n              </Fragment>\n            ))}\n          </Grid>\n        </details>\n      </DocsSectionBody>\n    </DocsSection>\n  );\n}\n"
  },
  {
    "path": "apps/playground/app/(themeable)/sink/tab-nav-demo.tsx",
    "content": "'use client';\nimport * as React from 'react';\nimport NextLink from 'next/link';\nimport { useSearchParams } from 'next/navigation';\nimport { TabNav } from '@radix-ui/themes';\n\nfunction TabNavDemoImpl(props: React.ComponentPropsWithRef<typeof TabNav.Root>) {\n  const params = useSearchParams();\n  const tab = params?.get('tab');\n  return (\n    <TabNav.Root {...props}>\n      <TabNav.Link asChild active={tab === 'account' || tab === null}>\n        <NextLink href=\"/sink?tab=account#tab-nav\" scroll={false}>\n          Account\n        </NextLink>\n      </TabNav.Link>\n      <TabNav.Link asChild active={tab === 'documents'}>\n        <NextLink href=\"/sink?tab=documents#tab-nav\" scroll={false}>\n          Documents\n        </NextLink>\n      </TabNav.Link>\n      <TabNav.Link asChild active={tab === 'settings'}>\n        <NextLink href=\"/sink?tab=settings#tab-nav\" scroll={false}>\n          Settings\n        </NextLink>\n      </TabNav.Link>\n\n      {/* without asChild */}\n      {/* <TabNav.Link href=\"/sink?tab=account#tab-nav\" active={tab === 'account' || tab === null}>\n              Account\n            </TabNav.Link>\n            <TabNav.Link href=\"/sink?tab=documents#tab-nav\" active={tab === 'documents'}>\n              Documents\n            </TabNav.Link>\n            <TabNav.Link href=\"/sink?tab=settings#tab-nav\" active={tab === 'settings'}>\n              Settings\n            </TabNav.Link> */}\n    </TabNav.Root>\n  );\n}\n\nexport function TabNavDemo(props: React.ComponentPropsWithRef<typeof TabNav.Root>) {\n  return (\n    <React.Suspense fallback={null}>\n      <TabNavDemoImpl {...props} />\n    </React.Suspense>\n  );\n}\n"
  },
  {
    "path": "apps/playground/app/(themeable)/sink/table/page.tsx",
    "content": "import { Flex, Grid, Text } from '@radix-ui/themes';\nimport { tableRootPropDefs } from '@radix-ui/themes/props';\nimport { DocsSection, DocsSectionBody, DocsSectionHeading } from '../docs-section';\nimport { TableExample } from '../_components';\n\nexport default function TablePage() {\n  return (\n    <DocsSection>\n      <DocsSectionHeading>Table</DocsSectionHeading>\n      <DocsSectionBody>\n        <Grid columns=\"2\" gap=\"5\" mb=\"3\">\n          <Flex direction=\"column\" gap=\"3\">\n            <Text color=\"gray\" size=\"2\">\n              surface\n            </Text>\n            <TableExample variant=\"surface\" />\n          </Flex>\n\n          <Flex direction=\"column\" gap=\"3\">\n            <Text color=\"gray\" size=\"2\">\n              ghost\n            </Text>\n            <TableExample />\n          </Flex>\n        </Grid>\n\n        <Grid columns=\"3\" gap=\"5\" mt=\"5\">\n          {tableRootPropDefs.size.values.map((size) => (\n            <div key={size}>\n              <Text as=\"p\" color=\"gray\" size=\"2\" mb=\"3\">\n                size {size}\n              </Text>\n              <TableExample size={size} variant=\"surface\" noEmail />\n            </div>\n          ))}\n        </Grid>\n      </DocsSectionBody>\n    </DocsSection>\n  );\n}\n"
  },
  {
    "path": "apps/playground/app/(themeable)/sink/tabs/page.tsx",
    "content": "import { Fragment } from 'react';\nimport { Text, Code, Grid, Flex, Box, Tabs, Table } from '@radix-ui/themes';\nimport { tabsListPropDefs } from '@radix-ui/themes/props';\nimport { DocsSection, DocsSectionBody, DocsSectionHeading } from '../docs-section';\n\nexport default function TabsPage() {\n  return (\n    <DocsSection>\n      <DocsSectionHeading>Tabs</DocsSectionHeading>\n      <DocsSectionBody>\n        <Table.Root>\n          <Table.Body>\n            {tabsListPropDefs.size.values.map((size) => (\n              <Table.Row key={size}>\n                <Table.RowHeaderCell>size {size}</Table.RowHeaderCell>\n                <Table.Cell>\n                  <Tabs.Root defaultValue=\"account\" activationMode=\"manual\">\n                    <Tabs.List size={size}>\n                      <Tabs.Trigger value=\"account\">Account</Tabs.Trigger>\n                      <Tabs.Trigger value=\"documents\">Documents</Tabs.Trigger>\n                      <Tabs.Trigger value=\"settings\">Settings</Tabs.Trigger>\n                    </Tabs.List>\n                    <Tabs.Content value=\"account\">\n                      <Box py=\"5\">Account</Box>\n                    </Tabs.Content>\n                    <Tabs.Content value=\"documents\">\n                      <Box py=\"5\">Documents</Box>\n                    </Tabs.Content>\n                    <Tabs.Content value=\"settings\">\n                      <Box py=\"5\">Settings</Box>\n                    </Tabs.Content>\n                  </Tabs.Root>\n                </Table.Cell>\n              </Table.Row>\n            ))}\n          </Table.Body>\n        </Table.Root>\n        <Text as=\"p\" my=\"5\">\n          <Code>color</Code> can be set per instance:\n        </Text>\n        <details>\n          <summary>\n            <Text size=\"2\" color=\"gray\">\n              See color combinations\n            </Text>\n          </summary>\n          <Grid gap=\"5\" columns=\"3\" align=\"center\">\n            {tabsListPropDefs.color.values.map((color) => (\n              <Fragment key={color}>\n                <Text>{color}</Text>\n                <Flex>\n                  <Tabs.Root defaultValue=\"account\" activationMode=\"manual\">\n                    <Tabs.List size=\"1\" color={color}>\n                      <Tabs.Trigger value=\"account\">Account</Tabs.Trigger>\n                      <Tabs.Trigger value=\"documents\">Documents</Tabs.Trigger>\n                      <Tabs.Trigger value=\"settings\">Settings</Tabs.Trigger>\n                    </Tabs.List>\n                    <Tabs.Content value=\"account\">\n                      <Box py=\"5\">Account</Box>\n                    </Tabs.Content>\n                    <Tabs.Content value=\"documents\">\n                      <Box py=\"5\">Documents</Box>\n                    </Tabs.Content>\n                    <Tabs.Content value=\"settings\">\n                      <Box py=\"5\">Settings</Box>\n                    </Tabs.Content>\n                  </Tabs.Root>\n                </Flex>\n                <Flex>\n                  <Tabs.Root defaultValue=\"account\" activationMode=\"manual\">\n                    <Tabs.List size=\"1\" color={color} highContrast>\n                      <Tabs.Trigger value=\"account\">Account</Tabs.Trigger>\n                      <Tabs.Trigger value=\"documents\">Documents</Tabs.Trigger>\n                      <Tabs.Trigger value=\"settings\">Settings</Tabs.Trigger>\n                    </Tabs.List>\n                    <Tabs.Content value=\"account\">\n                      <Box py=\"5\">Account</Box>\n                    </Tabs.Content>\n                    <Tabs.Content value=\"documents\">\n                      <Box py=\"5\">Documents</Box>\n                    </Tabs.Content>\n                    <Tabs.Content value=\"settings\">\n                      <Box py=\"5\">Settings</Box>\n                    </Tabs.Content>\n                  </Tabs.Root>\n                </Flex>\n              </Fragment>\n            ))}\n          </Grid>\n        </details>\n        <details>\n          <summary>\n            <Text size=\"2\" color=\"gray\">\n              See wrap & justify options\n            </Text>\n          </summary>\n\n          {tabsListPropDefs.wrap.values.map((wrap) => (\n            <Flex key={wrap} gap=\"6\">\n              {tabsListPropDefs.justify.values.map((justify) => (\n                <Box py=\"5\" width=\"320px\" key={justify}>\n                  <Tabs.Root defaultValue=\"file\" activationMode=\"manual\">\n                    <Tabs.List size=\"1\" wrap={wrap} justify={justify}>\n                      <Tabs.Trigger value=\"file\">File</Tabs.Trigger>\n                      <Tabs.Trigger value=\"edit\">Edit</Tabs.Trigger>\n                      <Tabs.Trigger value=\"view\">View</Tabs.Trigger>\n                      <Tabs.Trigger value=\"history\">History</Tabs.Trigger>\n                      <Tabs.Trigger value=\"bookmarks\">Bookmarks</Tabs.Trigger>\n                      <Tabs.Trigger value=\"profiles\">Profiles</Tabs.Trigger>\n                      <Tabs.Trigger value=\"tab\">Tab</Tabs.Trigger>\n                      <Tabs.Trigger value=\"window\">Window</Tabs.Trigger>\n                      <Tabs.Trigger value=\"help\">Help</Tabs.Trigger>\n                    </Tabs.List>\n                  </Tabs.Root>\n                </Box>\n              ))}\n            </Flex>\n          ))}\n        </details>\n      </DocsSectionBody>\n    </DocsSection>\n  );\n}\n"
  },
  {
    "path": "apps/playground/app/(themeable)/sink/text/page.tsx",
    "content": "import { Flex, Text } from '@radix-ui/themes';\nimport { textPropDefs } from '@radix-ui/themes/props';\nimport { DocsSection, DocsSectionBody, DocsSectionHeading } from '../docs-section';\nimport { upperFirst } from '../_utils';\n\nexport default function TextPage() {\n  return (\n    <DocsSection>\n      <DocsSectionHeading>Text</DocsSectionHeading>\n      <DocsSectionBody>\n        <Flex direction=\"column\" gap=\"4\">\n          {textPropDefs.size.values\n            .slice()\n            .reverse()\n            .map((size) => (\n              <Text key={size} size={size}>\n                The quick brown fox jumped{Number(size) < 9 && ' over the lazy dog'}\n              </Text>\n            ))}\n        </Flex>\n\n        <Flex direction=\"column\" gap=\"5\" mt=\"8\">\n          <Flex gap=\"5\">\n            {(['red', 'yellow', 'green', 'gray'] as const).map((color) => (\n              <Flex key={color} direction=\"column\" gap=\"1\">\n                <Text color={color}>{upperFirst(color)}</Text>\n                <Text color={color} highContrast>\n                  {upperFirst(color)}\n                </Text>\n              </Flex>\n            ))}\n          </Flex>\n\n          <Text as=\"p\" color=\"red\" highContrast>\n            This is some red text in high-contrast and this <Text color=\"blue\">word</Text> should be\n            blue.\n          </Text>\n\n          <Text as=\"p\" color=\"red\">\n            This is some red text and this <Text highContrast>word</Text> should be in\n            high-contrast.\n          </Text>\n        </Flex>\n      </DocsSectionBody>\n    </DocsSection>\n  );\n}\n"
  },
  {
    "path": "apps/playground/app/(themeable)/sink/text-area/page.tsx",
    "content": "import { Fragment } from 'react';\nimport { TextArea, Box, Flex, Text, Code, Table } from '@radix-ui/themes';\nimport { textAreaPropDefs } from '@radix-ui/themes/props';\nimport { DocsSection, DocsSectionBody, DocsSectionHeading } from '../docs-section';\nimport { accentColorsGrouped } from '../_utils';\n\nexport default function TextAreaPage() {\n  return (\n    <DocsSection>\n      <DocsSectionHeading>TextArea</DocsSectionHeading>\n      <DocsSectionBody>\n        <Table.Root>\n          <Table.Header>\n            <Table.Row>\n              <Table.ColumnHeaderCell />\n              {textAreaPropDefs.size.values.map((size) => (\n                <Table.ColumnHeaderCell key={size}>size {size}</Table.ColumnHeaderCell>\n              ))}\n              <Table.ColumnHeaderCell>disabled</Table.ColumnHeaderCell>\n              <Table.ColumnHeaderCell>read-only</Table.ColumnHeaderCell>\n            </Table.Row>\n          </Table.Header>\n          <Table.Body>\n            {textAreaPropDefs.variant.values.map((variant) => (\n              <Fragment key={variant}>\n                {[variant, '+ gray'].map((label) => (\n                  <Table.Row key={label}>\n                    <Table.RowHeaderCell>{label}</Table.RowHeaderCell>\n                    {textAreaPropDefs.size.values.map((size) => (\n                      <Table.Cell key={size}>\n                        <Flex direction=\"column\" gap=\"2\">\n                          <TextArea\n                            size={size}\n                            variant={variant}\n                            color={label === '+ gray' ? 'gray' : undefined}\n                            placeholder=\"Your feedback\"\n                          />\n\n                          <TextArea\n                            size={size}\n                            variant={variant}\n                            color={label === '+ gray' ? 'gray' : undefined}\n                            placeholder=\"Your feedback\"\n                            defaultValue=\"The quick brown fox jumped over the lazy dog\"\n                          />\n                        </Flex>\n                      </Table.Cell>\n                    ))}\n                    <Table.Cell>\n                      <Flex direction=\"column\" gap=\"2\">\n                        <TextArea\n                          variant={variant}\n                          color={label === '+ gray' ? 'gray' : undefined}\n                          placeholder=\"Your feedback\"\n                          disabled\n                        />\n\n                        <TextArea\n                          variant={variant}\n                          color={label === '+ gray' ? 'gray' : undefined}\n                          placeholder=\"Your feedback\"\n                          disabled\n                          defaultValue=\"The quick brown fox jumped over the lazy dog\"\n                        />\n                      </Flex>\n                    </Table.Cell>\n                    <Table.Cell>\n                      <Flex direction=\"column\" gap=\"2\">\n                        <TextArea\n                          variant={variant}\n                          color={label === '+ gray' ? 'gray' : undefined}\n                          placeholder=\"Your feedback\"\n                          readOnly\n                        />\n\n                        <TextArea\n                          variant={variant}\n                          color={label === '+ gray' ? 'gray' : undefined}\n                          placeholder=\"Your feedback\"\n                          readOnly\n                          defaultValue=\"The quick brown fox jumped over the lazy dog\"\n                        />\n                      </Flex>\n                    </Table.Cell>\n                  </Table.Row>\n                ))}\n              </Fragment>\n            ))}\n          </Table.Body>\n        </Table.Root>\n\n        <Text as=\"p\" my=\"5\">\n          <Code>radius</Code> can be set per instance:\n        </Text>\n\n        <details>\n          <summary>\n            <Text size=\"2\" color=\"gray\">\n              See specific radius examples\n            </Text>\n          </summary>\n          <Box mt=\"3\">\n            <Table.Root>\n              <Table.Header>\n                <Table.Row>\n                  <Table.ColumnHeaderCell />\n                  {textAreaPropDefs.size.values.map((size) => (\n                    <Table.ColumnHeaderCell key={size}>size {size}</Table.ColumnHeaderCell>\n                  ))}\n                </Table.Row>\n              </Table.Header>\n              <Table.Body>\n                {textAreaPropDefs.radius.values.map((radius) => (\n                  <Table.Row key={radius}>\n                    <Table.RowHeaderCell>{radius}</Table.RowHeaderCell>\n                    {textAreaPropDefs.size.values.map((size) => (\n                      <Table.Cell key={size}>\n                        <TextArea size={size} radius={radius} placeholder=\"Your feedback\" />\n                      </Table.Cell>\n                    ))}\n                  </Table.Row>\n                ))}\n              </Table.Body>\n            </Table.Root>\n          </Box>\n        </details>\n\n        <Text as=\"p\" my=\"5\">\n          <Code>color</Code> can be set per instance:\n        </Text>\n\n        <details>\n          <summary>\n            <Text size=\"2\" color=\"gray\">\n              See colors & variants combinations\n            </Text>\n          </summary>\n          {accentColorsGrouped.map(({ label, values }) => (\n            <Fragment key={label}>\n              <Text as=\"p\" weight=\"bold\" mt=\"6\" mb=\"4\">\n                {label}\n              </Text>\n              <Table.Root>\n                <Table.Header>\n                  <Table.Row>\n                    <Table.ColumnHeaderCell />\n                    {textAreaPropDefs.variant.values.map((variant) => (\n                      <Table.ColumnHeaderCell key={variant}>{variant}</Table.ColumnHeaderCell>\n                    ))}\n                  </Table.Row>\n                </Table.Header>\n                <Table.Body>\n                  {values.map((color) => (\n                    <Table.Row key={color}>\n                      <Table.RowHeaderCell>{color}</Table.RowHeaderCell>\n                      {textAreaPropDefs.variant.values.map((variant) => (\n                        <Table.Cell key={variant}>\n                          <TextArea variant={variant} color={color} placeholder=\"Your feedback\" />\n                        </Table.Cell>\n                      ))}\n                    </Table.Row>\n                  ))}\n                </Table.Body>\n              </Table.Root>\n            </Fragment>\n          ))}\n        </details>\n      </DocsSectionBody>\n    </DocsSection>\n  );\n}\n"
  },
  {
    "path": "apps/playground/app/(themeable)/sink/text-field/page.tsx",
    "content": "import { Fragment } from 'react';\nimport { InfoCircledIcon, Share2Icon, StarIcon } from '@radix-ui/react-icons';\nimport {\n  TextField,\n  IconButton,\n  Button,\n  Box,\n  Flex,\n  Text,\n  Code,\n  Separator,\n  Table,\n} from '@radix-ui/themes';\nimport { textFieldRootPropDefs } from '@radix-ui/themes/props';\nimport { DocsSection, DocsSectionBody, DocsSectionHeading } from '../docs-section';\nimport { accentColorsGrouped } from '../_utils';\n\nexport default function TextFieldPage() {\n  return (\n    <DocsSection>\n      <DocsSectionHeading>TextField</DocsSectionHeading>\n      <DocsSectionBody>\n        <Table.Root>\n          <Table.Header>\n            <Table.Row>\n              <Table.ColumnHeaderCell />\n              {textFieldRootPropDefs.size.values.map((size) => (\n                <Table.ColumnHeaderCell key={size}>size {size}</Table.ColumnHeaderCell>\n              ))}\n              <Table.ColumnHeaderCell>disabled</Table.ColumnHeaderCell>\n              <Table.ColumnHeaderCell>read-only</Table.ColumnHeaderCell>\n            </Table.Row>\n          </Table.Header>\n          <Table.Body>\n            {textFieldRootPropDefs.variant.values.map((variant) => (\n              <Fragment key={variant}>\n                {[variant, '+ gray'].map((label) => (\n                  <Table.Row key={label}>\n                    <Table.RowHeaderCell>{label}</Table.RowHeaderCell>\n                    {textFieldRootPropDefs.size.values.map((size) => (\n                      <Table.Cell key={size}>\n                        <Flex direction=\"column\" gap=\"2\">\n                          <TextField.Root\n                            size={size}\n                            variant={variant}\n                            color={label === '+ gray' ? 'gray' : undefined}\n                            placeholder=\"Your name\"\n                          />\n\n                          <TextField.Root\n                            size={size}\n                            variant={variant}\n                            color={label === '+ gray' ? 'gray' : undefined}\n                            placeholder=\"Your name\"\n                          >\n                            <TextField.Slot>\n                              <InfoCircledIcon />\n                            </TextField.Slot>\n                            <TextField.Slot>\n                              <IconButton\n                                size={size === '3' ? '2' : '1'}\n                                variant=\"ghost\"\n                                color=\"gray\"\n                              >\n                                <Share2Icon />\n                              </IconButton>\n                              <IconButton\n                                size={size === '3' ? '2' : '1'}\n                                variant=\"ghost\"\n                                color=\"gray\"\n                              >\n                                <StarIcon />\n                              </IconButton>\n                            </TextField.Slot>\n                          </TextField.Root>\n\n                          <TextField.Root\n                            size={size}\n                            variant={variant}\n                            color={label === '+ gray' ? 'gray' : undefined}\n                            placeholder=\"Your name\"\n                            defaultValue=\"The quick brown fox jumped over the lazy dog\"\n                          />\n                        </Flex>\n                      </Table.Cell>\n                    ))}\n                    <Table.Cell>\n                      <Flex direction=\"column\" gap=\"2\">\n                        <TextField.Root\n                          variant={variant}\n                          color={label === '+ gray' ? 'gray' : undefined}\n                          placeholder=\"Your name\"\n                          disabled\n                        />\n\n                        <TextField.Root\n                          disabled\n                          placeholder=\"Your name\"\n                          variant={variant}\n                          color={label === '+ gray' ? 'gray' : undefined}\n                        >\n                          <TextField.Slot>\n                            <InfoCircledIcon />\n                          </TextField.Slot>\n                          <TextField.Slot>\n                            <IconButton size=\"1\" variant=\"ghost\" color=\"gray\">\n                              <StarIcon />\n                            </IconButton>\n                          </TextField.Slot>\n                        </TextField.Root>\n\n                        <TextField.Root\n                          variant={variant}\n                          color={label === '+ gray' ? 'gray' : undefined}\n                          placeholder=\"Your name\"\n                          disabled\n                          defaultValue=\"The quick brown fox jumped over the lazy dog\"\n                        />\n                      </Flex>\n                    </Table.Cell>\n                    <Table.Cell>\n                      <Flex direction=\"column\" gap=\"2\">\n                        <TextField.Root\n                          variant={variant}\n                          color={label === '+ gray' ? 'gray' : undefined}\n                          placeholder=\"Your name\"\n                          readOnly\n                        />\n\n                        <TextField.Root\n                          readOnly\n                          placeholder=\"Your name\"\n                          variant={variant}\n                          color={label === '+ gray' ? 'gray' : undefined}\n                        >\n                          <TextField.Slot>\n                            <InfoCircledIcon />\n                          </TextField.Slot>\n                          <TextField.Slot>\n                            <IconButton size=\"1\" variant=\"ghost\" color=\"gray\">\n                              <StarIcon />\n                            </IconButton>\n                          </TextField.Slot>\n                        </TextField.Root>\n\n                        <TextField.Root\n                          variant={variant}\n                          color={label === '+ gray' ? 'gray' : undefined}\n                          placeholder=\"Your name\"\n                          readOnly\n                          defaultValue=\"The quick brown fox jumped over the lazy dog\"\n                        />\n                      </Flex>\n                    </Table.Cell>\n                  </Table.Row>\n                ))}\n              </Fragment>\n            ))}\n          </Table.Body>\n        </Table.Root>\n\n        <Separator my=\"8\" />\n        <Flex align=\"center\" gap=\"4\" mb=\"9\">\n          <Box>\n            <form action=\"/\">\n              <TextField.Root\n                mb=\"2\"\n                variant=\"classic\"\n                autoComplete=\"email\"\n                placeholder=\"Autofill (Email)\"\n                size=\"2\"\n                type=\"email\"\n              />\n              <TextField.Root\n                mb=\"2\"\n                variant=\"classic\"\n                autoComplete=\"current-password\"\n                placeholder=\"Autofill (Password)\"\n                size=\"2\"\n                type=\"password\"\n              />\n              <Button type=\"submit\">Submit</Button>\n            </form>\n          </Box>\n          <Box>\n            <form action=\"/\">\n              <TextField.Root\n                mb=\"2\"\n                variant=\"surface\"\n                autoComplete=\"email\"\n                placeholder=\"Autofill (Email)\"\n                size=\"2\"\n                type=\"email\"\n              />\n              <TextField.Root\n                mb=\"2\"\n                variant=\"surface\"\n                autoComplete=\"current-password\"\n                placeholder=\"Autofill (Password)\"\n                size=\"2\"\n                type=\"password\"\n              />\n              <Button type=\"submit\">Submit</Button>\n            </form>\n          </Box>\n          <Box>\n            <form action=\"/\">\n              <TextField.Root\n                mb=\"2\"\n                variant=\"soft\"\n                autoComplete=\"email\"\n                placeholder=\"Autofill (Email)\"\n                size=\"2\"\n                type=\"email\"\n              />\n              <TextField.Root\n                mb=\"2\"\n                variant=\"soft\"\n                autoComplete=\"current-password\"\n                placeholder=\"Autofill (Password)\"\n                size=\"2\"\n                type=\"password\"\n              />\n              <Button type=\"submit\">Submit</Button>\n            </form>\n          </Box>\n          <Box>\n            <form action=\"/\">\n              <TextField.Root\n                mb=\"2\"\n                variant=\"soft\"\n                color=\"gray\"\n                autoComplete=\"email\"\n                placeholder=\"Autofill (Email)\"\n                size=\"2\"\n                type=\"email\"\n              />\n              <TextField.Root\n                mb=\"2\"\n                variant=\"soft\"\n                color=\"gray\"\n                autoComplete=\"current-password\"\n                placeholder=\"Autofill (Password)\"\n                size=\"2\"\n                type=\"password\"\n              />\n              <Button type=\"submit\">Submit</Button>\n            </form>\n          </Box>\n        </Flex>\n\n        <Text as=\"p\" my=\"5\">\n          <Code>radius</Code> can be set per instance:\n        </Text>\n\n        <details>\n          <summary>\n            <Text size=\"2\" color=\"gray\">\n              See specific radius examples\n            </Text>\n          </summary>\n          <Box mt=\"3\">\n            <Table.Root>\n              <Table.Header>\n                <Table.Row>\n                  <Table.ColumnHeaderCell />\n                  {textFieldRootPropDefs.size.values.map((size) => (\n                    <Table.ColumnHeaderCell key={size}>size {size}</Table.ColumnHeaderCell>\n                  ))}\n                </Table.Row>\n              </Table.Header>\n              <Table.Body>\n                {textFieldRootPropDefs.radius.values.map((radius) => (\n                  <Table.Row key={radius}>\n                    <Table.RowHeaderCell>{radius}</Table.RowHeaderCell>\n                    {textFieldRootPropDefs.size.values.map((size) => (\n                      <Table.Cell key={size}>\n                        <TextField.Root size={size} radius={radius} placeholder=\"Your name\" />\n                      </Table.Cell>\n                    ))}\n                  </Table.Row>\n                ))}\n              </Table.Body>\n            </Table.Root>\n          </Box>\n        </details>\n\n        <Text as=\"p\" my=\"5\">\n          <Code>color</Code> can be set per instance:\n        </Text>\n\n        <details>\n          <summary>\n            <Text size=\"2\" color=\"gray\">\n              See colors & variants combinations\n            </Text>\n          </summary>\n          {accentColorsGrouped.map(({ label, values }) => (\n            <Fragment key={label}>\n              <Text as=\"p\" weight=\"bold\" mt=\"6\" mb=\"4\">\n                {label}\n              </Text>\n              <Table.Root>\n                <Table.Header>\n                  <Table.Row>\n                    <Table.ColumnHeaderCell />\n                    {textFieldRootPropDefs.variant.values.map((variant) => (\n                      <Table.ColumnHeaderCell key={variant}>{variant}</Table.ColumnHeaderCell>\n                    ))}\n                  </Table.Row>\n                </Table.Header>\n                <Table.Body>\n                  {values.map((color) => (\n                    <Table.Row key={color}>\n                      <Table.RowHeaderCell>{color}</Table.RowHeaderCell>\n                      {textFieldRootPropDefs.variant.values.map((variant) => (\n                        <Table.Cell key={variant}>\n                          <TextField.Root variant={variant} color={color} placeholder=\"Your name\" />\n                        </Table.Cell>\n                      ))}\n                    </Table.Row>\n                  ))}\n                </Table.Body>\n              </Table.Root>\n            </Fragment>\n          ))}\n        </details>\n      </DocsSectionBody>\n    </DocsSection>\n  );\n}\n"
  },
  {
    "path": "apps/playground/app/(themeable)/sink/tooltip/page.tsx",
    "content": "import { Button, Flex, Tooltip } from '@radix-ui/themes';\nimport { DocsSection, DocsSectionBody, DocsSectionHeading } from '../docs-section';\n\nexport default function TooltipPage() {\n  return (\n    <DocsSection>\n      <DocsSectionHeading>Tooltip</DocsSectionHeading>\n      <DocsSectionBody>\n        <Flex gap=\"5\">\n          <Tooltip content=\"The quick brown fox\">\n            <Button variant=\"solid\" size=\"1\">\n              Singleline\n            </Button>\n          </Tooltip>\n\n          <Tooltip content=\"The goal of typography is to relate font size, line height, and line width in a proportional way that maximizes beauty and makes reading easier and more pleasant.\">\n            <Button variant=\"solid\" size=\"1\">\n              Multiline\n            </Button>\n          </Tooltip>\n        </Flex>\n      </DocsSectionBody>\n    </DocsSection>\n  );\n}\n"
  },
  {
    "path": "apps/playground/app/(themeable)/sink/typography/page.tsx",
    "content": "import {\n  Blockquote,\n  Box,\n  Button,\n  Code,\n  Em,\n  Flex,\n  Grid,\n  Heading,\n  Kbd,\n  Link,\n  Quote,\n  Separator,\n  Strong,\n  Text,\n} from '@radix-ui/themes';\nimport { DocsSection, DocsSectionBody, DocsSectionHeading } from '../docs-section';\n\nexport default function TypographyPage() {\n  return (\n    <DocsSection>\n      <DocsSectionHeading>Typography</DocsSectionHeading>\n      <DocsSectionBody>\n        <Flex direction=\"column\" gap=\"5\" style={{ maxWidth: 688 }}>\n          <Text as=\"p\" size=\"3\">\n            The CSS rule <Code>-webkit-font-smoothing: antialiased;</Code> has been applied to all\n            fonts.google.com pages where fonts are rendered. This results in browsers using the{' '}\n            <Strong>greyscale antialiasing method</Strong> rather than default{' '}\n            <Em>subpixel rendering</Em> of fonts. Press <Kbd>⌘ Q</Kbd> to quit.{' '}\n            <Quote>\n              I believe this was probably introduced to get around inconsistencies in rendering\n              between browsers\n            </Quote>\n            , particular between Chrome and Safari on MacOS.\n          </Text>\n\n          <Heading size=\"9\">\n            The principles of the Typographic Craft are difficult to master\n          </Heading>\n\n          <Heading size=\"8\">\n            The goal of typography is to relate font size, line height, and line width\n          </Heading>\n\n          <Heading size=\"7\">\n            The goal of typography is to relate font size, line height, and line width in a\n            proportional way\n          </Heading>\n\n          <Heading size=\"6\">\n            The goal of typography is to relate font size, line height, and line width in a\n            proportional way\n          </Heading>\n\n          <Text color=\"gray\" size=\"5\">\n            The goal of typography is to relate font size, line height, and line width in a\n            proportional way that maximizes beauty and makes reading easier and more pleasant.\n          </Text>\n\n          <Text as=\"p\" size=\"4\">\n            The goal of typography is to relate font size, line height, and line width in a\n            proportional way that maximizes beauty and makes reading easier and more pleasant. The\n            question is: What proportion(s) will give us the best results? The golden ratio is often\n            observed in nature where beauty and utility intersect; perhaps we can use this\n            &quot;divine&quot; proportion to enhance these attributes in our typography.\n          </Text>\n\n          <Text as=\"p\" size=\"3\" style={{ maxWidth: 600 }}>\n            The goal of typography is to relate font size, line height, and line width in a\n            proportional way that maximizes beauty and makes reading easier and more pleasant. The\n            question is: What proportion(s) will give us the best results? The golden ratio is often\n            observed in nature where beauty and utility intersect; perhaps we can use this\n            &quot;divine&quot; proportion to enhance these attributes in our typography.\n          </Text>\n\n          <Grid columns=\"2\" gap=\"5\">\n            <Text as=\"p\" size=\"2\" style={{ maxWidth: 400 }}>\n              The goal of typography is to relate font size, line height, and line width in a\n              proportional way that maximizes beauty and makes reading easier and more pleasant. The\n              question is: What proportion(s) will give us the best results? The golden ratio is\n              often observed in nature where beauty and utility intersect; perhaps we can use this\n              &quot;divine&quot; proportion to enhance these attributes in our typography.\n            </Text>\n\n            <Text as=\"p\" size=\"1\" style={{ maxWidth: 400 }}>\n              The goal of typography is to relate font size, line height, and line width in a\n              proportional way that maximizes beauty and makes reading easier and more pleasant. The\n              question is: What proportion(s) will give us the best results? The golden ratio is\n              often observed in nature where beauty and utility intersect; perhaps we can use this\n              &quot;divine&quot; proportion to enhance these attributes in our typography.\n            </Text>\n          </Grid>\n\n          <Separator size=\"3\" my=\"5\" />\n\n          <Flex gap=\"4\" mb=\"5\">\n            <Link color=\"purple\" href=\"/\">\n              This is a link\n            </Link>\n            <Link color=\"gray\" href=\"/\">\n              This is a link\n            </Link>\n            <Link color=\"green\" href=\"/\">\n              This is a link\n            </Link>\n            <Link color=\"red\" href=\"/\">\n              This is a link\n            </Link>\n            <Link color=\"yellow\" href=\"/\">\n              This is a link\n            </Link>\n            <Link color=\"blue\" href=\"/\">\n              This is a link\n            </Link>\n          </Flex>\n          <Flex gap=\"4\" mb=\"5\">\n            <Link color=\"purple\" highContrast href=\"/\">\n              This is a link\n            </Link>\n            <Link color=\"gray\" highContrast href=\"/\">\n              This is a link\n            </Link>\n            <Link color=\"green\" highContrast href=\"/\">\n              This is a link\n            </Link>\n            <Link color=\"red\" highContrast href=\"/\">\n              This is a link\n            </Link>\n            <Link color=\"yellow\" highContrast href=\"/\">\n              This is a link\n            </Link>\n            <Link color=\"blue\" highContrast href=\"/\">\n              This is a link\n            </Link>\n          </Flex>\n\n          <Separator size=\"3\" my=\"5\" />\n\n          <Box style={{ width: '55%' }}>\n            <Heading size=\"5\" mb=\"2\">\n              The principles of the Typographic Craft are difficult to master\n            </Heading>\n            <Text as=\"p\" size=\"4\">\n              The goal of typography is to relate font size, line height, and line width in a\n              proportional way that maximizes beauty and makes reading easier and more pleasant.\n            </Text>\n          </Box>\n\n          <Grid columns=\"2\" gap=\"5\" mb=\"7\">\n            <Box>\n              <Heading size=\"4\" mb=\"2\">\n                The principles of the Typographic Craft are difficult to master\n              </Heading>\n              <Text as=\"p\" size=\"3\">\n                The goal of typography is to relate font size, line height, and line width in a\n                proportional way that maximizes beauty and makes reading easier and more pleasant.\n              </Text>\n            </Box>\n            <Box>\n              <Heading size=\"3\" mb=\"2\">\n                The principles of the Typographic Craft are difficult to master\n              </Heading>\n              <Text as=\"p\" size=\"2\">\n                The goal of typography is to relate font size, line height, and line width in a\n                proportional way that maximizes beauty and makes reading easier and more pleasant.\n              </Text>\n            </Box>\n          </Grid>\n\n          <Grid columns=\"3\" gap=\"5\">\n            <Box>\n              <Heading size=\"2\" mb=\"1\">\n                The principles of the Typographic Craft are difficult to master\n              </Heading>\n              <Text as=\"p\" size=\"2\">\n                The goal of typography is to relate font size, line height, and line width in a\n                proportional way that maximizes beauty and makes reading easier and more pleasant.\n              </Text>\n            </Box>\n            <Box>\n              <Heading size=\"2\" mb=\"1\">\n                The principles of the Typographic Craft are difficult to master\n              </Heading>\n              <Text as=\"p\" size=\"1\">\n                The goal of typography is to relate font size, line height, and line width in a\n                proportional way that maximizes beauty and makes reading easier and more pleasant.\n              </Text>\n            </Box>\n            <Box>\n              <Heading size=\"1\" mb=\"1\">\n                The principles of the Typographic Craft are difficult to master\n              </Heading>\n              <Text as=\"p\" size=\"1\">\n                The goal of typography is to relate font size, line height, and line width in a\n                proportional way that maximizes beauty and makes reading easier and more pleasant.\n              </Text>\n            </Box>\n          </Grid>\n\n          <Separator size=\"3\" my=\"5\" />\n\n          <Grid columns=\"2\" gap=\"5\">\n            <Box style={{ maxWidth: 250 }}>\n              <Text as=\"p\" size=\"1\" weight=\"bold\">\n                Quick Look\n              </Text>\n              <Text as=\"p\" color=\"gray\" size=\"1\">\n                Extensions from added software\n              </Text>\n            </Box>\n            <Box style={{ maxWidth: 250 }}>\n              <Text as=\"p\" size=\"2\" weight=\"bold\">\n                Quick Look\n              </Text>\n              <Text as=\"p\" color=\"gray\" size=\"1\">\n                Extensions from added software\n              </Text>\n            </Box>\n          </Grid>\n          <Grid columns=\"2\" gap=\"5\">\n            <Box style={{ maxWidth: 250 }}>\n              <Text as=\"p\" size=\"2\" weight=\"bold\">\n                Quick Look\n              </Text>\n              <Text as=\"p\" color=\"gray\" size=\"2\">\n                Extensions from added software\n              </Text>\n            </Box>\n            <Box style={{ maxWidth: 250 }}>\n              <Text as=\"p\" size=\"3\" weight=\"bold\">\n                Quick Look\n              </Text>\n              <Text as=\"p\" color=\"gray\" size=\"2\">\n                Extensions from added software\n              </Text>\n            </Box>\n          </Grid>\n\n          <Separator size=\"3\" my=\"5\" />\n\n          <Grid columns=\"2\" gap=\"5\">\n            <Box style={{ maxWidth: 250 }}>\n              <Text as=\"p\" size=\"1\" weight=\"bold\">\n                Quick Look\n              </Text>\n              <Text as=\"p\" color=\"gray\" size=\"1\">\n                Extensions from added software for something to do with Apple Finder.\n              </Text>\n            </Box>\n            <Box style={{ maxWidth: 250 }}>\n              <Text as=\"p\" size=\"2\" weight=\"bold\">\n                Quick Look\n              </Text>\n              <Text as=\"p\" color=\"gray\" size=\"1\">\n                Extensions from added software for something to do with Apple Finder.\n              </Text>\n            </Box>\n          </Grid>\n\n          <Grid columns=\"2\" gap=\"5\">\n            <Box style={{ maxWidth: 250 }}>\n              <Text as=\"p\" size=\"2\" weight=\"bold\">\n                Quick Look\n              </Text>\n              <Text as=\"p\" color=\"gray\" size=\"2\">\n                Extensions from added software for something to do with Apple Finder.\n              </Text>\n            </Box>\n            <Box style={{ maxWidth: 250 }}>\n              <Text as=\"p\" size=\"3\" weight=\"bold\">\n                Quick Look\n              </Text>\n              <Text as=\"p\" color=\"gray\" size=\"2\">\n                Extensions from added software for something to do with Apple Finder.\n              </Text>\n            </Box>\n          </Grid>\n\n          <Separator size=\"3\" my=\"5\" />\n\n          <Grid columns=\"2\" gap=\"5\">\n            <Box style={{ maxWidth: 250, textAlign: 'center' }}>\n              <Button variant=\"solid\" size=\"1\" mb=\"1\">\n                Quick Look\n              </Button>\n              <Text as=\"p\" color=\"gray\" size=\"1\">\n                Verification needed\n              </Text>\n            </Box>\n            <Box style={{ maxWidth: 250, textAlign: 'center' }}>\n              <Button variant=\"solid\" size=\"2\" mb=\"1\">\n                Quick Look\n              </Button>\n              <Text as=\"p\" color=\"gray\" size=\"1\">\n                Verification needed\n              </Text>\n            </Box>\n            <Box style={{ maxWidth: 250, textAlign: 'center' }}>\n              <Button variant=\"solid\" size=\"1\" mb=\"1\">\n                Quick Look\n              </Button>\n              <Text as=\"p\" color=\"gray\" size=\"2\">\n                Verification needed\n              </Text>\n            </Box>\n            <Box style={{ maxWidth: 250, textAlign: 'center' }}>\n              <Button variant=\"solid\" size=\"2\" mb=\"1\">\n                Quick Look\n              </Button>\n              <Text as=\"p\" color=\"gray\" size=\"2\">\n                Verification needed\n              </Text>\n            </Box>\n          </Grid>\n\n          <Separator size=\"3\" my=\"5\" />\n\n          <Blockquote>\n            The CSS rule <Code>-webkit-font-smoothing: antialiased;</Code> has been applied to all\n            fonts.google.com pages where fonts are rendered. This results in browsers using the{' '}\n            <strong>greyscale antialiasing method</strong> rather than default{' '}\n            <Em>subpixel rendering</Em> of fonts. Press <Kbd>⌘ Q</Kbd> to quit.{' '}\n            <Quote>\n              I believe this was probably introduced to get around inconsistencies in rendering\n              between browsers\n            </Quote>\n            , particular between Chrome and Safari on MacOS.\n          </Blockquote>\n        </Flex>\n      </DocsSectionBody>\n    </DocsSection>\n  );\n}\n"
  },
  {
    "path": "apps/playground/app/(themeable)/snapshot/image-card.tsx",
    "content": "'use client';\n\nimport * as React from 'react';\nimport { Tooltip, IconButton, Popover, Text, Button } from '@radix-ui/themes';\nimport { HeartFilledIcon, PlusIcon, DownloadIcon } from '@radix-ui/react-icons';\nimport styles from './page.module.css';\n\nfunction ImageCard({ id, alt }: { id: string; alt: string }) {\n  const [open, setOpen] = React.useState(false);\n  return (\n    <div className={styles.imageCard}>\n      <img\n        alt={alt}\n        src={`https://images.unsplash.com/photo-${id}?w=400&h=400&dpr=2&auto=format&fit=crop&w=2574&q=70`}\n        style={{\n          display: 'block',\n          width: '100%',\n          objectFit: 'cover',\n          height: 400,\n        }}\n      />\n      <div className={styles.imageCardOverlay} data-visible={open ? '' : undefined}>\n        <div style={{ position: 'absolute', top: 'var(--space-3)', right: 'var(--space-3)' }}>\n          <Tooltip content=\"Add to favorites\">\n            <IconButton\n              size=\"3\"\n              variant=\"solid\"\n              highContrast\n              radius=\"full\"\n              style={{ marginRight: 'var(--space-3)' }}\n            >\n              <HeartFilledIcon />\n            </IconButton>\n          </Tooltip>\n          <Tooltip content=\"Add to library\">\n            <IconButton size=\"3\" variant=\"solid\" highContrast radius=\"full\">\n              <PlusIcon />\n            </IconButton>\n          </Tooltip>\n        </div>\n        <Popover.Root open={open} onOpenChange={setOpen}>\n          <Tooltip content=\"Download\">\n            <Popover.Trigger>\n              <IconButton\n                size=\"3\"\n                variant=\"solid\"\n                highContrast\n                radius=\"full\"\n                style={{ position: 'absolute', bottom: 'var(--space-3)', right: 'var(--space-3)' }}\n              >\n                <DownloadIcon />\n              </IconButton>\n            </Popover.Trigger>\n          </Tooltip>\n          <Popover.Content align=\"center\" className={styles.downloadPopover}>\n            <div style={{ boxSizing: 'border-box', width: 200, padding: 'var(--space-4)' }}>\n              <Text as=\"p\" size=\"3\" style={{ marginBottom: 'var(--space-2)' }}>\n                Choose a size:\n              </Text>\n\n              <div\n                style={{\n                  display: 'flex',\n                  flexDirection: 'column',\n                  gap: 'var(--space-1)',\n                  marginBottom: 'var(--space-3)',\n                }}\n              >\n                {['Small', 'Medium', 'Large'].map((size) => (\n                  <label\n                    key={size}\n                    style={{ display: 'flex', alignItems: 'center', gap: 'var(--space-1)' }}\n                  >\n                    <input\n                      type=\"radio\"\n                      name=\"size\"\n                      value={size}\n                      defaultChecked\n                      style={{ marginTop: -1 }}\n                    />\n                    <Text size=\"2\">{size}</Text>\n                  </label>\n                ))}\n              </div>\n\n              <Popover.Close>\n                <Button variant=\"solid\" size=\"2\">\n                  Download <DownloadIcon />\n                </Button>\n              </Popover.Close>\n            </div>\n          </Popover.Content>\n        </Popover.Root>\n      </div>\n    </div>\n  );\n}\n\nexport { ImageCard };\n"
  },
  {
    "path": "apps/playground/app/(themeable)/snapshot/page.module.css",
    "content": ".search {\n  flex: 1;\n  display: flex;\n  align-items: center;\n  height: var(--space-7);\n  border-radius: max(var(--radius-3), var(--radius-full));\n  border: none;\n  background-color: var(--gray-a5);\n  padding: 0 var(--space-5);\n}\n.search:focus {\n  outline-color: var(--accent-9);\n}\n\n.grid {\n  display: grid;\n  padding: var(--space-5);\n  grid-template-columns: repeat(3, 1fr);\n  gap: var(--space-5);\n}\n\n.imageCard {\n  position: relative;\n}\n\n.imageCardOverlay {\n  position: absolute;\n  inset: 0px;\n  background-image: linear-gradient(-135deg, var(--black-a8), transparent);\n  padding: var(--space-3);\n  opacity: 0;\n}\n\n.imageCard:hover .imageCardOverlay,\n.imageCard:focus-within .imageCardOverlay,\n.imageCardOverlay[data-visible] {\n  opacity: 1;\n}\n\n.downloadPopover {\n  accent-color: var(--accent-9);\n}\n\n.container {\n  padding-left: var(--space-5);\n  padding-right: var(--space-5);\n}\n@media (min-width: 1600px) {\n  .container {\n    padding-left: 0;\n    padding-right: 0;\n  }\n}\n"
  },
  {
    "path": "apps/playground/app/(themeable)/snapshot/page.tsx",
    "content": "import * as React from 'react';\nimport { HamburgerMenuIcon, UploadIcon } from '@radix-ui/react-icons';\nimport {\n  Button,\n  Text,\n  Heading,\n  Link,\n  Separator,\n  IconButton,\n  DropdownMenu,\n  Dialog,\n  Container,\n} from '@radix-ui/themes';\nimport { ImageCard } from './image-card';\nimport { SnapshotLogo } from '../../../components/snapshot-logo';\nimport styles from './page.module.css';\n\nexport default function Snapshot() {\n  return (\n    <Container py=\"8\" mx=\"4\" size=\"4\">\n      <header>\n        <div\n          className={styles.container}\n          style={{\n            display: 'flex',\n            gap: 'var(--space-5)',\n            alignItems: 'center',\n            paddingTop: 'var(--space-3)',\n            paddingBottom: 'var(--space-3)',\n          }}\n        >\n          <SnapshotLogo width=\"140\" height=\"48\" style={{ marginLeft: -13 }} />\n          <input\n            className={styles.search}\n            type=\"search\"\n            placeholder=\"Search high-resolution images\"\n          />\n          <Link href=\"#\" size=\"2\" color=\"gray\" weight=\"bold\">\n            Explore\n          </Link>\n          <Link href=\"#\" size=\"2\" color=\"gray\" weight=\"bold\">\n            Favorites\n          </Link>\n          <Link href=\"#\" size=\"2\" color=\"gray\" weight=\"bold\">\n            Library\n          </Link>\n          <Separator orientation=\"vertical\" size=\"2\" />\n          <Link href=\"#\" size=\"2\" color=\"gray\" weight=\"bold\">\n            Login\n          </Link>\n          <SubmitPhotoDialog>\n            <Button variant=\"soft\" color=\"gray\">\n              Submit a photo\n            </Button>\n          </SubmitPhotoDialog>\n          <DropdownMenu.Root>\n            <DropdownMenu.Trigger>\n              <IconButton variant=\"ghost\" style={{ marginRight: 'calc(var(--space-1)*-1)' }}>\n                <HamburgerMenuIcon />\n              </IconButton>\n            </DropdownMenu.Trigger>\n            <DropdownMenu.Content variant=\"soft\" align=\"end\">\n              <DropdownMenu.Label>Account</DropdownMenu.Label>\n              <DropdownMenu.Item shortcut=\"⌘+P\">Profile</DropdownMenu.Item>\n              <DropdownMenu.Item shortcut=\"⌘+L\">Library</DropdownMenu.Item>\n              <DropdownMenu.Item>Settings</DropdownMenu.Item>\n              <DropdownMenu.Separator />\n              <DropdownMenu.Label>Snapshot</DropdownMenu.Label>\n              <DropdownMenu.Sub>\n                <DropdownMenu.SubTrigger>Company</DropdownMenu.SubTrigger>\n                <DropdownMenu.SubContent>\n                  <DropdownMenu.Item>About</DropdownMenu.Item>\n                  <DropdownMenu.Item>History</DropdownMenu.Item>\n                  <DropdownMenu.Item>Join the team</DropdownMenu.Item>\n                  <DropdownMenu.Item>Blog</DropdownMenu.Item>\n                  <DropdownMenu.Item>Press</DropdownMenu.Item>\n                  <DropdownMenu.Item>Contact us</DropdownMenu.Item>\n                  <DropdownMenu.Item>Help center</DropdownMenu.Item>\n                </DropdownMenu.SubContent>\n              </DropdownMenu.Sub>\n              <DropdownMenu.Sub>\n                <DropdownMenu.SubTrigger>Community</DropdownMenu.SubTrigger>\n                <DropdownMenu.SubContent>\n                  <DropdownMenu.Item>Become a contributor</DropdownMenu.Item>\n                  <DropdownMenu.Item>Topics</DropdownMenu.Item>\n                  <DropdownMenu.Item>Collections</DropdownMenu.Item>\n                  <DropdownMenu.Item>Trends</DropdownMenu.Item>\n                  <DropdownMenu.Item>Press</DropdownMenu.Item>\n                  <DropdownMenu.Item>Awards</DropdownMenu.Item>\n                  <DropdownMenu.Item>Stats</DropdownMenu.Item>\n                </DropdownMenu.SubContent>\n              </DropdownMenu.Sub>\n              <DropdownMenu.Separator />\n              <DropdownMenu.Item>Logout</DropdownMenu.Item>\n            </DropdownMenu.Content>\n          </DropdownMenu.Root>\n        </div>\n        <div\n          className={styles.container}\n          style={{ paddingTop: 'var(--space-3)', paddingBottom: 'var(--space-3)' }}\n        >\n          <nav style={{ display: 'flex', gap: 'var(--space-5)', alignItems: 'center' }}>\n            <Link href=\"#\" size=\"2\" color=\"gray\" weight=\"bold\">\n              Editorial\n            </Link>\n            <Separator orientation=\"vertical\" size=\"2\" />\n            <Link href=\"#\" size=\"2\" highContrast weight=\"bold\">\n              Green Life\n            </Link>\n            <Link href=\"#\" size=\"2\" color=\"gray\" weight=\"bold\">\n              Nature\n            </Link>\n            <Link href=\"#\" size=\"2\" color=\"gray\" weight=\"bold\">\n              Food & Drink\n            </Link>\n            <Link href=\"#\" size=\"2\" color=\"gray\" weight=\"bold\">\n              Portraits\n            </Link>\n            <Link href=\"#\" size=\"2\" color=\"gray\" weight=\"bold\">\n              Travel\n            </Link>\n            <Link href=\"#\" size=\"2\" color=\"gray\" weight=\"bold\">\n              Architecture & Interiors\n            </Link>\n            <Link href=\"#\" size=\"2\" color=\"gray\" weight=\"bold\">\n              Water\n            </Link>\n            <Link href=\"#\" size=\"2\" color=\"gray\" weight=\"bold\">\n              Summer\n            </Link>\n            <Link href=\"#\" size=\"2\" color=\"gray\" weight=\"bold\">\n              Animals\n            </Link>\n            <Link href=\"#\" size=\"2\" color=\"gray\" weight=\"bold\">\n              Fashion\n            </Link>\n          </nav>\n        </div>\n      </header>\n      <div style={{ position: 'relative' }}>\n        <img\n          alt=\"\"\n          style={{ display: 'block', width: '100%' }}\n          role=\"presentation\"\n          src=\"https://images.unsplash.com/photo-1675371788315-60fa0ef48267?ixlib=rb-4.0.3&ixid=MnwxMjA3fDB8MHxwaG90by1vZi10aGUtZGF5fHx8fGVufDB8fHx8&dpr=2&auto=format%2Ccompress&fit=crop&w=1599&h=594\"\n        />\n        <div\n          style={{\n            position: 'absolute',\n            inset: 0,\n            color: 'var(--white-a12)',\n            padding: 'var(--space-8) var(--space-5)',\n            backgroundImage: 'linear-gradient(135deg, var(--black-a11), transparent)',\n          }}\n        >\n          <div style={{ maxWidth: '35%' }}>\n            <Heading size=\"9\">Green Life</Heading>\n            <Text as=\"p\" style={{ marginBottom: 'var(--space-5)', color: 'var(--white-a11)' }}>\n              Curated by WorkOS\n            </Text>\n\n            <Text as=\"p\" weight=\"bold\" style={{ marginBottom: 'var(--space-2)' }}>\n              Lorem ipsum dolor sit amet, consectetur adipisicing elit. Expedita sed, sit recusandae\n              rem debitis maxime id cumque commodi iste alias optio ad beatae veniam fugiat dolorem\n              itaque aliquid! Nisi, exercitationem!\n            </Text>\n\n            <Text\n              as=\"p\"\n              size=\"2\"\n              style={{ marginBottom: 'var(--space-6)', color: 'var(--white-a11)' }}\n            >\n              Sponsored by Radix UI\n            </Text>\n\n            <SubmitPhotoDialog>\n              <Button variant=\"solid\" size=\"3\">\n                Submit a photo\n              </Button>\n            </SubmitPhotoDialog>\n          </div>\n        </div>\n      </div>\n      <div className={`${styles.container} ${styles.grid}`}>\n        {[\n          { id: '1601815560619-c5aeb2cb9297', alt: 'United States Capitol Building' },\n          { id: '1683223336014-06e82d91c95e', alt: 'Apple Park' },\n        ].map(({ id, alt }) => (\n          <ImageCard key={id} id={id} alt={alt} />\n        ))}\n        <div style={{ border: '1px solid var(--gray-7)', padding: 'var(--space-5)' }}>\n          <Text as=\"p\" size=\"4\" weight=\"bold\" style={{ marginBottom: 'var(--space-5)' }}>\n            Contributors\n          </Text>\n          <div style={{ display: 'flex', flexDirection: 'column', gap: 'var(--space-3)' }}>\n            {['Vlad Moroz', 'Benoît Grélard', 'Caitlyn Thomson', 'Andy Hook', 'Vitor Capretz'].map(\n              (name) => (\n                <div key={name}>\n                  <Text as=\"p\" size=\"2\" weight=\"bold\">\n                    {name}\n                  </Text>\n                  <Text as=\"p\" color=\"gray\" size=\"1\">\n                    {name.toLocaleLowerCase().replace(' ', '_')}\n                  </Text>\n                </div>\n              ),\n            )}\n          </div>\n        </div>\n        {[\n          { id: '1683490484039-c9839f9b2382', alt: 'A tall skyscraper at night' },\n          { id: '1683408581419-33e8f174ab10', alt: 'Lush plants in a greenhouse' },\n          {\n            id: '1683035094630-146fdff5b960',\n            alt: 'An apartment building with balconies covered in plants',\n          },\n          { id: '1683402971094-879a7d879171', alt: 'An office building covered in plants' },\n          {\n            id: '1588661565258-8ecc570d1403',\n            alt: 'An apartment building with balconies covered in plants',\n          },\n          { id: '1683402969702-4c7558fd41e3', alt: 'An office building covered in plants' },\n        ].map(({ id, alt }) => (\n          <ImageCard key={id} id={id} alt={alt} />\n        ))}\n      </div>\n    </Container>\n  );\n}\n\nfunction SubmitPhotoDialog({ children }: { children: React.ReactNode }) {\n  return (\n    <Dialog.Root>\n      <Dialog.Trigger>{children}</Dialog.Trigger>\n      <Dialog.Content style={{ maxWidth: 450 }}>\n        <div style={{ display: 'flex', flexDirection: 'column', gap: 'var(--space-3)' }}>\n          <Dialog.Title>Submit a photo</Dialog.Title>\n          <Dialog.Description size=\"2\">\n            Drop a photo here or click to browse your files.\n          </Dialog.Description>\n\n          <div\n            style={{\n              display: 'grid',\n              placeItems: 'center',\n              border: '2px dashed var(--accent-6)',\n              backgroundColor: 'var(--gray-a1)',\n              height: 100,\n              color: 'var(--gray-6)',\n            }}\n          >\n            <UploadIcon width=\"50\" height=\"50\" />\n          </div>\n\n          <div\n            style={{\n              display: 'flex',\n              alignSelf: 'end',\n              gap: 'var(--space-3)',\n              marginTop: 'var(--space-4)',\n            }}\n          >\n            <Dialog.Close>\n              <Button variant=\"soft\" color=\"gray\">\n                Cancel\n              </Button>\n            </Dialog.Close>\n            <Dialog.Close>\n              <Button variant=\"solid\">\n                Submit photo <UploadIcon />\n              </Button>\n            </Dialog.Close>\n          </div>\n        </div>\n      </Dialog.Content>\n    </Dialog.Root>\n  );\n}\n"
  },
  {
    "path": "apps/playground/app/(themeable)/test/appearance/page.tsx",
    "content": "import * as React from 'react';\nimport {\n  Theme,\n  Flex,\n  Heading,\n  Grid,\n  Text,\n  TextArea,\n  Switch,\n  Button,\n  Container,\n  Section,\n  Separator,\n} from '@radix-ui/themes';\n\nexport default function Test() {\n  return (\n    <Container py=\"8\" mx=\"4\">\n      <DocsSection title=\"Nested appearances test\">\n        <SampleNestedUI title=\"Global appearance\">\n          <Theme asChild appearance=\"dark\">\n            <SampleNestedUI title=\"Always dark\">\n              <Theme asChild appearance=\"light\">\n                <SampleNestedUI title=\"Always light\">\n                  <Theme asChild appearance=\"dark\">\n                    <SampleNestedUI title=\"Always dark\" />\n                  </Theme>\n                </SampleNestedUI>\n              </Theme>\n            </SampleNestedUI>\n          </Theme>\n        </SampleNestedUI>\n      </DocsSection>\n      <Separator size=\"4\" />\n      <DocsSection title=\"Nested colors test\">\n        <SampleNestedUI title=\"Global color\">\n          <Theme asChild accentColor=\"mint\">\n            <SampleNestedUI title=\"Always mint\">\n              <Theme asChild accentColor=\"amber\">\n                <SampleNestedUI title=\"Always amber\">\n                  <Theme asChild accentColor=\"tomato\">\n                    <SampleNestedUI title=\"Always tomato\" />\n                  </Theme>\n                </SampleNestedUI>\n              </Theme>\n            </SampleNestedUI>\n          </Theme>\n        </SampleNestedUI>\n      </DocsSection>\n      <Separator size=\"4\" />\n      <DocsSection title=\"Mixed nested themes test\">\n        <SampleNestedUI title=\"Global theme\">\n          <Theme asChild accentColor=\"mint\" appearance=\"dark\" radius=\"none\" scaling=\"90%\">\n            <SampleNestedUI title=\"Dark, Mint, no radius, 90%\">\n              <Theme asChild accentColor=\"amber\" appearance=\"light\" radius=\"full\" scaling=\"110%\">\n                <SampleNestedUI title=\"Light, Amber, full radius, 110%\">\n                  <Theme\n                    asChild\n                    accentColor=\"tomato\"\n                    appearance=\"dark\"\n                    radius=\"large\"\n                    scaling=\"100%\"\n                  >\n                    <SampleNestedUI title=\"Dark, Tomato, large radius, 100%\" />\n                  </Theme>\n                </SampleNestedUI>\n              </Theme>\n            </SampleNestedUI>\n          </Theme>\n        </SampleNestedUI>\n      </DocsSection>\n    </Container>\n  );\n}\n\nconst SampleNestedUI = React.forwardRef<\n  React.ComponentRef<typeof Flex>,\n  React.ComponentPropsWithoutRef<typeof Flex>\n>(({ children, title, ...props }, forwardedRef) => {\n  return (\n    <Flex\n      p=\"5\"\n      gap=\"9\"\n      {...props}\n      ref={forwardedRef}\n      style={{\n        boxShadow: '0 0 0 1px var(--gray-a6)',\n        borderRadius: 'var(--radius-2)',\n      }}\n    >\n      <div>\n        <Heading size=\"2\" trim=\"start\" mb=\"3\">\n          {title}\n        </Heading>\n        <Flex direction=\"column\" gap=\"3\">\n          <Grid gap=\"1\">\n            <Text as=\"p\" weight=\"bold\">\n              Feedback\n            </Text>\n            <TextArea variant=\"classic\" placeholder=\"Your feedback\" />\n          </Grid>\n          <Flex asChild justify=\"between\">\n            <label>\n              <Text color=\"gray\" size=\"2\">\n                Attach screenshot?\n              </Text>\n              <Switch size=\"1\" variant=\"classic\" defaultChecked highContrast />\n            </label>\n          </Flex>\n          <Grid columns=\"2\" gap=\"2\">\n            <Button variant=\"surface\">Back</Button>\n            <Button variant=\"classic\">Submit</Button>\n          </Grid>\n        </Flex>\n      </div>\n\n      {children}\n    </Flex>\n  );\n});\nSampleNestedUI.displayName = 'SampleNestedUI';\n\nfunction DocsSection({ title, children }: { title: string; children: React.ReactNode }) {\n  return (\n    <Section size=\"2\">\n      <Heading size=\"6\" weight=\"regular\" mb=\"4\" as=\"h2\">\n        {title}\n      </Heading>\n      {children}\n    </Section>\n  );\n}\n"
  },
  {
    "path": "apps/playground/app/(themeable)/test/as-child/page.tsx",
    "content": "import { StarIcon } from '@radix-ui/react-icons';\nimport {\n  AspectRatio,\n  Avatar,\n  Badge,\n  Box,\n  Button,\n  Card,\n  Code,\n  Container,\n  Em,\n  Flex,\n  IconButton,\n  Kbd,\n  Quote,\n  ScrollArea,\n  Section,\n  Strong,\n  TabNav,\n  Text,\n} from '@radix-ui/themes';\nimport NextLink from 'next/link';\n\nexport default function Test() {\n  return (\n    <Container py=\"8\" mx=\"4\">\n      <Section size=\"3\">\n        <Flex direction=\"column\" gap=\"6\">\n          <Flex direction={{ initial: 'column', sm: 'row' }} align=\"center\" gap=\"3\">\n            <Avatar fallback=\"A\" />\n\n            <Avatar asChild fallback=\"A\">\n              <button aria-label=\"Avatar button\">some child</button>\n            </Avatar>\n\n            <Avatar\n              fallback=\"A\"\n              src=\"https://images.unsplash.com/photo-1492633423870-43d1cd2775eb?&w=160&h=160&dpr=2&q=80\"\n            />\n\n            <Avatar\n              asChild\n              fallback=\"A\"\n              src=\"https://images.unsplash.com/photo-1492633423870-43d1cd2775eb?&w=160&h=160&dpr=2&q=80\"\n            >\n              <button aria-label=\"Avatar button\" />\n            </Avatar>\n\n            <Badge asChild>\n              <button>Badge as child</button>\n            </Badge>\n\n            <Card>Normal card</Card>\n\n            <Card asChild>\n              <button>Card as child</button>\n            </Card>\n\n            <Code asChild>\n              <button>Code as child</button>\n            </Code>\n          </Flex>\n\n          <Flex direction={{ initial: 'column', sm: 'row' }} gap=\"5\">\n            <TabNav.Root>\n              <TabNav.Link href=\"#\">Tab 1</TabNav.Link>\n              <TabNav.Link href=\"#\">Tab 2</TabNav.Link>\n              <TabNav.Link href=\"#\">Tab 3</TabNav.Link>\n            </TabNav.Root>\n\n            <TabNav.Root>\n              <TabNav.Link asChild>\n                <NextLink href=\"#\">Next Link 1</NextLink>\n              </TabNav.Link>\n              <TabNav.Link asChild>\n                <NextLink href=\"#\">Next Link 2</NextLink>\n              </TabNav.Link>\n              <TabNav.Link asChild>\n                <NextLink href=\"#\">Next Link 3</NextLink>\n              </TabNav.Link>\n            </TabNav.Root>\n          </Flex>\n\n          <Flex direction={{ initial: 'column', sm: 'row' }} gap=\"5\">\n            <Box width=\"300px\" height=\"300px\">\n              <ScrollArea asChild>\n                <section>\n                  <Text as=\"p\">\n                    The goal of typography is to relate font size, line height, and line width in a\n                    proportional way that maximizes beauty and makes reading easier and more\n                    pleasant. The question is: What proportion(s) will give us the best results? The\n                    golden ratio is often observed in nature where beauty and utility intersect;\n                    perhaps we can use this “divine” proportion to enhance these attributes in our\n                    typography.\n                  </Text>\n                  <Text as=\"p\" size=\"3\">\n                    The CSS rule <Code>-webkit-font-smoothing: antialiased;</Code> has been applied\n                    to all fonts.google.com pages where fonts are rendered. This results in browsers\n                    using the <Strong>grayscale antialiasing method</Strong> rather than default{' '}\n                    <Em>subpixel rendering</Em> of fonts. Press <Kbd>⌘ Q</Kbd> to quit.{' '}\n                    <Quote>\n                      I believe this was probably introduced to get around inconsistencies in\n                      rendering between browsers\n                    </Quote>\n                    , particular between Chrome and Safari on MacOS.\n                  </Text>\n                  <Box style={{ width: 300 }}>\n                    <AspectRatio ratio={1}>\n                      <img\n                        src=\"https://images.unsplash.com/photo-1683122803696-b3da13b071b2?&auto=format&fit=crop&w=400&q=80\"\n                        alt=\"A dragonfly on a branch\"\n                        style={{ objectFit: 'cover', width: '100%', height: '100%' }}\n                      />\n                    </AspectRatio>\n                  </Box>\n                </section>\n              </ScrollArea>\n            </Box>\n\n            <Box asChild>\n              <Text>Box as child</Text>\n            </Box>\n            <Box as=\"span\">Box as span</Box>\n            <Box>Box default</Box>\n          </Flex>\n\n          <Container asChild>\n            <section>Container as child</section>\n          </Container>\n\n          <Flex wrap=\"wrap\" width=\"100%\" gap=\"3\">\n            <Button asChild>\n              <NextLink href=\"#\">Button as child</NextLink>\n            </Button>\n            <Button loading asChild>\n              <NextLink href=\"#\">Loading button as child</NextLink>\n            </Button>\n            <Button disabled asChild>\n              <NextLink href=\"#\">Disabled button as child</NextLink>\n            </Button>\n            <IconButton aria-label=\"Icon button as child\" asChild>\n              <NextLink href=\"#\">\n                <StarIcon />\n              </NextLink>\n            </IconButton>\n            <IconButton aria-label=\"Loading icon button as child\" loading asChild>\n              <NextLink href=\"#\">\n                <StarIcon />\n              </NextLink>\n            </IconButton>\n            <IconButton aria-label=\"Disabled icon button as child\" disabled asChild>\n              <NextLink href=\"#\">\n                <StarIcon />\n              </NextLink>\n            </IconButton>\n          </Flex>\n\n          <Flex wrap=\"wrap\" width=\"100%\" gap=\"3\">\n            <Button asChild>\n              <div>Button as child</div>\n            </Button>\n            <Button loading asChild>\n              <div>Loading button as child</div>\n            </Button>\n            <Button disabled asChild>\n              <div>Disabled button as child</div>\n            </Button>\n            <IconButton aria-label=\"Icon button as child\" asChild>\n              <div>\n                <StarIcon />\n              </div>\n            </IconButton>\n            <IconButton aria-label=\"Loading icon button as child\" loading asChild>\n              <div>\n                <StarIcon />\n              </div>\n            </IconButton>\n            <IconButton aria-label=\"Disabled icon button as child\" disabled asChild>\n              <div>\n                <StarIcon />\n              </div>\n            </IconButton>\n          </Flex>\n        </Flex>\n      </Section>\n    </Container>\n  );\n}\n"
  },
  {
    "path": "apps/playground/app/(themeable)/test/avatar/page.tsx",
    "content": "import { Avatar, Flex, Container } from '@radix-ui/themes';\n\nexport default function Test() {\n  return (\n    <Container size=\"1\" py=\"8\" mx=\"4\">\n      <Flex align=\"center\" gap=\"3\">\n        <Avatar src=\"./api/avatar\" fallback=\"BG\" />\n        <Avatar src=\"#\" fallback=\"BG\" />\n        <Avatar fallback=\"BG\" />\n        <Avatar fallback={<CustomUserIcon />} />\n      </Flex>\n    </Container>\n  );\n}\n\nfunction CustomUserIcon() {\n  return (\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      viewBox=\"0 0 24 24\"\n      fill=\"currentColor\"\n      className=\"w-6 h-6\"\n    >\n      <path\n        fillRule=\"evenodd\"\n        d=\"M7.5 6a4.5 4.5 0 119 0 4.5 4.5 0 01-9 0zM3.751 20.105a8.25 8.25 0 0116.498 0 .75.75 0 01-.437.695A18.683 18.683 0 0112 22.5c-2.786 0-5.433-.608-7.812-1.7a.75.75 0 01-.437-.695z\"\n        clipRule=\"evenodd\"\n      />\n    </svg>\n  );\n}\n"
  },
  {
    "path": "apps/playground/app/(themeable)/test/checkbox-card/page.tsx",
    "content": "'use client';\nimport * as React from 'react';\nimport { Button, CheckboxCards, Code, Container, Grid, Heading, Section } from '@radix-ui/themes';\n\nexport default function Test() {\n  const [frameworks, setFrameworks] = React.useState(['next']);\n  const [frameworksForm, setFrameworksForm] = React.useState<FormDataEntryValue[]>([]);\n\n  function handleChange(event: React.ChangeEvent<HTMLFormElement>) {\n    const formData = new FormData(event.currentTarget);\n    const values = formData.getAll('frameworks');\n    setFrameworksForm(values);\n  }\n\n  return (\n    <Container size=\"1\" py=\"8\" mx=\"4\">\n      <Section size=\"3\">\n        <Grid columns=\"2\" gap=\"7\" align=\"start\">\n          <Grid gap=\"5\">\n            <Heading>Uncontrolled</Heading>\n            <CheckboxCards.Root name=\"frameworks\" defaultValue={['next']}>\n              <CheckboxCards.Item value=\"next\">Next.js</CheckboxCards.Item>\n              <CheckboxCards.Item value=\"remix\">Remix</CheckboxCards.Item>\n              <CheckboxCards.Item value=\"astro\">Astro</CheckboxCards.Item>\n              <CheckboxCards.Item value=\"htmx\">HTMX</CheckboxCards.Item>\n            </CheckboxCards.Root>\n          </Grid>\n\n          <Grid gap=\"5\">\n            <Heading>Controlled</Heading>\n            <CheckboxCards.Root name=\"frameworks\" value={frameworks} onValueChange={setFrameworks}>\n              <CheckboxCards.Item value=\"next\">Next.js</CheckboxCards.Item>\n              <CheckboxCards.Item value=\"remix\">Remix</CheckboxCards.Item>\n              <CheckboxCards.Item value=\"astro\">Astro</CheckboxCards.Item>\n              <CheckboxCards.Item value=\"htmx\">HTMX</CheckboxCards.Item>\n            </CheckboxCards.Root>\n\n            <div>\n              <Code size=\"2\">{JSON.stringify(frameworks)}</Code>\n            </div>\n          </Grid>\n\n          <form\n            onSubmit={(event) => {\n              handleChange(event);\n              event.preventDefault();\n            }}\n            onChange={handleChange}\n          >\n            <Grid gap=\"5\">\n              <Heading>Within Form</Heading>\n\n              <CheckboxCards.Root name=\"frameworks\">\n                <CheckboxCards.Item value=\"next\">Next.js</CheckboxCards.Item>\n                <CheckboxCards.Item value=\"remix\">Remix</CheckboxCards.Item>\n                <CheckboxCards.Item value=\"astro\">Astro</CheckboxCards.Item>\n                <CheckboxCards.Item value=\"htmx\">HTMX</CheckboxCards.Item>\n              </CheckboxCards.Root>\n\n              <Button type=\"submit\" size=\"3\">\n                Submit\n              </Button>\n\n              <div>\n                <Code size=\"2\">{JSON.stringify(frameworksForm)}</Code>\n              </div>\n            </Grid>\n          </form>\n        </Grid>\n      </Section>\n    </Container>\n  );\n}\n"
  },
  {
    "path": "apps/playground/app/(themeable)/test/classic-button/page.tsx",
    "content": "import * as React from 'react';\nimport { Container, Section, Flex, Button } from '@radix-ui/themes';\nimport { accentColors } from '@radix-ui/themes/props';\nimport { Pencil2Icon } from '@radix-ui/react-icons';\n\nexport default function Test() {\n  return (\n    <Container size=\"4\" py=\"8\" mx=\"4\">\n      <Section>\n        <Flex direction=\"column\" gap=\"2\">\n          {accentColors.map((color) => (\n            <Flex key={color} gap=\"2\">\n              <Button variant=\"classic\" color={color}>\n                <Pencil2Icon />\n                Edit\n              </Button>\n              <Button variant=\"classic\" color={color} highContrast>\n                <Pencil2Icon />\n                Edit\n              </Button>\n              <Button variant=\"solid\" color={color} ml=\"4\">\n                <Pencil2Icon />\n                Edit\n              </Button>\n              <Button variant=\"solid\" color={color} highContrast>\n                <Pencil2Icon />\n                Edit\n              </Button>\n              <Button variant=\"soft\" color={color} ml=\"4\">\n                <Pencil2Icon />\n                Edit\n              </Button>\n              <Button variant=\"soft\" color={color} highContrast>\n                <Pencil2Icon />\n                Edit\n              </Button>\n            </Flex>\n          ))}\n        </Flex>\n      </Section>\n    </Container>\n  );\n}\n"
  },
  {
    "path": "apps/playground/app/(themeable)/test/data-list/page.tsx",
    "content": "'use client';\nimport Link from 'next/link';\nimport {\n  Badge,\n  Box,\n  Button,\n  Container,\n  DataList,\n  Flex,\n  Heading,\n  IconButton,\n  RadioGroup,\n  Section,\n  Separator,\n  Text,\n} from '@radix-ui/themes';\nimport { StarFilledIcon, InfoCircledIcon } from '@radix-ui/react-icons';\nimport React from 'react';\n\nexport default function DataListPage() {\n  const [trim, setTrim] = React.useState<'normal' | 'start' | 'end' | 'both'>('normal');\n\n  return (\n    <>\n      <style\n        dangerouslySetInnerHTML={{\n          __html: `\n              [data-debug-layout=\"true\"] {\n                .rt-DataListRoot {\n                  outline: 1px dashed var(--purple-a7);\n                  outline-offset: -1px;\n                }\n\n                .rt-DataListItem {\n                  background-color: var(--red-a3);\n                }\n\n                .rt-DataListLabel {\n                  position: relative;\n\n                  &::before {\n                    content: '';\n                    position: absolute;\n                    height: 1px;\n                    left: 0;\n                    top: 15px;\n                    width: var(--container-2);\n                    pointer-events: none;\n                    background-color: var(--red-a8);\n                  }\n                }\n              }\n            `,\n        }}\n      />\n      <Container size=\"3\" py=\"8\" mx=\"4\">\n        <Container size=\"2\" mx=\"5\">\n          <Section>\n            <Flex gap=\"7\" direction=\"column\">\n              <Box>\n                <Text as=\"div\" size=\"2\" weight=\"bold\" mb=\"1\">\n                  Trim\n                </Text>\n                <RadioGroup.Root\n                  value={trim}\n                  onValueChange={(value: typeof trim) => setTrim(value)}\n                >\n                  <RadioGroup.Item value=\"normal\">Normal</RadioGroup.Item>\n                  <RadioGroup.Item value=\"start\">Start</RadioGroup.Item>\n                  <RadioGroup.Item value=\"end\">End</RadioGroup.Item>\n                  <RadioGroup.Item value=\"both\">Both</RadioGroup.Item>\n                </RadioGroup.Root>\n              </Box>\n              <Separator size=\"4\" />\n              <Flex direction=\"column\">\n                <Heading mb=\"4\" size=\"3\">\n                  Mixed content\n                </Heading>\n                <DataList.Root trim={trim}>\n                  <DataList.Item>\n                    <DataList.Label>Status</DataList.Label>\n                    <DataList.Value>\n                      <Badge color=\"green\" size=\"1\">\n                        Active\n                      </Badge>\n                    </DataList.Value>\n                  </DataList.Item>\n\n                  <DataList.Item align=\"center\">\n                    <DataList.Label>Name</DataList.Label>\n                    <DataList.Value>\n                      <Button size=\"1\">Add</Button>\n                    </DataList.Value>\n                  </DataList.Item>\n\n                  <DataList.Item align=\"center\">\n                    <DataList.Label>Flex</DataList.Label>\n                    <DataList.Value>\n                      <Flex align=\"center\" gap=\"2\">\n                        <IconButton size=\"1\" variant=\"soft\">\n                          <InfoCircledIcon />\n                        </IconButton>\n                        <Text>Info</Text>\n                      </Flex>\n                    </DataList.Value>\n                  </DataList.Item>\n\n                  <DataList.Item>\n                    <DataList.Label>Email</DataList.Label>\n                    <DataList.Value>vlad@workos.com</DataList.Value>\n                  </DataList.Item>\n\n                  <DataList.Item>\n                    <DataList.Label>Organization</DataList.Label>\n                    <DataList.Value>\n                      <Link href=\"https://workos.com\">WorkOS</Link>\n                    </DataList.Value>\n                  </DataList.Item>\n\n                  <DataList.Item>\n                    <DataList.Label>Long value</DataList.Label>\n                    <DataList.Value>\n                      Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla ac nisl et\n                      libero ultricies viverra quis vitae quam. Proin a feugiat metus.\n                    </DataList.Value>\n                  </DataList.Item>\n\n                  <DataList.Item>\n                    <DataList.Label>Truncated value</DataList.Label>\n                    <DataList.Value>\n                      <Text truncate>\n                        Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla ac nisl et\n                        libero ultricies viverra quis vitae quam. Proin a feugiat metus.\n                      </Text>\n                    </DataList.Value>\n                  </DataList.Item>\n\n                  <DataList.Item align=\"center\">\n                    <DataList.Label>Authentication methods</DataList.Label>\n                    <DataList.Value>\n                      <Flex gap=\"2\" align=\"center\">\n                        <StarFilledIcon />\n                        <StarFilledIcon />\n                      </Flex>\n                    </DataList.Value>\n                  </DataList.Item>\n\n                  <DataList.Item>\n                    <DataList.Label>Accent</DataList.Label>\n                    <DataList.Value>\n                      <Flex gap=\"2\" align=\"center\">\n                        <Box width=\"16px\" height=\"16px\" style={{ backgroundColor: 'royalblue' }} />\n                        <Text>Blue</Text>\n                      </Flex>\n                    </DataList.Value>\n                  </DataList.Item>\n\n                  <DataList.Item>\n                    <DataList.Label>Long value</DataList.Label>\n                    <DataList.Value>\n                      Sed luctus, est id feugiat blandit, sapien nisl lobortis arcu, eu malesuada\n                      nulla ex ut lorem. In odio nisl, consectetur id commodo vel, posuere eu risus.\n                    </DataList.Value>\n                  </DataList.Item>\n                </DataList.Root>\n              </Flex>\n\n              <Flex direction=\"column\">\n                <Heading mb=\"4\" size=\"3\">\n                  Mixed alignment\n                </Heading>\n\n                <Flex direction=\"column\" gap=\"6\">\n                  <DataList.Root trim={trim}>\n                    {[1, 2, 3].map((i) => (\n                      <DataList.Item align=\"baseline\" key={i}>\n                        <DataList.Label>Align</DataList.Label>\n                        <DataList.Value>Baseline</DataList.Value>\n                      </DataList.Item>\n                    ))}\n                  </DataList.Root>\n\n                  <DataList.Root trim={trim}>\n                    {[1, 2, 3].map((i) => (\n                      <DataList.Item align=\"start\" key={i}>\n                        <DataList.Label>Align</DataList.Label>\n                        <DataList.Value>Start</DataList.Value>\n                      </DataList.Item>\n                    ))}\n                  </DataList.Root>\n\n                  <DataList.Root trim={trim}>\n                    {[1, 2, 3].map((i) => (\n                      <DataList.Item align=\"stretch\" key={i}>\n                        <DataList.Label>Align</DataList.Label>\n                        <DataList.Value>Stretch</DataList.Value>\n                      </DataList.Item>\n                    ))}\n                  </DataList.Root>\n\n                  <DataList.Root trim={trim}>\n                    {[1, 2, 3].map((i) => (\n                      <DataList.Item align=\"center\" key={i}>\n                        <DataList.Label>Align</DataList.Label>\n                        <DataList.Value>Center</DataList.Value>\n                      </DataList.Item>\n                    ))}\n                  </DataList.Root>\n\n                  <DataList.Root trim={trim}>\n                    {[1, 2, 3].map((i) => (\n                      <DataList.Item align=\"end\" key={i}>\n                        <DataList.Label>Align</DataList.Label>\n                        <DataList.Value>End</DataList.Value>\n                      </DataList.Item>\n                    ))}\n                  </DataList.Root>\n\n                  <DataList.Root trim={trim}>\n                    {[1, 2, 3].map((i) => (\n                      <DataList.Item align=\"baseline\" key={i}>\n                        <DataList.Label>Align</DataList.Label>\n                        <DataList.Value>\n                          <Button size=\"2\">Baseline</Button>\n                        </DataList.Value>{' '}\n                      </DataList.Item>\n                    ))}\n                  </DataList.Root>\n\n                  <DataList.Root trim={trim}>\n                    {[1, 2, 3].map((i) => (\n                      <DataList.Item align=\"start\" key={i}>\n                        <DataList.Label>Align</DataList.Label>\n                        <DataList.Value>\n                          <Button size=\"2\">Start</Button>\n                        </DataList.Value>\n                      </DataList.Item>\n                    ))}\n                  </DataList.Root>\n\n                  <DataList.Root trim={trim}>\n                    {[1, 2, 3].map((i) => (\n                      <DataList.Item align=\"stretch\" key={i}>\n                        <DataList.Label>Align</DataList.Label>\n                        <DataList.Value>\n                          <Button size=\"2\">Stretch</Button>\n                        </DataList.Value>\n                      </DataList.Item>\n                    ))}\n                  </DataList.Root>\n\n                  <DataList.Root trim={trim}>\n                    {[1, 2, 3].map((i) => (\n                      <DataList.Item align=\"center\" key={i}>\n                        <DataList.Label>Align</DataList.Label>\n                        <DataList.Value>\n                          <Button size=\"2\">Center</Button>\n                        </DataList.Value>\n                      </DataList.Item>\n                    ))}\n                  </DataList.Root>\n\n                  <DataList.Root trim={trim}>\n                    {[1, 2, 3].map((i) => (\n                      <DataList.Item align=\"end\" key={i}>\n                        <DataList.Label>Align</DataList.Label>\n                        <DataList.Value>\n                          <Button size=\"2\">End</Button>\n                        </DataList.Value>\n                      </DataList.Item>\n                    ))}\n                  </DataList.Root>\n                </Flex>\n              </Flex>\n\n              <Flex direction=\"column\">\n                <Heading mb=\"4\" size=\"3\">\n                  Single item\n                </Heading>\n                <DataList.Root trim={trim}>\n                  <DataList.Item>\n                    <DataList.Label>Foo</DataList.Label>\n                    <DataList.Value>Bar</DataList.Value>\n                  </DataList.Item>\n                </DataList.Root>\n              </Flex>\n\n              <Flex direction=\"column\">\n                <Heading mb=\"4\" size=\"3\">\n                  Long labels\n                </Heading>\n                <DataList.Root trim={trim}>\n                  <DataList.Item>\n                    <DataList.Label>Name</DataList.Label>\n                    <DataList.Value>Vlad Moroz</DataList.Value>\n                  </DataList.Item>\n\n                  <DataList.Item>\n                    <DataList.Label>Email</DataList.Label>\n                    <DataList.Value>vlad@workos.com</DataList.Value>\n                  </DataList.Item>\n\n                  <DataList.Item>\n                    <DataList.Label>\n                      Lorem ipsum dolor sit amet consectetur adipscing elit\n                    </DataList.Label>\n                    <DataList.Value>\n                      <Link href=\"https://workos.com\">WorkOS</Link>\n                    </DataList.Value>\n                  </DataList.Item>\n\n                  <DataList.Item>\n                    <DataList.Label maxWidth=\"360px\">\n                      <Text truncate>\n                        Sed luctus, est id feugiat blandit, sapien nisl lobortis arcu, eu malesuada\n                        nulla ex ut lorem. In odio nisl, consectetur id commodo vel, posuere eu\n                        risus.\n                      </Text>\n                    </DataList.Label>\n                    <DataList.Value>← should be truncated</DataList.Value>\n                  </DataList.Item>\n                </DataList.Root>\n              </Flex>\n\n              <Flex direction=\"column\">\n                <Heading mb=\"4\" size=\"3\">\n                  Vertical layout\n                </Heading>\n                <DataList.Root orientation=\"vertical\" trim={trim}>\n                  <DataList.Item>\n                    <DataList.Label>Status</DataList.Label>\n                    <DataList.Value>\n                      <Badge color=\"green\" size=\"1\">\n                        Active\n                      </Badge>\n                    </DataList.Value>\n                  </DataList.Item>\n\n                  <DataList.Item>\n                    <DataList.Label>Name</DataList.Label>\n                    <DataList.Value>\n                      <Button size=\"1\">Add</Button>\n                    </DataList.Value>\n                  </DataList.Item>\n\n                  <DataList.Item>\n                    <DataList.Label>Flex</DataList.Label>\n                    <DataList.Value>\n                      <Flex align=\"center\" gap=\"2\">\n                        <IconButton size=\"1\" variant=\"soft\">\n                          <InfoCircledIcon />\n                        </IconButton>\n                        <Text>Info</Text>\n                      </Flex>\n                    </DataList.Value>\n                  </DataList.Item>\n\n                  <DataList.Item>\n                    <DataList.Label>Email</DataList.Label>\n                    <DataList.Value>vlad@workos.com</DataList.Value>\n                  </DataList.Item>\n\n                  <DataList.Item>\n                    <DataList.Label>Organization</DataList.Label>\n                    <DataList.Value>\n                      <Link href=\"https://workos.com\">WorkOS</Link>\n                    </DataList.Value>\n                  </DataList.Item>\n\n                  <DataList.Item>\n                    <DataList.Label>Long value</DataList.Label>\n                    <DataList.Value>\n                      Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla ac nisl et\n                      libero ultricies viverra quis vitae quam. Proin a feugiat metus.\n                    </DataList.Value>\n                  </DataList.Item>\n\n                  <DataList.Item>\n                    <DataList.Label>Truncated value</DataList.Label>\n                    <DataList.Value>\n                      <Text truncate>\n                        Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla ac nisl et\n                        libero ultricies viverra quis vitae quam. Proin a feugiat metus.\n                      </Text>\n                    </DataList.Value>\n                  </DataList.Item>\n\n                  <DataList.Item>\n                    <DataList.Label>Authentication methods</DataList.Label>\n                    <DataList.Value>\n                      <Flex gap=\"2\">\n                        <StarFilledIcon />\n                        <StarFilledIcon />\n                      </Flex>\n                    </DataList.Value>\n                  </DataList.Item>\n\n                  <DataList.Item>\n                    <DataList.Label>Long value</DataList.Label>\n                    <DataList.Value>\n                      Sed luctus, est id feugiat blandit, sapien nisl lobortis arcu, eu malesuada\n                      nulla ex ut lorem. In odio nisl, consectetur id commodo vel, posuere eu risus.\n                    </DataList.Value>\n                  </DataList.Item>\n                </DataList.Root>\n              </Flex>\n            </Flex>\n          </Section>\n        </Container>\n      </Container>\n    </>\n  );\n}\n"
  },
  {
    "path": "apps/playground/app/(themeable)/test/dialog/page.tsx",
    "content": "import { Flex, Button, Container, Dialog, Text } from '@radix-ui/themes';\nimport { Share2Icon } from '@radix-ui/react-icons';\n\nexport default function Test() {\n  return (\n    <Container py=\"8\" mx=\"4\">\n      <Flex direction=\"column\" align=\"center\" justify=\"center\" gap=\"5\">\n        <Text size=\"2\" color=\"gray\">\n          Align start\n        </Text>\n        <Flex align=\"center\" justify=\"center\" gap=\"5\" mb=\"5\">\n          <Dialog.Root>\n            <Dialog.Trigger>\n              <Button variant=\"solid\">Short dialog</Button>\n            </Dialog.Trigger>\n            <Dialog.Content align=\"start\" maxWidth=\"400px\">\n              <Dialog.Title>Short dialog</Dialog.Title>\n              <Dialog.Description>{shortText}</Dialog.Description>\n              <Flex gap=\"3\" mt=\"4\" justify=\"end\">\n                <Dialog.Close>\n                  <Button variant=\"soft\" color=\"gray\">\n                    Cancel\n                  </Button>\n                </Dialog.Close>\n                <Dialog.Close>\n                  <Button variant=\"solid\">\n                    Share <Share2Icon />\n                  </Button>\n                </Dialog.Close>\n              </Flex>\n            </Dialog.Content>\n          </Dialog.Root>\n\n          <Dialog.Root>\n            <Dialog.Trigger>\n              <Button variant=\"solid\">Long dialog</Button>\n            </Dialog.Trigger>\n            <Dialog.Content align=\"start\" maxWidth=\"400px\">\n              <Dialog.Title>Long dialog</Dialog.Title>\n              <Dialog.Description>{longText}</Dialog.Description>\n              <Flex gap=\"3\" mt=\"4\" justify=\"end\">\n                <Dialog.Close>\n                  <Button variant=\"soft\" color=\"gray\">\n                    Cancel\n                  </Button>\n                </Dialog.Close>\n                <Dialog.Close>\n                  <Button variant=\"solid\">\n                    Share <Share2Icon />\n                  </Button>\n                </Dialog.Close>\n              </Flex>\n            </Dialog.Content>\n          </Dialog.Root>\n\n          <Dialog.Root>\n            <Dialog.Trigger>\n              <Button variant=\"solid\">Fixed height dialog</Button>\n            </Dialog.Trigger>\n            <Dialog.Content align=\"start\" maxWidth=\"400px\" maxHeight=\"400px\">\n              <Dialog.Title>Fixed height dialog</Dialog.Title>\n              <Dialog.Description>{longText}</Dialog.Description>\n              <Flex gap=\"3\" mt=\"4\" justify=\"end\">\n                <Dialog.Close>\n                  <Button variant=\"soft\" color=\"gray\">\n                    Cancel\n                  </Button>\n                </Dialog.Close>\n                <Dialog.Close>\n                  <Button variant=\"solid\">\n                    Share <Share2Icon />\n                  </Button>\n                </Dialog.Close>\n              </Flex>\n            </Dialog.Content>\n          </Dialog.Root>\n        </Flex>\n\n        <Text size=\"2\" color=\"gray\">\n          Align center\n        </Text>\n        <Flex align=\"center\" justify=\"center\" gap=\"5\">\n          <Dialog.Root>\n            <Dialog.Trigger>\n              <Button variant=\"solid\">Short dialog</Button>\n            </Dialog.Trigger>\n            <Dialog.Content maxWidth=\"400px\">\n              <Dialog.Title>Short dialog</Dialog.Title>\n              <Dialog.Description>{shortText}</Dialog.Description>\n              <Flex gap=\"3\" mt=\"4\" justify=\"end\">\n                <Dialog.Close>\n                  <Button variant=\"soft\" color=\"gray\">\n                    Cancel\n                  </Button>\n                </Dialog.Close>\n                <Dialog.Close>\n                  <Button variant=\"solid\">\n                    Share <Share2Icon />\n                  </Button>\n                </Dialog.Close>\n              </Flex>\n            </Dialog.Content>\n          </Dialog.Root>\n\n          <Dialog.Root>\n            <Dialog.Trigger>\n              <Button variant=\"solid\">Long dialog</Button>\n            </Dialog.Trigger>\n            <Dialog.Content maxWidth=\"400px\">\n              <Dialog.Title>Long dialog</Dialog.Title>\n              <Dialog.Description>{longText}</Dialog.Description>\n              <Flex gap=\"3\" mt=\"4\" justify=\"end\">\n                <Dialog.Close>\n                  <Button variant=\"soft\" color=\"gray\">\n                    Cancel\n                  </Button>\n                </Dialog.Close>\n                <Dialog.Close>\n                  <Button variant=\"solid\">\n                    Share <Share2Icon />\n                  </Button>\n                </Dialog.Close>\n              </Flex>\n            </Dialog.Content>\n          </Dialog.Root>\n\n          <Dialog.Root>\n            <Dialog.Trigger>\n              <Button variant=\"solid\">Fixed height dialog</Button>\n            </Dialog.Trigger>\n            <Dialog.Content maxWidth=\"400px\" maxHeight=\"400px\">\n              <Dialog.Title>Fixed height dialog</Dialog.Title>\n              <Dialog.Description>{longText}</Dialog.Description>\n              <Flex gap=\"3\" mt=\"4\" justify=\"end\">\n                <Dialog.Close>\n                  <Button variant=\"soft\" color=\"gray\">\n                    Cancel\n                  </Button>\n                </Dialog.Close>\n                <Dialog.Close>\n                  <Button variant=\"solid\">\n                    Share <Share2Icon />\n                  </Button>\n                </Dialog.Close>\n              </Flex>\n            </Dialog.Content>\n          </Dialog.Root>\n        </Flex>\n      </Flex>\n    </Container>\n  );\n}\n\nconst shortText = `\n  Under a sky as clear as a sapphire, the audacious wind embarked on yet\n  another sojourn. Its origin, coupled with its destination, remained a\n  riddle, shelved in the library of the unknown.`;\n\nconst longText = `\n  The wind was a nomadic spirit; it was a tale that wrote itself, a song that\n  hummed its own melodies. It darted through the expansive, golden fields of\n  barley, teasing them into a gentle, alluring dance. Each undulation in the\n  sea of gold bore testimony to its presence, a spectral swirl spinning tales\n  only discernible to the observant. Her dancing companions, the swaying\n  barley stalks, blushed under the sun’s blazing gaze, casting long, wiggling\n  shadows that seemed to chase the wind in playful pursuit. The wind’s\n  transient signature, a secret between her and the barley sea, vanished\n  almost as swiftly as it appeared, leaving behind a tantalizing trace of what\n  had been. A comforting rhythm pulsated through the fields as the wind\n  orchestrated a symphony. It brushed past stalks with soft whispers,\n  sometimes a gentle caress, at times a playful push. Each stalk, a musician\n  in its own right, joined in an unplanned harmony that painted pure magic\n  under the cosmic dome. The wind, bearing the scent of a thousand journeys,\n  breathed life into stillness, animating the scene with an unseen paintbrush.\n  Pearls of morning dew clung to the blades of grass, disturbed by the wind’s\n  passing only to shatter into a scattered rainbow of flickering prisms. The\n  soft hum of rustling leaves sang eulogies of time passed, mixed with odes to\n  moments present and ballads yet untold. As the sun became a glowing ember in\n  the twilight canvas, the wind drew a silent veil over the day. In a hushed\n  lullaby to the moon, it meandered over the sleeping earth, stroking the\n  peaceful night with its invisible fingers. It was ceaseless, tireless - a\n  silent serenade of the world suspended in space and time. The wind, thus,\n  traveled through the fields: ever-changing yet constant, invisible yet\n  omnipresent, silent yet narrating stories. It wasn’t just the wind, but\n  life’s unseen narrator, a mysterious poet scripting verses on nature’s\n  endless parchment. The wind traveling through the fields wasn’t merely an\n  occurrence; it was a testament to life, a novel written by the unseen, read\n  by the felt.`;\n"
  },
  {
    "path": "apps/playground/app/(themeable)/test/grid-align-content/page.tsx",
    "content": "import * as React from 'react';\nimport { Grid, Text, Box, BoxProps, Code, Container } from '@radix-ui/themes';\n\nexport default function Test() {\n  return (\n    <Container py=\"8\" mx=\"4\">\n      <Grid columns=\"repeat(6, 1fr)\" gap=\"5\" height=\"100dvh\">\n        <Grid\n          height=\"100%\"\n          rows=\"repeat(3, min-content)\"\n          gap=\"1\"\n          alignContent=\"start\"\n          style={{ background: 'var(--blue-a3)' }}\n        >\n          <BlueBox>start</BlueBox>\n          <BlueBox />\n          <BlueBox />\n        </Grid>\n\n        <Grid\n          height=\"100%\"\n          rows=\"repeat(3, min-content)\"\n          gap=\"1\"\n          alignContent=\"center\"\n          style={{ background: 'var(--blue-a3)' }}\n        >\n          <BlueBox>center</BlueBox>\n          <BlueBox />\n          <BlueBox />\n        </Grid>\n\n        <Grid\n          height=\"100%\"\n          rows=\"repeat(3, min-content)\"\n          gap=\"1\"\n          alignContent=\"end\"\n          style={{ background: 'var(--blue-a3)' }}\n        >\n          <BlueBox>end</BlueBox>\n          <BlueBox />\n          <BlueBox />\n        </Grid>\n\n        <Grid\n          height=\"100%\"\n          rows=\"repeat(3, min-content)\"\n          gap=\"1\"\n          alignContent=\"between\"\n          style={{ background: 'var(--blue-a3)' }}\n        >\n          <BlueBox>between</BlueBox>\n          <BlueBox />\n          <BlueBox />\n        </Grid>\n\n        <Grid\n          height=\"100%\"\n          rows=\"repeat(3, min-content)\"\n          gap=\"1\"\n          alignContent=\"evenly\"\n          style={{ background: 'var(--blue-a3)' }}\n        >\n          <BlueBox>evenly</BlueBox>\n          <BlueBox />\n          <BlueBox />\n        </Grid>\n\n        <Grid\n          height=\"100%\"\n          rows=\"repeat(3, min-content)\"\n          gap=\"1\"\n          alignContent=\"around\"\n          style={{ background: 'var(--blue-a3)' }}\n        >\n          <BlueBox>around</BlueBox>\n          <BlueBox />\n          <BlueBox />\n        </Grid>\n      </Grid>\n    </Container>\n  );\n}\n\nconst BlueBox = ({ children, ...props }: BoxProps) => (\n  <Box p=\"3\" asChild style={{ background: 'var(--blue-9)', minHeight: '20vh' }} {...props}>\n    <Text size=\"2\" color=\"gray\" highContrast>\n      {children && <Code variant=\"ghost\">{children}</Code>}\n    </Text>\n  </Box>\n);\n"
  },
  {
    "path": "apps/playground/app/(themeable)/test/grid-align-self/page.tsx",
    "content": "import { Grid, Text, Box, BoxProps, Code, Container } from '@radix-ui/themes';\n\nexport default function Test() {\n  return (\n    <Container py=\"8\" mx=\"4\">\n      <Grid height=\"100vh\" columns=\"repeat(4, 1fr)\" gap=\"1\">\n        <BlueBox alignSelf=\"start\">start</BlueBox>\n        <BlueBox alignSelf=\"center\">center</BlueBox>\n        <BlueBox alignSelf=\"end\">end</BlueBox>\n        <BlueBox alignSelf=\"stretch\">stretch</BlueBox>\n      </Grid>\n    </Container>\n  );\n}\n\nconst BlueBox = ({ children, ...props }: BoxProps) => (\n  <Box p=\"3\" asChild style={{ background: 'var(--blue-9)', minHeight: '50%' }} {...props}>\n    <Text size=\"2\" color=\"gray\" highContrast>\n      <Code variant=\"ghost\">{children}</Code>\n    </Text>\n  </Box>\n);\n"
  },
  {
    "path": "apps/playground/app/(themeable)/test/grid-area/page.tsx",
    "content": "import { Grid, Text, Container, Section, Card, Box, Heading } from '@radix-ui/themes';\nimport { GridIcon } from '@radix-ui/react-icons';\n\nexport default function Test() {\n  return (\n    <Container py=\"8\" mx=\"4\">\n      <Section size=\"3\">\n        <Card size={{ initial: '3', sm: '4', lg: '5' }} style={{ maxWidth: 500 }} mx=\"auto\">\n          <Grid\n            align=\"center\"\n            gap={{ initial: '3', sm: '4', lg: '5' }}\n            columns=\"auto 1fr\"\n            rows=\"auto 1fr\"\n            areas='\"icon title\" \". body\"'\n          >\n            <Box asChild gridArea=\"icon\">\n              <GridIcon />\n            </Box>\n            <Box asChild gridArea=\"title\">\n              <Heading as=\"h4\">Named Areas</Heading>\n            </Box>\n            <Box asChild gridArea=\"body\">\n              <Text>\n                Lorem ipsum dolor sit amet consectetur adipisicing elit. Eum, officiis labore\n                commodi maxime corporis expedita aliquid vero praesentium dolor id numquam illo est,\n                quod voluptatem mollitia inventore pariatur odit delectus.\n              </Text>\n            </Box>\n          </Grid>\n        </Card>\n      </Section>\n\n      <Section size=\"3\">\n        <Card size={{ initial: '3', sm: '4', lg: '5' }} style={{ maxWidth: 500 }} mx=\"auto\">\n          <Grid\n            align=\"center\"\n            gap={{ initial: '3', sm: '4', lg: '5' }}\n            columns={{\n              initial: 'auto repeat(2, 1fr)',\n              sm: 'auto repeat(3, 1fr)',\n              lg: 'auto repeat(4, 1fr)',\n            }}\n            rows=\"auto 1fr\"\n          >\n            <Box asChild gridArea=\"'1 / 1 / span 1 / span 1'\">\n              <GridIcon />\n            </Box>\n            <Box\n              asChild\n              gridArea={{\n                initial: '1 / 2 / span 1 / span 2',\n                sm: '1 / 2 / span 1 / span 3',\n                lg: '1 / 2 / span 1 / span 4',\n              }}\n            >\n              <Heading as=\"h4\">Placed Areas</Heading>\n            </Box>\n            <Box\n              asChild\n              gridArea={{\n                initial: '2 / 2 / span 1 / span 2',\n                sm: '2 / 2 / span 1 / span 3',\n                lg: '2 / 2 / span 1 / span 4',\n              }}\n            >\n              <Text>\n                Lorem ipsum dolor sit amet consectetur adipisicing elit. Eum, officiis labore\n                commodi maxime corporis expedita aliquid vero praesentium dolor id numquam illo est,\n                quod voluptatem mollitia inventore pariatur odit delectus.\n              </Text>\n            </Box>\n          </Grid>\n        </Card>\n      </Section>\n    </Container>\n  );\n}\n"
  },
  {
    "path": "apps/playground/app/(themeable)/test/grid-justify-items/page.tsx",
    "content": "import { Grid, Text, Box, BoxProps, Code, Container } from '@radix-ui/themes';\n\nexport default function Test() {\n  return (\n    <Container py=\"8\" mx=\"4\">\n      <Grid rows=\"repeat(4, 1fr)\" gap=\"5\" height=\"100dvh\">\n        <Grid\n          height=\"100%\"\n          rows=\"repeat(3, 1fr)\"\n          gap=\"1\"\n          justifyItems=\"start\"\n          style={{ background: 'var(--blue-a3)' }}\n        >\n          <BlueBox>start</BlueBox>\n          <BlueBox />\n          <BlueBox />\n        </Grid>\n\n        <Grid\n          height=\"100%\"\n          rows=\"repeat(3, 1fr)\"\n          gap=\"1\"\n          justifyItems=\"center\"\n          style={{ background: 'var(--blue-a3)' }}\n        >\n          <BlueBox>center</BlueBox>\n          <BlueBox />\n          <BlueBox />\n        </Grid>\n\n        <Grid\n          height=\"100%\"\n          rows=\"repeat(3, 1fr)\"\n          gap=\"1\"\n          justifyItems=\"end\"\n          style={{ background: 'var(--blue-a3)' }}\n        >\n          <BlueBox>end</BlueBox>\n          <BlueBox />\n          <BlueBox />\n        </Grid>\n        <Grid\n          height=\"100%\"\n          rows=\"repeat(3, 1fr)\"\n          gap=\"1\"\n          justifyItems=\"stretch\"\n          style={{ background: 'var(--blue-a3)' }}\n        >\n          <BlueBox>stretch</BlueBox>\n          <BlueBox />\n          <BlueBox />\n        </Grid>\n      </Grid>\n    </Container>\n  );\n}\n\nconst BlueBox = ({ children, ...props }: BoxProps) => (\n  <Box p=\"3\" asChild style={{ background: 'var(--blue-9)', minWidth: '50dvw' }} {...props}>\n    <Text size=\"2\" color=\"gray\" highContrast>\n      {children && <Code variant=\"ghost\">{children}</Code>}\n    </Text>\n  </Box>\n);\n"
  },
  {
    "path": "apps/playground/app/(themeable)/test/grid-justify-self/page.tsx",
    "content": "import { Grid, Text, Box, type BoxProps, Code, Container } from '@radix-ui/themes';\n\nexport default function Test() {\n  return (\n    <Container py=\"8\" mx=\"4\">\n      <Grid height=\"100vh\" rows=\"repeat(4, 1fr)\" gap=\"1\">\n        <BlueBox justifySelf=\"start\">start</BlueBox>\n        <BlueBox justifySelf=\"center\">center</BlueBox>\n        <BlueBox justifySelf=\"end\">end</BlueBox>\n        <BlueBox justifySelf=\"stretch\">stretch</BlueBox>\n      </Grid>\n    </Container>\n  );\n}\n\nconst BlueBox = ({ children, ...props }: BoxProps) => (\n  <Box p=\"3\" asChild style={{ background: 'var(--blue-9)', minWidth: '50%' }} {...props}>\n    <Text size=\"2\" color=\"gray\" highContrast>\n      <Code variant=\"ghost\">{children}</Code>\n    </Text>\n  </Box>\n);\n"
  },
  {
    "path": "apps/playground/app/(themeable)/test/high-contrast/page.tsx",
    "content": "import {\n  Text,\n  Container,\n  Section,\n  Flex,\n  Heading,\n  Callout,\n  Link,\n  Code,\n  Blockquote,\n} from '@radix-ui/themes';\n\nexport default function Test() {\n  return (\n    <Container py=\"8\" mx=\"4\">\n      <Section size=\"3\">\n        <Flex direction=\"column\" gap=\"9\">\n          <Flex direction=\"column\" align=\"start\" gap=\"4\">\n            <Text color=\"gray\" size=\"2\">\n              No color\n            </Text>\n\n            <Heading>\n              Ambiguous voice of a heart which prefers <Code variant=\"ghost\">kiwi bowls</Code> to a{' '}\n              <Link href=\"#\">zephyr</Link>.\n            </Heading>\n\n            <Text>\n              Ambiguous voice of a heart which prefers <Code variant=\"ghost\">kiwi bowls</Code> to a{' '}\n              <Link href=\"#\">zephyr</Link>.\n            </Text>\n\n            <Text>\n              Ambiguous voice of a heart which prefers{' '}\n              <Link href=\"#\">\n                <Code variant=\"ghost\">kiwi bowls</Code>\n              </Link>{' '}\n              to a <Link href=\"#\">zephyr</Link>.\n            </Text>\n\n            <Text>\n              Ambiguous voice of a heart which{' '}\n              <Link href=\"#\">\n                prefers <Code variant=\"ghost\">kiwi bowls</Code>\n              </Link>{' '}\n              to a <Link href=\"#\">zephyr</Link>.\n            </Text>\n\n            <Blockquote>\n              Ambiguous voice of a heart which prefers <Code variant=\"ghost\">kiwi bowls</Code> to a{' '}\n              <Link href=\"#\">zephyr</Link>.\n            </Blockquote>\n\n            <Blockquote>\n              Ambiguous voice of a heart which prefers{' '}\n              <Link href=\"#\">\n                <Code variant=\"ghost\">kiwi bowls</Code>\n              </Link>{' '}\n              to a <Link href=\"#\">zephyr</Link>.\n            </Blockquote>\n\n            <Blockquote>\n              Ambiguous voice of a heart which{' '}\n              <Link href=\"#\">\n                prefers <Code variant=\"ghost\">kiwi bowls</Code>\n              </Link>{' '}\n              to a <Link href=\"#\">zephyr</Link>.\n            </Blockquote>\n\n            <Code size=\"2\">\n              Ambiguous voice of a heart which{' '}\n              <Link href=\"#\">\n                prefers <Code variant=\"ghost\">kiwi bowls</Code>\n              </Link>{' '}\n              to a <Link href=\"#\">zephyr</Link>.\n            </Code>\n\n            <Callout.Root>\n              <Callout.Text>\n                Ambiguous voice of a heart which prefers <Code variant=\"ghost\">kiwi bowls</Code> to\n                a <Link href=\"#\">zephyr</Link>.\n              </Callout.Text>\n            </Callout.Root>\n          </Flex>\n\n          <Flex direction=\"column\" align=\"start\" gap=\"4\">\n            <Text color=\"gray\" size=\"2\">\n              No color, high contrast\n            </Text>\n\n            <Heading highContrast>\n              Ambiguous voice of a heart which prefers <Code variant=\"ghost\">kiwi bowls</Code> to a{' '}\n              <Link href=\"#\">zephyr</Link>.\n            </Heading>\n\n            <Text highContrast>\n              Ambiguous voice of a heart which prefers <Code variant=\"ghost\">kiwi bowls</Code> to a{' '}\n              <Link href=\"#\">zephyr</Link>.\n            </Text>\n\n            <Text highContrast>\n              Ambiguous voice of a heart which prefers{' '}\n              <Link href=\"#\">\n                <Code variant=\"ghost\">kiwi bowls</Code>\n              </Link>{' '}\n              to a <Link href=\"#\">zephyr</Link>.\n            </Text>\n\n            <Text highContrast>\n              Ambiguous voice of a heart which{' '}\n              <Link href=\"#\">\n                prefers <Code variant=\"ghost\">kiwi bowls</Code>\n              </Link>{' '}\n              to a <Link href=\"#\">zephyr</Link>.\n            </Text>\n\n            <Blockquote highContrast>\n              Ambiguous voice of a heart which prefers <Code variant=\"ghost\">kiwi bowls</Code> to a{' '}\n              <Link href=\"#\">zephyr</Link>.\n            </Blockquote>\n\n            <Blockquote highContrast>\n              Ambiguous voice of a heart which prefers{' '}\n              <Link href=\"#\">\n                <Code variant=\"ghost\">kiwi bowls</Code>\n              </Link>{' '}\n              to a <Link href=\"#\">zephyr</Link>.\n            </Blockquote>\n\n            <Blockquote highContrast>\n              Ambiguous voice of a heart which{' '}\n              <Link href=\"#\">\n                prefers <Code variant=\"ghost\">kiwi bowls</Code>\n              </Link>{' '}\n              to a <Link href=\"#\">zephyr</Link>.\n            </Blockquote>\n\n            <Code highContrast size=\"2\">\n              Ambiguous voice of a heart which{' '}\n              <Link href=\"#\">\n                prefers <Code variant=\"ghost\">kiwi bowls</Code>\n              </Link>{' '}\n              to a <Link href=\"#\">zephyr</Link>.\n            </Code>\n\n            <Callout.Root highContrast>\n              <Callout.Text>\n                Ambiguous voice of a heart which prefers <Code variant=\"ghost\">kiwi bowls</Code> to\n                a <Link href=\"#\">zephyr</Link>.\n              </Callout.Text>\n            </Callout.Root>\n          </Flex>\n\n          <Flex direction=\"column\" align=\"start\" gap=\"4\">\n            <Text color=\"gray\" size=\"2\">\n              All inline components with {'color=\"indigo\"'}\n            </Text>\n\n            <Heading>\n              Ambiguous voice of a heart which prefers{' '}\n              <Code color=\"indigo\" variant=\"ghost\">\n                kiwi bowls\n              </Code>{' '}\n              to a{' '}\n              <Link color=\"indigo\" href=\"#\">\n                zephyr\n              </Link>\n              .\n            </Heading>\n\n            <Text>\n              Ambiguous voice of a heart which prefers{' '}\n              <Code color=\"indigo\" variant=\"ghost\">\n                kiwi bowls\n              </Code>{' '}\n              to a{' '}\n              <Link color=\"indigo\" href=\"#\">\n                zephyr\n              </Link>\n              .\n            </Text>\n\n            <Text>\n              Ambiguous voice of a heart which prefers{' '}\n              <Link color=\"indigo\" href=\"#\">\n                <Code color=\"indigo\" variant=\"ghost\">\n                  kiwi bowls\n                </Code>\n              </Link>{' '}\n              to a{' '}\n              <Link color=\"indigo\" href=\"#\">\n                zephyr\n              </Link>\n              .\n            </Text>\n\n            <Text>\n              Ambiguous voice of a heart which{' '}\n              <Link color=\"indigo\" href=\"#\">\n                prefers{' '}\n                <Code color=\"indigo\" variant=\"ghost\">\n                  kiwi bowls\n                </Code>\n              </Link>{' '}\n              to a{' '}\n              <Link color=\"indigo\" href=\"#\">\n                zephyr\n              </Link>\n              .\n            </Text>\n\n            <Blockquote>\n              Ambiguous voice of a heart which prefers{' '}\n              <Code color=\"indigo\" variant=\"ghost\">\n                kiwi bowls\n              </Code>{' '}\n              to a{' '}\n              <Link color=\"indigo\" href=\"#\">\n                zephyr\n              </Link>\n              .\n            </Blockquote>\n\n            <Blockquote>\n              Ambiguous voice of a heart which prefers{' '}\n              <Link color=\"indigo\" href=\"#\">\n                <Code color=\"indigo\" variant=\"ghost\">\n                  kiwi bowls\n                </Code>\n              </Link>{' '}\n              to a{' '}\n              <Link color=\"indigo\" href=\"#\">\n                zephyr\n              </Link>\n              .\n            </Blockquote>\n\n            <Blockquote>\n              Ambiguous voice of a heart which{' '}\n              <Link color=\"indigo\" href=\"#\">\n                prefers{' '}\n                <Code color=\"indigo\" variant=\"ghost\">\n                  kiwi bowls\n                </Code>\n              </Link>{' '}\n              to a{' '}\n              <Link color=\"indigo\" href=\"#\">\n                zephyr\n              </Link>\n              .\n            </Blockquote>\n\n            <Code size=\"2\">\n              Ambiguous voice of a heart which{' '}\n              <Link color=\"indigo\" href=\"#\">\n                prefers{' '}\n                <Code color=\"indigo\" variant=\"ghost\">\n                  kiwi bowls\n                </Code>\n              </Link>{' '}\n              to a{' '}\n              <Link color=\"indigo\" href=\"#\">\n                zephyr\n              </Link>\n              .\n            </Code>\n\n            <Callout.Root>\n              <Callout.Text>\n                Ambiguous voice of a heart which prefers{' '}\n                <Code color=\"indigo\" variant=\"ghost\">\n                  kiwi bowls\n                </Code>{' '}\n                to a{' '}\n                <Link color=\"indigo\" href=\"#\">\n                  zephyr\n                </Link>\n                .\n              </Callout.Text>\n            </Callout.Root>\n          </Flex>\n\n          <Flex direction=\"column\" align=\"start\" gap=\"4\">\n            <Text color=\"gray\" size=\"2\">\n              All inline components with high contrast\n            </Text>\n\n            <Heading>\n              Ambiguous voice of a heart which prefers{' '}\n              <Code highContrast variant=\"ghost\">\n                kiwi bowls\n              </Code>{' '}\n              to a{' '}\n              <Link highContrast href=\"#\">\n                zephyr\n              </Link>\n              .\n            </Heading>\n\n            <Text>\n              Ambiguous voice of a heart which prefers{' '}\n              <Code highContrast variant=\"ghost\">\n                kiwi bowls\n              </Code>{' '}\n              to a{' '}\n              <Link highContrast href=\"#\">\n                zephyr\n              </Link>\n              .\n            </Text>\n\n            <Text>\n              Ambiguous voice of a heart which prefers{' '}\n              <Link highContrast href=\"#\">\n                <Code highContrast variant=\"ghost\">\n                  kiwi bowls\n                </Code>\n              </Link>{' '}\n              to a{' '}\n              <Link highContrast href=\"#\">\n                zephyr\n              </Link>\n              .\n            </Text>\n\n            <Text>\n              Ambiguous voice of a heart which{' '}\n              <Link highContrast href=\"#\">\n                prefers{' '}\n                <Code highContrast variant=\"ghost\">\n                  kiwi bowls\n                </Code>\n              </Link>{' '}\n              to a{' '}\n              <Link highContrast href=\"#\">\n                zephyr\n              </Link>\n              .\n            </Text>\n\n            <Blockquote>\n              Ambiguous voice of a heart which prefers{' '}\n              <Code highContrast variant=\"ghost\">\n                kiwi bowls\n              </Code>{' '}\n              to a{' '}\n              <Link highContrast href=\"#\">\n                zephyr\n              </Link>\n              .\n            </Blockquote>\n\n            <Blockquote>\n              Ambiguous voice of a heart which prefers{' '}\n              <Link highContrast href=\"#\">\n                <Code highContrast variant=\"ghost\">\n                  kiwi bowls\n                </Code>\n              </Link>{' '}\n              to a{' '}\n              <Link highContrast href=\"#\">\n                zephyr\n              </Link>\n              .\n            </Blockquote>\n\n            <Blockquote>\n              Ambiguous voice of a heart which{' '}\n              <Link highContrast href=\"#\">\n                prefers{' '}\n                <Code highContrast variant=\"ghost\">\n                  kiwi bowls\n                </Code>\n              </Link>{' '}\n              to a{' '}\n              <Link highContrast href=\"#\">\n                zephyr\n              </Link>\n              .\n            </Blockquote>\n\n            <Code size=\"2\">\n              Ambiguous voice of a heart which{' '}\n              <Link highContrast href=\"#\">\n                prefers{' '}\n                <Code highContrast variant=\"ghost\">\n                  kiwi bowls\n                </Code>\n              </Link>{' '}\n              to a{' '}\n              <Link highContrast href=\"#\">\n                zephyr\n              </Link>\n              .\n            </Code>\n\n            <Callout.Root>\n              <Callout.Text>\n                Ambiguous voice of a heart which prefers{' '}\n                <Code highContrast variant=\"ghost\">\n                  kiwi bowls\n                </Code>{' '}\n                to a{' '}\n                <Link highContrast href=\"#\">\n                  zephyr\n                </Link>\n                .\n              </Callout.Text>\n            </Callout.Root>\n          </Flex>\n\n          <Flex direction=\"column\" align=\"start\" gap=\"4\">\n            <Text color=\"gray\" size=\"2\">\n              All inline components with {'color=\"indigo\"'} and high contrast\n            </Text>\n\n            <Heading>\n              Ambiguous voice of a heart which prefers{' '}\n              <Code color=\"indigo\" highContrast variant=\"ghost\">\n                kiwi bowls\n              </Code>{' '}\n              to a{' '}\n              <Link color=\"indigo\" highContrast href=\"#\">\n                zephyr\n              </Link>\n              .\n            </Heading>\n\n            <Text>\n              Ambiguous voice of a heart which prefers{' '}\n              <Code color=\"indigo\" highContrast variant=\"ghost\">\n                kiwi bowls\n              </Code>{' '}\n              to a{' '}\n              <Link color=\"indigo\" highContrast href=\"#\">\n                zephyr\n              </Link>\n              .\n            </Text>\n\n            <Text>\n              Ambiguous voice of a heart which prefers{' '}\n              <Link color=\"indigo\" highContrast href=\"#\">\n                <Code color=\"indigo\" highContrast variant=\"ghost\">\n                  kiwi bowls\n                </Code>\n              </Link>{' '}\n              to a{' '}\n              <Link color=\"indigo\" highContrast href=\"#\">\n                zephyr\n              </Link>\n              .\n            </Text>\n\n            <Text>\n              Ambiguous voice of a heart which{' '}\n              <Link color=\"indigo\" highContrast href=\"#\">\n                prefers{' '}\n                <Code color=\"indigo\" highContrast variant=\"ghost\">\n                  kiwi bowls\n                </Code>\n              </Link>{' '}\n              to a{' '}\n              <Link color=\"indigo\" highContrast href=\"#\">\n                zephyr\n              </Link>\n              .\n            </Text>\n\n            <Blockquote>\n              Ambiguous voice of a heart which prefers{' '}\n              <Code color=\"indigo\" highContrast variant=\"ghost\">\n                kiwi bowls\n              </Code>{' '}\n              to a{' '}\n              <Link color=\"indigo\" highContrast href=\"#\">\n                zephyr\n              </Link>\n              .\n            </Blockquote>\n\n            <Blockquote>\n              Ambiguous voice of a heart which prefers{' '}\n              <Link color=\"indigo\" highContrast href=\"#\">\n                <Code color=\"indigo\" highContrast variant=\"ghost\">\n                  kiwi bowls\n                </Code>\n              </Link>{' '}\n              to a{' '}\n              <Link color=\"indigo\" highContrast href=\"#\">\n                zephyr\n              </Link>\n              .\n            </Blockquote>\n\n            <Blockquote>\n              Ambiguous voice of a heart which{' '}\n              <Link color=\"indigo\" highContrast href=\"#\">\n                prefers{' '}\n                <Code color=\"indigo\" highContrast variant=\"ghost\">\n                  kiwi bowls\n                </Code>\n              </Link>{' '}\n              to a{' '}\n              <Link color=\"indigo\" highContrast href=\"#\">\n                zephyr\n              </Link>\n              .\n            </Blockquote>\n\n            <Code size=\"2\">\n              Ambiguous voice of a heart which{' '}\n              <Link color=\"indigo\" highContrast href=\"#\">\n                prefers{' '}\n                <Code color=\"indigo\" highContrast variant=\"ghost\">\n                  kiwi bowls\n                </Code>\n              </Link>{' '}\n              to a{' '}\n              <Link color=\"indigo\" highContrast href=\"#\">\n                zephyr\n              </Link>\n              .\n            </Code>\n\n            <Callout.Root>\n              <Callout.Text>\n                Ambiguous voice of a heart which prefers{' '}\n                <Code color=\"indigo\" highContrast variant=\"ghost\">\n                  kiwi bowls\n                </Code>{' '}\n                to a{' '}\n                <Link color=\"indigo\" highContrast href=\"#\">\n                  zephyr\n                </Link>\n                .\n              </Callout.Text>\n            </Callout.Root>\n          </Flex>\n\n          <Flex direction=\"column\" align=\"start\" gap=\"4\">\n            <Text color=\"gray\" size=\"2\">\n              All wrapping components with {'color=\"indigo\"'}\n            </Text>\n\n            <Heading color=\"indigo\">\n              Ambiguous voice of a heart which prefers <Code variant=\"ghost\">kiwi bowls</Code> to a{' '}\n              <Link href=\"#\">zephyr</Link>.\n            </Heading>\n\n            <Text color=\"indigo\">\n              Ambiguous voice of a heart which prefers <Code variant=\"ghost\">kiwi bowls</Code> to a{' '}\n              <Link href=\"#\">zephyr</Link>.\n            </Text>\n\n            <Text color=\"indigo\">\n              Ambiguous voice of a heart which prefers{' '}\n              <Link href=\"#\">\n                <Code variant=\"ghost\">kiwi bowls</Code>\n              </Link>{' '}\n              to a <Link href=\"#\">zephyr</Link>.\n            </Text>\n\n            <Text color=\"indigo\">\n              Ambiguous voice of a heart which{' '}\n              <Link href=\"#\">\n                prefers <Code variant=\"ghost\">kiwi bowls</Code>\n              </Link>{' '}\n              to a <Link href=\"#\">zephyr</Link>.\n            </Text>\n\n            <Blockquote color=\"indigo\">\n              Ambiguous voice of a heart which prefers <Code variant=\"ghost\">kiwi bowls</Code> to a{' '}\n              <Link href=\"#\">zephyr</Link>.\n            </Blockquote>\n\n            <Blockquote color=\"indigo\">\n              Ambiguous voice of a heart which prefers{' '}\n              <Link href=\"#\">\n                <Code variant=\"ghost\">kiwi bowls</Code>\n              </Link>{' '}\n              to a <Link href=\"#\">zephyr</Link>.\n            </Blockquote>\n\n            <Blockquote color=\"indigo\">\n              Ambiguous voice of a heart which{' '}\n              <Link href=\"#\">\n                prefers <Code variant=\"ghost\">kiwi bowls</Code>\n              </Link>{' '}\n              to a <Link href=\"#\">zephyr</Link>.\n            </Blockquote>\n\n            <Code size=\"2\" color=\"indigo\">\n              Ambiguous voice of a heart which{' '}\n              <Link href=\"#\">\n                prefers <Code variant=\"ghost\">kiwi bowls</Code>\n              </Link>{' '}\n              to a <Link href=\"#\">zephyr</Link>.\n            </Code>\n\n            <Callout.Root color=\"indigo\">\n              <Callout.Text>\n                Ambiguous voice of a heart which prefers <Code variant=\"ghost\">kiwi bowls</Code> to\n                a <Link href=\"#\">zephyr</Link>.\n              </Callout.Text>\n            </Callout.Root>\n          </Flex>\n\n          <Flex direction=\"column\" align=\"start\" gap=\"4\">\n            <Text color=\"gray\" size=\"2\">\n              All wrapping components with {'color=\"indigo\"'} and inline components with high\n              contrast\n            </Text>\n\n            <Heading color=\"indigo\">\n              Ambiguous voice of a heart which prefers{' '}\n              <Code highContrast variant=\"ghost\">\n                kiwi bowls\n              </Code>{' '}\n              to a{' '}\n              <Link highContrast href=\"#\">\n                zephyr\n              </Link>\n              .\n            </Heading>\n\n            <Text color=\"indigo\">\n              Ambiguous voice of a heart which prefers{' '}\n              <Code highContrast variant=\"ghost\">\n                kiwi bowls\n              </Code>{' '}\n              to a{' '}\n              <Link highContrast href=\"#\">\n                zephyr\n              </Link>\n              .\n            </Text>\n\n            <Text color=\"indigo\">\n              Ambiguous voice of a heart which prefers{' '}\n              <Link highContrast href=\"#\">\n                <Code highContrast variant=\"ghost\">\n                  kiwi bowls\n                </Code>\n              </Link>{' '}\n              to a{' '}\n              <Link highContrast href=\"#\">\n                zephyr\n              </Link>\n              .\n            </Text>\n\n            <Text color=\"indigo\">\n              Ambiguous voice of a heart which{' '}\n              <Link highContrast href=\"#\">\n                prefers{' '}\n                <Code highContrast variant=\"ghost\">\n                  kiwi bowls\n                </Code>\n              </Link>{' '}\n              to a{' '}\n              <Link highContrast href=\"#\">\n                zephyr\n              </Link>\n              .\n            </Text>\n\n            <Blockquote color=\"indigo\">\n              Ambiguous voice of a heart which prefers{' '}\n              <Code highContrast variant=\"ghost\">\n                kiwi bowls\n              </Code>{' '}\n              to a{' '}\n              <Link highContrast href=\"#\">\n                zephyr\n              </Link>\n              .\n            </Blockquote>\n\n            <Blockquote color=\"indigo\">\n              Ambiguous voice of a heart which prefers{' '}\n              <Link highContrast href=\"#\">\n                <Code variant=\"ghost\">kiwi bowls</Code>\n              </Link>{' '}\n              to a{' '}\n              <Link highContrast href=\"#\">\n                zephyr\n              </Link>\n              .\n            </Blockquote>\n\n            <Blockquote color=\"indigo\">\n              Ambiguous voice of a heart which{' '}\n              <Link highContrast href=\"#\">\n                prefers{' '}\n                <Code highContrast variant=\"ghost\">\n                  kiwi bowls\n                </Code>\n              </Link>{' '}\n              to a{' '}\n              <Link highContrast href=\"#\">\n                zephyr\n              </Link>\n              .\n            </Blockquote>\n\n            <Code size=\"2\" color=\"indigo\">\n              Ambiguous voice of a heart which{' '}\n              <Link highContrast href=\"#\">\n                prefers{' '}\n                <Code highContrast variant=\"ghost\">\n                  kiwi bowls\n                </Code>\n              </Link>{' '}\n              to a{' '}\n              <Link highContrast href=\"#\">\n                zephyr\n              </Link>\n              .\n            </Code>\n\n            <Callout.Root color=\"indigo\">\n              <Callout.Text>\n                Ambiguous voice of a heart which prefers{' '}\n                <Code highContrast variant=\"ghost\">\n                  kiwi bowls\n                </Code>{' '}\n                to a{' '}\n                <Link highContrast href=\"#\">\n                  zephyr\n                </Link>\n                .\n              </Callout.Text>\n            </Callout.Root>\n          </Flex>\n\n          <Flex direction=\"column\" align=\"start\" gap=\"4\">\n            <Text color=\"gray\" size=\"2\">\n              All wrapping components with {'color=\"indigo\"'} and inline components with{' '}\n              {'color=\"indigo\"'}\n            </Text>\n\n            <Heading color=\"indigo\">\n              Ambiguous voice of a heart which prefers{' '}\n              <Code color=\"indigo\" variant=\"ghost\">\n                kiwi bowls\n              </Code>{' '}\n              to a{' '}\n              <Link color=\"indigo\" href=\"#\">\n                zephyr\n              </Link>\n              .\n            </Heading>\n\n            <Text color=\"indigo\">\n              Ambiguous voice of a heart which prefers{' '}\n              <Code color=\"indigo\" variant=\"ghost\">\n                kiwi bowls\n              </Code>{' '}\n              to a{' '}\n              <Link color=\"indigo\" href=\"#\">\n                zephyr\n              </Link>\n              .\n            </Text>\n\n            <Text color=\"indigo\">\n              Ambiguous voice of a heart which prefers{' '}\n              <Link color=\"indigo\" href=\"#\">\n                <Code color=\"indigo\" variant=\"ghost\">\n                  kiwi bowls\n                </Code>\n              </Link>{' '}\n              to a{' '}\n              <Link color=\"indigo\" href=\"#\">\n                zephyr\n              </Link>\n              .\n            </Text>\n\n            <Text color=\"indigo\">\n              Ambiguous voice of a heart which{' '}\n              <Link color=\"indigo\" href=\"#\">\n                prefers{' '}\n                <Code color=\"indigo\" variant=\"ghost\">\n                  kiwi bowls\n                </Code>\n              </Link>{' '}\n              to a{' '}\n              <Link color=\"indigo\" href=\"#\">\n                zephyr\n              </Link>\n              .\n            </Text>\n\n            <Blockquote color=\"indigo\">\n              Ambiguous voice of a heart which prefers{' '}\n              <Code color=\"indigo\" variant=\"ghost\">\n                kiwi bowls\n              </Code>{' '}\n              to a{' '}\n              <Link color=\"indigo\" href=\"#\">\n                zephyr\n              </Link>\n              .\n            </Blockquote>\n\n            <Blockquote color=\"indigo\">\n              Ambiguous voice of a heart which prefers{' '}\n              <Link color=\"indigo\" href=\"#\">\n                <Code variant=\"ghost\">kiwi bowls</Code>\n              </Link>{' '}\n              to a{' '}\n              <Link color=\"indigo\" href=\"#\">\n                zephyr\n              </Link>\n              .\n            </Blockquote>\n\n            <Blockquote color=\"indigo\">\n              Ambiguous voice of a heart which{' '}\n              <Link color=\"indigo\" href=\"#\">\n                prefers{' '}\n                <Code color=\"indigo\" variant=\"ghost\">\n                  kiwi bowls\n                </Code>\n              </Link>{' '}\n              to a{' '}\n              <Link color=\"indigo\" href=\"#\">\n                zephyr\n              </Link>\n              .\n            </Blockquote>\n\n            <Code size=\"2\" color=\"indigo\">\n              Ambiguous voice of a heart which{' '}\n              <Link color=\"indigo\" href=\"#\">\n                prefers{' '}\n                <Code color=\"indigo\" variant=\"ghost\">\n                  kiwi bowls\n                </Code>\n              </Link>{' '}\n              to a{' '}\n              <Link color=\"indigo\" href=\"#\">\n                zephyr\n              </Link>\n              .\n            </Code>\n\n            <Callout.Root color=\"indigo\">\n              <Callout.Text>\n                Ambiguous voice of a heart which prefers{' '}\n                <Code color=\"indigo\" variant=\"ghost\">\n                  kiwi bowls\n                </Code>{' '}\n                to a{' '}\n                <Link color=\"indigo\" href=\"#\">\n                  zephyr\n                </Link>\n                .\n              </Callout.Text>\n            </Callout.Root>\n          </Flex>\n\n          <Flex direction=\"column\" align=\"start\" gap=\"4\">\n            <Text color=\"gray\" size=\"2\">\n              All wrapping components with high contrast\n            </Text>\n\n            <Heading highContrast>\n              Ambiguous voice of a heart which prefers <Code variant=\"ghost\">kiwi bowls</Code> to a{' '}\n              <Link href=\"#\">zephyr</Link>.\n            </Heading>\n\n            <Text highContrast>\n              Ambiguous voice of a heart which prefers <Code variant=\"ghost\">kiwi bowls</Code> to a{' '}\n              <Link href=\"#\">zephyr</Link>.\n            </Text>\n\n            <Text highContrast>\n              Ambiguous voice of a heart which prefers{' '}\n              <Link href=\"#\">\n                <Code variant=\"ghost\">kiwi bowls</Code>\n              </Link>{' '}\n              to a <Link href=\"#\">zephyr</Link>.\n            </Text>\n\n            <Text highContrast>\n              Ambiguous voice of a heart which{' '}\n              <Link href=\"#\">\n                prefers <Code variant=\"ghost\">kiwi bowls</Code>\n              </Link>{' '}\n              to a <Link href=\"#\">zephyr</Link>.\n            </Text>\n\n            <Blockquote highContrast>\n              Ambiguous voice of a heart which prefers <Code variant=\"ghost\">kiwi bowls</Code> to a{' '}\n              <Link href=\"#\">zephyr</Link>.\n            </Blockquote>\n\n            <Blockquote highContrast>\n              Ambiguous voice of a heart which prefers{' '}\n              <Link href=\"#\">\n                <Code variant=\"ghost\">kiwi bowls</Code>\n              </Link>{' '}\n              to a <Link href=\"#\">zephyr</Link>.\n            </Blockquote>\n\n            <Blockquote highContrast>\n              Ambiguous voice of a heart which{' '}\n              <Link href=\"#\">\n                prefers <Code variant=\"ghost\">kiwi bowls</Code>\n              </Link>{' '}\n              to a <Link href=\"#\">zephyr</Link>.\n            </Blockquote>\n\n            <Code size=\"2\" highContrast>\n              Ambiguous voice of a heart which{' '}\n              <Link href=\"#\">\n                prefers <Code variant=\"ghost\">kiwi bowls</Code>\n              </Link>{' '}\n              to a <Link href=\"#\">zephyr</Link>.\n            </Code>\n\n            <Callout.Root highContrast>\n              <Callout.Text>\n                Ambiguous voice of a heart which prefers <Code variant=\"ghost\">kiwi bowls</Code> to\n                a <Link href=\"#\">zephyr</Link>.\n              </Callout.Text>\n            </Callout.Root>\n          </Flex>\n\n          <Flex direction=\"column\" align=\"start\" gap=\"4\">\n            <Text color=\"gray\" size=\"2\">\n              All wrapping components with {'color=\"indigo\"'} and high contrast\n            </Text>\n\n            <Heading color=\"indigo\" highContrast>\n              Ambiguous voice of a heart which prefers <Code variant=\"ghost\">kiwi bowls</Code> to a{' '}\n              <Link href=\"#\">zephyr</Link>.\n            </Heading>\n\n            <Text color=\"indigo\" highContrast>\n              Ambiguous voice of a heart which prefers <Code variant=\"ghost\">kiwi bowls</Code> to a{' '}\n              <Link href=\"#\">zephyr</Link>.\n            </Text>\n\n            <Text color=\"indigo\" highContrast>\n              Ambiguous voice of a heart which prefers{' '}\n              <Link href=\"#\">\n                <Code variant=\"ghost\">kiwi bowls</Code>\n              </Link>{' '}\n              to a <Link href=\"#\">zephyr</Link>.\n            </Text>\n\n            <Text color=\"indigo\" highContrast>\n              Ambiguous voice of a heart which{' '}\n              <Link href=\"#\">\n                prefers <Code variant=\"ghost\">kiwi bowls</Code>\n              </Link>{' '}\n              to a <Link href=\"#\">zephyr</Link>.\n            </Text>\n\n            <Blockquote color=\"indigo\" highContrast>\n              Ambiguous voice of a heart which prefers <Code variant=\"ghost\">kiwi bowls</Code> to a{' '}\n              <Link href=\"#\">zephyr</Link>.\n            </Blockquote>\n\n            <Blockquote color=\"indigo\" highContrast>\n              Ambiguous voice of a heart which prefers{' '}\n              <Link href=\"#\">\n                <Code variant=\"ghost\">kiwi bowls</Code>\n              </Link>{' '}\n              to a <Link href=\"#\">zephyr</Link>.\n            </Blockquote>\n\n            <Blockquote color=\"indigo\" highContrast>\n              Ambiguous voice of a heart which{' '}\n              <Link href=\"#\">\n                prefers <Code variant=\"ghost\">kiwi bowls</Code>\n              </Link>{' '}\n              to a <Link href=\"#\">zephyr</Link>.\n            </Blockquote>\n\n            <Code size=\"2\" color=\"indigo\" highContrast>\n              Ambiguous voice of a heart which{' '}\n              <Link href=\"#\">\n                prefers <Code variant=\"ghost\">kiwi bowls</Code>\n              </Link>{' '}\n              to a <Link href=\"#\">zephyr</Link>.\n            </Code>\n\n            <Callout.Root color=\"indigo\" highContrast>\n              <Callout.Text>\n                Ambiguous voice of a heart which prefers <Code variant=\"ghost\">kiwi bowls</Code> to\n                a <Link href=\"#\">zephyr</Link>.\n              </Callout.Text>\n            </Callout.Root>\n          </Flex>\n        </Flex>\n      </Section>\n    </Container>\n  );\n}\n"
  },
  {
    "path": "apps/playground/app/(themeable)/test/inset/page.tsx",
    "content": "import {\n  Container,\n  Section,\n  Grid,\n  Card,\n  Text,\n  AspectRatio,\n  Box,\n  Inset,\n  Popover,\n  Button,\n  Flex,\n  HoverCard,\n  Dialog,\n  Table,\n  AlertDialog,\n  Separator,\n  RadioCards,\n  CheckboxCards,\n} from '@radix-ui/themes';\n\nexport default function Test() {\n  const image = (\n    <img\n      src=\"https://images.unsplash.com/photo-1479030160180-b1860951d696?&auto=format&fit=crop&w=1200&q=80\"\n      alt=\"A house in a forest\"\n      style={{ objectFit: 'cover', width: '100%', height: '100%' }}\n    />\n  );\n  return (\n    <Container py=\"8\" mx=\"4\">\n      <Section>\n        <Grid columns=\"3\" gap=\"9\">\n          <Box>\n            <Card size=\"3\">\n              <Text as=\"p\" size=\"5\" weight=\"bold\" trim=\"start\">\n                Title\n              </Text>\n              <Text as=\"p\" size=\"2\" color=\"gray\" mb=\"2\">\n                Subtitle\n              </Text>\n\n              <Text as=\"p\" trim=\"end\">\n                Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nec odio. Praesent\n                libero. Sed cursus ante dapibus diam. Sed nisi.\n              </Text>\n\n              <Inset side=\"bottom\" clip=\"padding-box\" pt=\"current\">\n                <AspectRatio ratio={16 / 9}>{image}</AspectRatio>\n              </Inset>\n            </Card>\n\n            <Box my=\"5\">\n              <CheckboxCards.Root columns=\"1\" defaultValue={['1']} size=\"3\">\n                <CheckboxCards.Item value=\"1\">\n                  <Box asChild width=\"64px\">\n                    <Inset clip=\"padding-box\" side=\"left\">\n                      <AspectRatio ratio={1}>{image}</AspectRatio>\n                    </Inset>\n                  </Box>\n                  <Box as=\"span\">Checkbox Card 1</Box>\n                </CheckboxCards.Item>\n\n                <CheckboxCards.Item value=\"2\">\n                  <Box asChild width=\"64px\">\n                    <Inset clip=\"padding-box\" side=\"left\">\n                      <AspectRatio ratio={1}>{image}</AspectRatio>\n                    </Inset>\n                  </Box>\n                  <Box as=\"span\">Checkbox Card 2</Box>\n                </CheckboxCards.Item>\n              </CheckboxCards.Root>\n            </Box>\n          </Box>\n\n          <Box>\n            <Card size=\"3\">\n              <Text as=\"p\" size=\"5\" weight=\"bold\" trim=\"start\">\n                Title\n              </Text>\n              <Text as=\"p\" size=\"2\" color=\"gray\" mb=\"2\">\n                Subtitle\n              </Text>\n\n              <Text as=\"p\" trim=\"end\">\n                Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nec odio. Praesent\n                libero. Sed cursus ante dapibus diam. Sed nisi.\n              </Text>\n\n              <Inset side=\"x\" py=\"current\">\n                <Separator size=\"4\" />\n              </Inset>\n\n              <Flex justify=\"end\" gap=\"4\">\n                <Button color=\"gray\" variant=\"surface\">\n                  Cancel\n                </Button>\n                <Button>Save</Button>\n              </Flex>\n            </Card>\n\n            <Box my=\"5\">\n              <RadioCards.Root columns=\"1\" defaultValue=\"1\" size=\"3\">\n                <RadioCards.Item value=\"1\">\n                  <Box flexGrow=\"1\">Radio Card 1</Box>\n                  <Box asChild width=\"64px\">\n                    <Inset clip=\"padding-box\" side=\"right\">\n                      <AspectRatio ratio={1}>{image}</AspectRatio>\n                    </Inset>\n                  </Box>\n                </RadioCards.Item>\n\n                <RadioCards.Item value=\"2\">\n                  <Box flexGrow=\"1\">Radio Card 2</Box>\n                  <Box asChild width=\"64px\">\n                    <Inset clip=\"padding-box\" side=\"right\">\n                      <AspectRatio ratio={1}>{image}</AspectRatio>\n                    </Inset>\n                  </Box>\n                </RadioCards.Item>\n              </RadioCards.Root>\n            </Box>\n          </Box>\n\n          <Flex direction=\"column\" gap=\"3\">\n            <div>\n              <Popover.Root>\n                <Popover.Trigger>\n                  <Button variant=\"solid\">Popover</Button>\n                </Popover.Trigger>\n                <Popover.Content>\n                  <Grid columns=\"1fr 1fr\" style={{ width: 400 }}>\n                    <div>\n                      <Text as=\"p\" size=\"3\">\n                        Jan Tschichold was a German calligrapher, typographer and book designer. He\n                        played a significant role in the development of graphic design in the 20th\n                        century.\n                      </Text>\n                    </div>\n                    <Inset side=\"right\" pl=\"current\">\n                      {image}\n                    </Inset>\n                  </Grid>\n                </Popover.Content>\n              </Popover.Root>\n            </div>\n\n            <div>\n              <HoverCard.Root>\n                <HoverCard.Trigger>\n                  <Button variant=\"solid\">Hover Card</Button>\n                </HoverCard.Trigger>\n                <HoverCard.Content style={{ width: 400 }}>\n                  <Flex>\n                    <Inset side=\"left\" pr=\"current\">\n                      {image}\n                    </Inset>\n                    <div>\n                      <Text as=\"p\" size=\"2\">\n                        Jan Tschichold was a German calligrapher, typographer and book designer. He\n                        played a significant role in the development of graphic design in the 20th\n                        century.\n                      </Text>\n                    </div>\n                  </Flex>\n                </HoverCard.Content>\n              </HoverCard.Root>\n            </div>\n\n            <div>\n              <Dialog.Root>\n                <Dialog.Trigger>\n                  <Button variant=\"solid\">Dialog</Button>\n                </Dialog.Trigger>\n                <Dialog.Content>\n                  <Dialog.Title>Users</Dialog.Title>\n                  <Dialog.Description>\n                    Here are the users that have access to this project.\n                  </Dialog.Description>\n\n                  <Inset side=\"x\" my=\"5\">\n                    <TableExample />\n                  </Inset>\n\n                  <Flex gap=\"3\" justify=\"end\">\n                    <Dialog.Close>\n                      <Button variant=\"soft\" color=\"gray\">\n                        Cancel\n                      </Button>\n                    </Dialog.Close>\n                    <Dialog.Close>\n                      <Button variant=\"solid\">Share</Button>\n                    </Dialog.Close>\n                  </Flex>\n                </Dialog.Content>\n              </Dialog.Root>\n            </div>\n\n            <div>\n              <AlertDialog.Root>\n                <AlertDialog.Trigger>\n                  <Button variant=\"solid\">Alert Dialog.</Button>\n                </AlertDialog.Trigger>\n                <AlertDialog.Content style={{ maxWidth: 450 }}>\n                  <AlertDialog.Title>Delete Users</AlertDialog.Title>\n                  <AlertDialog.Description>\n                    Are you sure you want to delete the following users? This action cannot be\n                    undone.\n                  </AlertDialog.Description>\n\n                  <Inset side=\"x\" my=\"5\">\n                    <TableExample />\n                  </Inset>\n\n                  <Flex gap=\"3\" justify=\"end\">\n                    <AlertDialog.Cancel>\n                      <Button variant=\"soft\" color=\"gray\">\n                        Cancel\n                      </Button>\n                    </AlertDialog.Cancel>\n                    <AlertDialog.Action>\n                      <Button variant=\"solid\" color=\"red\">\n                        Revoke link\n                      </Button>\n                    </AlertDialog.Action>\n                  </Flex>\n                </AlertDialog.Content>\n              </AlertDialog.Root>\n            </div>\n          </Flex>\n        </Grid>\n      </Section>\n    </Container>\n  );\n}\n\nfunction TableExample() {\n  return (\n    <Table.Root style={{ backgroundColor: 'var(--gray-a1)' }}>\n      <Table.Header\n        style={{ backgroundColor: 'var(--gray-a2)', borderTop: '1px solid var(--gray-a5)' }}\n      >\n        <Table.Row>\n          <Table.ColumnHeaderCell>Full name</Table.ColumnHeaderCell>\n          <Table.ColumnHeaderCell>Email</Table.ColumnHeaderCell>\n          <Table.ColumnHeaderCell>Group</Table.ColumnHeaderCell>\n        </Table.Row>\n      </Table.Header>\n      <Table.Body>\n        <Table.Row>\n          <Table.RowHeaderCell>Andy</Table.RowHeaderCell>\n          <Table.Cell>andy@workos.com</Table.Cell>\n          <Table.Cell>Developer</Table.Cell>\n        </Table.Row>\n        <Table.Row>\n          <Table.RowHeaderCell>Benoit</Table.RowHeaderCell>\n          <Table.Cell>benoit@workos.com</Table.Cell>\n          <Table.Cell>Admin</Table.Cell>\n        </Table.Row>\n        <Table.Row>\n          <Table.RowHeaderCell>Lucas</Table.RowHeaderCell>\n          <Table.Cell>lucas@workos.com</Table.Cell>\n          <Table.Cell>Developer</Table.Cell>\n        </Table.Row>\n        <Table.Row>\n          <Table.RowHeaderCell>Vlad</Table.RowHeaderCell>\n          <Table.Cell>vlad@workos.com</Table.Cell>\n          <Table.Cell>Designer</Table.Cell>\n        </Table.Row>\n      </Table.Body>\n    </Table.Root>\n  );\n}\n"
  },
  {
    "path": "apps/playground/app/(themeable)/test/radio-card/page.tsx",
    "content": "import { Fragment } from 'react';\nimport { Text, Container, Section, RadioCards, Heading, Box, Separator } from '@radix-ui/themes';\nimport { radioCardsRootPropDefs } from '@radix-ui/themes/props';\nimport { CrumpledPaperIcon, CubeIcon, GlobeIcon, VercelLogoIcon } from '@radix-ui/react-icons';\n\nexport default function Test() {\n  return (\n    <Container py=\"8\" mx=\"4\" size=\"3\">\n      {radioCardsRootPropDefs.size.values.map((size) => (\n        <Fragment key={size}>\n          <Section size=\"3\">\n            <Heading mb=\"5\">Size {size}</Heading>\n            <Box mb=\"7\">\n              <Text as=\"div\" color=\"gray\" size=\"2\" mb=\"3\">\n                Plain text\n              </Text>\n              <RadioCards.Root size={size} defaultValue=\"1\">\n                <RadioCards.Item value=\"1\">Next.js</RadioCards.Item>\n                <RadioCards.Item value=\"2\">React Router</RadioCards.Item>\n                <RadioCards.Item value=\"3\">Astro</RadioCards.Item>\n                <RadioCards.Item value=\"4\">HTMX</RadioCards.Item>\n              </RadioCards.Root>\n            </Box>\n\n            <Box>\n              <Text as=\"div\" color=\"gray\" size=\"2\" mb=\"3\">\n                With icons\n              </Text>\n              <RadioCards.Root size={size} defaultValue=\"1\">\n                <RadioCards.Item value=\"1\">\n                  <VercelLogoIcon />\n                  Next.js\n                </RadioCards.Item>\n                <RadioCards.Item value=\"2\">\n                  <CubeIcon />\n                  React Router\n                </RadioCards.Item>\n                <RadioCards.Item value=\"3\">\n                  <GlobeIcon />\n                  Astro\n                </RadioCards.Item>\n                <RadioCards.Item value=\"4\">\n                  <CrumpledPaperIcon />\n                  HTMX\n                </RadioCards.Item>\n              </RadioCards.Root>\n            </Box>\n          </Section>\n\n          <Separator size=\"4\" />\n        </Fragment>\n      ))}\n    </Container>\n  );\n}\n"
  },
  {
    "path": "apps/playground/app/(themeable)/test/reset/page.tsx",
    "content": "import * as React from 'react';\nimport { Container, Section, Reset } from '@radix-ui/themes';\n\nexport default function Test() {\n  return (\n    <Container size=\"1\" py=\"8\" mx=\"4\">\n      <Section size=\"3\">\n        <ResetChildren>\n          <RadixLogo />\n          <a href=\"https://example.com\">Anchor</a>\n          <abbr>Abbreviation</abbr>\n          <address>Contact information</address>\n          <article>Article</article>\n          <aside>Aside content</aside>\n          <audio>Audio content</audio>\n          <b>Bold text</b>\n          <bdi>Bi-directional Isolation</bdi>\n          <bdo>Bi-directional Override</bdo>\n          <blockquote>Block quote</blockquote>\n          <button>Button</button>\n          <cite>Cited text</cite>\n          <code>Computer code</code>\n          <data>Machine-readable equivalent</data>\n          <dd>Description in a description list</dd>\n          <del>Deleted text</del>\n          <details>\n            Additional details\n            <summary>Summary for a details element</summary>\n          </details>\n          <dfn>Defining term</dfn>\n          <div>Div</div>\n          <dl>Description list</dl>\n          <dt>Term in a description list</dt>\n          <em>Emphasized text</em>\n          <fieldset>Group of form-related elements</fieldset>\n          <figcaption>Caption for a figure element</figcaption>\n          <figure>Self-contained content</figure>\n          <footer>Document or section footer</footer>\n          <form>HTML form</form>\n          <h1>HTML heading 1</h1>\n          <h2>HTML heading 2</h2>\n          <h3>HTML heading 3</h3>\n          <h4>HTML heading 4</h4>\n          <h5>HTML heading 5</h5>\n          <h6>HTML heading 6</h6>\n          <header>Document or section header</header>\n          <hr />\n          <i>Italic text</i>\n          <iframe src=\"https://example.com\" />\n          <img src=\"https://source.unsplash.com/random\" alt=\"Random image\" />\n\n          {/* All input types: */}\n          <input placeholder=\"Input control\" />\n          {/* <input placeholder=\"Input control\" type=\"button\" /> */}\n          {/* <input placeholder=\"Input control\" type=\"image\" /> */}\n          {/* <input placeholder=\"Input control\" type=\"text\" /> */}\n          {/* <input placeholder=\"Input control\" type=\"checkbox\" /> */}\n          {/* <input placeholder=\"Input control\" type=\"color\" /> */}\n          {/* <input placeholder=\"Input control\" type=\"date\" /> */}\n          {/* <input placeholder=\"Input control\" type=\"datetime-local\" /> */}\n          {/* <input placeholder=\"Input control\" type=\"email\" /> */}\n          {/* <input placeholder=\"Input control\" type=\"file\" /> */}\n          {/* <input placeholder=\"Input control\" type=\"hidden\" /> */}\n          {/* <input placeholder=\"Input control\" type=\"month\" /> */}\n          {/* <input placeholder=\"Input control\" type=\"number\" /> */}\n          {/* <input placeholder=\"Input control\" type=\"password\" /> */}\n          {/* <input placeholder=\"Input control\" type=\"radio\" /> */}\n          {/* <input placeholder=\"Input control\" type=\"range\" /> */}\n          {/* <input placeholder=\"Input control\" type=\"reset\" /> */}\n          {/* <input placeholder=\"Input control\" type=\"search\" /> */}\n          {/* <input placeholder=\"Input control\" type=\"submit\" /> */}\n          {/* <input placeholder=\"Input control\" type=\"tel\" /> */}\n          {/* <input placeholder=\"Input control\" type=\"time\" /> */}\n          {/* <input placeholder=\"Input control\" type=\"url\" /> */}\n          {/* <input placeholder=\"Input control\" type=\"week\" /> */}\n\n          <ins>Inserted text</ins>\n          <kbd>Keyboard input</kbd>\n          <label>Form field label text</label>\n          <legend>Caption for a fieldset element</legend>\n          <li>List item</li>\n          <main>Main content</main>\n          <mark>Marked or highlighted text</mark>\n          <nav>Navigation links</nav>\n          <ol>\n            <li>Coffee</li>\n            <li>Tea</li>\n            <li>Milk</li>\n          </ol>\n          <output>Result of a calculation</output>\n          <p>Paragraph</p>\n          <picture>Container for multiple image sources</picture>\n          <pre>Preformatted text: {'\"    \"'}</pre>\n          <q>Short quote</q>\n          <s>Text that is no longer correct</s>\n          <samp>Sample output</samp>\n          <section>Section in a document</section>\n          <select name=\"select\" id=\"select\">\n            <option value=\"1\">Select Option 1</option>\n            <option value=\"2\">Select Option 2</option>\n            <option value=\"3\">Select Option 3</option>\n            <option value=\"4\">Select Option 4</option>\n          </select>\n          <small>Smaller text</small>\n          <span>Inline element</span>\n          <strong>Important text</strong>\n          <sub>Subscripted text</sub>\n          <sup>Superscripted text</sup>\n          <table>\n            <ResetChildren>\n              <caption>Table</caption>\n              <thead>\n                <ResetChildren>\n                  <tr>\n                    <ResetChildren>\n                      <th scope=\"col\">Person</th>\n                      <th scope=\"col\">Most interest in</th>\n                      <th scope=\"col\">Age</th>\n                    </ResetChildren>\n                  </tr>\n                </ResetChildren>\n              </thead>\n              <tbody>\n                <ResetChildren>\n                  <tr>\n                    <ResetChildren>\n                      <th scope=\"row\">Chris</th>\n                      <td>HTML tables</td>\n                      <td>22</td>\n                    </ResetChildren>\n                  </tr>\n                  <tr>\n                    <ResetChildren>\n                      <th scope=\"row\">Dennis</th>\n                      <td>Web accessibility</td>\n                      <td>45</td>\n                    </ResetChildren>\n                  </tr>\n                  <tr>\n                    <ResetChildren>\n                      <th scope=\"row\">Sarah</th>\n                      <td>JavaScript frameworks</td>\n                      <td>29</td>\n                    </ResetChildren>\n                  </tr>\n                  <tr>\n                    <ResetChildren>\n                      <th scope=\"row\">Karen</th>\n                      <td>Web performance</td>\n                      <td>36</td>\n                    </ResetChildren>\n                  </tr>\n                </ResetChildren>\n              </tbody>\n              <tfoot>\n                <ResetChildren>\n                  <tr>\n                    <ResetChildren>\n                      <th scope=\"row\" colSpan={2}>\n                        Average age\n                      </th>\n                      <td>33</td>\n                    </ResetChildren>\n                  </tr>\n                </ResetChildren>\n              </tfoot>\n            </ResetChildren>\n          </table>\n\n          <textarea placeholder=\"Multi-line textarea\" />\n          <ul>\n            <li>Coffee</li>\n            <li>Tea</li>\n            <li>Milk</li>\n          </ul>\n          <u>Text with unarticulated annotation</u>\n          <var>Variable</var>\n          <video\n            autoPlay\n            loop\n            muted\n            src=\"https://interactive-examples.mdn.mozilla.net/media/cc0-videos/flower.mp4\"\n          />\n        </ResetChildren>\n      </Section>\n    </Container>\n  );\n}\n\nfunction ResetChildren({ children }: { children: React.ReactNode }) {\n  return React.Children.map(children, (child) => <Reset>{child}</Reset>);\n}\n\nfunction RadixLogo(props: React.ComponentPropsWithoutRef<'svg'>) {\n  return (\n    <svg\n      width=\"76\"\n      height=\"24\"\n      viewBox=\"0 0 76 24\"\n      fill=\"currentcolor\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      {...props}\n    >\n      <path d=\"M43.9022 20.0061H46.4499C46.2647 19.0375 46.17 18.1161 46.17 17.0058V12.3753C46.17 9.25687 44.3893 7.72127 41.1943 7.72127C38.3003 7.72127 36.3324 9.23324 36.0777 11.8083H38.9254C39.0181 10.698 39.8052 9.96561 41.1017 9.96561C42.4446 9.96561 43.3243 10.6743 43.3243 12.1391V12.7061L39.8052 13.1077C37.4206 13.3912 35.5684 14.3834 35.5684 16.7931C35.5684 18.9666 37.2353 20.2659 39.5274 20.2659C41.4027 20.2659 42.9845 19.4863 43.6401 18.1161C43.6689 18.937 43.9022 20.0061 43.9022 20.0061ZM40.3377 18.1634C39.157 18.1634 38.5087 17.5727 38.5087 16.6278C38.5087 15.3757 39.4579 15.0922 40.7082 14.9268L43.3243 14.6197V15.352C43.3243 17.242 41.8658 18.1634 40.3377 18.1634ZM56.2588 20.0061H59.176V3H56.2125V9.96561C55.6569 8.76075 54.3141 7.72127 52.4851 7.72127C49.3058 7.72127 47.099 10.2963 47.099 14.0054C47.099 17.7381 49.3058 20.2896 52.4851 20.2896C54.2678 20.2896 55.68 19.2973 56.2588 18.0925V20.0061ZM56.282 14.218C56.282 16.5569 55.1938 18.0689 53.3185 18.0689C51.3969 18.0689 50.1856 16.486 50.1856 14.0054C50.1856 11.5485 51.3969 9.94198 53.3185 9.94198C55.1938 9.94198 56.282 11.454 56.282 13.7928V14.218ZM60.9066 5.97304H64.0553V3.01996H60.9066V5.97304ZM60.9992 20.0061H63.9627V8.00476H60.9992V20.0061ZM67.6638 20.0061L70.6041 15.8954L73.5212 20.0061H76.9246L72.3636 13.7219L76.5542 8.00476H73.3823L70.7661 11.7138L68.1731 8.00476H64.7697L69.0066 13.8637L64.4919 20.0061H67.6638Z\"></path>\n      <path\n        fillRule=\"evenodd\"\n        clipRule=\"evenodd\"\n        d=\"M24.9132 20V14.0168H28.7986L32.4513 20H35.7006L31.6894 13.5686C33.5045 12.986 35.0955 11.507 35.0955 9.01961C35.0955 5.7479 32.7994 4 28.9571 4H22V20H24.9132ZM24.9132 6.35294V11.6863H28.821C31.0395 11.6863 32.1599 10.7675 32.1599 9.01961C32.1599 7.27171 30.9395 6.35294 28.621 6.35294H24.9132Z\"\n      ></path>\n      <path d=\"M7 23C3.13401 23 0 19.6422 0 15.5C0 11.3578 3.13401 8 7 8V23Z\"></path>\n      <path d=\"M7 0H0V7H7V0Z\"></path>\n      <path d=\"M11.5 7C13.433 7 15 5.433 15 3.5C15 1.567 13.433 0 11.5 0C9.56704 0 8 1.567 8 3.5C8 5.433 9.56704 7 11.5 7Z\"></path>\n    </svg>\n  );\n}\n"
  },
  {
    "path": "apps/playground/app/(themeable)/test/responsive/page.tsx",
    "content": "import {\n  Flex,\n  Grid,\n  TextField,\n  Text,\n  Select,\n  TextArea,\n  Button,\n  Container,\n  Section,\n  Card,\n  IconButton,\n} from '@radix-ui/themes';\nimport { SunIcon } from '@radix-ui/react-icons';\n\nexport default function Test() {\n  return (\n    <Container py=\"8\" mx=\"4\">\n      <Section size=\"3\">\n        <Card size={{ initial: '3', sm: '4', lg: '5' }} style={{ maxWidth: 500 }} mx=\"auto\">\n          <Flex direction=\"column\" gap={{ initial: '3', sm: '4', lg: '5' }}>\n            <Grid gap={{ initial: '1', sm: '2', lg: '3' }}>\n              <Text size={{ initial: '1', sm: '2', lg: '3' }} weight=\"bold\">\n                Email\n              </Text>\n              <TextField.Root\n                size={{ initial: '1', sm: '2', lg: '3' }}\n                variant=\"classic\"\n                placeholder=\"Your email\"\n              />\n            </Grid>\n            <Grid gap={{ initial: '1', sm: '2', lg: '3' }}>\n              <Text size={{ initial: '1', sm: '2', lg: '3' }} weight=\"bold\">\n                Subject\n              </Text>\n              <Select.Root defaultValue=\"customer\" size={{ initial: '1', sm: '2', lg: '3' }}>\n                <Select.Trigger variant=\"classic\" />\n                <Select.Content>\n                  <Select.Item value=\"customer\">Customer feedback</Select.Item>\n                  <Select.Item value=\"help\">Help</Select.Item>\n                </Select.Content>\n              </Select.Root>\n            </Grid>\n            <Grid gap={{ initial: '1', sm: '2', lg: '3' }}>\n              <Text size={{ initial: '1', sm: '2', lg: '3' }} weight=\"bold\">\n                Feedback\n              </Text>\n              <TextArea\n                size={{ initial: '1', sm: '2', lg: '3' }}\n                variant=\"classic\"\n                placeholder=\"Your feedback\"\n              />\n            </Grid>\n            <Grid columns=\"2\" gap=\"2\">\n              <Button size={{ initial: '1', sm: '2', lg: '3' }} variant=\"surface\">\n                Back\n              </Button>\n              <Button size={{ initial: '1', sm: '2', lg: '3' }} variant=\"classic\">\n                Submit\n              </Button>\n            </Grid>\n          </Flex>\n        </Card>\n      </Section>\n\n      <Section size=\"3\">\n        <Flex align=\"center\" gap={{ initial: '3', sm: '4', lg: '5' }}>\n          <IconButton variant=\"ghost\" size={{ initial: '1', sm: '2', lg: '3' }}>\n            <SunIcon />\n          </IconButton>\n          <Button variant=\"ghost\" size={{ initial: '1', sm: '2', lg: '3' }}>\n            Change theme\n          </Button>\n          <Button size={{ initial: '1', sm: '2', lg: '3' }}>Change theme</Button>\n        </Flex>\n      </Section>\n    </Container>\n  );\n}\n"
  },
  {
    "path": "apps/playground/app/(themeable)/test/skeleton/page.tsx",
    "content": "'use client';\nimport * as React from 'react';\nimport {\n  Container,\n  Section,\n  Card,\n  Text,\n  Box,\n  Button,\n  Flex,\n  Link,\n  Heading,\n  TextField,\n  Skeleton,\n} from '@radix-ui/themes';\n\nexport default function Test() {\n  const [isLoading, setIsLoading] = React.useState(true);\n  const loadingTimeoutRef = React.useRef<number>(undefined);\n\n  React.useEffect(() => {\n    loadingTimeoutRef.current = window.setTimeout(() => {\n      setIsLoading(false);\n    }, 2000);\n    return () => {\n      window.clearTimeout(loadingTimeoutRef.current!);\n    };\n  }, []);\n\n  return (\n    <Container size=\"1\" py=\"8\" mx=\"4\">\n      <Section>\n        <Card asChild variant=\"classic\" size=\"4\">\n          <form action=\"/\">\n            <Box height=\"40px\" mb=\"4\">\n              <Heading as=\"h3\" size=\"6\" mt=\"-1\">\n                <Skeleton loading={isLoading}>Sign up</Skeleton>\n              </Heading>\n            </Box>\n\n            <Box mb=\"5\">\n              <Flex direction=\"column\">\n                <Text as=\"label\" size=\"2\" weight=\"medium\" mb=\"2\" htmlFor=\"email\">\n                  <Skeleton loading={isLoading}>Email address</Skeleton>\n                </Text>\n                <Skeleton loading={isLoading}>\n                  <TextField.Root\n                    id=\"email\"\n                    type=\"email\"\n                    variant=\"classic\"\n                    placeholder=\"Enter your email\"\n                  />\n                </Skeleton>\n              </Flex>\n            </Box>\n\n            <Box mb=\"5\" position=\"relative\">\n              <Box position=\"absolute\" top=\"0\" right=\"0\" style={{ marginTop: -2 }}>\n                <Link href=\"#\" size=\"2\">\n                  <Skeleton loading={isLoading}>Forgot password?</Skeleton>\n                </Link>\n              </Box>\n\n              <Flex direction=\"column\">\n                <Text as=\"label\" size=\"2\" weight=\"medium\" mb=\"2\" htmlFor=\"password\">\n                  <Skeleton loading={isLoading}>Password</Skeleton>\n                </Text>\n                <Skeleton loading={isLoading}>\n                  <TextField.Root\n                    id=\"password\"\n                    variant=\"classic\"\n                    type=\"password\"\n                    placeholder=\"Enter your password\"\n                  />\n                </Skeleton>\n              </Flex>\n            </Box>\n\n            <Flex mt=\"6\" justify=\"end\" gap=\"3\">\n              <Skeleton loading={isLoading}>\n                <Button variant=\"surface\" highContrast color=\"gray\">\n                  Create an account\n                </Button>\n              </Skeleton>\n              <Skeleton loading={isLoading}>\n                <Button variant=\"solid\" type=\"submit\">\n                  Sign in\n                </Button>\n              </Skeleton>\n            </Flex>\n          </form>\n        </Card>\n      </Section>\n    </Container>\n  );\n}\n"
  },
  {
    "path": "apps/playground/app/(themeable)/test/tabnav/(accounts)/page.tsx",
    "content": "import { Heading } from '@radix-ui/themes';\n\nexport default function Accounts() {\n  return <Heading>Accounts</Heading>;\n}\n"
  },
  {
    "path": "apps/playground/app/(themeable)/test/tabnav/documents/page.tsx",
    "content": "import { Heading } from '@radix-ui/themes';\n\nexport default function Documents() {\n  return <Heading>Documents</Heading>;\n}\n"
  },
  {
    "path": "apps/playground/app/(themeable)/test/tabnav/layout.tsx",
    "content": "import * as React from 'react';\nimport { Container, Section, Box } from '@radix-ui/themes';\nimport { Nav } from './nav';\n\nexport default function Test({ children }: { children: React.ReactNode }) {\n  return (\n    <Container>\n      <Section>\n        <Nav />\n        <Box my=\"9\">{children}</Box>\n      </Section>\n    </Container>\n  );\n}\n"
  },
  {
    "path": "apps/playground/app/(themeable)/test/tabnav/nav.tsx",
    "content": "'use client';\nimport NextLink from 'next/link';\nimport { usePathname } from 'next/navigation';\nimport { TabNav, Heading, Flex } from '@radix-ui/themes';\n\nexport function Nav() {\n  const pathname = usePathname();\n  return (\n    <Flex direction=\"column\" gap=\"9\">\n      <Flex direction=\"column\" gap=\"2\">\n        <Heading size=\"3\">Straight up `TabNav.Link`</Heading>\n        <TabNav.Root>\n          <TabNav.Link href=\"/test/tabnav\" active={pathname === '/test/tabnav'}>\n            Accounts\n          </TabNav.Link>\n          <TabNav.Link href=\"/test/tabnav/documents\" active={pathname === '/test/tabnav/documents'}>\n            Documents\n          </TabNav.Link>\n          <TabNav.Link href=\"/test/tabnav/settings\" active={pathname === '/test/tabnav/settings'}>\n            Settings\n          </TabNav.Link>\n        </TabNav.Root>\n      </Flex>\n      <Flex direction=\"column\" gap=\"2\">\n        <Heading size=\"3\">{`<TabNav.Link asChild>`} with `NextLink`</Heading>\n        <TabNav.Root>\n          <TabNav.Link asChild active={pathname === '/test/tabnav'}>\n            <NextLink href=\"/test/tabnav\">Accounts</NextLink>\n          </TabNav.Link>\n          <TabNav.Link asChild active={pathname === '/test/tabnav/documents'}>\n            <NextLink href=\"/test/tabnav/documents\">Documents</NextLink>\n          </TabNav.Link>\n          <TabNav.Link asChild active={pathname === '/test/tabnav/settings'}>\n            <NextLink href=\"/test/tabnav/settings\">Settings</NextLink>\n          </TabNav.Link>\n        </TabNav.Root>\n      </Flex>\n    </Flex>\n  );\n}\n"
  },
  {
    "path": "apps/playground/app/(themeable)/test/tabnav/settings/page.tsx",
    "content": "import { Heading } from '@radix-ui/themes';\n\nexport default function Settings() {\n  return <Heading>Settings</Heading>;\n}\n"
  },
  {
    "path": "apps/playground/app/(themeable)/test/text-wrap/page.tsx",
    "content": "import { Grid, Text, Container, Section, Card, Heading, Code, ScrollArea } from '@radix-ui/themes';\n\nexport default function Test() {\n  return (\n    <Container py=\"8\" mx=\"4\">\n      <Section size=\"3\">\n        <Grid columns=\"3\" gap=\"5\">\n          <Card size=\"3\">\n            <ScrollArea>\n              <Heading size=\"3\" mb=\"2\">\n                Default\n              </Heading>\n              <Text size=\"3\" as=\"p\">\n                Under a sky as clear as a sapphire, the audacious wind embarked on yet another\n                sojourn.\n              </Text>\n            </ScrollArea>\n          </Card>\n\n          <Card size=\"3\">\n            <Heading size=\"3\" mb=\"2\">\n              <Code variant=\"ghost\" color=\"gray\" highContrast>\n                {'wrap=\"wrap\"'}\n              </Code>\n            </Heading>\n            <Text size=\"3\" as=\"p\" wrap=\"wrap\">\n              Under a sky as clear as a sapphire, the audacious wind embarked on yet another\n              sojourn.\n            </Text>\n          </Card>\n\n          <Card size=\"3\">\n            <Heading size=\"3\" mb=\"2\">\n              <Code variant=\"ghost\" color=\"gray\" highContrast>\n                {'wrap=\"nowrap\"'}\n              </Code>\n            </Heading>\n            <Text size=\"3\" as=\"p\" wrap=\"nowrap\">\n              Under a sky as clear as a sapphire, the audacious wind embarked on yet another\n              sojourn.\n            </Text>\n          </Card>\n\n          <Card size=\"3\">\n            <Heading size=\"3\" mb=\"2\">\n              <Code variant=\"ghost\" color=\"gray\" highContrast>\n                {'wrap=\"balance\"'}\n              </Code>\n            </Heading>\n            <Text size=\"3\" as=\"p\" wrap=\"balance\">\n              Under a sky as clear as a sapphire, the audacious wind embarked on yet another\n              sojourn.\n            </Text>\n          </Card>\n\n          <Card size=\"3\">\n            <Heading size=\"3\" mb=\"2\">\n              <Code variant=\"ghost\" color=\"gray\" highContrast>\n                {'wrap=\"pretty\"'}\n              </Code>\n            </Heading>\n            <Text size=\"3\" as=\"p\" wrap=\"pretty\">\n              Under a sky as clear as a sapphire, the audacious wind embarked on yet another\n              sojourn.\n            </Text>\n          </Card>\n\n          <Card size=\"3\">\n            <Heading size=\"3\" mb=\"2\">\n              <Code variant=\"ghost\" color=\"gray\" highContrast>\n                {'truncate'}\n              </Code>\n            </Heading>\n            <Text size=\"3\" as=\"p\" truncate>\n              Under a sky as clear as a sapphire, the audacious wind embarked on yet another\n              sojourn.\n            </Text>\n          </Card>\n        </Grid>\n      </Section>\n    </Container>\n  );\n}\n"
  },
  {
    "path": "apps/playground/app/(themeable)/test/textfield/page.tsx",
    "content": "import {\n  Container,\n  Section,\n  Grid,\n  Flex,\n  TextField,\n  Heading,\n  IconButton,\n  Button,\n  Text,\n  Tooltip,\n  Spinner,\n} from '@radix-ui/themes';\nimport {\n  StarIcon,\n  ExclamationTriangleIcon,\n  EyeClosedIcon,\n  InfoCircledIcon,\n  MagnifyingGlassIcon,\n  Share2Icon,\n  EnvelopeOpenIcon,\n  PaperPlaneIcon,\n  LockClosedIcon,\n} from '@radix-ui/react-icons';\n\nexport default function Test() {\n  return (\n    <Container py=\"8\" mx=\"4\">\n      <Section>\n        <Grid columns=\"3\" gapX=\"6\" gapY=\"9\">\n          <Flex direction=\"column\" align=\"start\" gap=\"3\">\n            <Heading size=\"3\" mb=\"2\">\n              Just the input\n            </Heading>\n\n            <TextField.Root size=\"1\" placeholder=\"Search\" />\n            <TextField.Root size=\"2\" placeholder=\"Search\" />\n            <TextField.Root size=\"3\" placeholder=\"Search\" />\n          </Flex>\n\n          <Flex direction=\"column\" align=\"start\" gap=\"3\">\n            <Heading size=\"3\" mb=\"2\">\n              Spinner\n            </Heading>\n\n            <TextField.Root size=\"1\" placeholder=\"Your password\">\n              <TextField.Slot side=\"right\">\n                <Spinner size=\"1\" />\n              </TextField.Slot>\n            </TextField.Root>\n\n            <TextField.Root size=\"2\" placeholder=\"Your password\">\n              <TextField.Slot side=\"right\">\n                <Spinner size=\"2\" />\n              </TextField.Slot>\n            </TextField.Root>\n\n            <TextField.Root size=\"3\" placeholder=\"Your password\">\n              <TextField.Slot side=\"right\">\n                <Spinner size=\"3\" />\n              </TextField.Slot>\n            </TextField.Root>\n          </Flex>\n\n          <div />\n\n          <Flex direction=\"column\" align=\"start\" gap=\"3\">\n            <Heading size=\"3\" mb=\"2\">\n              Slot\n            </Heading>\n\n            <TextField.Root size=\"1\" placeholder=\"Search\">\n              <TextField.Slot>\n                <MagnifyingGlassIcon />\n              </TextField.Slot>\n            </TextField.Root>\n\n            <TextField.Root size=\"2\" placeholder=\"Search\">\n              <TextField.Slot>\n                <MagnifyingGlassIcon />\n              </TextField.Slot>\n            </TextField.Root>\n\n            <TextField.Root size=\"3\" placeholder=\"Search\">\n              <TextField.Slot>\n                <MagnifyingGlassIcon />\n              </TextField.Slot>\n            </TextField.Root>\n          </Flex>\n\n          <Flex direction=\"column\" align=\"start\" gap=\"3\">\n            <Heading size=\"3\" mb=\"2\">\n              Slot {'side=\"left\"'}\n            </Heading>\n\n            <TextField.Root size=\"1\" placeholder=\"Search\">\n              <TextField.Slot side=\"left\">\n                <MagnifyingGlassIcon />\n              </TextField.Slot>\n            </TextField.Root>\n\n            <TextField.Root size=\"2\" placeholder=\"Search\">\n              <TextField.Slot side=\"left\">\n                <MagnifyingGlassIcon />\n              </TextField.Slot>\n            </TextField.Root>\n\n            <TextField.Root size=\"3\" placeholder=\"Search\">\n              <TextField.Slot side=\"left\">\n                <MagnifyingGlassIcon />\n              </TextField.Slot>\n            </TextField.Root>\n          </Flex>\n\n          <Flex direction=\"column\" align=\"start\" gap=\"3\">\n            <Heading size=\"3\" mb=\"2\">\n              Slot {'side=\"right\"'}\n            </Heading>\n\n            <TextField.Root size=\"1\" placeholder=\"Search\">\n              <TextField.Slot color=\"red\" side=\"right\">\n                <ExclamationTriangleIcon />\n              </TextField.Slot>\n            </TextField.Root>\n\n            <TextField.Root size=\"2\" placeholder=\"Search\">\n              <TextField.Slot color=\"red\" side=\"right\">\n                <ExclamationTriangleIcon />\n              </TextField.Slot>\n            </TextField.Root>\n\n            <TextField.Root size=\"3\" placeholder=\"Search\">\n              <TextField.Slot color=\"red\" side=\"right\">\n                <ExclamationTriangleIcon />\n              </TextField.Slot>\n            </TextField.Root>\n          </Flex>\n\n          <Flex direction=\"column\" align=\"start\" gap=\"3\">\n            <Heading size=\"3\" mb=\"2\">\n              Slots without sides\n            </Heading>\n\n            <TextField.Root size=\"1\" placeholder=\"Search\">\n              <TextField.Slot>\n                <MagnifyingGlassIcon />\n              </TextField.Slot>\n              <TextField.Slot color=\"red\">\n                <ExclamationTriangleIcon />\n              </TextField.Slot>\n            </TextField.Root>\n\n            <TextField.Root size=\"2\" placeholder=\"Search\">\n              <TextField.Slot>\n                <MagnifyingGlassIcon />\n              </TextField.Slot>\n              <TextField.Slot color=\"red\">\n                <ExclamationTriangleIcon />\n              </TextField.Slot>\n            </TextField.Root>\n\n            <TextField.Root size=\"3\" placeholder=\"Search\">\n              <TextField.Slot>\n                <MagnifyingGlassIcon />\n              </TextField.Slot>\n              <TextField.Slot color=\"red\">\n                <ExclamationTriangleIcon />\n              </TextField.Slot>\n            </TextField.Root>\n          </Flex>\n\n          <Flex direction=\"column\" align=\"start\" gap=\"3\">\n            <Heading size=\"3\" mb=\"2\">\n              Slot {'side=\"left\", side=\"right\"'}\n            </Heading>\n\n            <TextField.Root size=\"1\" placeholder=\"Search\">\n              <TextField.Slot side=\"left\">\n                <MagnifyingGlassIcon />\n              </TextField.Slot>\n              <TextField.Slot color=\"red\" side=\"right\">\n                <ExclamationTriangleIcon />\n              </TextField.Slot>\n            </TextField.Root>\n\n            <TextField.Root size=\"2\" placeholder=\"Search\">\n              <TextField.Slot side=\"left\">\n                <MagnifyingGlassIcon />\n              </TextField.Slot>\n              <TextField.Slot color=\"red\" side=\"right\">\n                <ExclamationTriangleIcon />\n              </TextField.Slot>\n            </TextField.Root>\n\n            <TextField.Root size=\"3\" placeholder=\"Search\">\n              <TextField.Slot side=\"left\">\n                <MagnifyingGlassIcon />\n              </TextField.Slot>\n              <TextField.Slot color=\"red\" side=\"right\">\n                <ExclamationTriangleIcon />\n              </TextField.Slot>\n            </TextField.Root>\n          </Flex>\n\n          <Flex direction=\"column\" align=\"start\" gap=\"3\">\n            <Heading size=\"3\" mb=\"2\">\n              Slot {'side=\"right\", side=\"left\"'}\n            </Heading>\n\n            <TextField.Root size=\"1\" placeholder=\"Search\">\n              <TextField.Slot color=\"red\" side=\"right\">\n                <ExclamationTriangleIcon />\n              </TextField.Slot>\n              <TextField.Slot side=\"left\">\n                <MagnifyingGlassIcon />\n              </TextField.Slot>\n            </TextField.Root>\n\n            <TextField.Root size=\"2\" placeholder=\"Search\">\n              <TextField.Slot color=\"red\" side=\"right\">\n                <ExclamationTriangleIcon />\n              </TextField.Slot>\n              <TextField.Slot side=\"left\">\n                <MagnifyingGlassIcon />\n              </TextField.Slot>\n            </TextField.Root>\n\n            <TextField.Root size=\"3\" placeholder=\"Search\">\n              <TextField.Slot color=\"red\" side=\"right\">\n                <ExclamationTriangleIcon />\n              </TextField.Slot>\n              <TextField.Slot side=\"left\">\n                <MagnifyingGlassIcon />\n              </TextField.Slot>\n            </TextField.Root>\n          </Flex>\n\n          <Flex direction=\"column\" align=\"start\" gap=\"3\">\n            <Heading size=\"3\" mb=\"2\">\n              Slot {'side=\"left\", no side'}\n            </Heading>\n\n            <TextField.Root size=\"1\" placeholder=\"Search\">\n              <TextField.Slot side=\"left\">\n                <MagnifyingGlassIcon />\n              </TextField.Slot>\n              <TextField.Slot color=\"red\">\n                <ExclamationTriangleIcon />\n              </TextField.Slot>\n            </TextField.Root>\n\n            <TextField.Root size=\"2\" placeholder=\"Search\">\n              <TextField.Slot side=\"left\">\n                <MagnifyingGlassIcon />\n              </TextField.Slot>\n              <TextField.Slot color=\"red\">\n                <ExclamationTriangleIcon />\n              </TextField.Slot>\n            </TextField.Root>\n\n            <TextField.Root size=\"3\" placeholder=\"Search\">\n              <TextField.Slot side=\"left\">\n                <MagnifyingGlassIcon />\n              </TextField.Slot>\n              <TextField.Slot color=\"red\">\n                <ExclamationTriangleIcon />\n              </TextField.Slot>\n            </TextField.Root>\n          </Flex>\n\n          <Flex direction=\"column\" align=\"start\" gap=\"3\">\n            <Heading size=\"3\" mb=\"2\">\n              Slot {'side=\"right\", no side'}\n            </Heading>\n\n            <TextField.Root size=\"1\" placeholder=\"Search\">\n              <TextField.Slot color=\"red\" side=\"right\">\n                <ExclamationTriangleIcon />\n              </TextField.Slot>\n              <TextField.Slot>\n                <MagnifyingGlassIcon />\n              </TextField.Slot>\n            </TextField.Root>\n\n            <TextField.Root size=\"2\" placeholder=\"Search\">\n              <TextField.Slot color=\"red\" side=\"right\">\n                <ExclamationTriangleIcon />\n              </TextField.Slot>\n              <TextField.Slot>\n                <MagnifyingGlassIcon />\n              </TextField.Slot>\n            </TextField.Root>\n\n            <TextField.Root size=\"3\" placeholder=\"Search\">\n              <TextField.Slot color=\"red\" side=\"right\">\n                <ExclamationTriangleIcon />\n              </TextField.Slot>\n              <TextField.Slot>\n                <MagnifyingGlassIcon />\n              </TextField.Slot>\n            </TextField.Root>\n          </Flex>\n\n          <Flex direction=\"column\" align=\"start\" gap=\"3\">\n            <Heading size=\"3\" mb=\"2\">\n              Slot {'no side, side=\"right\"'}\n            </Heading>\n\n            <TextField.Root size=\"1\" placeholder=\"Search\">\n              <TextField.Slot>\n                <MagnifyingGlassIcon />\n              </TextField.Slot>\n              <TextField.Slot color=\"red\" side=\"right\">\n                <ExclamationTriangleIcon />\n              </TextField.Slot>\n            </TextField.Root>\n\n            <TextField.Root size=\"2\" placeholder=\"Search\">\n              <TextField.Slot>\n                <MagnifyingGlassIcon />\n              </TextField.Slot>\n              <TextField.Slot color=\"red\" side=\"right\">\n                <ExclamationTriangleIcon />\n              </TextField.Slot>\n            </TextField.Root>\n\n            <TextField.Root size=\"3\" placeholder=\"Search\">\n              <TextField.Slot>\n                <MagnifyingGlassIcon />\n              </TextField.Slot>\n              <TextField.Slot color=\"red\" side=\"right\">\n                <ExclamationTriangleIcon />\n              </TextField.Slot>\n            </TextField.Root>\n          </Flex>\n\n          <Flex direction=\"column\" align=\"start\" gap=\"3\">\n            <Heading size=\"3\" mb=\"2\">\n              Ghost buttons\n            </Heading>\n\n            <TextField.Root size=\"1\" placeholder=\"Your password\">\n              <TextField.Slot>\n                <IconButton size=\"1\" variant=\"ghost\" color=\"gray\">\n                  <LockClosedIcon />\n                </IconButton>\n              </TextField.Slot>\n              <TextField.Slot>\n                <IconButton size=\"1\" variant=\"ghost\" color=\"gray\">\n                  <EyeClosedIcon />\n                </IconButton>\n              </TextField.Slot>\n            </TextField.Root>\n\n            <TextField.Root size=\"2\" placeholder=\"Your password\">\n              <TextField.Slot>\n                <IconButton size=\"1\" variant=\"ghost\" color=\"gray\">\n                  <LockClosedIcon />\n                </IconButton>\n              </TextField.Slot>\n              <TextField.Slot>\n                <IconButton size=\"1\" variant=\"ghost\" color=\"gray\">\n                  <EyeClosedIcon />\n                </IconButton>\n              </TextField.Slot>\n            </TextField.Root>\n\n            <TextField.Root size=\"3\" placeholder=\"Your password\">\n              <TextField.Slot>\n                <IconButton size=\"2\" variant=\"ghost\" color=\"gray\">\n                  <LockClosedIcon />\n                </IconButton>\n              </TextField.Slot>\n              <TextField.Slot>\n                <IconButton size=\"2\" variant=\"ghost\" color=\"gray\">\n                  <EyeClosedIcon />\n                </IconButton>\n              </TextField.Slot>\n            </TextField.Root>\n\n            <TextField.Root size=\"3\" placeholder=\"Your password\">\n              <TextField.Slot>\n                <IconButton size=\"3\" variant=\"ghost\" color=\"gray\">\n                  <LockClosedIcon />\n                </IconButton>\n              </TextField.Slot>\n              <TextField.Slot>\n                <IconButton size=\"3\" variant=\"ghost\" color=\"gray\">\n                  <EyeClosedIcon />\n                </IconButton>\n              </TextField.Slot>\n            </TextField.Root>\n\n            <TextField.Root size=\"3\" disabled placeholder=\"Your password\">\n              <TextField.Slot>\n                <IconButton size=\"3\" variant=\"ghost\" color=\"gray\">\n                  <LockClosedIcon />\n                </IconButton>\n              </TextField.Slot>\n              <TextField.Slot>\n                <IconButton size=\"3\" variant=\"ghost\" color=\"gray\">\n                  <EyeClosedIcon />\n                </IconButton>\n              </TextField.Slot>\n            </TextField.Root>\n          </Flex>\n\n          <Flex direction=\"column\" align=\"start\" gap=\"3\">\n            <Heading size=\"3\" mb=\"2\">\n              Mixed content\n            </Heading>\n\n            <TextField.Root size=\"1\" placeholder=\"Search\">\n              <TextField.Slot>\n                <InfoCircledIcon />\n              </TextField.Slot>\n              <TextField.Slot>\n                <IconButton size=\"1\" variant=\"ghost\" color=\"gray\">\n                  <Share2Icon />\n                </IconButton>\n                <IconButton size=\"1\" variant=\"ghost\" color=\"gray\">\n                  <StarIcon />\n                </IconButton>\n              </TextField.Slot>\n            </TextField.Root>\n\n            <TextField.Root size=\"2\" placeholder=\"Search\">\n              <TextField.Slot>\n                <InfoCircledIcon />\n              </TextField.Slot>\n              <TextField.Slot>\n                <IconButton size=\"1\" variant=\"ghost\" color=\"gray\">\n                  <Share2Icon />\n                </IconButton>\n                <IconButton size=\"1\" variant=\"ghost\" color=\"gray\">\n                  <StarIcon />\n                </IconButton>\n              </TextField.Slot>\n            </TextField.Root>\n\n            <TextField.Root size=\"3\" placeholder=\"Search\">\n              <TextField.Slot>\n                <InfoCircledIcon />\n              </TextField.Slot>\n              <TextField.Slot>\n                <IconButton size=\"2\" variant=\"ghost\" color=\"gray\">\n                  <Share2Icon />\n                </IconButton>\n                <IconButton size=\"2\" variant=\"ghost\" color=\"gray\">\n                  <StarIcon />\n                </IconButton>\n              </TextField.Slot>\n            </TextField.Root>\n\n            <TextField.Root size=\"3\" placeholder=\"Search\">\n              <TextField.Slot>\n                <InfoCircledIcon />\n              </TextField.Slot>\n              <TextField.Slot gap=\"4\">\n                <IconButton size=\"3\" variant=\"ghost\" color=\"gray\">\n                  <Share2Icon />\n                </IconButton>\n                <IconButton size=\"3\" variant=\"ghost\" color=\"gray\">\n                  <StarIcon />\n                </IconButton>\n              </TextField.Slot>\n            </TextField.Root>\n\n            <TextField.Root size=\"3\" disabled placeholder=\"Search\">\n              <TextField.Slot>\n                <InfoCircledIcon />\n              </TextField.Slot>\n              <TextField.Slot gap=\"4\">\n                <IconButton size=\"3\" variant=\"ghost\" color=\"gray\">\n                  <Share2Icon />\n                </IconButton>\n                <IconButton size=\"3\" variant=\"ghost\" color=\"gray\">\n                  <StarIcon />\n                </IconButton>\n              </TextField.Slot>\n            </TextField.Root>\n          </Flex>\n\n          <Flex direction=\"column\" align=\"start\" gap=\"3\">\n            <Heading size=\"3\" mb=\"2\">\n              Fringe (overrides)\n            </Heading>\n\n            <TextField.Root size=\"1\" placeholder=\"Search\">\n              <TextField.Slot>\n                <InfoCircledIcon />\n              </TextField.Slot>\n              <TextField.Slot pr=\"0\" gap=\"1\">\n                <IconButton size=\"1\" variant=\"soft\" color=\"gray\">\n                  <Share2Icon />\n                </IconButton>\n                <IconButton size=\"1\" variant=\"soft\" color=\"gray\">\n                  <StarIcon />\n                </IconButton>\n              </TextField.Slot>\n            </TextField.Root>\n\n            <TextField.Root size=\"2\" placeholder=\"Search\">\n              <TextField.Slot>\n                <InfoCircledIcon />\n              </TextField.Slot>\n              <TextField.Slot px=\"1\" gap=\"1\">\n                <IconButton size=\"1\" variant=\"soft\" color=\"gray\">\n                  <Share2Icon />\n                </IconButton>\n                <IconButton size=\"1\" variant=\"soft\" color=\"gray\">\n                  <StarIcon />\n                </IconButton>\n              </TextField.Slot>\n            </TextField.Root>\n\n            <TextField.Root size=\"3\" placeholder=\"Search\">\n              <TextField.Slot>\n                <InfoCircledIcon />\n              </TextField.Slot>\n              <TextField.Slot px=\"1\" gap=\"1\">\n                <IconButton size=\"2\" variant=\"soft\" radius=\"full\">\n                  <Share2Icon />\n                </IconButton>\n                <IconButton size=\"2\" variant=\"soft\" radius=\"full\">\n                  <StarIcon />\n                </IconButton>\n              </TextField.Slot>\n            </TextField.Root>\n\n            <TextField.Root size=\"3\" placeholder=\"your.email\" defaultValue=\"benoit\">\n              <TextField.Slot>\n                <EnvelopeOpenIcon />\n              </TextField.Slot>\n              <TextField.Slot px=\"1\" gap=\"2\">\n                <Text size=\"3\">@workos.com</Text>\n                <Tooltip content=\"Send email\">\n                  <IconButton variant=\"solid\">\n                    <PaperPlaneIcon />\n                  </IconButton>\n                </Tooltip>\n              </TextField.Slot>\n            </TextField.Root>\n\n            <TextField.Root size=\"3\" radius=\"full\" placeholder=\"your.email\" defaultValue=\"benoit\">\n              <TextField.Slot>\n                <EnvelopeOpenIcon />\n              </TextField.Slot>\n              <TextField.Slot px=\"1\" gap=\"2\">\n                <Text size=\"3\">@workos.com</Text>\n                <Button variant=\"solid\">Send</Button>\n              </TextField.Slot>\n            </TextField.Root>\n\n            <TextField.Root\n              size=\"3\"\n              radius=\"full\"\n              disabled\n              placeholder=\"your.email\"\n              defaultValue=\"benoit\"\n            >\n              <TextField.Slot>\n                <EnvelopeOpenIcon />\n              </TextField.Slot>\n              <TextField.Slot px=\"1\" gap=\"2\">\n                <Text size=\"3\">@workos.com</Text>\n                <Button variant=\"solid\">Send</Button>\n              </TextField.Slot>\n            </TextField.Root>\n          </Flex>\n\n          <Flex direction=\"column\" align=\"start\" gap=\"3\">\n            <Heading size=\"3\" mb=\"2\">\n              Type date\n            </Heading>\n\n            <TextField.Root size=\"1\" placeholder=\"Date\" type=\"date\" />\n            <TextField.Root size=\"2\" placeholder=\"Date\" type=\"date\" />\n            <TextField.Root size=\"3\" placeholder=\"Date\" type=\"date\" />\n          </Flex>\n\n          <Flex direction=\"column\" align=\"start\" gap=\"3\">\n            <Heading size=\"3\" mb=\"2\">\n              Type datetime-local\n            </Heading>\n\n            <TextField.Root size=\"1\" placeholder=\"Local datetime\" type=\"datetime-local\" />\n            <TextField.Root size=\"2\" placeholder=\"Local datetime\" type=\"datetime-local\" />\n            <TextField.Root size=\"3\" placeholder=\"Local datetime\" type=\"datetime-local\" />\n          </Flex>\n\n          <Flex direction=\"column\" align=\"start\" gap=\"3\">\n            <Heading size=\"3\" mb=\"2\">\n              Type month\n            </Heading>\n\n            <TextField.Root size=\"1\" placeholder=\"Month\" type=\"month\" />\n            <TextField.Root size=\"2\" placeholder=\"Month\" type=\"month\" />\n            <TextField.Root size=\"3\" placeholder=\"Month\" type=\"month\" />\n          </Flex>\n\n          <Flex direction=\"column\" align=\"start\" gap=\"3\">\n            <Heading size=\"3\" mb=\"2\">\n              Type number\n            </Heading>\n\n            <TextField.Root size=\"1\" placeholder=\"Number\" type=\"number\" />\n            <TextField.Root size=\"2\" placeholder=\"Number\" type=\"number\" />\n            <TextField.Root size=\"3\" placeholder=\"Number\" type=\"number\" />\n          </Flex>\n\n          <Flex direction=\"column\" align=\"start\" gap=\"3\">\n            <Heading size=\"3\" mb=\"2\">\n              Type search\n            </Heading>\n\n            <TextField.Root size=\"1\" placeholder=\"Search\" type=\"search\" />\n            <TextField.Root size=\"2\" placeholder=\"Search\" type=\"search\" />\n            <TextField.Root size=\"3\" placeholder=\"Search\" type=\"search\" />\n          </Flex>\n\n          <Flex direction=\"column\" align=\"start\" gap=\"3\">\n            <Heading size=\"3\" mb=\"2\">\n              Type time\n            </Heading>\n\n            <TextField.Root size=\"1\" placeholder=\"Time\" type=\"time\" />\n\n            <Flex gap=\"4\">\n              <TextField.Root size=\"2\" placeholder=\"Time\" type=\"time\" />\n\n              <TextField.Root size=\"2\" placeholder=\"Time\" type=\"time\">\n                <TextField.Slot side=\"right\" pr=\"1\">\n                  <Button size=\"1\">Submit</Button>\n                </TextField.Slot>\n              </TextField.Root>\n            </Flex>\n\n            <Flex gap=\"4\">\n              <TextField.Root size=\"3\" placeholder=\"Time\" type=\"time\" />\n\n              <TextField.Root size=\"3\" placeholder=\"Time\" type=\"time\">\n                <TextField.Slot side=\"right\" pr=\"2\">\n                  <Button size=\"1\">Submit</Button>\n                </TextField.Slot>\n              </TextField.Root>\n            </Flex>\n          </Flex>\n        </Grid>\n      </Section>\n    </Container>\n  );\n}\n"
  },
  {
    "path": "apps/playground/app/(themeable)/test/webkit-tap-highlight-color/page.tsx",
    "content": "'use client';\nimport type * as React from 'react';\nimport {\n  Container,\n  Section,\n  Card,\n  Text,\n  Box,\n  Button,\n  Flex,\n  RadioCards,\n  CheckboxCards,\n  DropdownMenu,\n  Link,\n  CheckboxGroup,\n} from '@radix-ui/themes';\n\nimport { TrashIcon } from '@radix-ui/react-icons';\n\nexport default function Test() {\n  return (\n    <Container size=\"1\" py=\"8\" mx=\"4\">\n      <Section>\n        <Flex align=\"start\" direction=\"column\" gap=\"5\">\n          <Button variant=\"classic\">Click me</Button>\n          <Button variant=\"solid\">Click me</Button>\n          <Button variant=\"outline\">Click me</Button>\n          <Button variant=\"surface\">Click me</Button>\n          <Button variant=\"soft\">Click me</Button>\n          <Button variant=\"ghost\">Click me</Button>\n\n          <Card asChild>\n            <button>\n              <Text as=\"p\" size=\"2\" weight=\"bold\" trim=\"start\">\n                Button\n              </Text>\n              <Text as=\"p\" color=\"gray\" size=\"2\" trim=\"end\">\n                That looks like card\n              </Text>\n            </button>\n          </Card>\n\n          <DropdownMenu.Root>\n            <DropdownMenu.Trigger>\n              <Button>\n                Dropdown Menu <DropdownMenu.TriggerIcon />\n              </Button>\n            </DropdownMenu.Trigger>\n            <DropdownMenuContentDemo />\n          </DropdownMenu.Root>\n\n          <Link href=\"#\" onClick={(event) => event.preventDefault()}>\n            Link\n          </Link>\n\n          <CheckboxGroup.Root defaultValue={['1']}>\n            <CheckboxGroup.Item value=\"1\">Checkbox 1</CheckboxGroup.Item>\n            <CheckboxGroup.Item value=\"2\">Checkbox 2</CheckboxGroup.Item>\n            <CheckboxGroup.Item value=\"3\">Checkbox 3</CheckboxGroup.Item>\n          </CheckboxGroup.Root>\n\n          <Box width=\"100%\">\n            <CheckboxCards.Root defaultValue={['0']} size=\"2\" gap=\"2\" columns=\"1\">\n              <CheckboxCards.Item value=\"0\">Node.js</CheckboxCards.Item>\n              <CheckboxCards.Item value=\"1\">Ruby</CheckboxCards.Item>\n              <CheckboxCards.Item value=\"2\">Go</CheckboxCards.Item>\n            </CheckboxCards.Root>\n          </Box>\n\n          <Box width=\"100%\">\n            <RadioCards.Root defaultValue=\"0\" size=\"2\" gap=\"2\" columns=\"1\">\n              <RadioCards.Item value=\"0\">Node.js</RadioCards.Item>\n              <RadioCards.Item value=\"1\">Ruby</RadioCards.Item>\n              <RadioCards.Item value=\"2\">Go</RadioCards.Item>\n            </RadioCards.Root>\n          </Box>\n        </Flex>\n      </Section>\n    </Container>\n  );\n}\n\nfunction DropdownMenuContentDemo(props: React.ComponentProps<typeof DropdownMenu.Content>) {\n  return (\n    <DropdownMenu.Content {...props}>\n      <DropdownMenu.Item shortcut=\"⌘+T\">New Tab</DropdownMenu.Item>\n      <DropdownMenu.Item shortcut=\"⌘+N\">New Window</DropdownMenu.Item>\n      <DropdownMenu.Item shortcut=\"⇧+⌘+N\" disabled>\n        New Private Window\n      </DropdownMenu.Item>\n      <DropdownMenu.Sub>\n        <DropdownMenu.SubTrigger>More Tools</DropdownMenu.SubTrigger>\n\n        <DropdownMenu.SubContent>\n          <DropdownMenu.Item shortcut=\"⌘+S\">Save Page As…</DropdownMenu.Item>\n          <DropdownMenu.Item>Create Shortcut…</DropdownMenu.Item>\n          <DropdownMenu.Item>Name Window…</DropdownMenu.Item>\n          <DropdownMenu.Separator />\n          <DropdownMenu.Item>Developer Tools</DropdownMenu.Item>\n          <DropdownMenu.Item color=\"red\">\n            <Box asChild mx=\"-3px\">\n              <TrashIcon />\n            </Box>\n            Delete\n          </DropdownMenu.Item>\n        </DropdownMenu.SubContent>\n      </DropdownMenu.Sub>\n\n      <DropdownMenu.Separator />\n      <DropdownMenu.Group>\n        <DropdownMenu.Label>Other</DropdownMenu.Label>\n        <DropdownMenu.Item shortcut=\"⌘+P\">Print</DropdownMenu.Item>\n        <DropdownMenu.Item shortcut=\"⌘+Q\" asChild>\n          <a href=\"#logout\">Logout</a>\n        </DropdownMenu.Item>\n      </DropdownMenu.Group>\n\n      {props.variant === 'solid' && (\n        <>\n          <DropdownMenu.Separator />\n\n          <DropdownMenu.CheckboxItem shortcut=\"⌘+B\" checked>\n            Show Bookmarks\n          </DropdownMenu.CheckboxItem>\n          <DropdownMenu.CheckboxItem>Show Full URLs</DropdownMenu.CheckboxItem>\n\n          <DropdownMenu.Separator />\n\n          <DropdownMenu.Label>People</DropdownMenu.Label>\n          <DropdownMenu.RadioGroup value=\"pedro\">\n            <DropdownMenu.RadioItem value=\"pedro\">Pedro Duarte</DropdownMenu.RadioItem>\n            <DropdownMenu.RadioItem value=\"colm\">Colm Tuite</DropdownMenu.RadioItem>\n          </DropdownMenu.RadioGroup>\n\n          <DropdownMenu.Separator />\n\n          <DropdownMenu.Item color=\"red\">Delete</DropdownMenu.Item>\n        </>\n      )}\n    </DropdownMenu.Content>\n  );\n}\n"
  },
  {
    "path": "apps/playground/app/api/avatar/route.ts",
    "content": "import { NextResponse } from 'next/server';\n\nasync function wait(ms: number) {\n  return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nexport async function GET() {\n  await wait(1000);\n  return NextResponse.redirect(\n    'https://images.unsplash.com/photo-1492633423870-43d1cd2775eb?&w=160&h=160&dpr=2&q=80',\n  );\n}\n"
  },
  {
    "path": "apps/playground/app/globals.css",
    "content": "body {\n  margin: 0;\n}\n\nhtml,\nbody {\n  height: 100%;\n}\n\n.radix-themes:where([data-is-root-theme='true']) {\n  min-height: 100dvh;\n}\n"
  },
  {
    "path": "apps/playground/app/layout.tsx",
    "content": "import * as React from 'react';\nimport './globals.css';\nimport '@radix-ui/themes/styles.css';\nimport type { Metadata } from 'next';\n\nexport const metadata: Metadata = {\n  title: 'Radix Themes playground',\n  description: 'A playground of Radix Themes components',\n};\n\nexport default function RootLayout({ children }: { children: React.ReactNode }) {\n  return (\n    <html lang=\"en\">\n      <body>{children}</body>\n    </html>\n  );\n}\n"
  },
  {
    "path": "apps/playground/app/next-theme-provider.tsx",
    "content": "'use client';\n\nimport { ThemeProvider } from 'next-themes';\n\nexport function NextThemeProvider({ children }) {\n  return <ThemeProvider attribute=\"class\">{children}</ThemeProvider>;\n}\n"
  },
  {
    "path": "apps/playground/components/loading-buttons.tsx",
    "content": "'use client';\n\nimport * as React from 'react';\nimport { ArrowRightIcon, StarIcon } from '@radix-ui/react-icons';\nimport { Button, Em, Flex, IconButton, Spinner, Text } from '@radix-ui/themes';\nimport { buttonPropDefs } from '@radix-ui/themes/props';\nimport { mapButtonSizeToSpinnerSize, mapResponsiveProp } from '@radix-ui/themes/helpers';\n\nexport function LoadingButtons() {\n  const [loading1, onClick1] = useLoading();\n  const [loading2, onClick2] = useLoading();\n  const [loading3, onClick3] = useLoading();\n  const [loading4, onClick4] = useLoading();\n\n  return (\n    <Flex direction=\"column\" gap=\"5\">\n      {buttonPropDefs.size.values.map((size) => (\n        <Flex key={size} gap=\"5\">\n          <Flex direction=\"column\" align=\"center\" gap=\"5\">\n            {([undefined, 'ghost'] as const).map((variant, i) => (\n              <IconButton\n                key={i}\n                loading={loading1}\n                onClick={onClick1}\n                size={size}\n                variant={variant}\n              >\n                <StarIcon\n                  width={mapButtonSizeToIconSize(size)}\n                  height={mapButtonSizeToIconSize(size)}\n                />\n              </IconButton>\n            ))}\n          </Flex>\n\n          <Flex direction=\"column\" align=\"center\" gap=\"5\">\n            {([undefined, 'ghost'] as const).map((variant, i) => (\n              <Button key={i} loading={loading2} onClick={onClick2} size={size} variant={variant}>\n                Continue\n              </Button>\n            ))}\n          </Flex>\n\n          <Flex direction=\"column\" align=\"center\" gap=\"5\">\n            {([undefined, 'ghost'] as const).map((variant, i) => (\n              <Button key={i} loading={loading3} onClick={onClick3} size={size} variant={variant}>\n                Continue\n                <ArrowRightIcon\n                  width={mapButtonSizeToIconSize(size)}\n                  height={mapButtonSizeToIconSize(size)}\n                />\n              </Button>\n            ))}\n          </Flex>\n\n          <Flex direction=\"column\" align=\"center\" gap=\"5\">\n            {([undefined, 'ghost'] as const).map((variant, i) => (\n              <Button key={i} disabled={loading4} onClick={onClick4} size={size} variant={variant}>\n                Continue\n                <Spinner\n                  loading={loading4}\n                  size={mapResponsiveProp(size, mapButtonSizeToSpinnerSize)}\n                >\n                  <ArrowRightIcon\n                    width={mapButtonSizeToIconSize(size)}\n                    height={mapButtonSizeToIconSize(size)}\n                  />\n                </Spinner>\n              </Button>\n            ))}\n          </Flex>\n        </Flex>\n      ))}\n\n      <Text as=\"p\">\n        Lorem ipsum, dolor sit amet{' '}\n        <span style={{ display: 'inline-block' }}>\n          <Spinner>\n            <Em>consectetur</Em>\n          </Spinner>\n        </span>{' '}\n        adipisicing elit. Eum veritatis, cupiditate inventore recusandae sapiente corporis non\n        similique facere esse praesentium? Dolorum pariatur omnis doloremque unde nam rem ipsa velit\n        vitae.\n      </Text>\n    </Flex>\n  );\n}\n\nfunction mapButtonSizeToIconSize(size: (typeof buttonPropDefs.size.values)[number]) {\n  switch (size) {\n    case '1':\n    case '2':\n      return '16';\n    case '3':\n      return '18';\n    case '4':\n      return '20';\n  }\n}\n\nfunction useLoading() {\n  const [loading, setLoading] = React.useState(false);\n  const handleClick = React.useCallback(() => {\n    setLoading(true);\n    setTimeout(() => setLoading(false), 2000);\n  }, []);\n  return [loading, handleClick] as const;\n}\n"
  },
  {
    "path": "apps/playground/components/snapshot-logo.tsx",
    "content": "export function SnapshotLogo(props: any) {\n  return (\n    <svg\n      width=\"559\"\n      height=\"191\"\n      viewBox=\"0 0 559 191\"\n      fill=\"none\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      {...props}\n    >\n      <path\n        d=\"M106.396 60H74.3965V50H106.396C117.442 50 126.396 58.9543 126.396 70V102H116.396V70C116.396 64.4772 111.919 60 106.396 60Z\"\n        fill=\"var(--accent-9)\"\n      />\n      <path\n        d=\"M70.3965 116H102.396V126H70.3965C59.3508 126 50.3965 117.046 50.3965 106L50.3965 74H60.3965L60.3965 106C60.3965 111.523 64.8736 116 70.3965 116Z\"\n        fill=\"var(--accent-9)\"\n      />\n      <path\n        fillRule=\"evenodd\"\n        clipRule=\"evenodd\"\n        d=\"M108.396 88C108.396 99.0457 99.4422 108 88.3965 108C77.3508 108 68.3965 99.0457 68.3965 88C68.3965 76.9543 77.3508 68 88.3965 68C99.4422 68 108.396 76.9543 108.396 88ZM98.3965 88C98.3965 93.5229 93.9193 98 88.3965 98C82.8736 98 78.3965 93.5229 78.3965 88C78.3965 82.4772 82.8736 78 88.3965 78C93.9193 78 98.3965 82.4772 98.3965 88Z\"\n        fill=\"var(--accent-9)\"\n      />\n      <path\n        d=\"M169.071 119.631C165.284 119.631 161.875 118.982 158.844 117.683C155.814 116.33 153.433 114.437 151.702 112.002C149.97 109.567 149.104 106.726 149.104 103.479H159.007C159.223 105.914 160.17 107.916 161.848 109.485C163.579 111.055 165.987 111.839 169.071 111.839C172.264 111.839 174.753 111.082 176.539 109.567C178.324 107.997 179.217 105.995 179.217 103.56C179.217 101.666 178.649 100.124 177.513 98.9338C176.43 97.7434 175.051 96.8235 173.373 96.1742C171.75 95.5248 169.477 94.8214 166.555 94.0639C162.876 93.0899 159.873 92.1159 157.546 91.1419C155.273 90.1138 153.325 88.5445 151.702 86.4342C150.078 84.3239 149.267 81.5101 149.267 77.9929C149.267 74.7463 150.078 71.9054 151.702 69.4705C153.325 67.0355 155.598 65.1686 158.52 63.87C161.442 62.5713 164.824 61.922 168.666 61.922C174.131 61.922 178.595 63.3018 182.058 66.0615C185.575 68.767 187.523 72.5007 187.902 77.2624H177.675C177.513 75.2062 176.539 73.4476 174.753 71.9866C172.967 70.5256 170.614 69.7951 167.692 69.7951C165.04 69.7951 162.876 70.4715 161.198 71.8243C159.521 73.1771 158.682 75.125 158.682 77.6683C158.682 79.3998 159.196 80.8337 160.224 81.9701C161.306 83.0523 162.659 83.9181 164.283 84.5674C165.906 85.2167 168.124 85.9202 170.938 86.6777C174.672 87.7058 177.702 88.7339 180.029 89.762C182.41 90.7901 184.412 92.3864 186.035 94.5508C187.713 96.6612 188.551 99.502 188.551 103.073C188.551 105.941 187.767 108.647 186.198 111.19C184.682 113.733 182.437 115.789 179.461 117.359C176.539 118.874 173.076 119.631 169.071 119.631Z\"\n        fill=\"var(--accent-12)\"\n      />\n      <path\n        d=\"M217.975 73.6099C221.493 73.6099 224.631 74.3404 227.391 75.8014C230.204 77.2624 232.396 79.4269 233.965 82.2947C235.534 85.1626 236.319 88.6257 236.319 92.684V119.063H227.147V94.0639C227.147 90.0596 226.146 87.0024 224.144 84.8921C222.142 82.7276 219.409 81.6454 215.946 81.6454C212.483 81.6454 209.723 82.7276 207.667 84.8921C205.665 87.0024 204.664 90.0596 204.664 94.0639V119.063H195.411V74.3404H204.664V79.4539C206.179 77.6141 208.1 76.1802 210.427 75.1521C212.808 74.124 215.324 73.6099 217.975 73.6099Z\"\n        fill=\"var(--accent-12)\"\n      />\n      <path\n        d=\"M240.979 96.4988C240.979 92.0076 241.899 88.0305 243.739 84.5674C245.633 81.1043 248.176 78.4258 251.368 76.5319C254.615 74.5839 258.186 73.6099 262.082 73.6099C265.6 73.6099 268.657 74.3134 271.254 75.7203C273.906 77.073 276.016 78.7775 277.585 80.8337V74.3404H286.919V119.063H277.585V112.407C276.016 114.518 273.878 116.276 271.173 117.683C268.467 119.09 265.383 119.794 261.92 119.794C258.078 119.794 254.561 118.82 251.368 116.872C248.176 114.869 245.633 112.11 243.739 108.593C241.899 105.021 240.979 100.99 240.979 96.4988ZM277.585 96.6612C277.585 93.5769 276.936 90.8984 275.637 88.6257C274.393 86.3531 272.742 84.6215 270.686 83.4311C268.63 82.2406 266.411 81.6454 264.03 81.6454C261.649 81.6454 259.431 82.2406 257.375 83.4311C255.318 84.5674 253.641 86.2719 252.342 88.5445C251.098 90.7631 250.476 93.4145 250.476 96.4988C250.476 99.5832 251.098 102.289 252.342 104.615C253.641 106.942 255.318 108.728 257.375 109.972C259.485 111.163 261.704 111.758 264.03 111.758C266.411 111.758 268.63 111.163 270.686 109.972C272.742 108.782 274.393 107.05 275.637 104.778C276.936 102.451 277.585 99.7455 277.585 96.6612Z\"\n        fill=\"var(--accent-12)\"\n      />\n      <path\n        d=\"M304.267 80.9149C305.836 78.8587 307.974 77.1271 310.679 75.7203C313.385 74.3134 316.442 73.6099 319.851 73.6099C323.747 73.6099 327.291 74.5839 330.484 76.5319C333.731 78.4258 336.274 81.1043 338.114 84.5674C339.953 88.0305 340.873 92.0076 340.873 96.4988C340.873 100.99 339.953 105.021 338.114 108.593C336.274 112.11 333.731 114.869 330.484 116.872C327.291 118.82 323.747 119.794 319.851 119.794C316.442 119.794 313.412 119.117 310.761 117.764C308.109 116.358 305.945 114.626 304.267 112.57V140.329H295.014V74.3404H304.267V80.9149ZM331.458 96.4988C331.458 93.4145 330.809 90.7631 329.51 88.5445C328.265 86.2719 326.588 84.5674 324.478 83.4311C322.421 82.2406 320.203 81.6454 317.822 81.6454C315.495 81.6454 313.277 82.2406 311.166 83.4311C309.11 84.6215 307.433 86.3531 306.134 88.6257C304.89 90.8984 304.267 93.5769 304.267 96.6612C304.267 99.7455 304.89 102.451 306.134 104.778C307.433 107.05 309.11 108.782 311.166 109.972C313.277 111.163 315.495 111.758 317.822 111.758C320.203 111.758 322.421 111.163 324.478 109.972C326.588 108.728 328.265 106.942 329.51 104.615C330.809 102.289 331.458 99.5832 331.458 96.4988Z\"\n        fill=\"var(--accent-12)\"\n      />\n      <path\n        d=\"M364.552 119.631C360.765 119.631 357.356 118.982 354.325 117.683C351.295 116.33 348.914 114.437 347.183 112.002C345.451 109.567 344.585 106.726 344.585 103.479H354.488C354.704 105.914 355.651 107.916 357.328 109.485C359.06 111.055 361.468 111.839 364.552 111.839C367.745 111.839 370.234 111.082 372.02 109.567C373.805 107.997 374.698 105.995 374.698 103.56C374.698 101.666 374.13 100.124 372.994 98.9338C371.911 97.7434 370.532 96.8235 368.854 96.1742C367.231 95.5248 364.958 94.8214 362.036 94.0639C358.357 93.0899 355.353 92.1159 353.027 91.1419C350.754 90.1138 348.806 88.5445 347.183 86.4342C345.559 84.3239 344.748 81.5101 344.748 77.9929C344.748 74.7463 345.559 71.9054 347.183 69.4705C348.806 67.0355 351.079 65.1686 354.001 63.87C356.923 62.5713 360.305 61.922 364.146 61.922C369.612 61.922 374.076 63.3018 377.539 66.0615C381.056 68.767 383.004 72.5007 383.383 77.2624H373.156C372.994 75.2062 372.02 73.4476 370.234 71.9866C368.448 70.5256 366.094 69.7951 363.172 69.7951C360.521 69.7951 358.357 70.4715 356.679 71.8243C355.002 73.1771 354.163 75.125 354.163 77.6683C354.163 79.3998 354.677 80.8337 355.705 81.9701C356.787 83.0523 358.14 83.9181 359.763 84.5674C361.387 85.2167 363.605 85.9202 366.419 86.6777C370.153 87.7058 373.183 88.7339 375.51 89.762C377.891 90.7901 379.893 92.3864 381.516 94.5508C383.194 96.6612 384.032 99.502 384.032 103.073C384.032 105.941 383.248 108.647 381.678 111.19C380.163 113.733 377.918 115.789 374.942 117.359C372.02 118.874 368.557 119.631 364.552 119.631Z\"\n        fill=\"var(--accent-12)\"\n      />\n      <path\n        d=\"M414.024 73.6099C417.433 73.6099 420.464 74.3404 423.115 75.8014C425.821 77.2624 427.931 79.4269 429.446 82.2947C431.015 85.1626 431.8 88.6257 431.8 92.684V119.063H422.628V94.0639C422.628 90.0596 421.627 87.0024 419.625 84.8921C417.623 82.7276 414.89 81.6454 411.427 81.6454C407.964 81.6454 405.204 82.7276 403.148 84.8921C401.146 87.0024 400.145 90.0596 400.145 94.0639V119.063H390.892V59H400.145V79.5351C401.714 77.6412 403.689 76.1802 406.07 75.1521C408.505 74.124 411.157 73.6099 414.024 73.6099Z\"\n        fill=\"var(--accent-12)\"\n      />\n      <path\n        d=\"M458.943 119.794C454.722 119.794 450.908 118.847 447.499 116.953C444.09 115.005 441.411 112.299 439.463 108.836C437.515 105.319 436.541 101.261 436.541 96.6612C436.541 92.1159 437.542 88.0846 439.544 84.5674C441.546 81.0502 444.279 78.3446 447.742 76.4508C451.205 74.5569 455.074 73.6099 459.349 73.6099C463.624 73.6099 467.493 74.5569 470.956 76.4508C474.419 78.3446 477.151 81.0502 479.153 84.5674C481.156 88.0846 482.157 92.1159 482.157 96.6612C482.157 101.206 481.129 105.238 479.072 108.755C477.016 112.272 474.202 115.005 470.631 116.953C467.114 118.847 463.218 119.794 458.943 119.794ZM458.943 111.758C461.324 111.758 463.542 111.19 465.599 110.054C467.709 108.917 469.413 107.213 470.712 104.94C472.011 102.667 472.66 99.9078 472.66 96.6612C472.66 93.4145 472.038 90.6819 470.793 88.4634C469.549 86.1907 467.898 84.4862 465.842 83.3499C463.786 82.2136 461.567 81.6454 459.187 81.6454C456.806 81.6454 454.587 82.2136 452.531 83.3499C450.529 84.4862 448.933 86.1907 447.742 88.4634C446.552 90.6819 445.956 93.4145 445.956 96.6612C445.956 101.477 447.174 105.211 449.609 107.862C452.098 110.459 455.209 111.758 458.943 111.758Z\"\n        fill=\"var(--accent-12)\"\n      />\n      <path\n        d=\"M498.04 81.8889V106.645C498.04 108.322 498.419 109.54 499.177 110.297C499.988 111.001 501.341 111.352 503.235 111.352H508.917V119.063H501.612C497.445 119.063 494.253 118.089 492.034 116.141C489.816 114.193 488.706 111.028 488.706 106.645V81.8889H483.431V74.3404H488.706V63.2206H498.04V74.3404H508.917V81.8889H498.04Z\"\n        fill=\"var(--accent-12)\"\n      />\n    </svg>\n  );\n}\n"
  },
  {
    "path": "apps/playground/css.d.ts",
    "content": "// My css.d.ts file\nimport type * as CSS from 'csstype';\n\ndeclare module 'csstype' {\n  interface Properties {\n    // WebkitRocketLauncher?: string;\n\n    // Add a CSS Custom Property\n    // '--theme-color'?: 'black' | 'white';\n\n    // Allow namespaced CSS Custom Properties\n    // [index: `--theme-${string}`]: any;\n\n    // Allow any CSS Custom Properties\n    [index: `--${string}`]: any;\n\n    // ...or allow any other property\n    // [index: string]: any;\n  }\n}\n"
  },
  {
    "path": "apps/playground/eslint.config.mjs",
    "content": "import nextCoreWebVitals from 'eslint-config-next/core-web-vitals';\nimport nextTypescript from 'eslint-config-next/typescript';\n\nconst eslintConfig = [\n  ...nextCoreWebVitals,\n  ...nextTypescript,\n  {\n    ignores: ['node_modules/**', '.next/**', 'out/**', 'build/**', 'next-env.d.ts'],\n  },\n  {\n    rules: {\n      '@next/next/no-img-element': 'off',\n      '@typescript-eslint/no-unused-vars': [\n        'warn',\n        {\n          argsIgnorePattern: '^_',\n          varsIgnorePattern: '^_',\n          caughtErrorsIgnorePattern: '^_',\n          destructuredArrayIgnorePattern: '^_',\n          ignoreRestSiblings: true,\n        },\n      ],\n    },\n  },\n];\n\nexport default eslintConfig;\n"
  },
  {
    "path": "apps/playground/next.config.mjs",
    "content": "// @ts-check\nimport path from 'node:path';\n\n/** @type {import('next').NextConfig} */\nconst nextConfig = {\n  reactStrictMode: true,\n  transpilePackages: ['@radix-ui/themes'],\n  outputFileTracingRoot: path.resolve(import.meta.dirname, '../..'),\n  async redirects() {\n    return [\n      {\n        source: '/',\n        destination: '/sink',\n        permanent: false,\n      },\n    ];\n  },\n};\n\nexport default nextConfig;\n"
  },
  {
    "path": "apps/playground/package.json",
    "content": "{\n  \"name\": \"playground\",\n  \"version\": \"1.0.0\",\n  \"private\": true,\n  \"scripts\": {\n    \"dev\": \"next dev\",\n    \"build\": \"next build\",\n    \"start\": \"next start\",\n    \"clean\": \"rm -rf node_modules .next .turbo playwright-report test-results\",\n    \"lint\": \"tsc --noEmit\",\n    \"test:vr\": \"playwright test\",\n    \"test:vr:ui\": \"playwright test --ui\",\n    \"test:vr:update\": \"playwright test --update-snapshots\"\n  },\n  \"dependencies\": {\n    \"@radix-ui/react-icons\": \"^1.3.2\",\n    \"@radix-ui/themes\": \"workspace:*\",\n    \"@types/react\": \"^19.2.10\",\n    \"@types/react-dom\": \"^19.2.3\",\n    \"next\": \"^16.1.6\",\n    \"next-themes\": \"0.4.6\",\n    \"radix-ui\": \"^1.4.3\",\n    \"react\": \"^19.2.4\",\n    \"react-dom\": \"^19.2.4\",\n    \"react-use\": \"^17.6.0\",\n    \"seedrandom\": \"3.0.5\"\n  },\n  \"devDependencies\": {\n    \"@playwright/test\": \"^1.50.0\",\n    \"eslint\": \"^9.39.2\",\n    \"eslint-config-next\": \"16.1.6\",\n    \"typescript\": \"^5.9.3\"\n  }\n}\n"
  },
  {
    "path": "apps/playground/playwright.config.ts",
    "content": "import { defineConfig, devices } from '@playwright/test';\n\nexport default defineConfig({\n  testDir: './tests',\n  outputDir: './test-results',\n  snapshotDir: './tests/__snapshots__',\n  fullyParallel: true,\n  forbidOnly: !!process.env.CI,\n  retries: process.env.CI ? 2 : 0,\n  reporter: process.env.CI ? 'github' : 'html',\n\n  // Shared settings for all projects\n  use: {\n    baseURL: 'http://localhost:3000',\n    trace: 'on-first-retry',\n    screenshot: 'only-on-failure',\n  },\n\n  // Configure snapshot comparison\n  expect: {\n    toHaveScreenshot: {\n      maxDiffPixelRatio: 0.01,\n    },\n  },\n\n  // Build and run the production server before starting tests\n  webServer: {\n    command: 'pnpm --filter \"playground\" build && pnpm --filter \"playground\" start',\n    url: 'http://localhost:3000',\n    reuseExistingServer: !process.env.CI,\n    timeout: 120 * 1000,\n    stdout: 'pipe',\n    stderr: 'pipe',\n  },\n\n  // Configure projects for major browsers\n  projects: [\n    {\n      name: 'chromium',\n      use: { ...devices['Desktop Chrome'] },\n    },\n    {\n      name: 'firefox',\n      use: { ...devices['Desktop Firefox'] },\n    },\n    {\n      name: 'webkit',\n      use: { ...devices['Desktop Safari'] },\n    },\n  ].filter((project) => (process.env.CI ? project.name === 'chromium' : true)),\n});\n"
  },
  {
    "path": "apps/playground/postcss.config.mjs",
    "content": "// eslint-disable-next-line import/no-anonymous-default-export\nexport default {};\n"
  },
  {
    "path": "apps/playground/tests/visual-regression.spec.ts",
    "content": "import { test, expect } from '@playwright/test';\n\ntest.describe.configure({ mode: 'parallel' });\n\ntest.describe('visual regression', () => {\n  test('/test/appearance', async ({ page }) => {\n    await page.goto('/test/appearance');\n    await page.waitForLoadState('networkidle');\n    await expect(page).toHaveScreenshot('appearance.png', {\n      fullPage: true,\n      animations: 'disabled',\n    });\n  });\n\n  test('/test/as-child', async ({ page }) => {\n    await page.goto('/test/as-child');\n    await page.waitForLoadState('networkidle');\n    await expect(page).toHaveScreenshot('as-child.png', {\n      fullPage: true,\n      animations: 'disabled',\n    });\n  });\n\n  test('/test/avatar', async ({ page }) => {\n    await page.goto('/test/avatar');\n    await page.waitForLoadState('networkidle');\n    await expect(page).toHaveScreenshot('avatar.png', {\n      fullPage: true,\n      animations: 'disabled',\n    });\n  });\n\n  test('/test/checkbox-card', async ({ page }) => {\n    await page.goto('/test/checkbox-card');\n    await page.waitForLoadState('networkidle');\n    await expect(page).toHaveScreenshot('checkbox-card.png', {\n      fullPage: true,\n      animations: 'disabled',\n    });\n  });\n\n  test('/test/classic-button', async ({ page }) => {\n    await page.goto('/test/classic-button');\n    await page.waitForLoadState('networkidle');\n    await expect(page).toHaveScreenshot('classic-button.png', {\n      fullPage: true,\n      animations: 'disabled',\n    });\n  });\n\n  test('/test/data-list', async ({ page }) => {\n    await page.goto('/test/data-list');\n    await page.waitForLoadState('networkidle');\n    await expect(page).toHaveScreenshot('data-list.png', {\n      fullPage: true,\n      animations: 'disabled',\n    });\n  });\n\n  test('/test/dialog', async ({ page }) => {\n    await page.goto('/test/dialog');\n    await page.waitForLoadState('networkidle');\n    await expect(page).toHaveScreenshot('dialog.png', {\n      fullPage: true,\n      animations: 'disabled',\n    });\n  });\n\n  test('/test/grid-align-content', async ({ page }) => {\n    await page.goto('/test/grid-align-content');\n    await page.waitForLoadState('networkidle');\n    await expect(page).toHaveScreenshot('grid-align-content.png', {\n      fullPage: true,\n      animations: 'disabled',\n    });\n  });\n\n  test('/test/grid-align-self', async ({ page }) => {\n    await page.goto('/test/grid-align-self');\n    await page.waitForLoadState('networkidle');\n    await expect(page).toHaveScreenshot('grid-align-self.png', {\n      fullPage: true,\n      animations: 'disabled',\n    });\n  });\n\n  test('/test/grid-area', async ({ page }) => {\n    await page.goto('/test/grid-area');\n    await page.waitForLoadState('networkidle');\n    await expect(page).toHaveScreenshot('grid-area.png', {\n      fullPage: true,\n      animations: 'disabled',\n    });\n  });\n\n  test('/test/grid-justify-items', async ({ page }) => {\n    await page.goto('/test/grid-justify-items');\n    await page.waitForLoadState('networkidle');\n    await expect(page).toHaveScreenshot('grid-justify-items.png', {\n      fullPage: true,\n      animations: 'disabled',\n    });\n  });\n\n  test('/test/grid-justify-self', async ({ page }) => {\n    await page.goto('/test/grid-justify-self');\n    await page.waitForLoadState('networkidle');\n    await expect(page).toHaveScreenshot('grid-justify-self.png', {\n      fullPage: true,\n      animations: 'disabled',\n    });\n  });\n\n  test('/test/high-contrast', async ({ page }) => {\n    await page.goto('/test/high-contrast');\n    await page.waitForLoadState('networkidle');\n    await expect(page).toHaveScreenshot('high-contrast.png', {\n      fullPage: true,\n      animations: 'disabled',\n    });\n  });\n\n  test('/test/inset', async ({ page }) => {\n    await page.goto('/test/inset');\n    await page.waitForLoadState('networkidle');\n    await expect(page).toHaveScreenshot('inset.png', {\n      fullPage: true,\n      animations: 'disabled',\n    });\n  });\n\n  test('/test/radio-card', async ({ page }) => {\n    await page.goto('/test/radio-card');\n    await page.waitForLoadState('networkidle');\n    await expect(page).toHaveScreenshot('radio-card.png', {\n      fullPage: true,\n      animations: 'disabled',\n    });\n  });\n\n  test('/test/reset', async ({ page }) => {\n    await page.goto('/test/reset');\n    await page.waitForLoadState('networkidle');\n    await expect(page).toHaveScreenshot('reset.png', {\n      fullPage: true,\n      animations: 'disabled',\n    });\n  });\n\n  test('/test/responsive', async ({ page }) => {\n    await page.goto('/test/responsive');\n    await page.waitForLoadState('networkidle');\n    await expect(page).toHaveScreenshot('responsive.png', {\n      fullPage: true,\n      animations: 'disabled',\n    });\n  });\n\n  test('/test/skeleton', async ({ page }) => {\n    await page.goto('/test/skeleton');\n    await page.waitForLoadState('networkidle');\n    await expect(page).toHaveScreenshot('skeleton.png', {\n      fullPage: true,\n      animations: 'disabled',\n    });\n  });\n\n  test('/test/tabnav', async ({ page }) => {\n    await page.goto('/test/tabnav');\n    await page.waitForLoadState('networkidle');\n    await expect(page).toHaveScreenshot('tabnav-accounts.png', {\n      fullPage: true,\n      animations: 'disabled',\n    });\n  });\n\n  test('/test/tabnav/documents', async ({ page }) => {\n    await page.goto('/test/tabnav/documents');\n    await page.waitForLoadState('networkidle');\n    await expect(page).toHaveScreenshot('tabnav-documents.png', {\n      fullPage: true,\n      animations: 'disabled',\n    });\n  });\n\n  test('/test/tabnav/settings', async ({ page }) => {\n    await page.goto('/test/tabnav/settings');\n    await page.waitForLoadState('networkidle');\n    await expect(page).toHaveScreenshot('tabnav-settings.png', {\n      fullPage: true,\n      animations: 'disabled',\n    });\n  });\n\n  test('/test/text-wrap', async ({ page }) => {\n    await page.goto('/test/text-wrap');\n    await page.waitForLoadState('networkidle');\n    await expect(page).toHaveScreenshot('text-wrap.png', {\n      fullPage: true,\n      animations: 'disabled',\n    });\n  });\n\n  test('/test/textfield', async ({ page }) => {\n    await page.goto('/test/textfield');\n    await page.waitForLoadState('networkidle');\n    await expect(page).toHaveScreenshot('textfield.png', {\n      fullPage: true,\n      animations: 'disabled',\n    });\n  });\n\n  test('/test/webkit-tap-highlight-color', async ({ page }) => {\n    await page.goto('/test/webkit-tap-highlight-color');\n    await page.waitForLoadState('networkidle');\n    await expect(page).toHaveScreenshot('webkit-tap-highlight-color.png', {\n      fullPage: true,\n      animations: 'disabled',\n    });\n  });\n\n  test('/sink/alert-dialog', async ({ page }) => {\n    await page.goto('/sink/alert-dialog');\n    await page.waitForLoadState('networkidle');\n    await expect(page).toHaveScreenshot('sink-alert-dialog.png', {\n      fullPage: true,\n      animations: 'disabled',\n    });\n  });\n\n  test('/sink/aspect-ratio', async ({ page }) => {\n    await page.goto('/sink/aspect-ratio');\n    await page.waitForLoadState('networkidle');\n    await expect(page).toHaveScreenshot('sink-aspect-ratio.png', {\n      fullPage: true,\n      animations: 'disabled',\n    });\n  });\n\n  test('/sink/avatar', async ({ page }) => {\n    await page.goto('/sink/avatar');\n    await page.waitForLoadState('networkidle');\n    await expect(page).toHaveScreenshot('sink-avatar.png', {\n      fullPage: true,\n      animations: 'disabled',\n    });\n  });\n\n  test('/sink/badge', async ({ page }) => {\n    await page.goto('/sink/badge');\n    await page.waitForLoadState('networkidle');\n    await expect(page).toHaveScreenshot('sink-badge.png', {\n      fullPage: true,\n      animations: 'disabled',\n    });\n  });\n\n  test('/sink/blockquote', async ({ page }) => {\n    await page.goto('/sink/blockquote');\n    await page.waitForLoadState('networkidle');\n    await expect(page).toHaveScreenshot('sink-blockquote.png', {\n      fullPage: true,\n      animations: 'disabled',\n    });\n  });\n\n  test('/sink/button', async ({ page }) => {\n    await page.goto('/sink/button');\n    await page.waitForLoadState('networkidle');\n    await expect(page).toHaveScreenshot('sink-button.png', {\n      fullPage: true,\n      animations: 'disabled',\n    });\n  });\n\n  test('/sink/callout', async ({ page }) => {\n    await page.goto('/sink/callout');\n    await page.waitForLoadState('networkidle');\n    await expect(page).toHaveScreenshot('sink-callout.png', {\n      fullPage: true,\n      animations: 'disabled',\n    });\n  });\n\n  test('/sink/card', async ({ page }) => {\n    await page.goto('/sink/card');\n    await page.waitForLoadState('networkidle');\n    await expect(page).toHaveScreenshot('sink-card.png', {\n      fullPage: true,\n      animations: 'disabled',\n    });\n  });\n\n  test('/sink/checkbox', async ({ page }) => {\n    await page.goto('/sink/checkbox');\n    await page.waitForLoadState('networkidle');\n    await expect(page).toHaveScreenshot('sink-checkbox.png', {\n      fullPage: true,\n      animations: 'disabled',\n    });\n  });\n\n  test('/sink/checkbox-cards', async ({ page }) => {\n    await page.goto('/sink/checkbox-cards');\n    await page.waitForLoadState('networkidle');\n    await expect(page).toHaveScreenshot('sink-checkbox-cards.png', {\n      fullPage: true,\n      animations: 'disabled',\n    });\n  });\n\n  test('/sink/checkbox-group', async ({ page }) => {\n    await page.goto('/sink/checkbox-group');\n    await page.waitForLoadState('networkidle');\n    await expect(page).toHaveScreenshot('sink-checkbox-group.png', {\n      fullPage: true,\n      animations: 'disabled',\n    });\n  });\n\n  test('/sink/code', async ({ page }) => {\n    await page.goto('/sink/code');\n    await page.waitForLoadState('networkidle');\n    await expect(page).toHaveScreenshot('sink-code.png', {\n      fullPage: true,\n      animations: 'disabled',\n    });\n  });\n\n  test('/sink/container', async ({ page }) => {\n    await page.goto('/sink/container');\n    await page.waitForLoadState('networkidle');\n    await expect(page).toHaveScreenshot('sink-container.png', {\n      fullPage: true,\n      animations: 'disabled',\n    });\n  });\n\n  test('/sink/context-menu', async ({ page }) => {\n    await page.goto('/sink/context-menu');\n    await page.waitForLoadState('networkidle');\n    await expect(page).toHaveScreenshot('sink-context-menu.png', {\n      fullPage: true,\n      animations: 'disabled',\n    });\n  });\n\n  test('/sink/cursors', async ({ page }) => {\n    await page.goto('/sink/cursors');\n    await page.waitForLoadState('networkidle');\n    await expect(page).toHaveScreenshot('sink-cursors.png', {\n      fullPage: true,\n      animations: 'disabled',\n    });\n  });\n\n  test('/sink/data-list', async ({ page }) => {\n    await page.goto('/sink/data-list');\n    await page.waitForLoadState('networkidle');\n    await expect(page).toHaveScreenshot('sink-data-list.png', {\n      fullPage: true,\n      animations: 'disabled',\n    });\n  });\n\n  test('/sink/dialog', async ({ page }) => {\n    await page.goto('/sink/dialog');\n    await page.waitForLoadState('networkidle');\n    await expect(page).toHaveScreenshot('sink-dialog.png', {\n      fullPage: true,\n      animations: 'disabled',\n    });\n  });\n\n  test('/sink/dropdown-menu', async ({ page }) => {\n    await page.goto('/sink/dropdown-menu');\n    await page.waitForLoadState('networkidle');\n    await expect(page).toHaveScreenshot('sink-dropdown-menu.png', {\n      fullPage: true,\n      animations: 'disabled',\n    });\n  });\n\n  test('/sink/grid', async ({ page }) => {\n    await page.goto('/sink/grid');\n    await page.waitForLoadState('networkidle');\n    await expect(page).toHaveScreenshot('sink-grid.png', {\n      fullPage: true,\n      animations: 'disabled',\n    });\n  });\n\n  test('/sink/heading', async ({ page }) => {\n    await page.goto('/sink/heading');\n    await page.waitForLoadState('networkidle');\n    await expect(page).toHaveScreenshot('sink-heading.png', {\n      fullPage: true,\n      animations: 'disabled',\n    });\n  });\n\n  test('/sink/hover-card', async ({ page }) => {\n    await page.goto('/sink/hover-card');\n    await page.waitForLoadState('networkidle');\n    await expect(page).toHaveScreenshot('sink-hover-card.png', {\n      fullPage: true,\n      animations: 'disabled',\n    });\n  });\n\n  test('/sink/icon-button', async ({ page }) => {\n    await page.goto('/sink/icon-button');\n    await page.waitForLoadState('networkidle');\n    await expect(page).toHaveScreenshot('sink-icon-button.png', {\n      fullPage: true,\n      animations: 'disabled',\n    });\n  });\n\n  test('/sink/kbd', async ({ page }) => {\n    await page.goto('/sink/kbd');\n    await page.waitForLoadState('networkidle');\n    await expect(page).toHaveScreenshot('sink-kbd.png', {\n      fullPage: true,\n      animations: 'disabled',\n    });\n  });\n\n  test('/sink/link', async ({ page }) => {\n    await page.goto('/sink/link');\n    await page.waitForLoadState('networkidle');\n    await expect(page).toHaveScreenshot('sink-link.png', {\n      fullPage: true,\n      animations: 'disabled',\n    });\n  });\n\n  test('/sink/mixed-nested-themes-test', async ({ page }) => {\n    await page.goto('/sink/mixed-nested-themes-test');\n    await page.waitForLoadState('networkidle');\n    await expect(page).toHaveScreenshot('sink-mixed-nested-themes-test.png', {\n      fullPage: true,\n      animations: 'disabled',\n    });\n  });\n\n  test('/sink/nested-appearances-test', async ({ page }) => {\n    await page.goto('/sink/nested-appearances-test');\n    await page.waitForLoadState('networkidle');\n    await expect(page).toHaveScreenshot('sink-nested-appearances-test.png', {\n      fullPage: true,\n      animations: 'disabled',\n    });\n  });\n\n  test('/sink/nested-colors-test', async ({ page }) => {\n    await page.goto('/sink/nested-colors-test');\n    await page.waitForLoadState('networkidle');\n    await expect(page).toHaveScreenshot('sink-nested-colors-test.png', {\n      fullPage: true,\n      animations: 'disabled',\n    });\n  });\n\n  test('/sink/popover', async ({ page }) => {\n    await page.goto('/sink/popover');\n    await page.waitForLoadState('networkidle');\n    await expect(page).toHaveScreenshot('sink-popover.png', {\n      fullPage: true,\n      animations: 'disabled',\n    });\n  });\n\n  test('/sink/progress', async ({ page }) => {\n    await page.goto('/sink/progress');\n    await page.waitForLoadState('networkidle');\n    await expect(page).toHaveScreenshot('sink-progress.png', {\n      fullPage: true,\n      animations: 'disabled',\n    });\n  });\n\n  test('/sink/radio', async ({ page }) => {\n    await page.goto('/sink/radio');\n    await page.waitForLoadState('networkidle');\n    await expect(page).toHaveScreenshot('sink-radio.png', {\n      fullPage: true,\n      animations: 'disabled',\n    });\n  });\n\n  test('/sink/radio-cards', async ({ page }) => {\n    await page.goto('/sink/radio-cards');\n    await page.waitForLoadState('networkidle');\n    await expect(page).toHaveScreenshot('sink-radio-cards.png', {\n      fullPage: true,\n      animations: 'disabled',\n    });\n  });\n\n  test('/sink/radio-group', async ({ page }) => {\n    await page.goto('/sink/radio-group');\n    await page.waitForLoadState('networkidle');\n    await expect(page).toHaveScreenshot('sink-radio-group.png', {\n      fullPage: true,\n      animations: 'disabled',\n    });\n  });\n\n  test('/sink/scroll-area', async ({ page }) => {\n    await page.goto('/sink/scroll-area');\n    await page.waitForLoadState('networkidle');\n    await expect(page).toHaveScreenshot('sink-scroll-area.png', {\n      fullPage: true,\n      animations: 'disabled',\n    });\n  });\n\n  test('/sink/segmented-control', async ({ page }) => {\n    await page.goto('/sink/segmented-control');\n    await page.waitForLoadState('networkidle');\n    await expect(page).toHaveScreenshot('sink-segmented-control.png', {\n      fullPage: true,\n      animations: 'disabled',\n    });\n  });\n\n  test('/sink/select', async ({ page }) => {\n    await page.goto('/sink/select');\n    await page.waitForLoadState('networkidle');\n    await expect(page).toHaveScreenshot('sink-select.png', {\n      fullPage: true,\n      animations: 'disabled',\n    });\n  });\n\n  test('/sink/separator', async ({ page }) => {\n    await page.goto('/sink/separator');\n    await page.waitForLoadState('networkidle');\n    await expect(page).toHaveScreenshot('sink-separator.png', {\n      fullPage: true,\n      animations: 'disabled',\n    });\n  });\n\n  test('/sink/shadow-tokens', async ({ page }) => {\n    await page.goto('/sink/shadow-tokens');\n    await page.waitForLoadState('networkidle');\n    await expect(page).toHaveScreenshot('sink-shadow-tokens.png', {\n      fullPage: true,\n      animations: 'disabled',\n    });\n  });\n\n  test('/sink/skeleton', async ({ page }) => {\n    await page.goto('/sink/skeleton');\n    await page.waitForLoadState('networkidle');\n    await expect(page).toHaveScreenshot('sink-skeleton.png', {\n      fullPage: true,\n      animations: 'disabled',\n    });\n  });\n\n  test('/sink/slider', async ({ page }) => {\n    await page.goto('/sink/slider');\n    await page.waitForLoadState('networkidle');\n    await expect(page).toHaveScreenshot('sink-slider.png', {\n      fullPage: true,\n      animations: 'disabled',\n    });\n  });\n\n  test('/sink/spinner', async ({ page }) => {\n    await page.goto('/sink/spinner');\n    await page.waitForLoadState('networkidle');\n    await expect(page).toHaveScreenshot('sink-spinner.png', {\n      fullPage: true,\n      animations: 'disabled',\n    });\n  });\n\n  test('/sink/switch', async ({ page }) => {\n    await page.goto('/sink/switch');\n    await page.waitForLoadState('networkidle');\n    await expect(page).toHaveScreenshot('sink-switch.png', {\n      fullPage: true,\n      animations: 'disabled',\n    });\n  });\n\n  test('/sink/tab-nav', async ({ page }) => {\n    await page.goto('/sink/tab-nav');\n    await page.waitForLoadState('networkidle');\n    await expect(page).toHaveScreenshot('sink-tab-nav.png', {\n      fullPage: true,\n      animations: 'disabled',\n    });\n  });\n\n  test('/sink/table', async ({ page }) => {\n    await page.goto('/sink/table');\n    await page.waitForLoadState('networkidle');\n    await expect(page).toHaveScreenshot('sink-table.png', {\n      fullPage: true,\n      animations: 'disabled',\n    });\n  });\n\n  test('/sink/tabs', async ({ page }) => {\n    await page.goto('/sink/tabs');\n    await page.waitForLoadState('networkidle');\n    await expect(page).toHaveScreenshot('sink-tabs.png', {\n      fullPage: true,\n      animations: 'disabled',\n    });\n  });\n\n  test('/sink/text', async ({ page }) => {\n    await page.goto('/sink/text');\n    await page.waitForLoadState('networkidle');\n    await expect(page).toHaveScreenshot('sink-text.png', {\n      fullPage: true,\n      animations: 'disabled',\n    });\n  });\n\n  test('/sink/text-area', async ({ page }) => {\n    await page.goto('/sink/text-area');\n    await page.waitForLoadState('networkidle');\n    await expect(page).toHaveScreenshot('sink-text-area.png', {\n      fullPage: true,\n      animations: 'disabled',\n    });\n  });\n\n  test('/sink/text-field', async ({ page }) => {\n    await page.goto('/sink/text-field');\n    await page.waitForLoadState('networkidle');\n    await expect(page).toHaveScreenshot('sink-text-field.png', {\n      fullPage: true,\n      animations: 'disabled',\n    });\n  });\n\n  test('/sink/tooltip', async ({ page }) => {\n    await page.goto('/sink/tooltip');\n    await page.waitForLoadState('networkidle');\n    await expect(page).toHaveScreenshot('sink-tooltip.png', {\n      fullPage: true,\n      animations: 'disabled',\n    });\n  });\n\n  test('/sink/typography', async ({ page }) => {\n    await page.goto('/sink/typography');\n    await page.waitForLoadState('networkidle');\n    await expect(page).toHaveScreenshot('sink-typography.png', {\n      fullPage: true,\n      animations: 'disabled',\n    });\n  });\n});\n"
  },
  {
    "path": "apps/playground/tsconfig.json",
    "content": "{\n  \"$schema\": \"https://json.schemastore.org/tsconfig\",\n  \"display\": \"Next.js\",\n  \"compilerOptions\": {\n    \"composite\": false,\n    \"esModuleInterop\": true,\n    \"forceConsistentCasingInFileNames\": true,\n    \"inlineSources\": false,\n    \"isolatedModules\": true,\n    \"moduleResolution\": \"Bundler\",\n    \"noUnusedLocals\": false,\n    \"noUnusedParameters\": false,\n    \"preserveWatchOutput\": true,\n    \"skipLibCheck\": true,\n    \"plugins\": [{ \"name\": \"next\" }],\n    \"allowJs\": true,\n    \"declaration\": false,\n    \"declarationMap\": false,\n    \"incremental\": true,\n    \"jsx\": \"react-jsx\",\n    \"lib\": [\"dom\", \"dom.iterable\", \"esnext\"],\n    \"module\": \"ESNext\",\n    \"noEmit\": true,\n    \"resolveJsonModule\": true,\n    \"strict\": false,\n    \"target\": \"es5\",\n    \"strictNullChecks\": true\n  },\n  \"include\": [\n    \"src\",\n    \"next-env.d.ts\",\n    \"**/*.ts\",\n    \"**/*.tsx\",\n    \".next/types/**/*.ts\",\n    \".next/dev/types/**/*.ts\"\n  ],\n  \"exclude\": [\"node_modules\"]\n}\n"
  },
  {
    "path": "context7.json",
    "content": "{\n  \"url\": \"https://context7.com/radix-ui/themes\",\n  \"public_key\": \"pk_q7NnKuFFXMWA7WnmjMHQU\"\n}\n"
  },
  {
    "path": "package.json",
    "content": "{\n  \"name\": \"monorepo\",\n  \"private\": true,\n  \"packageManager\": \"pnpm@10.0.0\",\n  \"scripts\": {\n    \"build\": \"turbo run build\",\n    \"build:pkg\": \"pnpm --filter \\\"@radix-ui/*\\\" build\",\n    \"dev\": \"turbo run dev --no-cache --continue\",\n    \"test:vr\": \"pnpm -r test:vr\",\n    \"test:vr:update\": \"pnpm -r test:vr:update\",\n    \"lint\": \"turbo run lint\",\n    \"clean\": \"turbo run clean && rm -rf node_modules .turbo\",\n    \"format\": \"prettier --write .\",\n    \"format:check\": \"prettier --check .\"\n  },\n  \"devDependencies\": {\n    \"@types/node\": \"^24\",\n    \"prettier\": \"^3.8.1\",\n    \"turbo\": \"^2.3.3\",\n    \"typescript\": \"^5.9.3\"\n  },\n  \"pnpm\": {\n    \"overrides\": {\n      \"string-width\": \"4.2.3\"\n    }\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/.browserslistrc",
    "content": "last 2 years, last 2 versions\n"
  },
  {
    "path": "packages/radix-ui-themes/.stylelintrc.cjs",
    "content": "module.exports = {\n  rules: {\n    // Disallow element type selector.\n    'selector-max-type': 0,\n    // Allow 0,1,1 specificity for pseudo elements and effectively cap at 0,1,0 in all other cases.\n    // This is so that Tailwind classes work as expected.\n    'selector-max-specificity': ['0,1,1'],\n    // Enforce prefixes on classnames and keyframes\n    'selector-class-pattern': /^((xs|sm|md|lg|xl):)?-?rt-|^radix-themes$|^(light|dark)(-theme)?$/,\n    'keyframes-name-pattern': /^rt-([a-z]|-)+$/,\n  },\n};\n"
  },
  {
    "path": "packages/radix-ui-themes/CHANGELOG.md",
    "content": "# Changelog\n\n## 3.4.0\n\n- Expand the prop type for `Select`'s `placeholder` prop to accept any `ReactNode` ([#693](https://github.com/radix-ui/themes/pull/693))\n- Add `ghost-offset` variant to `Button`, `IconButton` and `SelectTrigger` components ([#546](https://github.com/radix-ui/themes/pull/546))\n- Fix broken loading state for `Button` and `IconButton` components using `asChild` ([#752](https://github.com/radix-ui/themes/pull/752))\n- Fix incorrect Firefox vendor prefix for `:placeholder-shown` pseudo-element ([#783](https://github.com/radix-ui/themes/pull/783), https://github.com/postcss/autoprefixer/pull/1532)\n- Improve responsiveness and consistency of styling in `ThemePanel`\n- Fix nested `Container` components not respecting the `size` prop ([#593](https://github.com/radix-ui/themes/pull/593))\n\n## 3.3.0\n\n- Add `soft` variant to the `Kbd` component ([#774](https://github.com/radix-ui/themes/pull/774))\n- Add new layout props to `Grid` and layout components: `alignContent`, `justifyItems`, `alignSelf`, `justifySelf` ([#744](https://github.com/radix-ui/themes/pull/744))\n- Deprecate `breakpoints` array. In the next major version, it will be replaced with a `Set` for easier lookups and comparisons.\n\n## 3.2.1\n\n- Add support for `display: contents` to `Box` component\n- Add CSS files to package `sideEffects` field to prevent CSS removal in some bundlers ([#659](https://github.com/radix-ui/themes/pull/659))\n- Updated `radix-ui` minimum dependency to `1.1.3`\n\n## 3.2.0\n\n- Add standalone entrypoints for all components. For example:\n  ```tsx\n  import { AlertDialog } from '@radix-ui/themes/components/alert-dialog';\n  import { Box } from '@radix-ui/themes/components/box';\n  // We recommend using namespaced imports for compound components\n  import * as CheckboxGroup from '@radix-ui/themes/components/checkbox-group';\n  ```\n- Fix visibility flash with closing dialogs ([#649](https://github.com/radix-ui/themes/pull/649))\n- Fix regression that caused Segmented Control indicators to lose box shadows ([#650](https://github.com/radix-ui/themes/pull/657))\n- Add `aria-hidden=\"true\"` to duplicate nodes in `SegmentedControl.Item` to prevent double-reading by screen readers ([#651](https://github.com/radix-ui/themes/pull/651))\n- Updated all Radix Primitives to the latest versions\n\n## 3.1.6\n\n- Updated all Radix Primitives\n\n## 3.1.5\n\n- Fix responsive styles for `gridArea` prop ([#569](https://github.com/radix-ui/themes/pull/569))\n- Add `disabled` prop to `SegmentedControl.Root` ([#621](https://github.com/radix-ui/themes/pull/621))\n\n## 3.1.4\n\n- Export `ThemeContext` ([#582](https://github.com/radix-ui/themes/pull/582))\n- Export `Popover.Anchor` ([#588](https://github.com/radix-ui/themes/pull/588))\n\n## 3.1.3\n\n- Support indeterminate indicator for the uncontrolled `Checkbox` component\n\n## 3.1.2\n\n- Add `areas` prop to the `Grid` component and `gridArea` prop to all layout components (`Box`, `Container`, `Flex`, `Grid`, `Section`)\n- Add `overflow-wrap: anywhere` style to the `DataList` component so that long values—such as IDs—can break over to next line\n- Support indeterminate indicator for the indeterminate `Checkbox` component\n\n## 3.1.1\n\n- Upgrade Radix Primitives to the newest versions\n\n## 3.1.0\n\n- Support React 19\n- Upgrade Radix Primitives to the newest versions\n\n## 3.0.5\n\n- Add `align`, `height`, `minHeight`, and `maxHeight` props to `AlertDialog.Content` and `Dialog.Content`\n\n## 3.0.4\n\n- Fix an issue when the Radix Themes package couldn’t be bundled with webpack because of a circular dependency within\n- Support the `max` prop on the `Progress` component\n\n## 3.0.3\n\n- Fix an issue when the theme `grayColor` setting would have no effect in combination with explicit `appearance=\"light\"` or `appearance=\"dark\"` values\n- Fix a regression when `Link` would use an automatic high-contrast color when an explicit `color` value was used.\n- Fix a regression when `Link` would not use the correct text selection and focus color when nested in gray text.\n- Tweak `Link` tap highlight style\n- Tweak `CheckboxGroup.Item` and `RadioGroup.Item` so that a layout with overflowing text truncation would be possible to achieve\n- Remove an unnecessary `data-accent-color` attribute from components where it had no practical effect to be there.\n- Rework the internals of the `color` prop definition.\n- Rework the autofilled and disabled colors for `TextField` and `TextArea`\n- Add an internal `--spinner-animation-duration` CSS variable for the `Spinner` component\n\n## 3.0.2\n\n- Remove unnecessary browser prefixes from the CSS, reducing the bundle size by 17 KB\n- Fix a regression when `Link` would not use an automatic high-contrast color when nested within colored text.\n- Fix a regression when `Link` wouldn't display hover styles when rendered as a `button`\n- Fix a regression when `TextArea` would not preserve sequences of white space in Firefox\n\n## 3.0.1\n\n- Fix a syntax error in the reset stylesheet\n- Fix Checkbox `size=\"1\"` indicator checkmark alignment in Safari\n- Fix Checkbox and Radio disabled cursor styles not working in Safari\n\n## 3.0.0\n\n- General\n  - Package structure\n    - Improve ESM compatibility\n    - Improve tree-shaking of individual component parts\n    - **[Breaking]** Drop named exports for multi-part components\n      - **[Upgrade guide]** Use dot notation for all multi-part components instead, ie. `Dialog.Root`\n      - Note: Our new approach allows dot notation to work reliably in server components too\n    - **[Breaking]** Remove component prop definitions and internal helpers from the root `@radix-ui/themes` import entry point and export them from `@radix-ui/themes/props` and `@radix-ui/themes/helpers` to make it possible to build your own component library on top of Radix Themes using the same techniques.\n      - Note: you might need to use `\"moduleResolution\": \"NodeNext\"` with your compiler to access these paths\n      - Note: changes to prop defs and helpers won’t be covered by semver\n    - Add a wildcard entry point to the package to allow direct access to the package internals as an escape hatch if you have a complex tooling setup that can’t support modern module resolution rules\n    - Add extra CSS file exports for advanced use-cases:\n      - Export individual `tokens.css`, `components.css`, and `utilities.css` files in case you need fine-grained control of the CSS precedence. For example, this allows to import Radix Themes `utilities.css` after your own CSS, and everything else before that.\n      - Additionally to the above, you can customise which colors to import. Instead of importing `tokens.css`, you can also import `tokens/base.css` and `tokens/colors/*.css`, where `*` corresponds to the names of the accent and gray colors you need in your project.\n      - Export `layout.css` that only includes styles for the layout components (Box, Flex, Grid, Container, Section). Individual exports `layout/tokens.css`, `layout/components.css`, and `layout/utilities.css` are also available to support the above use-case.\n  - Props\n    - Add the following props to all layout components:\n      - `minWidth`, `maxWidth`\n      - `minHeight`, `maxHeight`\n      - `flexBasis`, `flexShrink`, `flexGrow`\n      - `gridColumn`, `gridColumnStart`, `gridColumnEnd`\n      - `gridRow`, `gridRowStart`, `gridRowEnd`\n      - `overflow`, `overflowX`, `overflowY`\n    - Rework all layout props to allow arbitrary CSS values, including when used with the responsive object syntax. Props that support arbitrary values include:\n      - `width`, `minWidth`, `maxWidth`\n      - `height`, `minHeight`, `maxHeight`\n      - `m`, `mx`, `my`, `mt`, `mr`, `mb`, `ml`\n      - `p`, `px`, `py`, `pt`, `pr`, `pb`, `pl`\n      - `inset`, `top`, `right`, `bottom`, `left`\n      - `gap`, `gapX`, `gapY`\n      - `flexBasis`, `flexShrink`, `flexGrow`\n      - `gridColumn`, `gridColumnStart`, `gridColumnEnd`\n      - `gridRow`, `gridRowStart`, `gridRowEnd`\n    - **[Breaking]** The `width` and `height` props don't map to space scale anymore. This is because in the vast majority of cases, width and height were not set to space scale, and with that, space scale as an IDE autocomplete suggestion felt odd/misleading.\n      - **[Upgrade guide]** Find and replace your `width` and `height` prop usage with the corresponding [space scale](https://github.com/radix-ui/themes/blob/main/packages/radix-ui-themes/src/styles/tokens/space.css) steps, e.g. `width=\"9\"` would need to be changed to `width=\"64px\"` or `width=\"var(--space-9)\"`, and so on for other steps.\n    - **[Breaking]** Rename `shrink` and `grow` props:\n      - **[Upgrade guide]** Use `flexShrink` and `flexGrow` instead\n    - Update the type signature of the layout props so that code editor suggestions use just space scale values when possible. CSS keywords and other values such as `\"auto\"` or `\"100vw\"` are still available as manual string values.\n    - Document all layout props with JSDoc\n    - Fix an issue with responsive props when using a breakpoints object without the `initial` key would not apply the default prop value\n    - Remove the native `color`, `defaultValue`, and `defaultChecked` attributes from components that inherit them from the native HTML elements to avoid confusion with their custom implementations\n    - **[Breaking]** Rework the availability of `asChild` prop on all components and parts\n  - Colors\n    - Make sure `highContrast` text colors work consistently when nested within other components that accept an accent color\n    - Tweak the background color of all `variant=\"soft\"` menu items\n    - **[Breaking]** Rename `--color-surface-accent` to `--accent-surface`\n      - **[Upgrade guide]** If you were using this token for your custom components, make sure to replace the corresponding references\n    - **[Breaking]** Rename `--accent-9-contrast`, `--red-9-contrast`, `--pink-9-contrast`, `--blue-9-contrast`, etc. to `--accent-contrast`, `--red-contrast`, `--pink-contrast`, `--blue-contrast` and so on.\n      - **[Upgrade guide]** If you were using these tokens for your custom components, make sure to replace the corresponding references\n    - Remove `--gray-2-translucent` and the corresponding tinted gray colors\n    - Tweak `--color-surface` and `--color-panel-translucent` values\n    - **[Breaking]** Replace `--color-focus-root`, `--color-selection-root`, `--color-autofill-root` with a focus color scale, e.g. `--focus-1` – `--focus-12`, and `--focus-a1` – `--focus-a12`.\n      - **[Upgrade guide]** If you were overriding the above tokens or using them in your custom components, you’ll need to references the new color scale.\n        - `--color-autofill-root` is replaced by `--focus-a3`\n        - `--color-focus-root` is replaced by `--focus-8`\n        - `--color-selection-root` is replaced by `--focus-a5`\n  - Other\n    - Speed up most of the animations\n    - Ensure all elements that have padding or border styles use `box-sizing: border-box`\n    - Ensure that disabled cursor styles are applied correctly\n    - Add a blur backdrop filter effect to the translucent panels\n- 11 new components\n  - `DataList`\n    - Component for displaying text data as key-value pairs. Parts:\n      - `Root`\n      - `Item`\n      - `Label`\n      - `Value`\n  - `CheckboxGroup`\n    - Group of checkboxes with an optional text label and roving focus. Parts:\n      - `Root`\n      - `Item`\n  - `CheckboxCards`\n    - Interactive card components to pick one or more value from the list. Parts:\n      - `Root`\n      - `Item`\n  - `Progress`\n    - Progress bar component that indicates completion of a task.\n  - `Radio`\n    - Standalone element for building your own layouts with radio inputs.\n  - `RadioCards`\n    - Interactive card components to pick one of the values from the list. Parts:\n      - `Root`\n      - `Item`\n  - `Reset`\n    - Component that resets the styles for any native HTML element.\n  - `SegmentedControl`\n    - Component for selecting a single option out of many and for controlling tab-like interfaces\n  - `Skeleton`\n    - Component that may wrap any UI element and turn it into a loading skeleton. Can also render self or a React Fragment conditionally using a `loading` prop.\n  - `Spinner`\n    - Loading spinner component. Like Skeleton, it also may wrap any UI element and display itself using a conditional `loading` prop.\n  - `TabNav`\n    - Equivalent for `Tabs`, but used for page navigation. Renders regular links and supports roving focus. Parts:\n      - `Root`\n      - `Link`\n- `AlertDialog`, `Dialog`\n  - Add `position: relative` to support absolutely positioned children.\n  - Add `width`, `minWidth`, `maxWidth` props to the Content part.\n  - Set `maxWidth=\"600px\"` by default on the Content part.\n    - **[Upgrade guide]** This is slightly larger than the previous `580px` value. If you use dialogs that need a different width, override `maxWidth` with your own value.\n  - Rework the scroll container so that it displays scrollbars on the viewport rather than confined to the dialog Content part. Make sure that your code works as expected if you were relying on any of the implementation quirks to override styles or behaviour.\n- `Badge`\n  - Remove `user-select: none`\n  - **[Breaking]** Add `size=\"3\"`, make `size=\"2\"` much smaller, tweak `size=\"1\"` dimensions\n    - **[Upgrade guide]** Replace your `size=\"2\"` usage with `size=\"3\"`\n- `Blockquote`, `Code`, `Em`, `Heading`, `Quote`, `Link`, `Strong`, `Text`\n  - Add new `wrap` and `truncate` props that control whether the text wraps and whether it is truncated with ellipsis\n- `Card`\n  - Rework the internal HTML structure and styles. This component now renders a single HTML node. Make sure that your code works as expected if you were relying on any of the implementation quirks to override styles or behaviour.\n    - **[Upgrade guide]** If you need to override the Card’s background color on variants other than `ghost`, use `--card-background-color` variable instead of assigning `background-color` directly, or set your background color on an `<Inset p=\"current\">` element nested as the first child of the Card.\n    - **[Upgrade guide]** Check your Card instances that uses `asChild` or is `asChild`’ed onto by a parent component. (The common case with link or button card without any extra styles will work as expected).\n- `Code`\n  - `variant=\"ghost\"` color now works similarly to Text, inheriting the color unless set explicitly using the `color` prop\n- `Container`\n  - Add `align` prop to control whether the container content is aligned to the left, center, or right\n  - **[Breaking]** Change the `display=\"block\"` value to `display=\"initial\"` (the former value was broken)\n- `ContextMenu`, `DropdownMenu`\n  - Add `color` prop to `CheckboxItem` and `RadioItem` parts\n- `Checkbox`, `RadioGroup`, `Switch`\n  - Rework the internal HTML structure and styles. These components now render fewer HTML nodes and forward all props to the topmost node. Make sure that your code works as expected if you were relying on any of the implementation quirks to override styles or behaviour.\n- `DropdownMenu`\n  - Use a brighter text color for the highlighted item when the Content part uses `variant=\"soft\"`\n  - Add an optional `TriggerIcon` part that renders an arrow down indicator\n- `Box`, `Flex`, `Grid`\n  - Add support for `as` prop to render as `span` or `div`\n  - For Box, `display: block` style is now enforced regardless of the tag\n- `Button`, `IconButton`\n  - Add new `loading` prop\n- `Flex`\n  - Add `gapX` and `gapY` props\n- `Popover`, `HoverCard`\n  - Add `position: relative` to support absolutely positioned children.\n  - Add `width`, `minWidth`, `maxWidth`, `height`, `minHeight`, `maxHeight` props to the Content part.\n  - Set `maxWidth=\"480px\"` by default on the Content part.\n    - **[Upgrade guide]** If you use popovers and hover cards that need a wider width, override `maxWidth` with your own value.\n- `RadioGroup`\n  - [**Breaking**] Rework the internal HTML structure and styles. This component is now designed to display an optional text label when passing `children` to the `Item` part, and the `Root` part now provides flex column styles and spacing.\n- `Section`\n  - **[Breaking]** Change the `display=\"block\"` value to `display=\"initial\"` (the former value was broken)\n  - **[Breaking]** Use a new value for `size=\"3\"`, use the previous value for `size=\"4\"`\n    - **[Upgrade guide]** Update all your Sections that used `size=\"3\"` to `size=\"4\"`\n- `Select`\n  - Make sure that Trigger font weight is not inherited, e.g. from a wrapping `<label>` element\n- `Separator`\n  - Allow responsive values for the `orientation` prop\n- `ScrollArea`\n  - Fix an issue when Scroll Area would be unable to stretch to 100% height when informed by the parent’s auto height\n- `Slider`\n  - Change the size of the bounding box to match the size of the Slider track\n  - Replace `flex-shrink: 0` with `flex-grow: 1` and `width: stretch` / `height: stretch` to allow the slider element to flex and shrink in layouts more intuitively.\n  - Fix an overzealous focus outline in Safari\n- `Table`\n  - Add new `layout` prop to control the `table-layout` style property\n  - Align `width` prop type signature and implementation on the `TableCell` part with the reworked `width` prop on the layout components\n  - Add `minWidth` and `maxWidth` props to the `TableCell` part\n- `Tabs`:\n  - Add `color` and `highContrast` props to `TabsList`\n  - Add margin props `TabsList` and `TabsContent`\n  - Renamed the letter/word spacing CSS variables in `.radix-themes` so that it supports both `Tabs` and `TabNav` components:\n    - `--tabs-trigger-active-letter-spacing` → `--tab-active-letter-spacing`\n    - `--tabs-trigger-active-word-spacing` → `--tab-active-word-spacing`\n    - `--tabs-trigger-inactive-letter-spacing` → `--tab-inactive-letter-spacing`\n    - `--tabs-trigger-inactive-word-spacing` → `--tab-inactive-word-spacing`\n- `TextArea`\n  - Add `radius` prop\n  - Add `resize` prop\n  - Fix an issue when Grammarly extension would break the component styles\n  - Make sure that the font weight is not inherited, e.g. from a wrapping `<label>` element\n  - Rework the internal HTML structure and styles. Make sure that your code works as expected if you were relying on any of the implementation quirks to override styles or behaviour.\n- `TextField`\n  - **[Breaking]** Remove the `Input` part to simplify how props are forwarded and rework internal HTML structure and styles.\n    - **[Upgrade guide]**:\n      - All `TextField.Input` parts used **without** `TextField.Root` should be renamed to `TextField.Root`\n      - All `TextField.Input` parts used **within** `TextField.Root` should be removed and their props should be put directly on the `TextField.Root` part\n      - All `TextField.Slot` parts placed to the right of `TextField.Input` will need `side=\"right\"` prop. However, no adjustment is needed when two slots were used within one `TextField`, e.g. one slot on the left and another one on the right. In that case, the slots will be automatically placed on different sides.\n      - Make sure that your code works as expected if you were relying on any of the implementation quirks to override styles or behaviour.\n  - Fix an issue with some input `type`s not supporting `getSelectionRange`\n  - Fix an issue when Grammarly extension would break the component styles\n  - Make sure that the font weight is not inherited, e.g. from a wrapping `<label>` element\n- `ThemePanel`\n  - Change the hotkey to toggle the Theme Panel to \"T\" keypress and dark mode to \"D\" keypress (without modifiers).\n- `Theme`\n  - Set `min-height: 100vh` on the root `Theme` component\n  - Fix an issue when in certain situations, `hasBackground` prop value would have no effect\n  - Refine the logic for when `Theme` has a background color by default. `Theme` without an explicit `hasBackground` prop will display a background color:\n    - When it is the root `Theme` component\n    - When it has an explicit appearance value, e.g. `<Theme apperance=\"light\">` or `<Theme apperance=\"dark\">`\n  - Body background color is no longer set automatically. The background color is now provided by the root `Theme` by default.\n    - **[Breaking]** The CSS variable `--color-page-background` is no longer available. In most cases, it can be safely replaced with `--color-background` available on the `.radix-themes` element.\n    - `suppressHydrationWarning` on `html` is no longer needed (unless required by other libraries, like `next-themes`)\n  - Document all Theme props with JSDoc\n- `Tooltip`\n  - Add `width`, `minWidth`, `maxWidth` props.\n  - Set `maxWidth=\"360px\"` by default on the tooltip content\n    - **[Upgrade guide]** If you use tooltips that need to be wider, override `maxWidth` with your own value.\n  - Change the default delay duration to 200ms\n\n## 2.0.3\n\n- `Select`\n  - Fix a type issue when `placeholder` prop would appear not found after the recent React DOM types update\n\n## 2.0.2\n\n- Fix an issue when Chrome would sometimes crash while using CSS inspector on a Radix Themes stylesheet\n\n## 2.0.1\n\n- `Card`\n  - Fix an issue when `variant=\"surface\"` border color may disappear in browsers that don't support `color-mix`\n  - Tweak `variant=\"surface\"` border color\n- `Code`\n  - When `variant=\"ghost\"` is used within a `Link`, make sure that `underline=\"hover\"` on the `Link` is respected.\n- `TextField`\n  - Improve vertical text alignment with common fonts\n  - Don’t apply the autofill accent color when the input is disabled\n  - Make sure the autofill accent color always pairs with the focus outline color\n\n## 2.0.0\n\n- General\n  - Combine selectors in the CSS build, improving the developer experience when inspecting elements in the browser.\n  - Remove comments from the CSS build.\n  - Cap CSS selector specificity at `0,1,0` for styling HTML elements and at `0,1,1` for styling pseudo-elements, improving compatibility with Tailwind.\n    - **[Upgrade guide]** If you were relying on any specificity quirks of Radix Themes, make sure that your style overrides still work as expected.\n  - Rework dark mode colors, refine light mode colors (via Radix Colors 3.0.0).\n    - Fix oversaturated transparent grays.\n    - **[Upgrade guide]** If you were using the color tokens for your custom styles, make sure that your designs look as expected.\n    - **[Upgrade guide]** If you were overriding certain colors, make sure that your overrides are harmonized with the new color scales.\n  - Rework transparent black and white color scales.\n    - **[Upgrade guide]** If you were using transparent black and white color scales for your custom styles (`--black-a1`, `--white-a1`, etc.), make sure to check the new values and update the steps used so that your designs look as expected:\n      - Change `--black-a1` to `rgba(0, 0, 0, 0.01)`\n      - Change `--black-a2` to `rgba(0, 0, 0, 0.024)`\n      - Change `--black-a3` to `--black-a1`\n      - Change `--black-a4` to `--black-a2`\n      - Change `--black-a5` to `--black-a2`\n      - Change `--black-a6` to `--black-a3`\n      - Change `--black-a7` to `--black-a3` or `--black-a4`\n      - Change `--black-a8` to `--black-a5`\n      - Change `--black-a9` to `--black-a6` or `--black-a7`\n      - Change `--black-a10` to `--black-a7`\n      - Change `--black-a11` to `--black-a8`\n      - Change `--black-a12` to `--black-a11`\n      - Change `--white-a1` to `transparent`\n      - Change `--white-a2` to `rgba(255, 255, 255, 0.01)`\n      - Change `--white-a3` to `--white-a1` or `--white-a2`\n      - Change `--white-a4` to `--white-a2`\n      - Change `--white-a5` to `--white-a3`\n      - Change `--white-a6` to `--white-a3` or `--white-a4`\n      - Change `--white-a7` to `--white-a4`\n      - Change `--white-a8` to `--white-a5`\n      - Change `--white-a9` to `--white-a6`\n      - Change `--white-a10` to `--white-a7`\n      - Change `--white-a11` to `--white-a9`\n      - Change `--white-a12` to `--white-a11` or `--white-a12`\n  - Refine the shadow scale.\n  - Maintain theme accent color for focus rings on most `color=\"gray\"` components similarly to the text selection color.\n  - Change some internal component-specific CSS variables to follow a naming pattern.\n  - Make sure that forced light/dark appearance on the `Theme` component also sets the corresponding browser colors, like the correct input autofill background color.\n  - Rename all `@keyframes` animations with `rt-` prefix and into kebab case.\n  - Use `outline` rather than `box-shadow` for most focus styles, which avoids a slight anti-aliasing issue in Chrome on focused elements.\n- `AlertDialog`, `Dialog`\n  - Add padding around dialog content to prevent it from touching the viewport edges\n  - Make sure that the dialog content doesn’t overflow viewport on iOS\n- `Avatar`\n  - Don’t enforce fallback icon size\n    - **[Upgrade guide]** If you were using `svg` assets as a fallback, make sure to set an appropriate size manually.\n- Add CSS variables to control the cursor style on interactive elements:\n  - `--cursor-button: default;`\n  - `--cursor-checkbox: default;`\n  - `--cursor-disabled: not-allowed;`\n  - `--cursor-link: pointer;`\n  - `--cursor-menu-item: default;`\n  - `--cursor-radio: default;`\n  - `--cursor-slider-thumb: default;`\n  - `--cursor-slider-thumb-active: default;`\n  - `--cursor-switch: default;`\n- Replace `.rt-reset-button` and `.rt-reset-a` classes with a single `.rt-reset` class\n  - The new `.rt-reset` class can be use to reset `a`, `button`, `h1`, `h2`, `h3`, `h4`, `h5`, `h6`, `ol`, `ul`, `p`, and `pre` tags when building custom components.\n  - **[Upgrade guide]** If you were using these classes for your custom components, update the class name used.\n- `Blockquote`\n  - **[Breaking]** Remove `trim` prop\n- `Button`, `IconButton`\n  - Refine and normalise the look and feel of the disabled states.\n  - Apply disabled styles to other elements when using `disabled` together with `asChild`\n  - Improve `variant=\"classic\"` look and feel across different accent colors in light and dark mode.\n- `Callout`\n  - Tweak how the layout works to allow nesting multiple `Callout.Text` elements within `Callout.Root`\n    - **[Upgrade guide]** If you were relying on how `Callout.Root` happened to provide flex properties, change your layout to use a `Flex` component explicitly.\n  - Fix an issue when the callout would inherit text color unless an explicit `color` prop was passed.\n    - **[Upgrade guide]** If you preferred the previous look, pass `highContrast` prop to your callouts to make the text darker.\n  - Use a gray background for a gray `variant=\"surface\"`\n  - Use a darker outline color `variant=\"outline\"`\n- `Checkbox`\n  - **[Breaking]** Improve layout so that wrapping a checkbox in `Text` component automatically aligns the checkbox with the first line of the text.\n    - **[Upgrade guide]** Make sure that your layouts with checkboxes look as expected. If not, wrap your checkboxes in `<Text as=\"label\" size=\"...\">`, using your preferred text size.\n  - **[Breaking]** Rework sizes – add a smaller `size=\"1\"`, change the default size to `size=\"2\"`, add a more refined `size=\"3\"`\n    - **[Upgrade guide]** If you were using `size=\"1\"` or `size=\"2\"` checkboxes via an explicit `size` prop, rename them to `size=\"2\"` and `size=\"3\"` respectively.\n  - Refine the look and feel of `variant=\"classic\"`.\n  - Refine and normalise the look and feel of the disabled states.\n- `Card`\n  - Update the `variant=\"classic\"` shadow so that it doesn’t extend outside of the element.\n  - Refine hover and pressed styles for `variant=\"classic\"`\n  - Add missing pressed styles.\n  - Refine how the inner shadows are applied so that they blend with the background outside of the component.\n- `Code`\n  - Add interactive styles when `Code` is within `Link`\n  - Fix an issue when `variant=\"ghost\"` font size would be inconsistent depending on whether the size was based on a parent `Text` element or came from the code’s own `size` prop\n  - Scale the outline thickness relative to the font size for `variant=\"outline\"` and `variant=\"surface\"`\n  - Improve `::selection` background color for `variant=\"solid\"`\n  - Add CSS variables to `.radix-themes` for customising the padding of `Code` variants in case the default values don’t work well with the vertical metrics of custom code font.\n    - `--code-padding-top`\n    - `--code-padding-bottom`\n- `DropdownMenu`, `ContextMenu`\n  - Reduce border radius when theme setting is `radius=\"full\"`\n  - Refine horizontal paddings\n  - Refine label look and feel\n- `Grid`\n  - Fix a bug when nesting `Grid` components could cause the descendant `Grid`’s to inherit some parent styles unintentionally.\n- `Inset`\n  - Add `clip` prop to control whether content is clipped to the padding or to the border of the parent element.\n  - Automatically adjust table cell padding for when `Table` is inside `Inset`\n- `Kbd`\n  - Tweak vertical alignment\n- `Link`\n  - Desaturate the underline color.\n  - Make links automatically high-contrast within colored `Heading` elements (similarly to the automatic high-contrast within `Text`).\n  - Scale the underline thickness relative to the font size for `variant=\"outline\"` and `variant=\"surface\"`\n- `RadioGroup`\n  - **[Breaking]** Improve layout so that wrapping a radio button in `Text` component automatically aligns the radio button with the first line of the text.\n    - **[Upgrade guide]** Make sure that your layouts with radio buttons look as expected. If not, wrap your radio buttons in `<Text as=\"label\" size=\"...\">`, using your preferred text size.\n  - **[Breaking]** Rework sizes – add a smaller `size=\"1\"`, change the default size to `size=\"2\"`, add a more refined `size=\"3\"`\n    - **[Upgrade guide]** If you were using `size=\"1\"` or `size=\"2\"` radio buttons via an explicit `size` prop, rename them to `size=\"2\"` and `size=\"3\"` respectively.\n  - Refine the look and feel of `variant=\"classic\"`.\n  - Refine and normalise the look and feel of the disabled states.\n- `Select`\n  - Fix invisible scrollbar in long item lists\n  - Improve `variant=\"classic\"` look and feel across light and dark mode.\n  - Align `SelectContent` to the left of the trigger when using `position=\"popper\"`\n  - Refine horizontal paddings\n  - Refine label look and feel\n  - Rework `size=\"3\"`\n  - Update the disabled trigger text color so it’s easier to read, similarly to Text Field\n  - Make sure to pass children to trigger so that if needed, it's possible to control what the trigger renders\n- `ScrollArea`\n  - Upgrade the primitive version, fixing an upstream type issue\n  - Rename scrollbar margin variables to include the scrollbar orientation and declare them on `.radix-themes` to facilitate easier scrollbar position adjustments\n    - **[Upgrade guide]** If you were using the variables `--scrollarea-scrollbar-margin-top`, `--scrollarea-scrollbar-margin-left`, etc. make sure that they follow the new names and are set at the appropriate level. There's no need to target `.rt-ScrollAreaScrollbar` element to set the variables anymore, as they can be set just on the component that needs the override. New variables:\n      - `--scrollarea-scrollbar-horizontal-margin-top`\n      - `--scrollarea-scrollbar-horizontal-margin-bottom`\n      - `--scrollarea-scrollbar-horizontal-margin-left`\n      - `--scrollarea-scrollbar-horizontal-margin-right`\n      - `--scrollarea-scrollbar-vertical-margin-top`\n      - `--scrollarea-scrollbar-vertical-margin-bottom`\n      - `--scrollarea-scrollbar-vertical-margin-left`\n      - `--scrollarea-scrollbar-vertical-margin-right`\n- `Slider`\n  - Refine the shadows and colors used in the components.\n  - Refine and normalise the look and feel of the disabled states.\n  - Fix an issue where high contrast sliders would have an incorrect disabled style.\n- `Switch`\n  - **[Breaking]** Improve layout so that wrapping a switch in `Switch` component automatically aligns the switch with the first line of the text.\n    - **[Upgrade guide]** Make sure that your layouts with switches look as expected. If not, wrap your switches in `<Text as=\"label\" size=\"...\">`, using your preferred text size.\n  - **[Breaking]** Rework sizes, making `size=\"2\"` and `size=\"3\"` smaller.\n    - **[Upgrade guide]** Use `size=\"3\"` instead of `size=\"2\"` to match the previous look.\n  - Refine the shadows and colors used in the components.\n  - Refine and normalise the look and feel of the disabled states.\n- `Table`\n  - Refine how the outer border is applied so that it blends with the background outside of the component.\n- `Tabs`\n  - Add CSS variables to `.radix-themes` for customising the letter spacing and word spacing of active and inactive tabs so that you can minimise the apparent shift in weight in case the default values don’t work for your custom font.\n    - `--tabs-trigger-active-letter-spacing`\n    - `--tabs-trigger-active-word-spacing`\n    - `--tabs-trigger-inactive-letter-spacing`\n    - `--tabs-trigger-inactive-word-spacing`\n- `Text`\n  - Add `as=\"label\"` option to the `as` prop\n  - Improve how prop types are resolved when `as` prop isn’t specified\n- `TextArea`\n  - Rework the internal implementation, now using multiple HTML nodes for styling purposes.\n    - Adjust the layout styles so that `TextArea` behaves like a true `display: block` element, filling the available space horizontally.\n    - The `style` and `className` are now forwarded to the wrapping `div` element. The `ref` and other props are still forwarded to the `textarea` itself.\n    - **[Upgrade guide]** If you were overriding `TextArea` styles via `style`, `className`, or custom CSS that targets the related HTML nodes, make sure that your custom styles work as expected.\n    - **[Upgrade guide]** If you were relying on the intrinsic width of `TextArea` set by the browser, make sure that your layout looks as expected.\n  - Refine padding values for a more balanced look.\n    - Use matching scroll margins for a nicer typing experience when the `TextArea` overflows.\n  - Refine how the inner shadows are applied so that they blend with the background outside of the component.\n  - Refine and normalise the look and feel of disabled and read-only states.\n  - Fix a Safari bug when the text value would appear tinted in the disabled input.\n  - Improve autofill styles.\n- `TextField`\n  - Reset `z-index` of the container to avoid potential stacking issues.\n  - Refine padding values for a more balanced look.\n    - Use `text-indent` instead of `padding-left` so that long values aren't truncated on the left when the cursor is at the end of the input.\n  - Refine how the inner shadows are applied so that they blend with the background outside of the component.\n  - Refine and normalise the look and feel of disabled and read-only states.\n  - Fix a Safari bug when the text value would appear tinted in the disabled input.\n  - Remove ellipsis truncation, as this prevented long values from being shown when scrolling on the input horizontally in Chrome.\n  - Improve autofill styles.\n- `ThemePanel`\n  - Disable transitions when changing the appearance.\n  - Improve contrast in the border radius preview.\n- `Tooltip`\n  - Reduce border radius when theme setting is `radius=\"full\"`\n  - **[Breaking]** Remove `multiline` prop\n    - **[Upgrade guide]** If you were using `multiline` prop, pass `style={{ maxWidth: 250 }}` to the relevant Tooltip elements.\n\n## 1.1.2\n\n- General\n  - Make sure to also export `ThemeProps` and `ThemePanelProps`\n\n## 1.1.1\n\n- General\n  - Export prop types from all components\n\n## 1.1.0\n\n- General\n  - Three new color scales: `ruby`, `iris`, and `jade`\n  - Set explicit versions of the Radix Primitives dependencies to allow stable builds\n  - Use an explicit `React.FC` type for `ContextMenuSub`, `DialogRoot`, `HoverCardRoot`, and `PopoverRoot`, resolving a type error with certain setups\n\n## 1.0.0\n\nPublic release 🎉\n\n## 0.0.48\n\n- General\n  - Fix SVG icon attribute warning\n\n## 0.0.47\n\n- `Button`\n  - Tweak `classic` variant chrome\n- `Checkbox`\n  - Update the check icon\n- `Dialog`\n  - Darken the overlay in dark mode\n- `DropdownMenu`, `ContextMenu`\n  - Update icons\n  - Tweak trigger open states\n  - Replace dot icon with check icon for the radio items as the more common design\n- `Select`\n  - Update the check icon\n  - Tweak `classic` variant chrome\n  - Polish trigger arrow icon size and positioning\n- `Table`\n  - Add overflow scrollbars\n- `ThemePanel`\n  - Fix `onAppearanceChange` type\n\n## 0.0.46\n\n- General\n  - Upgrade to Radix Colors `2.0.1`, which updates all `a1` and some `a2` steps in dark mode.\n- `ThemePanel`\n  - Add `onApperanceChange` prop to delegate updating the theme classes to another solution (ie. next-themes)\n\n## 0.0.45\n\n- General\n  - Upgrade to Radix Colors `2.0.0-alpha.3`. Much better contrast across the board in dark mode, darker high contrast grays in light mode, completely reworked bright colors like lime, yellow, amber, mint, and sky.\n- `DropdownMenu`, `Select`\n  - Fix vertical alignment of text within menu items\n- `Switch`\n  - Fix Autoprefixer `transition-property` warning\n\n## 0.0.44\n\n- General\n  - Respect the theme class format on the `html` element when updating the appearance\n- `Blockquote`\n  - Tweak spacing\n- `Button`\n  - Fix disabled ghost button padding\n- `ThemePanel`\n  - Improve tooltips content\n\n## 0.0.43\n\n- General:\n  - Fix nested themes regression (recovering `:is(.dark, .dark-theme)` selector)\n\n## 0.0.42\n\n- General:\n  - **[Breaking]** Fixed typo: `buttonPropsDefs` -> `buttonPropDefs`\n  - Remove unneeded `:is(.dark, .dark-theme)` selector for dark mode colors, since we don't recommend wrapping the `html` element anymore\n  - Tweak translucent panel color in light mode\n  - Add a special `--gray-2-translucent` step for translucent panel color in dark mode\n- `Avatar`:\n  - Fix text fallback size regression\n  - **[Breaking]** Don't default to `gray` color\n- `Badge`:\n  - **[Breaking]** Don't default to `gray` color\n  - Recover missing `solid` high-contrast for all colors\n- `Blockquote`:\n  - Tweak the design\n- `Button`, `IconButton`:\n  - Refine when pressed state is applied so that buttons that open a modal panel don’t flash `:active`\n  - Fix disabled `variant=\"classic\"` when pressed\n- `Callout`:\n  - Always set `text-align: left`\n  - **[Breaking]** Don't default to `gray` color\n- `Code`:\n  - Fix `variant=\"ghost\"` ignoring the `color` prop\n- `Container`:\n  - **[Breaking]** Rename `size=\"3\"` to `size=\"4\"` and change its width to `1136px`.\n  - Make `size=\"4\"` the default (almost matching the previous default width)\n  - Add a new `size=\"3\"` at `880px`\n- `Em`:\n  - Update default font family.\n- `Inset`:\n  - **[Breaking]** Make `\"all\"` the default `side` value\n- `Kbd`:\n  - Don’t inherit font weight.\n  - Tweak vertical alignment.\n- `Quote`:\n  - Add styles and corresponding CSS variables (similar to `Em`).\n- `ScrollArea`:\n  - Add internal CSS variables to control the scroll bar spacing `--scrollarea-scrollbar-margin-top`, `--scrollarea-scrollbar-margin-bottom`, `--scrollarea-scrollbar-margin-left`, `--scrollarea-scrollbar-margin-right`\n- `Select`:\n  - Tweak `classic` variant shadow in dark mode to better match other form components\n- `Tabs`:\n  - Improve text alignment consistency between active and inactive tab trigger states\n- `Table`:\n  - Rework `TableRoot` part so that cell borders don’t overlap the outer table border. This change the `TableRoot`’s topmost element into a `div`.\n  - Fix `vertical-align` and `text-align` regression\n- `TextField`, `TextArea`:\n  - Tweak `soft` variant when read-only\n- `ThemePanel`\n  - Tweak the design\n  - Don’t animate the panel on initial render if `defaultOpen` is `true`\n\n## 0.0.41\n\n- General:\n  - Gatekeep hover styles behind `@media (hover: hover)`\n  - No class is unprefixed anymore (apart from `.radix-themes` and `.light`, `.light-theme`, `.dark`, `.dark-theme`)\n  - Everything is prefixed with `.rt-`\n  - Every responsive class is always prefixed with `.rt-r-`\n- `Button`, `IconButton`:\n  - Fix `ghost` variant responsive bug\n- `Switch`:\n  - Fix the animation when switching between checked and unchecked state\n- `Theme`:\n  - Fix issue when `hasBackground={false}` wasn't respected\n  - Root vs. Nested `Theme` delineation now uses `data-is-root-theme=\"true|false\"` instead of `.root`\n\n## 0.0.40\n\n- `ContextMenu`, `DropdownMenu`:\n  - Fix `asChild` composition with `SubTrigger`, `CheckboxItem`, `RadioItem`\n- `ScrollArea`:\n  - Ensure compatibility with `max-height` (make `Root` flex column)\n- `ThemePanel`:\n  - **[Breaking]** Rename `initiallyHidden` (default `false`) to `defaultOpen` (default `true`)\n  - Remove `inherit` option from `appearance` control (reacts to class changes now)\n\n## 0.0.39\n\n- General:\n  - **[Breaking]** Import styles from `@radix-ui/themes/styles.css` instead of `@radix-ui/react-themes/index.css`\n- `ContextMenu`:\n  - Add `contextMenuCheckboxItemPropDefs`\n- `DropdownMenu`:\n  - Add `dropdownMenuCheckboxItemPropDefs`\n- `Select`:\n  - **[Breaking]** Remove `solid` and `outline` trigger variants\n  - Tweak all other variant design to be more akin to other form components\n  - Add `size` 3\n- `TextField`, `TextArea`:\n  - Tweak `soft` to use `--accent-12`\n- `Theme`:\n  - **[Breaking]** Rename `background` prop to `hasBackground` (and `data-background` attribute to `data-has-background`)\n\n## 0.0.38\n\n- General\n  - **[Breaking]** Import styles from `@radix-ui/themes/index.css` instead of `@radix-ui/react-themes/dist/index.css`\n  - Update shadows in dark mode\n  - Fix `--default-letter-spacing` variable being not applied to the typographic components\n  - Rename `Segoe UI` and `Open Sans` with custom metrics to `Segoe UI (Custom)` and `Open Sans (Custom)` in the `@font-face`\n  - Remove Google Fonts\n- `Badge`:\n  - Tweak `outline` and `surface` borders\n- `Button`\n  - Bump up icon opacity to `0.9`\n  - Fix `classic` blend mode and improve high-contrast hover\n- `Code`:\n  - Update the font stack\n  - Tweak `outline` border\n- `Em`:\n  - Update the font stack\n  - Fix `--em-font-size-adjust` not working\n- `Kbd`:\n  - **[Breaking]** Remove `width` prop\n  - Rework sizing, add `size` prop\n  - Tweak the chrome\n- `Strong`:\n  - Fix `--strong-font-size-adjust` not working\n- `Slider`, `Switch`\n  - Update high contrast variant design\n- `Theme`:\n  - **[Breaking]** Remove `textColor` prop\n  - **[Breaking]** Remove `backgroundColor` prop\n  - **[Breaking]** Rename `applyBackground` prop to `background` (and `data-background-applied` attribute to `data-background`)\n  - **[Breaking]** Rename `accentScale` prop to `accentColor` (and `data-accent-scale` attribute to `data-accent-color`)\n  - **[Breaking]** Rename `grayScale` prop to `grayColor` (and `data-gray-scale` attribute to `data-gray-color`)\n  - **[Breaking]** Should always be within `body` now (rather than wrapping `html` or `body`)\n  - **[Breaking]** When `appearance` is `dark` or `light`, we inject a script (similar to `next-themes`) to set the theme class / color-scheme on `html`. Because of this, `suppressHydrationWarning` needs to be added to `html`.\n- `ThemePanel`:\n  - New design\n\n## 0.0.37\n\n- General:\n  - Fix negative margin overrides inheritance\n  - **[Breaking]** Rename `--color-surface-1` to `--color-surface`\n  - **[Breaking]** Rename `--color-surface-2` to `--color-panel-translucent`\n  - **[Breaking]** Rename `--color-panel` to `--color-panel-solid`\n  - **[Breaking]** Rename `--accent-surface` to `--color-surface-accent`\n  - **[Breaking]** Remove `--color-canvas`\n  - Add new `panelBackground` setting on `Theme` (and `ThemePanel`)\n- `Button`, `IconButton`:\n  - Add new `classic` variant\n- `Card`:\n  - **[Breaking]** Rename `surface` variant to `classic`\n  - **[Breaking]** Rename `solid` variant to `surface`\n- `Checkbox`:\n  - **[Breaking]** Rename `surface` variant to `classic`\n  - **[Breaking]** Rename `solid` variant to `surface`\n- `Link`:\n  - Add `underline` (`auto`, `hover`, `always`) prop. `auto` is the default and behaviour is unchanged.\n- `RadioGroup`:\n  - **[Breaking]** Rename `surface` variant to `classic`\n  - **[Breaking]** Rename `solid` variant to `surface`\n- `Select`:\n  - Add new `classic` variant\n  - **[Breaking]** Remove `solid` overrides, closest style for now is `<Select.Trigger variant=\"surface\" highContrast>`\n- `Slider`:\n  - **[Breaking]** Rename `surface` variant to `classic`\n  - **[Breaking]** Rename `solid` variant to `surface`\n- `Switch`:\n  - **[Breaking]** Rename `surface` variant to `classic`\n  - **[Breaking]** Rename `solid` variant to `surface`\n- `Table`:\n  - Fix pointer-events issue\n- `TextArea`:\n  - **[Breaking]** Rename `surface` variant to `classic`\n  - **[Breaking]** Rename `solid` variant to `surface`\n- `TextField`:\n  - **[Breaking]** Rename `surface` variant to `classic`\n  - **[Breaking]** Rename `solid` variant to `surface`\n\n## 0.0.36\n\n- General:\n  - Refine `--shadow-1`\n- `Button`, `IconButton`:\n  - Add size 4\n- `Callout`:\n  - **[Breaking]** Remove `radius` prop\n- `Card`:\n  - **[Breaking]** Remove `radius` prop\n- `Checkbox`:\n  - Refine colors for `solid` unchecked variant\n  - **[Breaking]** Remove `radius` prop\n- `Select`:\n  - **[Breaking]** Move `radius` prop from `Root` to `Trigger`\n- `Slider`:\n  - Refine `Thumb` and `Range` shadows\n- `RadioGroup`:\n  - Refine colors for `solid` unchecked variant\n- `Switch`:\n  - Refine colors for `surface` unchecked variant\n- `Table`:\n  - **[Breaking]** Remove `radius` prop\n  - **[Breaking]** Remove optional `Root` prop (`Content` was renamed to `Root` instead) and add a new `variant` prop\n    - Tables previously no wrapped in `Root` part should look the same out of the box (replace `Content` with `Root`)\n    - Tables previously wrapped in `Root`: remove `Root`, rename `Content` to `Root` and add `variant=\"surface\"`\n- `TextArea`:\n  - **[Breaking]** Remove `radius` prop\n\n## 0.0.35\n\n- General:\n  - Upgrade Radix Colors to `2.0.0-alpha.1`\n- `Button`:\n  - Refine colors for `outline` and `surface` variants\n  - Use a smaller border radius for `size=\"1\"` buttons\n  - Use a softer border color for `variant=\"outline\" highContrast` buttons\n- `Card`:\n  - Refine colors and shadows when hovered and pressed\n- `Switch`:\n  - Improve `soft` variant saturation when checked\n- `TextArea`, `TextField`\n  - Refine colors for the `solid` variant\n\n## 0.0.34\n\n- General:\n  - Make `--color-surface-2` and `--accent-surface` slightly transparent in light mode\n  - **[Breaking]** Rework all shadow token values and how they are used\n    - `--shadow-2` and `--shadow-3` are the new steps\n    - Other steps renamed and tweaked\n    - Switch your `--shadow-2` to `--shadow-4` if you want to approximate the old look\n    - Switch your `--shadow-3` to `--shadow-6` if you want to approximate the old look\n    - Switch your `--shadow-4` to `--shadow-5` if you want to approximate the old look\n    - Switch your `--shadow-5` to `--shadow-4` if you want to approximate the old look\n- `Card`:\n  - **[Breaking]** Remove `outline` variant\n  - **[Breaking]** Add new `solid` variant and make it the default\n  - Rework `surface` variant design\n- `Dialog`:\n  - Tweak the overlay color in light mode\n\n## 0.0.33\n\n- General:\n  - Improve `--shadow-1` in dark mode\n- `Slider`:\n  - Add new `surface` variant, rework `soft` variant\n  - **[Breaking]** Switch your `variant` to `surface` if you want the old look\n- `Switch`:\n  - Improve `soft` and `surface` variants design\n\n## 0.0.32\n\n- General:\n  - Add `--color-surface-1`\n  - `--color-surface` is now `--color-surface-2`\n  - Add `--color-canvas` (used in `solid` variants for form controls)\n- `Button`, `IconButton`:\n  - Update font-weight to `--font-weight-medium` on all except `ghost` variant\n  - Color polish\n- `TextField`:\n  - Add new `solid` variant\n  - **[Breaking]** Default `variant` is now `solid`\n- `TextArea`:\n  - Add new `solid` variant\n  - **[Breaking]** Default `variant` is now `solid`\n- `Checkbox`:\n  - Add new `surface` and `soft` variants\n  - **[Breaking]** Switch your `variant` to `surface` if you want the old look\n- `RadioGroup`:\n  - Add new `surface` and `soft` variants\n  - **[Breaking]** Switch your `variant` to `surface` if you want the old look\n- `Select`:\n  - **[Breaking]** Default variant is now `solid`\n  - `solid` variant look and feel adjusted to match form controls (e.g. `TextField`, `Checkbox`, etc)\n- `Switch`:\n  - Add new `surface` and `soft` variants\n  - **[Breaking]** Switch your `variant` to `surface` if you want the old look\n\n## 0.0.31\n\n**Warning!** This release contains some breaking changes.\n\n- `Grid`:\n  - Add support for arbitrary values in `columns`\n  - Add `rows` prop with arbitrary values support\n- `Inset`:\n  - New component supported inside `Dialog`, `AlertDialog`, `Card`, `HoverCard`, `Popover`\n  - Automatic padding adjustments for `Table` inside `Inset`\n- `Slider`: Forward `tabIndex` correctly to `Thumb`\n- `Code`:\n  - **[Breaking]** Polish size, `--code-font-size-adjust` is now `0.95`\n  - **[Breaking]** Rename `plain` variant to `ghost`\n- `Callout`: **[Breaking]** Remove `solid` variant\n- `Table`: Add `size` prop to `TableContent`\n- `Popover`: **[Breaking]** Now comes with its own internal padding\n- General:\n  - Fix light/dark color inheritance\n    - **[Breaking]** `--color-surface-1-accent` is now `--accent-surface`\n    - **[Breaking]** `--color-surface-1` is now `--color-surface`\n  - Polish color usages (alpha, etc)\n  - Polish focus states throughout\n\n## 0.0.30\n\n- `TextField`: `Root` is now `display: flex`\n- General:\n  - Fix inherited appearance colors\n  - Support `.light` / `.dark` out of the box\n\n## 0.0.29\n\n**Warning!** This release contains some breaking changes.\n\n- `Table`: New component\n- **[Breaking]** `TextField`: Add slots support (basic breaking change fix: `TextField` -> `TextFieldInput`)\n- General:\n  - `ThemePanel`: Remove keying and `__useKey` prop (now syncs prop changes internally)\n  - Support global appearance inheritance (next-themes integration):\n    - **[Breaking]** `appearance=\"invert\"` was removed on `Theme`\n\n## 0.0.28\n\n- `Avatar`: Add 4 extra sizes\n- General:\n  - Don't reset `cursor` in CSS resets for `button` and `a` elements\n  - Fix callout post CSS warning\n  - Expose private `__useKey` prop on `Theme` to disable keying the root `Theme` in the docs.\n\n## 0.0.27\n\n**Warning!** This release contains some breaking changes.\n\n- General:\n  - **[Breaking]** `[data-rui-root]` is now `.radix-themes`\n  - `rui-` prefixes are now `rt-` prefixes (could be breaking if you rely on internal stuff)\n- `Select`: Tweak icon gap\n- `Card`: Add built-in negative margin support to ghost cards\n\n## 0.0.26\n\n- `Callout`: New component\n- `Card`: New component\n- `ContextMenu`/`DropdownMenu`: Fix link items (`<DropdownMenuItem asChild><a>…`)\n\n## 0.0.25\n\n- General:\n  - Create new static context on `[data-rui-root]` so overlayed components work correctly out of the box\n  - Fix `--color-surface-1` value in nested themes\n- `Button`, `IconButton`: Tweak ghost variant sizing\n- `Badge`: Scale based on font-size/line-height\n- `Heading`: Fix leading-trim regression\n\n## 0.0.24\n\n- General:\n  - Fix Context issues in Next.js RSC component. This was fixed using proper module resolution using `exports` field in `package.json`, it seems without it it's confusing Next.\n\n## 0.0.23\n\n- `DropdownMenu`, `ContextMenu`: Improve experience using scroll margins\n- `Select`:\n  - Fix issue with scrollarea integration messing up scroll position\n  - Improve experience using scroll margins\n- `Button`, `IconButton`: Improve balancing using built-in negative margins\n- `Checkbox`: Fix radius regression\n- Typography:\n  - Remove `--default-font-size-adjust`\n  - Remove `--heading-font-weight`\n  - Fix `--default-font-style` value\n  - Fix `--heading-font-style` value\n- General:\n  - Use naming convention for internal CSS variables\n\n## 0.0.22\n\nThis update is all about tokens!\n\n- `--fs-` tokens renamed to long-form `--font-size-`\n- `--br-` tokens renamed to long-form `--radius-`\n  - **[Breaking]** The border radius scale has been reworked to be more explicit:\n    - The `\"full\"` radius now is a multiplier of `2` which avoids big panels to become circles\n    - Raw border radius tokens have been removed, instead opt-into full radius using `--radius-full` in a `max` CSS function\n- Implement the entire token suite for font sizes, line heights, letter-spacings, leading-trim, font-weight, font-families, etc\n\n## 0.0.21\n\n- General:\n  - Fix missing export for tooltip prop defs\n\n## 0.0.20\n\n- General:\n  - **[Breaking]** Add missing / rename wrong prop defs\n\n## 0.0.19\n\n**Warning!** This release contains some breaking changes.\n\n- `Sup`: **[Breaking]** This component was removed\n- `Link`: Now extends `Text` and supports all its props except `align`\n- `Button`, `IconButton`: Add `asChild` support (for analogous use of `<Button asChild><a>…`)\n- `Blockquote`: Now extends `Text` and supports all its props except `align`\n- `Heading`: Add `weight` support\n- General:\n  - Use local icons internally instead of Radix icons to avoid package bloat\n  - **[Breaking]** Rework exposed props definitions\n\n## 0.0.18\n\n**Warning!** This release contains some breaking changes.\n\n- `RadixThemesProvider`: **[Breaking]** The component was removed, only `Theme` is required now\n- `Heading`: Improve types output slightly\n- `Container`, `Section`: Add all layout props\n- General:\n  - Improve `::selection` color\n  - Add `auto` support in margin values\n\n## 0.0.17\n\n**Warning!** This release contains some breaking changes.\n\n- `Provider`:\n  - **[Breaking]** The component was renamed to `RadixThemesProvider`\n- `ThemeConfig`:\n  - **[Breaking]** The component was renamed to `Theme`\n  - **[Breaking]** The `mode` prop was renamed to `appearance`\n  - Now live-reloads correctly when changing a prop in JSX\n- `Heading`: Add `as` prop for quick level change (allows `h1` to `h6`)\n- `Text`:\n  - Add `as` prop for specific quick change (allows `span` (default), `div` and `p`)\n  - **[Breaking]** Now renders a `span` by default (instead of `p`).\n    - Most of your usages of `Text` should be replaced by `<Text as=\"p\">`\n    - Your usages of `<Text asChild><span>…` should be replaced simply by `<Text>…`\n    - Your usages of `<Text asChild><span>…` should be replaced simply by `<Text>…`\n- `DropdownMenu`, `ContextMenu`:\n  - **[Breaking]** The `mode` prop on `Content` was removed\n  - Ensure extra left padding on items only when checkable items are present in the menu\n- `Select`:\n  - **[Breaking]** The `mode` prop on `Content` was removed\n  - Fix `Content` type (remove wrong `size` prop, exists on `Root`, not on `Content`)\n- `AlertDialog`, `Dialog` `HoverCard`, `Popover`:\n  - **[Breaking]** The `mode` prop on `Content` was removed\n\n## 0.0.16\n\n- `Dialog`, `AlertDialog`: Fix overlay color when `mode` is set\n- `Select`:\n  - Add `placeholder` styling\n  - Add internal `ScrollArea` to provide overflow affordance\n  - Adjust `disabled` item color\n- `DropdownMenu`, `ContextMenu`:\n  - Add internal `ScrollArea` to provide overflow affordance\n  - Adjust `disabled` item color\n- `Text`: Fix `trim` for non-defined sizes\n- General:\n  - Popper components, default `collisionPadding` to `10` for consistency\n  - Fix responsive styles bug (output order)\n\n## 0.0.15\n\n- `Slider`: Fix `size=\"1\"` thumb not showing\n\n## 0.0.14\n\n- General:\n  - Ensure all arbitrary px values are also scaled (line-heights, etc)\n  - Put popper animations behind `prefers-reduced-motion` media query\n- `ThemePanel`: Add \"copy theme config\" functionality\n- `Badge`:\n  - Add `solid` variant\n  - Add `radius` support\n- `Separator`: Handle `color` more simply (default to `color=\"gray\"` like `Badge`)\n- `Heading`:\n  - Add `align` support\n  - Add `highContrast` support\n- `Text`:\n  - Add `highContrast` support\n  - Don't set default `font-weight` anymore (now inherits by default)\n  - No default `size` anymore (now inherits by default)\n- `Link`:\n  - Don't set default `font-weight` anymore (now inherits by default)\n\n## 0.0.13\n\n**Warning!** This release contains lots of breaking changes.\n\n- `AlertDialog`, `Dialog`, `ContextMenu`, `DropdownMenu`, `HoverCard`, `Popover`, `Select`: Add new `mode` prop to `Content` part\n- General:\n  - **[Breaking]** `ThemeConfig` is now mandatory\n  - All tokens are now scoped to the root `ThemeConfig` component\n  - All config values are now explicitly set in the DOM (no more implied defaults in CSS).\n  - **[Breaking]** This also removed the need for the intermediary `--natural-gray` scale.\n  - **[Breaking]** Default prop value names have been renamed throughout (i.e. `defaultAvatarSize` => `avatarSizeDefault`)\n- `ThemeConfig`:\n  - **[Breaking]** `darkMode` boolean prop was replaced with new `mode` enum prop (values: `light` | `dark` | `invert`)\n  - You can now nest `ThemeConfig` components:\n    - Theme config inherits from the parent config by default. New values can be passed to override.\n    - This can be used to switch sections from light to dark mode (or automatically with `invert`)\n    - It can also be used to make different sections use different accent scales, or any other config value\n- New `ThemePanel` component to tweak the theme option live\n  - Drop it into your own app anywhere under the root `ThemeConfig`\n\n## 0.0.12\n\n- `AlertDialog`, `Dialog`, `ContextMenu`, `DropdownMenu`, `HoverCard`, `Popover`, `Select`, `Tooltip`: Expose portal `container` prop\n\n## 0.0.11\n\n**Warning!** This release contains lots of breaking changes.\n\n- `Select`:\n  - **[Breaking]** API is now more open with `Trigger` and `Content` part\n- `DropdownMenu` / `ContextMenu`:\n  - **[Breaking]** style props (`size`, `variant`, `color`) now passed to `Content`, no need to pass again to `SubContent`\n  - `Item` now supports `color` too\n- `Dialog`: Now always `modal`\n- `Slider`: Fix `key` bug\n- `Link`:\n  - **[Breaking]** Bring back `highContrast` instead of `variant=\"high-contrast\"`\n- General:\n  - **[Breaking]** No more `-mono` variants on any components and added `highContrast` instead\n    - Note: The old `-mono` look can usually b achieved now with `color=\"gray\"` and `highContrast`\n  - **[Breaking]** `subtle` variants are now named `soft` everywhere\n\n## 0.0.10\n\n- Fix build issue with new `ThemeConfig` file\n\n## 0.0.9\n\n**Warning!** This release contains lots of breaking changes.\n\n- `Container`: Add `width: 100%` to ensure it fills its parent\n- `Avatar`: `fallback` is now a required prop (removed default person icon)\n- General:\n  - **[Breaking]** Update to latest Radix Colors (new color variable naming convention)\n  - **[Breaking]** Update Radix Themes colors to follow same convention\n  - **[Breaking]** \"color\" scale is now called \"accent\" scale (e.g. in CSS variables, in theme configuration, etc.)\n  - Add new `--accent-9-contrast` step to account for text color on \"solid\" background (step 9)\n  - **[Breaking]** Prefixed all color aliases with `--color-` (e.g. `--panel` is now `--color-panel`)\n  - **[Breaking]** Border radius tokens:\n    - (e.g. `--br-3`) are now the dynamic values (i.e. based on global/local radius config)\n    - the raw (static) values are now suffixed with `-raw` (e.g. `--br-3-raw`)\n    - max constraint should now be applied on a case by case locally (not baked into the tokens anymore)\n  - **[Breaking]** Button radius is now called radius\n  - **[Breaking]** Scaling values have changed from names (like \"larger\") to % values (90%, 95%, 100%, 105%, 110%)\n  - **[Breaking]** Overalled gray scale configuration: No more `--mono-*` scale, instead always use `--gray-*` scale\n  - **[Breaking]** Overalled background/foreground feel options:\n    - \"Background feel\" is now \"Background color\" and options are \"auto\" or \"gray\"\n    - \"Foreground feel\" is now \"Text color\" and options are \"auto\" or \"accent\"\n  - Add new `ThemeConfig` component to allow typesafe theme configuration\n\n## 0.0.8\n\n- `Link`: Remove `gap` prop. Can now be achived using `Flex asChild` composition instead.\n\n## 0.0.7\n\n- `Code`: Add `outline` and `outline-mono` variants\n- `Box`, `Flex`, `Grid`: Add `asChild` support\n\n## 0.0.6\n\n- `Code`: Remove `highlighted` prop in favour of multiple new `variants`\n- `Avatar`:\n  - Add missing `defaultAvatarRadius` export\n  - Fix loading state not showing fallback background\n\n## 0.0.5\n\n- Fix color resolving in nested light/dark sections (messed up after `0.0.4` changes)\n\n## 0.0.4\n\n- Update CSS tokens to ensure we have a default look and feel even without providing `data-*` theme configuration\n\n## 0.0.3\n\n- `Kbd`, `Slider`, `Switch`: Fix dark mode overrides to ensure correct resolving in nested light/dark sections\n- Reorganise code/exports to suit Next.js 13's RSC support. Notable change for using compound components inside an RSC, you now need to import each part separately (e.g. `DropdownRoot` and `DropdownTrigger`, instead of `Dropdown.Root` and `Dropdown.Trigger`)\n\n## 0.0.2\n\n- All: expose discrete values / default values for props to be consumed in docs\n- `Code`: Remove default `size`\n\n## 0.0.1\n\n- Isolate resets\n"
  },
  {
    "path": "packages/radix-ui-themes/README.md",
    "content": "[![Radix Themes Logo](https://radix-ui.com/social/themes.png)](https://radix-ui.com/themes)\n\n# Radix Themes\n\n**An open-source component library optimized for fast development, easy maintenance, and accessibility.**\n\n---\n\n## Documentation\n\nFor full documentation, visit [radix-ui.com/themes/docs](https://radix-ui.com/themes/docs).\n\n## Releases\n\nFor changelog, visit [radix-ui.com/themes/docs/overview/releases](https://radix-ui.com/themes/docs/overview/releases).\n\n## Authors\n\n- Benoît Grélard ([@benoitgrelard](https://twitter.com/benoitgrelard))\n- Vlad Moroz ([@vladyslavmoroz](https://twitter.com/vladyslavmoroz))\n- Andy Hook ([@Andy_Hook](https://twitter.com/Andy_Hook))\n- Lucas Motta ([@elmotta](https://twitter.com/elmotta))\n\n---\n\n## Community\n\nSee our [contribution guidelines](../../.github/CONTRIBUTING.md) for information on local development and creating a pull request.\n\n- [Github Discussions](https://github.com/radix-ui/themes/discussions) - Ask questions and get answers from other community members.\n- [Discord](https://discord.com/invite/7Xb99uG) - To get involved with the Radix community, ask questions and share tips.\n- [Twitter](https://twitter.com/radix_ui) - To receive updates, announcements, blog posts, and general Radix tips.\n\n## License\n\nLicensed under the MIT License, Copyright © 2023-present [WorkOS](https://workos.com).\n\nSee [LICENSE](./LICENSE) for more information.\n"
  },
  {
    "path": "packages/radix-ui-themes/eslint.config.mjs",
    "content": "// @ts-check\nimport globals from 'globals';\nimport eslint from '@eslint/js';\nimport tseslint from 'typescript-eslint';\nimport reactHooks from 'eslint-plugin-react-hooks';\nimport jsxA11y from 'eslint-plugin-jsx-a11y';\n\nexport default tseslint.config(\n  { ignores: ['node_modules', 'dist'] },\n  {\n    extends: [eslint.configs.recommended, ...tseslint.configs.recommended],\n    languageOptions: {\n      ecmaVersion: 2020,\n      globals: {\n        ...globals.browser,\n        ...globals.node,\n      },\n    },\n    plugins: {\n      // @ts-expect-error\n      'react-hooks': reactHooks,\n      'jsx-a11y': jsxA11y,\n    },\n  },\n  {\n    rules: {\n      ...reactHooks.configs.recommended.rules,\n      ...jsxA11y.flatConfigs.recommended.rules,\n      '@typescript-eslint/ban-ts-comment': 'off',\n      '@typescript-eslint/no-empty-object-type': 'off',\n      '@typescript-eslint/no-explicit-any': 'off',\n      '@typescript-eslint/no-use-before-define': [\n        'warn',\n        {\n          functions: false,\n          classes: false,\n          variables: false,\n          typedefs: false,\n        },\n      ],\n      '@typescript-eslint/no-unused-expressions': [\n        'warn',\n        {\n          allowShortCircuit: true,\n          allowTernary: true,\n          allowTaggedTemplates: true,\n        },\n      ],\n      '@typescript-eslint/no-unused-vars': [\n        'warn',\n        {\n          args: 'after-used',\n          ignoreRestSiblings: true,\n          argsIgnorePattern: '^_',\n          caughtErrorsIgnorePattern: '^_',\n          destructuredArrayIgnorePattern: '^_',\n          varsIgnorePattern: '^_',\n        },\n      ],\n      'no-empty': 'off',\n      'prefer-const': 'off',\n      // TODO: fix issues then re-enable\n      'jsx-a11y/label-has-associated-control': 'off',\n      'no-irregular-whitespace': 'off',\n    },\n  },\n);\n"
  },
  {
    "path": "packages/radix-ui-themes/package.json",
    "content": "{\n  \"name\": \"@radix-ui/themes\",\n  \"version\": \"3.3.0\",\n  \"type\": \"commonjs\",\n  \"main\": \"./dist/cjs/index.js\",\n  \"types\": \"./dist/cjs/index.d.ts\",\n  \"module\": \"./dist/esm/index.js\",\n  \"style\": \"./styles.css\",\n  \"exports\": {\n    \".\": {\n      \"require\": {\n        \"types\": \"./dist/cjs/index.d.ts\",\n        \"default\": \"./dist/cjs/index.js\"\n      },\n      \"import\": {\n        \"types\": \"./dist/esm/index.d.ts\",\n        \"default\": \"./dist/esm/index.js\"\n      }\n    },\n    \"./components/*\": {\n      \"require\": {\n        \"types\": \"./dist/cjs/components/*.d.ts\",\n        \"default\": \"./dist/cjs/components/*.js\"\n      },\n      \"import\": {\n        \"types\": \"./dist/esm/components/*.d.ts\",\n        \"default\": \"./dist/esm/components/*.js\"\n      }\n    },\n    \"./helpers\": {\n      \"require\": {\n        \"types\": \"./dist/cjs/helpers/index.d.ts\",\n        \"default\": \"./dist/cjs/helpers/index.js\"\n      },\n      \"import\": {\n        \"types\": \"./dist/esm/helpers/index.d.ts\",\n        \"default\": \"./dist/esm/helpers/index.js\"\n      }\n    },\n    \"./props\": {\n      \"require\": {\n        \"types\": \"./dist/cjs/props/index.d.ts\",\n        \"default\": \"./dist/cjs/props/index.js\"\n      },\n      \"import\": {\n        \"types\": \"./dist/esm/props/index.d.ts\",\n        \"default\": \"./dist/esm/props/index.js\"\n      }\n    },\n    \"./*\": \"./*\"\n  },\n  \"publishConfig\": {\n    \"access\": \"public\"\n  },\n  \"sideEffects\": [\n    \"*.css\"\n  ],\n  \"license\": \"MIT\",\n  \"files\": [\n    \"CHANGELOG.md\",\n    \"src/**\",\n    \"dist/**\",\n    \"tokens/**\",\n    \"layout/**\",\n    \"*.css\",\n    \"postcss-breakpoints.cjs\",\n    \"postcss-whitespace.cjs\"\n  ],\n  \"scripts\": {\n    \"build\": \"pnpm build:js && pnpm build:css\",\n    \"build:js\": \"pnpm build:js:cjs && pnpm build:js:esm && pnpm build:js:cjs:types && pnpm build:js:esm:types\",\n    \"build:js:cjs\": \"node scripts/esbuild-cjs.js\",\n    \"build:js:cjs:types\": \"tsc --outdir dist/cjs\",\n    \"build:js:esm\": \"node scripts/esbuild-esm.js\",\n    \"build:js:esm:types\": \"tsc --outdir dist/esm\",\n    \"build:css\": \"pnpm build:css:index && pnpm build:css:tokens && pnpm build:css:components && pnpm build:css:utilities && pnpm build:css:layout\",\n    \"build:css:index\": \"postcss src/styles/index.css -o styles.css\",\n    \"build:css:components\": \"postcss src/components/index.css -o components.css\",\n    \"build:css:utilities\": \"postcss src/styles/utilities/index.css -o utilities.css\",\n    \"build:css:tokens\": \"pnpm build:css:tokens:index && pnpm build:css:tokens:base && pnpm build:css:tokens:colors\",\n    \"build:css:tokens:index\": \"postcss src/styles/tokens/index.css -o tokens.css\",\n    \"build:css:tokens:base\": \"postcss src/styles/tokens/base.css -o tokens/base.css\",\n    \"build:css:tokens:colors\": \"postcss src/styles/tokens/colors/*.css --dir tokens/colors\",\n    \"build:css:layout\": \"pnpm build:css:layout:index && pnpm build:css:layout:tokens && pnpm build:css:layout:components && pnpm build:css:layout:utilities\",\n    \"build:css:layout:index\": \"postcss src/styles/layout.css -o layout.css\",\n    \"build:css:layout:tokens\": \"postcss src/styles/tokens/layout.css -o layout/tokens.css\",\n    \"build:css:layout:components\": \"postcss src/components/layout.css -o layout/components.css\",\n    \"build:css:layout:utilities\": \"postcss src/styles/utilities/layout.css -o layout/utilities.css\",\n    \"dev\": \"pnpm dev:js & pnpm dev:css\",\n    \"dev:js\": \"pnpm dev:js:cjs & pnpm dev:js:esm & pnpm dev:js:cjs:types & pnpm dev:js:esm:types\",\n    \"dev:js:cjs\": \"node scripts/esbuild-cjs.js watch=true\",\n    \"dev:js:cjs:types\": \"tsc --watch --incremental --outdir dist/cjs\",\n    \"dev:js:esm\": \"node scripts/esbuild-esm.js watch=true\",\n    \"dev:js:esm:types\": \"tsc --watch --incremental --outdir dist/esm >/dev/null\",\n    \"dev:css\": \"postcss src/styles/index.css -o styles.css --watch\",\n    \"lint\": \"pnpm lint:js && pnpm lint:css && pnpm lint:ts\",\n    \"lint:js\": \"eslint \\\"src/**/*.ts*\\\"\",\n    \"lint:ts\": \"tsc --noEmit\",\n    \"lint:css\": \"stylelint \\\"src/**/*.css\\\"\",\n    \"clean\": \"rm -rf .turbo node_modules dist tokens layout *.css\",\n    \"prepublishOnly\": \"pnpm lint\"\n  },\n  \"dependencies\": {\n    \"@radix-ui/colors\": \"^3.0.0\",\n    \"classnames\": \"^2.3.2\",\n    \"radix-ui\": \"^1.1.3\",\n    \"react-remove-scroll-bar\": \"^2.3.8\"\n  },\n  \"peerDependencies\": {\n    \"@types/react\": \"*\",\n    \"@types/react-dom\": \"*\",\n    \"react\": \"16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc\",\n    \"react-dom\": \"16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc\"\n  },\n  \"peerDependenciesMeta\": {\n    \"@types/react\": {\n      \"optional\": true\n    },\n    \"@types/react-dom\": {\n      \"optional\": true\n    }\n  },\n  \"devDependencies\": {\n    \"@eslint/js\": \"^9.39.2\",\n    \"@types/react\": \"^19.2.10\",\n    \"@types/react-dom\": \"^19.2.3\",\n    \"autoprefixer\": \"10.4.24\",\n    \"esbuild\": \"0.20.0\",\n    \"eslint\": \"^9.39.2\",\n    \"eslint-plugin-jsx-a11y\": \"^6.10.2\",\n    \"eslint-plugin-react\": \"^7.37.5\",\n    \"eslint-plugin-react-hooks\": \"^7.0.1\",\n    \"globals\": \"^17.2.0\",\n    \"postcss\": \"8.5.6\",\n    \"postcss-cli\": \"11.0.1\",\n    \"postcss-combine-duplicated-selectors\": \"10.0.3\",\n    \"postcss-custom-media\": \"12.0.0\",\n    \"postcss-discard-empty\": \"7.0.1\",\n    \"postcss-import\": \"16.1.1\",\n    \"postcss-nesting\": \"14.0.0\",\n    \"radix-ui\": \"^1.4.3\",\n    \"react\": \"^19.2.4\",\n    \"react-dom\": \"^19.2.4\",\n    \"stylelint\": \"16.6.1\",\n    \"typescript\": \"^5.9.3\",\n    \"typescript-eslint\": \"^8.54.0\"\n  },\n  \"homepage\": \"https://radix-ui.com/themes\",\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git+https://github.com/radix-ui/themes.git\"\n  },\n  \"bugs\": {\n    \"url\": \"https://github.com/radix-ui/themes/issues\"\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/postcss-breakpoints.cjs",
    "content": "const fs = require('fs');\nconst path = require('path');\nconst postcss = require('postcss');\n\n// Build a list of breakpoints from \"@custom media\" rules in \"breakpoints.css\"\nconst breakpointsFile = path.resolve('./src/styles/breakpoints.css');\nconst breakpointsCss = fs.readFileSync(breakpointsFile, 'utf-8');\nconst breakpoints = postcss\n  .parse(breakpointsCss)\n  .nodes.map((node) => {\n    if (node.type === 'atrule' && node.name === 'custom-media') {\n      const [_match, name, params] = node.params.match(/--(\\w+)\\s+(.+)/);\n      return { name, params };\n    }\n\n    return null;\n  })\n  .filter(Boolean);\n\nconst cache = new WeakMap();\n\nmodule.exports = () => ({\n  postcssPlugin: 'postcss-breakpoints',\n  Rule(rule) {\n    if (rule.parent.name === 'breakpoints') {\n      const breakpointsRule = rule.parent;\n\n      // when we first meet a given @breakpoints at-rule\n      if (!cache.has(breakpointsRule)) {\n        // create the final media rules for this @breakpoints at-rule\n        const medias = breakpoints.reduce((breakpointsMedias, breakpoint) => {\n          breakpointsMedias[breakpoint.name] = new postcss.AtRule({\n            name: 'media',\n            params: breakpoint.params,\n          });\n          return breakpointsMedias;\n        }, {});\n\n        // add an entry to the cache\n        cache.set(breakpointsRule, medias);\n\n        // add final media rules after the @breakpoints at-rule\n        const mediaRules = Object.values(medias).reverse();\n        mediaRules.forEach((media) => {\n          breakpointsRule.after(media);\n        });\n      }\n\n      // move the rule itself before @breakpoints at-rule\n      breakpointsRule.before(rule);\n\n      // save clone of the rule before we modify it\n      const originalRule = rule.clone();\n      // clean up the extra indentation\n      rule.selector = rule.selector.replace(/\\n\\s\\s/g, '\\n');\n      rule.cleanRaws();\n\n      // add breakpoint-level rules\n      breakpoints.forEach((breakpoint) => {\n        const clone = originalRule.clone();\n        addPrefix(clone, breakpoint.name);\n        cache.get(breakpointsRule)[breakpoint.name].append(clone);\n      });\n\n      // remove @breakpoints at-rule and clear cache if it has no rules\n      if (breakpointsRule.nodes.length === 0) {\n        breakpointsRule.remove();\n        cache.delete(breakpointsRule);\n      }\n    }\n  },\n});\n\nmodule.exports.postcss = true;\n\nfunction addPrefix(node, prefix) {\n  if (node.type === 'atrule') {\n    node.each((child) => addPrefix(child, prefix));\n  }\n\n  /**\n   * Should match responsive classes (rt-r- prefix):\n   * ```\n   * .rt-r-size-1\n   * .rt-m-2\n   * .-rt-m-2\n   * .rt-Button.rt-r-size-1 (captures \"rt-r-size-1\")\n   * ```\n   *\n   * Should not match:\n   * .rt-Button\n   */\n  const classNameRegexp = /\\.(-?rt-r-[a-z0-9-]+)/g;\n\n  // Check for rules that use compound props on a component:\n  // - a component name (prefixed with \"rt-\" and pascal cased)\n  // - followed by 2 or more prop selectors (lowercase, numbers, -)\n  //\n  // e.g. \".rt-DialogContent.rt-r-size-2.gray\"\n  if (/\\.rt-(?:[A-Z][a-z]+)+(?:\\.[a-z0-9-]+){2,}/.test(node.selector)) {\n    throw Error(`\n      \"${node.selector}\" looks like it uses compound props on a component.\n      \"@breakpoints\" does not support compound props yet.\n    `);\n  }\n\n  if (classNameRegexp.test(node.selector)) {\n    node.selector = node.selector.replace(classNameRegexp, `.${prefix}\\\\:$1`);\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/postcss-whitespace.cjs",
    "content": "// Clean up the whitespace mess left behind by other plugins\nmodule.exports = () => ({\n  postcssPlugin: 'postcss-whitespace',\n  Comment(comment) {\n    // Remove all comments\n    comment.remove();\n  },\n  Declaration(decl) {\n    if (decl.value.includes('\\n')) {\n      // Remove line breaks and consequent spaces\n      decl.value = decl.value.replace(/\\s+/g, ' ');\n      // Collapse whitespace around round brackets\n      decl.value = decl.value.replace(/\\(\\s/g, '(');\n      decl.value = decl.value.replace(/\\s\\)/g, ')');\n    }\n  },\n  AtRule(rule) {\n    // Remove line breaks before and after the rule\n    delete rule.raws.before;\n    delete rule.raws.after;\n  },\n  Rule(rule) {\n    rule.cleanRaws();\n  },\n});\n\nmodule.exports.postcss = true;\n"
  },
  {
    "path": "packages/radix-ui-themes/postcss.config.cjs",
    "content": "const path = require('path');\n\nmodule.exports = {\n  plugins: [\n    require('postcss-import')({\n      path: [path.relative(process.cwd(), '../')],\n    }),\n    require('postcss-nesting'),\n    require('./postcss-breakpoints.cjs'),\n    require('postcss-custom-media'),\n    require('postcss-combine-duplicated-selectors'),\n    require('postcss-discard-empty'),\n    require('./postcss-whitespace.cjs'),\n    require('autoprefixer'),\n  ],\n};\n"
  },
  {
    "path": "packages/radix-ui-themes/scripts/esbuild-cjs.js",
    "content": "import esbuild from 'esbuild';\n\nconst dir = 'dist/cjs';\n\n/** @type {import('esbuild').BuildOptions} */\nconst options = {\n  entryPoints: ['src/**/*.ts*'],\n  outdir: dir,\n  format: 'cjs',\n  target: 'es2020',\n  sourcemap: true,\n  minify: true,\n};\n\n// Check if \"watch=true\" flag is passed\nif (process.argv[2]) {\n  const [key, value] = process.argv[2].split('=');\n  if (key === 'watch' && value === 'true') {\n    const ctx = await esbuild.context(options);\n    await ctx.watch();\n  }\n}\n\nesbuild.build(options).catch(() => process.exit(1));\n"
  },
  {
    "path": "packages/radix-ui-themes/scripts/esbuild-esm.js",
    "content": "import esbuild from 'esbuild';\nimport fs from 'fs';\nimport path from 'path';\nimport pkg from '../package.json' with { type: 'json' };\n\nconst dir = 'dist/esm';\n\n/** @type {import('esbuild').BuildOptions} */\nconst options = {\n  entryPoints: ['src/**/*.ts*'],\n  outdir: dir,\n  format: 'esm',\n  target: 'es2020',\n  sourcemap: true,\n  minify: true,\n};\n\n// Check if \"watch=true\" flag is passed\nif (process.argv[2]) {\n  const [key, value] = process.argv[2].split('=');\n  if (key === 'watch' && value === 'true') {\n    const ctx = await esbuild.context(options);\n    await ctx.watch();\n  }\n}\n\nesbuild.build(options).catch(() => process.exit(1));\n\n// Create a package.json file in the dist/esm directory with \"type\": \"module\" field\nif (!fs.existsSync(dir)) {\n  fs.mkdirSync(dir, { recursive: true });\n}\nfs.writeFileSync(\n  path.join(dir, 'package.json'),\n  JSON.stringify({ type: 'module', sideEffects: pkg.sideEffects }, null, 2) + '\\n',\n  'utf-8',\n);\n"
  },
  {
    "path": "packages/radix-ui-themes/scripts/package.json",
    "content": "{\n  \"type\": \"module\"\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/_internal/base-button.css",
    "content": ".rt-BaseButton {\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  flex-shrink: 0;\n  user-select: none;\n  vertical-align: top;\n\n  font-family: var(--default-font-family);\n  font-style: normal;\n  text-align: center;\n\n  &:where([data-disabled]) {\n    --spinner-opacity: 1;\n  }\n\n  &:where(.rt-loading) {\n    position: relative;\n  }\n}\n\n/***************************************************************************************************\n *                                                                                                 *\n * SIZES                                                                                           *\n *                                                                                                 *\n ***************************************************************************************************/\n\n.rt-BaseButton {\n  &:where(:not(.rt-variant-ghost)) {\n    height: var(--base-button-height);\n  }\n  &:where(.rt-variant-ghost) {\n    box-sizing: content-box;\n\n    /* Make sure that the height is not stretched in a Flex/Grid layout */\n    height: fit-content;\n  }\n}\n\n@breakpoints {\n  .rt-BaseButton {\n    &:where(.rt-r-size-1) {\n      --base-button-classic-active-padding-top: 1px;\n      --base-button-height: var(--space-5);\n      border-radius: max(var(--radius-1), var(--radius-full));\n    }\n    &:where(.rt-r-size-2) {\n      --base-button-classic-active-padding-top: 2px;\n      --base-button-height: var(--space-6);\n      border-radius: max(var(--radius-2), var(--radius-full));\n    }\n    &:where(.rt-r-size-3) {\n      --base-button-classic-active-padding-top: 2px;\n      --base-button-height: var(--space-7);\n      border-radius: max(var(--radius-3), var(--radius-full));\n    }\n    &:where(.rt-r-size-4) {\n      --base-button-classic-active-padding-top: 2px;\n      --base-button-height: var(--space-8);\n      border-radius: max(var(--radius-4), var(--radius-full));\n    }\n  }\n}\n\n/***************************************************************************************************\n *                                                                                                 *\n * VARIANTS                                                                                        *\n *                                                                                                 *\n ***************************************************************************************************/\n\n/* classic */\n\n/* prettier-ignore */\n:where(.radix-themes) {\n  --base-button-classic-after-inset: 2px;\n  --base-button-classic-box-shadow-top:\n    inset 0 0 0 1px var(--gray-a4),\n    inset 0 -2px 1px var(--gray-a3);\n  --base-button-classic-box-shadow-bottom:\n    inset 0 4px 2px -2px var(--white-a9),\n    inset 0 2px 1px -1px var(--white-a9);\n  --base-button-classic-disabled-box-shadow:\n    var(--base-button-classic-box-shadow-top),\n    var(--base-button-classic-box-shadow-bottom);\n  --base-button-classic-active-filter: brightness(0.92) saturate(1.1);\n  --base-button-classic-high-contrast-hover-filter: contrast(0.88) saturate(1.1) brightness(1.1);\n  --base-button-classic-high-contrast-active-filter: contrast(0.82) saturate(1.2) brightness(1.16);\n}\n/* prettier-ignore */\n:is(.dark, .dark-theme),\n:is(.dark, .dark-theme) :where(.radix-themes:not(.light, .light-theme)) {\n  --base-button-classic-after-inset: 1px;\n  --base-button-classic-box-shadow-top:\n    inset 0 0 0 1px var(--white-a2),\n    inset 0 4px 2px -2px var(--white-a3),\n    inset 0 1px 1px var(--white-a6),\n    inset 0 -1px 1px var(--black-a6);\n  --base-button-classic-box-shadow-bottom: 0 0 transparent;\n  --base-button-classic-disabled-box-shadow:\n    inset 0 0 0 1px var(--gray-a5),\n    inset 0 4px 2px -2px var(--gray-a2),\n    inset 0 1px 1px var(--gray-a5),\n    inset 0 -1px 1px var(--black-a3),\n    inset 0 0 0 1px var(--gray-a2);\n  --base-button-classic-active-filter: brightness(1.08);\n  --base-button-classic-high-contrast-hover-filter: contrast(0.88) saturate(1.3) brightness(1.14);\n  --base-button-classic-high-contrast-active-filter: brightness(0.95) saturate(1.2);\n}\n\n.rt-BaseButton:where(.rt-variant-classic) {\n  background-color: var(--accent-9);\n  color: var(--accent-contrast);\n  position: relative;\n  z-index: 0;\n\n  /* prettier-ignore */\n  background-image:\n    linear-gradient(to bottom, transparent 50%, var(--gray-a4)),\n    linear-gradient(to bottom, transparent 50%, var(--accent-9) 80%);\n\n  /* prettier-ignore */\n  box-shadow:\n    var(--base-button-classic-box-shadow-top),\n    inset 0 0 0 1px var(--accent-9),\n    var(--base-button-classic-box-shadow-bottom);\n\n  &::after {\n    content: '';\n    position: absolute;\n    border-radius: inherit;\n    pointer-events: none;\n    inset: 0;\n    z-index: -1;\n    border: var(--base-button-classic-after-inset) solid transparent;\n    background-clip: content-box;\n    background-color: inherit;\n    background-image: linear-gradient(var(--black-a1), transparent, var(--white-a2));\n    box-shadow: inset 0 2px 3px -1px var(--white-a4);\n  }\n  &:where(.rt-high-contrast) {\n    background-color: var(--accent-12);\n    color: var(--gray-1);\n\n    /* prettier-ignore */\n    background-image:\n      linear-gradient(to bottom, transparent 50%, var(--gray-a4)),\n      linear-gradient(to bottom, transparent 50%, var(--accent-12) 80%);\n\n    /* prettier-ignore */\n    box-shadow:\n      var(--base-button-classic-box-shadow-top),\n      inset 0 0 0 1px var(--accent-12),\n      var(--base-button-classic-box-shadow-bottom);\n\n    &::after {\n      background-image: linear-gradient(var(--black-a3), transparent, var(--white-a2));\n    }\n  }\n  /* Better -webkit-tap-highlight-color */\n  @media (pointer: coarse) {\n    &:where(:active:not([data-state='open'])) {\n      outline: 0.5em solid var(--accent-a4);\n      outline-offset: 0;\n    }\n  }\n  &:where(:focus-visible) {\n    outline: 2px solid var(--focus-8);\n    outline-offset: 2px;\n  }\n  @media (hover: hover) {\n    &:where(:hover) {\n      &::after {\n        background-color: var(--accent-10);\n        background-image: linear-gradient(var(--black-a2) -15%, transparent, var(--white-a3));\n      }\n      &:where(.rt-high-contrast) {\n        filter: var(--base-button-classic-high-contrast-hover-filter);\n        &::after {\n          background-color: var(--accent-12);\n          background-image: linear-gradient(var(--black-a5), transparent, var(--white-a2));\n        }\n      }\n    }\n  }\n  &:where([data-state='open']) {\n    &::after {\n      background-color: var(--accent-10);\n      background-image: linear-gradient(var(--black-a2) -15%, transparent, var(--white-a3));\n    }\n    &:where(.rt-high-contrast) {\n      filter: var(--base-button-classic-high-contrast-hover-filter);\n      &::after {\n        background-color: var(--accent-12);\n        background-image: linear-gradient(var(--black-a5), transparent, var(--white-a2));\n      }\n    }\n  }\n  &:where(:active:not([data-state='open'], [data-disabled])) {\n    background-color: var(--accent-9);\n    background-image: linear-gradient(var(--black-a1), transparent);\n    padding-top: var(--base-button-classic-active-padding-top);\n\n    /* prettier-ignore */\n    box-shadow:\n      inset 0 4px 2px -2px var(--gray-a4),\n      inset 0 1px 1px var(--gray-a7),\n      inset 0 0 0 1px var(--gray-a5),\n      inset 0 0 0 1px var(--accent-9),\n      inset 0 3px 2px var(--gray-a3),\n      inset 0 0 0 1px var(--white-a7),\n      inset 0 -2px 1px var(--white-a5);\n\n    &::after {\n      box-shadow: none;\n      background-color: inherit;\n      background-image: linear-gradient(var(--black-a2), transparent, var(--white-a3));\n    }\n\n    &:where(.rt-high-contrast) {\n      background-color: var(--accent-12);\n      filter: var(--base-button-classic-high-contrast-active-filter);\n\n      /* prettier-ignore */\n      box-shadow:\n        var(--base-button__classic-active__shadow-front-layer),\n        inset 0 0 0 1px var(--accent-12),\n        var(--base-button__classic-active__shadow-bottom-layer);\n\n      &::after {\n        background-image: linear-gradient(var(--black-a5), transparent, var(--white-a3));\n      }\n    }\n  }\n  &:where([data-disabled]) {\n    color: var(--gray-a8);\n    background-color: var(--gray-2);\n    background-image: none;\n    box-shadow: var(--base-button-classic-disabled-box-shadow);\n    outline: none;\n    filter: none;\n\n    &::after {\n      box-shadow: none;\n      background-color: var(--gray-a2);\n      background-image: linear-gradient(var(--black-a1) -20%, transparent, var(--white-a1));\n    }\n  }\n}\n\n/* solid */\n\n:where(.radix-themes) {\n  --base-button-solid-active-filter: brightness(0.92) saturate(1.1);\n  --base-button-solid-high-contrast-hover-filter: contrast(0.88) saturate(1.1) brightness(1.1);\n  --base-button-solid-high-contrast-active-filter: contrast(0.82) saturate(1.2) brightness(1.16);\n}\n:is(.dark, .dark-theme),\n:is(.dark, .dark-theme) :where(.radix-themes:not(.light, .light-theme)) {\n  --base-button-solid-active-filter: brightness(1.08);\n  --base-button-solid-high-contrast-hover-filter: contrast(0.88) saturate(1.3) brightness(1.18);\n  --base-button-solid-high-contrast-active-filter: brightness(0.95) saturate(1.2);\n}\n\n.rt-BaseButton:where(.rt-variant-solid) {\n  background-color: var(--accent-9);\n  color: var(--accent-contrast);\n\n  @media (hover: hover) {\n    &:where(:hover) {\n      background-color: var(--accent-10);\n    }\n  }\n  &:where([data-state='open']) {\n    background-color: var(--accent-10);\n  }\n  &:where(:active:not([data-state='open'])) {\n    background-color: var(--accent-10);\n    filter: var(--base-button-solid-active-filter);\n  }\n  /* Better -webkit-tap-highlight-color */\n  @media (pointer: coarse) {\n    &:where(:active:not([data-state='open'])) {\n      outline: 0.5em solid var(--accent-a4);\n      outline-offset: 0;\n    }\n  }\n  &:where(:focus-visible) {\n    outline: 2px solid var(--focus-8);\n    outline-offset: 2px;\n  }\n  &:where(.rt-high-contrast) {\n    background-color: var(--accent-12);\n    color: var(--gray-1);\n\n    @media (hover: hover) {\n      &:where(:hover) {\n        background-color: var(--accent-12);\n        filter: var(--base-button-solid-high-contrast-hover-filter);\n      }\n    }\n    &:where([data-state='open']) {\n      background-color: var(--accent-12);\n      filter: var(--base-button-solid-high-contrast-hover-filter);\n    }\n    &:where(:active:not([data-state='open'])) {\n      background-color: var(--accent-12);\n      filter: var(--base-button-solid-high-contrast-active-filter);\n    }\n  }\n  &:where([data-disabled]) {\n    color: var(--gray-a8);\n    background-color: var(--gray-a3);\n    outline: none;\n    filter: none;\n  }\n}\n\n/* soft / ghost */\n\n.rt-BaseButton:where(.rt-variant-soft, .rt-variant-ghost, .rt-variant-ghost-offset) {\n  color: var(--accent-a11);\n\n  &:where(.rt-high-contrast) {\n    color: var(--accent-12);\n  }\n  &:where([data-disabled]) {\n    color: var(--gray-a8);\n    background-color: var(--gray-a3);\n  }\n}\n\n.rt-BaseButton:where(.rt-variant-soft) {\n  background-color: var(--accent-a3);\n\n  &:where(:focus-visible) {\n    outline: 2px solid var(--accent-8);\n    outline-offset: -1px;\n  }\n  @media (hover: hover) {\n    &:where(:hover) {\n      background-color: var(--accent-a4);\n    }\n  }\n  &:where([data-state='open']) {\n    background-color: var(--accent-a4);\n  }\n  &:where(:active:not([data-state='open'])) {\n    background-color: var(--accent-a5);\n  }\n  &:where([data-disabled]) {\n    color: var(--gray-a8);\n    background-color: var(--gray-a3);\n  }\n}\n\n.rt-BaseButton:where(.rt-variant-ghost, .rt-variant-ghost-offset) {\n  @media (hover: hover) {\n    &:where(:hover) {\n      background-color: var(--accent-a3);\n    }\n  }\n  &:where(:focus-visible) {\n    outline: 2px solid var(--focus-8);\n    outline-offset: -1px;\n  }\n  &:where([data-state='open']) {\n    background-color: var(--accent-a3);\n  }\n  &:where(:active:not([data-state='open'])) {\n    background-color: var(--accent-a4);\n  }\n  &:where([data-disabled]) {\n    color: var(--gray-a8);\n    background-color: transparent;\n  }\n}\n\n/* outline */\n\n.rt-BaseButton:where(.rt-variant-outline) {\n  box-shadow: inset 0 0 0 1px var(--accent-a8);\n  color: var(--accent-a11);\n\n  @media (hover: hover) {\n    &:where(:hover) {\n      background-color: var(--accent-a2);\n    }\n  }\n  &:where([data-state='open']) {\n    background-color: var(--accent-a2);\n  }\n  &:where(:active:not([data-state='open'])) {\n    background-color: var(--accent-a3);\n  }\n  &:where(:focus-visible) {\n    outline: 2px solid var(--focus-8);\n    outline-offset: -1px;\n  }\n  &:where(.rt-high-contrast) {\n    box-shadow:\n      inset 0 0 0 1px var(--accent-a7),\n      inset 0 0 0 1px var(--gray-a11);\n    color: var(--accent-12);\n  }\n  &:where([data-disabled]) {\n    color: var(--gray-a8);\n    box-shadow: inset 0 0 0 1px var(--gray-a7);\n    background-color: transparent;\n  }\n}\n\n/* surface */\n\n.rt-BaseButton:where(.rt-variant-surface) {\n  background-color: var(--accent-surface);\n  box-shadow: inset 0 0 0 1px var(--accent-a7);\n  color: var(--accent-a11);\n\n  @media (hover: hover) {\n    &:where(:hover) {\n      box-shadow: inset 0 0 0 1px var(--accent-a8);\n    }\n  }\n  &:where([data-state='open']) {\n    box-shadow: inset 0 0 0 1px var(--accent-a8);\n  }\n  &:where(:active:not([data-state='open'])) {\n    background-color: var(--accent-a3);\n    box-shadow: inset 0 0 0 1px var(--accent-a8);\n  }\n  &:where(:focus-visible) {\n    outline: 2px solid var(--focus-8);\n    outline-offset: -1px;\n  }\n  &:where(.rt-high-contrast) {\n    color: var(--accent-12);\n  }\n  &:where([data-disabled]) {\n    color: var(--gray-a8);\n    box-shadow: inset 0 0 0 1px var(--gray-a6);\n    background-color: var(--gray-a2);\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/_internal/base-button.props.ts",
    "content": "import { asChildPropDef } from '../../props/as-child.prop.js';\nimport { accentColorPropDef } from '../../props/color.prop.js';\nimport { highContrastPropDef } from '../../props/high-contrast.prop.js';\nimport { radiusPropDef } from '../../props/radius.prop.js';\n\nimport type { PropDef } from '../../props/prop-def.js';\n\nconst sizes = ['1', '2', '3', '4'] as const;\nconst variants = [\n  'classic',\n  'solid',\n  'soft',\n  'surface',\n  'outline',\n  'ghost-offset',\n  'ghost',\n] as const;\n\nconst baseButtonPropDefs = {\n  ...asChildPropDef,\n  size: { type: 'enum', className: 'rt-r-size', values: sizes, default: '2', responsive: true },\n  variant: { type: 'enum', className: 'rt-variant', values: variants, default: 'solid' },\n  ...accentColorPropDef,\n  ...highContrastPropDef,\n  ...radiusPropDef,\n  loading: { type: 'boolean', className: 'rt-loading', default: false },\n} satisfies {\n  size: PropDef<(typeof sizes)[number]>;\n  variant: PropDef<(typeof variants)[number]>;\n  loading: PropDef<boolean>;\n};\n\nexport { baseButtonPropDefs };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/_internal/base-button.tsx",
    "content": "'use client';\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { Slot } from 'radix-ui';\n\nimport { baseButtonPropDefs } from './base-button.props.js';\nimport { Flex } from '../flex.js';\nimport { Spinner } from '../spinner.js';\nimport { VisuallyHidden } from '../visually-hidden.js';\nimport { extractProps } from '../../helpers/extract-props.js';\nimport { mapResponsiveProp, mapButtonSizeToSpinnerSize } from '../../helpers/map-prop-values.js';\nimport { marginPropDefs } from '../../props/margin.props.js';\n\nimport type { MarginProps } from '../../props/margin.props.js';\nimport type { ComponentPropsWithout, RemovedProps } from '../../helpers/component-props.js';\nimport type { GetPropDefTypes } from '../../props/prop-def.js';\n\ntype BaseButtonElement = React.ElementRef<'button'>;\ntype BaseButtonOwnProps = GetPropDefTypes<typeof baseButtonPropDefs>;\ninterface BaseButtonProps\n  extends ComponentPropsWithout<'button', RemovedProps>, MarginProps, BaseButtonOwnProps {}\nconst BaseButton = React.forwardRef<BaseButtonElement, BaseButtonProps>((props, forwardedRef) => {\n  const { size = baseButtonPropDefs.size.default } = props;\n  const {\n    className,\n    children,\n    asChild,\n    color,\n    radius,\n    disabled = props.loading,\n    ...baseButtonProps\n  } = extractProps(props, baseButtonPropDefs, marginPropDefs);\n  const Comp = asChild ? Slot.Root : 'button';\n  let child = children;\n  if (props.loading) {\n    // Loading buttons will wrap the contents of the button for hiding them\n    // visually while retaining the button's size. This does not work with the\n    // Radix Slot since the slot root expects the slottable content to be one of\n    // its direct descendants. To get around this we need to clone the child\n    // with its wrapped inner children.\n    if (asChild && React.isValidElement(children)) {\n      const props = children.props as { children?: React.ReactNode };\n      const childNode = props.children;\n      child = React.cloneElement<any>(children, {\n        ...props,\n        children: renderLoadingButtonContents(childNode, size),\n      });\n    } else {\n      child = renderLoadingButtonContents(children, size);\n    }\n  }\n\n  return (\n    <Comp\n      // The `data-disabled` attribute enables correct styles when doing `<Button asChild disabled>`\n      data-disabled={disabled || undefined}\n      data-accent-color={color}\n      data-radius={radius}\n      {...baseButtonProps}\n      ref={forwardedRef}\n      className={classNames('rt-reset', 'rt-BaseButton', className)}\n      disabled={disabled}\n    >\n      {child}\n    </Comp>\n  );\n});\nBaseButton.displayName = 'BaseButton';\n\nexport { BaseButton };\nexport type { BaseButtonProps };\n\nfunction renderLoadingButtonContents(children: React.ReactNode, size: BaseButtonProps['size']) {\n  return (\n    <>\n      {/*\n       * We need a wrapper to set `visibility: hidden` to hide the button content\n       * whilst we show the `Spinner`. The button is a flex container with a `gap`,\n       * so we use `display: contents` to ensure the correct flex layout.\n       *\n       * However, `display: contents` removes the content from the accessibility\n       * tree in some browsers, so we force remove it with `aria-hidden` and\n       * re-add it in the tree with `VisuallyHidden`\n       */}\n      <span style={{ display: 'contents', visibility: 'hidden' }} aria-hidden>\n        {children}\n      </span>\n      <VisuallyHidden>{children}</VisuallyHidden>\n      <Flex asChild align=\"center\" justify=\"center\" position=\"absolute\" inset=\"0\">\n        <span>\n          <Spinner size={mapResponsiveProp(size, mapButtonSizeToSpinnerSize)} />\n        </span>\n      </Flex>\n    </>\n  );\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/_internal/base-card.css",
    "content": ".rt-BaseCard {\n  display: block;\n  position: relative;\n  overflow: hidden;\n  border-radius: var(--base-card-border-radius);\n\n  /* Don't inherit typographic properties */\n  font-family: var(--default-font-family);\n  font-weight: var(--font-weight-normal);\n  font-style: normal;\n  text-align: start;\n\n  --inset-border-width: var(--base-card-border-width);\n  --inset-border-radius: var(--base-card-border-radius);\n  padding-top: var(--base-card-padding-top);\n  padding-right: var(--base-card-padding-right);\n  padding-bottom: var(--base-card-padding-bottom);\n  padding-left: var(--base-card-padding-left);\n  box-sizing: border-box;\n\n  /*\n   * Some layout acrobatics with `var(--base-card-border-width)` because we want:\n   * 1. <Card> with fixed height to clip overflowing content.\n   * 2. <Inset> that clips to card’s border-box or padding-box depending on the `clip` value.\n   *\n   * To have both (1) and (2), we clip the content at the outer edge of `.rt-BaseCard` border, and use\n   * a ::before pseudo-element for the background color, which is smaller by the border width on each side.\n   */\n  --inset-padding-top: calc(var(--base-card-padding-top) - var(--base-card-border-width));\n  --inset-padding-right: calc(var(--base-card-padding-right) - var(--base-card-border-width));\n  --inset-padding-bottom: calc(var(--base-card-padding-bottom) - var(--base-card-border-width));\n  --inset-padding-left: calc(var(--base-card-padding-left) - var(--base-card-border-width));\n\n  /*\n   * ::before is used for the background color.\n   * ::after is used for the inner border that goes on top the children.\n   */\n  &::before,\n  &::after {\n    content: '';\n    position: absolute;\n    pointer-events: none;\n    transition: inherit;\n    border-radius: calc(var(--base-card-border-radius) - var(--base-card-border-width));\n    inset: var(--base-card-border-width);\n  }\n\n  /*\n   * Background color:\n   * 1. \"z-index: -1\" so that the background goes below the children\n   * 2. \"contain: paint\" creates a new stacking context so that ::before doesn’t go below the card’s sibling elements\n   */\n  &::before {\n    z-index: -1;\n  }\n  & {\n    contain: paint;\n  }\n}\n\n/* * * * * * * * * * * * * * * * * * * */\n/*                                     */\n/*          Shadows / Surface          */\n/*                                     */\n/* * * * * * * * * * * * * * * * * * * */\n\n:where(.radix-themes) {\n  --base-card-surface-box-shadow: 0 0 0 1px var(--gray-a5);\n  --base-card-surface-hover-box-shadow: 0 0 0 1px var(--gray-a7);\n  --base-card-surface-active-box-shadow: 0 0 0 1px var(--gray-a6);\n\n  @supports (color: color-mix(in oklab, white, black)) {\n    --base-card-surface-box-shadow: 0 0 0 1px color-mix(in oklab, var(--gray-a5), var(--gray-5) 25%);\n    --base-card-surface-hover-box-shadow: 0 0 0 1px color-mix(in oklab, var(--gray-a7), var(--gray-7) 25%);\n    --base-card-surface-active-box-shadow: 0 0 0 1px color-mix(in oklab, var(--gray-a6), var(--gray-6) 25%);\n  }\n}\n\n/* * * * * * * * * * * * * * * * * * * */\n/*                                     */\n/*          Shadows / Classic          */\n/*                                     */\n/* * * * * * * * * * * * * * * * * * * */\n\n/*\n * 1. Outer shadow has to be the same as inner shadow, but with a 1px smaller spread value.\n * 2. Keep the initial state in sync with var(--shadow-2) in `shadow.css`.\n * 3. Make sure that between all states, the length of the shadow list matches:\n *    https://developer.mozilla.org/en-US/docs/Web/CSS/box-shadow#interpolation\n */\n\n/* prettier-ignore */\n:where(.radix-themes) {\n  --base-card-classic-box-shadow-inner:\n    0 0 0 1px var(--base-card-classic-border-color),\n    0 0 0 1px var(--color-transparent),\n    0 0 0 0.5px var(--black-a1),\n    0 1px 1px 0 var(--gray-a2),\n    0 2px 1px -1px var(--black-a1),\n    0 1px 3px 0 var(--black-a1);\n  --base-card-classic-box-shadow-outer:\n    0 0 0 0 var(--base-card-classic-border-color),\n    0 0 0 0 var(--color-transparent),\n    0 0 0 0 var(--black-a1),\n    0 1px 1px -1px var(--gray-a2),\n    0 2px 1px -2px var(--black-a1),\n    0 1px 3px -1px var(--black-a1);\n\n  --base-card-classic-hover-box-shadow-inner:\n    0 0 0 1px var(--base-card-classic-hover-border-color),\n    0 1px 1px 1px var(--black-a1),\n    0 2px 1px -1px var(--gray-a3),\n    0 2px 3px -2px var(--black-a1),\n    0 3px 12px -4px var(--gray-a3),\n    0 4px 16px -8px var(--black-a1);\n  --base-card-classic-hover-box-shadow-outer:\n    0 0 0 0 var(--base-card-classic-hover-border-color),\n    0 1px 1px 0 var(--black-a1),\n    0 2px 1px -2px var(--gray-a3),\n    0 2px 3px -3px var(--black-a1),\n    0 3px 12px -5px var(--gray-a3),\n    0 4px 16px -9px var(--black-a1);\n\n  --base-card-classic-active-box-shadow-inner:\n    0 0 0 1px var(--base-card-classic-active-border-color),\n    0 0 0 1px var(--color-transparent),\n    0 0 0 0.5px var(--black-a1),\n    0 1px 1px 0 var(--gray-a4),\n    0 2px 1px -1px var(--black-a1),\n    0 1px 3px 0 var(--black-a1);\n  --base-card-classic-active-box-shadow-outer:\n    0 0 0 0 var(--base-card-classic-active-border-color),\n    0 0 0 0 var(--color-transparent),\n    0 0 0 0 var(--black-a1),\n    0 1px 1px -1px var(--gray-a4),\n    0 2px 1px -2px var(--black-a1),\n    0 1px 3px -1px var(--black-a1);\n\n  --base-card-classic-border-color: var(--gray-a3);\n  --base-card-classic-hover-border-color: var(--gray-a3);\n  --base-card-classic-active-border-color: var(--gray-a4);\n  @supports (color: color-mix(in oklab, white, black)) {\n    --base-card-classic-border-color: color-mix(in oklab, var(--gray-a3), var(--gray-3) 25%);\n    --base-card-classic-hover-border-color: color-mix(in oklab, var(--gray-a4), var(--gray-4) 25%);\n    --base-card-classic-active-border-color: color-mix(in oklab, var(--gray-a3), var(--gray-3) 25%);\n  }\n}\n\n/* prettier-ignore */\n:is(.dark, .dark-theme),\n:is(.dark, .dark-theme) :where(.radix-themes:not(.light, .light-theme)) {\n  --base-card-classic-box-shadow-inner:\n    0 0 0 1px var(--base-card-classic-border-color),\n    0 0 0 1px var(--color-transparent),\n    0 0 0 0.5px var(--black-a3),\n    0 1px 1px 0 var(--black-a6),\n    0 2px 1px -1px var(--black-a6),\n    0 1px 3px 0 var(--black-a5);\n  --base-card-classic-box-shadow-outer:\n    0 0 0 0 var(--base-card-classic-border-color),\n    0 0 0 0 var(--color-transparent),\n    0 0 0 0 var(--black-a3),\n    0 1px 1px -1px var(--black-a6),\n    0 2px 1px -2px var(--black-a6),\n    0 1px 3px -1px var(--black-a5);\n\n  --base-card-classic-hover-box-shadow-inner:\n    0 0 0 1px var(--base-card-classic-hover-border-color),\n    0 0 1px 1px var(--gray-a4),\n    0 0 1px -1px var(--gray-a4),\n    0 0 3px -2px var(--gray-a3),\n    0 0 12px -2px var(--gray-a3),\n    0 0 16px -8px var(--gray-a7);\n  --base-card-classic-hover-box-shadow-outer:\n    0 0 0 0 var(--base-card-classic-hover-border-color),\n    0 0 1px 0 var(--gray-a4),\n    0 0 1px -2px var(--gray-a4),\n    0 0 3px -3px var(--gray-a3),\n    0 0 12px -3px var(--gray-a3),\n    0 0 16px -9px var(--gray-a7);\n\n  --base-card-classic-active-box-shadow-inner:\n    0 0 0 1px var(--base-card-classic-active-border-color),\n    0 0 0 1px var(--color-transparent),\n    0 0 0 0.5px var(--black-a3),\n    0 1px 1px 0 var(--black-a6),\n    0 2px 1px -1px var(--black-a6),\n    0 1px 3px 0 var(--black-a5);\n  --base-card-classic-active-box-shadow-outer:\n    0 0 0 0 var(--base-card-classic-active-border-color),\n    0 0 0 0 var(--color-transparent),\n    0 0 0 0 var(--black-a3),\n    0 1px 1px -1px var(--black-a6),\n    0 2px 1px -2px var(--black-a6),\n    0 1px 3px -1px var(--black-a5);\n\n  --base-card-classic-border-color: var(--gray-a6);\n  --base-card-classic-hover-border-color: var(--gray-a6);\n  --base-card-classic-active-border-color: var(--gray-a6);\n  @supports (color: color-mix(in oklab, white, black)) {\n    --base-card-classic-border-color: color-mix(in oklab, var(--gray-a6), var(--gray-6) 25%);\n    --base-card-classic-hover-border-color: color-mix(in oklab, var(--gray-a6), var(--gray-6) 25%);\n    --base-card-classic-active-border-color: color-mix(in oklab, var(--gray-a6), var(--gray-6) 25%);\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/_internal/base-checkbox.css",
    "content": ".rt-BaseCheckboxRoot {\n  position: relative;\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  vertical-align: top;\n  flex-shrink: 0;\n  cursor: var(--cursor-checkbox);\n\n  /* Unless in a skeleton, align with text line height when possible and fall back to own height */\n  height: var(--skeleton-height, var(--line-height, var(--checkbox-size)));\n  --skeleton-height-override: var(--checkbox-size);\n\n  /* Set root radius when in a skeleton */\n  border-radius: var(--skeleton-radius);\n  --skeleton-radius-override: var(--checkbox-border-radius);\n\n  &::before {\n    content: '';\n    display: block;\n    height: var(--checkbox-size);\n    width: var(--checkbox-size);\n    border-radius: var(--checkbox-border-radius);\n  }\n}\n\n.rt-BaseCheckboxIndicator {\n  position: absolute;\n  width: var(--checkbox-indicator-size);\n  height: var(--checkbox-indicator-size);\n\n  /* Required for subpixel alignment in Safari */\n  transform: translate(-50%, -50%);\n  top: 50%;\n  left: 50%;\n}\n\n/***************************************************************************************************\n *                                                                                                 *\n * SIZES                                                                                           *\n *                                                                                                 *\n ***************************************************************************************************/\n\n@breakpoints {\n  .rt-BaseCheckboxRoot {\n    &:where(.rt-r-size-1) {\n      --checkbox-size: calc(var(--space-4) * 0.875);\n      --checkbox-indicator-size: calc(9px * var(--scaling));\n      --checkbox-border-radius: calc(var(--radius-1) * 0.875);\n    }\n    &:where(.rt-r-size-2) {\n      --checkbox-size: var(--space-4);\n      --checkbox-indicator-size: calc(10px * var(--scaling));\n      --checkbox-border-radius: var(--radius-1);\n    }\n    &:where(.rt-r-size-3) {\n      --checkbox-size: calc(var(--space-4) * 1.25);\n      --checkbox-indicator-size: calc(12px * var(--scaling));\n      --checkbox-border-radius: calc(var(--radius-1) * 1.25);\n    }\n  }\n}\n\n/***************************************************************************************************\n *                                                                                                 *\n * VARIANTS                                                                                        *\n *                                                                                                 *\n ***************************************************************************************************/\n\n/* surface */\n\n.rt-BaseCheckboxRoot:where(.rt-variant-surface) {\n  &:where([data-state='unchecked']) {\n    &::before {\n      background-color: var(--color-surface);\n      box-shadow: inset 0 0 0 1px var(--gray-a7);\n    }\n  }\n\n  &:where([data-state='checked'], [data-state='indeterminate']) {\n    &::before {\n      background-color: var(--accent-indicator);\n    }\n    & :where(.rt-BaseCheckboxIndicator) {\n      color: var(--accent-contrast);\n    }\n\n    &:where(.rt-high-contrast) {\n      &::before {\n        background-color: var(--accent-12);\n      }\n      & :where(.rt-BaseCheckboxIndicator) {\n        color: var(--accent-1);\n      }\n    }\n  }\n\n  &:where(:disabled) {\n    &::before {\n      box-shadow: inset 0 0 0 1px var(--gray-a6);\n      background-color: transparent;\n    }\n    & :where(.rt-BaseCheckboxIndicator) {\n      color: var(--gray-a8);\n    }\n  }\n}\n\n/* classic */\n\n.rt-BaseCheckboxRoot:where(.rt-variant-classic) {\n  &:where([data-state='unchecked']) {\n    &::before {\n      background-color: var(--color-surface);\n      box-shadow:\n        inset 0 0 0 1px var(--gray-a3),\n        var(--shadow-1);\n    }\n  }\n\n  &:where([data-state='checked'], [data-state='indeterminate']) {\n    &::before {\n      background-color: var(--accent-indicator);\n      background-image: linear-gradient(to bottom, var(--white-a3), transparent, var(--black-a1));\n      box-shadow:\n        inset 0 0.5px 0.5px var(--white-a4),\n        inset 0 -0.5px 0.5px var(--black-a4);\n    }\n    & :where(.rt-BaseCheckboxIndicator) {\n      color: var(--accent-contrast);\n    }\n\n    &:where(.rt-high-contrast) {\n      &::before {\n        background-color: var(--accent-12);\n      }\n      & :where(.rt-BaseCheckboxIndicator) {\n        color: var(--accent-1);\n      }\n    }\n  }\n\n  &:where(:disabled) {\n    &::before {\n      box-shadow: var(--shadow-1);\n      background-color: transparent;\n      background-image: none;\n    }\n    & :where(.rt-BaseCheckboxIndicator) {\n      color: var(--gray-a8);\n    }\n  }\n}\n\n/* soft */\n\n.rt-BaseCheckboxRoot:where(.rt-variant-soft) {\n  &::before {\n    background-color: var(--accent-a5);\n  }\n\n  &:where([data-state='checked'], [data-state='indeterminate']) {\n    & :where(.rt-BaseCheckboxIndicator) {\n      color: var(--accent-a11);\n    }\n\n    &:where(.rt-high-contrast) {\n      & :where(.rt-BaseCheckboxIndicator) {\n        color: var(--accent-12);\n      }\n    }\n  }\n\n  &:where(:disabled) {\n    &::before {\n      background-color: transparent;\n    }\n    & :where(.rt-BaseCheckboxIndicator) {\n      color: var(--gray-a8);\n    }\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/_internal/base-checkbox.props.ts",
    "content": "import { colorPropDef } from '../../props/color.prop.js';\nimport { highContrastPropDef } from '../../props/high-contrast.prop.js';\n\nimport type { PropDef } from '../../props/prop-def.js';\n\nconst sizes = ['1', '2', '3'] as const;\nconst variants = ['classic', 'surface', 'soft'] as const;\n\nconst baseCheckboxPropDefs = {\n  size: { type: 'enum', className: 'rt-r-size', values: sizes, default: '2', responsive: true },\n  variant: { type: 'enum', className: 'rt-variant', values: variants, default: 'surface' },\n  ...colorPropDef,\n  ...highContrastPropDef,\n} satisfies {\n  size: PropDef<(typeof sizes)[number]>;\n  variant: PropDef<(typeof variants)[number]>;\n};\n\nexport { baseCheckboxPropDefs };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/_internal/base-dialog.css",
    "content": ".rt-BaseDialogOverlay {\n  position: fixed;\n  inset: 0;\n\n  &::before {\n    position: fixed;\n    content: '';\n    inset: 0;\n    background-color: var(--color-overlay);\n  }\n}\n\n.rt-BaseDialogScroll {\n  display: flex;\n  overflow: auto;\n  position: absolute;\n  inset: 0;\n}\n\n.rt-BaseDialogScrollPadding {\n  flex-grow: 1;\n  margin: auto;\n  padding-top: var(--space-6);\n  padding-bottom: max(var(--space-6), 6vh);\n  padding-left: var(--space-4);\n  padding-right: var(--space-4);\n}\n\n@breakpoints {\n  .rt-BaseDialogScrollPadding:where(.rt-r-align-start) {\n    margin-top: 0;\n  }\n  .rt-BaseDialogScrollPadding:where(.rt-r-align-center) {\n    margin-top: auto;\n  }\n}\n\n.rt-BaseDialogContent {\n  margin: auto;\n  width: 100%;\n  z-index: 1;\n  position: relative;\n  box-sizing: border-box;\n  overflow: auto;\n\n  --inset-padding-top: var(--dialog-content-padding);\n  --inset-padding-right: var(--dialog-content-padding);\n  --inset-padding-bottom: var(--dialog-content-padding);\n  --inset-padding-left: var(--dialog-content-padding);\n  padding: var(--dialog-content-padding);\n  box-sizing: border-box;\n\n  background-color: var(--color-panel-solid);\n  box-shadow: var(--shadow-6);\n  outline: none;\n}\n\n/***************************************************************************************************\n *                                                                                                 *\n * SIZES                                                                                           *\n *                                                                                                 *\n ***************************************************************************************************/\n\n@breakpoints {\n  .rt-BaseDialogContent {\n    &:where(.rt-r-size-1) {\n      --dialog-content-padding: var(--space-3);\n      border-radius: var(--radius-4);\n    }\n    &:where(.rt-r-size-2) {\n      --dialog-content-padding: var(--space-4);\n      border-radius: var(--radius-4);\n    }\n    &:where(.rt-r-size-3) {\n      --dialog-content-padding: var(--space-5);\n      border-radius: var(--radius-5);\n    }\n    &:where(.rt-r-size-4) {\n      --dialog-content-padding: var(--space-6);\n      border-radius: var(--radius-5);\n    }\n  }\n}\n\n@media (prefers-reduced-motion: no-preference) {\n  @keyframes rt-dialog-overlay-no-op {\n    from {\n      opacity: 1;\n    }\n    to {\n      opacity: 1;\n    }\n  }\n\n  @keyframes rt-dialog-content-show {\n    from {\n      opacity: 0;\n      transform: translateY(5px) scale(0.97);\n    }\n    to {\n      opacity: 1;\n      transform: translateY(0px) scale(1);\n    }\n  }\n\n  @keyframes rt-dialog-content-hide {\n    from {\n      opacity: 1;\n      transform: translateY(0px) scale(1);\n    }\n    to {\n      opacity: 0;\n      transform: translateY(5px) scale(0.99);\n    }\n  }\n\n  .rt-BaseDialogOverlay {\n    /* Keep the overlay mounted until the children have animated */\n    &:where([data-state='closed']) {\n      animation: rt-dialog-overlay-no-op 160ms cubic-bezier(0.16, 1, 0.3, 1);\n    }\n    &:where([data-state='open'])::before {\n      animation: rt-fade-in 200ms cubic-bezier(0.16, 1, 0.3, 1);\n    }\n    &:where([data-state='closed'])::before {\n      opacity: 0;\n      animation: rt-fade-out 160ms cubic-bezier(0.16, 1, 0.3, 1);\n    }\n  }\n\n  .rt-BaseDialogContent {\n    &:where([data-state='open']) {\n      animation: rt-dialog-content-show 200ms cubic-bezier(0.16, 1, 0.3, 1);\n    }\n    &:where([data-state='closed']) {\n      opacity: 0;\n      animation: rt-dialog-content-hide 100ms cubic-bezier(0.16, 1, 0.3, 1);\n    }\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/_internal/base-menu.css",
    "content": ".rt-BaseMenuContent {\n  --scrollarea-scrollbar-vertical-margin-top: var(--base-menu-content-padding);\n  --scrollarea-scrollbar-vertical-margin-bottom: var(--base-menu-content-padding);\n  --scrollarea-scrollbar-horizontal-margin-left: var(--base-menu-content-padding);\n  --scrollarea-scrollbar-horizontal-margin-right: var(--base-menu-content-padding);\n\n  display: flex;\n  flex-direction: column;\n  box-sizing: border-box;\n  overflow: hidden;\n  background-color: var(--base-menu-bg);\n}\n\n.rt-BaseMenuViewport {\n  flex: 1 1 0%;\n  display: flex;\n  flex-direction: column;\n  overflow: auto;\n  padding: var(--base-menu-content-padding);\n  box-sizing: border-box;\n\n  :where(.rt-BaseMenuContent:has(.rt-ScrollAreaScrollbar[data-orientation='vertical'])) & {\n    padding-right: var(--space-3);\n  }\n}\n\n.rt-BaseMenuItem {\n  display: flex;\n  align-items: center;\n  gap: var(--space-2);\n  height: var(--base-menu-item-height);\n  padding-left: var(--base-menu-item-padding-left);\n  padding-right: var(--base-menu-item-padding-right);\n  box-sizing: border-box;\n  position: relative;\n  outline: none;\n  scroll-margin: var(--base-menu-content-padding) 0;\n\n  /* Fix sticky text highlighting after selection in Firefox */\n  user-select: none;\n\n  /* Cursors */\n  cursor: var(--cursor-menu-item);\n  &:where([data-disabled]) {\n    cursor: default;\n  }\n}\n\n.rt-BaseMenuShortcut {\n  display: flex;\n  align-items: center;\n  margin-left: auto;\n  padding-left: var(--space-4);\n}\n\n.rt-BaseMenuSubTriggerIcon {\n  color: var(--gray-12);\n  margin-right: calc(-2px * var(--scaling));\n}\n\n.rt-BaseMenuItemIndicator {\n  position: absolute;\n  left: 0;\n  width: var(--base-menu-item-padding-left);\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n}\n\n.rt-BaseMenuSeparator {\n  height: 1px;\n  margin-top: var(--space-2);\n  margin-bottom: var(--space-2);\n  margin-left: var(--base-menu-item-padding-left);\n  margin-right: var(--base-menu-item-padding-right);\n}\n\n.rt-BaseMenuLabel {\n  display: flex;\n  align-items: center;\n  height: var(--base-menu-item-height);\n  padding-left: var(--base-menu-item-padding-left);\n  padding-right: var(--base-menu-item-padding-right);\n  box-sizing: border-box;\n  color: var(--gray-a10);\n  user-select: none;\n  cursor: default;\n\n  :where(.rt-BaseMenuItem) + & {\n    margin-top: var(--space-2);\n  }\n}\n\n.rt-BaseMenuArrow {\n  fill: var(--base-menu-bg);\n}\n\n/***************************************************************************************************\n *                                                                                                 *\n * SIZES                                                                                           *\n *                                                                                                 *\n ***************************************************************************************************/\n\n@breakpoints {\n  .rt-BaseMenuContent {\n    &:where(.rt-r-size-1) {\n      --base-menu-content-padding: var(--space-1);\n      --base-menu-item-padding-left: calc(var(--space-5) / 1.2);\n      --base-menu-item-padding-right: var(--space-2);\n      --base-menu-item-height: var(--space-5);\n      border-radius: var(--radius-3);\n\n      & :where(.rt-BaseMenuItem) {\n        font-size: var(--font-size-1);\n        line-height: var(--line-height-1);\n        letter-spacing: var(--letter-spacing-1);\n        border-radius: var(--radius-1);\n      }\n\n      & :where(.rt-BaseMenuLabel) {\n        font-size: var(--font-size-1);\n        line-height: var(--line-height-1);\n        letter-spacing: var(--letter-spacing-1);\n      }\n\n      & :where(.rt-BaseMenuItemIndicatorIcon, .rt-BaseMenuSubTriggerIcon) {\n        width: calc(8px * var(--scaling));\n        height: calc(8px * var(--scaling));\n      }\n\n      /* reset with :not:has so we still support browsers without :has */\n      &:where(:not(:has(.rt-BaseMenuCheckboxItem, .rt-BaseMenuRadioItem))) {\n        --base-menu-item-padding-left: var(--space-2);\n      }\n      &:where(:has(.rt-BaseMenuCheckboxItem, .rt-BaseMenuRadioItem)) {\n        --base-menu-item-padding-left: calc(var(--space-5) / 1.2);\n      }\n    }\n\n    &:where(.rt-r-size-2) {\n      --base-menu-content-padding: var(--space-2);\n      --base-menu-item-padding-left: var(--space-3);\n      --base-menu-item-padding-right: var(--space-3);\n      --base-menu-item-height: var(--space-6);\n      border-radius: var(--radius-4);\n\n      & :where(.rt-BaseMenuItem) {\n        font-size: var(--font-size-2);\n        line-height: var(--line-height-2);\n        letter-spacing: var(--letter-spacing-2);\n        border-radius: var(--radius-2);\n      }\n\n      & :where(.rt-BaseMenuLabel) {\n        font-size: var(--font-size-2);\n        line-height: var(--line-height-2);\n        letter-spacing: var(--letter-spacing-2);\n      }\n\n      & :where(.rt-BaseMenuItemIndicatorIcon, .rt-BaseMenuSubTriggerIcon) {\n        width: calc(10px * var(--scaling));\n        height: calc(10px * var(--scaling));\n      }\n\n      /* reset with :not:has so we still support browsers without :has */\n      &:where(:not(:has(.rt-BaseMenuCheckboxItem, .rt-BaseMenuRadioItem))) {\n        --base-menu-item-padding-left: var(--space-3);\n      }\n      &:where(:has(.rt-BaseMenuCheckboxItem, .rt-BaseMenuRadioItem)) {\n        --base-menu-item-padding-left: var(--space-5);\n      }\n    }\n  }\n}\n\n/***************************************************************************************************\n *                                                                                                 *\n * VARIANTS                                                                                        *\n *                                                                                                 *\n ***************************************************************************************************/\n\n.rt-BaseMenuContent {\n  --base-menu-bg: var(--color-panel-solid);\n  box-shadow: var(--shadow-5);\n}\n.rt-BaseMenuItem:where([data-accent-color]) {\n  color: var(--accent-a11);\n}\n.rt-BaseMenuItem:where([data-disabled]) {\n  color: var(--gray-a8);\n}\n.rt-BaseMenuShortcut {\n  color: var(--gray-a11);\n}\n.rt-BaseMenuItem:where([data-disabled], [data-highlighted]),\n.rt-BaseMenuSubTrigger:where([data-state='open']) {\n  & :where(.rt-BaseMenuShortcut) {\n    color: inherit;\n  }\n}\n.rt-BaseMenuSeparator {\n  background-color: var(--gray-a6);\n}\n\n/* solid */\n\n.rt-BaseMenuContent:where(.rt-variant-solid) {\n  & :where(.rt-BaseMenuSubTrigger[data-state='open']) {\n    background-color: var(--gray-a3);\n  }\n  & :where(.rt-BaseMenuItem[data-highlighted]) {\n    background-color: var(--accent-9);\n    color: var(--accent-contrast);\n\n    & :where(.rt-BaseMenuSubTriggerIcon) {\n      color: var(--accent-contrast);\n    }\n  }\n  &:where(.rt-high-contrast) {\n    & :where(.rt-BaseMenuItem[data-highlighted]) {\n      background-color: var(--accent-12);\n      color: var(--accent-1);\n\n      & :where(.rt-BaseMenuSubTriggerIcon) {\n        color: var(--accent-1);\n      }\n\n      &:where([data-accent-color]) {\n        background-color: var(--accent-9);\n        color: var(--accent-contrast);\n      }\n    }\n  }\n}\n\n/* soft */\n\n.rt-BaseMenuContent:where(.rt-variant-soft) {\n  & :where(.rt-BaseMenuSubTrigger[data-state='open']) {\n    background-color: var(--accent-a3);\n  }\n  & :where(.rt-BaseMenuItem[data-highlighted]) {\n    background-color: var(--accent-a4);\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/_internal/base-menu.props.ts",
    "content": "import { asChildPropDef } from '../../props/as-child.prop.js';\nimport { colorPropDef } from '../../props/color.prop.js';\nimport { highContrastPropDef } from '../../props/high-contrast.prop.js';\n\nimport type { PropDef } from '../../props/prop-def.js';\n\nconst contentSizes = ['1', '2'] as const;\nconst contentVariants = ['solid', 'soft'] as const;\n\nconst baseMenuContentPropDefs = {\n  size: {\n    type: 'enum',\n    className: 'rt-r-size',\n    values: contentSizes,\n    default: '2',\n    responsive: true,\n  },\n  variant: {\n    type: 'enum',\n    className: 'rt-variant',\n    values: contentVariants,\n    default: 'solid',\n  },\n  ...colorPropDef,\n  ...highContrastPropDef,\n} satisfies {\n  size: PropDef<(typeof contentSizes)[number]>;\n  variant: PropDef<(typeof contentVariants)[number]>;\n};\n\nconst baseMenuItemPropDefs = {\n  ...asChildPropDef,\n  ...colorPropDef,\n  shortcut: { type: 'string' },\n} satisfies {\n  shortcut: PropDef<string>;\n};\n\nconst baseMenuCheckboxItemPropDefs = {\n  ...colorPropDef,\n  shortcut: { type: 'string' },\n} satisfies {\n  shortcut: PropDef<string>;\n};\n\nconst baseMenuRadioItemPropDefs = {\n  ...colorPropDef,\n};\n\nexport {\n  baseMenuContentPropDefs,\n  baseMenuItemPropDefs,\n  baseMenuCheckboxItemPropDefs,\n  baseMenuRadioItemPropDefs,\n};\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/_internal/base-radio.css",
    "content": ".rt-BaseRadioRoot {\n  position: relative;\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  vertical-align: top;\n  flex-shrink: 0;\n  cursor: var(--cursor-radio);\n\n  /* Unless in a skeleton, align with text line height when possible and fall back to own height */\n  height: var(--skeleton-height, var(--line-height, var(--radio-size)));\n  --skeleton-height-override: var(--radio-size);\n\n  /* Set root radius when in a skeleton */\n  border-radius: var(--skeleton-radius);\n  --skeleton-radius-override: 100%;\n\n  &:where(:disabled, [data-disabled]) {\n    cursor: var(--cursor-disabled);\n  }\n\n  &::before {\n    content: '';\n    display: block;\n    height: var(--radio-size);\n    width: var(--radio-size);\n    border-radius: 100%;\n  }\n\n  &::after {\n    pointer-events: none;\n    position: absolute;\n    height: var(--radio-size);\n    width: var(--radio-size);\n    border-radius: 100%;\n    /* Scale via transform to achieve perfect sub-pixel positioning */\n    transform: scale(0.4);\n  }\n\n  &:where(:checked, [data-state='checked']) {\n    &::after {\n      content: '';\n    }\n  }\n\n  &:where(:focus-visible)::before {\n    outline: 2px solid var(--focus-8);\n    outline-offset: 2px;\n  }\n}\n\n/***************************************************************************************************\n *                                                                                                 *\n * SIZES                                                                                           *\n *                                                                                                 *\n ***************************************************************************************************/\n\n@breakpoints {\n  .rt-BaseRadioRoot {\n    &:where(.rt-r-size-1) {\n      --radio-size: calc(var(--space-4) * 0.875);\n    }\n    &:where(.rt-r-size-2) {\n      --radio-size: var(--space-4);\n    }\n    &:where(.rt-r-size-3) {\n      --radio-size: calc(var(--space-4) * 1.25);\n    }\n  }\n}\n\n/***************************************************************************************************\n *                                                                                                 *\n * VARIANTS                                                                                        *\n *                                                                                                 *\n ***************************************************************************************************/\n\n/* surface */\n\n.rt-BaseRadioRoot:where(.rt-variant-surface) {\n  &:where(:not(:checked), [data-state='unchecked'])::before {\n    background-color: var(--color-surface);\n    box-shadow: inset 0 0 0 1px var(--gray-a7);\n  }\n  &:where(:checked, [data-state='checked'])::before {\n    background-color: var(--accent-indicator);\n  }\n  &::after {\n    background-color: var(--accent-contrast);\n  }\n\n  &:where(.rt-high-contrast) {\n    &:where(:checked, [data-state='checked'])::before {\n      background-color: var(--accent-12);\n    }\n    &::after {\n      background-color: var(--accent-1);\n    }\n  }\n\n  &:where(:disabled, [data-disabled])::before {\n    box-shadow: inset 0 0 0 1px var(--gray-a6);\n    background-color: var(--gray-a3);\n  }\n  &:where(:disabled, [data-disabled])::after {\n    background-color: var(--gray-a8);\n  }\n}\n\n/* classic */\n\n.rt-BaseRadioRoot:where(.rt-variant-classic) {\n  &:where(:not(:checked), [data-state='unchecked'])::before {\n    background-color: var(--color-surface);\n    box-shadow:\n      inset 0 0 0 1px var(--gray-7),\n      var(--shadow-1);\n  }\n  &:where(:checked, [data-state='checked'])::before {\n    background-color: var(--accent-indicator);\n    background-image: linear-gradient(to bottom, var(--white-a3), transparent, var(--black-a3));\n    box-shadow:\n      inset 0 0.5px 0.5px var(--white-a4),\n      inset 0 -0.5px 0.5px var(--black-a4);\n  }\n  &::after {\n    background-color: var(--accent-contrast);\n  }\n\n  &:where(.rt-high-contrast) {\n    &:where(:checked, [data-state='checked'])::before {\n      background-color: var(--accent-12);\n    }\n    &::after {\n      background-color: var(--accent-1);\n    }\n  }\n\n  &:where(:disabled, [data-disabled])::before {\n    box-shadow: var(--shadow-1);\n    background-color: var(--gray-a3);\n    background-image: none;\n  }\n  &:where(:disabled, [data-disabled])::after {\n    background-color: var(--gray-a8);\n  }\n}\n\n/* soft */\n\n.rt-BaseRadioRoot:where(.rt-variant-soft) {\n  &::before {\n    background-color: var(--accent-a4);\n  }\n  &::after {\n    background-color: var(--accent-a11);\n  }\n\n  &:where(.rt-high-contrast) {\n    &::after {\n      background-color: var(--accent-12);\n    }\n  }\n\n  &:where(:focus-visible)::before {\n    /* Use gray outline when component color is gray */\n    outline-color: var(--accent-a8);\n  }\n\n  &:where(:disabled, [data-disabled])::before {\n    background-color: var(--gray-a3);\n  }\n  &:where(:disabled, [data-disabled])::after {\n    background-color: var(--gray-a8);\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/_internal/base-radio.props.ts",
    "content": "import { colorPropDef } from '../../props/color.prop.js';\nimport { highContrastPropDef } from '../../props/high-contrast.prop.js';\n\nimport type { PropDef } from '../../props/prop-def.js';\n\nconst sizes = ['1', '2', '3'] as const;\nconst variants = ['classic', 'surface', 'soft'] as const;\n\nconst baseRadioPropDefs = {\n  size: { type: 'enum', className: 'rt-r-size', values: sizes, default: '2', responsive: true },\n  variant: { type: 'enum', className: 'rt-variant', values: variants, default: 'surface' },\n  ...colorPropDef,\n  ...highContrastPropDef,\n} satisfies {\n  size: PropDef<(typeof sizes)[number]>;\n  variant: PropDef<(typeof variants)[number]>;\n};\n\nexport { baseRadioPropDefs };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/_internal/base-tab-list.css",
    "content": ".rt-BaseTabList {\n  display: flex;\n  justify-content: flex-start;\n  overflow-x: auto;\n  white-space: nowrap;\n\n  font-family: var(--default-font-family);\n  font-style: normal;\n\n  scrollbar-width: none;\n  &::-webkit-scrollbar {\n    display: none;\n  }\n}\n\n.rt-BaseTabListTrigger {\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  flex-shrink: 0;\n  position: relative;\n  user-select: none;\n}\n\n.rt-BaseTabListTriggerInner,\n.rt-BaseTabListTriggerInnerHidden {\n  display: flex;\n  align-items: center;\n  justify-content: center;\n}\n\n.rt-BaseTabListTriggerInner {\n  position: absolute;\n\n  :where(.rt-BaseTabListTrigger[data-state='inactive'], .rt-TabNavLink:not([data-active])) & {\n    letter-spacing: var(--tab-inactive-letter-spacing);\n    word-spacing: var(--tab-inactive-word-spacing);\n  }\n\n  :where(.rt-BaseTabListTrigger[data-state='active'], .rt-TabNavLink[data-active]) & {\n    font-weight: var(--font-weight-medium);\n    letter-spacing: var(--tab-active-letter-spacing);\n    word-spacing: var(--tab-active-word-spacing);\n  }\n}\n\n.rt-BaseTabListTriggerInnerHidden {\n  visibility: hidden;\n  font-weight: var(--font-weight-medium);\n  letter-spacing: var(--tab-active-letter-spacing);\n  word-spacing: var(--tab-active-word-spacing);\n}\n\n/***************************************************************************************************\n *                                                                                                 *\n * SIZES                                                                                           *\n *                                                                                                 *\n ***************************************************************************************************/\n\n.rt-BaseTabListTrigger {\n  box-sizing: border-box;\n  height: var(--tab-height);\n  padding-left: var(--tab-padding-x);\n  padding-right: var(--tab-padding-x);\n}\n\n.rt-BaseTabListTriggerInner,\n.rt-BaseTabListTriggerInnerHidden {\n  box-sizing: border-box;\n  padding: var(--tab-inner-padding-y) var(--tab-inner-padding-x);\n  border-radius: var(--tab-inner-border-radius);\n}\n\n@breakpoints {\n  .rt-BaseTabList {\n    &:where(.rt-r-size-1) {\n      font-size: var(--font-size-1);\n      line-height: var(--line-height-1);\n      letter-spacing: var(--letter-spacing-1);\n      --tab-height: var(--space-6);\n      --tab-padding-x: var(--space-1);\n      --tab-inner-padding-x: var(--space-1);\n      --tab-inner-padding-y: calc(var(--space-1) * 0.5);\n      --tab-inner-border-radius: var(--radius-1);\n    }\n    &:where(.rt-r-size-2) {\n      font-size: var(--font-size-2);\n      line-height: var(--line-height-2);\n      letter-spacing: var(--letter-spacing-2);\n      --tab-height: var(--space-7);\n      --tab-padding-x: var(--space-2);\n      --tab-inner-padding-x: var(--space-2);\n      --tab-inner-padding-y: var(--space-1);\n      --tab-inner-border-radius: var(--radius-2);\n    }\n  }\n}\n\n/***************************************************************************************************\n *                                                                                                 *\n * VARIANTS                                                                                        *\n *                                                                                                 *\n ***************************************************************************************************/\n\n.rt-BaseTabList {\n  box-shadow: inset 0 -1px 0 0 var(--gray-a5);\n}\n\n.rt-BaseTabListTrigger {\n  color: var(--gray-a11);\n\n  @media (hover: hover) {\n    &:where(:hover) {\n      color: var(--gray-12);\n    }\n    &:where(:hover) :where(.rt-BaseTabListTriggerInner) {\n      background-color: var(--gray-a3);\n    }\n    &:where(:focus-visible:hover) :where(.rt-BaseTabListTriggerInner) {\n      background-color: var(--accent-a3);\n    }\n  }\n  &:where([data-state='active'], [data-active]) {\n    color: var(--gray-12);\n  }\n  &:where(:focus-visible) :where(.rt-BaseTabListTriggerInner) {\n    outline: 2px solid var(--focus-8);\n    outline-offset: -2px;\n  }\n  &:where([data-state='active'], [data-active])::before {\n    box-sizing: border-box;\n    content: '';\n    height: 2px;\n    position: absolute;\n    bottom: 0;\n    left: 0;\n    right: 0;\n    background-color: var(--accent-indicator);\n  }\n\n  :where(.rt-BaseTabList.rt-high-contrast) & {\n    &:where([data-state='active'], [data-active])::before {\n      background-color: var(--accent-12);\n    }\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/_internal/base-tab-list.props.ts",
    "content": "import { colorPropDef } from '../../props/color.prop.js';\nimport { highContrastPropDef } from '../../props/high-contrast.prop.js';\n\nimport type { PropDef } from '../../props/prop-def.js';\n\nconst sizes = ['1', '2'] as const;\nconst wrapValues = ['nowrap', 'wrap', 'wrap-reverse'] as const;\nconst justifyValues = ['start', 'center', 'end'] as const;\n\nconst baseTabListPropDefs = {\n  size: { type: 'enum', className: 'rt-r-size', values: sizes, default: '2', responsive: true },\n  wrap: {\n    type: 'enum',\n    className: 'rt-r-fw',\n    values: wrapValues,\n    responsive: true,\n  },\n  justify: {\n    type: 'enum',\n    className: 'rt-r-jc',\n    values: justifyValues,\n    responsive: true,\n  },\n  ...colorPropDef,\n  ...highContrastPropDef,\n} satisfies {\n  size: PropDef<(typeof sizes)[number]>;\n  wrap: PropDef<(typeof wrapValues)[number]>;\n  justify: PropDef<(typeof justifyValues)[number]>;\n};\n\nexport { baseTabListPropDefs };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/accessible-icon.tsx",
    "content": "import { AccessibleIcon as AccessibleIconPrimitive } from 'radix-ui';\nexport const AccessibleIcon = AccessibleIconPrimitive.Root;\nexport type AccessibleIconProps = AccessibleIconPrimitive.AccessibleIconProps;\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/alert-dialog.css",
    "content": "@import './_internal/base-dialog.css';\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/alert-dialog.props.tsx",
    "content": "export { dialogContentPropDefs as alertDialogContentPropDefs } from './dialog.props.js';\nexport type { DialogContentOwnProps as AlertDialogContentOwnProps } from './dialog.props.js';\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/alert-dialog.tsx",
    "content": "import * as React from 'react';\nimport classNames from 'classnames';\nimport { AlertDialog as AlertDialogPrimitive } from 'radix-ui';\n\nimport { alertDialogContentPropDefs } from './alert-dialog.props.js';\nimport { Heading } from './heading.js';\nimport { Text } from './text.js';\nimport { Theme } from './theme.js';\nimport { extractProps } from '../helpers/extract-props.js';\nimport { requireReactElement } from '../helpers/require-react-element.js';\n\nimport type { AlertDialogContentOwnProps } from './alert-dialog.props.js';\nimport type {\n  ComponentPropsWithout,\n  RemovedProps,\n  ComponentPropsAs,\n} from '../helpers/component-props.js';\n\ninterface AlertDialogRootProps extends React.ComponentPropsWithoutRef<\n  typeof AlertDialogPrimitive.Root\n> {}\nconst AlertDialogRoot: React.FC<AlertDialogRootProps> = (props) => (\n  <AlertDialogPrimitive.Root {...props} />\n);\nAlertDialogRoot.displayName = 'AlertDialog.Root';\n\ntype AlertDialogTriggerElement = React.ElementRef<typeof AlertDialogPrimitive.Trigger>;\ninterface AlertDialogTriggerProps extends ComponentPropsWithout<\n  typeof AlertDialogPrimitive.Trigger,\n  RemovedProps\n> {}\nconst AlertDialogTrigger = React.forwardRef<AlertDialogTriggerElement, AlertDialogTriggerProps>(\n  ({ children, ...props }, forwardedRef) => (\n    <AlertDialogPrimitive.Trigger {...props} ref={forwardedRef} asChild>\n      {requireReactElement(children)}\n    </AlertDialogPrimitive.Trigger>\n  ),\n);\nAlertDialogTrigger.displayName = 'AlertDialog.Trigger';\n\ntype AlertDialogContentElement = React.ElementRef<typeof AlertDialogPrimitive.Content>;\ninterface AlertDialogContentProps\n  extends\n    ComponentPropsWithout<typeof AlertDialogPrimitive.Content, RemovedProps>,\n    AlertDialogContentOwnProps {\n  container?: React.ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Portal>['container'];\n}\nconst AlertDialogContent = React.forwardRef<AlertDialogContentElement, AlertDialogContentProps>(\n  ({ align, ...props }, forwardedRef) => {\n    const { align: alignPropDef, ...propDefs } = alertDialogContentPropDefs;\n    const { className: alignClassName } = extractProps({ align }, { align: alignPropDef });\n    const { className, forceMount, container, ...contentProps } = extractProps(props, propDefs);\n    return (\n      <AlertDialogPrimitive.Portal container={container} forceMount={forceMount}>\n        <Theme asChild>\n          <AlertDialogPrimitive.Overlay className=\"rt-BaseDialogOverlay rt-AlertDialogOverlay\">\n            <div className=\"rt-BaseDialogScroll rt-AlertDialogScroll\">\n              <div\n                className={`rt-BaseDialogScrollPadding rt-AlertDialogScrollPadding ${alignClassName}`}\n              >\n                <AlertDialogPrimitive.Content\n                  {...contentProps}\n                  ref={forwardedRef}\n                  className={classNames('rt-BaseDialogContent', 'rt-AlertDialogContent', className)}\n                />\n              </div>\n            </div>\n          </AlertDialogPrimitive.Overlay>\n        </Theme>\n      </AlertDialogPrimitive.Portal>\n    );\n  },\n);\nAlertDialogContent.displayName = 'AlertDialog.Content';\n\ntype AlertDialogTitleElement = React.ElementRef<typeof Heading>;\ntype AlertDialogTitleProps = ComponentPropsWithout<typeof Heading, 'asChild'>;\nconst AlertDialogTitle = React.forwardRef<AlertDialogTitleElement, AlertDialogTitleProps>(\n  (props, forwardedRef) => (\n    <AlertDialogPrimitive.Title asChild>\n      <Heading size=\"5\" mb=\"3\" trim=\"start\" {...props} asChild={false} ref={forwardedRef} />\n    </AlertDialogPrimitive.Title>\n  ),\n);\nAlertDialogTitle.displayName = 'AlertDialog.Title';\n\ntype AlertDialogDescriptionElement = HTMLParagraphElement;\ntype AlertDialogDescriptionProps = ComponentPropsAs<typeof Text, 'p'>;\nconst AlertDialogDescription = React.forwardRef<\n  AlertDialogDescriptionElement,\n  AlertDialogDescriptionProps\n>((props, forwardedRef) => (\n  <AlertDialogPrimitive.Description asChild>\n    <Text as=\"p\" size=\"3\" {...props} asChild={false} ref={forwardedRef} />\n  </AlertDialogPrimitive.Description>\n));\nAlertDialogDescription.displayName = 'AlertDialog.Description';\n\ntype AlertDialogActionElement = React.ElementRef<typeof AlertDialogPrimitive.Action>;\ninterface AlertDialogActionProps extends ComponentPropsWithout<\n  typeof AlertDialogPrimitive.Action,\n  RemovedProps\n> {}\nconst AlertDialogAction = React.forwardRef<AlertDialogActionElement, AlertDialogActionProps>(\n  ({ children, ...props }, forwardedRef) => (\n    <AlertDialogPrimitive.Action {...props} ref={forwardedRef} asChild>\n      {requireReactElement(children)}\n    </AlertDialogPrimitive.Action>\n  ),\n);\nAlertDialogAction.displayName = 'AlertDialog.Action';\n\ntype AlertDialogCancelElement = React.ElementRef<typeof AlertDialogPrimitive.Cancel>;\ninterface AlertDialogCancelProps extends ComponentPropsWithout<\n  typeof AlertDialogPrimitive.Cancel,\n  RemovedProps\n> {}\nconst AlertDialogCancel = React.forwardRef<AlertDialogCancelElement, AlertDialogCancelProps>(\n  ({ children, ...props }, forwardedRef) => (\n    <AlertDialogPrimitive.Cancel {...props} ref={forwardedRef} asChild>\n      {requireReactElement(children)}\n    </AlertDialogPrimitive.Cancel>\n  ),\n);\nAlertDialogCancel.displayName = 'AlertDialog.Cancel';\n\nexport {\n  AlertDialogRoot as Root,\n  AlertDialogTrigger as Trigger,\n  AlertDialogContent as Content,\n  AlertDialogTitle as Title,\n  AlertDialogDescription as Description,\n  AlertDialogAction as Action,\n  AlertDialogCancel as Cancel,\n};\n\nexport type {\n  AlertDialogRootProps as RootProps,\n  AlertDialogTriggerProps as TriggerProps,\n  AlertDialogContentProps as ContentProps,\n  AlertDialogTitleProps as TitleProps,\n  AlertDialogDescriptionProps as DescriptionProps,\n  AlertDialogActionProps as ActionProps,\n  AlertDialogCancelProps as CancelProps,\n};\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/animations.css",
    "content": "@keyframes rt-fade-in {\n  from {\n    opacity: 0;\n  }\n  to {\n    opacity: 1;\n  }\n}\n\n@keyframes rt-fade-out {\n  from {\n    opacity: 1;\n  }\n  to {\n    opacity: 0;\n  }\n}\n\n@keyframes rt-slide-from-top {\n  from {\n    transform: translateY(4px) scale(0.97);\n  }\n  to {\n    transform: translateY(0) scale(1);\n  }\n}\n\n@keyframes rt-slide-to-top {\n  from {\n    transform: translateY(0) scale(1);\n  }\n  to {\n    transform: translateY(4px) scale(0.97);\n  }\n}\n\n@keyframes rt-slide-from-bottom {\n  from {\n    transform: translateY(-4px) scale(0.97);\n  }\n  to {\n    transform: translateY(0) scale(1);\n  }\n}\n\n@keyframes rt-slide-to-bottom {\n  from {\n    transform: translateY(0) scale(1);\n  }\n  to {\n    transform: translateY(-4px) scale(0.97);\n  }\n}\n\n@keyframes rt-slide-from-left {\n  from {\n    transform: translateX(4px) scale(0.97);\n  }\n  to {\n    transform: translateX(0) scale(1);\n  }\n}\n\n@keyframes rt-slide-to-left {\n  from {\n    transform: translateX(0) scale(1);\n  }\n  to {\n    transform: translateX(4px) scale(0.97);\n  }\n}\n\n@keyframes rt-slide-from-right {\n  from {\n    transform: translateX(-4px) scale(0.97);\n  }\n  to {\n    transform: translateX(0) scale(1);\n  }\n}\n\n@keyframes rt-slide-to-right {\n  from {\n    transform: translateX(0) scale(1);\n  }\n  to {\n    transform: translateX(-4px) scale(0.97);\n  }\n}\n\n@media (prefers-reduced-motion: no-preference) {\n  .rt-PopperContent {\n    animation-timing-function: cubic-bezier(0.16, 1, 0.3, 1);\n\n    &:where([data-state='open']) {\n      animation-duration: 160ms;\n\n      &:where([data-side='top']) {\n        animation-name: rt-slide-from-top, rt-fade-in;\n      }\n      &:where([data-side='bottom']) {\n        animation-name: rt-slide-from-bottom, rt-fade-in;\n      }\n      &:where([data-side='left']) {\n        animation-name: rt-slide-from-left, rt-fade-in;\n      }\n      &:where([data-side='right']) {\n        animation-name: rt-slide-from-right, rt-fade-in;\n      }\n    }\n\n    &:where([data-state='closed']) {\n      animation-duration: 100ms;\n\n      &:where([data-side='top']) {\n        animation-name: rt-slide-to-top, rt-fade-out;\n      }\n      &:where([data-side='bottom']) {\n        animation-name: rt-slide-to-bottom, rt-fade-out;\n      }\n      &:where([data-side='left']) {\n        animation-name: rt-slide-to-left, rt-fade-out;\n      }\n      &:where([data-side='right']) {\n        animation-name: rt-slide-to-right, rt-fade-out;\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/aspect-ratio.tsx",
    "content": "import { AspectRatio as AspectRatioPrimitive } from 'radix-ui';\nexport const AspectRatio = AspectRatioPrimitive.Root;\nexport type AspectRatioProps = AspectRatioPrimitive.AspectRatioProps;\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/avatar.css",
    "content": ".rt-AvatarRoot {\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  vertical-align: middle;\n  user-select: none;\n  width: var(--avatar-size);\n  height: var(--avatar-size);\n  flex-shrink: 0;\n}\n\n.rt-AvatarImage {\n  width: 100%;\n  height: 100%;\n  object-fit: cover;\n  border-radius: inherit;\n}\n\n.rt-AvatarFallback {\n  font-family: var(--default-font-family);\n  font-weight: var(--font-weight-medium);\n  font-style: normal;\n  z-index: 0;\n  width: 100%;\n  height: 100%;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  line-height: 1;\n  border-radius: inherit;\n}\n\n/***************************************************************************************************\n *                                                                                                 *\n * SIZES                                                                                           *\n *                                                                                                 *\n ***************************************************************************************************/\n\n.rt-AvatarFallback {\n  text-transform: uppercase;\n\n  &:where(.rt-one-letter) {\n    font-size: var(--avatar-fallback-one-letter-font-size);\n  }\n  &:where(.rt-two-letters) {\n    /* prettier-ignore */\n    font-size: var(--avatar-fallback-two-letters-font-size, var(--avatar-fallback-one-letter-font-size));\n  }\n}\n\n@breakpoints {\n  .rt-AvatarRoot {\n    &:where(.rt-r-size-1) {\n      --avatar-size: var(--space-5);\n      --avatar-fallback-one-letter-font-size: var(--font-size-2);\n      --avatar-fallback-two-letters-font-size: var(--font-size-1);\n      border-radius: max(var(--radius-2), var(--radius-full));\n      letter-spacing: var(--letter-spacing-1);\n    }\n    &:where(.rt-r-size-2) {\n      --avatar-size: var(--space-6);\n      --avatar-fallback-one-letter-font-size: var(--font-size-3);\n      --avatar-fallback-two-letters-font-size: var(--font-size-2);\n      border-radius: max(var(--radius-2), var(--radius-full));\n      letter-spacing: var(--letter-spacing-2);\n    }\n    &:where(.rt-r-size-3) {\n      --avatar-size: var(--space-7);\n      --avatar-fallback-one-letter-font-size: var(--font-size-4);\n      --avatar-fallback-two-letters-font-size: var(--font-size-3);\n      border-radius: max(var(--radius-3), var(--radius-full));\n      letter-spacing: var(--letter-spacing-3);\n    }\n    &:where(.rt-r-size-4) {\n      --avatar-size: var(--space-8);\n      --avatar-fallback-one-letter-font-size: var(--font-size-5);\n      --avatar-fallback-two-letters-font-size: var(--font-size-4);\n      border-radius: max(var(--radius-3), var(--radius-full));\n      letter-spacing: var(--letter-spacing-4);\n    }\n    &:where(.rt-r-size-5) {\n      --avatar-size: var(--space-9);\n      --avatar-fallback-one-letter-font-size: var(--font-size-6);\n      border-radius: max(var(--radius-4), var(--radius-full));\n      letter-spacing: var(--letter-spacing-6);\n    }\n    &:where(.rt-r-size-6) {\n      --avatar-size: 80px;\n      --avatar-fallback-one-letter-font-size: var(--font-size-7);\n      border-radius: max(var(--radius-5), var(--radius-full));\n      letter-spacing: var(--letter-spacing-7);\n    }\n    &:where(.rt-r-size-7) {\n      --avatar-size: 96px;\n      --avatar-fallback-one-letter-font-size: var(--font-size-7);\n      border-radius: max(var(--radius-5), var(--radius-full));\n      letter-spacing: var(--letter-spacing-7);\n    }\n    &:where(.rt-r-size-8) {\n      --avatar-size: 128px;\n      --avatar-fallback-one-letter-font-size: var(--font-size-8);\n      border-radius: max(var(--radius-6), var(--radius-full));\n      letter-spacing: var(--letter-spacing-8);\n    }\n    &:where(.rt-r-size-9) {\n      --avatar-size: 160px;\n      --avatar-fallback-one-letter-font-size: var(--font-size-9);\n      border-radius: max(var(--radius-6), var(--radius-full));\n      letter-spacing: var(--letter-spacing-9);\n    }\n  }\n}\n\n/***************************************************************************************************\n *                                                                                                 *\n * VARIANTS                                                                                        *\n *                                                                                                 *\n ***************************************************************************************************/\n\n/* solid */\n\n.rt-AvatarRoot:where(.rt-variant-solid) {\n  & :where(.rt-AvatarFallback) {\n    background-color: var(--accent-9);\n    color: var(--accent-contrast);\n  }\n  &:where(.rt-high-contrast) :where(.rt-AvatarFallback) {\n    background-color: var(--accent-12);\n    color: var(--accent-1);\n  }\n}\n\n/* soft */\n\n.rt-AvatarRoot:where(.rt-variant-soft) {\n  & :where(.rt-AvatarFallback) {\n    background-color: var(--accent-a3);\n    color: var(--accent-a11);\n  }\n  &:where(.rt-high-contrast) :where(.rt-AvatarFallback) {\n    color: var(--accent-12);\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/avatar.props.tsx",
    "content": "import { asChildPropDef } from '../props/as-child.prop.js';\nimport { accentColorPropDef } from '../props/color.prop.js';\nimport { highContrastPropDef } from '../props/high-contrast.prop.js';\nimport { radiusPropDef } from '../props/radius.prop.js';\n\nimport type { PropDef } from '../props/prop-def.js';\n\nconst sizes = ['1', '2', '3', '4', '5', '6', '7', '8', '9'] as const;\nconst variants = ['solid', 'soft'] as const;\n\nconst avatarPropDefs = {\n  ...asChildPropDef,\n  size: { type: 'enum', className: 'rt-r-size', values: sizes, default: '3', responsive: true },\n  variant: { type: 'enum', className: 'rt-variant', values: variants, default: 'soft' },\n  ...accentColorPropDef,\n  ...highContrastPropDef,\n  ...radiusPropDef,\n  fallback: { type: 'ReactNode', required: true },\n} satisfies {\n  size: PropDef<(typeof sizes)[number]>;\n  variant: PropDef<(typeof variants)[number]>;\n  fallback: PropDef<React.ReactNode>;\n};\n\nexport { avatarPropDefs };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/avatar.tsx",
    "content": "'use client';\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { Avatar as AvatarPrimitive } from 'radix-ui';\n\nimport { avatarPropDefs } from './avatar.props.js';\nimport { extractProps } from '../helpers/extract-props.js';\nimport { getSubtree } from '../helpers/get-subtree.js';\nimport { marginPropDefs } from '../props/margin.props.js';\n\nimport type { MarginProps } from '../props/margin.props.js';\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\nimport type { GetPropDefTypes } from '../props/prop-def.js';\n\ninterface AvatarProps extends MarginProps, AvatarImplProps {}\nconst Avatar = React.forwardRef<AvatarImplElement, AvatarProps>((props, forwardedRef) => {\n  const { asChild, children, className, style, color, radius, ...imageProps } = extractProps(\n    props,\n    avatarPropDefs,\n    marginPropDefs,\n  );\n\n  return (\n    // TODO as a rule, should we rather spread the props on root?\n    <AvatarPrimitive.Root\n      data-accent-color={color}\n      data-radius={radius}\n      className={classNames('rt-reset', 'rt-AvatarRoot', className)}\n      style={style}\n      asChild={asChild}\n    >\n      {getSubtree({ asChild, children }, <AvatarImpl ref={forwardedRef} {...imageProps} />)}\n    </AvatarPrimitive.Root>\n  );\n});\nAvatar.displayName = 'Avatar';\n\ntype AvatarImplElement = React.ElementRef<typeof AvatarPrimitive.Image>;\ntype AvatarOwnProps = GetPropDefTypes<typeof avatarPropDefs>;\n\ninterface AvatarImplProps\n  extends ComponentPropsWithout<typeof AvatarPrimitive.Image, RemovedProps>, AvatarOwnProps {\n  // TODO: See if we can automate making prop defs with `required: true` non nullable\n  fallback: NonNullable<AvatarOwnProps['fallback']>;\n}\n\nconst AvatarImpl = React.forwardRef<AvatarImplElement, AvatarImplProps>(\n  ({ fallback, ...imageProps }, forwardedRef) => {\n    const [status, setStatus] = React.useState<'idle' | 'loading' | 'loaded' | 'error'>('idle');\n    return (\n      <>\n        {status === 'idle' || status === 'loading' ? <span className=\"rt-AvatarFallback\" /> : null}\n\n        {status === 'error' ? (\n          <AvatarPrimitive.Fallback\n            className={classNames('rt-AvatarFallback', {\n              'rt-one-letter': typeof fallback === 'string' && fallback.length === 1,\n              'rt-two-letters': typeof fallback === 'string' && fallback.length === 2,\n            })}\n            delayMs={0}\n          >\n            {fallback}\n          </AvatarPrimitive.Fallback>\n        ) : null}\n\n        <AvatarPrimitive.Image\n          ref={forwardedRef}\n          className=\"rt-AvatarImage\"\n          {...imageProps}\n          onLoadingStatusChange={(status) => {\n            imageProps.onLoadingStatusChange?.(status);\n            setStatus(status);\n          }}\n        />\n      </>\n    );\n  },\n);\n\nAvatarImpl.displayName = 'AvatarImpl';\n\nexport { Avatar };\nexport type { AvatarProps };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/badge.css",
    "content": ".rt-Badge {\n  display: inline-flex;\n  align-items: center;\n  white-space: nowrap;\n  font-family: var(--default-font-family);\n  font-weight: var(--font-weight-medium);\n  font-style: normal;\n  flex-shrink: 0;\n  line-height: 1;\n\n  /* Make sure that the height is not stretched in a Flex/Grid layout */\n  height: fit-content;\n}\n\n/***************************************************************************************************\n *                                                                                                 *\n * SIZES                                                                                           *\n *                                                                                                 *\n ***************************************************************************************************/\n\n@breakpoints {\n  .rt-Badge {\n    &:where(.rt-r-size-1) {\n      font-size: var(--font-size-1);\n      line-height: var(--line-height-1);\n      letter-spacing: var(--letter-spacing-1);\n      padding: calc(var(--space-1) * 0.5) calc(var(--space-1) * 1.5);\n      gap: calc(var(--space-1) * 1.5);\n      border-radius: max(var(--radius-1), var(--radius-full));\n    }\n    &:where(.rt-r-size-2) {\n      font-size: var(--font-size-1);\n      line-height: var(--line-height-1);\n      letter-spacing: var(--letter-spacing-1);\n      padding: var(--space-1) var(--space-2);\n      gap: calc(var(--space-1) * 1.5);\n      border-radius: max(var(--radius-2), var(--radius-full));\n    }\n    &:where(.rt-r-size-3) {\n      font-size: var(--font-size-2);\n      line-height: var(--line-height-2);\n      letter-spacing: var(--letter-spacing-2);\n      padding: var(--space-1) calc(var(--space-2) * 1.25);\n      gap: var(--space-2);\n      border-radius: max(var(--radius-2), var(--radius-full));\n    }\n  }\n}\n\n/***************************************************************************************************\n *                                                                                                 *\n * VARIANTS                                                                                        *\n *                                                                                                 *\n ***************************************************************************************************/\n\n/* solid */\n\n.rt-Badge:where(.rt-variant-solid) {\n  background-color: var(--accent-9);\n  color: var(--accent-contrast);\n\n  &::selection {\n    background-color: var(--accent-7);\n    color: var(--accent-12);\n  }\n\n  &:where(.rt-high-contrast) {\n    background-color: var(--accent-12);\n    color: var(--accent-1);\n\n    &::selection {\n      background-color: var(--accent-a11);\n      color: var(--accent-1);\n    }\n  }\n}\n\n/* surface */\n\n.rt-Badge:where(.rt-variant-surface) {\n  background-color: var(--accent-surface);\n  box-shadow: inset 0 0 0 1px var(--accent-a6);\n  color: var(--accent-a11);\n\n  &:where(.rt-high-contrast) {\n    color: var(--accent-12);\n  }\n}\n\n/* soft */\n\n.rt-Badge:where(.rt-variant-soft) {\n  background-color: var(--accent-a3);\n  color: var(--accent-a11);\n  &:where(.rt-high-contrast) {\n    color: var(--accent-12);\n  }\n}\n\n/* outline */\n\n.rt-Badge:where(.rt-variant-outline) {\n  box-shadow: inset 0 0 0 1px var(--accent-a8);\n  color: var(--accent-a11);\n  &:where(.rt-high-contrast) {\n    box-shadow:\n      inset 0 0 0 1px var(--accent-a7),\n      inset 0 0 0 1px var(--gray-a11);\n    color: var(--accent-12);\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/badge.props.tsx",
    "content": "import { asChildPropDef } from '../props/as-child.prop.js';\nimport { accentColorPropDef } from '../props/color.prop.js';\nimport { highContrastPropDef } from '../props/high-contrast.prop.js';\nimport { radiusPropDef } from '../props/radius.prop.js';\n\nimport type { PropDef } from '../props/prop-def.js';\n\nconst sizes = ['1', '2', '3'] as const;\nconst variants = ['solid', 'soft', 'surface', 'outline'] as const;\n\nconst badgePropDefs = {\n  ...asChildPropDef,\n  size: { type: 'enum', className: 'rt-r-size', values: sizes, default: '1', responsive: true },\n  variant: { type: 'enum', className: 'rt-variant', values: variants, default: 'soft' },\n  ...accentColorPropDef,\n  ...highContrastPropDef,\n  ...radiusPropDef,\n} satisfies {\n  size: PropDef<(typeof sizes)[number]>;\n  variant: PropDef<(typeof variants)[number]>;\n};\n\nexport { badgePropDefs };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/badge.tsx",
    "content": "import * as React from 'react';\nimport classNames from 'classnames';\nimport { Slot } from 'radix-ui';\n\nimport { badgePropDefs } from './badge.props.js';\nimport { extractProps } from '../helpers/extract-props.js';\nimport { marginPropDefs } from '../props/margin.props.js';\n\nimport type { MarginProps } from '../props/margin.props.js';\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\nimport type { GetPropDefTypes } from '../props/prop-def.js';\n\ntype BadgeElement = React.ElementRef<'span'>;\ntype BadgeOwnProps = GetPropDefTypes<typeof badgePropDefs>;\ninterface BadgeProps\n  extends ComponentPropsWithout<'span', RemovedProps>, MarginProps, BadgeOwnProps {}\nconst Badge = React.forwardRef<BadgeElement, BadgeProps>((props, forwardedRef) => {\n  const { asChild, className, color, radius, ...badgeProps } = extractProps(\n    props,\n    badgePropDefs,\n    marginPropDefs,\n  );\n  const Comp = asChild ? Slot.Root : 'span';\n  return (\n    <Comp\n      data-accent-color={color}\n      data-radius={radius}\n      {...badgeProps}\n      ref={forwardedRef}\n      className={classNames('rt-reset', 'rt-Badge', className)}\n    />\n  );\n});\nBadge.displayName = 'Badge';\n\nexport { Badge };\nexport type { BadgeProps };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/blockquote.css",
    "content": ".rt-Blockquote {\n  box-sizing: border-box;\n  border-left: max(var(--space-1), 0.25em) solid var(--accent-a6);\n  padding-left: min(var(--space-5), max(var(--space-3), 0.5em));\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/blockquote.props.tsx",
    "content": "import { asChildPropDef } from '../props/as-child.prop.js';\nimport { colorPropDef } from '../props/color.prop.js';\nimport { highContrastPropDef } from '../props/high-contrast.prop.js';\nimport { textWrapPropDef } from '../props/text-wrap.prop.js';\nimport { truncatePropDef } from '../props/truncate.prop.js';\nimport { weightPropDef } from '../props/weight.prop.js';\n\nimport type { PropDef } from '../props/prop-def.js';\n\nconst sizes = ['1', '2', '3', '4', '5', '6', '7', '8', '9'] as const;\n\nconst blockquotePropDefs = {\n  ...asChildPropDef,\n  size: {\n    type: 'enum',\n    className: 'rt-r-size',\n    values: sizes,\n    responsive: true,\n  },\n  ...weightPropDef,\n  ...colorPropDef,\n  ...highContrastPropDef,\n  ...truncatePropDef,\n  ...textWrapPropDef,\n} satisfies {\n  size: PropDef<(typeof sizes)[number]>;\n};\n\nexport { blockquotePropDefs };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/blockquote.tsx",
    "content": "import * as React from 'react';\nimport classNames from 'classnames';\nimport { Slot } from 'radix-ui';\n\nimport { Text } from './text.js';\n\nimport type { blockquotePropDefs } from './blockquote.props.js';\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\nimport type { MarginProps } from '../props/margin.props.js';\nimport type { GetPropDefTypes } from '../props/prop-def.js';\n\ntype BlockquoteElement = React.ElementRef<'blockquote'>;\ntype BlockQuoteOwnProps = GetPropDefTypes<typeof blockquotePropDefs>;\ninterface BlockquoteProps\n  extends ComponentPropsWithout<'blockquote', RemovedProps>, MarginProps, BlockQuoteOwnProps {}\nconst Blockquote = React.forwardRef<BlockquoteElement, BlockquoteProps>((props, forwardedRef) => {\n  const { asChild, children, className, ...blockquoteProps } = props;\n  const Comp = asChild ? Slot.Root : 'blockquote';\n  return (\n    <Text\n      asChild\n      {...blockquoteProps}\n      ref={forwardedRef}\n      className={classNames('rt-Blockquote', className)}\n    >\n      <Comp>{children}</Comp>\n    </Text>\n  );\n});\nBlockquote.displayName = 'Blockquote';\n\nexport { Blockquote };\nexport type { BlockquoteProps };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/box.css",
    "content": ".rt-Box {\n  box-sizing: border-box;\n  display: block;\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/box.props.tsx",
    "content": "import { asChildPropDef } from '../props/as-child.prop.js';\n\nimport type { PropDef, GetPropDefTypes } from '../props/prop-def.js';\n\nconst as = ['div', 'span'] as const;\nconst displayValues = ['none', 'inline', 'inline-block', 'block', 'contents'] as const;\n\nconst boxPropDefs = {\n  /**\n   * Controls whether to render **div** or **span**\n   *\n   * @example\n   * as=\"div\"\n   * as=\"span\"\n   */\n  as: { type: 'enum', values: as, default: 'div' },\n  ...asChildPropDef,\n  /**\n   * Sets the CSS **display** property.\n   * Supports a subset of the corresponding CSS values and responsive objects.\n   *\n   * @example\n   * display=\"inline-block\"\n   * display={{ sm: 'none', lg: 'block' }}\n   *\n   * @link\n   * https://developer.mozilla.org/en-US/docs/Web/CSS/display\n   */\n  display: {\n    type: 'enum',\n    className: 'rt-r-display',\n    values: displayValues,\n    responsive: true,\n  },\n} satisfies {\n  as: PropDef<(typeof as)[number]>;\n  display: PropDef<(typeof displayValues)[number]>;\n};\n\n// Use all of the imported prop defs to ensure that JSDoc works\ntype BoxOwnProps = GetPropDefTypes<typeof boxPropDefs & typeof asChildPropDef>;\n\nexport { boxPropDefs };\nexport type { BoxOwnProps };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/box.tsx",
    "content": "import * as React from 'react';\nimport classNames from 'classnames';\n\nimport { Slot } from './slot.js';\nimport { boxPropDefs } from './box.props.js';\nimport { extractProps } from '../helpers/extract-props.js';\nimport { layoutPropDefs } from '../props/layout.props.js';\nimport { marginPropDefs } from '../props/margin.props.js';\n\nimport type { LayoutProps } from '../props/layout.props.js';\nimport type { MarginProps } from '../props/margin.props.js';\nimport type { BoxOwnProps } from './box.props.js';\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\n\ntype BoxElement = React.ElementRef<'div'>;\ninterface CommonBoxProps extends MarginProps, LayoutProps, BoxOwnProps {}\ntype BoxDivProps = { as?: 'div' } & ComponentPropsWithout<'div', RemovedProps>;\ntype BoxSpanProps = { as: 'span' } & ComponentPropsWithout<'span', RemovedProps>;\ntype BoxProps = CommonBoxProps & (BoxSpanProps | BoxDivProps);\n\nconst Box = React.forwardRef<BoxElement, BoxProps>((props, forwardedRef) => {\n  const {\n    className,\n    asChild,\n    as: Tag = 'div',\n    ...boxProps\n  } = extractProps(props, boxPropDefs, layoutPropDefs, marginPropDefs);\n  const Comp = asChild ? Slot : Tag;\n  return <Comp {...boxProps} ref={forwardedRef} className={classNames('rt-Box', className)} />;\n});\nBox.displayName = 'Box';\n\nexport { Box };\nexport type { BoxProps };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/button.css",
    "content": "@import './_internal/base-button.css';\n\n.rt-Button {\n  &:where(:not(.rt-variant-ghost)) {\n    /* stylelint-disable-next-line selector-max-type */\n    & :where(svg) {\n      opacity: 0.9;\n    }\n  }\n}\n\n/***************************************************************************************************\n *                                                                                                 *\n * SIZES                                                                                           *\n *                                                                                                 *\n ***************************************************************************************************/\n\n.rt-Button {\n  &:where(.rt-variant-ghost) {\n    padding: var(--button-ghost-padding-y) var(--button-ghost-padding-x);\n\n    /* We reset the defined margin variables to avoid inheriting them from a higher component */\n    /* If a margin IS defined on the component itself, the utility class will win and reset it */\n    --margin-top: 0px;\n    --margin-right: 0px;\n    --margin-bottom: 0px;\n    --margin-left: 0px;\n\n    /* Define the overrides to incorporate the negative margins */\n    --margin-top-override: calc(var(--margin-top) - var(--button-ghost-padding-y));\n    --margin-right-override: calc(var(--margin-right) - var(--button-ghost-padding-x));\n    --margin-bottom-override: calc(var(--margin-bottom) - var(--button-ghost-padding-y));\n    --margin-left-override: calc(var(--margin-left) - var(--button-ghost-padding-x));\n\n    /* Reset the overrides on direct children */\n    :where(&) > * {\n      --margin-top-override: initial;\n      --margin-right-override: initial;\n      --margin-bottom-override: initial;\n      --margin-left-override: initial;\n    }\n\n    margin: var(--margin-top-override) var(--margin-right-override) var(--margin-bottom-override)\n      var(--margin-left-override);\n  }\n}\n\n@breakpoints {\n  .rt-Button {\n    &:where(.rt-r-size-1) {\n      gap: var(--space-1);\n      font-size: var(--font-size-1);\n      line-height: var(--line-height-1);\n      letter-spacing: var(--letter-spacing-1);\n\n      &:where(:not(.rt-variant-ghost)) {\n        padding-left: var(--space-2);\n        padding-right: var(--space-2);\n      }\n      &:where(.rt-variant-ghost) {\n        gap: var(--space-1);\n        --button-ghost-padding-x: var(--space-2);\n        --button-ghost-padding-y: var(--space-1);\n      }\n    }\n    &:where(.rt-r-size-2) {\n      gap: var(--space-2);\n      font-size: var(--font-size-2);\n      line-height: var(--line-height-2);\n      letter-spacing: var(--letter-spacing-2);\n\n      &:where(:not(.rt-variant-ghost)) {\n        padding-left: var(--space-3);\n        padding-right: var(--space-3);\n      }\n      &:where(.rt-variant-ghost) {\n        gap: var(--space-1);\n        --button-ghost-padding-x: var(--space-2);\n        --button-ghost-padding-y: var(--space-1);\n      }\n    }\n    &:where(.rt-r-size-3) {\n      gap: var(--space-3);\n      font-size: var(--font-size-3);\n      line-height: var(--line-height-3);\n      letter-spacing: var(--letter-spacing-3);\n\n      &:where(:not(.rt-variant-ghost)) {\n        padding-left: var(--space-4);\n        padding-right: var(--space-4);\n      }\n      &:where(.rt-variant-ghost) {\n        gap: var(--space-2);\n        --button-ghost-padding-x: var(--space-3);\n        --button-ghost-padding-y: calc(var(--space-1) * 1.5);\n      }\n    }\n    &:where(.rt-r-size-4) {\n      gap: var(--space-3);\n      font-size: var(--font-size-4);\n      line-height: var(--line-height-4);\n      letter-spacing: var(--letter-spacing-4);\n\n      &:where(:not(.rt-variant-ghost)) {\n        padding-left: var(--space-5);\n        padding-right: var(--space-5);\n      }\n      &:where(.rt-variant-ghost) {\n        gap: var(--space-2);\n        --button-ghost-padding-x: var(--space-4);\n        --button-ghost-padding-y: var(--space-2);\n      }\n    }\n  }\n}\n\n/***************************************************************************************************\n *                                                                                                 *\n * VARIANTS                                                                                        *\n *                                                                                                 *\n ***************************************************************************************************/\n\n.rt-Button:where(:not(.rt-variant-ghost)) {\n  font-weight: var(--font-weight-medium);\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/button.props.tsx",
    "content": "export { baseButtonPropDefs as buttonPropDefs } from './_internal/base-button.props.js';\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/button.tsx",
    "content": "import * as React from 'react';\nimport classNames from 'classnames';\n\nimport { BaseButton } from './_internal/base-button.js';\n\ntype ButtonElement = React.ElementRef<typeof BaseButton>;\ninterface ButtonProps extends React.ComponentPropsWithoutRef<typeof BaseButton> {}\nconst Button = React.forwardRef<ButtonElement, ButtonProps>(\n  ({ className, ...props }, forwardedRef) => (\n    <BaseButton {...props} ref={forwardedRef} className={classNames('rt-Button', className)} />\n  ),\n);\nButton.displayName = 'Button';\n\nexport { Button };\nexport type { ButtonProps };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/callout.css",
    "content": ".rt-CalloutRoot {\n  box-sizing: border-box;\n  display: grid;\n  align-items: flex-start;\n  justify-content: flex-start;\n  text-align: left;\n  color: var(--accent-a11);\n\n  &:where(.rt-high-contrast) {\n    color: var(--accent-12);\n  }\n}\n\n.rt-CalloutIcon {\n  display: flex;\n  align-items: center;\n  grid-column-start: -2;\n  height: var(--callout-icon-height);\n}\n\n/* Anything that’s not an icon goes to the right of the icon */\n.rt-CalloutRoot > :where(:not(.rt-CalloutIcon)) {\n  grid-column-start: -1;\n}\n\n/***************************************************************************************************\n *                                                                                                 *\n * SIZES                                                                                           *\n *                                                                                                 *\n ***************************************************************************************************/\n\n@breakpoints {\n  .rt-CalloutRoot {\n    &:where(.rt-r-size-1) {\n      row-gap: var(--space-2);\n      column-gap: var(--space-2);\n      padding: var(--space-3);\n      border-radius: var(--radius-3);\n      --callout-icon-height: var(--line-height-2);\n    }\n    &:where(.rt-r-size-2) {\n      row-gap: var(--space-2);\n      column-gap: var(--space-3);\n      padding: var(--space-4);\n      border-radius: var(--radius-4);\n      --callout-icon-height: var(--line-height-2);\n    }\n    &:where(.rt-r-size-3) {\n      row-gap: var(--space-3);\n      column-gap: var(--space-4);\n      padding: var(--space-5);\n      border-radius: var(--radius-5);\n      --callout-icon-height: var(--line-height-3);\n    }\n  }\n}\n\n/***************************************************************************************************\n *                                                                                                 *\n * VARIANTS                                                                                        *\n *                                                                                                 *\n ***************************************************************************************************/\n\n/* soft */\n\n.rt-CalloutRoot:where(.rt-variant-soft) {\n  background-color: var(--accent-a3);\n}\n\n/* surface */\n\n.rt-CalloutRoot:where(.rt-variant-surface) {\n  box-shadow: inset 0 0 0 1px var(--accent-a6);\n  background-color: var(--accent-a2);\n}\n\n/* outline */\n\n.rt-CalloutRoot:where(.rt-variant-outline) {\n  box-shadow: inset 0 0 0 1px var(--accent-a7);\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/callout.props.tsx",
    "content": "import { asChildPropDef } from '../props/as-child.prop.js';\nimport { accentColorPropDef } from '../props/color.prop.js';\nimport { highContrastPropDef } from '../props/high-contrast.prop.js';\n\nimport type { PropDef } from '../props/prop-def.js';\n\nconst sizes = ['1', '2', '3'] as const;\nconst variants = ['soft', 'surface', 'outline'] as const;\n\nconst calloutRootPropDefs = {\n  ...asChildPropDef,\n  size: { type: 'enum', className: 'rt-r-size', values: sizes, default: '2', responsive: true },\n  variant: { type: 'enum', className: 'rt-variant', values: variants, default: 'soft' },\n  ...accentColorPropDef,\n  ...highContrastPropDef,\n} satisfies {\n  size: PropDef<(typeof sizes)[number]>;\n  variant: PropDef<(typeof variants)[number]>;\n};\n\nexport { calloutRootPropDefs };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/callout.tsx",
    "content": "'use client';\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { Slot } from 'radix-ui';\n\nimport { Text } from './text.js';\nimport { calloutRootPropDefs } from './callout.props.js';\nimport { extractProps } from '../helpers/extract-props.js';\nimport { mapResponsiveProp, mapCalloutSizeToTextSize } from '../helpers/map-prop-values.js';\nimport { marginPropDefs } from '../props/margin.props.js';\n\nimport type { MarginProps } from '../props/margin.props.js';\nimport type {\n  ComponentPropsWithout,\n  RemovedProps,\n  ComponentPropsAs,\n} from '../helpers/component-props.js';\nimport type { GetPropDefTypes } from '../props/prop-def.js';\n\ntype CalloutRootOwnProps = GetPropDefTypes<typeof calloutRootPropDefs>;\n\ntype CalloutContextValue = { size?: CalloutRootOwnProps['size'] };\nconst CalloutContext = React.createContext<CalloutContextValue>({});\n\ntype CalloutRootElement = React.ElementRef<'div'>;\ninterface CalloutRootProps\n  extends ComponentPropsWithout<'div', RemovedProps>, MarginProps, CalloutRootOwnProps {}\nconst CalloutRoot = React.forwardRef<CalloutRootElement, CalloutRootProps>(\n  (props, forwardedRef) => {\n    const { size = calloutRootPropDefs.size.default } = props;\n    const { asChild, children, className, color, ...rootProps } = extractProps(\n      props,\n      calloutRootPropDefs,\n      marginPropDefs,\n    );\n    const Comp = asChild ? Slot.Root : 'div';\n    return (\n      <Comp\n        data-accent-color={color}\n        {...rootProps}\n        className={classNames('rt-CalloutRoot', className)}\n        ref={forwardedRef}\n      >\n        <CalloutContext.Provider value={React.useMemo(() => ({ size }), [size])}>\n          {children}\n        </CalloutContext.Provider>\n      </Comp>\n    );\n  },\n);\nCalloutRoot.displayName = 'Callout.Root';\n\ntype CalloutIconElement = React.ElementRef<'div'>;\ninterface CalloutIconProps extends ComponentPropsWithout<'div', RemovedProps> {}\nconst CalloutIcon = React.forwardRef<CalloutIconElement, CalloutIconProps>(\n  ({ className, ...props }, forwardedRef) => {\n    return (\n      <div {...props} className={classNames('rt-CalloutIcon', className)} ref={forwardedRef} />\n    );\n  },\n);\nCalloutIcon.displayName = 'Callout.Icon';\n\ntype CalloutTextElement = React.ElementRef<'p'>;\ntype CalloutTextProps = ComponentPropsAs<typeof Text, 'p'>;\nconst CalloutText = React.forwardRef<CalloutTextElement, CalloutTextProps>(\n  ({ className, ...props }, forwardedRef) => {\n    const { size } = React.useContext(CalloutContext);\n    return (\n      <Text\n        as=\"p\"\n        size={mapResponsiveProp(size, mapCalloutSizeToTextSize)}\n        {...props}\n        asChild={false}\n        ref={forwardedRef}\n        className={classNames('rt-CalloutText', className)}\n      />\n    );\n  },\n);\nCalloutText.displayName = 'Callout.Text';\n\nexport { CalloutRoot as Root, CalloutIcon as Icon, CalloutText as Text };\nexport type {\n  CalloutRootProps as RootProps,\n  CalloutIconProps as IconProps,\n  CalloutTextProps as TextProps,\n};\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/card.css",
    "content": "@import './_internal/base-card.css';\n\n/* stylelint-disable selector-max-type */\n/* Disable selector-max-type rule to target `button` and `a` tags. */\n/* Make sure these tags are wrapped in `:where()` for 0 specificity. */\n\n.rt-Card {\n  --base-card-padding-top: var(--card-padding);\n  --base-card-padding-right: var(--card-padding);\n  --base-card-padding-bottom: var(--card-padding);\n  --base-card-padding-left: var(--card-padding);\n  --base-card-border-radius: var(--card-border-radius);\n  --base-card-border-width: var(--card-border-width);\n\n  &:where(:focus-visible) {\n    outline: 2px solid var(--focus-8);\n    outline-offset: -1px;\n\n    &::after {\n      outline: inherit;\n    }\n    &:where(:active:not([data-state='open'])) {\n      &::before {\n        background-image: linear-gradient(var(--focus-a2), var(--focus-a2));\n      }\n    }\n  }\n}\n\n/* * * * * * * * * * * * * * * * * * * */\n/*                                     */\n/*                Sizes                */\n/*                                     */\n/* * * * * * * * * * * * * * * * * * * */\n\n@breakpoints {\n  .rt-Card {\n    &:where(.rt-r-size-1) {\n      --card-padding: var(--space-3);\n      --card-border-radius: var(--radius-4);\n    }\n    &:where(.rt-r-size-2) {\n      --card-padding: var(--space-4);\n      --card-border-radius: var(--radius-4);\n    }\n    &:where(.rt-r-size-3) {\n      --card-padding: var(--space-5);\n      --card-border-radius: var(--radius-5);\n    }\n    &:where(.rt-r-size-4) {\n      --card-padding: var(--space-6);\n      --card-border-radius: var(--radius-5);\n    }\n    &:where(.rt-r-size-5) {\n      --card-padding: var(--space-8);\n      --card-border-radius: var(--radius-6);\n    }\n  }\n}\n\n/* * * * * * * * * * * * * * * * * * * */\n/*                                     */\n/*         Variants / Surface          */\n/*                                     */\n/* * * * * * * * * * * * * * * * * * * */\n\n.rt-Card:where(.rt-variant-surface) {\n  --card-border-width: 1px;\n  --card-background-color: var(--color-panel);\n\n  &::before {\n    background-color: var(--card-background-color);\n    backdrop-filter: var(--backdrop-filter-panel);\n  }\n  &::after {\n    box-shadow: var(--base-card-surface-box-shadow);\n  }\n  &:where(:any-link, button, label) {\n    @media (hover: hover) {\n      &:where(:hover) {\n        &::after {\n          box-shadow: var(--base-card-surface-hover-box-shadow);\n        }\n      }\n    }\n    &:where([data-state='open']) {\n      &::after {\n        box-shadow: var(--base-card-surface-hover-box-shadow);\n      }\n    }\n    &:where(:active:not([data-state='open'])) {\n      &::after {\n        box-shadow: var(--base-card-surface-active-box-shadow);\n      }\n    }\n  }\n}\n\n/* * * * * * * * * * * * * * * * * * * */\n/*                                     */\n/*         Variants / Classic          */\n/*                                     */\n/* * * * * * * * * * * * * * * * * * * */\n\n.rt-Card:where(.rt-variant-classic) {\n  --card-border-width: 1px;\n  --card-background-color: var(--color-panel);\n\n  transition: box-shadow 120ms;\n  box-shadow: var(--base-card-classic-box-shadow-outer);\n\n  &::before {\n    background-color: var(--card-background-color);\n    backdrop-filter: var(--backdrop-filter-panel);\n  }\n  &::after {\n    box-shadow: var(--base-card-classic-box-shadow-inner);\n  }\n  &:where(:any-link, button, label) {\n    @media (hover: hover) {\n      &:where(:hover) {\n        transition-duration: 40ms;\n        box-shadow: var(--base-card-classic-hover-box-shadow-outer);\n        &::after {\n          box-shadow: var(--base-card-classic-hover-box-shadow-inner);\n        }\n      }\n    }\n    &:where([data-state='open']) {\n      transition-duration: 40ms;\n      box-shadow: var(--base-card-classic-hover-box-shadow-outer);\n      &::after {\n        box-shadow: var(--base-card-classic-hover-box-shadow-inner);\n      }\n    }\n    &:where(:active:not([data-state='open'])) {\n      transition-duration: 40ms;\n      box-shadow: var(--base-card-classic-active-box-shadow-outer);\n      &::after {\n        box-shadow: var(--base-card-classic-active-box-shadow-inner);\n      }\n    }\n  }\n}\n\n/* * * * * * * * * * * * * * * * * * * */\n/*                                     */\n/*          Variants / Ghost           */\n/*                                     */\n/* * * * * * * * * * * * * * * * * * * */\n\n.rt-Card:where(.rt-variant-ghost) {\n  --card-border-width: 0px;\n\n  /* We reset the defined margin variables to avoid inheriting them from a higher component */\n  /* If a margin IS defined on the component itself, the utility class will win and reset it */\n  --margin-top: 0px;\n  --margin-right: 0px;\n  --margin-bottom: 0px;\n  --margin-left: 0px;\n\n  /* Define the overrides to incorporate the negative margins */\n  --margin-top-override: calc(var(--margin-top) - var(--card-padding));\n  --margin-right-override: calc(var(--margin-right) - var(--card-padding));\n  --margin-bottom-override: calc(var(--margin-bottom) - var(--card-padding));\n  --margin-left-override: calc(var(--margin-left) - var(--card-padding));\n\n  margin-top: var(--margin-top-override);\n  margin-right: var(--margin-right-override);\n  margin-bottom: var(--margin-bottom-override);\n  margin-left: var(--margin-left-override);\n\n  /* Reset the overrides on direct children */\n  :where(&) > * {\n    --margin-top-override: initial;\n    --margin-right-override: initial;\n    --margin-bottom-override: initial;\n    --margin-left-override: initial;\n  }\n  &:where(:any-link, button, label) {\n    @media (hover: hover) {\n      &:where(:hover) {\n        background-color: var(--gray-a3);\n        &:where(:focus-visible) {\n          background-color: var(--focus-a2);\n        }\n      }\n    }\n    &:where([data-state='open']) {\n      background-color: var(--gray-a3);\n      &:where(:focus-visible) {\n        background-color: var(--focus-a2);\n      }\n    }\n    &:where(:active:not([data-state='open'])) {\n      background-color: var(--gray-a4);\n      &:where(:focus-visible) {\n        background-color: var(--focus-a2);\n      }\n    }\n  }\n}\n\n/* Better -webkit-tap-highlight-color */\n.rt-Card:where(:any-link, button, label) {\n  @media (pointer: coarse) {\n    &:where(:active:not(:focus-visible, [data-state='open'])) {\n      &::before {\n        background-image: linear-gradient(var(--gray-a4), var(--gray-a4));\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/card.props.tsx",
    "content": "import { asChildPropDef } from '../props/as-child.prop.js';\n\nimport type { PropDef } from '../props/prop-def.js';\n\nconst sizes = ['1', '2', '3', '4', '5'] as const;\nconst variants = ['surface', 'classic', 'ghost'] as const;\n\nconst cardPropDefs = {\n  ...asChildPropDef,\n  size: { type: 'enum', className: 'rt-r-size', values: sizes, default: '1', responsive: true },\n  variant: { type: 'enum', className: 'rt-variant', values: variants, default: 'surface' },\n} satisfies {\n  size: PropDef<(typeof sizes)[number]>;\n  variant: PropDef<(typeof variants)[number]>;\n};\n\nexport { cardPropDefs };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/card.tsx",
    "content": "import * as React from 'react';\nimport classNames from 'classnames';\nimport { Slot } from 'radix-ui';\n\nimport { cardPropDefs } from './card.props.js';\nimport { extractProps } from '../helpers/extract-props.js';\nimport { marginPropDefs } from '../props/margin.props.js';\n\nimport type { MarginProps } from '../props/margin.props.js';\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\nimport type { GetPropDefTypes } from '../props/prop-def.js';\n\ntype CardElement = React.ElementRef<'div'>;\ntype CardOwnProps = GetPropDefTypes<typeof cardPropDefs>;\ninterface CardProps extends ComponentPropsWithout<'div', RemovedProps>, MarginProps, CardOwnProps {}\nconst Card = React.forwardRef<CardElement, CardProps>((props, forwardedRef) => {\n  const { asChild, className, ...cardProps } = extractProps(props, cardPropDefs, marginPropDefs);\n  const Comp = asChild ? Slot.Root : 'div';\n  return (\n    <Comp\n      ref={forwardedRef}\n      {...cardProps}\n      className={classNames('rt-reset', 'rt-BaseCard', 'rt-Card', className)}\n    />\n  );\n});\nCard.displayName = 'Card';\n\nexport { Card };\nexport type { CardProps };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/checkbox-cards.css",
    "content": "@import './_internal/base-card.css';\n@import './_internal/base-checkbox.css';\n\n.rt-CheckboxCardsRoot {\n  line-height: var(--line-height);\n  letter-spacing: var(--letter-spacing);\n  cursor: default;\n}\n\n.rt-CheckboxCardsItem {\n  --base-card-padding-top: var(--checkbox-cards-item-padding-top);\n  --base-card-padding-right: var(--checkbox-cards-item-padding-right);\n  --base-card-padding-bottom: var(--checkbox-cards-item-padding-bottom);\n  --base-card-padding-left: var(--checkbox-cards-item-padding-left);\n  --base-card-border-radius: var(--checkbox-cards-item-border-radius);\n  --base-card-border-width: var(--checkbox-cards-item-border-width);\n\n  display: flex;\n  align-items: center;\n  gap: var(--space-2);\n  cursor: var(--cursor-button);\n  -webkit-tap-highlight-color: transparent;\n\n  &:where(:has(:focus-visible)) {\n    outline: 2px solid var(--focus-8);\n    outline-offset: -1px;\n\n    &::after {\n      outline: inherit;\n    }\n  }\n\n  & > * {\n    /* Avoid unintentional drag interactions (e.g. on images) */\n    pointer-events: none;\n  }\n  /* stylelint-disable-next-line selector-max-type */\n  & > :where(svg) {\n    /* Don’t squish icons */\n    flex-shrink: 0;\n  }\n}\n\n.rt-CheckboxCardCheckbox {\n  position: absolute;\n  right: var(--checkbox-cards-item-padding-left);\n}\n\n/* * * * * * * * * * * * * * * * * * * */\n/*                                     */\n/*                Sizes                */\n/*                                     */\n/* * * * * * * * * * * * * * * * * * * */\n\n.rt-CheckboxCardsItem {\n  --checkbox-cards-item-padding-right: calc(\n    var(--checkbox-cards-item-padding-left) * 2 + var(--checkbox-cards-item-checkbox-size)\n  );\n}\n\n@breakpoints {\n  .rt-CheckboxCardsRoot {\n    /* 40px height for the card with one line of text */\n    &:where(.rt-r-size-1) {\n      font-size: var(--font-size-2);\n      --line-height: var(--line-height-2);\n      --letter-spacing: var(--letter-spacing-2);\n      --checkbox-cards-item-padding-top: calc(var(--space-3) / 1.2);\n      --checkbox-cards-item-padding-bottom: calc(var(--space-3) / 1.2);\n      --checkbox-cards-item-padding-left: var(--space-3);\n      --checkbox-cards-item-border-radius: var(--radius-3);\n      /* keep in sync with checkbox */\n      --checkbox-cards-item-checkbox-size: calc(var(--space-4) * 0.875);\n    }\n    /* 48px height for the card with one line of text */\n    &:where(.rt-r-size-2) {\n      font-size: var(--font-size-2);\n      --line-height: var(--line-height-2);\n      --letter-spacing: var(--letter-spacing-2);\n      --checkbox-cards-item-padding-top: calc(var(--space-4) * 0.875);\n      --checkbox-cards-item-padding-bottom: calc(var(--space-4) * 0.875);\n      --checkbox-cards-item-padding-left: var(--space-4);\n      --checkbox-cards-item-border-radius: var(--radius-3);\n      /* keep in sync with checkbox */\n      --checkbox-cards-item-checkbox-size: var(--space-4);\n    }\n    /* 64px height for the card with one line of text */\n    &:where(.rt-r-size-3) {\n      font-size: var(--font-size-3);\n      --line-height: var(--line-height-3);\n      --letter-spacing: var(--letter-spacing-3);\n      --checkbox-cards-item-padding-top: calc(var(--space-5) / 1.2);\n      --checkbox-cards-item-padding-bottom: calc(var(--space-5) / 1.2);\n      --checkbox-cards-item-padding-left: var(--space-5);\n      --checkbox-cards-item-border-radius: var(--radius-4);\n      /* keep in sync with checkbox */\n      --checkbox-cards-item-checkbox-size: calc(var(--space-4) * 1.25);\n    }\n  }\n}\n\n/* * * * * * * * * * * * * * * * * * * */\n/*                                     */\n/*         Variants / Surface          */\n/*                                     */\n/* * * * * * * * * * * * * * * * * * * */\n\n:where(.rt-CheckboxCardsRoot.rt-variant-surface) {\n  .rt-CheckboxCardsItem {\n    --checkbox-cards-item-border-width: 1px;\n    --checkbox-cards-item-background-color: var(--color-surface);\n\n    &::before {\n      background-color: var(--checkbox-cards-item-background-color);\n    }\n    &::after {\n      box-shadow: var(--base-card-surface-box-shadow);\n    }\n    @media (hover: hover) {\n      &:where(:not(:has(:disabled)):hover) {\n        &::after {\n          box-shadow: var(--base-card-surface-hover-box-shadow);\n        }\n      }\n    }\n  }\n}\n\n/* * * * * * * * * * * * * * * * * * * */\n/*                                     */\n/*         Variants / Classic          */\n/*                                     */\n/* * * * * * * * * * * * * * * * * * * */\n\n:where(.rt-CheckboxCardsRoot.rt-variant-classic) {\n  .rt-CheckboxCardsItem {\n    --checkbox-cards-item-border-width: 1px;\n    --checkbox-cards-item-background-color: var(--color-surface);\n\n    transition: box-shadow 120ms;\n    box-shadow: var(--base-card-classic-box-shadow-outer);\n\n    &::before {\n      background-color: var(--checkbox-cards-item-background-color);\n    }\n    &::after {\n      box-shadow: var(--base-card-classic-box-shadow-inner);\n    }\n    @media (hover: hover) {\n      &:where(:not(:has(:disabled)):hover) {\n        transition-duration: 40ms;\n        box-shadow: var(--base-card-classic-hover-box-shadow-outer);\n        &::after {\n          box-shadow: var(--base-card-classic-hover-box-shadow-inner);\n        }\n      }\n    }\n  }\n}\n\n/* * * * * * * * * * * * * * * * * * * */\n/*                                     */\n/*         All tap highlights          */\n/*                                     */\n/* * * * * * * * * * * * * * * * * * * */\n\n/* Better -webkit-tap-highlight-color */\n.rt-CheckboxCardsItem {\n  @media (pointer: coarse) {\n    &:where(:active:not(:focus-visible)) {\n      &::before {\n        background-image: linear-gradient(var(--gray-a4), var(--gray-a4));\n      }\n    }\n  }\n}\n\n/* * * * * * * * * * * * * * * * * * * */\n/*                                     */\n/*            All disabled             */\n/*                                     */\n/* * * * * * * * * * * * * * * * * * * */\n\n.rt-CheckboxCardsItem:where(:has(:disabled)) {\n  cursor: var(--cursor-disabled);\n  color: var(--gray-a9);\n\n  &::before {\n    background-image: linear-gradient(var(--gray-a2), var(--gray-a2));\n  }\n  &::selection {\n    background-color: var(--gray-a5);\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/checkbox-cards.props.tsx",
    "content": "import { asChildPropDef } from '../props/as-child.prop.js';\nimport { colorPropDef } from '../props/color.prop.js';\nimport { highContrastPropDef } from '../props/high-contrast.prop.js';\nimport { gridPropDefs } from './grid.props.js';\n\nimport type { PropDef } from '../props/prop-def.js';\n\nconst sizes = ['1', '2', '3'] as const;\nconst variants = ['surface', 'classic'] as const;\n\nconst checkboxCardsRootPropDefs = {\n  ...asChildPropDef,\n  size: { type: 'enum', className: 'rt-r-size', values: sizes, default: '2', responsive: true },\n  variant: { type: 'enum', className: 'rt-variant', values: variants, default: 'surface' },\n  ...colorPropDef,\n  ...highContrastPropDef,\n  columns: { ...gridPropDefs.columns, default: 'repeat(auto-fit, minmax(200px, 1fr))' },\n  gap: { ...gridPropDefs.gap, default: '4' },\n} satisfies {\n  size: PropDef<(typeof sizes)[number]>;\n  variant: PropDef<(typeof variants)[number]>;\n  columns: PropDef<(typeof gridPropDefs.columns.values)[number]>;\n  gap: PropDef<(typeof gridPropDefs.gap.values)[number]>;\n};\n\nexport { checkboxCardsRootPropDefs };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/checkbox-cards.tsx",
    "content": "'use client';\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { Context } from 'radix-ui/internal';\n\nimport * as CheckboxGroupPrimitive from './checkbox-group.primitive.js';\nimport { createCheckboxGroupScope } from './checkbox-group.primitive.js';\nimport { checkboxCardsRootPropDefs } from './checkbox-cards.props.js';\nimport { baseCheckboxPropDefs } from './_internal/base-checkbox.props.js';\nimport { Grid } from './grid.js';\nimport { ThickCheckIcon } from './icons.js';\nimport { extractProps } from '../helpers/extract-props.js';\nimport { marginPropDefs } from '../props/margin.props.js';\n\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\nimport type { MarginProps } from '../props/margin.props.js';\nimport type { Responsive, GetPropDefTypes } from '../props/prop-def.js';\n\nconst CHECKBOX_CARD_GROUP_NAME = 'CheckboxCards';\n\ntype ScopedProps<P> = P & { __scopeCheckboxCards?: Context.Scope };\nconst [createCheckboxCardsContext] = Context.createContextScope(CHECKBOX_CARD_GROUP_NAME, [\n  createCheckboxGroupScope,\n]);\nconst useCheckboxGroupScope = createCheckboxGroupScope();\n\ntype CheckboxCardsContextValue = {\n  size?: Responsive<(typeof checkboxCardsRootPropDefs.size.values)[number]>;\n  highContrast?: boolean;\n};\n\nconst [CheckboxCardsProvider, useCheckboxCardsContext] =\n  createCheckboxCardsContext<CheckboxCardsContextValue>(CHECKBOX_CARD_GROUP_NAME);\n\ntype CheckboxCardsRootElement = React.ElementRef<typeof CheckboxGroupPrimitive.Root>;\ntype CheckboxCardsRootOwnProps = GetPropDefTypes<typeof checkboxCardsRootPropDefs>;\ninterface CheckboxCardsRootProps\n  extends\n    ComponentPropsWithout<\n      typeof CheckboxGroupPrimitive.Root,\n      'asChild' | 'color' | 'defaultChecked'\n    >,\n    MarginProps,\n    CheckboxCardsRootOwnProps {}\nconst CheckboxCardsRoot = React.forwardRef<CheckboxCardsRootElement, CheckboxCardsRootProps>(\n  (props: ScopedProps<CheckboxCardsRootProps>, forwardedRef) => {\n    const { __scopeCheckboxCards, className, color, ...rootProps } = extractProps(\n      props,\n      checkboxCardsRootPropDefs,\n      marginPropDefs,\n    );\n    const checkboxGroupScope = useCheckboxGroupScope(__scopeCheckboxCards);\n    return (\n      <CheckboxCardsProvider\n        scope={__scopeCheckboxCards}\n        size={props.size}\n        highContrast={props.highContrast}\n      >\n        <Grid asChild>\n          <CheckboxGroupPrimitive.Root\n            {...checkboxGroupScope}\n            data-accent-color={color}\n            {...rootProps}\n            ref={forwardedRef}\n            className={classNames('rt-CheckboxCardsRoot', className)}\n          />\n        </Grid>\n      </CheckboxCardsProvider>\n    );\n  },\n);\nCheckboxCardsRoot.displayName = 'CheckboxCards.Root';\n\ntype CheckboxCardsItemElement = React.ElementRef<typeof CheckboxGroupPrimitive.Item>;\ninterface CheckboxCardsItemProps\n  extends ComponentPropsWithout<typeof CheckboxGroupPrimitive.Item, RemovedProps>, MarginProps {}\nconst CheckboxCardsItem = React.forwardRef<\n  CheckboxCardsItemElement,\n  ScopedProps<CheckboxCardsItemProps>\n>(({ __scopeCheckboxCards, children, className, style, ...props }, forwardedRef) => {\n  const context = useCheckboxCardsContext('CheckboxCardsItem', __scopeCheckboxCards);\n  const checkboxGroupScope = useCheckboxGroupScope(__scopeCheckboxCards);\n  const { className: checkboxClassName } = extractProps(\n    // Pass size / highContrast values from the context and static variant to generate styles\n    { size: context?.size, variant: 'surface', highContrast: context?.highContrast },\n    // Pass size & variant prop defs to allow it to be extracted\n    baseCheckboxPropDefs,\n  );\n  return (\n    <label className={classNames('rt-BaseCard', 'rt-CheckboxCardsItem', className)} style={style}>\n      {children}\n      <CheckboxGroupPrimitive.Item\n        {...checkboxGroupScope}\n        {...props}\n        ref={forwardedRef}\n        className={classNames(\n          'rt-reset',\n          'rt-BaseCheckboxRoot',\n          'rt-CheckboxCardCheckbox',\n          checkboxClassName,\n        )}\n      >\n        <CheckboxGroupPrimitive.Indicator\n          {...checkboxGroupScope}\n          asChild\n          className=\"rt-BaseCheckboxIndicator\"\n        >\n          <ThickCheckIcon />\n        </CheckboxGroupPrimitive.Indicator>\n      </CheckboxGroupPrimitive.Item>\n    </label>\n  );\n});\nCheckboxCardsItem.displayName = 'CheckboxCards.Item';\n\nexport { CheckboxCardsRoot as Root, CheckboxCardsItem as Item };\nexport type { CheckboxCardsRootProps as RootProps, CheckboxCardsItemProps as ItemProps };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/checkbox-group.css",
    "content": ".rt-CheckboxGroupRoot {\n  display: flex;\n  flex-direction: column;\n  gap: var(--space-1);\n}\n\n.rt-CheckboxGroupItem {\n  display: flex;\n  gap: 0.5em;\n\n  /* Make sure whitespace to the right of the text is not clickable */\n  width: fit-content;\n}\n\n.rt-CheckboxGroupItemCheckbox {\n  &:where(:focus-visible) {\n    &::before {\n      outline: 2px solid var(--focus-8);\n      outline-offset: 2px;\n    }\n  }\n\n  &:where(:disabled) {\n    cursor: var(--cursor-disabled);\n\n    &::before {\n      background-color: var(--gray-a3);\n    }\n  }\n}\n\n.rt-CheckboxGroupItemInner {\n  /* Make layouts with text truncation possible */\n  min-width: 0;\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/checkbox-group.primitive.tsx",
    "content": "'use client';\n\nimport * as React from 'react';\nimport { Checkbox as CheckboxPrimitive, Direction } from 'radix-ui';\nimport {\n  Context,\n  Primitive,\n  useComposedRefs,\n  RovingFocus,\n  useControllableState,\n} from 'radix-ui/internal';\n\nconst { useDirection } = Direction;\n\n/* -------------------------------------------------------------------------------------------------\n * CheckboxGroup\n * -----------------------------------------------------------------------------------------------*/\nconst CHECKBOX_GROUP_NAME = 'CheckboxGroup';\n\ntype ScopedProps<P> = P & { __scopeCheckboxGroup?: Context.Scope };\nconst [createCheckboxGroupContext, createCheckboxGroupScope] = Context.createContextScope(\n  CHECKBOX_GROUP_NAME,\n  [RovingFocus.createRovingFocusGroupScope, CheckboxPrimitive.createCheckboxScope],\n);\nconst useRovingFocusGroupScope = RovingFocus.createRovingFocusGroupScope();\nconst useCheckboxScope = CheckboxPrimitive.createCheckboxScope();\n\ntype CheckboxGroupContextValue = {\n  name?: string;\n  required: boolean;\n  disabled: boolean;\n  value?: string[];\n  onItemCheck(value: string): void;\n  onItemUncheck(value: string): void;\n};\n\nconst [CheckboxGroupProvider, useCheckboxGroupContext] =\n  createCheckboxGroupContext<CheckboxGroupContextValue>(CHECKBOX_GROUP_NAME);\n\ntype CheckboxGroupElement = React.ElementRef<typeof Primitive.div>;\ntype RovingFocusGroupProps = React.ComponentPropsWithoutRef<typeof RovingFocus.Root>;\ntype PrimitiveDivProps = React.ComponentPropsWithoutRef<typeof Primitive.div>;\ninterface CheckboxGroupProps extends PrimitiveDivProps {\n  name?: CheckboxGroupContextValue['name'];\n  required?: React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>['required'];\n  disabled?: React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>['disabled'];\n  dir?: RovingFocusGroupProps['dir'];\n  orientation?: RovingFocusGroupProps['orientation'];\n  loop?: RovingFocusGroupProps['loop'];\n  defaultValue?: string[];\n  value?: CheckboxGroupContextValue['value'];\n  onValueChange?: (value: string[]) => void;\n}\n\nconst CheckboxGroup = React.forwardRef<CheckboxGroupElement, CheckboxGroupProps>(\n  (props: ScopedProps<CheckboxGroupProps>, forwardedRef) => {\n    const {\n      __scopeCheckboxGroup,\n      name,\n      defaultValue,\n      value: valueProp,\n      required = false,\n      disabled = false,\n      orientation,\n      dir,\n      loop = true,\n      onValueChange,\n      ...groupProps\n    } = props;\n    const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeCheckboxGroup);\n    const direction = useDirection(dir);\n    const [value = [], setValue] = useControllableState({\n      prop: valueProp,\n      defaultProp: defaultValue,\n      onChange: onValueChange,\n    });\n\n    const handleItemCheck = React.useCallback(\n      (itemValue: string) => setValue((prevValue = []) => [...prevValue, itemValue]),\n      [setValue],\n    );\n\n    const handleItemUncheck = React.useCallback(\n      (itemValue: string) =>\n        setValue((prevValue = []) => prevValue.filter((value) => value !== itemValue)),\n      [setValue],\n    );\n\n    return (\n      <CheckboxGroupProvider\n        scope={__scopeCheckboxGroup}\n        name={name}\n        required={required}\n        disabled={disabled}\n        value={value}\n        onItemCheck={handleItemCheck}\n        onItemUncheck={handleItemUncheck}\n      >\n        <RovingFocus.Root\n          asChild\n          {...rovingFocusGroupScope}\n          orientation={orientation}\n          dir={direction}\n          loop={loop}\n        >\n          <Primitive.div\n            role=\"group\"\n            data-disabled={disabled ? '' : undefined}\n            dir={direction}\n            {...groupProps}\n            ref={forwardedRef}\n          />\n        </RovingFocus.Root>\n      </CheckboxGroupProvider>\n    );\n  },\n);\n\nCheckboxGroup.displayName = CHECKBOX_GROUP_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * CheckboxGroupItem\n * -----------------------------------------------------------------------------------------------*/\n\nconst ITEM_NAME = 'CheckboxGroupItem';\n\ntype CheckboxGroupItemElement = React.ElementRef<typeof CheckboxPrimitive.Root>;\ntype CheckboxProps = React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>;\ninterface CheckboxGroupItemProps extends Omit<\n  CheckboxProps,\n  'checked' | 'defaultChecked' | 'onCheckedChange' | 'name'\n> {\n  value: string;\n}\n\nconst CheckboxGroupItem = React.forwardRef<CheckboxGroupItemElement, CheckboxGroupItemProps>(\n  (props: ScopedProps<CheckboxGroupItemProps>, forwardedRef) => {\n    const { __scopeCheckboxGroup, disabled, ...itemProps } = props;\n    const context = useCheckboxGroupContext(ITEM_NAME, __scopeCheckboxGroup);\n    const isDisabled = context.disabled || disabled;\n    const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeCheckboxGroup);\n    const checkboxScope = useCheckboxScope(__scopeCheckboxGroup);\n    const ref = React.useRef<React.ElementRef<typeof CheckboxPrimitive.Root>>(null);\n    const composedRefs = useComposedRefs(forwardedRef, ref);\n    const checked = context.value?.includes(itemProps.value);\n\n    return (\n      <RovingFocus.Item asChild {...rovingFocusGroupScope} focusable={!isDisabled} active={checked}>\n        <CheckboxPrimitive.Root\n          name={context.name}\n          disabled={isDisabled}\n          required={context.required}\n          checked={checked}\n          {...checkboxScope}\n          {...itemProps}\n          ref={composedRefs}\n          onCheckedChange={(checked) => {\n            if (checked) {\n              context.onItemCheck(props.value);\n            } else {\n              context.onItemUncheck(props.value);\n            }\n          }}\n        />\n      </RovingFocus.Item>\n    );\n  },\n);\n\nCheckboxGroupItem.displayName = ITEM_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * CheckboxGroupIndicator\n * -----------------------------------------------------------------------------------------------*/\n\nconst INDICATOR_NAME = 'CheckboxGroupIndicator';\n\ntype CheckboxGroupIndicatorElement = React.ElementRef<typeof CheckboxPrimitive.Indicator>;\ntype CheckboxIndicatorProps = React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Indicator>;\ninterface CheckboxGroupIndicatorProps extends CheckboxIndicatorProps {}\n\nconst CheckboxGroupIndicator = React.forwardRef<\n  CheckboxGroupIndicatorElement,\n  CheckboxGroupIndicatorProps\n>((props: ScopedProps<CheckboxGroupIndicatorProps>, forwardedRef) => {\n  const { __scopeCheckboxGroup, ...indicatorProps } = props;\n  const checkboxScope = useCheckboxScope(__scopeCheckboxGroup);\n  return <CheckboxPrimitive.Indicator {...checkboxScope} {...indicatorProps} ref={forwardedRef} />;\n});\n\nCheckboxGroupIndicator.displayName = INDICATOR_NAME;\n\n/* ---------------------------------------------------------------------------------------------- */\n\nconst Root = CheckboxGroup;\nconst Item = CheckboxGroupItem;\nconst Indicator = CheckboxGroupIndicator;\n\nexport {\n  createCheckboxGroupScope,\n  //\n  CheckboxGroup,\n  CheckboxGroupItem,\n  CheckboxGroupIndicator,\n  //\n  Root,\n  Item,\n  Indicator,\n};\nexport type { CheckboxGroupProps, CheckboxGroupItemProps, CheckboxGroupIndicatorProps };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/checkbox-group.props.tsx",
    "content": "import { asChildPropDef } from '../props/as-child.prop.js';\nimport { baseCheckboxPropDefs } from './_internal/base-checkbox.props.js';\n\nconst checkboxGroupRootPropDefs = {\n  ...asChildPropDef,\n  ...baseCheckboxPropDefs,\n};\n\nexport { checkboxGroupRootPropDefs };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/checkbox-group.tsx",
    "content": "'use client';\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { Context } from 'radix-ui/internal';\n\nimport * as CheckboxGroupPrimitive from './checkbox-group.primitive.js';\nimport { createCheckboxGroupScope } from './checkbox-group.primitive.js';\nimport { checkboxGroupRootPropDefs } from './checkbox-group.props.js';\nimport { ThickCheckIcon } from './icons.js';\nimport { Text } from './text.js';\nimport { extractProps } from '../helpers/extract-props.js';\nimport { marginPropDefs } from '../props/margin.props.js';\n\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\nimport type { MarginProps } from '../props/margin.props.js';\nimport type { GetPropDefTypes } from '../props/prop-def.js';\n\nconst CHECKBOX_GROUP_NAME = 'CheckboxGroup';\n\ntype ScopedProps<P> = P & { __scopeCheckboxGroup?: Context.Scope };\nconst [createCheckboxGroupContext] = Context.createContextScope(CHECKBOX_GROUP_NAME, [\n  createCheckboxGroupScope,\n]);\nconst useCheckboxGroupScope = createCheckboxGroupScope();\n\ntype CheckboxGroupRootOwnProps = GetPropDefTypes<typeof checkboxGroupRootPropDefs>;\ntype CheckboxGroupContextValue = CheckboxGroupRootOwnProps;\n\nconst [CheckboxGroupProvider, useCheckboxGroupContext] =\n  createCheckboxGroupContext<CheckboxGroupContextValue>(CHECKBOX_GROUP_NAME);\n\ntype CheckboxGroupRootElement = React.ElementRef<typeof CheckboxGroupPrimitive.Root>;\ninterface CheckboxGroupRootProps\n  extends\n    ComponentPropsWithout<\n      typeof CheckboxGroupPrimitive.Root,\n      'asChild' | 'color' | 'defaultChecked'\n    >,\n    MarginProps,\n    CheckboxGroupRootOwnProps {}\nconst CheckboxGroupRoot = React.forwardRef<CheckboxGroupRootElement, CheckboxGroupRootProps>(\n  (\n    {\n      color = checkboxGroupRootPropDefs.color.default,\n      highContrast = checkboxGroupRootPropDefs.highContrast.default,\n      size = checkboxGroupRootPropDefs.size.default,\n      variant = checkboxGroupRootPropDefs.variant.default,\n      ...props\n    }: ScopedProps<CheckboxGroupRootProps>,\n    forwardedRef,\n  ) => {\n    const { __scopeCheckboxGroup, className, ...rootProps } = extractProps(props, marginPropDefs);\n    const checkboxGroupScope = useCheckboxGroupScope(__scopeCheckboxGroup);\n    return (\n      <CheckboxGroupProvider\n        scope={__scopeCheckboxGroup}\n        color={color}\n        size={size}\n        highContrast={highContrast}\n        variant={variant}\n      >\n        <CheckboxGroupPrimitive.Root\n          {...checkboxGroupScope}\n          {...rootProps}\n          ref={forwardedRef}\n          className={classNames('rt-CheckboxGroupRoot', className)}\n        />\n      </CheckboxGroupProvider>\n    );\n  },\n);\nCheckboxGroupRoot.displayName = 'CheckboxGroup.Root';\n\ntype CheckboxGroupItemElement = React.ElementRef<typeof CheckboxGroupPrimitive.Item>;\ninterface CheckboxGroupItemProps\n  extends ComponentPropsWithout<typeof CheckboxGroupPrimitive.Item, RemovedProps>, MarginProps {}\nconst CheckboxGroupItem = React.forwardRef<CheckboxGroupItemElement, CheckboxGroupItemProps>(\n  (_props: ScopedProps<CheckboxGroupItemProps>, forwardedRef) => {\n    const { __scopeCheckboxGroup, children, className, style, ...props } = _props;\n    const { size } = useCheckboxGroupContext('CheckboxGroupItem', __scopeCheckboxGroup);\n\n    // Render `<Text as=\"label\">` if children are provided, otherwise render\n    // the solo checkbox to allow building out your custom layouts with it.\n    if (children) {\n      return (\n        <Text\n          as=\"label\"\n          size={size}\n          className={classNames('rt-CheckboxGroupItem', className)}\n          style={style}\n        >\n          <CheckboxGroupItemCheckbox\n            __scopeCheckboxGroup={__scopeCheckboxGroup}\n            {...props}\n            ref={forwardedRef}\n          />\n          {children && <span className=\"rt-CheckboxGroupItemInner\">{children}</span>}\n        </Text>\n      );\n    }\n\n    return (\n      <CheckboxGroupItemCheckbox\n        __scopeCheckboxGroup={__scopeCheckboxGroup}\n        {...props}\n        ref={forwardedRef}\n        className={className}\n        style={style}\n      />\n    );\n  },\n);\nCheckboxGroupItem.displayName = 'CheckboxGroup.Item';\n\ntype CheckboxGroupItemCheckboxElement = React.ElementRef<typeof CheckboxGroupPrimitive.Item>;\ninterface CheckboxGroupItemCheckboxProps extends ComponentPropsWithout<\n  typeof CheckboxGroupPrimitive.Item,\n  RemovedProps\n> {}\nconst CheckboxGroupItemCheckbox = React.forwardRef<\n  CheckboxGroupItemCheckboxElement,\n  ScopedProps<CheckboxGroupItemCheckboxProps>\n>(({ __scopeCheckboxGroup, ...props }, forwardedRef) => {\n  const context = useCheckboxGroupContext('CheckboxGroupItemCheckbox', __scopeCheckboxGroup);\n  const checkboxGroupScope = useCheckboxGroupScope(__scopeCheckboxGroup);\n  const { color, className } = extractProps(\n    { ...props, ...context },\n    checkboxGroupRootPropDefs,\n    marginPropDefs,\n  );\n  return (\n    <CheckboxGroupPrimitive.Item\n      {...checkboxGroupScope}\n      data-accent-color={color}\n      {...props}\n      ref={forwardedRef}\n      className={classNames(\n        'rt-reset',\n        'rt-BaseCheckboxRoot',\n        'rt-CheckboxGroupItemCheckbox',\n        className,\n      )}\n    >\n      <CheckboxGroupPrimitive.Indicator\n        {...checkboxGroupScope}\n        asChild\n        className=\"rt-BaseCheckboxIndicator\"\n      >\n        <ThickCheckIcon />\n      </CheckboxGroupPrimitive.Indicator>\n    </CheckboxGroupPrimitive.Item>\n  );\n});\nCheckboxGroupItemCheckbox.displayName = 'CheckboxGroup.ItemCheckbox';\n\nexport { CheckboxGroupRoot as Root, CheckboxGroupItem as Item };\nexport type { CheckboxGroupRootProps as RootProps, CheckboxGroupItemProps as ItemProps };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/checkbox.css",
    "content": "@import './_internal/base-checkbox.css';\n\n.rt-CheckboxRoot {\n  &:where(:focus-visible) {\n    &::before {\n      outline: 2px solid var(--focus-8);\n      outline-offset: 2px;\n    }\n  }\n\n  &:where(:disabled) {\n    cursor: var(--cursor-disabled);\n\n    &::before {\n      background-color: var(--gray-a3);\n    }\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/checkbox.props.tsx",
    "content": "export { baseCheckboxPropDefs as checkboxPropDefs } from './_internal/base-checkbox.props.js';\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/checkbox.tsx",
    "content": "'use client';\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { Checkbox as CheckboxPrimitive } from 'radix-ui';\nimport { useControllableState } from 'radix-ui/internal';\n\nimport { checkboxPropDefs } from './checkbox.props.js';\nimport { ThickCheckIcon, ThickDividerHorizontalIcon } from './icons.js';\nimport { extractProps } from '../helpers/extract-props.js';\nimport { marginPropDefs } from '../props/margin.props.js';\n\nimport type { MarginProps } from '../props/margin.props.js';\nimport type { ComponentPropsWithout } from '../helpers/component-props.js';\nimport type { GetPropDefTypes } from '../props/prop-def.js';\n\ntype CheckboxElement = React.ElementRef<typeof CheckboxPrimitive.Root>;\ntype CheckboxOwnProps = GetPropDefTypes<typeof checkboxPropDefs>;\ninterface CheckboxProps\n  extends\n    ComponentPropsWithout<\n      typeof CheckboxPrimitive.Root,\n      'asChild' | 'color' | 'defaultValue' | 'children'\n    >,\n    MarginProps,\n    CheckboxOwnProps {}\nconst Checkbox = React.forwardRef<CheckboxElement, CheckboxProps>((props, forwardedRef) => {\n  const {\n    className,\n    color,\n    checked: checkedProp,\n    defaultChecked: defaultCheckedProp,\n    onCheckedChange,\n    ...checkboxProps\n  } = extractProps(props, checkboxPropDefs, marginPropDefs);\n\n  const [checked, setChecked] = useControllableState({\n    prop: checkedProp,\n    defaultProp: defaultCheckedProp,\n    onChange: onCheckedChange,\n  });\n\n  return (\n    <CheckboxPrimitive.Root\n      data-accent-color={color}\n      {...checkboxProps}\n      defaultChecked={defaultCheckedProp}\n      checked={checked}\n      onCheckedChange={setChecked}\n      asChild={false}\n      ref={forwardedRef}\n      className={classNames('rt-reset', 'rt-BaseCheckboxRoot', 'rt-CheckboxRoot', className)}\n    >\n      <CheckboxPrimitive.Indicator\n        asChild\n        className=\"rt-BaseCheckboxIndicator rt-CheckboxIndicator\"\n      >\n        {checked === 'indeterminate' ? <ThickDividerHorizontalIcon /> : <ThickCheckIcon />}\n      </CheckboxPrimitive.Indicator>\n    </CheckboxPrimitive.Root>\n  );\n});\nCheckbox.displayName = 'Checkbox';\n\nexport { Checkbox };\nexport type { CheckboxProps };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/code.css",
    "content": "/* stylelint-disable selector-max-type */\n/* Disable selector-max-type rule to target individual element types. */\n\n.rt-Code {\n  --code-variant-font-size-adjust: calc(var(--code-font-size-adjust) * 0.95);\n  font-family: var(--code-font-family);\n  font-size: calc(var(--code-variant-font-size-adjust) * 1em);\n  font-style: var(--code-font-style);\n  font-weight: var(--code-font-weight);\n  line-height: 1.25;\n  letter-spacing: calc(var(--code-letter-spacing) + var(--letter-spacing, var(--default-letter-spacing)));\n  border-radius: calc((0.5px + 0.2em) * var(--radius-factor));\n\n  box-sizing: border-box;\n  padding-top: var(--code-padding-top);\n  padding-left: var(--code-padding-left);\n  padding-bottom: var(--code-padding-bottom);\n  padding-right: var(--code-padding-right);\n\n  /* Make sure that the height is not stretched in a Flex/Grid layout */\n  height: fit-content;\n\n  & :where(&) {\n    font-size: inherit;\n  }\n}\n\n/***************************************************************************************************\n *                                                                                                 *\n * SIZES                                                                                           *\n *                                                                                                 *\n ***************************************************************************************************/\n\n@breakpoints {\n  .rt-Code {\n    &:where(.rt-r-size-1) {\n      font-size: calc(var(--font-size-1) * var(--code-variant-font-size-adjust));\n      line-height: var(--line-height-1);\n      --letter-spacing: var(--letter-spacing-1);\n    }\n    &:where(.rt-r-size-2) {\n      font-size: calc(var(--font-size-2) * var(--code-variant-font-size-adjust));\n      line-height: var(--line-height-2);\n      --letter-spacing: var(--letter-spacing-2);\n    }\n    &:where(.rt-r-size-3) {\n      font-size: calc(var(--font-size-3) * var(--code-variant-font-size-adjust));\n      line-height: var(--line-height-3);\n      --letter-spacing: var(--letter-spacing-3);\n    }\n    &:where(.rt-r-size-4) {\n      font-size: calc(var(--font-size-4) * var(--code-variant-font-size-adjust));\n      line-height: var(--line-height-4);\n      --letter-spacing: var(--letter-spacing-4);\n    }\n    &:where(.rt-r-size-5) {\n      font-size: calc(var(--font-size-5) * var(--code-variant-font-size-adjust));\n      line-height: var(--line-height-5);\n      --letter-spacing: var(--letter-spacing-5);\n    }\n    &:where(.rt-r-size-6) {\n      font-size: calc(var(--font-size-6) * var(--code-variant-font-size-adjust));\n      line-height: var(--line-height-6);\n      --letter-spacing: var(--letter-spacing-6);\n    }\n    &:where(.rt-r-size-7) {\n      font-size: calc(var(--font-size-7) * var(--code-variant-font-size-adjust));\n      line-height: var(--line-height-7);\n      --letter-spacing: var(--letter-spacing-7);\n    }\n    &:where(.rt-r-size-8) {\n      font-size: calc(var(--font-size-8) * var(--code-variant-font-size-adjust));\n      line-height: var(--line-height-8);\n      --letter-spacing: var(--letter-spacing-8);\n    }\n    &:where(.rt-r-size-9) {\n      font-size: calc(var(--font-size-9) * var(--code-variant-font-size-adjust));\n      line-height: var(--line-height-9);\n      --letter-spacing: var(--letter-spacing-9);\n    }\n  }\n}\n\n/***************************************************************************************************\n *                                                                                                 *\n * VARIANTS                                                                                        *\n *                                                                                                 *\n ***************************************************************************************************/\n\n/* ghost */\n\n.rt-Code:where(.rt-variant-ghost) {\n  --code-variant-font-size-adjust: var(--code-font-size-adjust);\n  padding: 0;\n\n  &:where([data-accent-color]) {\n    color: var(--accent-a11);\n  }\n\n  &:where([data-accent-color].rt-high-contrast),\n  :where([data-accent-color]:not(.radix-themes)) &:where(.rt-high-contrast) {\n    color: var(--accent-12);\n  }\n}\n\n/* solid */\n\n.rt-Code:where(.rt-variant-solid) {\n  background-color: var(--accent-a9);\n  color: var(--accent-contrast);\n\n  &::selection {\n    background-color: var(--accent-7);\n    color: var(--accent-12);\n  }\n\n  &:where(.rt-high-contrast) {\n    background-color: var(--accent-12);\n    color: var(--accent-1);\n\n    &::selection {\n      background-color: var(--accent-a11);\n      color: var(--accent-1);\n    }\n  }\n\n  :where(.rt-Link) &,\n  &:where(:any-link, button) {\n    /* Create a new stacking context (otherwise, `filter` may do it on hover) */\n    isolation: isolate;\n    @media (hover: hover) {\n      &:where(:hover) {\n        background-color: var(--accent-10);\n      }\n      &:where(.rt-high-contrast:hover) {\n        background-color: var(--accent-12);\n        /* Re-use base button hover filter */\n        filter: var(--base-button-solid-high-contrast-hover-filter);\n      }\n    }\n  }\n}\n\n/* soft */\n\n.rt-Code:where(.rt-variant-soft) {\n  background-color: var(--accent-a3);\n  color: var(--accent-a11);\n\n  &:where(.rt-high-contrast) {\n    color: var(--accent-12);\n  }\n\n  :where(.rt-Link) &,\n  &:where(:any-link, button) {\n    isolation: isolate;\n    @media (hover: hover) {\n      &:where(:hover) {\n        background-color: var(--accent-a4);\n      }\n    }\n  }\n}\n\n/* outline */\n\n.rt-Code:where(.rt-variant-outline) {\n  box-shadow: inset 0 0 0 max(1px, 0.033em) var(--accent-a8);\n  color: var(--accent-a11);\n\n  &:where(.rt-high-contrast) {\n    box-shadow:\n      inset 0 0 0 max(1px, 0.033em) var(--accent-a7),\n      inset 0 0 0 max(1px, 0.033em) var(--gray-a11);\n    color: var(--accent-12);\n  }\n\n  :where(.rt-Link) &,\n  &:where(:any-link, button) {\n    isolation: isolate;\n    @media (hover: hover) {\n      &:where(:hover) {\n        background-color: var(--accent-a2);\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/code.props.tsx",
    "content": "import { asChildPropDef } from '../props/as-child.prop.js';\nimport { accentColorPropDef } from '../props/color.prop.js';\nimport { highContrastPropDef } from '../props/high-contrast.prop.js';\nimport { textWrapPropDef } from '../props/text-wrap.prop.js';\nimport { truncatePropDef } from '../props/truncate.prop.js';\nimport { weightPropDef } from '../props/weight.prop.js';\n\nimport type { PropDef } from '../props/prop-def.js';\n\nconst sizes = ['1', '2', '3', '4', '5', '6', '7', '8', '9'] as const;\nconst variants = ['solid', 'soft', 'outline', 'ghost'] as const;\n\nconst codePropDefs = {\n  ...asChildPropDef,\n  size: {\n    type: 'enum',\n    className: 'rt-r-size',\n    values: sizes,\n    responsive: true,\n  },\n  variant: { type: 'enum', className: 'rt-variant', values: variants, default: 'soft' },\n  ...weightPropDef,\n  ...accentColorPropDef,\n  ...highContrastPropDef,\n  ...truncatePropDef,\n  ...textWrapPropDef,\n} satisfies {\n  size: PropDef<(typeof sizes)[number]>;\n  variant: PropDef<(typeof variants)[number]>;\n};\n\nexport { codePropDefs };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/code.tsx",
    "content": "import * as React from 'react';\nimport classNames from 'classnames';\nimport { Slot } from 'radix-ui';\n\nimport { codePropDefs } from './code.props.js';\nimport { extractProps } from '../helpers/extract-props.js';\nimport { marginPropDefs } from '../props/margin.props.js';\n\nimport type { MarginProps } from '../props/margin.props.js';\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\nimport type { GetPropDefTypes } from '../props/prop-def.js';\n\ntype CodeElement = React.ElementRef<'code'>;\ntype CodeOwnProps = GetPropDefTypes<typeof codePropDefs>;\ninterface CodeProps\n  extends ComponentPropsWithout<'code', RemovedProps>, MarginProps, CodeOwnProps {}\nconst Code = React.forwardRef<CodeElement, CodeProps>((props, forwardedRef) => {\n  const { asChild, className, color, ...codeProps } = extractProps(\n    props,\n    codePropDefs,\n    marginPropDefs,\n  );\n  // Code ghost color prop should work as text color by default\n  const resolvedColor = props.variant === 'ghost' ? color || undefined : color;\n  const Comp = asChild ? Slot.Root : 'code';\n  return (\n    <Comp\n      data-accent-color={resolvedColor}\n      {...codeProps}\n      ref={forwardedRef}\n      className={classNames('rt-reset', 'rt-Code', className)}\n    />\n  );\n});\nCode.displayName = 'Code';\n\nexport { Code };\nexport type { CodeProps };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/container.css",
    "content": ".radix-themes {\n  --container-1: 448px;\n  --container-2: 688px;\n  --container-3: 880px;\n  --container-4: 1136px;\n}\n\n.rt-Container {\n  display: flex;\n  box-sizing: border-box;\n  flex-direction: column;\n  align-items: center;\n  flex-shrink: 0;\n  flex-grow: 1;\n}\n\n.rt-ContainerInner {\n  width: 100%;\n}\n\n/***************************************************************************************************\n *                                                                                                 *\n * SIZES                                                                                           *\n *                                                                                                 *\n ***************************************************************************************************/\n\n@breakpoints {\n  .rt-ContainerInner {\n    :where(.rt-Container.rt-r-size-1) > & {\n      max-width: var(--container-1);\n    }\n    :where(.rt-Container.rt-r-size-2) > & {\n      max-width: var(--container-2);\n    }\n    :where(.rt-Container.rt-r-size-3) > & {\n      max-width: var(--container-3);\n    }\n    :where(.rt-Container.rt-r-size-4) > & {\n      max-width: var(--container-4);\n    }\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/container.props.tsx",
    "content": "import { asChildPropDef } from '../props/as-child.prop.js';\n\nimport type { PropDef, GetPropDefTypes } from '../props/prop-def.js';\n\nconst sizes = ['1', '2', '3', '4'] as const;\nconst displayValues = ['none', 'initial'] as const;\nconst alignValues = ['left', 'center', 'right'] as const;\n\nconst containerPropDefs = {\n  ...asChildPropDef,\n  /**\n   * Controls the **max-width** of the content within the container.\n   * Supports the predefined values and responsive objects.\n   *\n   * @values\n   * | Size     | Max. width |\n   * | :------- | ---------: |\n   * | size=\"1\" | 448px      |\n   * | size=\"2\" | 688px      |\n   * | size=\"3\" | 880px      |\n   * | size=\"4\" | 1136px     |\n   *\n   * @example\n   * size=\"4\"\n   * size={{ sm: '3', lg: '4' }}\n   *\n   * @link\n   * https://github.com/radix-ui/themes/blob/main/packages/radix-ui-themes/src/components/container.css\n   */\n  size: {\n    type: 'enum',\n    className: 'rt-r-size',\n    values: sizes,\n    default: '4',\n    responsive: true,\n  },\n  /**\n   * Controls whether the container is visible or hidden.\n   * Supports \"none\", \"initial\", and responsive object values.\n   *\n   * @example\n   * display=\"none\"\n   * display={{ sm: 'none', lg: 'initial' }}\n   */\n  display: {\n    type: 'enum',\n    className: 'rt-r-display',\n    values: displayValues,\n    parseValue: parseDisplayValue,\n    responsive: true,\n  },\n  /**\n   * Controls the alignment of the content within the container.\n   *\n   * @example\n   * align=\"center\"\n   * align={{ initial: 'left', lg: 'center' }}\n   */\n  align: {\n    type: 'enum',\n    className: 'rt-r-ai',\n    values: alignValues,\n    parseValue: parseAlignValue,\n    responsive: true,\n  },\n} satisfies {\n  size: PropDef<(typeof sizes)[number]>;\n  display: PropDef<(typeof displayValues)[number]>;\n  align: PropDef<(typeof alignValues)[number]>;\n};\n\nfunction parseDisplayValue(value: string) {\n  return value === 'initial' ? 'flex' : value;\n}\n\nfunction parseAlignValue(value: string) {\n  return value === 'left' ? 'start' : value === 'right' ? 'end' : value;\n}\n\n// Use all of the imported prop defs to ensure that JSDoc works\ntype ContainerOwnProps = GetPropDefTypes<typeof containerPropDefs & typeof asChildPropDef>;\n\nexport { containerPropDefs };\nexport type { ContainerOwnProps };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/container.tsx",
    "content": "import * as React from 'react';\nimport classNames from 'classnames';\nimport { Slot } from 'radix-ui';\n\nimport { containerPropDefs } from './container.props.js';\nimport { extractProps } from '../helpers/extract-props.js';\nimport { getSubtree } from '../helpers/get-subtree.js';\nimport { heightPropDefs } from '../props/height.props.js';\nimport { layoutPropDefs } from '../props/layout.props.js';\nimport { marginPropDefs } from '../props/margin.props.js';\nimport { widthPropDefs } from '../props/width.props.js';\n\nimport type { LayoutProps } from '../props/layout.props.js';\nimport type { MarginProps } from '../props/margin.props.js';\nimport type { ContainerOwnProps } from './container.props.js';\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\n\ntype ContainerElement = React.ElementRef<'div'>;\ninterface ContainerProps\n  extends ComponentPropsWithout<'div', RemovedProps>, MarginProps, LayoutProps, ContainerOwnProps {}\nconst Container = React.forwardRef<ContainerElement, ContainerProps>(\n  ({ width, minWidth, maxWidth, height, minHeight, maxHeight, ...props }, forwardedRef) => {\n    const { asChild, children, className, ...containerProps } = extractProps(\n      props,\n      containerPropDefs,\n      layoutPropDefs,\n      marginPropDefs,\n    );\n\n    const { className: innerClassName, style: innerStyle } = extractProps(\n      { width, minWidth, maxWidth, height, minHeight, maxHeight },\n      widthPropDefs,\n      heightPropDefs,\n    );\n\n    const Comp = asChild ? Slot.Root : 'div';\n\n    return (\n      <Comp\n        {...containerProps}\n        ref={forwardedRef}\n        className={classNames('rt-Container', className)}\n      >\n        {getSubtree({ asChild, children }, (children) => (\n          <div className={classNames('rt-ContainerInner', innerClassName)} style={innerStyle}>\n            {children}\n          </div>\n        ))}\n      </Comp>\n    );\n  },\n);\nContainer.displayName = 'Container';\n\nexport { Container };\nexport type { ContainerProps };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/context-menu.css",
    "content": "@import './_internal/base-menu.css';\n\n.rt-ContextMenuContent {\n  max-height: var(--radix-context-menu-content-available-height);\n  transform-origin: var(--radix-context-menu-content-transform-origin);\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/context-menu.props.tsx",
    "content": "export {\n  baseMenuContentPropDefs as contextMenuContentPropDefs,\n  baseMenuItemPropDefs as contextMenuItemPropDefs,\n  baseMenuCheckboxItemPropDefs as contextMenuCheckboxItemPropDefs,\n  baseMenuRadioItemPropDefs as contextMenuRadioItemPropDefs,\n} from './_internal/base-menu.props.js';\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/context-menu.tsx",
    "content": "'use client';\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { ContextMenu as ContextMenuPrimitive, Slot } from 'radix-ui';\n\nimport { ScrollArea } from './scroll-area.js';\nimport {\n  contextMenuContentPropDefs,\n  contextMenuItemPropDefs,\n  contextMenuCheckboxItemPropDefs,\n  contextMenuRadioItemPropDefs,\n} from './context-menu.props.js';\nimport { Theme, useThemeContext } from './theme.js';\nimport { ThickCheckIcon, ThickChevronRightIcon } from './icons.js';\nimport { extractProps } from '../helpers/extract-props.js';\nimport { requireReactElement } from '../helpers/require-react-element.js';\n\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\nimport type { GetPropDefTypes } from '../props/prop-def.js';\n\ninterface ContextMenuRootProps extends React.ComponentPropsWithoutRef<\n  typeof ContextMenuPrimitive.Root\n> {}\nconst ContextMenuRoot: React.FC<ContextMenuRootProps> = (props) => (\n  <ContextMenuPrimitive.Root {...props} />\n);\nContextMenuRoot.displayName = 'ContextMenu.Root';\n\ntype ContextMenuTriggerElement = React.ElementRef<typeof ContextMenuPrimitive.Trigger>;\ninterface ContextMenuTriggerProps extends ComponentPropsWithout<\n  typeof ContextMenuPrimitive.Trigger,\n  RemovedProps\n> {}\nconst ContextMenuTrigger = React.forwardRef<ContextMenuTriggerElement, ContextMenuTriggerProps>(\n  ({ children, ...props }, forwardedRef) => (\n    <ContextMenuPrimitive.Trigger {...props} ref={forwardedRef} asChild>\n      {requireReactElement(children)}\n    </ContextMenuPrimitive.Trigger>\n  ),\n);\nContextMenuTrigger.displayName = 'ContextMenu.Trigger';\n\ntype ContextMenuContentOwnProps = GetPropDefTypes<typeof contextMenuContentPropDefs>;\ntype ContextMenuContentContextValue = ContextMenuContentOwnProps;\nconst ContextMenuContentContext = React.createContext<ContextMenuContentContextValue>({});\ntype ContextMenuContentElement = React.ElementRef<typeof ContextMenuPrimitive.Content>;\ninterface ContextMenuContentProps\n  extends\n    ComponentPropsWithout<typeof ContextMenuPrimitive.Content, RemovedProps>,\n    ContextMenuContentContextValue {\n  container?: React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Portal>['container'];\n}\nconst ContextMenuContent = React.forwardRef<ContextMenuContentElement, ContextMenuContentProps>(\n  (props, forwardedRef) => {\n    const themeContext = useThemeContext();\n    const {\n      size = contextMenuContentPropDefs.size.default,\n      variant = contextMenuContentPropDefs.variant.default,\n      highContrast = contextMenuContentPropDefs.highContrast.default,\n    } = props;\n    const { className, children, color, container, forceMount, ...contentProps } = extractProps(\n      props,\n      contextMenuContentPropDefs,\n    );\n    const resolvedColor = color || themeContext.accentColor;\n    return (\n      <ContextMenuPrimitive.Portal container={container} forceMount={forceMount}>\n        <Theme asChild>\n          <ContextMenuPrimitive.Content\n            data-accent-color={resolvedColor}\n            alignOffset={-Number(size) * 4}\n            collisionPadding={10}\n            {...contentProps}\n            asChild={false}\n            ref={forwardedRef}\n            className={classNames(\n              'rt-PopperContent',\n              'rt-BaseMenuContent',\n              'rt-ContextMenuContent',\n              className,\n            )}\n          >\n            <ScrollArea type=\"auto\">\n              <div className={classNames('rt-BaseMenuViewport', 'rt-ContextMenuViewport')}>\n                <ContextMenuContentContext.Provider\n                  value={React.useMemo(\n                    () => ({ size, variant, color: resolvedColor, highContrast }),\n                    [size, variant, resolvedColor, highContrast],\n                  )}\n                >\n                  {children}\n                </ContextMenuContentContext.Provider>\n              </div>\n            </ScrollArea>\n          </ContextMenuPrimitive.Content>\n        </Theme>\n      </ContextMenuPrimitive.Portal>\n    );\n  },\n);\nContextMenuContent.displayName = 'ContextMenu.Content';\n\ntype ContextMenuLabelElement = React.ElementRef<typeof ContextMenuPrimitive.Label>;\ninterface ContextMenuLabelProps extends ComponentPropsWithout<\n  typeof ContextMenuPrimitive.Label,\n  RemovedProps\n> {}\nconst ContextMenuLabel = React.forwardRef<ContextMenuLabelElement, ContextMenuLabelProps>(\n  ({ className, ...props }, forwardedRef) => (\n    <ContextMenuPrimitive.Label\n      {...props}\n      asChild={false}\n      ref={forwardedRef}\n      className={classNames('rt-BaseMenuLabel', 'rt-ContextMenuLabel', className)}\n    />\n  ),\n);\nContextMenuLabel.displayName = 'ContextMenu.Label';\n\ntype ContextMenuItemElement = React.ElementRef<typeof ContextMenuPrimitive.Item>;\ntype ContextMenuItemOwnProps = GetPropDefTypes<typeof contextMenuItemPropDefs>;\ninterface ContextMenuItemProps\n  extends\n    ComponentPropsWithout<typeof ContextMenuPrimitive.Item, RemovedProps>,\n    ContextMenuItemOwnProps {}\nconst ContextMenuItem = React.forwardRef<ContextMenuItemElement, ContextMenuItemProps>(\n  (props, forwardedRef) => {\n    const {\n      className,\n      children,\n      color = contextMenuItemPropDefs.color.default,\n      shortcut,\n      ...itemProps\n    } = props;\n    return (\n      <ContextMenuPrimitive.Item\n        data-accent-color={color}\n        {...itemProps}\n        ref={forwardedRef}\n        className={classNames('rt-reset', 'rt-BaseMenuItem', 'rt-ContextMenuItem', className)}\n      >\n        <Slot.Slottable>{children}</Slot.Slottable>\n        {shortcut && <div className=\"rt-BaseMenuShortcut rt-ContextMenuShortcut\">{shortcut}</div>}\n      </ContextMenuPrimitive.Item>\n    );\n  },\n);\nContextMenuItem.displayName = 'ContextMenu.Item';\n\ntype ContextMenuGroupElement = React.ElementRef<typeof ContextMenuPrimitive.Group>;\ninterface ContextMenuGroupProps extends ComponentPropsWithout<\n  typeof ContextMenuPrimitive.Group,\n  RemovedProps\n> {}\nconst ContextMenuGroup = React.forwardRef<ContextMenuGroupElement, ContextMenuGroupProps>(\n  ({ className, ...props }, forwardedRef) => (\n    <ContextMenuPrimitive.Group\n      {...props}\n      asChild={false}\n      ref={forwardedRef}\n      className={classNames('rt-BaseMenuGroup', 'rt-ContextMenuGroup', className)}\n    />\n  ),\n);\nContextMenuGroup.displayName = 'ContextMenu.Group';\n\ntype ContextMenuRadioGroupElement = React.ElementRef<typeof ContextMenuPrimitive.RadioGroup>;\ninterface ContextMenuRadioGroupProps extends ComponentPropsWithout<\n  typeof ContextMenuPrimitive.RadioGroup,\n  RemovedProps\n> {}\nconst ContextMenuRadioGroup = React.forwardRef<\n  ContextMenuRadioGroupElement,\n  ContextMenuRadioGroupProps\n>(({ className, ...props }, forwardedRef) => (\n  <ContextMenuPrimitive.RadioGroup\n    {...props}\n    asChild={false}\n    ref={forwardedRef}\n    className={classNames('rt-BaseMenuRadioGroup', 'rt-ContextMenuRadioGroup', className)}\n  />\n));\nContextMenuRadioGroup.displayName = 'ContextMenu.RadioGroup';\n\ntype ContextMenuRadioItemElement = React.ElementRef<typeof ContextMenuPrimitive.RadioItem>;\ntype ContextMenuRadioItemOwnProps = GetPropDefTypes<typeof contextMenuRadioItemPropDefs>;\ninterface ContextMenuRadioItemProps\n  extends\n    ComponentPropsWithout<typeof ContextMenuPrimitive.RadioItem, RemovedProps>,\n    ContextMenuRadioItemOwnProps {}\nconst ContextMenuRadioItem = React.forwardRef<\n  ContextMenuRadioItemElement,\n  ContextMenuRadioItemProps\n>((props, forwardedRef) => {\n  const {\n    children,\n    className,\n    color = contextMenuRadioItemPropDefs.color.default,\n    ...itemProps\n  } = props;\n  return (\n    <ContextMenuPrimitive.RadioItem\n      {...itemProps}\n      asChild={false}\n      ref={forwardedRef}\n      data-accent-color={color}\n      className={classNames(\n        'rt-BaseMenuItem',\n        'rt-BaseMenuRadioItem',\n        'rt-ContextMenuItem',\n        'rt-ContextMenuRadioItem',\n        className,\n      )}\n    >\n      <Slot.Slottable>{children}</Slot.Slottable>\n      <ContextMenuPrimitive.ItemIndicator className=\"rt-BaseMenuItemIndicator rt-ContextMenuItemIndicator\">\n        <ThickCheckIcon className=\"rt-BaseMenuItemIndicatorIcon rt-ContextMenuItemIndicatorIcon\" />\n      </ContextMenuPrimitive.ItemIndicator>\n    </ContextMenuPrimitive.RadioItem>\n  );\n});\nContextMenuRadioItem.displayName = 'ContextMenu.RadioItem';\n\ntype ContextMenuCheckboxItemElement = React.ElementRef<typeof ContextMenuPrimitive.CheckboxItem>;\ntype ContextMenuCheckboxItemOwnProps = GetPropDefTypes<typeof contextMenuCheckboxItemPropDefs>;\ninterface ContextMenuCheckboxItemProps\n  extends\n    ComponentPropsWithout<typeof ContextMenuPrimitive.CheckboxItem, RemovedProps>,\n    ContextMenuCheckboxItemOwnProps {}\nconst ContextMenuCheckboxItem = React.forwardRef<\n  ContextMenuCheckboxItemElement,\n  ContextMenuCheckboxItemProps\n>((props, forwardedRef) => {\n  const {\n    children,\n    className,\n    shortcut,\n    color = contextMenuCheckboxItemPropDefs.color.default,\n    ...itemProps\n  } = props;\n  return (\n    <ContextMenuPrimitive.CheckboxItem\n      {...itemProps}\n      asChild={false}\n      ref={forwardedRef}\n      data-accent-color={color}\n      className={classNames(\n        'rt-BaseMenuItem',\n        'rt-BaseMenuCheckboxItem',\n        'rt-ContextMenuItem',\n        'rt-ContextMenuCheckboxItem',\n        className,\n      )}\n    >\n      <Slot.Slottable>{children}</Slot.Slottable>\n      <ContextMenuPrimitive.ItemIndicator className=\"rt-BaseMenuItemIndicator rt-ContextMenuItemIndicator\">\n        <ThickCheckIcon className=\"rt-BaseMenuItemIndicatorIcon rt-ContextMenuItemIndicatorIcon\" />\n      </ContextMenuPrimitive.ItemIndicator>\n      {shortcut && <div className=\"rt-BaseMenuShortcut rt-ContextMenuShortcut\">{shortcut}</div>}\n    </ContextMenuPrimitive.CheckboxItem>\n  );\n});\nContextMenuCheckboxItem.displayName = 'ContextMenu.CheckboxItem';\n\ninterface ContextMenuSubProps extends ComponentPropsWithout<\n  typeof ContextMenuPrimitive.Sub,\n  RemovedProps\n> {}\nconst ContextMenuSub: React.FC<ContextMenuSubProps> = (props) => (\n  <ContextMenuPrimitive.Sub {...props} />\n);\nContextMenuSub.displayName = 'ContextMenu.Sub';\n\ntype ContextMenuSubTriggerElement = React.ElementRef<typeof ContextMenuPrimitive.SubTrigger>;\ninterface ContextMenuSubTriggerProps extends ComponentPropsWithout<\n  typeof ContextMenuPrimitive.SubTrigger,\n  RemovedProps\n> {}\nconst ContextMenuSubTrigger = React.forwardRef<\n  ContextMenuSubTriggerElement,\n  ContextMenuSubTriggerProps\n>((props, forwardedRef) => {\n  const { className, children, ...subTriggerProps } = props;\n  return (\n    <ContextMenuPrimitive.SubTrigger\n      {...subTriggerProps}\n      asChild={false}\n      ref={forwardedRef}\n      className={classNames(\n        'rt-BaseMenuItem',\n        'rt-BaseMenuSubTrigger',\n        'rt-ContextMenuItem',\n        'rt-ContextMenuSubTrigger',\n        className,\n      )}\n    >\n      {children}\n      <div className=\"rt-BaseMenuShortcut rt-ContextMenuShortcut\">\n        <ThickChevronRightIcon className=\"rt-BaseMenuSubTriggerIcon rt-ContextMenuSubTriggerIcon\" />\n      </div>\n    </ContextMenuPrimitive.SubTrigger>\n  );\n});\nContextMenuSubTrigger.displayName = 'ContextMenu.SubTrigger';\n\ntype ContextMenuSubContentElement = React.ElementRef<typeof ContextMenuPrimitive.SubContent>;\ninterface ContextMenuSubContentProps extends ComponentPropsWithout<\n  typeof ContextMenuPrimitive.SubContent,\n  RemovedProps\n> {\n  container?: React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Portal>['container'];\n}\nconst ContextMenuSubContent = React.forwardRef<\n  ContextMenuSubContentElement,\n  ContextMenuSubContentProps\n>((props, forwardedRef) => {\n  const { size, variant, color, highContrast } = React.useContext(ContextMenuContentContext);\n  const { className, children, container, forceMount, ...subContentProps } = extractProps(\n    { size, variant, color, highContrast, ...props },\n    contextMenuContentPropDefs,\n  );\n  return (\n    <ContextMenuPrimitive.Portal container={container} forceMount={forceMount}>\n      <Theme asChild>\n        <ContextMenuPrimitive.SubContent\n          data-accent-color={color}\n          alignOffset={-Number(size) * 4}\n          // Side offset accounts for the outer solid box-shadow\n          sideOffset={1}\n          collisionPadding={10}\n          {...subContentProps}\n          asChild={false}\n          ref={forwardedRef}\n          className={classNames(\n            'rt-PopperContent',\n            'rt-BaseMenuContent',\n            'rt-BaseMenuSubContent',\n            'rt-ContextMenuContent',\n            'rt-ContextMenuSubContent',\n            className,\n          )}\n        >\n          <ScrollArea type=\"auto\">\n            <div className={classNames('rt-BaseMenuViewport', 'rt-ContextMenuViewport')}>\n              {children}\n            </div>\n          </ScrollArea>\n        </ContextMenuPrimitive.SubContent>\n      </Theme>\n    </ContextMenuPrimitive.Portal>\n  );\n});\nContextMenuSubContent.displayName = 'ContextMenu.SubContent';\n\ntype ContextMenuSeparatorElement = React.ElementRef<typeof ContextMenuPrimitive.Separator>;\ninterface ContextMenuSeparatorProps extends ComponentPropsWithout<\n  typeof ContextMenuPrimitive.Separator,\n  RemovedProps\n> {}\nconst ContextMenuSeparator = React.forwardRef<\n  ContextMenuSeparatorElement,\n  ContextMenuSeparatorProps\n>(({ className, ...props }, forwardedRef) => (\n  <ContextMenuPrimitive.Separator\n    {...props}\n    asChild={false}\n    ref={forwardedRef}\n    className={classNames('rt-BaseMenuSeparator', 'rt-ContextMenuSeparator', className)}\n  />\n));\nContextMenuSeparator.displayName = 'ContextMenu.Separator';\n\nexport {\n  ContextMenuRoot as Root,\n  ContextMenuTrigger as Trigger,\n  ContextMenuContent as Content,\n  ContextMenuLabel as Label,\n  ContextMenuItem as Item,\n  ContextMenuGroup as Group,\n  ContextMenuRadioGroup as RadioGroup,\n  ContextMenuRadioItem as RadioItem,\n  ContextMenuCheckboxItem as CheckboxItem,\n  ContextMenuSub as Sub,\n  ContextMenuSubTrigger as SubTrigger,\n  ContextMenuSubContent as SubContent,\n  ContextMenuSeparator as Separator,\n};\n\nexport type {\n  ContextMenuRootProps as RootProps,\n  ContextMenuTriggerProps as TriggerProps,\n  ContextMenuContentProps as ContentProps,\n  ContextMenuLabelProps as LabelProps,\n  ContextMenuItemProps as ItemProps,\n  ContextMenuGroupProps as GroupProps,\n  ContextMenuRadioGroupProps as RadioGroupProps,\n  ContextMenuRadioItemProps as RadioItemProps,\n  ContextMenuCheckboxItemProps as CheckboxItemProps,\n  ContextMenuSubProps as SubProps,\n  ContextMenuSubTriggerProps as SubTriggerProps,\n  ContextMenuSubContentProps as SubContentProps,\n  ContextMenuSeparatorProps as SeparatorProps,\n};\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/data-list.css",
    "content": ".rt-DataListRoot {\n  overflow-wrap: anywhere;\n  font-family: var(--default-font-family);\n  font-weight: var(--font-weight-normal);\n  font-style: normal;\n  text-align: start;\n}\n\n.rt-DataListLabel {\n  display: flex;\n  color: var(--gray-a11);\n\n  &:where(.rt-high-contrast) {\n    color: var(--gray-12);\n  }\n\n  &:where([data-accent-color]) {\n    color: var(--accent-a11);\n\n    &:where(.rt-high-contrast) {\n      color: var(--accent-12);\n    }\n  }\n}\n\n.rt-DataListValue {\n  display: flex;\n  margin: 0;\n\n  /* Ensure value can be truncated */\n  min-width: 0px;\n}\n\n/***************************************************************************************************\n *                                                                                                 *\n * ORIENTATION                                                                                     *\n *                                                                                                 *\n ***************************************************************************************************/\n\n.rt-DataListItem {\n  /* The actual margins that value part gets. These are re-assigned to other vars depending on the orientation */\n  --data-list-value-margin-top: 0px;\n  --data-list-value-margin-bottom: 0px;\n  --data-list-first-item-value-margin-top: 0px;\n  --data-list-last-item-value-margin-bottom: 0px;\n\n  /* How much the value part can poke outside of the row when in a horizontal data list */\n  --data-list-value-trim-start: -0.25em;\n  --data-list-value-trim-end: -0.25em;\n  --data-list-first-item-value-trim-start: 0px;\n  --data-list-last-item-value-trim-end: 0px;\n}\n\n.rt-DataListValue {\n  margin-top: var(--data-list-value-margin-top);\n  margin-bottom: var(--data-list-value-margin-bottom);\n\n  /*\n   * The first/last item should not poke out of the Root boundaries –\n   * unless it has \"align-items: center\", but that’s handled later.\n   */\n  :where(.rt-DataListItem:first-child) & {\n    margin-top: var(--data-list-first-item-value-margin-top);\n  }\n  :where(.rt-DataListItem:last-child) & {\n    margin-bottom: var(--data-list-last-item-value-margin-bottom);\n  }\n}\n\n/* * * * * * * * * * * * * * * * * * * */\n/*                                     */\n/*                Sizes                */\n/*                                     */\n/* * * * * * * * * * * * * * * * * * * */\n\n@breakpoints {\n  .rt-DataListRoot {\n    &:where(.rt-r-size-1) {\n      gap: var(--space-3);\n    }\n    &:where(.rt-r-size-2) {\n      gap: var(--space-4);\n    }\n    &:where(.rt-r-size-3) {\n      gap: calc(var(--space-4) * 1.25);\n    }\n  }\n}\n\n/* * * * * * * * * * * * * * * * * * * */\n/*                                     */\n/*             Orientation             */\n/*                                     */\n/* * * * * * * * * * * * * * * * * * * */\n\n@breakpoints {\n  .rt-DataListRoot {\n    &:where(.rt-r-orientation-vertical) {\n      display: flex;\n      flex-direction: column;\n\n      & :where(.rt-DataListItem) {\n        /* No poking out of the row when orientation is vertical */\n        --data-list-value-margin-top: 0px;\n        --data-list-value-margin-bottom: 0px;\n        --data-list-first-item-value-margin-top: 0px;\n        --data-list-last-item-value-margin-bottom: 0px;\n\n        display: flex;\n        flex-direction: column;\n        gap: var(--space-1);\n      }\n\n      & :where(.rt-DataListLabel) {\n        /* Ensure label can be truncated */\n        min-width: 0px;\n      }\n    }\n\n    &:where(.rt-r-orientation-horizontal) {\n      display: grid;\n      grid-template-columns: auto 1fr;\n\n      & :where(.rt-DataListItem) {\n        /* Allow the value to poke out of the row when orientation is horizontal */\n        --data-list-value-margin-top: var(--data-list-value-trim-start);\n        --data-list-value-margin-bottom: var(--data-list-value-trim-end);\n        --data-list-first-item-value-margin-top: var(--data-list-first-item-value-trim-start);\n        --data-list-last-item-value-margin-bottom: var(--data-list-last-item-value-trim-end);\n\n        display: grid;\n        /* Use subgrid so all the label columns remain aligned */\n        grid-template-columns: inherit; /* Fallback */\n        grid-template-columns: subgrid;\n        gap: inherit;\n        grid-column: span 2;\n        align-items: baseline;\n      }\n\n      & :where(.rt-DataListLabel) {\n        /* Set an implicit min. width when orientation is horizontal */\n        min-width: 120px;\n      }\n    }\n  }\n}\n\n/* * * * * * * * * * * * * * * * * * * */\n/*                                     */\n/*              Alignment              */\n/*                                     */\n/* * * * * * * * * * * * * * * * * * * */\n\n.rt-DataListLabel,\n.rt-DataListValue {\n  &::before {\n    /*\n     * Zero-width joiner to establish a baseline.\n     * Allows Flex children with text to align automatically.\n     */\n    content: '‍';\n  }\n}\n\n@breakpoints {\n  /*\n   * Make sure that the margin adjustments cooperate with \"align-items\".\n   * To do that, we need to remove the corresponding margin adjustment depending on the \"align-items\" value.\n   * We can't set `--data-list-value-margin-top` directly because at breakpoints it would lose the orientation value.\n   */\n  .rt-DataListItem {\n    /* Match the default: poke out at the top and bottom, but not when it’s the first or last item */\n    &:where(.rt-r-ai-baseline) {\n      --data-list-value-trim-start: -0.25em;\n      --data-list-value-trim-end: -0.25em;\n      --data-list-first-item-value-trim-start: 0px;\n      --data-list-last-item-value-trim-end: 0px;\n    }\n    /* No poking out at the top; and not at the bottom when it’s the first or last item */\n    &:where(.rt-r-ai-start) {\n      --data-list-value-trim-start: 0px;\n      --data-list-value-trim-end: -0.25em;\n      --data-list-first-item-value-trim-start: 0px;\n      --data-list-last-item-value-trim-end: 0px;\n    }\n    /* Allow to poke out from any side, as for centering to work the top and bottom margins have to be always equal */\n    &:where(.rt-r-ai-center) {\n      --data-list-value-trim-start: -0.25em;\n      --data-list-value-trim-end: -0.25em;\n      --data-list-first-item-value-trim-start: -0.25em;\n      --data-list-last-item-value-trim-end: -0.25em;\n    }\n    /* No poking out at the bottom; and not at the top when it’s the first or last item */\n    &:where(.rt-r-ai-end) {\n      --data-list-value-trim-start: -0.25em;\n      --data-list-value-trim-end: 0px;\n      --data-list-first-item-value-trim-start: 0px;\n      --data-list-last-item-value-trim-end: 0px;\n    }\n    /* No poking out when stretched */\n    &:where(.rt-r-ai-stretch) {\n      --data-list-value-trim-start: 0px;\n      --data-list-value-trim-end: 0px;\n      --data-list-first-item-value-trim-start: 0px;\n      --data-list-last-item-value-trim-end: 0px;\n    }\n  }\n}\n\n/* * * * * * * * * * * * * * * * * * * */\n/*                                     */\n/*                Trim                 */\n/*                                     */\n/* * * * * * * * * * * * * * * * * * * */\n\n.rt-DataListRoot {\n  --data-list-leading-trim-start: calc(var(--default-leading-trim-start) - var(--line-height) / 2);\n  --data-list-leading-trim-end: calc(var(--default-leading-trim-end) - var(--line-height) / 2);\n}\n\n.rt-DataListItem {\n  &:where(:first-child) {\n    margin-top: var(--leading-trim-start);\n  }\n  &:where(:last-child) {\n    margin-bottom: var(--leading-trim-end);\n  }\n}\n\n@breakpoints {\n  .rt-DataListRoot {\n    &:where(.rt-r-trim-normal) {\n      --leading-trim-start: initial;\n      --leading-trim-end: initial;\n    }\n    &:where(.rt-r-trim-start) {\n      --leading-trim-start: var(--data-list-leading-trim-start);\n      --leading-trim-end: initial;\n    }\n    &:where(.rt-r-trim-end) {\n      --leading-trim-start: initial;\n      --leading-trim-end: var(--data-list-leading-trim-end);\n    }\n    &:where(.rt-r-trim-both) {\n      --leading-trim-start: var(--data-list-leading-trim-start);\n      --leading-trim-end: var(--data-list-leading-trim-end);\n    }\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/data-list.props.tsx",
    "content": "import { colorPropDef } from '../props/color.prop.js';\nimport { highContrastPropDef } from '../props/high-contrast.prop.js';\nimport { leadingTrimPropDef } from '../props/leading-trim.prop.js';\nimport { widthPropDefs } from '../props/width.props.js';\n\nimport type { PropDef } from '../props/prop-def.js';\n\nconst alignValues = ['start', 'center', 'end', 'baseline', 'stretch'] as const;\nconst orientationValues = ['horizontal', 'vertical'] as const;\nconst sizes = ['1', '2', '3'] as const;\n\nconst dataListRootPropDefs = {\n  orientation: {\n    type: 'enum',\n    className: 'rt-r-orientation',\n    values: orientationValues,\n    default: 'horizontal',\n    responsive: true,\n  },\n  size: {\n    type: 'enum',\n    className: 'rt-r-size',\n    values: sizes,\n    default: '2',\n    responsive: true,\n  },\n  trim: {\n    ...leadingTrimPropDef.trim,\n    className: 'rt-r-trim', // Custom trim styles due to grid layout\n  },\n} satisfies {\n  orientation: PropDef<(typeof orientationValues)[number]>;\n  size: PropDef<(typeof sizes)[number]>;\n  trim: typeof leadingTrimPropDef.trim;\n};\n\nconst dataListItemPropDefs = {\n  align: {\n    type: 'enum',\n    className: 'rt-r-ai',\n    values: alignValues,\n    responsive: true,\n  },\n} satisfies {\n  align: PropDef<(typeof alignValues)[number]>;\n};\n\nconst dataListLabelPropDefs = {\n  ...widthPropDefs,\n  ...colorPropDef,\n  ...highContrastPropDef,\n};\n\nexport { dataListRootPropDefs, dataListItemPropDefs, dataListLabelPropDefs };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/data-list.tsx",
    "content": "import classNames from 'classnames';\nimport * as React from 'react';\n\nimport { Text } from './text.js';\nimport {\n  dataListRootPropDefs,\n  dataListItemPropDefs,\n  dataListLabelPropDefs,\n} from './data-list.props.js';\nimport { extractProps } from '../helpers/extract-props.js';\nimport { marginPropDefs } from '../props/margin.props.js';\n\nimport type { MarginProps } from '../props/margin.props.js';\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\nimport type { GetPropDefTypes } from '../props/prop-def.js';\n\ntype DataListRootElement = HTMLDListElement;\ntype DataListRootOwnProps = GetPropDefTypes<typeof dataListRootPropDefs>;\ninterface DataListRootProps\n  extends ComponentPropsWithout<'dl', RemovedProps>, MarginProps, DataListRootOwnProps {}\nconst DataListRoot = React.forwardRef<DataListRootElement, DataListRootProps>(\n  (props, forwardedRef) => {\n    const { className, ...dataListProps } = extractProps(\n      props,\n      dataListRootPropDefs,\n      marginPropDefs,\n    );\n    return (\n      <Text asChild>\n        <dl\n          {...dataListProps}\n          ref={forwardedRef}\n          className={classNames('rt-DataListRoot', className)}\n        />\n      </Text>\n    );\n  },\n);\nDataListRoot.displayName = 'DataList.Root';\n\ntype DataListItemElement = HTMLDivElement;\ntype DataListItemOwnProps = GetPropDefTypes<typeof dataListItemPropDefs>;\ninterface DataListItemProps\n  extends ComponentPropsWithout<'div', RemovedProps>, DataListItemOwnProps {}\nconst DataListItem = React.forwardRef<DataListItemElement, DataListItemProps>(\n  (props, forwardedRef) => {\n    const { className, ...itemProps } = extractProps(props, dataListItemPropDefs);\n    return (\n      <div {...itemProps} ref={forwardedRef} className={classNames('rt-DataListItem', className)} />\n    );\n  },\n);\nDataListItem.displayName = 'DataList.Item';\n\ntype DataListLabelElement = React.ElementRef<'dt'>;\ntype DataListLabelOwnProps = GetPropDefTypes<typeof dataListLabelPropDefs>;\ninterface DataListLabelProps\n  extends ComponentPropsWithout<'dt', RemovedProps>, DataListLabelOwnProps {}\nconst DataListLabel = React.forwardRef<DataListLabelElement, DataListLabelProps>(\n  (props, forwardedRef) => {\n    const { className, color, ...labelProps } = extractProps(props, dataListLabelPropDefs);\n    return (\n      <dt\n        {...labelProps}\n        data-accent-color={color}\n        ref={forwardedRef}\n        className={classNames('rt-DataListLabel', className)}\n      />\n    );\n  },\n);\nDataListLabel.displayName = 'DataList.Label';\n\ntype DataListValueElement = React.ElementRef<'dd'>;\ninterface DataListValueProps extends ComponentPropsWithout<'dd', RemovedProps> {}\nconst DataListValue = React.forwardRef<DataListValueElement, DataListValueProps>(\n  ({ children, className, ...props }, forwardedRef) => (\n    <dd {...props} ref={forwardedRef} className={classNames(className, 'rt-DataListValue')}>\n      {children}\n    </dd>\n  ),\n);\nDataListValue.displayName = 'DataList.Value';\n\nexport {\n  DataListRoot as Root,\n  DataListItem as Item,\n  DataListLabel as Label,\n  DataListValue as Value,\n};\nexport type {\n  DataListRootProps as RootProps,\n  DataListItemProps as ItemProps,\n  DataListLabelProps as LabelProps,\n  DataListValueProps as ValueProps,\n};\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/dialog.css",
    "content": "@import './_internal/base-dialog.css';\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/dialog.props.tsx",
    "content": "import { asChildPropDef } from '../props/as-child.prop.js';\nimport { widthPropDefs } from '../props/width.props.js';\nimport { heightPropDefs } from '../props/height.props.js';\n\nimport type { PropDef, GetPropDefTypes } from '../props/prop-def.js';\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst alignValues = ['start', 'center'] as const;\nconst contentSizes = ['1', '2', '3', '4'] as const;\n\nconst dialogContentPropDefs = {\n  ...asChildPropDef,\n  align: {\n    type: 'enum',\n    className: 'rt-r-align',\n    values: ['start', 'center'],\n    default: 'center',\n  },\n  size: {\n    type: 'enum',\n    className: 'rt-r-size',\n    values: contentSizes,\n    default: '3',\n    responsive: true,\n  },\n  width: widthPropDefs.width,\n  minWidth: widthPropDefs.minWidth,\n  maxWidth: { ...widthPropDefs.maxWidth, default: '600px' },\n  ...heightPropDefs,\n} satisfies {\n  align: PropDef<(typeof alignValues)[number]>;\n  size: PropDef<(typeof contentSizes)[number]>;\n  width: PropDef<string>;\n  minWidth: PropDef<string>;\n  maxWidth: PropDef<string>;\n};\n\ntype DialogContentOwnProps = GetPropDefTypes<\n  typeof dialogContentPropDefs & typeof asChildPropDef & typeof widthPropDefs\n>;\n\nexport { dialogContentPropDefs };\nexport type { DialogContentOwnProps };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/dialog.tsx",
    "content": "import * as React from 'react';\nimport classNames from 'classnames';\nimport { Dialog as DialogPrimitive } from 'radix-ui';\n\nimport { dialogContentPropDefs } from './dialog.props.js';\nimport { Heading } from './heading.js';\nimport { Text } from './text.js';\nimport { Theme } from './theme.js';\nimport { extractProps } from '../helpers/extract-props.js';\nimport { requireReactElement } from '../helpers/require-react-element.js';\n\nimport type { DialogContentOwnProps } from './dialog.props.js';\nimport type {\n  ComponentPropsWithout,\n  RemovedProps,\n  ComponentPropsAs,\n} from '../helpers/component-props.js';\n\ninterface DialogRootProps extends ComponentPropsWithout<typeof DialogPrimitive.Root, 'modal'> {}\nconst DialogRoot: React.FC<DialogRootProps> = (props) => <DialogPrimitive.Root {...props} modal />;\nDialogRoot.displayName = 'Dialog.Root';\n\ntype DialogTriggerElement = React.ElementRef<typeof DialogPrimitive.Trigger>;\ninterface DialogTriggerProps extends ComponentPropsWithout<\n  typeof DialogPrimitive.Trigger,\n  RemovedProps\n> {}\nconst DialogTrigger = React.forwardRef<DialogTriggerElement, DialogTriggerProps>(\n  ({ children, ...props }, forwardedRef) => (\n    <DialogPrimitive.Trigger {...props} ref={forwardedRef} asChild>\n      {requireReactElement(children)}\n    </DialogPrimitive.Trigger>\n  ),\n);\nDialogTrigger.displayName = 'Dialog.Trigger';\n\ntype DialogContentElement = React.ElementRef<typeof DialogPrimitive.Content>;\ninterface DialogContentProps\n  extends\n    ComponentPropsWithout<typeof DialogPrimitive.Content, RemovedProps>,\n    DialogContentOwnProps {\n  container?: React.ComponentPropsWithoutRef<typeof DialogPrimitive.Portal>['container'];\n}\nconst DialogContent = React.forwardRef<DialogContentElement, DialogContentProps>(\n  ({ align, ...props }, forwardedRef) => {\n    const { align: alignPropDef, ...propDefs } = dialogContentPropDefs;\n    const { className: alignClassName } = extractProps({ align }, { align: alignPropDef });\n    const { className, forceMount, container, ...contentProps } = extractProps(props, propDefs);\n    return (\n      <DialogPrimitive.Portal container={container} forceMount={forceMount}>\n        <Theme asChild>\n          <DialogPrimitive.Overlay className=\"rt-BaseDialogOverlay rt-DialogOverlay\">\n            <div className=\"rt-BaseDialogScroll rt-DialogScroll\">\n              <div\n                className={`rt-BaseDialogScrollPadding rt-DialogScrollPadding ${alignClassName}`}\n              >\n                <DialogPrimitive.Content\n                  {...contentProps}\n                  ref={forwardedRef}\n                  className={classNames('rt-BaseDialogContent', 'rt-DialogContent', className)}\n                />\n              </div>\n            </div>\n          </DialogPrimitive.Overlay>\n        </Theme>\n      </DialogPrimitive.Portal>\n    );\n  },\n);\nDialogContent.displayName = 'Dialog.Content';\n\ntype DialogTitleElement = React.ElementRef<typeof Heading>;\ntype DialogTitleProps = ComponentPropsWithout<typeof Heading, 'asChild'>;\nconst DialogTitle = React.forwardRef<DialogTitleElement, DialogTitleProps>(\n  (props, forwardedRef) => (\n    <DialogPrimitive.Title asChild>\n      <Heading size=\"5\" mb=\"3\" trim=\"start\" {...props} asChild={false} ref={forwardedRef} />\n    </DialogPrimitive.Title>\n  ),\n);\nDialogTitle.displayName = 'Dialog.Title';\n\ntype DialogDescriptionElement = HTMLParagraphElement;\ntype DialogDescriptionProps = ComponentPropsAs<typeof Text, 'p'>;\nconst DialogDescription = React.forwardRef<DialogDescriptionElement, DialogDescriptionProps>(\n  (props, forwardedRef) => (\n    <DialogPrimitive.Description asChild>\n      <Text as=\"p\" size=\"3\" {...props} asChild={false} ref={forwardedRef} />\n    </DialogPrimitive.Description>\n  ),\n);\nDialogDescription.displayName = 'Dialog.Description';\n\ntype DialogCloseElement = React.ElementRef<typeof DialogPrimitive.Close>;\ninterface DialogCloseProps extends ComponentPropsWithout<\n  typeof DialogPrimitive.Close,\n  RemovedProps\n> {}\nconst DialogClose = React.forwardRef<DialogCloseElement, DialogCloseProps>(\n  ({ children, ...props }, forwardedRef) => (\n    <DialogPrimitive.Close {...props} ref={forwardedRef} asChild>\n      {requireReactElement(children)}\n    </DialogPrimitive.Close>\n  ),\n);\nDialogClose.displayName = 'Dialog.Close';\n\nexport {\n  DialogRoot as Root,\n  DialogTrigger as Trigger,\n  DialogContent as Content,\n  DialogTitle as Title,\n  DialogDescription as Description,\n  DialogClose as Close,\n};\n\nexport type {\n  DialogRootProps as RootProps,\n  DialogTriggerProps as TriggerProps,\n  DialogContentProps as ContentProps,\n  DialogTitleProps as TitleProps,\n  DialogDescriptionProps as DescriptionProps,\n  DialogCloseProps as CloseProps,\n};\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/dropdown-menu.css",
    "content": "@import './_internal/base-menu.css';\n\n.rt-DropdownMenuContent {\n  max-height: var(--radix-dropdown-menu-content-available-height);\n  transform-origin: var(--radix-dropdown-menu-content-transform-origin);\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/dropdown-menu.props.tsx",
    "content": "export {\n  baseMenuContentPropDefs as dropdownMenuContentPropDefs,\n  baseMenuItemPropDefs as dropdownMenuItemPropDefs,\n  baseMenuCheckboxItemPropDefs as dropdownMenuCheckboxItemPropDefs,\n  baseMenuRadioItemPropDefs as dropdownMenuRadioItemPropDefs,\n} from './_internal/base-menu.props.js';\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/dropdown-menu.tsx",
    "content": "'use client';\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { DropdownMenu as DropdownMenuPrimitive, Slot } from 'radix-ui';\n\nimport { ScrollArea } from './scroll-area.js';\nimport {\n  dropdownMenuContentPropDefs,\n  dropdownMenuItemPropDefs,\n  dropdownMenuCheckboxItemPropDefs,\n  dropdownMenuRadioItemPropDefs,\n} from './dropdown-menu.props.js';\nimport { Theme, useThemeContext } from './theme.js';\nimport { ChevronDownIcon, ThickCheckIcon, ThickChevronRightIcon } from './icons.js';\nimport { extractProps } from '../helpers/extract-props.js';\nimport { requireReactElement } from '../helpers/require-react-element.js';\n\nimport type { IconProps } from './icons.js';\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\nimport type { GetPropDefTypes } from '../props/prop-def.js';\n\ninterface DropdownMenuRootProps extends React.ComponentPropsWithoutRef<\n  typeof DropdownMenuPrimitive.Root\n> {}\nconst DropdownMenuRoot: React.FC<DropdownMenuRootProps> = (props) => (\n  <DropdownMenuPrimitive.Root {...props} />\n);\nDropdownMenuRoot.displayName = 'DropdownMenu.Root';\n\ntype DropdownMenuTriggerElement = React.ElementRef<typeof DropdownMenuPrimitive.Trigger>;\ninterface DropdownMenuTriggerProps extends ComponentPropsWithout<\n  typeof DropdownMenuPrimitive.Trigger,\n  RemovedProps\n> {}\nconst DropdownMenuTrigger = React.forwardRef<DropdownMenuTriggerElement, DropdownMenuTriggerProps>(\n  ({ children, ...props }, forwardedRef) => (\n    <DropdownMenuPrimitive.Trigger {...props} ref={forwardedRef} asChild>\n      {requireReactElement(children)}\n    </DropdownMenuPrimitive.Trigger>\n  ),\n);\nDropdownMenuTrigger.displayName = 'DropdownMenu.Trigger';\n\ntype DropdownMenuContentOwnProps = GetPropDefTypes<typeof dropdownMenuContentPropDefs>;\ntype DropdownMenuContentContextValue = DropdownMenuContentOwnProps;\nconst DropdownMenuContentContext = React.createContext<DropdownMenuContentContextValue>({});\ntype DropdownMenuContentElement = React.ElementRef<typeof DropdownMenuPrimitive.Content>;\ninterface DropdownMenuContentProps\n  extends\n    ComponentPropsWithout<typeof DropdownMenuPrimitive.Content, RemovedProps>,\n    DropdownMenuContentContextValue {\n  container?: React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Portal>['container'];\n}\nconst DropdownMenuContent = React.forwardRef<DropdownMenuContentElement, DropdownMenuContentProps>(\n  (props, forwardedRef) => {\n    const themeContext = useThemeContext();\n    const {\n      size = dropdownMenuContentPropDefs.size.default,\n      variant = dropdownMenuContentPropDefs.variant.default,\n      highContrast = dropdownMenuContentPropDefs.highContrast.default,\n    } = props;\n    const { className, children, color, container, forceMount, ...contentProps } = extractProps(\n      props,\n      dropdownMenuContentPropDefs,\n    );\n    const resolvedColor = color || themeContext.accentColor;\n    return (\n      <DropdownMenuPrimitive.Portal container={container} forceMount={forceMount}>\n        <Theme asChild>\n          <DropdownMenuPrimitive.Content\n            data-accent-color={resolvedColor}\n            align=\"start\"\n            sideOffset={4}\n            collisionPadding={10}\n            {...contentProps}\n            asChild={false}\n            ref={forwardedRef}\n            className={classNames(\n              'rt-PopperContent',\n              'rt-BaseMenuContent',\n              'rt-DropdownMenuContent',\n              className,\n            )}\n          >\n            <ScrollArea type=\"auto\">\n              <div className={classNames('rt-BaseMenuViewport', 'rt-DropdownMenuViewport')}>\n                <DropdownMenuContentContext.Provider\n                  value={React.useMemo(\n                    () => ({ size, variant, color: resolvedColor, highContrast }),\n                    [size, variant, resolvedColor, highContrast],\n                  )}\n                >\n                  {children}\n                </DropdownMenuContentContext.Provider>\n              </div>\n            </ScrollArea>\n          </DropdownMenuPrimitive.Content>\n        </Theme>\n      </DropdownMenuPrimitive.Portal>\n    );\n  },\n);\nDropdownMenuContent.displayName = 'DropdownMenu.Content';\n\ntype DropdownMenuLabelElement = React.ElementRef<typeof DropdownMenuPrimitive.Label>;\ninterface DropdownMenuLabelProps extends ComponentPropsWithout<\n  typeof DropdownMenuPrimitive.Label,\n  RemovedProps\n> {}\nconst DropdownMenuLabel = React.forwardRef<DropdownMenuLabelElement, DropdownMenuLabelProps>(\n  ({ className, ...props }, forwardedRef) => (\n    <DropdownMenuPrimitive.Label\n      {...props}\n      asChild={false}\n      ref={forwardedRef}\n      className={classNames('rt-BaseMenuLabel', 'rt-DropdownMenuLabel', className)}\n    />\n  ),\n);\nDropdownMenuLabel.displayName = 'DropdownMenu.Label';\n\ntype DropdownMenuItemElement = React.ElementRef<typeof DropdownMenuPrimitive.Item>;\ntype DropdownMenuItemOwnProps = GetPropDefTypes<typeof dropdownMenuItemPropDefs>;\ninterface DropdownMenuItemProps\n  extends\n    ComponentPropsWithout<typeof DropdownMenuPrimitive.Item, RemovedProps>,\n    DropdownMenuItemOwnProps {}\nconst DropdownMenuItem = React.forwardRef<DropdownMenuItemElement, DropdownMenuItemProps>(\n  (props, forwardedRef) => {\n    const {\n      className,\n      children,\n      color = dropdownMenuItemPropDefs.color.default,\n      shortcut,\n      ...itemProps\n    } = props;\n    return (\n      <DropdownMenuPrimitive.Item\n        data-accent-color={color}\n        {...itemProps}\n        ref={forwardedRef}\n        className={classNames('rt-reset', 'rt-BaseMenuItem', 'rt-DropdownMenuItem', className)}\n      >\n        <Slot.Slottable>{children}</Slot.Slottable>\n        {shortcut && <div className=\"rt-BaseMenuShortcut rt-DropdownMenuShortcut\">{shortcut}</div>}\n      </DropdownMenuPrimitive.Item>\n    );\n  },\n);\nDropdownMenuItem.displayName = 'DropdownMenu.Item';\n\ntype DropdownMenuGroupElement = React.ElementRef<typeof DropdownMenuPrimitive.Group>;\ninterface DropdownMenuGroupProps extends ComponentPropsWithout<\n  typeof DropdownMenuPrimitive.Group,\n  RemovedProps\n> {}\nconst DropdownMenuGroup = React.forwardRef<DropdownMenuGroupElement, DropdownMenuGroupProps>(\n  ({ className, ...props }, forwardedRef) => (\n    <DropdownMenuPrimitive.Group\n      {...props}\n      asChild={false}\n      ref={forwardedRef}\n      className={classNames('rt-BaseMenuGroup', 'rt-DropdownMenuGroup', className)}\n    />\n  ),\n);\nDropdownMenuGroup.displayName = 'DropdownMenu.Group';\n\ntype DropdownMenuRadioGroupElement = React.ElementRef<typeof DropdownMenuPrimitive.RadioGroup>;\ninterface DropdownMenuRadioGroupProps extends ComponentPropsWithout<\n  typeof DropdownMenuPrimitive.RadioGroup,\n  RemovedProps\n> {}\nconst DropdownMenuRadioGroup = React.forwardRef<\n  DropdownMenuRadioGroupElement,\n  DropdownMenuRadioGroupProps\n>(({ className, ...props }, forwardedRef) => (\n  <DropdownMenuPrimitive.RadioGroup\n    {...props}\n    asChild={false}\n    ref={forwardedRef}\n    className={classNames('rt-BaseMenuRadioGroup', 'rt-DropdownMenuRadioGroup', className)}\n  />\n));\nDropdownMenuRadioGroup.displayName = 'DropdownMenu.RadioGroup';\n\ntype DropdownMenuRadioItemElement = React.ElementRef<typeof DropdownMenuPrimitive.RadioItem>;\ntype DropdownMenuRadioItemOwnProps = GetPropDefTypes<typeof dropdownMenuRadioItemPropDefs>;\ninterface DropdownMenuRadioItemProps\n  extends\n    ComponentPropsWithout<typeof DropdownMenuPrimitive.RadioItem, RemovedProps>,\n    DropdownMenuRadioItemOwnProps {}\nconst DropdownMenuRadioItem = React.forwardRef<\n  DropdownMenuRadioItemElement,\n  DropdownMenuRadioItemProps\n>((props, forwardedRef) => {\n  const {\n    children,\n    className,\n    color = dropdownMenuRadioItemPropDefs.color.default,\n    ...itemProps\n  } = props;\n  return (\n    <DropdownMenuPrimitive.RadioItem\n      {...itemProps}\n      asChild={false}\n      ref={forwardedRef}\n      data-accent-color={color}\n      className={classNames(\n        'rt-BaseMenuItem',\n        'rt-BaseMenuRadioItem',\n        'rt-DropdownMenuItem',\n        'rt-DropdownMenuRadioItem',\n        className,\n      )}\n    >\n      {children}\n      <DropdownMenuPrimitive.ItemIndicator className=\"rt-BaseMenuItemIndicator rt-DropdownMenuItemIndicator\">\n        <ThickCheckIcon className=\"rt-BaseMenuItemIndicatorIcon rt-DropdownMenuItemIndicatorIcon\" />\n      </DropdownMenuPrimitive.ItemIndicator>\n    </DropdownMenuPrimitive.RadioItem>\n  );\n});\nDropdownMenuRadioItem.displayName = 'DropdownMenu.RadioItem';\n\ntype DropdownMenuCheckboxItemElement = React.ElementRef<typeof DropdownMenuPrimitive.CheckboxItem>;\ntype DropdownMenuCheckboxItemOwnProps = GetPropDefTypes<typeof dropdownMenuCheckboxItemPropDefs>;\ninterface DropdownMenuCheckboxItemProps\n  extends\n    ComponentPropsWithout<typeof DropdownMenuPrimitive.CheckboxItem, RemovedProps>,\n    DropdownMenuCheckboxItemOwnProps {}\nconst DropdownMenuCheckboxItem = React.forwardRef<\n  DropdownMenuCheckboxItemElement,\n  DropdownMenuCheckboxItemProps\n>((props, forwardedRef) => {\n  const {\n    children,\n    className,\n    shortcut,\n    color = dropdownMenuCheckboxItemPropDefs.color.default,\n    ...itemProps\n  } = props;\n  return (\n    <DropdownMenuPrimitive.CheckboxItem\n      {...itemProps}\n      asChild={false}\n      ref={forwardedRef}\n      data-accent-color={color}\n      className={classNames(\n        'rt-BaseMenuItem',\n        'rt-BaseMenuCheckboxItem',\n        'rt-DropdownMenuItem',\n        'rt-DropdownMenuCheckboxItem',\n        className,\n      )}\n    >\n      {children}\n      <DropdownMenuPrimitive.ItemIndicator className=\"rt-BaseMenuItemIndicator rt-DropdownMenuItemIndicator\">\n        <ThickCheckIcon className=\"rt-BaseMenuItemIndicatorIcon rt-ContextMenuItemIndicatorIcon\" />\n      </DropdownMenuPrimitive.ItemIndicator>\n      {shortcut && <div className=\"rt-BaseMenuShortcut rt-DropdownMenuShortcut\">{shortcut}</div>}\n    </DropdownMenuPrimitive.CheckboxItem>\n  );\n});\nDropdownMenuCheckboxItem.displayName = 'DropdownMenu.CheckboxItem';\n\ninterface DropdownMenuSubProps extends React.ComponentPropsWithoutRef<\n  typeof DropdownMenuPrimitive.Sub\n> {}\nconst DropdownMenuSub: React.FC<DropdownMenuSubProps> = (props) => (\n  <DropdownMenuPrimitive.Sub {...props} />\n);\nDropdownMenuSub.displayName = 'DropdownMenu.Sub';\n\ntype DropdownMenuSubTriggerElement = React.ElementRef<typeof DropdownMenuPrimitive.SubTrigger>;\ninterface DropdownMenuSubTriggerProps extends ComponentPropsWithout<\n  typeof DropdownMenuPrimitive.SubTrigger,\n  RemovedProps\n> {}\nconst DropdownMenuSubTrigger = React.forwardRef<\n  DropdownMenuSubTriggerElement,\n  DropdownMenuSubTriggerProps\n>((props, forwardedRef) => {\n  const { className, children, ...subTriggerProps } = props;\n  return (\n    <DropdownMenuPrimitive.SubTrigger\n      {...subTriggerProps}\n      asChild={false}\n      ref={forwardedRef}\n      className={classNames(\n        'rt-BaseMenuItem',\n        'rt-BaseMenuSubTrigger',\n        'rt-DropdownMenuItem',\n        'rt-DropdownMenuSubTrigger',\n        className,\n      )}\n    >\n      {children}\n      <div className=\"rt-BaseMenuShortcut rt-DropdownMenuShortcut\">\n        <ThickChevronRightIcon className=\"rt-BaseMenuSubTriggerIcon rt-DropdownMenuSubtriggerIcon\" />\n      </div>\n    </DropdownMenuPrimitive.SubTrigger>\n  );\n});\nDropdownMenuSubTrigger.displayName = 'DropdownMenu.SubTrigger';\n\ntype DropdownMenuSubContentElement = React.ElementRef<typeof DropdownMenuPrimitive.SubContent>;\ninterface DropdownMenuSubContentProps extends ComponentPropsWithout<\n  typeof DropdownMenuPrimitive.SubContent,\n  RemovedProps\n> {\n  container?: React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Portal>['container'];\n}\nconst DropdownMenuSubContent = React.forwardRef<\n  DropdownMenuSubContentElement,\n  DropdownMenuSubContentProps\n>((props, forwardedRef) => {\n  const { size, variant, color, highContrast } = React.useContext(DropdownMenuContentContext);\n  const { className, children, container, forceMount, ...subContentProps } = extractProps(\n    { size, variant, color, highContrast, ...props },\n    dropdownMenuContentPropDefs,\n  );\n  return (\n    <DropdownMenuPrimitive.Portal container={container} forceMount={forceMount}>\n      <Theme asChild>\n        <DropdownMenuPrimitive.SubContent\n          data-accent-color={color}\n          alignOffset={-Number(size) * 4}\n          // Side offset accounts for the outer solid box-shadow\n          sideOffset={1}\n          collisionPadding={10}\n          {...subContentProps}\n          asChild={false}\n          ref={forwardedRef}\n          className={classNames(\n            'rt-PopperContent',\n            'rt-BaseMenuContent',\n            'rt-BaseMenuSubContent',\n            'rt-DropdownMenuContent',\n            'rt-DropdownMenuSubContent',\n            className,\n          )}\n        >\n          <ScrollArea type=\"auto\">\n            <div className={classNames('rt-BaseMenuViewport', 'rt-DropdownMenuViewport')}>\n              {children}\n            </div>\n          </ScrollArea>\n        </DropdownMenuPrimitive.SubContent>\n      </Theme>\n    </DropdownMenuPrimitive.Portal>\n  );\n});\nDropdownMenuSubContent.displayName = 'DropdownMenu.SubContent';\n\ntype DropdownMenuSeparatorElement = React.ElementRef<typeof DropdownMenuPrimitive.Separator>;\ninterface DropdownMenuSeparatorProps extends ComponentPropsWithout<\n  typeof DropdownMenuPrimitive.Separator,\n  RemovedProps\n> {}\nconst DropdownMenuSeparator = React.forwardRef<\n  DropdownMenuSeparatorElement,\n  DropdownMenuSeparatorProps\n>(({ className, ...props }, forwardedRef) => (\n  <DropdownMenuPrimitive.Separator\n    {...props}\n    asChild={false}\n    ref={forwardedRef}\n    className={classNames('rt-BaseMenuSeparator', 'rt-DropdownMenuSeparator', className)}\n  />\n));\nDropdownMenuSeparator.displayName = 'DropdownMenu.Separator';\n\nexport {\n  DropdownMenuRoot as Root,\n  DropdownMenuTrigger as Trigger,\n  ChevronDownIcon as TriggerIcon,\n  DropdownMenuContent as Content,\n  DropdownMenuLabel as Label,\n  DropdownMenuItem as Item,\n  DropdownMenuGroup as Group,\n  DropdownMenuRadioGroup as RadioGroup,\n  DropdownMenuRadioItem as RadioItem,\n  DropdownMenuCheckboxItem as CheckboxItem,\n  DropdownMenuSub as Sub,\n  DropdownMenuSubTrigger as SubTrigger,\n  DropdownMenuSubContent as SubContent,\n  DropdownMenuSeparator as Separator,\n};\n\nexport type {\n  DropdownMenuRootProps as RootProps,\n  DropdownMenuTriggerProps as TriggerProps,\n  IconProps as TriggerIconProps,\n  DropdownMenuContentProps as ContentProps,\n  DropdownMenuLabelProps as LabelProps,\n  DropdownMenuItemProps as ItemProps,\n  DropdownMenuGroupProps as GroupProps,\n  DropdownMenuRadioGroupProps as RadioGroupProps,\n  DropdownMenuRadioItemProps as RadioItemProps,\n  DropdownMenuCheckboxItemProps as CheckboxItemProps,\n  DropdownMenuSubProps as SubProps,\n  DropdownMenuSubTriggerProps as SubTriggerProps,\n  DropdownMenuSubContentProps as SubContentProps,\n  DropdownMenuSeparatorProps as SeparatorProps,\n};\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/em.css",
    "content": ".rt-Em {\n  box-sizing: border-box;\n  font-family: var(--em-font-family);\n  font-size: calc(var(--em-font-size-adjust) * 1em);\n  font-style: var(--em-font-style);\n  font-weight: var(--em-font-weight);\n  line-height: 1.25;\n  letter-spacing: calc(var(--em-letter-spacing) + var(--letter-spacing, var(--default-letter-spacing)));\n  color: inherit;\n\n  & :where(&) {\n    font-size: inherit;\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/em.props.tsx",
    "content": "import { asChildPropDef } from '../props/as-child.prop.js';\nimport { textWrapPropDef } from '../props/text-wrap.prop.js';\nimport { truncatePropDef } from '../props/truncate.prop.js';\n\nconst emPropDefs = {\n  ...asChildPropDef,\n  ...truncatePropDef,\n  ...textWrapPropDef,\n};\n\nexport { emPropDefs };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/em.tsx",
    "content": "import * as React from 'react';\nimport classNames from 'classnames';\nimport { Slot } from 'radix-ui';\n\nimport { emPropDefs } from './em.props.js';\nimport { extractProps } from '../helpers/extract-props.js';\n\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\nimport type { GetPropDefTypes } from '../props/prop-def.js';\n\ntype EmElement = React.ElementRef<'em'>;\ntype EmOwnProps = GetPropDefTypes<typeof emPropDefs>;\ninterface EmProps extends ComponentPropsWithout<'em', RemovedProps>, EmOwnProps {}\nconst Em = React.forwardRef<EmElement, EmProps>((props, forwardedRef) => {\n  const { asChild, className, ...emProps } = extractProps(props, emPropDefs);\n  const Comp = asChild ? Slot.Root : 'em';\n  return <Comp {...emProps} ref={forwardedRef} className={classNames('rt-Em', className)} />;\n});\nEm.displayName = 'Em';\n\nexport { Em };\nexport type { EmProps };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/flex.css",
    "content": ".rt-Flex {\n  box-sizing: border-box;\n\n  /* Default values to provide the initial styles in the object syntax, e.g. `<Flex display={{ md: 'none' }} />` */\n  display: flex;\n  justify-content: flex-start;\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/flex.props.tsx",
    "content": "import { asChildPropDef } from '../props/as-child.prop.js';\nimport { gapPropDefs } from '../props/gap.props.js';\n\nimport type { PropDef, GetPropDefTypes } from '../props/prop-def.js';\n\nconst as = ['div', 'span'] as const;\nconst displayValues = ['none', 'inline-flex', 'flex'] as const;\nconst directionValues = ['row', 'column', 'row-reverse', 'column-reverse'] as const;\nconst alignValues = ['start', 'center', 'end', 'baseline', 'stretch'] as const;\nconst justifyValues = ['start', 'center', 'end', 'between'] as const;\nconst wrapValues = ['nowrap', 'wrap', 'wrap-reverse'] as const;\n\nconst flexPropDefs = {\n  /**\n   * Controls whether to render **div** or **span**\n   *\n   * @example\n   * as=\"div\"\n   * as=\"span\"\n   */\n  as: { type: 'enum', values: as, default: 'div' },\n  ...asChildPropDef,\n  /**\n   * Sets the CSS **display** property.\n   * Supports a subset of the corresponding CSS values and responsive objects.\n   *\n   * @example\n   * display=\"inline-flex\"\n   * display={{ sm: 'none', lg: 'flex' }}\n   *\n   * @link\n   * https://developer.mozilla.org/en-US/docs/Web/CSS/display\n   */\n  display: {\n    type: 'enum',\n    className: 'rt-r-display',\n    values: displayValues,\n    responsive: true,\n  },\n  /**\n   * Sets the CSS **flex-direction** property.\n   * Supports the corresponding CSS values and responsive objects.\n   *\n   * @example\n   * direction=\"column\"\n   * direction={{ sm: 'column', lg: 'row' }}\n   *\n   * @link\n   * https://developer.mozilla.org/en-US/docs/Web/CSS/flex-direction\n   */\n  direction: {\n    type: 'enum',\n    className: 'rt-r-fd',\n    values: directionValues,\n    responsive: true,\n  },\n  /**\n   * Sets the CSS **align-items** property.\n   * Supports the corresponding CSS values and responsive objects.\n   *\n   * @example\n   * align=\"center\"\n   * align={{ sm: 'baseline', lg: 'center' }}\n   *\n   * @link\n   * https://developer.mozilla.org/en-US/docs/Web/CSS/align-items\n   */\n  align: {\n    type: 'enum',\n    className: 'rt-r-ai',\n    values: alignValues,\n    responsive: true,\n  },\n  /**\n   * Sets the CSS **justify-content** property.\n   * Supports a subset of the corresponding CSS values and responsive objects.\n   *\n   * @example\n   * justify=\"between\"\n   * justify={{ sm: 'start', lg: 'center' }}\n   *\n   * @link\n   * https://developer.mozilla.org/en-US/docs/Web/CSS/justify-content\n   */\n  justify: {\n    type: 'enum',\n    className: 'rt-r-jc',\n    values: justifyValues,\n    parseValue: parseJustifyValue,\n    responsive: true,\n  },\n  /**\n   * Sets the CSS **flex-wrap** property.\n   * Supports the corresponding CSS values and responsive objects.\n   *\n   * @example\n   * wrap=\"wrap\"\n   * wrap={{ sm: 'wrap', lg: 'nowrap' }}\n   *\n   * @link\n   * https://developer.mozilla.org/en-US/docs/Web/CSS/flex-wrap\n   */\n  wrap: {\n    type: 'enum',\n    className: 'rt-r-fw',\n    values: wrapValues,\n    responsive: true,\n  },\n  ...gapPropDefs,\n} satisfies {\n  as: PropDef<(typeof as)[number]>;\n  display: PropDef<(typeof displayValues)[number]>;\n  direction: PropDef<(typeof directionValues)[number]>;\n  align: PropDef<(typeof alignValues)[number]>;\n  justify: PropDef<(typeof justifyValues)[number]>;\n  wrap: PropDef<(typeof wrapValues)[number]>;\n};\n\nfunction parseJustifyValue(value: string) {\n  return value === 'between' ? 'space-between' : value;\n}\n\n// Use all of the imported prop defs to ensure that JSDoc works\ntype FlexOwnProps = GetPropDefTypes<\n  typeof flexPropDefs & typeof gapPropDefs & typeof asChildPropDef\n>;\n\nexport { flexPropDefs };\nexport type { FlexOwnProps };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/flex.tsx",
    "content": "import * as React from 'react';\nimport classNames from 'classnames';\n\nimport { extractProps } from '../helpers/extract-props.js';\nimport { layoutPropDefs } from '../props/layout.props.js';\nimport { marginPropDefs } from '../props/margin.props.js';\nimport { Slot } from './slot.js';\nimport { flexPropDefs } from './flex.props.js';\n\nimport type { FlexOwnProps } from './flex.props.js';\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\nimport type { LayoutProps } from '../props/layout.props.js';\nimport type { MarginProps } from '../props/margin.props.js';\n\ntype FlexElement = React.ElementRef<'div'>;\ninterface CommonFlexProps extends MarginProps, LayoutProps, FlexOwnProps {}\ntype FlexDivProps = { as?: 'div' } & ComponentPropsWithout<'div', RemovedProps>;\ntype FlexSpanProps = { as: 'span' } & ComponentPropsWithout<'span', RemovedProps>;\ntype FlexProps = CommonFlexProps & (FlexSpanProps | FlexDivProps);\n\nconst Flex = React.forwardRef<FlexElement, FlexProps>((props, forwardedRef) => {\n  const {\n    className,\n    asChild,\n    as: Tag = 'div',\n    ...flexProps\n  } = extractProps(props, flexPropDefs, layoutPropDefs, marginPropDefs);\n  const Comp = asChild ? Slot : Tag;\n  return <Comp {...flexProps} ref={forwardedRef} className={classNames('rt-Flex', className)} />;\n});\nFlex.displayName = 'Flex';\n\nexport { Flex };\nexport type { FlexProps };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/grid.css",
    "content": ".rt-Grid {\n  box-sizing: border-box;\n\n  /* Default values to provide the initial styles in the object syntax, e.g. `<Grid columns={{ md: '2' }} />` */\n  display: grid;\n  align-items: stretch;\n  justify-content: flex-start;\n  grid-template-columns: minmax(0, 1fr);\n  grid-template-rows: none;\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/grid.props.tsx",
    "content": "import { asChildPropDef } from '../props/as-child.prop.js';\nimport { gapPropDefs } from '../props/gap.props.js';\n\nimport type { PropDef, GetPropDefTypes } from '../props/prop-def.js';\n\nconst as = ['div', 'span'] as const;\nconst displayValues = ['none', 'inline-grid', 'grid'] as const;\nconst columnsValues = ['1', '2', '3', '4', '5', '6', '7', '8', '9'] as const;\nconst rowsValues = ['1', '2', '3', '4', '5', '6', '7', '8', '9'] as const;\nconst flowValues = ['row', 'column', 'dense', 'row-dense', 'column-dense'] as const;\nconst alignValues = ['start', 'center', 'end', 'baseline', 'stretch'] as const;\nconst justifyValues = ['start', 'center', 'end', 'between'] as const;\nconst alignContentValues = [\n  'start',\n  'center',\n  'end',\n  'baseline',\n  'between',\n  'around',\n  'evenly',\n  'stretch',\n] as const;\nconst justifyItemsValues = ['start', 'center', 'end', 'baseline', 'stretch'] as const;\n\nconst gridPropDefs = {\n  /**\n   * Controls whether to render **div** or **span**\n   *\n   * @example\n   * as=\"div\"\n   * as=\"span\"\n   */\n  as: { type: 'enum', values: as, default: 'div' },\n  ...asChildPropDef,\n  /**\n   * Sets the CSS **display** property.\n   * Supports a subset of the corresponding CSS values and responsive objects.\n   *\n   * @example\n   * display=\"inline-grid\"\n   * display={{ sm: 'none', lg: 'grid' }}\n   *\n   * @link\n   * https://developer.mozilla.org/en-US/docs/Web/CSS/display\n   */\n  display: {\n    type: 'enum',\n    className: 'rt-r-display',\n    values: displayValues,\n    responsive: true,\n  },\n  /**\n   * Sets the CSS **grid-template** property.\n   * Supports a subset of the corresponding CSS values and responsive objects.\n   *\n   * @example\n   * template='\"header header\" \"sidebar content\"'\n   *\n   * @link\n   * https://developer.mozilla.org/en-US/docs/Web/CSS/grid-template-areas\n   */\n  areas: {\n    type: 'string',\n    className: 'rt-r-gta',\n    customProperties: ['--grid-template-areas'],\n    responsive: true,\n  },\n  /**\n   * Sets the CSS **grid-template-columns** property.\n   * Supports numeric string values, CSS strings and responsive objects.\n   *\n   * Use numeric string values to create grid columns of even size.\n   *\n   * @example\n   * columns=\"3\"\n   * columns=\"100px 1fr\"\n   * columns={{ xs: '1', md: 'auto 1fr' }}\n   *\n   * @link\n   * https://developer.mozilla.org/en-US/docs/Web/CSS/grid-template-columns\n   */\n  columns: {\n    type: 'enum | string',\n    className: 'rt-r-gtc',\n    customProperties: ['--grid-template-columns'],\n    values: columnsValues,\n    parseValue: parseGridValue,\n    responsive: true,\n  },\n  /**\n   * Sets the CSS **grid-template-rows** property.\n   * Supports numeric string values, CSS strings and responsive objects.\n   *\n   * Use numeric string values to create grid rows of even size.\n   *\n   * @example\n   * rows=\"3\"\n   * rows=\"100px 1fr\"\n   * rows={{ xs: '1', md: 'auto 1fr' }}\n   *\n   * @link\n   * https://developer.mozilla.org/en-US/docs/Web/CSS/grid-template-rows\n   */\n  rows: {\n    type: 'enum | string',\n    className: 'rt-r-gtr',\n    customProperties: ['--grid-template-rows'],\n    values: rowsValues,\n    parseValue: parseGridValue,\n    responsive: true,\n  },\n  /**\n   * Sets the CSS **grid-auto-flow** property.\n   * Supports the corresponding CSS values and responsive objects.\n   *\n   * @example\n   * flow=\"column\"\n   * flow={{ sm: 'column', lg: 'row' }}\n   *\n   * @link\n   * https://developer.mozilla.org/en-US/docs/Web/CSS/grid-auto-flow\n   */\n  flow: {\n    type: 'enum',\n    className: 'rt-r-gaf',\n    values: flowValues,\n    responsive: true,\n  },\n  /**\n   * Sets the CSS **align-items** property.\n   * Supports the corresponding CSS values and responsive objects.\n   *\n   * @example\n   * align=\"center\"\n   * align={{ sm: 'baseline', lg: 'center' }}\n   *\n   * @link\n   * https://developer.mozilla.org/en-US/docs/Web/CSS/align-items\n   */\n  align: {\n    type: 'enum',\n    className: 'rt-r-ai',\n    values: alignValues,\n    responsive: true,\n  },\n  /**\n   * Sets the CSS **justify-content** property.\n   * Supports a subset of the corresponding CSS values and responsive objects.\n   *\n   * @example\n   * justify=\"between\"\n   * justify={{ sm: 'start', lg: 'center' }}\n   *\n   * @link\n   * https://developer.mozilla.org/en-US/docs/Web/CSS/justify-content\n   */\n  justify: {\n    type: 'enum',\n    className: 'rt-r-jc',\n    values: justifyValues,\n    parseValue: parseJustifyValue,\n    responsive: true,\n  },\n  /**\n   * Sets the CSS **align-content** property.\n   * Supports a subset of the corresponding CSS values and responsive objects.\n   *\n   * @example\n   * alignContent=\"between\"\n   * alignContent={{ sm: 'start', lg: 'center' }}\n   *\n   * @link\n   * https://developer.mozilla.org/en-US/docs/Web/CSS/align-content\n   */\n  alignContent: {\n    type: 'enum',\n    className: 'rt-r-ac',\n    values: alignContentValues,\n    parseValue: parseAlignContentValue,\n    responsive: true,\n  },\n  /**\n   * Sets the CSS **justify-items** property.\n   * Supports a subset of the corresponding CSS values and responsive objects.\n   *\n   * @example\n   * justifyItems=\"center\"\n   * justifyItems={{ sm: 'start', lg: 'center' }}\n   *\n   * @link\n   * https://developer.mozilla.org/en-US/docs/Web/CSS/align-content\n   */\n  justifyItems: {\n    type: 'enum',\n    className: 'rt-r-ji',\n    values: justifyItemsValues,\n    responsive: true,\n  },\n  ...gapPropDefs,\n} satisfies {\n  as: PropDef<(typeof as)[number]>;\n  display: PropDef<(typeof displayValues)[number]>;\n  areas: PropDef<string>;\n  columns: PropDef<(typeof columnsValues)[number]>;\n  rows: PropDef<(typeof rowsValues)[number]>;\n  flow: PropDef<(typeof flowValues)[number]>;\n  align: PropDef<(typeof alignValues)[number]>;\n  justify: PropDef<(typeof justifyValues)[number]>;\n  alignContent: PropDef<(typeof alignContentValues)[number]>;\n  justifyItems: PropDef<(typeof justifyItemsValues)[number]>;\n};\n\nfunction parseGridValue(value: string): string {\n  if ((gridPropDefs.columns.values as readonly string[]).includes(value)) {\n    return value;\n  }\n\n  return value?.match(/^\\d+$/) ? `repeat(${value}, minmax(0, 1fr))` : value;\n}\n\nfunction parseJustifyValue(value: string) {\n  return value === 'between' ? 'space-between' : value;\n}\n\nfunction parseAlignContentValue(value: string) {\n  switch (value) {\n    case 'between':\n      return 'space-between';\n    case 'around':\n      return 'space-around';\n    case 'evenly':\n      return 'space-evenly';\n    default:\n      return value;\n  }\n}\n\n// Use all of the imported prop defs to ensure that JSDoc works\ntype GridOwnProps = GetPropDefTypes<typeof gridPropDefs & typeof asChildPropDef>;\n\nexport { gridPropDefs };\nexport type { GridOwnProps };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/grid.tsx",
    "content": "import * as React from 'react';\nimport classNames from 'classnames';\n\nimport { Slot } from './slot.js';\nimport { gridPropDefs } from './grid.props.js';\nimport { extractProps } from '../helpers/extract-props.js';\nimport { layoutPropDefs } from '../props/layout.props.js';\nimport { marginPropDefs } from '../props/margin.props.js';\n\nimport type { LayoutProps } from '../props/layout.props.js';\nimport type { MarginProps } from '../props/margin.props.js';\nimport type { GridOwnProps } from './grid.props.js';\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\n\ntype GridElement = React.ElementRef<'div'>;\ninterface CommonGridProps extends MarginProps, LayoutProps, GridOwnProps {}\ntype GridDivProps = { as?: 'div' } & ComponentPropsWithout<'div', RemovedProps>;\ntype GridSpanProps = { as: 'span' } & ComponentPropsWithout<'span', RemovedProps>;\ntype GridProps = CommonGridProps & (GridSpanProps | GridDivProps);\n\nconst Grid = React.forwardRef<GridElement, GridProps>((props, forwardedRef) => {\n  const {\n    className,\n    asChild,\n    as: Tag = 'div',\n    ...gridProps\n  } = extractProps(props, gridPropDefs, layoutPropDefs, marginPropDefs);\n  const Comp = asChild ? Slot : Tag;\n  return <Comp {...gridProps} ref={forwardedRef} className={classNames('rt-Grid', className)} />;\n});\nGrid.displayName = 'Grid';\n\nexport { Grid };\nexport type { GridProps };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/heading.css",
    "content": ".rt-Heading {\n  --leading-trim-start: var(--heading-leading-trim-start);\n  --leading-trim-end: var(--heading-leading-trim-end);\n  font-family: var(--heading-font-family);\n  font-style: var(--heading-font-style);\n  font-weight: var(--font-weight-bold);\n  line-height: var(--line-height);\n\n  :where(&) {\n    margin: 0;\n  }\n\n  &:where([data-accent-color]) {\n    color: var(--accent-a11);\n  }\n\n  &:where([data-accent-color].rt-high-contrast),\n  :where([data-accent-color]:not(.radix-themes)) &:where(.rt-high-contrast) {\n    color: var(--accent-12);\n  }\n}\n\n/***************************************************************************************************\n *                                                                                                 *\n * SIZES                                                                                           *\n *                                                                                                 *\n ***************************************************************************************************/\n\n@breakpoints {\n  .rt-Heading {\n    &:where(.rt-r-size-1) {\n      font-size: calc(var(--font-size-1) * var(--heading-font-size-adjust));\n      --line-height: var(--heading-line-height-1);\n      letter-spacing: calc(var(--letter-spacing-1) + var(--heading-letter-spacing));\n    }\n    &:where(.rt-r-size-2) {\n      font-size: calc(var(--font-size-2) * var(--heading-font-size-adjust));\n      --line-height: var(--heading-line-height-2);\n      letter-spacing: calc(var(--letter-spacing-2) + var(--heading-letter-spacing));\n    }\n    &:where(.rt-r-size-3) {\n      font-size: calc(var(--font-size-3) * var(--heading-font-size-adjust));\n      --line-height: var(--heading-line-height-3);\n      letter-spacing: calc(var(--letter-spacing-3) + var(--heading-letter-spacing));\n    }\n    &:where(.rt-r-size-4) {\n      font-size: calc(var(--font-size-4) * var(--heading-font-size-adjust));\n      --line-height: var(--heading-line-height-4);\n      letter-spacing: calc(var(--letter-spacing-4) + var(--heading-letter-spacing));\n    }\n    &:where(.rt-r-size-5) {\n      font-size: calc(var(--font-size-5) * var(--heading-font-size-adjust));\n      --line-height: var(--heading-line-height-5);\n      letter-spacing: calc(var(--letter-spacing-5) + var(--heading-letter-spacing));\n    }\n    &:where(.rt-r-size-6) {\n      font-size: calc(var(--font-size-6) * var(--heading-font-size-adjust));\n      --line-height: var(--heading-line-height-6);\n      letter-spacing: calc(var(--letter-spacing-6) + var(--heading-letter-spacing));\n    }\n    &:where(.rt-r-size-7) {\n      font-size: calc(var(--font-size-7) * var(--heading-font-size-adjust));\n      --line-height: var(--heading-line-height-7);\n      letter-spacing: calc(var(--letter-spacing-7) + var(--heading-letter-spacing));\n    }\n    &:where(.rt-r-size-8) {\n      font-size: calc(var(--font-size-8) * var(--heading-font-size-adjust));\n      --line-height: var(--heading-line-height-8);\n      letter-spacing: calc(var(--letter-spacing-8) + var(--heading-letter-spacing));\n    }\n    &:where(.rt-r-size-9) {\n      font-size: calc(var(--font-size-9) * var(--heading-font-size-adjust));\n      --line-height: var(--heading-line-height-9);\n      letter-spacing: calc(var(--letter-spacing-9) + var(--heading-letter-spacing));\n    }\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/heading.props.tsx",
    "content": "import { asChildPropDef } from '../props/as-child.prop.js';\nimport { colorPropDef } from '../props/color.prop.js';\nimport { highContrastPropDef } from '../props/high-contrast.prop.js';\nimport { leadingTrimPropDef } from '../props/leading-trim.prop.js';\nimport { textAlignPropDef } from '../props/text-align.prop.js';\nimport { textWrapPropDef } from '../props/text-wrap.prop.js';\nimport { truncatePropDef } from '../props/truncate.prop.js';\nimport { weightPropDef } from '../props/weight.prop.js';\n\nimport type { PropDef } from '../props/prop-def.js';\n\nconst as = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'] as const;\nconst sizes = ['1', '2', '3', '4', '5', '6', '7', '8', '9'] as const;\n\nconst headingPropDefs = {\n  as: { type: 'enum', values: as, default: 'h1' },\n  ...asChildPropDef,\n  size: {\n    type: 'enum',\n    className: 'rt-r-size',\n    values: sizes,\n    default: '6',\n    responsive: true,\n  },\n  ...weightPropDef,\n  ...textAlignPropDef,\n  ...leadingTrimPropDef,\n  ...truncatePropDef,\n  ...textWrapPropDef,\n  ...colorPropDef,\n  ...highContrastPropDef,\n} satisfies {\n  as: PropDef<(typeof as)[number]>;\n  size: PropDef<(typeof sizes)[number]>;\n};\n\nexport { headingPropDefs };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/heading.tsx",
    "content": "import * as React from 'react';\nimport classNames from 'classnames';\nimport { Slot } from 'radix-ui';\n\nimport { headingPropDefs } from './heading.props.js';\nimport { extractProps } from '../helpers/extract-props.js';\nimport { marginPropDefs } from '../props/margin.props.js';\n\nimport type { MarginProps } from '../props/margin.props.js';\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\nimport type { GetPropDefTypes } from '../props/prop-def.js';\n\ntype HeadingElement = React.ElementRef<'h1'>;\ntype HeadingOwnProps = GetPropDefTypes<typeof headingPropDefs>;\ninterface HeadingProps\n  extends ComponentPropsWithout<'h1', RemovedProps>, MarginProps, HeadingOwnProps {}\n\nconst Heading = React.forwardRef<HeadingElement, HeadingProps>((props, forwardedRef) => {\n  const {\n    children,\n    className,\n    asChild,\n    as: Tag = 'h1',\n    color,\n    ...headingProps\n  } = extractProps(props, headingPropDefs, marginPropDefs);\n  return (\n    <Slot.Root\n      data-accent-color={color}\n      {...headingProps}\n      ref={forwardedRef}\n      className={classNames('rt-Heading', className)}\n    >\n      {asChild ? children : <Tag>{children}</Tag>}\n    </Slot.Root>\n  );\n});\nHeading.displayName = 'Heading';\n\nexport { Heading };\nexport type { HeadingProps };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/hover-card.css",
    "content": ".rt-HoverCardContent {\n  background-color: var(--color-panel-solid);\n  box-shadow: var(--shadow-4);\n  overflow: auto;\n  position: relative;\n\n  --inset-padding-top: var(--hover-card-content-padding);\n  --inset-padding-right: var(--hover-card-content-padding);\n  --inset-padding-bottom: var(--hover-card-content-padding);\n  --inset-padding-left: var(--hover-card-content-padding);\n  padding: var(--hover-card-content-padding);\n  box-sizing: border-box;\n\n  transform-origin: var(--radix-hover-card-content-transform-origin);\n}\n\n/***************************************************************************************************\n *                                                                                                 *\n * SIZES                                                                                           *\n *                                                                                                 *\n ***************************************************************************************************/\n\n@breakpoints {\n  .rt-HoverCardContent {\n    &:where(.rt-r-size-1) {\n      --hover-card-content-padding: var(--space-3);\n      border-radius: var(--radius-4);\n    }\n    &:where(.rt-r-size-2) {\n      --hover-card-content-padding: var(--space-4);\n      border-radius: var(--radius-4);\n    }\n    &:where(.rt-r-size-3) {\n      --hover-card-content-padding: var(--space-5);\n      border-radius: var(--radius-5);\n    }\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/hover-card.props.tsx",
    "content": "import { asChildPropDef } from '../props/as-child.prop.js';\nimport { heightPropDefs } from '../props/height.props.js';\nimport { widthPropDefs } from '../props/width.props.js';\n\nimport type { PropDef, GetPropDefTypes } from '../props/prop-def.js';\n\nconst contentSizes = ['1', '2', '3'] as const;\n\nconst hoverCardContentPropDefs = {\n  ...asChildPropDef,\n  size: {\n    type: 'enum',\n    className: 'rt-r-size',\n    values: contentSizes,\n    default: '2',\n    responsive: true,\n  },\n  width: widthPropDefs.width,\n  minWidth: widthPropDefs.minWidth,\n  maxWidth: { ...widthPropDefs.maxWidth, default: '480px' },\n  ...heightPropDefs,\n} satisfies {\n  width: PropDef<string>;\n  minWidth: PropDef<string>;\n  maxWidth: PropDef<string>;\n  size: PropDef<(typeof contentSizes)[number]>;\n};\n\ntype HoverCardContentOwnProps = GetPropDefTypes<\n  typeof hoverCardContentPropDefs &\n    typeof asChildPropDef &\n    typeof widthPropDefs &\n    typeof heightPropDefs\n>;\n\nexport { hoverCardContentPropDefs };\nexport type { HoverCardContentOwnProps };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/hover-card.tsx",
    "content": "import * as React from 'react';\nimport classNames from 'classnames';\nimport { HoverCard as HoverCardPrimitive } from 'radix-ui';\n\nimport { hoverCardContentPropDefs } from './hover-card.props.js';\nimport { extractProps } from '../helpers/extract-props.js';\nimport { requireReactElement } from '../helpers/require-react-element.js';\nimport { Theme } from './theme.js';\n\nimport type { HoverCardContentOwnProps } from './hover-card.props.js';\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\n\ninterface HoverCardRootProps extends React.ComponentPropsWithoutRef<\n  typeof HoverCardPrimitive.Root\n> {}\nconst HoverCardRoot: React.FC<HoverCardRootProps> = (props) => (\n  <HoverCardPrimitive.Root closeDelay={150} openDelay={200} {...props} />\n);\nHoverCardRoot.displayName = 'HoverCard.Root';\n\ntype HoverCardTriggerElement = React.ElementRef<typeof HoverCardPrimitive.Trigger>;\ninterface HoverCardTriggerProps extends ComponentPropsWithout<\n  typeof HoverCardPrimitive.Trigger,\n  RemovedProps\n> {}\nconst HoverCardTrigger = React.forwardRef<HoverCardTriggerElement, HoverCardTriggerProps>(\n  ({ children, className, ...props }, forwardedRef) => (\n    <HoverCardPrimitive.Trigger\n      ref={forwardedRef}\n      className={classNames('rt-HoverCardTrigger', className)}\n      {...props}\n      asChild\n    >\n      {requireReactElement(children)}\n    </HoverCardPrimitive.Trigger>\n  ),\n);\nHoverCardTrigger.displayName = 'HoverCard.Trigger';\n\ntype HoverCardContentElement = React.ElementRef<typeof HoverCardPrimitive.Content>;\ninterface HoverCardContentProps\n  extends\n    ComponentPropsWithout<typeof HoverCardPrimitive.Content, RemovedProps>,\n    HoverCardContentOwnProps {\n  container?: React.ComponentPropsWithoutRef<typeof HoverCardPrimitive.Portal>['container'];\n}\nconst HoverCardContent = React.forwardRef<HoverCardContentElement, HoverCardContentProps>(\n  (props, forwardedRef) => {\n    const { className, forceMount, container, ...contentProps } = extractProps(\n      props,\n      hoverCardContentPropDefs,\n    );\n    return (\n      <HoverCardPrimitive.Portal container={container} forceMount={forceMount}>\n        <Theme asChild>\n          <HoverCardPrimitive.Content\n            align=\"start\"\n            sideOffset={8}\n            collisionPadding={10}\n            {...contentProps}\n            ref={forwardedRef}\n            className={classNames('rt-PopperContent', 'rt-HoverCardContent', className)}\n          />\n        </Theme>\n      </HoverCardPrimitive.Portal>\n    );\n  },\n);\nHoverCardContent.displayName = 'HoverCard.Content';\n\nexport { HoverCardRoot as Root, HoverCardTrigger as Trigger, HoverCardContent as Content };\nexport type {\n  HoverCardRootProps as RootProps,\n  HoverCardTriggerProps as TriggerProps,\n  HoverCardContentProps as ContentProps,\n};\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/icon-button.css",
    "content": "@import './_internal/base-button.css';\n\n/***************************************************************************************************\n *                                                                                                 *\n * SIZES                                                                                           *\n *                                                                                                 *\n ***************************************************************************************************/\n\n.rt-IconButton {\n  &:where(:not(.rt-variant-ghost)) {\n    height: var(--base-button-height);\n    width: var(--base-button-height);\n  }\n  &:where(.rt-variant-ghost) {\n    padding: var(--icon-button-ghost-padding);\n\n    /* We reset the defined margin variables to avoid inheriting them from a higher component */\n    /* If a margin IS defined on the component itself, the utility class will win and reset it */\n    --margin-top: 0px;\n    --margin-right: 0px;\n    --margin-bottom: 0px;\n    --margin-left: 0px;\n\n    /* Define the overrides to incorporate the negative margins */\n    --margin-top-override: calc(var(--margin-top) - var(--icon-button-ghost-padding));\n    --margin-right-override: calc(var(--margin-right) - var(--icon-button-ghost-padding));\n    --margin-bottom-override: calc(var(--margin-bottom) - var(--icon-button-ghost-padding));\n    --margin-left-override: calc(var(--margin-left) - var(--icon-button-ghost-padding));\n\n    /* Reset the overrides on direct children */\n    :where(&) > * {\n      --margin-top-override: initial;\n      --margin-right-override: initial;\n      --margin-bottom-override: initial;\n      --margin-left-override: initial;\n    }\n\n    margin: var(--margin-top-override) var(--margin-right-override) var(--margin-bottom-override)\n      var(--margin-left-override);\n  }\n}\n\n@breakpoints {\n  .rt-IconButton:where(.rt-variant-ghost) {\n    &:where(.rt-r-size-1) {\n      --icon-button-ghost-padding: var(--space-1);\n    }\n    &:where(.rt-r-size-2) {\n      --icon-button-ghost-padding: calc(var(--space-1) * 1.5);\n    }\n    &:where(.rt-r-size-3) {\n      --icon-button-ghost-padding: var(--space-2);\n    }\n    &:where(.rt-r-size-4) {\n      --icon-button-ghost-padding: var(--space-3);\n    }\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/icon-button.props.tsx",
    "content": "export { baseButtonPropDefs as iconButtonPropDefs } from './_internal/base-button.props.js';\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/icon-button.tsx",
    "content": "import * as React from 'react';\nimport classNames from 'classnames';\n\nimport { BaseButton } from './_internal/base-button.js';\n\ntype IconButtonElement = React.ElementRef<typeof BaseButton>;\ninterface IconButtonProps extends React.ComponentPropsWithoutRef<typeof BaseButton> {}\nconst IconButton = React.forwardRef<IconButtonElement, IconButtonProps>(\n  ({ className, ...props }, forwardedRef) => (\n    <BaseButton {...props} ref={forwardedRef} className={classNames('rt-IconButton', className)} />\n  ),\n);\nIconButton.displayName = 'IconButton';\n\nexport { IconButton };\nexport type { IconButtonProps };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/icons.tsx",
    "content": "import React from 'react';\n\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\n\ntype IconElement = React.ElementRef<'svg'>;\ninterface IconProps extends ComponentPropsWithout<'svg', RemovedProps | 'children'> {}\n\nconst ThickDividerHorizontalIcon = React.forwardRef<IconElement, IconProps>(\n  (props, forwardedRef) => {\n    return (\n      <svg\n        width=\"9\"\n        height=\"9\"\n        viewBox=\"0 0 9 9\"\n        fill=\"currentcolor\"\n        xmlns=\"http://www.w3.org/2000/svg\"\n        {...props}\n        ref={forwardedRef}\n      >\n        <path\n          fillRule=\"evenodd\"\n          clipRule=\"evenodd\"\n          d=\"M0.75 4.5C0.75 4.08579 1.08579 3.75 1.5 3.75H7.5C7.91421 3.75 8.25 4.08579 8.25 4.5C8.25 4.91421 7.91421 5.25 7.5 5.25H1.5C1.08579 5.25 0.75 4.91421 0.75 4.5Z\"\n        />\n      </svg>\n    );\n  },\n);\n\nThickDividerHorizontalIcon.displayName = 'ThickDividerHorizontalIcon';\n\nconst ThickCheckIcon = React.forwardRef<IconElement, IconProps>((props, forwardedRef) => {\n  return (\n    <svg\n      width=\"9\"\n      height=\"9\"\n      viewBox=\"0 0 9 9\"\n      fill=\"currentcolor\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      {...props}\n      ref={forwardedRef}\n    >\n      <path\n        fillRule=\"evenodd\"\n        clipRule=\"evenodd\"\n        d=\"M8.53547 0.62293C8.88226 0.849446 8.97976 1.3142 8.75325 1.66099L4.5083 8.1599C4.38833 8.34356 4.19397 8.4655 3.9764 8.49358C3.75883 8.52167 3.53987 8.45309 3.3772 8.30591L0.616113 5.80777C0.308959 5.52987 0.285246 5.05559 0.563148 4.74844C0.84105 4.44128 1.31533 4.41757 1.62249 4.69547L3.73256 6.60459L7.49741 0.840706C7.72393 0.493916 8.18868 0.396414 8.53547 0.62293Z\"\n      />\n    </svg>\n  );\n});\nThickCheckIcon.displayName = 'ThickCheckIcon';\n\nconst ChevronDownIcon = React.forwardRef<IconElement, IconProps>((props, forwardedRef) => {\n  return (\n    <svg\n      width=\"9\"\n      height=\"9\"\n      viewBox=\"0 0 9 9\"\n      fill=\"currentcolor\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      {...props}\n      ref={forwardedRef}\n    >\n      <path d=\"M0.135232 3.15803C0.324102 2.95657 0.640521 2.94637 0.841971 3.13523L4.5 6.56464L8.158 3.13523C8.3595 2.94637 8.6759 2.95657 8.8648 3.15803C9.0536 3.35949 9.0434 3.67591 8.842 3.86477L4.84197 7.6148C4.64964 7.7951 4.35036 7.7951 4.15803 7.6148L0.158031 3.86477C-0.0434285 3.67591 -0.0536285 3.35949 0.135232 3.15803Z\" />\n    </svg>\n  );\n});\nChevronDownIcon.displayName = 'ChevronDownIcon';\n\nconst ThickChevronRightIcon = React.forwardRef<IconElement, IconProps>((props, forwardedRef) => {\n  return (\n    <svg\n      width=\"9\"\n      height=\"9\"\n      viewBox=\"0 0 9 9\"\n      fill=\"currentcolor\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      {...props}\n      ref={forwardedRef}\n    >\n      <path\n        fillRule=\"evenodd\"\n        clipRule=\"evenodd\"\n        d=\"M3.23826 0.201711C3.54108 -0.0809141 4.01567 -0.0645489 4.29829 0.238264L7.79829 3.98826C8.06724 4.27642 8.06724 4.72359 7.79829 5.01174L4.29829 8.76174C4.01567 9.06455 3.54108 9.08092 3.23826 8.79829C2.93545 8.51567 2.91909 8.04108 3.20171 7.73826L6.22409 4.5L3.20171 1.26174C2.91909 0.958928 2.93545 0.484337 3.23826 0.201711Z\"\n      />\n    </svg>\n  );\n});\nThickChevronRightIcon.displayName = 'ThickChevronRightIcon';\n\nexport { ChevronDownIcon, ThickCheckIcon, ThickChevronRightIcon, ThickDividerHorizontalIcon };\nexport type { IconProps };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/index.css",
    "content": "@import './reset.css';\n@import './animations.css';\n@import './layout.css';\n\n/* Import Skeleton before other components so that its default border-radius doesn’t have a higher specificity */\n@import './skeleton.css';\n\n/* Import Text before other components as it’s commonly extended */\n@import './text.css';\n\n@import './alert-dialog.css';\n@import './avatar.css';\n@import './badge.css';\n@import './blockquote.css';\n@import './button.css';\n@import './callout.css';\n@import './card.css';\n@import './checkbox-cards.css';\n@import './checkbox-group.css';\n@import './checkbox.css';\n@import './code.css';\n@import './context-menu.css';\n@import './data-list.css';\n@import './dialog.css';\n@import './dropdown-menu.css';\n@import './em.css';\n@import './heading.css';\n@import './hover-card.css';\n@import './icon-button.css';\n@import './inset.css';\n@import './kbd.css';\n@import './link.css';\n@import './popover.css';\n@import './progress.css';\n@import './quote.css';\n@import './radio-cards.css';\n@import './radio-group.css';\n@import './radio.css';\n@import './scroll-area.css';\n@import './segmented-control.css';\n@import './select.css';\n@import './separator.css';\n@import './slider.css';\n@import './spinner.css';\n@import './strong.css';\n@import './switch.css';\n@import './tab-nav.css';\n@import './table.css';\n@import './tabs.css';\n@import './text-area.css';\n@import './text-field.css';\n@import './theme-panel.css';\n@import './tooltip.css';\n\n.radix-themes:where([data-is-root-theme='true']) {\n  /* Create a new stacking context on the root `Theme` so layered components work out of the box */\n  position: relative;\n  z-index: 0;\n\n  /* Make sure root `Theme` background covers the viewport */\n  min-height: 100vh;\n  @supports (min-height: 100dvh) {\n    min-height: 100dvh;\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/index.tsx",
    "content": "export { AccessibleIcon, type AccessibleIconProps } from './accessible-icon.js';\nexport * as AlertDialog from './alert-dialog.js';\nexport { AspectRatio, type AspectRatioProps } from './aspect-ratio.js';\nexport { Avatar, type AvatarProps } from './avatar.js';\nexport { Badge, type BadgeProps } from './badge.js';\nexport { Blockquote, type BlockquoteProps } from './blockquote.js';\nexport { Box, type BoxProps } from './box.js';\nexport { Button, type ButtonProps } from './button.js';\nexport * as Callout from './callout.js';\nexport { Card, type CardProps } from './card.js';\nexport * as CheckboxCards from './checkbox-cards.js';\nexport * as CheckboxGroup from './checkbox-group.js';\nexport { Checkbox, type CheckboxProps } from './checkbox.js';\nexport { Code, type CodeProps } from './code.js';\nexport { Container, type ContainerProps } from './container.js';\nexport * as ContextMenu from './context-menu.js';\nexport * as DataList from './data-list.js';\nexport * as Dialog from './dialog.js';\nexport * as DropdownMenu from './dropdown-menu.js';\nexport { Em, type EmProps } from './em.js';\nexport { Flex, type FlexProps } from './flex.js';\nexport { Grid, type GridProps } from './grid.js';\nexport { Heading, type HeadingProps } from './heading.js';\nexport * as HoverCard from './hover-card.js';\nexport { IconButton, type IconButtonProps } from './icon-button.js';\nexport {\n  type IconProps,\n  ChevronDownIcon,\n  ThickCheckIcon,\n  ThickChevronRightIcon,\n  ThickDividerHorizontalIcon,\n} from './icons.js';\nexport { Inset, type InsetProps } from './inset.js';\nexport { Kbd, type KbdProps } from './kbd.js';\nexport { Link, type LinkProps } from './link.js';\nexport * as Popover from './popover.js';\nexport { Portal, type PortalProps } from './portal.js';\nexport { Progress, type ProgressProps } from './progress.js';\nexport { Quote, type QuoteProps } from './quote.js';\nexport * as RadioCards from './radio-cards.js';\nexport * as RadioGroup from './radio-group.js';\nexport { Radio, type RadioProps } from './radio.js';\nexport { Reset, type ResetProps } from './reset.js';\nexport { ScrollArea, type ScrollAreaProps } from './scroll-area.js';\nexport * as SegmentedControl from './segmented-control.js';\nexport { Section, type SectionProps } from './section.js';\nexport * as Select from './select.js';\nexport { Separator, type SeparatorProps } from './separator.js';\nexport { Skeleton, type SkeletonProps } from './skeleton.js';\nexport { Slider, type SliderProps } from './slider.js';\nexport { Slot, Slottable } from './slot.js';\nexport { Spinner, type SpinnerProps } from './spinner.js';\nexport { Strong, type StrongProps } from './strong.js';\nexport { Switch, type SwitchProps } from './switch.js';\nexport * as TabNav from './tab-nav.js';\nexport * as Table from './table.js';\nexport * as Tabs from './tabs.js';\nexport { TextArea, type TextAreaProps } from './text-area.js';\nexport * as TextField from './text-field.js';\nexport { Text, type TextProps } from './text.js';\nexport {\n  ThemePanel,\n  type ThemePanelProps,\n  ThemePanelContent as unstable_ThemePanelContent,\n  type ThemePanelContentProps as unstable_ThemePanelContentProps,\n} from './theme-panel.js';\nexport { Theme, ThemeContext, type ThemeProps, useThemeContext } from './theme.js';\nexport { Tooltip, type TooltipProps } from './tooltip.js';\nexport { VisuallyHidden, type VisuallyHiddenProps } from './visually-hidden.js';\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/inset.css",
    "content": ".rt-Inset {\n  box-sizing: border-box;\n\n  /* We reset the defined margin variables to avoid inheriting them from a higher component */\n  /* If a margin IS defined on the component itself, the utility class will win and reset it */\n  --margin-top: 0px;\n  --margin-right: 0px;\n  --margin-bottom: 0px;\n  --margin-left: 0px;\n\n  overflow: hidden;\n\n  /*\n   * Note: Next.js may collapse this into a shorthand \"margin\" declaration when bundling the CSS.\n   * If any of the variables are set to \"initial\", the shorthand syntax will become invalid and botch the Inset styles.\n   */\n  margin-top: var(--margin-top-override);\n  margin-right: var(--margin-right-override);\n  margin-bottom: var(--margin-bottom-override);\n  margin-left: var(--margin-left-override);\n\n  /* Reset the overrides on direct children */\n  :where(&) > * {\n    --margin-top-override: initial;\n    --margin-right-override: initial;\n    --margin-bottom-override: initial;\n    --margin-left-override: initial;\n  }\n}\n\n@breakpoints {\n  .rt-Inset {\n    &:where(.rt-r-clip-border-box) {\n      /* prettier-ignore */\n      --inset-border-radius-calc: calc(var(--inset-border-radius, 0px) - var(--inset-border-width, 0px));\n      --inset-padding-top-calc: var(--inset-padding-top, 0px);\n      --inset-padding-right-calc: var(--inset-padding-right, 0px);\n      --inset-padding-bottom-calc: var(--inset-padding-bottom, 0px);\n      --inset-padding-left-calc: var(--inset-padding-left, 0px);\n    }\n    /* prettier-ignore */\n    &:where(.rt-r-clip-padding-box) {\n      --inset-border-radius-calc: var(--inset-border-radius, 0px);\n      --inset-padding-top-calc: calc(var(--inset-padding-top, 0px) + var(--inset-border-width, 0px));\n      --inset-padding-right-calc: calc(var(--inset-padding-right, 0px) + var(--inset-border-width, 0px));\n      --inset-padding-bottom-calc: calc(var(--inset-padding-bottom, 0px) + var(--inset-border-width, 0px));\n      --inset-padding-left-calc: calc(var(--inset-padding-left, 0px) + var(--inset-border-width, 0px));\n    }\n    &:where(.rt-r-side-top) {\n      --margin-top-override: calc(var(--margin-top) - var(--inset-padding-top-calc));\n      --margin-right-override: calc(var(--margin-right) - var(--inset-padding-right-calc));\n      --margin-bottom-override: var(--margin-bottom);\n      --margin-left-override: calc(var(--margin-left) - var(--inset-padding-left-calc));\n      border-top-left-radius: var(--inset-border-radius-calc);\n      border-top-right-radius: var(--inset-border-radius-calc);\n      border-bottom-left-radius: 0px;\n      border-bottom-right-radius: 0px;\n    }\n    &:where(.rt-r-side-bottom) {\n      --margin-top-override: var(--margin-top);\n      --margin-right-override: calc(var(--margin-right) - var(--inset-padding-right-calc));\n      --margin-bottom-override: calc(var(--margin-bottom) - var(--inset-padding-bottom-calc));\n      --margin-left-override: calc(var(--margin-left) - var(--inset-padding-left-calc));\n      border-top-left-radius: 0px;\n      border-top-right-radius: 0px;\n      border-bottom-left-radius: var(--inset-border-radius-calc);\n      border-bottom-right-radius: var(--inset-border-radius-calc);\n    }\n    &:where(.rt-r-side-left) {\n      --margin-top-override: calc(var(--margin-top) - var(--inset-padding-top-calc));\n      --margin-bottom-override: calc(var(--margin-bottom) - var(--inset-padding-bottom-calc));\n      --margin-left-override: calc(var(--margin-left) - var(--inset-padding-left-calc));\n      --margin-right-override: var(--margin-right);\n      border-top-left-radius: var(--inset-border-radius-calc);\n      border-top-right-radius: 0px;\n      border-bottom-left-radius: var(--inset-border-radius-calc);\n      border-bottom-right-radius: 0px;\n    }\n    &:where(.rt-r-side-right) {\n      --margin-top-override: calc(var(--margin-top) - var(--inset-padding-top-calc));\n      --margin-right-override: calc(var(--margin-right) - var(--inset-padding-right-calc));\n      --margin-bottom-override: calc(var(--margin-bottom) - var(--inset-padding-bottom-calc));\n      --margin-left-override: var(--margin-left);\n      border-top-left-radius: 0px;\n      border-top-right-radius: var(--inset-border-radius-calc);\n      border-bottom-left-radius: 0px;\n      border-bottom-right-radius: var(--inset-border-radius-calc);\n    }\n    &:where(.rt-r-side-x) {\n      --margin-top-override: var(--margin-top);\n      --margin-right-override: calc(var(--margin-right) - var(--inset-padding-right-calc));\n      --margin-bottom-override: var(--margin-bottom);\n      --margin-left-override: calc(var(--margin-left) - var(--inset-padding-left-calc));\n      border-radius: 0px;\n    }\n    &:where(.rt-r-side-y) {\n      --margin-top-override: calc(var(--margin-top) - var(--inset-padding-top-calc));\n      --margin-right-override: var(--margin-right);\n      --margin-bottom-override: calc(var(--margin-bottom) - var(--inset-padding-bottom-calc));\n      --margin-left-override: var(--margin-left);\n      border-radius: 0px;\n    }\n    &:where(.rt-r-side-all) {\n      --margin-top-override: calc(var(--margin-top) - var(--inset-padding-top-calc));\n      --margin-right-override: calc(var(--margin-right) - var(--inset-padding-right-calc));\n      --margin-bottom-override: calc(var(--margin-bottom) - var(--inset-padding-bottom-calc));\n      --margin-left-override: calc(var(--margin-left) - var(--inset-padding-left-calc));\n      border-radius: var(--inset-border-radius-calc);\n    }\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/inset.props.tsx",
    "content": "import { asChildPropDef } from '../props/as-child.prop.js';\n\nimport type { PropDef } from '../props/prop-def.js';\n\nconst sides = ['all', 'x', 'y', 'top', 'bottom', 'left', 'right'] as const;\nconst clipValues = ['border-box', 'padding-box'] as const;\nconst paddingValues = ['current', '0'] as const;\n\nconst insetPropDefs = {\n  ...asChildPropDef,\n  side: {\n    type: 'enum',\n    className: 'rt-r-side',\n    values: sides,\n    default: 'all',\n    responsive: true,\n  },\n  clip: {\n    type: 'enum',\n    className: 'rt-r-clip',\n    values: clipValues,\n    default: 'border-box',\n    responsive: true,\n  },\n  p: {\n    type: 'enum',\n    className: 'rt-r-p',\n    values: paddingValues,\n    parseValue: parsePaddingValue,\n    responsive: true,\n  },\n  px: {\n    type: 'enum',\n    className: 'rt-r-px',\n    values: paddingValues,\n    parseValue: parsePaddingValue,\n    responsive: true,\n  },\n  py: {\n    type: 'enum',\n    className: 'rt-r-py',\n    values: paddingValues,\n    parseValue: parsePaddingValue,\n    responsive: true,\n  },\n  pt: {\n    type: 'enum',\n    className: 'rt-r-pt',\n    values: paddingValues,\n    parseValue: parsePaddingValue,\n    responsive: true,\n  },\n  pr: {\n    type: 'enum',\n    className: 'rt-r-pr',\n    values: paddingValues,\n    parseValue: parsePaddingValue,\n    responsive: true,\n  },\n  pb: {\n    type: 'enum',\n    className: 'rt-r-pb',\n    values: paddingValues,\n    parseValue: parsePaddingValue,\n    responsive: true,\n  },\n  pl: {\n    type: 'enum',\n    className: 'rt-r-pl',\n    values: paddingValues,\n    parseValue: parsePaddingValue,\n    responsive: true,\n  },\n} satisfies {\n  side: PropDef<(typeof sides)[number]>;\n  clip: PropDef<(typeof clipValues)[number]>;\n  p: PropDef<(typeof paddingValues)[number]>;\n  px: PropDef<(typeof paddingValues)[number]>;\n  py: PropDef<(typeof paddingValues)[number]>;\n  pt: PropDef<(typeof paddingValues)[number]>;\n  pr: PropDef<(typeof paddingValues)[number]>;\n  pb: PropDef<(typeof paddingValues)[number]>;\n  pl: PropDef<(typeof paddingValues)[number]>;\n};\n\nfunction parsePaddingValue(value: string) {\n  return value === 'current' ? 'inset' : value;\n}\n\nexport { insetPropDefs };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/inset.tsx",
    "content": "import * as React from 'react';\nimport classNames from 'classnames';\nimport { Slot } from 'radix-ui';\n\nimport { insetPropDefs } from './inset.props.js';\nimport { extractProps } from '../helpers/extract-props.js';\nimport { marginPropDefs } from '../props/margin.props.js';\n\nimport type { MarginProps } from '../props/margin.props.js';\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\nimport type { GetPropDefTypes } from '../props/prop-def.js';\n\ntype InsetElement = React.ElementRef<'div'>;\ntype InsetOwnProps = GetPropDefTypes<typeof insetPropDefs>;\ninterface InsetProps\n  extends ComponentPropsWithout<'div', RemovedProps>, MarginProps, InsetOwnProps {}\n\nconst Inset = React.forwardRef<InsetElement, InsetProps>((props, forwardedRef) => {\n  const { asChild, className, ...insetProps } = extractProps(props, insetPropDefs, marginPropDefs);\n  const Comp = asChild ? Slot.Root : 'div';\n  return <Comp {...insetProps} ref={forwardedRef} className={classNames('rt-Inset', className)} />;\n});\nInset.displayName = 'Inset';\n\nexport { Inset };\nexport type { InsetProps };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/kbd.css",
    "content": "/* stylelint-disable selector-max-type */\n/* Disable selector-max-type rule to target individual element types. */\n\n:where(.radix-themes) {\n  /* prettier-ignore */\n  --kbd-box-shadow:\n    inset 0 -0.05em 0.5em var(--gray-a2),\n    inset 0 0.05em var(--white-a12),\n    inset 0 0.25em 0.5em var(--gray-a2),\n    inset 0 -0.05em var(--gray-a6),\n    0 0 0 0.05em var(--gray-a5),\n    0 0.08em 0.17em var(--gray-a7);\n}\n:is(.dark, .dark-theme),\n:is(.dark, .dark-theme) :where(.radix-themes:not(.light, .light-theme)) {\n  /* prettier-ignore */\n  --kbd-box-shadow:\n    inset 0 -0.05em 0.5em var(--gray-a3),\n    inset 0 0.05em var(--gray-a11),\n    inset 0 0.25em 0.5em var(--gray-a2),\n    inset 0 -0.1em var(--black-a11),\n    0 0 0 0.075em var(--gray-a7),\n    0 0.08em 0.17em var(--black-a12);\n}\n\n.rt-Kbd {\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  flex-shrink: 0;\n  font-family: var(--default-font-family);\n  font-weight: normal;\n  vertical-align: text-top;\n  white-space: nowrap;\n  user-select: none;\n\n  position: relative;\n  top: -0.03em;\n\n  font-size: 0.75em;\n  min-width: 1.75em;\n  line-height: 1.7em;\n  box-sizing: border-box;\n  padding-left: 0.5em;\n  padding-right: 0.5em;\n  padding-bottom: 0.05em;\n  word-spacing: -0.1em;\n  border-radius: calc(var(--radius-factor) * 0.35em);\n  letter-spacing: var(--letter-spacing, var(--default-letter-spacing));\n\n  /* Make sure that the height is not stretched in a Flex/Grid layout */\n  height: fit-content;\n\n  color: var(--gray-12);\n}\n\n/***************************************************************************************************\n *                                                                                                 *\n * VARIANTS                                                                                        *\n *                                                                                                 *\n ***************************************************************************************************/\n\n.rt-Kbd:where(.rt-variant-classic) {\n  background-color: var(--gray-1);\n  box-shadow: var(--kbd-box-shadow);\n  transition:\n    box-shadow 120ms,\n    background-color 120ms;\n\n  &:where(:any-link, button) {\n    @media (hover: hover) {\n      &:where(:hover) {\n        transition-duration: 40ms, 40ms;\n        background-color: var(--color-background);\n        box-shadow:\n          var(--kbd-box-shadow),\n          0 0 0 0.05em var(--gray-a5);\n      }\n    }\n    &:where([data-state='open']) {\n      transition-duration: 40ms, 40ms;\n      background-color: var(--color-background);\n      box-shadow:\n        var(--kbd-box-shadow),\n        0 0 0 0.05em var(--gray-a5);\n    }\n    &:where(:active:not([data-state='open'])) {\n      padding-top: 0.05em;\n      padding-bottom: 0;\n      transition-duration: 40ms, 40ms;\n      background-color: var(--gray-2);\n      box-shadow:\n        inset 0 0.05em var(--black-a3),\n        0 0 0 0.05em var(--gray-a7);\n    }\n    &:where(:focus-visible) {\n      outline: 2px solid var(--focus-8);\n    }\n  }\n}\n\n.rt-Kbd:where(.rt-variant-soft) {\n  background-color: var(--gray-a3);\n\n  &:where(:any-link, button) {\n    @media (hover: hover) {\n      &:where(:hover) {\n        background-color: var(--gray-a4);\n      }\n    }\n    &:where([data-state='open']) {\n      background-color: var(--gray-a4);\n    }\n    &:where(:active:not([data-state='open'])) {\n      background-color: var(--gray-a5);\n    }\n    &:where(:focus-visible) {\n      outline: 2px solid var(--focus-8);\n    }\n  }\n}\n\n/***************************************************************************************************\n *                                                                                                 *\n * SIZES                                                                                           *\n *                                                                                                 *\n ***************************************************************************************************/\n\n@breakpoints {\n  .rt-Kbd {\n    &:where(.rt-r-size-1) {\n      font-size: calc(var(--font-size-1) * 0.8);\n      --letter-spacing: var(--letter-spacing-1);\n    }\n    &:where(.rt-r-size-2) {\n      font-size: calc(var(--font-size-2) * 0.8);\n      --letter-spacing: var(--letter-spacing-2);\n    }\n    &:where(.rt-r-size-3) {\n      font-size: calc(var(--font-size-3) * 0.8);\n      --letter-spacing: var(--letter-spacing-3);\n    }\n    &:where(.rt-r-size-4) {\n      font-size: calc(var(--font-size-4) * 0.8);\n      --letter-spacing: var(--letter-spacing-4);\n    }\n    &:where(.rt-r-size-5) {\n      font-size: calc(var(--font-size-5) * 0.8);\n      --letter-spacing: var(--letter-spacing-5);\n    }\n    &:where(.rt-r-size-6) {\n      font-size: calc(var(--font-size-6) * 0.8);\n      --letter-spacing: var(--letter-spacing-6);\n    }\n    &:where(.rt-r-size-7) {\n      font-size: calc(var(--font-size-7) * 0.8);\n      --letter-spacing: var(--letter-spacing-7);\n    }\n    &:where(.rt-r-size-8) {\n      font-size: calc(var(--font-size-8) * 0.8);\n      --letter-spacing: var(--letter-spacing-8);\n    }\n    &:where(.rt-r-size-9) {\n      font-size: calc(var(--font-size-9) * 0.8);\n      --letter-spacing: var(--letter-spacing-9);\n    }\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/kbd.props.tsx",
    "content": "import { asChildPropDef } from '../props/as-child.prop.js';\n\nimport type { PropDef } from '../props/prop-def.js';\n\nconst sizes = ['1', '2', '3', '4', '5', '6', '7', '8', '9'] as const;\nconst variants = ['classic', 'soft'] as const;\n\nconst kbdPropDefs = {\n  ...asChildPropDef,\n  size: {\n    type: 'enum',\n    className: 'rt-r-size',\n    values: sizes,\n    responsive: true,\n  },\n  variant: {\n    type: 'enum',\n    className: 'rt-variant',\n    values: variants,\n    default: 'classic',\n  },\n} satisfies {\n  size: PropDef<(typeof sizes)[number]>;\n  variant: PropDef<(typeof variants)[number]>;\n};\n\nexport { kbdPropDefs };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/kbd.tsx",
    "content": "import * as React from 'react';\nimport classNames from 'classnames';\nimport { Slot } from 'radix-ui';\n\nimport { kbdPropDefs } from './kbd.props.js';\nimport { extractProps } from '../helpers/extract-props.js';\nimport { marginPropDefs } from '../props/margin.props.js';\n\nimport type { MarginProps } from '../props/margin.props.js';\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\nimport type { GetPropDefTypes } from '../props/prop-def.js';\n\ntype KbdElement = React.ElementRef<'kbd'>;\ntype KbdOwnProps = GetPropDefTypes<typeof kbdPropDefs>;\ninterface KbdProps extends ComponentPropsWithout<'kbd', RemovedProps>, MarginProps, KbdOwnProps {}\nconst Kbd = React.forwardRef<KbdElement, KbdProps>((props, forwardedRef) => {\n  const { asChild, className, ...kbdProps } = extractProps(props, kbdPropDefs, marginPropDefs);\n  const Comp = asChild ? Slot.Root : 'kbd';\n  return (\n    <Comp\n      {...kbdProps}\n      ref={forwardedRef}\n      className={classNames('rt-reset', 'rt-Kbd', className)}\n    />\n  );\n});\nKbd.displayName = 'Kbd';\n\nexport { Kbd };\nexport type { KbdProps };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/layout.css",
    "content": "@import './box.css';\n@import './flex.css';\n@import './grid.css';\n@import './section.css';\n@import './container.css';\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/link.css",
    "content": ".rt-Link {\n  /* Override the cursor on the HTML element even if rendering a <button> */\n  /* stylelint-disable selector-max-type */\n  &:where(:any-link, button) {\n    cursor: var(--cursor-link);\n  }\n\n  &:where(:disabled, [data-disabled]) {\n    cursor: var(--cursor-disabled);\n  }\n\n  &:where(:focus-visible) {\n    border-radius: calc(0.07em * var(--radius-factor));\n    outline-color: var(--focus-8);\n    outline-width: 2px;\n    outline-style: solid;\n    outline-offset: 2px;\n  }\n\n  :where([data-accent-color]:not(.radix-themes, .rt-high-contrast)) &:where([data-accent-color='']) {\n    color: var(--accent-12);\n  }\n}\n\n/***************************************************************************************************\n *                                                                                                 *\n * UNDERLINE                                                                                       *\n *                                                                                                 *\n ***************************************************************************************************/\n\n.rt-Link {\n  &:where(:any-link, button) {\n    text-decoration-line: none;\n    text-decoration-style: solid;\n    text-decoration-thickness: min(2px, max(1px, 0.05em));\n    text-underline-offset: calc(0.025em + 2px);\n    text-decoration-color: var(--accent-a5);\n\n    /* Enhancement for bright colors */\n    @supports (color: color-mix(in oklab, white, black)) {\n      text-decoration-color: color-mix(in oklab, var(--accent-a5), var(--gray-a6));\n    }\n\n    @media (pointer: coarse) {\n      /* Better -webkit-tap-highlight-color */\n      &:where(:active:not(:focus-visible, [data-state='open'])) {\n        outline: 0.75em solid var(--accent-a4);\n        outline-offset: -0.6em;\n      }\n    }\n\n    &:where(.rt-underline-auto) {\n      @media (hover: hover) {\n        &:where(:hover) {\n          text-decoration-line: underline;\n        }\n      }\n\n      &:where(.rt-high-contrast),\n      :where([data-accent-color]:not(.radix-themes, .rt-high-contrast)) &:where([data-accent-color='']) {\n        text-decoration-line: underline;\n        text-decoration-color: var(--accent-a6);\n\n        /* Enhancement for bright colors */\n        @supports (color: color-mix(in oklab, white, black)) {\n          text-decoration-color: color-mix(in oklab, var(--accent-a6), var(--gray-a6));\n        }\n      }\n    }\n\n    &:where(.rt-underline-hover) {\n      @media (hover: hover) {\n        &:where(:hover) {\n          text-decoration-line: underline;\n        }\n      }\n    }\n\n    &:where(.rt-underline-always) {\n      text-decoration-line: underline;\n    }\n  }\n}\n\n/* all focused states underline */\n\n.rt-Link:where(:focus-visible) {\n  text-decoration-line: none;\n}\n\n/* Enhancement – hide underline for when Link's only child is a Code where underline is hard to see */\n.rt-Link:where(:has(.rt-Code:not(.rt-variant-ghost):only-child)) {\n  text-decoration-color: transparent;\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/link.props.tsx",
    "content": "import { asChildPropDef } from '../props/as-child.prop.js';\nimport { accentColorPropDef } from '../props/color.prop.js';\nimport { highContrastPropDef } from '../props/high-contrast.prop.js';\nimport { leadingTrimPropDef } from '../props/leading-trim.prop.js';\nimport { textWrapPropDef } from '../props/text-wrap.prop.js';\nimport { truncatePropDef } from '../props/truncate.prop.js';\nimport { weightPropDef } from '../props/weight.prop.js';\n\nimport type { PropDef } from '../props/prop-def.js';\n\nconst sizes = ['1', '2', '3', '4', '5', '6', '7', '8', '9'] as const;\nconst underline = ['auto', 'always', 'hover', 'none'] as const;\n\nconst linkPropDefs = {\n  ...asChildPropDef,\n  size: {\n    type: 'enum',\n    className: 'rt-r-size',\n    values: sizes,\n    responsive: true,\n  },\n  ...weightPropDef,\n  ...leadingTrimPropDef,\n  ...truncatePropDef,\n  ...textWrapPropDef,\n  underline: { type: 'enum', className: 'rt-underline', values: underline, default: 'auto' },\n  ...accentColorPropDef,\n  ...highContrastPropDef,\n} satisfies {\n  size: PropDef<(typeof sizes)[number]>;\n  underline: PropDef<(typeof underline)[number]>;\n};\n\nexport { linkPropDefs };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/link.tsx",
    "content": "import * as React from 'react';\nimport classNames from 'classnames';\n\nimport { Text } from './text.js';\nimport { extractProps } from '../helpers/extract-props.js';\nimport { linkPropDefs } from './link.props.js';\n\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\nimport type { MarginProps } from '../props/margin.props.js';\nimport type { GetPropDefTypes } from '../props/prop-def.js';\n\ntype LinkElement = React.ElementRef<'a'>;\ntype LinkOwnProps = GetPropDefTypes<typeof linkPropDefs>;\ninterface LinkProps extends ComponentPropsWithout<'a', RemovedProps>, MarginProps, LinkOwnProps {}\nconst Link = React.forwardRef<LinkElement, LinkProps>((props, forwardedRef) => {\n  const { children, className, color, asChild, ...linkProps } = extractProps(props, linkPropDefs);\n  return (\n    <Text\n      {...linkProps}\n      data-accent-color={color}\n      ref={forwardedRef}\n      asChild\n      className={classNames('rt-reset', 'rt-Link', className)}\n    >\n      {asChild ? (\n        children\n      ) : (\n        // eslint-disable-next-line jsx-a11y/anchor-is-valid\n        <a>{children}</a>\n      )}\n    </Text>\n  );\n});\nLink.displayName = 'Link';\n\nexport { Link };\nexport type { LinkProps };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/popover.css",
    "content": ".rt-PopoverContent {\n  background-color: var(--color-panel-solid);\n  box-shadow: var(--shadow-5);\n  min-width: var(--radix-popover-trigger-width);\n  outline: 0;\n  overflow: auto;\n  position: relative;\n\n  --inset-padding-top: var(--popover-content-padding);\n  --inset-padding-right: var(--popover-content-padding);\n  --inset-padding-bottom: var(--popover-content-padding);\n  --inset-padding-left: var(--popover-content-padding);\n  padding: var(--popover-content-padding);\n  box-sizing: border-box;\n\n  transform-origin: var(--radix-popover-content-transform-origin);\n}\n\n/***************************************************************************************************\n *                                                                                                 *\n * SIZES                                                                                           *\n *                                                                                                 *\n ***************************************************************************************************/\n\n@breakpoints {\n  .rt-PopoverContent {\n    &:where(.rt-r-size-1) {\n      --popover-content-padding: var(--space-3);\n      border-radius: var(--radius-4);\n    }\n    &:where(.rt-r-size-2) {\n      --popover-content-padding: var(--space-4);\n      border-radius: var(--radius-4);\n    }\n    &:where(.rt-r-size-3) {\n      --popover-content-padding: var(--space-5);\n      border-radius: var(--radius-5);\n    }\n    &:where(.rt-r-size-4) {\n      --popover-content-padding: var(--space-6);\n      border-radius: var(--radius-5);\n    }\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/popover.props.tsx",
    "content": "import { asChildPropDef } from '../props/as-child.prop.js';\nimport { heightPropDefs } from '../props/height.props.js';\nimport { widthPropDefs } from '../props/width.props.js';\n\nimport type { PropDef, GetPropDefTypes } from '../props/prop-def.js';\n\nconst contentSizes = ['1', '2', '3', '4'] as const;\n\nconst popoverContentPropDefs = {\n  ...asChildPropDef,\n  size: {\n    type: 'enum',\n    className: 'rt-r-size',\n    values: contentSizes,\n    default: '2',\n    responsive: true,\n  },\n  width: widthPropDefs.width,\n  minWidth: widthPropDefs.minWidth,\n  maxWidth: { ...widthPropDefs.maxWidth, default: '480px' },\n  ...heightPropDefs,\n} satisfies {\n  width: PropDef<string>;\n  minWidth: PropDef<string>;\n  maxWidth: PropDef<string>;\n  size: PropDef<(typeof contentSizes)[number]>;\n};\n\ntype PopoverContentOwnProps = GetPropDefTypes<\n  typeof popoverContentPropDefs &\n    typeof asChildPropDef &\n    typeof widthPropDefs &\n    typeof heightPropDefs\n>;\n\nexport { popoverContentPropDefs };\nexport type { PopoverContentOwnProps };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/popover.tsx",
    "content": "import * as React from 'react';\nimport classNames from 'classnames';\nimport { Popover as PopoverPrimitive } from 'radix-ui';\n\nimport { extractProps } from '../helpers/extract-props.js';\nimport { requireReactElement } from '../helpers/require-react-element.js';\nimport { popoverContentPropDefs } from './popover.props.js';\nimport { Theme } from './theme.js';\n\nimport type { PopoverContentOwnProps } from './popover.props.js';\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\n\ninterface PopoverRootProps extends React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Root> {}\nconst PopoverRoot: React.FC<PopoverRootProps> = (props: PopoverRootProps) => (\n  <PopoverPrimitive.Root {...props} />\n);\nPopoverRoot.displayName = 'Popover.Root';\n\ntype PopoverTriggerElement = React.ElementRef<typeof PopoverPrimitive.Trigger>;\ninterface PopoverTriggerProps extends ComponentPropsWithout<\n  typeof PopoverPrimitive.Trigger,\n  RemovedProps\n> {}\nconst PopoverTrigger = React.forwardRef<PopoverTriggerElement, PopoverTriggerProps>(\n  ({ children, ...props }, forwardedRef) => (\n    <PopoverPrimitive.Trigger {...props} ref={forwardedRef} asChild>\n      {requireReactElement(children)}\n    </PopoverPrimitive.Trigger>\n  ),\n);\nPopoverTrigger.displayName = 'Popover.Trigger';\n\ntype PopoverContentElement = React.ElementRef<typeof PopoverPrimitive.Content>;\ninterface PopoverContentProps\n  extends\n    ComponentPropsWithout<typeof PopoverPrimitive.Content, RemovedProps>,\n    PopoverContentOwnProps {\n  container?: React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Portal>['container'];\n}\nconst PopoverContent = React.forwardRef<PopoverContentElement, PopoverContentProps>(\n  (props, forwardedRef) => {\n    const { className, forceMount, container, ...contentProps } = extractProps(\n      props,\n      popoverContentPropDefs,\n    );\n    return (\n      <PopoverPrimitive.Portal container={container} forceMount={forceMount}>\n        <Theme asChild>\n          <PopoverPrimitive.Content\n            align=\"start\"\n            sideOffset={8}\n            collisionPadding={10}\n            {...contentProps}\n            ref={forwardedRef}\n            className={classNames('rt-PopperContent', 'rt-PopoverContent', className)}\n          />\n        </Theme>\n      </PopoverPrimitive.Portal>\n    );\n  },\n);\nPopoverContent.displayName = 'Popover.Content';\n\ntype PopoverCloseElement = React.ElementRef<typeof PopoverPrimitive.Close>;\ninterface PopoverCloseProps extends ComponentPropsWithout<\n  typeof PopoverPrimitive.Close,\n  RemovedProps\n> {}\nconst PopoverClose = React.forwardRef<PopoverCloseElement, PopoverCloseProps>(\n  ({ children, ...props }, forwardedRef) => (\n    <PopoverPrimitive.Close {...props} ref={forwardedRef} asChild>\n      {requireReactElement(children)}\n    </PopoverPrimitive.Close>\n  ),\n);\nPopoverClose.displayName = 'Popover.Close';\n\ntype PopoverAnchorElement = React.ElementRef<typeof PopoverPrimitive.Anchor>;\ninterface PopoverAnchorProps extends React.ComponentPropsWithoutRef<\n  typeof PopoverPrimitive.Anchor\n> {}\nconst PopoverAnchor = React.forwardRef<PopoverAnchorElement, PopoverAnchorProps>(\n  ({ children, ...props }, forwardedRef) => (\n    <PopoverPrimitive.Anchor {...props} ref={forwardedRef} />\n  ),\n);\n\nPopoverAnchor.displayName = 'Popover.Anchor';\n\nexport {\n  PopoverRoot as Root,\n  PopoverContent as Content,\n  PopoverTrigger as Trigger,\n  PopoverClose as Close,\n  PopoverAnchor as Anchor,\n};\nexport type {\n  PopoverRootProps as RootProps,\n  PopoverContentProps as ContentProps,\n  PopoverTriggerProps as TriggerProps,\n  PopoverCloseProps as CloseProps,\n  PopoverAnchorProps as AnchorProps,\n};\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/portal.tsx",
    "content": "import { Portal as PortalPrimitive } from 'radix-ui';\nexport const Portal = PortalPrimitive.Root;\nexport const Root = PortalPrimitive.Root;\nexport type PortalProps = PortalPrimitive.PortalProps;\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/progress.css",
    "content": ".rt-ProgressRoot {\n  --progress-value: 0;\n  --progress-max: 100;\n  --progress-duration: 5s;\n  pointer-events: none;\n  position: relative;\n  overflow: hidden;\n  flex-grow: 1;\n  height: var(--progress-height);\n  border-radius: max(\n    calc(var(--radius-factor) * var(--progress-height) / 3),\n    calc(var(--radius-factor) * var(--radius-thumb))\n  );\n\n  /* A pseudo-element for shadows */\n  &::after {\n    position: absolute;\n    inset: 0;\n    content: '';\n    border-radius: inherit;\n  }\n}\n\n:where(.radix-themes) {\n  --progress-indicator-after-linear-gradient: var(--white-a5), var(--white-a9), var(--white-a5);\n}\n:is(.dark, .dark-theme),\n:is(.dark, .dark-theme) :where(.radix-themes:not(.light, .light-theme)) {\n  --progress-indicator-after-linear-gradient: var(--white-a3), var(--white-a6), var(--white-a3);\n}\n.rt-ProgressIndicator {\n  display: block;\n  height: 100%;\n  width: 100%;\n\n  transform: scaleX(calc(var(--progress-value) / var(--progress-max)));\n  transform-origin: left center;\n  transition: transform 120ms;\n\n  &:where([data-state='indeterminate']) {\n    animation-name:\n      rt-progress-indicator-indeterminate-grow, var(--progress-indicator-indeterminate-animation-start),\n      var(--progress-indicator-indeterminate-animation-repeat);\n    animation-delay: 0s, calc(var(--progress-duration) + 5s), calc(var(--progress-duration) + 7.5s);\n    animation-duration: var(--progress-duration), 2.5s, 5s;\n    animation-iteration-count: 1, 1, infinite;\n    animation-fill-mode: both, none, none;\n    animation-direction: normal, normal, alternate;\n\n    /* A pseudo-element for a shine animation */\n    &::after {\n      position: absolute;\n      inset: 0;\n      content: '';\n      width: 400%;\n\n      animation-name: rt-progress-indicator-indeterminate-shine-from-left;\n      animation-delay: calc(var(--progress-duration) + 5s);\n      animation-duration: 5s;\n      animation-fill-mode: backwards;\n      animation-iteration-count: infinite;\n\n      background-image: linear-gradient(\n        to right,\n        transparent 25%,\n        var(--progress-indicator-after-linear-gradient),\n        transparent 75%\n      );\n    }\n  }\n}\n\n@keyframes rt-progress-indicator-indeterminate-grow {\n  0% {\n    transform: scaleX(0.01);\n  }\n  20% {\n    transform: scaleX(0.1);\n  }\n  30% {\n    transform: scaleX(0.6);\n  }\n  40%,\n  50% {\n    transform: scaleX(0.9);\n  }\n  100% {\n    transform: scaleX(1);\n  }\n}\n\n@keyframes rt-progress-indicator-indeterminate-shine-from-left {\n  0% {\n    transform: translateX(-100%);\n  }\n  100% {\n    transform: translateX(0%);\n  }\n}\n\n/***************************************************************************************************\n *                                                                                                 *\n * SIZES                                                                                           *\n *                                                                                                 *\n ***************************************************************************************************/\n\n@breakpoints {\n  .rt-ProgressRoot {\n    &:where(.rt-r-size-1) {\n      --progress-height: var(--space-1);\n    }\n    &:where(.rt-r-size-2) {\n      --progress-height: calc(var(--space-2) * 0.75);\n    }\n    &:where(.rt-r-size-3) {\n      --progress-height: var(--space-2);\n    }\n  }\n}\n\n/***************************************************************************************************\n *                                                                                                 *\n * VARIANTS                                                                                        *\n *                                                                                                 *\n ***************************************************************************************************/\n\n/* surface */\n\n.rt-ProgressRoot:where(.rt-variant-surface) {\n  --progress-indicator-indeterminate-animation-start: rt-progress-indicator-surface-indeterminate-fade;\n  --progress-indicator-indeterminate-animation-repeat: rt-progress-indicator-surface-indeterminate-pulse;\n  background-color: var(--gray-a3);\n\n  &::after {\n    box-shadow: inset 0 0 0 1px var(--gray-a4);\n  }\n\n  & :where(.rt-ProgressIndicator) {\n    background-color: var(--accent-track);\n  }\n}\n\n@keyframes rt-progress-indicator-surface-indeterminate-fade {\n  100% {\n    background-color: var(--accent-7);\n  }\n}\n\n@keyframes rt-progress-indicator-surface-indeterminate-pulse {\n  0% {\n    background-color: var(--accent-7);\n  }\n  100% {\n    background-color: var(--accent-track);\n  }\n}\n\n/* classic */\n\n.rt-ProgressRoot:where(.rt-variant-classic) {\n  --progress-indicator-indeterminate-animation-start: rt-progress-indicator-classic-indeterminate-fade;\n  --progress-indicator-indeterminate-animation-repeat: rt-progress-indicator-classic-indeterminate-pulse;\n  background-color: var(--gray-a3);\n\n  &::after {\n    box-shadow: var(--shadow-1);\n  }\n\n  & :where(.rt-ProgressIndicator) {\n    background-color: var(--accent-track);\n  }\n}\n\n@keyframes rt-progress-indicator-classic-indeterminate-fade {\n  100% {\n    background-color: var(--accent-7);\n  }\n}\n\n@keyframes rt-progress-indicator-classic-indeterminate-pulse {\n  0% {\n    background-color: var(--accent-7);\n  }\n  100% {\n    background-color: var(--accent-track);\n  }\n}\n\n/* soft */\n\n.rt-ProgressRoot:where(.rt-variant-soft) {\n  --progress-indicator-indeterminate-animation-start: rt-progress-indicator-soft-indeterminate-fade;\n  --progress-indicator-indeterminate-animation-repeat: rt-progress-indicator-soft-indeterminate-pulse;\n  background-color: var(--gray-a4);\n  /* Blend with white to increase contrast in dark mode */\n  background-image: linear-gradient(var(--white-a1), var(--white-a1));\n\n  & :where(.rt-ProgressIndicator) {\n    background-image: linear-gradient(var(--accent-a5), var(--accent-a5));\n    background-color: var(--accent-8);\n\n    &::after {\n      opacity: 0.75;\n    }\n  }\n}\n\n@keyframes rt-progress-indicator-soft-indeterminate-fade {\n  100% {\n    background-color: var(--accent-5);\n  }\n}\n\n@keyframes rt-progress-indicator-soft-indeterminate-pulse {\n  0% {\n    background-color: var(--accent-5);\n  }\n  100% {\n    background-color: var(--accent-7);\n  }\n}\n\n/* all high-contrast */\n.rt-ProgressRoot:where(.rt-high-contrast) {\n  --progress-indicator-indeterminate-animation-start: rt-progress-indicator-high-contrast-indeterminate-fade;\n  --progress-indicator-indeterminate-animation-repeat: rt-progress-indicator-high-contrast-indeterminate-pulse;\n\n  & :where(.rt-ProgressIndicator) {\n    background-color: var(--accent-12);\n\n    &::after {\n      opacity: 0.75;\n    }\n  }\n}\n\n@keyframes rt-progress-indicator-high-contrast-indeterminate-fade {\n  100% {\n    opacity: 0.8;\n  }\n}\n\n@keyframes rt-progress-indicator-high-contrast-indeterminate-pulse {\n  0% {\n    opacity: 0.8;\n  }\n  100% {\n    opacity: 1;\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/progress.props.tsx",
    "content": "import { colorPropDef } from '../props/color.prop.js';\nimport { highContrastPropDef } from '../props/high-contrast.prop.js';\nimport { radiusPropDef } from '../props/radius.prop.js';\n\nimport type { PropDef } from '../props/prop-def.js';\n\nconst sizes = ['1', '2', '3'] as const;\nconst variants = ['classic', 'surface', 'soft'] as const;\n\nconst progressPropDefs = {\n  size: { type: 'enum', className: 'rt-r-size', values: sizes, default: '2', responsive: true },\n  variant: { type: 'enum', className: 'rt-variant', values: variants, default: 'surface' },\n  ...colorPropDef,\n  ...highContrastPropDef,\n  ...radiusPropDef,\n  duration: { type: 'string' },\n} satisfies {\n  size: PropDef<(typeof sizes)[number]>;\n  variant: PropDef<(typeof variants)[number]>;\n  duration: PropDef<string>;\n};\n\nexport { progressPropDefs };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/progress.tsx",
    "content": "import * as React from 'react';\nimport classNames from 'classnames';\nimport { Progress as ProgressPrimitive } from 'radix-ui';\n\nimport { progressPropDefs } from './progress.props.js';\nimport { extractProps } from '../helpers/extract-props.js';\nimport { mergeStyles } from '../helpers/merge-styles.js';\nimport { marginPropDefs } from '../props/margin.props.js';\n\nimport type { MarginProps } from '../props/margin.props.js';\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\nimport type { GetPropDefTypes } from '../props/prop-def.js';\n\ntype ProgressElement = React.ElementRef<typeof ProgressPrimitive.Root>;\ntype ProgressOwnProps = GetPropDefTypes<typeof progressPropDefs>;\ninterface ProgressProps\n  extends\n    ComponentPropsWithout<typeof ProgressPrimitive.Root, RemovedProps | 'children'>,\n    MarginProps,\n    ProgressOwnProps {\n  duration?: `${number}s` | `${number}ms`;\n}\nconst Progress = React.forwardRef<ProgressElement, ProgressProps>((props, forwardedRef) => {\n  const { className, style, color, radius, duration, ...progressProps } = extractProps(\n    props,\n    progressPropDefs,\n    marginPropDefs,\n  );\n\n  return (\n    <ProgressPrimitive.Root\n      data-accent-color={color}\n      data-radius={radius}\n      ref={forwardedRef}\n      className={classNames('rt-ProgressRoot', className)}\n      style={mergeStyles(\n        {\n          '--progress-duration': 'value' in progressProps ? undefined : duration,\n          '--progress-value': 'value' in progressProps ? progressProps.value : undefined,\n          '--progress-max': 'max' in progressProps ? progressProps.max : undefined,\n        },\n        style,\n      )}\n      {...progressProps}\n      asChild={false}\n    >\n      <ProgressPrimitive.Indicator className=\"rt-ProgressIndicator\" />\n    </ProgressPrimitive.Root>\n  );\n});\nProgress.displayName = 'Progress';\n\nexport { Progress };\nexport type { ProgressProps };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/quote.css",
    "content": ".rt-Quote {\n  box-sizing: border-box;\n  font-family: var(--quote-font-family);\n  font-size: calc(var(--quote-font-size-adjust) * 1em);\n  font-style: var(--quote-font-style);\n  font-weight: var(--quote-font-weight);\n  line-height: 1.25;\n  letter-spacing: calc(var(--quote-letter-spacing) + var(--letter-spacing, var(--default-letter-spacing)));\n  color: inherit;\n\n  & :where(&) {\n    font-size: inherit;\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/quote.props.tsx",
    "content": "import { asChildPropDef } from '../props/as-child.prop.js';\nimport { textWrapPropDef } from '../props/text-wrap.prop.js';\nimport { truncatePropDef } from '../props/truncate.prop.js';\n\nconst quotePropDefs = {\n  ...asChildPropDef,\n  ...truncatePropDef,\n  ...textWrapPropDef,\n};\n\nexport { quotePropDefs };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/quote.tsx",
    "content": "import * as React from 'react';\nimport classNames from 'classnames';\nimport { Slot } from 'radix-ui';\n\nimport { quotePropDefs } from './quote.props.js';\nimport { extractProps } from '../helpers/extract-props.js';\n\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\nimport type { GetPropDefTypes } from '../props/prop-def.js';\n\ntype QuoteElement = React.ElementRef<'q'>;\ntype QuoteOwnProps = GetPropDefTypes<typeof quotePropDefs>;\ninterface QuoteProps extends ComponentPropsWithout<'q', RemovedProps>, QuoteOwnProps {}\nconst Quote = React.forwardRef<QuoteElement, QuoteProps>((props, forwardedRef) => {\n  const { asChild, className, ...quoteProps } = extractProps(props, quotePropDefs);\n  const Comp = asChild ? Slot.Root : 'q';\n  return <Comp {...quoteProps} ref={forwardedRef} className={classNames('rt-Quote', className)} />;\n});\nQuote.displayName = 'Quote';\n\nexport { Quote };\nexport type { QuoteProps };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/radio-cards.css",
    "content": "@import './_internal/base-card.css';\n\n.rt-RadioCardsRoot {\n  line-height: var(--line-height);\n  letter-spacing: var(--letter-spacing);\n  cursor: default;\n}\n\n.rt-RadioCardsItem {\n  --base-card-padding-top: var(--radio-cards-item-padding-y);\n  --base-card-padding-right: var(--radio-cards-item-padding-x);\n  --base-card-padding-bottom: var(--radio-cards-item-padding-y);\n  --base-card-padding-left: var(--radio-cards-item-padding-x);\n  --base-card-border-radius: var(--radio-cards-item-border-radius);\n  --base-card-border-width: var(--radio-cards-item-border-width);\n\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  gap: var(--space-2);\n\n  & > * {\n    /* Avoid unintentional drag interactions (e.g. on images) */\n    pointer-events: none;\n  }\n  /* stylelint-disable-next-line selector-max-type */\n  & > :where(svg) {\n    /* Don’t squish icons */\n    flex-shrink: 0;\n  }\n  &::after {\n    outline-offset: -1px;\n  }\n}\n\n/* * * * * * * * * * * * * * * * * * * */\n/*                                     */\n/*                Sizes                */\n/*                                     */\n/* * * * * * * * * * * * * * * * * * * */\n\n@breakpoints {\n  .rt-RadioCardsRoot {\n    /* 40px height for the card with one line of text */\n    &:where(.rt-r-size-1) {\n      font-size: var(--font-size-2);\n      --line-height: var(--line-height-2);\n      --letter-spacing: var(--letter-spacing-2);\n      --radio-cards-item-padding-x: var(--space-3);\n      --radio-cards-item-padding-y: calc(var(--space-3) / 1.2);\n      --radio-cards-item-border-radius: var(--radius-3);\n    }\n    /* 48px height for the card with one line of text */\n    &:where(.rt-r-size-2) {\n      font-size: var(--font-size-2);\n      --line-height: var(--line-height-2);\n      --letter-spacing: var(--letter-spacing-2);\n      --radio-cards-item-padding-x: var(--space-4);\n      --radio-cards-item-padding-y: calc(var(--space-4) * 0.875);\n      --radio-cards-item-border-radius: var(--radius-3);\n    }\n    /* 64px height for the card with one line of text */\n    &:where(.rt-r-size-3) {\n      font-size: var(--font-size-3);\n      --line-height: var(--line-height-3);\n      --letter-spacing: var(--letter-spacing-3);\n      --radio-cards-item-padding-x: var(--space-5);\n      --radio-cards-item-padding-y: calc(var(--space-5) / 1.2);\n      --radio-cards-item-border-radius: var(--radius-4);\n    }\n  }\n}\n\n/* * * * * * * * * * * * * * * * * * * */\n/*                                     */\n/*         Variants / Surface          */\n/*                                     */\n/* * * * * * * * * * * * * * * * * * * */\n\n:where(.rt-RadioCardsRoot.rt-variant-surface) {\n  .rt-RadioCardsItem {\n    --radio-cards-item-border-width: 1px;\n    --radio-cards-item-background-color: var(--color-surface);\n\n    &::before {\n      background-color: var(--radio-cards-item-background-color);\n    }\n    &::after {\n      box-shadow: var(--base-card-surface-box-shadow);\n    }\n    @media (hover: hover) {\n      &:where(:not(:disabled):not([data-state='checked']):hover) {\n        &::after {\n          box-shadow: var(--base-card-surface-hover-box-shadow);\n        }\n      }\n    }\n  }\n}\n\n/* * * * * * * * * * * * * * * * * * * */\n/*                                     */\n/*         Variants / Classic          */\n/*                                     */\n/* * * * * * * * * * * * * * * * * * * */\n\n:where(.rt-RadioCardsRoot.rt-variant-classic) {\n  .rt-RadioCardsItem {\n    --radio-cards-item-border-width: 1px;\n    --radio-cards-item-background-color: var(--color-surface);\n\n    transition: box-shadow 120ms;\n    box-shadow: var(--base-card-classic-box-shadow-outer);\n\n    &::before {\n      background-color: var(--radio-cards-item-background-color);\n    }\n    &::after {\n      box-shadow: var(--base-card-classic-box-shadow-inner);\n    }\n    @media (hover: hover) {\n      &:where(:not(:disabled):not([data-state='checked']):hover) {\n        transition-duration: 40ms;\n        box-shadow: var(--base-card-classic-hover-box-shadow-outer);\n        &::after {\n          box-shadow: var(--base-card-classic-hover-box-shadow-inner);\n        }\n      }\n    }\n  }\n}\n\n/* * * * * * * * * * * * * * * * * * * */\n/*                                     */\n/*             All checked             */\n/*                                     */\n/* * * * * * * * * * * * * * * * * * * */\n\n.rt-RadioCardsItem:where([data-state='checked']) {\n  &::after {\n    outline: 2px solid var(--accent-indicator);\n  }\n  :where(.rt-RadioCardsRoot.rt-high-contrast) & {\n    &::after {\n      outline-color: var(--accent-12);\n    }\n  }\n}\n\n/* * * * * * * * * * * * * * * * * * * */\n/*                                     */\n/*              All focus              */\n/*                                     */\n/* * * * * * * * * * * * * * * * * * * */\n\n.rt-RadioCardsItem:where(:focus-visible) {\n  &::after {\n    outline: 2px solid var(--focus-8);\n  }\n  &:where([data-state='checked']) {\n    &::before {\n      background-image: linear-gradient(var(--focus-a3), var(--focus-a3));\n    }\n    &::after {\n      outline-color: var(--focus-10);\n    }\n  }\n}\n\n/* * * * * * * * * * * * * * * * * * * */\n/*                                     */\n/*            All disabled             */\n/*                                     */\n/* * * * * * * * * * * * * * * * * * * */\n\n.rt-RadioCardsItem:where(:disabled) {\n  cursor: var(--cursor-disabled);\n  color: var(--gray-a9);\n\n  &::selection {\n    background-color: var(--gray-a5);\n  }\n  &::before {\n    background-image: linear-gradient(var(--gray-a2), var(--gray-a2));\n  }\n  &::after {\n    outline-color: var(--gray-8);\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/radio-cards.props.tsx",
    "content": "import { asChildPropDef } from '../props/as-child.prop.js';\nimport { colorPropDef } from '../props/color.prop.js';\nimport { highContrastPropDef } from '../props/high-contrast.prop.js';\nimport { gridPropDefs } from './grid.props.js';\n\nimport type { PropDef } from '../props/prop-def.js';\n\nconst sizes = ['1', '2', '3'] as const;\nconst variants = ['surface', 'classic'] as const;\n\nconst radioCardsRootPropDefs = {\n  ...asChildPropDef,\n  size: { type: 'enum', className: 'rt-r-size', values: sizes, default: '2', responsive: true },\n  variant: { type: 'enum', className: 'rt-variant', values: variants, default: 'surface' },\n  ...colorPropDef,\n  ...highContrastPropDef,\n  columns: { ...gridPropDefs.columns, default: 'repeat(auto-fit, minmax(160px, 1fr))' },\n  gap: { ...gridPropDefs.gap, default: '4' },\n} satisfies {\n  size: PropDef<(typeof sizes)[number]>;\n  variant: PropDef<(typeof variants)[number]>;\n  columns: PropDef<(typeof gridPropDefs.columns.values)[number]>;\n  gap: PropDef<(typeof gridPropDefs.gap.values)[number]>;\n};\n\nexport { radioCardsRootPropDefs };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/radio-cards.tsx",
    "content": "import * as React from 'react';\nimport classNames from 'classnames';\nimport { RadioGroup as RadioGroupPrimitive } from 'radix-ui';\n\nimport { radioCardsRootPropDefs } from './radio-cards.props.js';\nimport { Grid } from './grid.js';\nimport { extractProps } from '../helpers/extract-props.js';\nimport { marginPropDefs } from '../props/margin.props.js';\n\nimport type { MarginProps } from '../props/margin.props.js';\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\nimport type { GetPropDefTypes } from '../props/prop-def.js';\n\ntype RadioCardsRootElement = React.ElementRef<typeof RadioGroupPrimitive.Root>;\ntype RadioCardsRootOwnProps = GetPropDefTypes<typeof radioCardsRootPropDefs>;\ninterface RadioCardsRootProps\n  extends\n    ComponentPropsWithout<typeof RadioGroupPrimitive.Root, 'asChild' | 'color' | 'defaultChecked'>,\n    MarginProps,\n    RadioCardsRootOwnProps {}\nconst RadioCardsRoot = React.forwardRef<RadioCardsRootElement, RadioCardsRootProps>(\n  (props, forwardedRef) => {\n    const { className, color, ...rootProps } = extractProps(\n      props,\n      radioCardsRootPropDefs,\n      marginPropDefs,\n    );\n    return (\n      <Grid asChild>\n        <RadioGroupPrimitive.Root\n          data-accent-color={color}\n          {...rootProps}\n          ref={forwardedRef}\n          className={classNames('rt-RadioCardsRoot', className)}\n        />\n      </Grid>\n    );\n  },\n);\nRadioCardsRoot.displayName = 'RadioCards.Root';\n\ntype RadioCardsItemElement = React.ElementRef<typeof RadioGroupPrimitive.Item>;\ninterface RadioCardsItemProps\n  extends ComponentPropsWithout<typeof RadioGroupPrimitive.Item, RemovedProps>, MarginProps {}\nconst RadioCardsItem = React.forwardRef<RadioCardsItemElement, RadioCardsItemProps>(\n  ({ className, ...props }, forwardedRef) => (\n    <RadioGroupPrimitive.Item\n      {...props}\n      asChild={false}\n      ref={forwardedRef}\n      className={classNames('rt-reset', 'rt-BaseCard', 'rt-RadioCardsItem', className)}\n    />\n  ),\n);\nRadioCardsItem.displayName = 'RadioCards.Item';\n\nexport { RadioCardsRoot as Root, RadioCardsItem as Item };\nexport type { RadioCardsRootProps as RootProps, RadioCardsItemProps as ItemProps };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/radio-group.css",
    "content": ".rt-RadioGroupRoot {\n  display: flex;\n  flex-direction: column;\n  gap: var(--space-1);\n}\n\n.rt-RadioGroupItem {\n  display: flex;\n  gap: 0.5em;\n\n  /* Make sure whitespace to the right of the text is not clickable */\n  width: fit-content;\n}\n\n.rt-RadioGroupItemInner {\n  /* Make layouts with text truncation possible */\n  min-width: 0;\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/radio-group.props.tsx",
    "content": "import { asChildPropDef } from '../props/as-child.prop.js';\nimport { colorPropDef } from '../props/color.prop.js';\nimport { highContrastPropDef } from '../props/high-contrast.prop.js';\n\nimport type { PropDef } from '../props/prop-def.js';\n\nconst sizes = ['1', '2', '3'] as const;\nconst variants = ['classic', 'surface', 'soft'] as const;\n\nconst radioGroupRootPropDefs = {\n  ...asChildPropDef,\n  size: { type: 'enum', className: 'rt-r-size', values: sizes, default: '2', responsive: true },\n  variant: { type: 'enum', className: 'rt-variant', values: variants, default: 'surface' },\n  ...colorPropDef,\n  ...highContrastPropDef,\n} satisfies {\n  size: PropDef<(typeof sizes)[number]>;\n  variant: PropDef<(typeof variants)[number]>;\n};\n\nexport { radioGroupRootPropDefs };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/radio-group.tsx",
    "content": "'use client';\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { Context } from 'radix-ui/internal';\nimport { RadioGroup as RadioGroupPrimitive } from 'radix-ui';\n\nimport { radioGroupRootPropDefs } from './radio-group.props.js';\nimport { Text } from './text.js';\nimport { extractProps } from '../helpers/extract-props.js';\nimport { marginPropDefs } from '../props/margin.props.js';\n\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\nimport type { MarginProps } from '../props/margin.props.js';\nimport type { GetPropDefTypes } from '../props/prop-def.js';\n\nconst RADIO_GROUP_NAME = 'RadioGroup';\n\ntype ScopedProps<P> = P & { __scopeRadioGroup?: Context.Scope };\nconst [createRadioGroupContext] = Context.createContextScope(RADIO_GROUP_NAME, [\n  RadioGroupPrimitive.createRadioGroupScope,\n]);\nconst useRadioGroupScope = RadioGroupPrimitive.createRadioGroupScope();\n\ntype RadioGroupRootOwnProps = GetPropDefTypes<typeof radioGroupRootPropDefs>;\ntype RadioGroupContextValue = RadioGroupRootOwnProps;\n\nconst [RadioGroupProvider, useRadioGroupContext] =\n  createRadioGroupContext<RadioGroupContextValue>(RADIO_GROUP_NAME);\n\ntype RadioGroupRootElement = React.ElementRef<typeof RadioGroupPrimitive.Root>;\ninterface RadioGroupRootProps\n  extends\n    ComponentPropsWithout<typeof RadioGroupPrimitive.Root, 'asChild' | 'color' | 'defaultChecked'>,\n    MarginProps,\n    RadioGroupRootOwnProps {}\nconst RadioGroupRoot = React.forwardRef<RadioGroupRootElement, RadioGroupRootProps>(\n  (\n    {\n      color = radioGroupRootPropDefs.color.default,\n      highContrast = radioGroupRootPropDefs.highContrast.default,\n      size = radioGroupRootPropDefs.size.default,\n      variant = radioGroupRootPropDefs.variant.default,\n      ...props\n    }: ScopedProps<RadioGroupRootProps>,\n    forwardedRef,\n  ) => {\n    const { __scopeRadioGroup, className, ...rootProps } = extractProps(props, marginPropDefs);\n    const radioGroupScope = useRadioGroupScope(__scopeRadioGroup);\n    return (\n      <RadioGroupProvider\n        scope={__scopeRadioGroup}\n        color={color}\n        highContrast={highContrast}\n        size={size}\n        variant={variant}\n      >\n        <RadioGroupPrimitive.Root\n          {...radioGroupScope}\n          {...rootProps}\n          ref={forwardedRef}\n          className={classNames('rt-RadioGroupRoot', className)}\n        />\n      </RadioGroupProvider>\n    );\n  },\n);\nRadioGroupRoot.displayName = 'RadioGroup.Root';\n\ntype RadioGroupItemElement = React.ElementRef<typeof RadioGroupItemRadio>;\ninterface RadioGroupItemProps\n  extends ComponentPropsWithout<typeof RadioGroupItemRadio, RemovedProps>, MarginProps {}\nconst RadioGroupItem = React.forwardRef<RadioGroupItemElement, RadioGroupItemProps>(\n  (_props: ScopedProps<RadioGroupItemProps>, forwardedRef) => {\n    const { __scopeRadioGroup, children, className, style, ...props } = _props;\n    const { size } = useRadioGroupContext('RadioGroupItem', __scopeRadioGroup);\n\n    // Render `<Text as=\"label\">` if children are provided, otherwise render\n    // the solo radio button to allow building out your custom layouts with it.\n    if (children) {\n      return (\n        <Text\n          as=\"label\"\n          size={size}\n          className={classNames('rt-RadioGroupItem', className)}\n          style={style}\n        >\n          <RadioGroupItemRadio\n            __scopeRadioGroup={__scopeRadioGroup}\n            {...props}\n            ref={forwardedRef}\n          />\n          {children && <span className=\"rt-RadioGroupItemInner\">{children}</span>}\n        </Text>\n      );\n    }\n\n    return (\n      <RadioGroupItemRadio\n        __scopeRadioGroup={__scopeRadioGroup}\n        {...props}\n        ref={forwardedRef}\n        className={className}\n        style={style}\n      />\n    );\n  },\n);\nRadioGroupItem.displayName = 'RadioGroup.Item';\n\ntype RadioGroupItemRadioElement = React.ElementRef<typeof RadioGroupPrimitive.Item>;\ninterface RadioGroupItemRadioProps extends React.ComponentPropsWithoutRef<\n  typeof RadioGroupPrimitive.Item\n> {}\nconst RadioGroupItemRadio = React.forwardRef<\n  RadioGroupItemRadioElement,\n  ScopedProps<RadioGroupItemRadioProps>\n>(({ __scopeRadioGroup, ...props }, forwardedRef) => {\n  const context = useRadioGroupContext('RadioGroupItemRadio', __scopeRadioGroup);\n  const radioGroupScope = useRadioGroupScope(__scopeRadioGroup);\n  const { color, className } = extractProps(\n    { ...props, ...context },\n    radioGroupRootPropDefs,\n    marginPropDefs,\n  );\n  return (\n    <RadioGroupPrimitive.Item\n      {...radioGroupScope}\n      data-accent-color={color}\n      {...props}\n      asChild={false}\n      ref={forwardedRef}\n      className={classNames('rt-reset', 'rt-BaseRadioRoot', className)}\n    />\n  );\n});\nRadioGroupItemRadio.displayName = 'RadioGroup.ItemRadio';\n\nexport { RadioGroupRoot as Root, RadioGroupItem as Item };\nexport type { RadioGroupRootProps as RootProps, RadioGroupItemProps as ItemProps };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/radio.css",
    "content": "@import './_internal/base-radio.css';\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/radio.props.tsx",
    "content": "export { baseRadioPropDefs as radioPropDefs } from './_internal/base-radio.props.js';\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/radio.tsx",
    "content": "'use client';\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { composeEventHandlers } from 'radix-ui/internal';\n\nimport { radioPropDefs } from './radio.props.js';\nimport { marginPropDefs } from '../props/margin.props.js';\nimport { extractProps } from '../helpers/extract-props.js';\n\nimport type { MarginProps } from '../props/margin.props.js';\nimport type { ComponentPropsWithout } from '../helpers/component-props.js';\nimport type { NotInputRadioAttributes } from '../helpers/input-attributes.js';\nimport type { GetPropDefTypes } from '../props/prop-def.js';\n\ntype RadioElement = React.ElementRef<'input'>;\ntype RadioOwnProps = GetPropDefTypes<typeof radioPropDefs> & {\n  value: string;\n  onValueChange?: (value: string) => void;\n};\ntype RadioInputProps = ComponentPropsWithout<\n  'input',\n  NotInputRadioAttributes | 'color' | 'defaultValue' | 'value'\n>;\ninterface RadioProps extends RadioInputProps, MarginProps, RadioOwnProps {}\n\nconst Radio = React.forwardRef<RadioElement, RadioProps>((props, forwardedRef) => {\n  const { className, color, onChange, onValueChange, ...radioProps } = extractProps(\n    props,\n    radioPropDefs,\n    marginPropDefs,\n  );\n  return (\n    <input\n      type=\"radio\"\n      data-accent-color={color}\n      {...radioProps}\n      onChange={composeEventHandlers(onChange, (event) =>\n        onValueChange?.(event.currentTarget.value),\n      )}\n      ref={forwardedRef}\n      className={classNames('rt-reset', 'rt-BaseRadioRoot', 'rt-RadioRoot', className)}\n    />\n  );\n});\nRadio.displayName = 'Radio';\n\nexport { Radio };\nexport type { RadioProps };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/reset.css",
    "content": "/* stylelint-disable selector-max-type */\n/* Disable selector-max-type rule to target individual element types. */\n/* Make sure these tags are wrapped in `:where()` for 0 specificity. */\n\n.rt-reset {\n  /* * * * * * * * * * * * * * * * * * * */\n  /*                                     */\n  /*              Margins                */\n  /*                                     */\n  /* * * * * * * * * * * * * * * * * * * */\n\n  &:where(body, blockquote, dl, dd, figure, p) {\n    margin: 0;\n  }\n\n  /* * * * * * * * * * * * * * * * * * * */\n  /*                                     */\n  /*             Typography              */\n  /*                                     */\n  /* * * * * * * * * * * * * * * * * * * */\n\n  &:where(address, b, cite, code, dfn, em, i, kbd, q, samp, small, strong, var) {\n    font: unset;\n  }\n  &:where(h1, h2, h3, h4, h5, h6) {\n    font: unset;\n    margin: 0;\n  }\n\n  /* * * * * * * * * * * * * * * * * * * */\n  /*                                     */\n  /*        Interactive elements         */\n  /*                                     */\n  /* * * * * * * * * * * * * * * * * * * */\n\n  &:where(a) {\n    all: unset;\n    -webkit-tap-highlight-color: transparent;\n  }\n  &:where(\n      button,\n      select,\n\n      /* Buttons */\n      [type='button'],\n      [type='image'],\n      [type='reset'],\n      [type='submit'],\n\n      /* Non-textual inputs */\n      [type='checkbox'],\n      [type='color'],\n      [type='radio'],\n      [type='range']\n    ) {\n    all: unset;\n    display: inline-block;\n    font-weight: normal;\n    font-style: normal;\n    text-indent: initial;\n    -webkit-tap-highlight-color: transparent;\n  }\n  &:where(label) {\n    -webkit-tap-highlight-color: transparent;\n  }\n  &:where(select) {\n    font-weight: normal;\n    font-style: normal;\n    text-align: start;\n  }\n  &:where(\n      textarea,\n      input:not(\n          /* Buttons */\n          [type='button'],\n          [type='image'],\n          [type='reset'],\n          [type='submit'],\n\n          /* Non-textual inputs */\n          [type='checkbox'],\n          [type='color'],\n          [type='radio'],\n          [type='range']\n        )\n    ) {\n    all: unset;\n    display: block;\n    width: stretch;\n    font-weight: normal;\n    font-style: normal;\n    text-align: start;\n    text-indent: initial;\n    -webkit-tap-highlight-color: transparent;\n\n    /* Make sure parent <label> doesn't change the text cursor */\n    cursor: text;\n\n    /* Recover textarea pre-wrap in Firefox */\n    white-space: pre-wrap;\n  }\n  &:where(:focus) {\n    outline: none;\n  }\n  &::placeholder {\n    color: unset;\n    opacity: unset;\n    /* Weird, but placeholders are selectable in Chrome and Safari */\n    user-select: none;\n  }\n\n  /* * * * * * * * * * * * * * * * * * * */\n  /*                                     */\n  /*               Tables                */\n  /*                                     */\n  /* * * * * * * * * * * * * * * * * * * */\n\n  &:where(table) {\n    all: unset;\n    display: table;\n    text-indent: initial;\n  }\n  &:where(caption) {\n    text-align: inherit;\n  }\n  &:where(td) {\n    padding: 0;\n  }\n  &:where(th) {\n    font-weight: unset;\n    text-align: inherit;\n    padding: 0;\n  }\n\n  /* * * * * * * * * * * * * * * * * * * */\n  /*                                     */\n  /*       Individual style tweaks       */\n  /*                                     */\n  /* * * * * * * * * * * * * * * * * * * */\n\n  &:where(abbr, acronym) {\n    text-decoration: none;\n  }\n  &:where(canvas, object, picture, summary) {\n    display: block;\n  }\n  &:where(del, s) {\n    text-decoration: unset;\n  }\n  &:where(fieldset, hr) {\n    all: unset;\n    display: block;\n  }\n  &:where(legend) {\n    padding: 0;\n    border: none;\n    /* Normalize with label */\n    cursor: default;\n  }\n  &:where(li) {\n    display: block;\n    text-align: unset;\n  }\n  &:where(ol, ul) {\n    list-style: none;\n    margin: 0;\n    padding: 0;\n  }\n  &:where(iframe) {\n    display: block;\n    border: none;\n  }\n  &:where(iframe) {\n    width: stretch;\n  }\n  &:where(ins, u) {\n    text-decoration: none;\n  }\n  &:where(img) {\n    display: block;\n    max-width: 100%;\n  }\n  &:where(svg) {\n    display: block;\n    max-width: 100%;\n    flex-shrink: 0;\n  }\n  &:where(mark) {\n    all: unset;\n  }\n  &:where(pre) {\n    font: unset;\n    margin: unset;\n  }\n  &:where(q)::before,\n  &:where(q)::after {\n    content: '';\n  }\n  &:where(sub, sup) {\n    font: unset;\n    vertical-align: unset;\n  }\n  &:where(details) ::marker,\n  &:where(summary)::marker {\n    content: none;\n  }\n  &:where(video) {\n    display: block;\n    width: stretch;\n  }\n\n  /* * * * * * * * * * * * * * * * * * * */\n  /*                                     */\n  /*               Cursors               */\n  /*                                     */\n  /* * * * * * * * * * * * * * * * * * * */\n\n  &:where(:any-link) {\n    cursor: var(--cursor-link);\n  }\n  &:where(button) {\n    cursor: var(--cursor-button);\n  }\n  &:where(:disabled, [data-disabled]) {\n    cursor: var(--cursor-disabled);\n  }\n  &:where(input[type='checkbox']) {\n    cursor: var(--cursor-checkbox);\n  }\n  &:where(input[type='radio']) {\n    cursor: var(--cursor-radio);\n  }\n\n  /* * * * * * * * * * * * * * * * * * * */\n  /*                                     */\n  /*             Box sizing              */\n  /*                                     */\n  /* * * * * * * * * * * * * * * * * * * */\n\n  &,\n  &::before,\n  &::after {\n    /* Don't reorder this rule or remove \"&\" */\n    box-sizing: border-box;\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/reset.tsx",
    "content": "import * as React from 'react';\nimport classNames from 'classnames';\nimport { Slot } from 'radix-ui';\n\nimport { requireReactElement } from '../helpers/require-react-element.js';\n\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\n\ninterface ResetProps extends ComponentPropsWithout<typeof Slot.Root, RemovedProps> {}\nconst Reset = React.forwardRef<HTMLElement, ResetProps>(\n  ({ className, children, ...props }, forwardedRef) => {\n    return (\n      <Slot.Root {...props} ref={forwardedRef} className={classNames('rt-reset', className)}>\n        {requireReactElement(children)}\n      </Slot.Root>\n    );\n  },\n);\nReset.displayName = 'Reset';\n\nexport { Reset };\nexport type { ResetProps };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/scroll-area.css",
    "content": ".radix-themes {\n  --scrollarea-scrollbar-horizontal-margin-top: var(--space-1);\n  --scrollarea-scrollbar-horizontal-margin-bottom: var(--space-1);\n  --scrollarea-scrollbar-horizontal-margin-left: var(--space-1);\n  --scrollarea-scrollbar-horizontal-margin-right: var(--space-1);\n  --scrollarea-scrollbar-vertical-margin-top: var(--space-1);\n  --scrollarea-scrollbar-vertical-margin-bottom: var(--space-1);\n  --scrollarea-scrollbar-vertical-margin-left: var(--space-1);\n  --scrollarea-scrollbar-vertical-margin-right: var(--space-1);\n}\n\n.rt-ScrollAreaRoot {\n  display: flex;\n  flex-direction: column;\n  overflow: hidden;\n  width: 100%;\n  height: 100%;\n}\n\n.rt-ScrollAreaViewport {\n  display: flex;\n  flex-direction: column;\n  width: 100%;\n  height: 100%;\n\n  &:where(:focus-visible) + :where(.rt-ScrollAreaViewportFocusRing) {\n    position: absolute;\n    inset: 0;\n    pointer-events: none;\n    outline: 2px solid var(--focus-8);\n    outline-offset: -2px;\n  }\n\n  /* Stop Chrome back/forward two-finger swipe when there is a horizontal scrollbar */\n  &:where(:has(.rt-ScrollAreaScrollbar[data-orientation='horizontal'])) {\n    overscroll-behavior-x: contain;\n  }\n}\n\n.rt-ScrollAreaViewport > * {\n  display: block !important;\n  width: fit-content;\n  flex-grow: 1;\n}\n\n.rt-ScrollAreaScrollbar {\n  display: flex;\n  /* Ensures no selection */\n  user-select: none;\n  /* Disable browser handling of all panning and zooming gestures on touch devices */\n  touch-action: none;\n\n  &:where([data-orientation='vertical']) {\n    flex-direction: column;\n    width: var(--scrollarea-scrollbar-size);\n  }\n  &:where([data-orientation='horizontal']) {\n    flex-direction: row;\n    height: var(--scrollarea-scrollbar-size);\n  }\n}\n\n.rt-ScrollAreaThumb {\n  position: relative;\n\n  &::before {\n    content: '';\n    position: absolute;\n    top: 50%;\n    left: 50%;\n    transform: translate(-50%, -50%);\n    width: 100%;\n    height: 100%;\n    min-width: var(--space-4);\n    min-height: var(--space-4);\n  }\n}\n\n/***************************************************************************************************\n *                                                                                                 *\n * SIZES                                                                                           *\n *                                                                                                 *\n ***************************************************************************************************/\n\n@breakpoints {\n  .rt-ScrollAreaScrollbar {\n    &:where(.rt-r-size-1) {\n      --scrollarea-scrollbar-size: var(--space-1);\n      --scrollarea-scrollbar-border-radius: max(var(--radius-1), var(--radius-full));\n    }\n    &:where(.rt-r-size-2) {\n      --scrollarea-scrollbar-size: var(--space-2);\n      --scrollarea-scrollbar-border-radius: max(var(--radius-1), var(--radius-full));\n    }\n    &:where(.rt-r-size-3) {\n      --scrollarea-scrollbar-size: var(--space-3);\n      --scrollarea-scrollbar-border-radius: max(var(--radius-1), var(--radius-full));\n    }\n  }\n}\n\n/***************************************************************************************************\n *                                                                                                 *\n * VARIANTS                                                                                        *\n *                                                                                                 *\n ***************************************************************************************************/\n\n.rt-ScrollAreaScrollbar {\n  background-color: var(--gray-a3);\n  border-radius: var(--scrollarea-scrollbar-border-radius);\n\n  animation-duration: 120ms;\n  animation-timing-function: ease-out;\n\n  &:where([data-state='visible']) {\n    animation-name: rt-fade-in;\n  }\n  &:where([data-state='hidden']) {\n    animation-name: rt-fade-out;\n  }\n  &:where([data-orientation='horizontal']) {\n    margin-top: var(--scrollarea-scrollbar-horizontal-margin-top);\n    margin-bottom: var(--scrollarea-scrollbar-horizontal-margin-bottom);\n    margin-left: var(--scrollarea-scrollbar-horizontal-margin-left);\n    margin-right: var(--scrollarea-scrollbar-horizontal-margin-right);\n  }\n  &:where([data-orientation='vertical']) {\n    margin-top: var(--scrollarea-scrollbar-vertical-margin-top);\n    margin-bottom: var(--scrollarea-scrollbar-vertical-margin-bottom);\n    margin-left: var(--scrollarea-scrollbar-vertical-margin-left);\n    margin-right: var(--scrollarea-scrollbar-vertical-margin-right);\n  }\n}\n\n.rt-ScrollAreaThumb {\n  background-color: var(--gray-a8);\n  border-radius: inherit;\n  transition: background-color 100ms;\n\n  @media (hover: hover) {\n    &:where(:hover) {\n      background-color: var(--gray-a9);\n    }\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/scroll-area.props.tsx",
    "content": "import { asChildPropDef } from '../props/as-child.prop.js';\nimport { radiusPropDef } from '../props/radius.prop.js';\n\nimport type { PropDef } from '../props/prop-def.js';\n\nconst sizes = ['1', '2', '3'] as const;\nconst scrollbarsValues = ['vertical', 'horizontal', 'both'] as const;\n\nconst scrollAreaPropDefs = {\n  ...asChildPropDef,\n  size: { type: 'enum', className: 'rt-r-size', values: sizes, default: '1', responsive: true },\n  ...radiusPropDef,\n  scrollbars: { type: 'enum', values: scrollbarsValues, default: 'both' },\n} satisfies {\n  size: PropDef<(typeof sizes)[number]>;\n  scrollbars: PropDef<(typeof scrollbarsValues)[number]>;\n};\n\nexport { scrollAreaPropDefs };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/scroll-area.tsx",
    "content": "import * as React from 'react';\nimport classNames from 'classnames';\nimport { ScrollArea as ScrollAreaPrimitive } from 'radix-ui';\n\nimport { scrollAreaPropDefs } from './scroll-area.props.js';\nimport { extractMarginProps } from '../helpers/extract-margin-props.js';\nimport { getMarginStyles } from '../helpers/get-margin-styles.js';\nimport { getResponsiveClassNames } from '../helpers/get-responsive-styles.js';\nimport { getSubtree } from '../helpers/get-subtree.js';\nimport { mergeStyles } from '../helpers/merge-styles.js';\n\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\nimport type { MarginProps } from '../props/margin.props.js';\nimport type { GetPropDefTypes } from '../props/prop-def.js';\n\ntype ScrollAreaElement = React.ElementRef<typeof ScrollAreaPrimitive.Viewport>;\ntype ScrollAreaOwnProps = GetPropDefTypes<typeof scrollAreaPropDefs>;\ninterface ScrollAreaProps\n  extends\n    ComponentPropsWithout<typeof ScrollAreaPrimitive.Root, RemovedProps>,\n    ComponentPropsWithout<typeof ScrollAreaPrimitive.Viewport, RemovedProps | 'dir'>,\n    MarginProps,\n    ScrollAreaOwnProps {}\nconst ScrollArea = React.forwardRef<ScrollAreaElement, ScrollAreaProps>((props, forwardedRef) => {\n  const { rest: marginRest, ...marginProps } = extractMarginProps(props);\n  const [marginClassNames, marginCustomProperties] = getMarginStyles(marginProps);\n\n  const {\n    asChild,\n    children,\n    className,\n    style,\n    type,\n    scrollHideDelay = type !== 'scroll' ? 0 : undefined,\n    dir,\n    size = scrollAreaPropDefs.size.default,\n    radius = scrollAreaPropDefs.radius.default,\n    scrollbars = scrollAreaPropDefs.scrollbars.default,\n    ...viewportProps\n  } = marginRest;\n\n  return (\n    <ScrollAreaPrimitive.Root\n      type={type}\n      scrollHideDelay={scrollHideDelay}\n      className={classNames('rt-ScrollAreaRoot', marginClassNames, className)}\n      style={mergeStyles(marginCustomProperties, style)}\n      asChild={asChild}\n    >\n      {getSubtree({ asChild, children }, (children) => (\n        <>\n          <ScrollAreaPrimitive.Viewport\n            {...viewportProps}\n            ref={forwardedRef}\n            className=\"rt-ScrollAreaViewport\"\n          >\n            {children}\n          </ScrollAreaPrimitive.Viewport>\n\n          <div className=\"rt-ScrollAreaViewportFocusRing\" />\n\n          {scrollbars !== 'vertical' ? (\n            <ScrollAreaPrimitive.Scrollbar\n              data-radius={radius}\n              orientation=\"horizontal\"\n              className={classNames(\n                'rt-ScrollAreaScrollbar',\n                getResponsiveClassNames({\n                  className: 'rt-r-size',\n                  value: size,\n                  propValues: scrollAreaPropDefs.size.values,\n                }),\n              )}\n            >\n              <ScrollAreaPrimitive.Thumb className=\"rt-ScrollAreaThumb\" />\n            </ScrollAreaPrimitive.Scrollbar>\n          ) : null}\n\n          {scrollbars !== 'horizontal' ? (\n            <ScrollAreaPrimitive.Scrollbar\n              data-radius={radius}\n              orientation=\"vertical\"\n              className={classNames(\n                'rt-ScrollAreaScrollbar',\n                getResponsiveClassNames({\n                  className: 'rt-r-size',\n                  value: size,\n                  propValues: scrollAreaPropDefs.size.values,\n                }),\n              )}\n            >\n              <ScrollAreaPrimitive.Thumb className=\"rt-ScrollAreaThumb\" />\n            </ScrollAreaPrimitive.Scrollbar>\n          ) : null}\n\n          {scrollbars === 'both' ? (\n            <ScrollAreaPrimitive.Corner className=\"rt-ScrollAreaCorner\" />\n          ) : null}\n        </>\n      ))}\n    </ScrollAreaPrimitive.Root>\n  );\n});\nScrollArea.displayName = 'ScrollArea';\n\nexport { ScrollArea };\nexport type { ScrollAreaProps };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/section.css",
    "content": ".rt-Section {\n  box-sizing: border-box;\n  flex-shrink: 0;\n}\n\n@breakpoints {\n  .rt-Section {\n    &:where(.rt-r-size-1) {\n      padding-top: var(--space-5);\n      padding-bottom: var(--space-5);\n    }\n    &:where(.rt-r-size-2) {\n      padding-top: var(--space-7);\n      padding-bottom: var(--space-7);\n    }\n    &:where(.rt-r-size-3) {\n      padding-top: var(--space-9);\n      padding-bottom: var(--space-9);\n    }\n    &:where(.rt-r-size-4) {\n      padding-top: calc(80px * var(--scaling));\n      padding-bottom: calc(80px * var(--scaling));\n    }\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/section.props.tsx",
    "content": "import { asChildPropDef } from '../props/as-child.prop.js';\n\nimport type { PropDef, GetPropDefTypes } from '../props/prop-def.js';\n\nconst sizes = ['1', '2', '3', '4'] as const;\nconst displayValues = ['none', 'initial'] as const;\n\nconst sectionPropDefs = {\n  ...asChildPropDef,\n  /**\n   * Controls the vertical padding of the section.\n   *\n   * @values\n   * | Size     | Padding |\n   * | :------- | ------: |\n   * | size=\"1\" | 24px    |\n   * | size=\"2\" | 40px    |\n   * | size=\"3\" | 64px    |\n   * | size=\"4\" | 80px    |\n   *\n   * @example\n   * size=\"4\"\n   * size={{ sm: '3', lg: '4' }}\n   *\n   * @link\n   * https://github.com/radix-ui/themes/blob/main/packages/radix-ui-themes/src/components/section.css\n   */\n  size: {\n    type: 'enum',\n    className: 'rt-r-size',\n    values: sizes,\n    default: '3',\n    responsive: true,\n  },\n  /**\n   * Controls whether the section is visible or hidden.\n   * Supports \"none\", \"initial\", and responsive object values.\n   *\n   * @example\n   * display=\"none\"\n   * display={{ sm: 'none', lg: 'initial' }}\n   */\n  display: {\n    type: 'enum',\n    className: 'rt-r-display',\n    values: displayValues,\n    parseValue: parseDisplayValue,\n    responsive: true,\n  },\n} satisfies {\n  size: PropDef<(typeof sizes)[number]>;\n  display: PropDef<(typeof displayValues)[number]>;\n};\n\nfunction parseDisplayValue(value: string) {\n  return value === 'initial' ? 'block' : value;\n}\n\n// Use all of the imported prop defs to ensure that JSDoc works\ntype SectionOwnProps = GetPropDefTypes<typeof sectionPropDefs & typeof asChildPropDef>;\n\nexport { sectionPropDefs };\nexport type { SectionOwnProps };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/section.tsx",
    "content": "import * as React from 'react';\nimport classNames from 'classnames';\nimport { Slot } from 'radix-ui';\n\nimport { sectionPropDefs } from './section.props.js';\nimport { extractProps } from '../helpers/extract-props.js';\nimport { layoutPropDefs } from '../props/layout.props.js';\nimport { marginPropDefs } from '../props/margin.props.js';\n\nimport type { LayoutProps } from '../props/layout.props.js';\nimport type { MarginProps } from '../props/margin.props.js';\nimport type { SectionOwnProps } from './section.props.js';\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\n\ntype SectionElement = React.ElementRef<'div'>;\ninterface SectionProps\n  extends ComponentPropsWithout<'div', RemovedProps>, MarginProps, LayoutProps, SectionOwnProps {}\nconst Section = React.forwardRef<SectionElement, SectionProps>((props, forwardedRef) => {\n  const { asChild, className, ...sectionProps } = extractProps(\n    props,\n    sectionPropDefs,\n    layoutPropDefs,\n    marginPropDefs,\n  );\n  const Comp = asChild ? Slot.Root : 'section';\n  return (\n    <Comp {...sectionProps} ref={forwardedRef} className={classNames('rt-Section', className)} />\n  );\n});\nSection.displayName = 'Section';\n\nexport { Section };\nexport type { SectionProps };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/segmented-control.css",
    "content": ".radix-themes {\n  --segmented-control-transition-duration: 100ms;\n}\n\n.rt-SegmentedControlRoot {\n  display: inline-grid;\n  vertical-align: top;\n  grid-auto-flow: column;\n  grid-auto-columns: 1fr;\n  align-items: stretch;\n  color: var(--gray-12);\n  background-color: var(--color-surface);\n  background-image: linear-gradient(var(--gray-a3), var(--gray-a3));\n  position: relative;\n  min-width: max-content;\n\n  font-family: var(--default-font-family);\n  font-style: normal;\n  text-align: center;\n\n  /* Create a new stacking context */\n  isolation: isolate;\n}\n\n.rt-SegmentedControlRoot:where([data-disabled]) {\n  color: var(--gray-a8);\n  background-color: var(--gray-3);\n}\n\n.rt-SegmentedControlItem {\n  display: flex;\n  align-items: stretch;\n  user-select: none;\n\n  &:where(:first-child) {\n    border-top-left-radius: inherit;\n    border-bottom-left-radius: inherit;\n  }\n  &:where(:nth-last-child(2)) {\n    border-top-right-radius: inherit;\n    border-bottom-right-radius: inherit;\n  }\n  &:where(:focus-visible) {\n    border-radius: inherit;\n    outline: 2px solid var(--focus-8);\n    outline-offset: -1px;\n  }\n}\n\n.rt-SegmentedControlItemLabel {\n  display: flex;\n  flex-grow: 1;\n  align-items: center;\n  justify-content: center;\n  border-radius: inherit;\n\n  /* stylelint-disable-next-line selector-max-type */\n  & :where(svg) {\n    /* Don’t squish icons */\n    flex-shrink: 0;\n  }\n\n  @media (hover: hover) {\n    :where(.rt-SegmentedControlItem[data-state='off']:not([disabled]):hover) & {\n      background-color: var(--gray-a2);\n    }\n  }\n}\n\n.rt-SegmentedControlItemLabelInactive {\n  position: absolute;\n\n  transition: opacity calc(0.8 * var(--segmented-control-transition-duration));\n  font-weight: var(--font-weight-regular);\n  letter-spacing: var(--tab-inactive-letter-spacing);\n  word-spacing: var(--tab-inactive-word-spacing);\n\n  opacity: 1;\n  transition-timing-function: ease-out;\n  :where(.rt-SegmentedControlItem[data-state='on']) & {\n    opacity: 0;\n    transition-timing-function: ease-in;\n  }\n}\n\n.rt-SegmentedControlItemLabelActive {\n  transition: opacity calc(0.8 * var(--segmented-control-transition-duration));\n  font-weight: var(--font-weight-medium);\n  letter-spacing: var(--tab-active-letter-spacing);\n  word-spacing: var(--tab-active-word-spacing);\n\n  opacity: 0;\n  transition-timing-function: ease-in;\n  :where(.rt-SegmentedControlItem[data-state='on']) & {\n    opacity: 1;\n    transition-timing-function: ease-out;\n  }\n}\n\n.rt-SegmentedControlItemSeparator {\n  /*\n   * Place the separator below the indicator.\n   * Be careful not to introduce a stacking context on \".rt-SegmentedControlItem\":\n   * https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_positioned_layout/Understanding_z-index/Stacking_context\n   */\n  z-index: -1;\n\n  margin-top: 3px;\n  margin-bottom: 3px;\n  margin-left: -0.5px;\n  margin-right: -0.5px;\n  width: 1px;\n  background-color: var(--gray-a4);\n  transition: opacity calc(0.8 * var(--segmented-control-transition-duration));\n\n  /* Make separators slow to disappear and fast to appear, syncing it well with the indicator motion */\n  transition-timing-function: ease-out;\n\n  :where(.rt-SegmentedControlItem:first-child) &,\n  :where(.rt-SegmentedControlItem:where([data-state='on'], :focus-visible)) &,\n  :where(.rt-SegmentedControlItem:where([data-state='on'], :focus-visible)) + * & {\n    opacity: 0;\n    transition-timing-function: ease-in;\n  }\n  /* Don't transition when the separator is hidden because of the focus outline */\n  :where(.rt-SegmentedControlRoot:has(:focus-visible)) & {\n    transition-duration: 0ms;\n  }\n}\n\n:where(.radix-themes) {\n  --segmented-control-indicator-background-color: var(--color-background);\n}\n:is(.dark, .dark-theme),\n:is(.dark, .dark-theme) :where(.radix-themes:not(.light, .light-theme)) {\n  --segmented-control-indicator-background-color: var(--gray-a3);\n}\n\n.rt-SegmentedControlIndicator {\n  display: none;\n  position: absolute;\n  z-index: -1;\n  top: 0;\n  left: 0;\n  height: 100%;\n  pointer-events: none;\n  transition-property: transform;\n  transition-timing-function: cubic-bezier(0.445, 0.05, 0.55, 0.95);\n  transition-duration: var(--segmented-control-transition-duration);\n\n  &::before {\n    inset: 1px;\n    position: absolute;\n    border-radius: max(0.5px, calc(var(--segmented-control-border-radius) - 1px));\n    background-color: var(--segmented-control-indicator-background-color);\n    content: '';\n  }\n\n  :where(.rt-SegmentedControlItem[data-state='on']) ~ & {\n    display: block;\n  }\n\n  :where(.rt-SegmentedControlItem[disabled]) ~ & {\n    --segmented-control-indicator-background-color: var(--gray-a3);\n\n    &::before {\n      inset: 0px;\n      box-shadow: none;\n    }\n  }\n\n  &:where(:nth-child(2)) {\n    width: calc(100% / 1);\n  }\n  &:where(:nth-child(3)) {\n    width: calc(100% / 2);\n  }\n  &:where(:nth-child(4)) {\n    width: calc(100% / 3);\n  }\n  &:where(:nth-child(5)) {\n    width: calc(100% / 4);\n  }\n  &:where(:nth-child(6)) {\n    width: calc(100% / 5);\n  }\n  &:where(:nth-child(7)) {\n    width: calc(100% / 6);\n  }\n  &:where(:nth-child(8)) {\n    width: calc(100% / 7);\n  }\n  &:where(:nth-child(9)) {\n    width: calc(100% / 8);\n  }\n  &:where(:nth-child(10)) {\n    width: calc(100% / 9);\n  }\n  &:where(:nth-child(11)) {\n    width: calc(100% / 10);\n  }\n\n  :where(.rt-SegmentedControlItem[data-state='on']:nth-child(1)) ~ & {\n    transform: translateX(0%);\n  }\n  :where(.rt-SegmentedControlItem[data-state='on']:nth-child(2)) ~ & {\n    transform: translateX(100%);\n  }\n  :where(.rt-SegmentedControlItem[data-state='on']:nth-child(3)) ~ & {\n    transform: translateX(200%);\n  }\n  :where(.rt-SegmentedControlItem[data-state='on']:nth-child(4)) ~ & {\n    transform: translateX(300%);\n  }\n  :where(.rt-SegmentedControlItem[data-state='on']:nth-child(5)) ~ & {\n    transform: translateX(400%);\n  }\n  :where(.rt-SegmentedControlItem[data-state='on']:nth-child(6)) ~ & {\n    transform: translateX(500%);\n  }\n  :where(.rt-SegmentedControlItem[data-state='on']:nth-child(7)) ~ & {\n    transform: translateX(600%);\n  }\n  :where(.rt-SegmentedControlItem[data-state='on']:nth-child(8)) ~ & {\n    transform: translateX(700%);\n  }\n  :where(.rt-SegmentedControlItem[data-state='on']:nth-child(9)) ~ & {\n    transform: translateX(800%);\n  }\n  :where(.rt-SegmentedControlItem[data-state='on']:nth-child(10)) ~ & {\n    transform: translateX(900%);\n  }\n}\n\n/* * * * * * * * * * * * * * * * * * * */\n/*                                     */\n/*                Sizes                */\n/*                                     */\n/* * * * * * * * * * * * * * * * * * * */\n\n.rt-SegmentedControlItemLabel {\n  box-sizing: border-box;\n}\n.rt-SegmentedControlRoot {\n  border-radius: var(--segmented-control-border-radius);\n}\n\n@breakpoints {\n  .rt-SegmentedControlRoot {\n    &:where(.rt-r-size-1) {\n      --segmented-control-border-radius: max(var(--radius-2), var(--radius-full));\n      height: var(--space-5);\n\n      & :where(.rt-SegmentedControlItemLabel) {\n        font-size: var(--font-size-1);\n        letter-spacing: var(--letter-spacing-1);\n        padding-left: var(--space-3);\n        padding-right: var(--space-3);\n        gap: var(--space-1);\n      }\n    }\n    &:where(.rt-r-size-2) {\n      --segmented-control-border-radius: max(var(--radius-2), var(--radius-full));\n      height: var(--space-6);\n\n      & :where(.rt-SegmentedControlItemLabel) {\n        font-size: var(--font-size-2);\n        letter-spacing: var(--letter-spacing-2);\n        padding-left: var(--space-4);\n        padding-right: var(--space-4);\n        gap: var(--space-2);\n      }\n    }\n    &:where(.rt-r-size-3) {\n      --segmented-control-border-radius: max(var(--radius-3), var(--radius-full));\n      height: var(--space-7);\n\n      & :where(.rt-SegmentedControlItemLabel) {\n        font-size: var(--font-size-3);\n        letter-spacing: var(--letter-spacing-3);\n        padding-left: var(--space-4);\n        padding-right: var(--space-4);\n        gap: var(--space-3);\n      }\n    }\n  }\n}\n\n/* * * * * * * * * * * * * * * * * * * */\n/*                                     */\n/*         Variants / Surface          */\n/*                                     */\n/* * * * * * * * * * * * * * * * * * * */\n\n.rt-SegmentedControlRoot:where(.rt-variant-surface) {\n  & :where(.rt-SegmentedControlItem:not([disabled])) ~ :where(.rt-SegmentedControlIndicator) {\n    &::before {\n      box-shadow: 0 0 0 1px var(--gray-a4);\n    }\n  }\n}\n\n/* * * * * * * * * * * * * * * * * * * */\n/*                                     */\n/*         Variants / Classic          */\n/*                                     */\n/* * * * * * * * * * * * * * * * * * * */\n\n.rt-SegmentedControlRoot:where(.rt-variant-classic) {\n  & :where(.rt-SegmentedControlItem:not([disabled])) ~ :where(.rt-SegmentedControlIndicator) {\n    &::before {\n      box-shadow: var(--shadow-2);\n    }\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/segmented-control.props.tsx",
    "content": "import { radiusPropDef } from '../props/radius.prop.js';\n\nimport type { PropDef } from '../props/prop-def.js';\n\nconst sizes = ['1', '2', '3'] as const;\nconst variants = ['surface', 'classic'] as const;\n\nconst segmentedControlRootPropDefs = {\n  disabled: { type: 'boolean', className: 'disabled', default: false },\n  size: { type: 'enum', className: 'rt-r-size', values: sizes, default: '2', responsive: true },\n  variant: { type: 'enum', className: 'rt-variant', values: variants, default: 'surface' },\n  ...radiusPropDef,\n} satisfies {\n  disabled?: PropDef<boolean>;\n  size: PropDef<(typeof sizes)[number]>;\n  variant: PropDef<(typeof variants)[number]>;\n};\n\nexport { segmentedControlRootPropDefs };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/segmented-control.tsx",
    "content": "'use client';\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { ToggleGroup as ToggleGroupPrimitive } from 'radix-ui';\nimport { useControllableState } from 'radix-ui/internal';\n\nimport { segmentedControlRootPropDefs } from './segmented-control.props.js';\nimport { extractProps } from '../helpers/extract-props.js';\nimport { marginPropDefs } from '../props/margin.props.js';\n\nimport type { MarginProps } from '../props/margin.props.js';\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\nimport type { GetPropDefTypes } from '../props/prop-def.js';\n\ntype SegmentedControlRootOwnProps = GetPropDefTypes<typeof segmentedControlRootPropDefs>;\n\ninterface SegmentedControlRootProps\n  extends\n    ComponentPropsWithout<'div', RemovedProps | 'dir'>,\n    SegmentedControlRootOwnProps,\n    MarginProps {\n  value?: string;\n  defaultValue?: string;\n  onValueChange?(value: string): void;\n}\n\nconst SegmentedControlRoot = React.forwardRef<HTMLDivElement, SegmentedControlRootProps>(\n  (props, forwardedRef) => {\n    const {\n      className,\n      children,\n      radius,\n      value: valueProp,\n      defaultValue: defaultValueProp,\n      onValueChange: onValueChangeProp,\n      ...rootProps\n    } = extractProps(props, segmentedControlRootPropDefs, marginPropDefs);\n\n    const [value, setValue] = useControllableState({\n      prop: valueProp,\n      onChange: onValueChangeProp,\n      defaultProp: defaultValueProp,\n    });\n\n    return (\n      <ToggleGroupPrimitive.Root\n        data-disabled={props.disabled || undefined}\n        data-radius={radius}\n        ref={forwardedRef}\n        className={classNames('rt-SegmentedControlRoot', className)}\n        onValueChange={(value) => {\n          if (value) {\n            setValue(value);\n          }\n        }}\n        {...rootProps}\n        type=\"single\"\n        value={value}\n        asChild={false}\n        disabled={!!props.disabled}\n      >\n        {children}\n        <div className=\"rt-SegmentedControlIndicator\" />\n      </ToggleGroupPrimitive.Root>\n    );\n  },\n);\n\nSegmentedControlRoot.displayName = 'SegmentedControl.Root';\n\ninterface SegmentedControlItemOwnProps {\n  value: string;\n}\n\ninterface SegmentedControlItemProps\n  extends\n    ComponentPropsWithout<\n      typeof ToggleGroupPrimitive.Item,\n      RemovedProps | 'disabled' | 'type' | 'value'\n    >,\n    SegmentedControlItemOwnProps {}\n\nconst SegmentedControlItem = React.forwardRef<HTMLButtonElement, SegmentedControlItemProps>(\n  ({ children, className, ...props }, forwardedRef) => (\n    <ToggleGroupPrimitive.Item\n      ref={forwardedRef}\n      className={classNames('rt-reset', 'rt-SegmentedControlItem', className)}\n      {...props}\n      disabled={false}\n      asChild={false}\n    >\n      <span className=\"rt-SegmentedControlItemSeparator\" />\n      <span className=\"rt-SegmentedControlItemLabel\">\n        <span className=\"rt-SegmentedControlItemLabelActive\">{children}</span>\n        <span className=\"rt-SegmentedControlItemLabelInactive\" aria-hidden>\n          {children}\n        </span>\n      </span>\n    </ToggleGroupPrimitive.Item>\n  ),\n);\n\nSegmentedControlItem.displayName = 'SegmentedControl.Item';\n\nexport { SegmentedControlRoot as Root, SegmentedControlItem as Item };\nexport type { SegmentedControlRootProps as RootProps, SegmentedControlItemProps as ItemProps };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/select.css",
    "content": ".rt-SelectTrigger {\n  display: inline-flex;\n  align-items: center;\n  justify-content: space-between;\n  flex-shrink: 0;\n  user-select: none;\n  vertical-align: top;\n  line-height: var(--height);\n\n  font-family: var(--default-font-family);\n  font-weight: var(--font-weight-regular);\n  font-style: normal;\n  text-align: start;\n\n  &:where(:focus-visible) {\n    outline: 2px solid var(--focus-8);\n    outline-offset: -1px;\n  }\n}\n\n.rt-SelectTriggerInner {\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n}\n\n.rt-SelectIcon {\n  flex-shrink: 0;\n\n  :where(.rt-SelectTrigger:not(.rt-variant-ghost)) & {\n    opacity: 0.9;\n  }\n}\n\n.rt-SelectContent {\n  --scrollarea-scrollbar-vertical-margin-top: var(--select-content-padding);\n  --scrollarea-scrollbar-vertical-margin-bottom: var(--select-content-padding);\n  --scrollarea-scrollbar-horizontal-margin-left: var(--select-content-padding);\n  --scrollarea-scrollbar-horizontal-margin-right: var(--select-content-padding);\n\n  overflow: hidden;\n  background-color: var(--color-panel-solid);\n\n  &:where([data-side]) {\n    min-width: var(--radix-select-trigger-width);\n    max-height: var(--radix-select-content-available-height);\n    transform-origin: var(--radix-select-content-transform-origin);\n  }\n}\n\n.rt-SelectViewport {\n  box-sizing: border-box;\n  padding: var(--select-content-padding);\n\n  :where(.rt-SelectContent:has(.rt-ScrollAreaScrollbar[data-orientation='vertical'])) & {\n    padding-right: var(--space-3);\n  }\n}\n\n.rt-SelectItem {\n  display: flex;\n  align-items: center;\n  height: var(--select-item-height);\n  padding-left: var(--select-item-indicator-width);\n  padding-right: var(--select-item-indicator-width);\n  position: relative;\n  box-sizing: border-box;\n  outline: none;\n  scroll-margin: var(--select-content-padding) 0;\n\n  /* Fix sticky text highlighting after selection in Firefox */\n  user-select: none;\n\n  /* Cursors */\n  cursor: var(--cursor-menu-item);\n  &:where([data-disabled]) {\n    cursor: default;\n  }\n}\n\n.rt-SelectItemIndicator {\n  position: absolute;\n  left: 0;\n  width: var(--select-item-indicator-width);\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n}\n\n.rt-SelectSeparator {\n  height: 1px;\n  margin-top: var(--space-2);\n  margin-bottom: var(--space-2);\n  margin-left: var(--select-item-indicator-width);\n  margin-right: var(--select-separator-margin-right);\n}\n\n.rt-SelectLabel {\n  display: flex;\n  align-items: center;\n  height: var(--select-item-height);\n  padding-left: var(--select-item-indicator-width);\n  padding-right: var(--select-item-indicator-width);\n  color: var(--gray-a10);\n  user-select: none;\n  cursor: default;\n\n  :where(.rt-SelectItem) + & {\n    margin-top: var(--space-2);\n  }\n}\n\n/***************************************************************************************************\n *                                                                                                 *\n * TRIGGER SIZES                                                                                   *\n *                                                                                                 *\n ***************************************************************************************************/\n\n.rt-SelectTrigger {\n  color: var(--gray-12);\n\n  &:where(:not(.rt-variant-ghost)) {\n    box-sizing: border-box;\n    height: var(--select-trigger-height);\n  }\n  &:where(.rt-variant-ghost) {\n    box-sizing: content-box;\n    height: fit-content;\n    padding: var(--select-trigger-ghost-padding-y) var(--select-trigger-ghost-padding-x);\n\n    /* We reset the defined margin variables to avoid inheriting them from a higher component */\n    /* If a margin IS defined on the component itself, the utility class will win and reset it */\n    --margin-top: 0px;\n    --margin-right: 0px;\n    --margin-bottom: 0px;\n    --margin-left: 0px;\n\n    /* Define the overrides to incorporate the negative margins */\n    --margin-top-override: calc(var(--margin-top) - var(--select-trigger-ghost-padding-y));\n    --margin-right-override: calc(var(--margin-right) - var(--select-trigger-ghost-padding-x));\n    --margin-bottom-override: calc(var(--margin-bottom) - var(--select-trigger-ghost-padding-y));\n    --margin-left-override: calc(var(--margin-left) - var(--select-trigger-ghost-padding-x));\n\n    /* Reset the overrides on direct children */\n    :where(&) > * {\n      --margin-top-override: initial;\n      --margin-right-override: initial;\n      --margin-bottom-override: initial;\n      --margin-left-override: initial;\n    }\n\n    margin: var(--margin-top-override) var(--margin-right-override) var(--margin-bottom-override)\n      var(--margin-left-override);\n  }\n}\n\n@breakpoints {\n  .rt-SelectTrigger {\n    &:where(.rt-r-size-1) {\n      --select-trigger-height: var(--space-5);\n      gap: var(--space-1);\n      font-size: var(--font-size-1);\n      line-height: var(--line-height-1);\n      letter-spacing: var(--letter-spacing-1);\n      border-radius: max(var(--radius-1), var(--radius-full));\n\n      &:where(:not(.rt-variant-ghost)) {\n        padding-left: var(--space-2);\n        padding-right: var(--space-2);\n      }\n      &:where(.rt-variant-ghost) {\n        --select-trigger-ghost-padding-x: var(--space-2);\n        --select-trigger-ghost-padding-y: var(--space-1);\n      }\n    }\n    &:where(.rt-r-size-2) {\n      --select-trigger-height: var(--space-6);\n      gap: calc(var(--space-1) * 1.5);\n      font-size: var(--font-size-2);\n      line-height: var(--line-height-2);\n      letter-spacing: var(--letter-spacing-2);\n      border-radius: max(var(--radius-2), var(--radius-full));\n\n      &:where(:not(.rt-variant-ghost)) {\n        padding-left: var(--space-3);\n        padding-right: var(--space-3);\n      }\n      &:where(.rt-variant-ghost) {\n        --select-trigger-ghost-padding-x: var(--space-2);\n        --select-trigger-ghost-padding-y: var(--space-1);\n      }\n    }\n    &:where(.rt-r-size-3) {\n      --select-trigger-height: var(--space-7);\n      gap: var(--space-2);\n      font-size: var(--font-size-3);\n      line-height: var(--line-height-3);\n      letter-spacing: var(--letter-spacing-3);\n      border-radius: max(var(--radius-3), var(--radius-full));\n\n      &:where(:not(.rt-variant-ghost)) {\n        padding-left: var(--space-4);\n        padding-right: var(--space-4);\n      }\n      &:where(.rt-variant-ghost) {\n        --select-trigger-ghost-padding-x: var(--space-3);\n        --select-trigger-ghost-padding-y: calc(var(--space-1) * 1.5);\n      }\n      & :where(.rt-SelectIcon) {\n        width: 11px;\n        height: 11px;\n      }\n    }\n  }\n}\n\n/***************************************************************************************************\n *                                                                                                 *\n * CONTENT SIZES                                                                                   *\n *                                                                                                 *\n ***************************************************************************************************/\n\n@breakpoints {\n  .rt-SelectContent {\n    &:where(.rt-r-size-1) {\n      --select-content-padding: var(--space-1);\n      --select-item-height: var(--space-5);\n      --select-item-indicator-width: calc(var(--space-5) / 1.2);\n      --select-separator-margin-right: var(--space-2);\n      border-radius: var(--radius-3);\n\n      & :where(.rt-SelectLabel) {\n        font-size: var(--font-size-1);\n        letter-spacing: var(--letter-spacing-1);\n        line-height: var(--line-height-1);\n      }\n      & :where(.rt-SelectItem) {\n        font-size: var(--font-size-1);\n        line-height: var(--line-height-1);\n        letter-spacing: var(--letter-spacing-1);\n        border-radius: var(--radius-1);\n      }\n      & :where(.rt-SelectItemIndicatorIcon) {\n        width: calc(8px * var(--scaling));\n        height: calc(8px * var(--scaling));\n      }\n    }\n    &:where(.rt-r-size-2, .rt-r-size-3) {\n      --select-content-padding: var(--space-2);\n      --select-item-height: var(--space-6);\n      --select-item-indicator-width: var(--space-5);\n      --select-separator-margin-right: var(--space-3);\n      border-radius: var(--radius-4);\n\n      & :where(.rt-SelectLabel) {\n        font-size: var(--font-size-2);\n        letter-spacing: var(--letter-spacing-2);\n        line-height: var(--line-height-2);\n      }\n      & :where(.rt-SelectItem) {\n        line-height: var(--line-height-2);\n        border-radius: var(--radius-2);\n      }\n    }\n    &:where(.rt-r-size-2) {\n      & :where(.rt-SelectItem) {\n        font-size: var(--font-size-2);\n        letter-spacing: var(--letter-spacing-2);\n      }\n      & :where(.rt-SelectItemIndicatorIcon) {\n        width: calc(10px * var(--scaling));\n        height: calc(10px * var(--scaling));\n      }\n    }\n    &:where(.rt-r-size-3) {\n      & :where(.rt-SelectItem) {\n        font-size: var(--font-size-3);\n        letter-spacing: var(--letter-spacing-3);\n      }\n      & :where(.rt-SelectItemIndicatorIcon) {\n        width: calc(10px * var(--scaling));\n        height: calc(10px * var(--scaling));\n      }\n    }\n  }\n}\n\n/***************************************************************************************************\n *                                                                                                 *\n * TRIGGER VARIANTS                                                                                *\n *                                                                                                 *\n ***************************************************************************************************/\n\n/* surface */\n\n.rt-SelectTrigger:where(.rt-variant-surface) {\n  color: var(--gray-12);\n  background-color: var(--color-surface);\n  box-shadow: inset 0 0 0 1px var(--gray-a7);\n\n  @media (hover: hover) {\n    &:where(:hover) {\n      box-shadow: inset 0 0 0 1px var(--gray-a8);\n    }\n  }\n  &:where([data-state='open']) {\n    box-shadow: inset 0 0 0 1px var(--gray-a8);\n  }\n  &:where(:disabled) {\n    color: var(--gray-a11);\n    background-color: var(--gray-a2);\n    box-shadow: inset 0 0 0 1px var(--gray-a6);\n  }\n  &:where([data-placeholder]) {\n    & :where(.rt-SelectTriggerInner) {\n      color: var(--gray-a10);\n    }\n  }\n}\n\n/* classic */\n\n/* prettier-ignore */\n:where(.radix-themes) {\n  --select-trigger-classic-box-shadow:\n\t\tinset 0 0 0 1px var(--gray-a5),\n\t\tinset 0 2px 1px var(--white-a11),\n\t\tinset 0 -2px 1px var(--gray-a4)\n\t;\n}\n\n/* prettier-ignore */\n:is(.dark, .dark-theme),\n:is(.dark, .dark-theme) :where(.radix-themes:not(.light, .light-theme)) {\n  --select-trigger-classic-box-shadow:\n    inset 0 0 0 1px var(--white-a4),\n    inset 0 1px 1px var(--white-a4),\n    inset 0 -1px 1px var(--black-a9)\n\t;\n}\n\n.rt-SelectTrigger:where(.rt-variant-classic) {\n  color: var(--gray-12);\n  background-image: linear-gradient(var(--gray-2), var(--gray-1));\n  box-shadow: var(--select-trigger-classic-box-shadow);\n  position: relative;\n  z-index: 0;\n\n  &::before {\n    content: '';\n    position: absolute;\n    z-index: -1;\n    inset: 0;\n    border: 2px solid transparent;\n    background-clip: content-box;\n    border-radius: inherit;\n    pointer-events: none;\n    background-image:\n      linear-gradient(var(--black-a1) -20%, transparent, var(--white-a1) 130%),\n      linear-gradient(var(--color-surface), transparent);\n  }\n\n  @media (hover: hover) {\n    &:where(:hover) {\n      box-shadow:\n        inset 0 0 0 1px var(--gray-a3),\n        var(--select-trigger-classic-box-shadow);\n\n      &::before {\n        background-image:\n          linear-gradient(var(--black-a1) -15%, transparent, var(--white-a1) 120%),\n          linear-gradient(var(--gray-2), var(--gray-1));\n      }\n    }\n  }\n  &:where([data-state='open']) {\n    box-shadow:\n      inset 0 0 0 1px var(--gray-a3),\n      var(--select-trigger-classic-box-shadow);\n\n    &::before {\n      background-image:\n        linear-gradient(var(--black-a1) -15%, transparent, var(--white-a1) 120%),\n        linear-gradient(var(--gray-2), var(--gray-1));\n    }\n  }\n  &:where(:disabled) {\n    color: var(--gray-a11);\n    background-color: var(--gray-2);\n    background-image: none;\n    /* Use disabled button style for the shadow */\n    box-shadow: var(--base-button-classic-disabled-box-shadow);\n    &::before {\n      background-color: var(--gray-a2);\n      background-image: linear-gradient(var(--black-a1) -20%, transparent, var(--white-a1));\n    }\n  }\n  &:where([data-placeholder]) {\n    & :where(.rt-SelectTriggerInner) {\n      color: var(--gray-a10);\n    }\n  }\n}\n\n/* soft / ghost */\n\n.rt-SelectTrigger:where(.rt-variant-soft),\n.rt-SelectTrigger:where(.rt-variant-ghost),\n.rt-SelectTrigger:where(.rt-variant-ghost-offset) {\n  color: var(--accent-12);\n\n  &:where([data-placeholder]) {\n    & :where(.rt-SelectTriggerInner) {\n      color: var(--accent-12);\n      opacity: 0.6;\n    }\n  }\n}\n\n.rt-SelectTrigger:where(.rt-variant-soft) {\n  background-color: var(--accent-a3);\n\n  @media (hover: hover) {\n    &:where(:hover) {\n      background-color: var(--accent-a4);\n    }\n  }\n  &:where([data-state='open']) {\n    background-color: var(--accent-a4);\n  }\n  &:where(:focus-visible) {\n    /* Use gray outline when component color is gray */\n    outline-color: var(--accent-8);\n  }\n  &:where(:disabled) {\n    color: var(--gray-a11);\n    background-color: var(--gray-a3);\n  }\n}\n\n.rt-SelectTrigger:where(.rt-variant-ghost),\n.rt-SelectTrigger:where(.rt-variant-ghost-offset) {\n  @media (hover: hover) {\n    &:where(:hover) {\n      background-color: var(--accent-a3);\n    }\n  }\n  &:where([data-state='open']) {\n    background-color: var(--accent-a3);\n  }\n  &:where(:disabled) {\n    color: var(--gray-a11);\n    background-color: transparent;\n  }\n}\n\n/* all disabled */\n.rt-SelectTrigger {\n  &:where(:disabled) {\n    & :where(.rt-SelectIcon) {\n      color: var(--gray-a9);\n    }\n  }\n}\n\n/***************************************************************************************************\n *                                                                                                 *\n * MENU VARIANTS                                                                                   *\n *                                                                                                 *\n ***************************************************************************************************/\n\n.rt-SelectContent {\n  box-shadow: var(--shadow-5);\n}\n\n.rt-SelectItem:where([data-disabled]) {\n  color: var(--gray-a8);\n}\n\n.rt-SelectSeparator {\n  background-color: var(--gray-a6);\n}\n\n/* solid */\n\n.rt-SelectContent:where(.rt-variant-solid) {\n  & :where(.rt-SelectItem[data-highlighted]) {\n    background-color: var(--accent-9);\n    color: var(--accent-contrast);\n  }\n  &:where(.rt-high-contrast) :where(.rt-SelectItem[data-highlighted]) {\n    background-color: var(--accent-12);\n    color: var(--accent-1);\n  }\n}\n\n/* soft */\n\n.rt-SelectContent:where(.rt-variant-soft) {\n  & :where(.rt-SelectItem[data-highlighted]) {\n    background-color: var(--accent-a4);\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/select.props.tsx",
    "content": "import { colorPropDef } from '../props/color.prop.js';\nimport { highContrastPropDef } from '../props/high-contrast.prop.js';\nimport { radiusPropDef } from '../props/radius.prop.js';\n\nimport type { PropDef } from '../props/prop-def.js';\n\nconst sizes = ['1', '2', '3'] as const;\n\nconst selectRootPropDefs = {\n  size: { type: 'enum', className: 'rt-r-size', values: sizes, default: '2', responsive: true },\n} satisfies {\n  size: PropDef<(typeof sizes)[number]>;\n};\n\nconst triggerVariants = ['classic', 'surface', 'soft', 'ghost-offset', 'ghost'] as const;\n\nconst selectTriggerPropDefs = {\n  variant: { type: 'enum', className: 'rt-variant', values: triggerVariants, default: 'surface' },\n  ...colorPropDef,\n  ...radiusPropDef,\n  placeholder: { type: 'ReactNode' },\n} satisfies {\n  variant: PropDef<(typeof triggerVariants)[number]>;\n  placeholder: PropDef<React.ReactNode>;\n};\n\nconst contentVariants = ['solid', 'soft'] as const;\n\nconst selectContentPropDefs = {\n  variant: { type: 'enum', className: 'rt-variant', values: contentVariants, default: 'solid' },\n  ...colorPropDef,\n  ...highContrastPropDef,\n} satisfies {\n  variant: PropDef<(typeof contentVariants)[number]>;\n};\n\nexport { selectRootPropDefs, selectTriggerPropDefs, selectContentPropDefs };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/select.tsx",
    "content": "'use client';\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { Select as SelectPrimitive, ScrollArea as ScrollAreaPrimitive } from 'radix-ui';\n\nimport { extractProps } from '../helpers/extract-props.js';\nimport { marginPropDefs } from '../props/margin.props.js';\nimport { ChevronDownIcon, ThickCheckIcon } from './icons.js';\nimport {\n  selectRootPropDefs,\n  selectTriggerPropDefs,\n  selectContentPropDefs,\n} from './select.props.js';\nimport { useThemeContext, Theme } from './theme.js';\n\nimport type { MarginProps } from '../props/margin.props.js';\nimport type { GetPropDefTypes } from '../props/prop-def.js';\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\n\ntype SelectRootOwnProps = GetPropDefTypes<typeof selectRootPropDefs>;\n\ntype SelectContextValue = SelectRootOwnProps;\nconst SelectContext = React.createContext<SelectContextValue>({});\n\ninterface SelectRootProps extends SelectPrimitive.SelectProps, SelectContextValue {}\nconst SelectRoot: React.FC<SelectRootProps> = (props) => {\n  const { children, size = selectRootPropDefs.size.default, ...rootProps } = props;\n  return (\n    <SelectPrimitive.Root {...rootProps}>\n      <SelectContext.Provider value={React.useMemo(() => ({ size }), [size])}>\n        {children}\n      </SelectContext.Provider>\n    </SelectPrimitive.Root>\n  );\n};\nSelectRoot.displayName = 'Select.Root';\n\ntype SelectTriggerElement = React.ElementRef<typeof SelectPrimitive.Trigger>;\ntype SelectTriggerOwnProps = GetPropDefTypes<typeof selectTriggerPropDefs>;\ninterface SelectTriggerProps\n  extends\n    ComponentPropsWithout<typeof SelectPrimitive.Trigger, RemovedProps>,\n    MarginProps,\n    SelectTriggerOwnProps {}\nconst SelectTrigger = React.forwardRef<SelectTriggerElement, SelectTriggerProps>(\n  (props, forwardedRef) => {\n    const context = React.useContext(SelectContext);\n    const { children, className, color, radius, placeholder, ...triggerProps } = extractProps(\n      // Pass size value from the context to generate styles\n      { size: context?.size, ...props },\n      // Pass size prop def to allow it to be extracted\n      { size: selectRootPropDefs.size },\n      selectTriggerPropDefs,\n      marginPropDefs,\n    );\n    return (\n      <SelectPrimitive.Trigger asChild>\n        <button\n          data-accent-color={color}\n          data-radius={radius}\n          {...triggerProps}\n          ref={forwardedRef}\n          className={classNames('rt-reset', 'rt-SelectTrigger', className)}\n        >\n          <span className=\"rt-SelectTriggerInner\">\n            <SelectPrimitive.Value placeholder={placeholder}>{children}</SelectPrimitive.Value>\n          </span>\n          <SelectPrimitive.Icon asChild>\n            <ChevronDownIcon className=\"rt-SelectIcon\" />\n          </SelectPrimitive.Icon>\n        </button>\n      </SelectPrimitive.Trigger>\n    );\n  },\n);\nSelectTrigger.displayName = 'Select.Trigger';\n\ntype SelectContentElement = React.ElementRef<typeof SelectPrimitive.Content>;\ntype SelectContentOwnProps = GetPropDefTypes<typeof selectContentPropDefs>;\ninterface SelectContentProps\n  extends\n    ComponentPropsWithout<typeof SelectPrimitive.Content, RemovedProps>,\n    SelectContentOwnProps {\n  container?: React.ComponentPropsWithoutRef<typeof SelectPrimitive.Portal>['container'];\n}\nconst SelectContent = React.forwardRef<SelectContentElement, SelectContentProps>(\n  (props, forwardedRef) => {\n    const context = React.useContext(SelectContext);\n    const { className, children, color, container, ...contentProps } = extractProps(\n      // Pass size value from the context to generate styles\n      { size: context?.size, ...props },\n      // Pass size prop def to allow it to be extracted\n      { size: selectRootPropDefs.size },\n      selectContentPropDefs,\n    );\n    const themeContext = useThemeContext();\n    const resolvedColor = color || themeContext.accentColor;\n    return (\n      <SelectPrimitive.Portal container={container}>\n        <Theme asChild>\n          <SelectPrimitive.Content\n            data-accent-color={resolvedColor}\n            sideOffset={4}\n            {...contentProps}\n            asChild={false}\n            ref={forwardedRef}\n            className={classNames(\n              { 'rt-PopperContent': contentProps.position === 'popper' },\n              'rt-SelectContent',\n              className,\n            )}\n          >\n            <ScrollAreaPrimitive.Root type=\"auto\" className=\"rt-ScrollAreaRoot\">\n              <SelectPrimitive.Viewport asChild className=\"rt-SelectViewport\">\n                <ScrollAreaPrimitive.Viewport\n                  className=\"rt-ScrollAreaViewport\"\n                  style={{ overflowY: undefined }}\n                >\n                  {children}\n                </ScrollAreaPrimitive.Viewport>\n              </SelectPrimitive.Viewport>\n              <ScrollAreaPrimitive.Scrollbar\n                className=\"rt-ScrollAreaScrollbar rt-r-size-1\"\n                orientation=\"vertical\"\n              >\n                <ScrollAreaPrimitive.Thumb className=\"rt-ScrollAreaThumb\" />\n              </ScrollAreaPrimitive.Scrollbar>\n            </ScrollAreaPrimitive.Root>\n          </SelectPrimitive.Content>\n        </Theme>\n      </SelectPrimitive.Portal>\n    );\n  },\n);\nSelectContent.displayName = 'Select.Content';\n\ntype SelectItemElement = React.ElementRef<typeof SelectPrimitive.Item>;\ninterface SelectItemProps extends ComponentPropsWithout<\n  typeof SelectPrimitive.Item,\n  RemovedProps\n> {}\nconst SelectItem = React.forwardRef<SelectItemElement, SelectItemProps>((props, forwardedRef) => {\n  const { className, children, ...itemProps } = props;\n  return (\n    <SelectPrimitive.Item\n      {...itemProps}\n      asChild={false}\n      ref={forwardedRef}\n      className={classNames('rt-SelectItem', className)}\n    >\n      <SelectPrimitive.ItemIndicator className=\"rt-SelectItemIndicator\">\n        <ThickCheckIcon className=\"rt-SelectItemIndicatorIcon\" />\n      </SelectPrimitive.ItemIndicator>\n      <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n    </SelectPrimitive.Item>\n  );\n});\nSelectItem.displayName = 'Select.Item';\n\ntype SelectGroupElement = React.ElementRef<typeof SelectPrimitive.Group>;\ninterface SelectGroupProps extends ComponentPropsWithout<\n  typeof SelectPrimitive.Group,\n  RemovedProps\n> {}\nconst SelectGroup = React.forwardRef<SelectGroupElement, SelectGroupProps>(\n  ({ className, ...props }, forwardedRef) => (\n    <SelectPrimitive.Group\n      {...props}\n      asChild={false}\n      ref={forwardedRef}\n      className={classNames('rt-SelectGroup', className)}\n    />\n  ),\n);\nSelectGroup.displayName = 'Select.Group';\n\ntype SelectLabelElement = React.ElementRef<typeof SelectPrimitive.Label>;\ninterface SelectLabelProps extends ComponentPropsWithout<\n  typeof SelectPrimitive.Label,\n  RemovedProps\n> {}\nconst SelectLabel = React.forwardRef<SelectLabelElement, SelectLabelProps>(\n  ({ className, ...props }, forwardedRef) => (\n    <SelectPrimitive.Label\n      {...props}\n      asChild={false}\n      ref={forwardedRef}\n      className={classNames('rt-SelectLabel', className)}\n    />\n  ),\n);\nSelectLabel.displayName = 'Select.Label';\n\ntype SelectSeparatorElement = React.ElementRef<typeof SelectPrimitive.Separator>;\ninterface SelectSeparatorProps extends ComponentPropsWithout<\n  typeof SelectPrimitive.Separator,\n  RemovedProps\n> {}\nconst SelectSeparator = React.forwardRef<SelectSeparatorElement, SelectSeparatorProps>(\n  ({ className, ...props }, forwardedRef) => (\n    <SelectPrimitive.Separator\n      {...props}\n      asChild={false}\n      ref={forwardedRef}\n      className={classNames('rt-SelectSeparator', className)}\n    />\n  ),\n);\nSelectSeparator.displayName = 'Select.Separator';\n\nexport {\n  SelectRoot as Root,\n  SelectTrigger as Trigger,\n  SelectContent as Content,\n  SelectItem as Item,\n  SelectGroup as Group,\n  SelectLabel as Label,\n  SelectSeparator as Separator,\n};\n\nexport type {\n  SelectRootProps as RootProps,\n  SelectTriggerProps as TriggerProps,\n  SelectContentProps as ContentProps,\n  SelectItemProps as ItemProps,\n  SelectGroupProps as GroupProps,\n  SelectLabelProps as LabelProps,\n  SelectSeparatorProps as SeparatorProps,\n};\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/separator.css",
    "content": ".rt-Separator {\n  display: block;\n  background-color: var(--accent-a6);\n}\n\n/***************************************************************************************************\n *                                                                                                 *\n * ORIENTATION                                                                                     *\n *                                                                                                 *\n ***************************************************************************************************/\n\n@breakpoints {\n  .rt-Separator {\n    &:where(.rt-r-orientation-horizontal) {\n      width: var(--separator-size);\n      height: 1px;\n    }\n    &:where(.rt-r-orientation-vertical) {\n      width: 1px;\n      height: var(--separator-size);\n    }\n  }\n}\n\n/***************************************************************************************************\n *                                                                                                 *\n * SIZES                                                                                           *\n *                                                                                                 *\n ***************************************************************************************************/\n\n@breakpoints {\n  .rt-Separator {\n    &:where(.rt-r-size-1) {\n      --separator-size: var(--space-4);\n    }\n    &:where(.rt-r-size-2) {\n      --separator-size: var(--space-6);\n    }\n    &:where(.rt-r-size-3) {\n      --separator-size: var(--space-9);\n    }\n    &:where(.rt-r-size-4) {\n      --separator-size: 100%;\n    }\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/separator.props.tsx",
    "content": "import { colorPropDef } from '../props/color.prop.js';\n\nimport type { PropDef } from '../props/prop-def.js';\n\nconst orientationValues = ['horizontal', 'vertical'] as const;\nconst sizes = ['1', '2', '3', '4'] as const;\n\nconst separatorPropDefs = {\n  orientation: {\n    type: 'enum',\n    className: 'rt-r-orientation',\n    values: orientationValues,\n    default: 'horizontal',\n    responsive: true,\n  },\n  size: { type: 'enum', className: 'rt-r-size', values: sizes, default: '1', responsive: true },\n  color: { ...colorPropDef.color, default: 'gray' },\n  decorative: { type: 'boolean', default: true },\n} satisfies {\n  orientation: PropDef<(typeof orientationValues)[number]>;\n  size: PropDef<(typeof sizes)[number]>;\n  color: typeof colorPropDef.color;\n  decorative: PropDef<boolean>;\n};\n\nexport { separatorPropDefs };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/separator.tsx",
    "content": "import * as React from 'react';\nimport classNames from 'classnames';\n\nimport { separatorPropDefs } from './separator.props.js';\nimport { extractProps } from '../helpers/extract-props.js';\nimport { marginPropDefs } from '../props/margin.props.js';\n\nimport type { MarginProps } from '../props/margin.props.js';\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\nimport type { GetPropDefTypes } from '../props/prop-def.js';\n\ntype SeparatorElement = React.ElementRef<'span'>;\ntype SeparatorOwnProps = GetPropDefTypes<typeof separatorPropDefs>;\ninterface SeparatorProps\n  extends ComponentPropsWithout<'span', RemovedProps>, MarginProps, SeparatorOwnProps {}\nconst Separator = React.forwardRef<SeparatorElement, SeparatorProps>((props, forwardedRef) => {\n  const { className, color, decorative, ...separatorProps } = extractProps(\n    props,\n    separatorPropDefs,\n    marginPropDefs,\n  );\n  return (\n    <span\n      data-accent-color={color}\n      role={decorative ? undefined : 'separator'}\n      {...separatorProps}\n      ref={forwardedRef}\n      className={classNames('rt-Separator', className)}\n    />\n  );\n});\nSeparator.displayName = 'Separator';\n\nexport { Separator };\nexport type { SeparatorProps };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/skeleton.css",
    "content": ".rt-Skeleton {\n  --skeleton-radius: var(--skeleton-radius-override);\n  --skeleton-height: var(--skeleton-height-override);\n  border-radius: var(--radius-1);\n  animation: rt-skeleton-pulse 1000ms infinite alternate-reverse !important;\n  background-image: none !important;\n  background-clip: border-box !important;\n  border: none !important;\n  box-shadow: none !important;\n  box-decoration-break: clone !important;\n  color: transparent !important;\n  outline: none !important;\n  pointer-events: none !important;\n  user-select: none !important;\n  cursor: default !important;\n}\n\n/*\n * Take font differences out of equation for inline Skeletons that just wrap text.\n * This makes the dimensions consistent between the following non-Skeleton and Skeleton text:\n * ```\n * <Text>Example text</Text>\n *\n * <Text>\n *   <Skeleton>Example text</Skeleton>\n * </Text>\n * ```\n *\n * Will NOT collapse Skeletons as the browsers use line-height on inline elements just for alignment.\n */\n.rt-Skeleton:where([data-inline-skeleton]) {\n  line-height: 0;\n  /* Font metrics on Arial yield much nicer height for the text background bounding box */\n  font-family: Arial, sans-serif !important;\n}\n\n:where(.rt-Skeleton:empty) {\n  display: block;\n  height: var(--space-3);\n}\n\n.rt-Skeleton > *,\n.rt-Skeleton::after,\n.rt-Skeleton::before {\n  visibility: hidden !important;\n}\n\n@keyframes rt-skeleton-pulse {\n  from {\n    background-color: var(--gray-a3);\n  }\n  to {\n    background-color: var(--gray-a4);\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/skeleton.props.tsx",
    "content": "import { heightPropDefs } from '../props/height.props.js';\nimport { widthPropDefs } from '../props/width.props.js';\n\nimport type { PropDef } from '../props/prop-def.js';\n\nconst skeletonPropDefs = {\n  loading: { type: 'boolean', default: true },\n  ...widthPropDefs,\n  ...heightPropDefs,\n} satisfies {\n  loading: PropDef<boolean>;\n};\n\nexport { skeletonPropDefs };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/skeleton.tsx",
    "content": "import * as React from 'react';\nimport classNames from 'classnames';\nimport { Slot } from 'radix-ui';\n\nimport { inert } from '../helpers/inert.js';\nimport { extractProps } from '../helpers/extract-props.js';\nimport { marginPropDefs } from '../props/margin.props.js';\nimport { skeletonPropDefs } from './skeleton.props.js';\n\nimport type { MarginProps } from '../props/margin.props.js';\nimport type { GetPropDefTypes } from '../props/prop-def.js';\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\n\ntype SkeletonElement = React.ElementRef<'span'>;\ntype SkeletonOwnProps = GetPropDefTypes<typeof skeletonPropDefs>;\ninterface SkeletonProps\n  extends ComponentPropsWithout<'span', RemovedProps>, MarginProps, SkeletonOwnProps {}\nconst Skeleton = React.forwardRef<SkeletonElement, SkeletonProps>((props, forwardedRef) => {\n  const { children, className, loading, ...skeletonProps } = extractProps(\n    props,\n    skeletonPropDefs,\n    marginPropDefs,\n  );\n\n  if (!loading) return children;\n\n  const Tag = React.isValidElement(children) ? Slot.Root : 'span';\n\n  return (\n    <Tag\n      ref={forwardedRef}\n      aria-hidden\n      className={classNames('rt-Skeleton', className)}\n      data-inline-skeleton={React.isValidElement(children) ? undefined : true}\n      tabIndex={-1}\n      inert={inert}\n      {...skeletonProps}\n    >\n      {children}\n    </Tag>\n  );\n});\nSkeleton.displayName = 'Skeleton';\n\nexport { Skeleton };\nexport type { SkeletonProps };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/slider.css",
    "content": ".rt-SliderRoot {\n  --slider-thumb-size: calc(var(--slider-track-size) + var(--space-1));\n\n  position: relative;\n  display: flex;\n  align-items: center;\n  flex-grow: 1;\n\n  border-radius: max(\n    calc(var(--radius-factor) * var(--slider-track-size) / 3),\n    calc(var(--radius-factor) * var(--radius-thumb))\n  );\n\n  /* ensures no selection */\n  user-select: none;\n  /* disable browser handling of all panning and zooming gestures on touch devices */\n  touch-action: none;\n\n  &:where([data-orientation='horizontal']) {\n    width: stretch;\n    height: var(--slider-track-size);\n  }\n  &:where([data-orientation='vertical']) {\n    height: stretch;\n    flex-direction: column;\n    width: var(--slider-track-size);\n  }\n}\n\n.rt-SliderTrack {\n  overflow: hidden;\n  position: relative;\n  flex-grow: 1;\n\n  border-radius: inherit;\n\n  &:where([data-orientation='horizontal']) {\n    height: var(--slider-track-size);\n  }\n  &:where([data-orientation='vertical']) {\n    width: var(--slider-track-size);\n  }\n}\n\n.rt-SliderRange {\n  position: absolute;\n  border-radius: inherit;\n\n  &:where([data-orientation='horizontal']) {\n    height: 100%;\n  }\n\n  &:where([data-orientation='vertical']) {\n    width: 100%;\n  }\n}\n\n.rt-SliderThumb {\n  display: block;\n  width: var(--slider-thumb-size);\n  height: var(--slider-thumb-size);\n\n  /* Safari */\n  outline: 0;\n\n  &::before {\n    content: '';\n    position: absolute;\n    z-index: -1;\n    width: calc(var(--slider-thumb-size) * 3);\n    height: calc(var(--slider-thumb-size) * 3);\n    top: 50%;\n    left: 50%;\n    transform: translate(-50%, -50%);\n  }\n\n  /* Larger visible thumb so that it slightly overshoots the range */\n  &::after {\n    content: '';\n    position: absolute;\n    inset: calc(-0.25 * var(--slider-track-size));\n    background-color: white;\n    border-radius: max(var(--radius-1), var(--radius-thumb));\n    box-shadow: var(--slider-thumb-box-shadow);\n    cursor: var(--cursor-slider-thumb);\n  }\n\n  &:where(:focus-visible)::after {\n    box-shadow:\n      var(--slider-thumb-box-shadow),\n      0 0 0 3px var(--accent-3),\n      0 0 0 5px var(--focus-8);\n  }\n\n  &:where(:active) {\n    cursor: var(--cursor-slider-thumb-active);\n  }\n}\n\n/***************************************************************************************************\n *                                                                                                 *\n * SIZES                                                                                           *\n *                                                                                                 *\n ***************************************************************************************************/\n\n@breakpoints {\n  .rt-SliderRoot {\n    &:where(.rt-r-size-1) {\n      --slider-track-size: calc(var(--space-2) * 0.75);\n    }\n    &:where(.rt-r-size-2) {\n      --slider-track-size: var(--space-2);\n    }\n    &:where(.rt-r-size-3) {\n      --slider-track-size: calc(var(--space-2) * 1.25);\n    }\n  }\n}\n\n/***************************************************************************************************\n *                                                                                                 *\n * VARIANTS                                                                                        *\n *                                                                                                 *\n ***************************************************************************************************/\n\n/* surface */\n\n.rt-SliderRoot:where(.rt-variant-surface) {\n  & :where(.rt-SliderTrack) {\n    background-color: var(--gray-a3);\n    box-shadow: inset 0 0 0 1px var(--gray-a5);\n\n    &:where([data-disabled]) {\n      box-shadow: inset 0 0 0 1px var(--gray-a4);\n    }\n  }\n\n  & :where(.rt-SliderRange) {\n    background-color: var(--accent-track);\n    background-image: var(--slider-range-high-contrast-background-image);\n    box-shadow: inset 0 0 0 1px var(--gray-a5);\n  }\n\n  & :where(.rt-SliderThumb) {\n    --slider-thumb-box-shadow: 0 0 0 1px var(--black-a4);\n\n    &:where([data-disabled])::after {\n      background-color: var(--gray-1);\n      box-shadow: 0 0 0 1px var(--gray-6);\n    }\n  }\n}\n\n/* classic */\n\n.rt-SliderRoot:where(.rt-variant-classic) {\n  & :where(.rt-SliderTrack) {\n    background-color: var(--gray-a3);\n    position: relative;\n\n    &::before {\n      content: '';\n      inset: 0;\n      position: absolute;\n      border-radius: inherit;\n      box-shadow: var(--shadow-1);\n    }\n    &:where([data-disabled])::before {\n      opacity: 0.5;\n    }\n  }\n\n  & :where(.rt-SliderRange) {\n    background-color: var(--accent-track);\n    background-image: var(--slider-range-high-contrast-background-image);\n    box-shadow:\n      inset 0 0 0 1px var(--gray-a3),\n      inset 0 0 0 1px var(--accent-a4),\n      inset 0 0 0 1px var(--black-a1),\n      inset 0 1.5px 2px 0 var(--black-a2);\n\n    &:where(.rt-high-contrast) {\n      box-shadow:\n        inset 0 0 0 1px var(--gray-a3),\n        inset 0 0 0 1px var(--black-a2),\n        inset 0 1.5px 2px 0 var(--black-a2);\n    }\n  }\n\n  & :where(.rt-SliderThumb) {\n    /* prettier-ignore */\n    --slider-thumb-box-shadow:\n      0 0 0 1px var(--black-a3),\n      0 1px 3px var(--black-a1),\n      0 2px 4px -1px var(--black-a1);\n\n    &:where([data-disabled])::after {\n      background-color: var(--gray-1);\n      box-shadow: 0 0 0 1px var(--gray-6);\n    }\n  }\n}\n\n/* soft */\n\n.rt-SliderRoot:where(.rt-variant-soft) {\n  & :where(.rt-SliderTrack) {\n    background-color: var(--gray-a4);\n    /* Blend with white to increase contrast in dark mode */\n    background-image: linear-gradient(var(--white-a1), var(--white-a1));\n\n    &:where([data-disabled]) {\n      background-color: var(--gray-a4);\n      background-image: none;\n    }\n  }\n\n  & :where(.rt-SliderRange) {\n    background-image:\n      linear-gradient(var(--accent-a5), var(--accent-a5)), var(--slider-range-high-contrast-background-image);\n    background-color: var(--accent-6);\n  }\n\n  & :where(.rt-SliderThumb) {\n    --slider-thumb-box-shadow:\n      0 0 0 1px var(--black-a3), 0 0 0 1px var(--gray-a2), 0 0 0 1px var(--accent-a2), 0 1px 2px var(--gray-a4),\n      0 1px 3px -0.5px var(--gray-a3);\n\n    &:where([data-disabled])::after {\n      background-color: var(--gray-1);\n      box-shadow: 0 0 0 1px var(--gray-5);\n    }\n  }\n}\n\n/* all high-contrast */\n\n:where(.radix-themes) {\n  --slider-range-high-contrast-background-image: linear-gradient(var(--black-a8), var(--black-a8));\n}\n:is(.dark, .dark-theme),\n:is(.dark, .dark-theme) :where(.radix-themes:not(.light, .light-theme)) {\n  --slider-range-high-contrast-background-image: none;\n}\n.rt-SliderRoot:where(:not(.rt-high-contrast)) {\n  --slider-range-high-contrast-background-image: none;\n}\n\n:where(.radix-themes) {\n  --slider-disabled-blend-mode: multiply;\n}\n:is(.dark, .dark-theme),\n:is(.dark, .dark-theme) :where(.radix-themes:not(.light, .light-theme)) {\n  --slider-disabled-blend-mode: screen;\n}\n\n/* all disabled Sliders */\n\n[data-disabled] {\n  .rt-SliderRoot:where(&) {\n    cursor: var(--cursor-disabled);\n    mix-blend-mode: var(--slider-disabled-blend-mode);\n  }\n  .rt-SliderRange:where(&) {\n    background-color: transparent;\n    background-image: none;\n    box-shadow: none;\n  }\n  .rt-SliderThumb:where(&),\n  .rt-SliderThumb:where(&)::after {\n    cursor: var(--cursor-disabled);\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/slider.props.tsx",
    "content": "import { colorPropDef } from '../props/color.prop.js';\nimport { highContrastPropDef } from '../props/high-contrast.prop.js';\nimport { radiusPropDef } from '../props/radius.prop.js';\n\nimport type { PropDef } from '../props/prop-def.js';\n\nconst sizes = ['1', '2', '3'] as const;\nconst variants = ['classic', 'surface', 'soft'] as const;\n\nconst sliderPropDefs = {\n  size: { type: 'enum', className: 'rt-r-size', values: sizes, default: '2', responsive: true },\n  variant: { type: 'enum', className: 'rt-variant', values: variants, default: 'surface' },\n  ...colorPropDef,\n  ...highContrastPropDef,\n  ...radiusPropDef,\n} satisfies {\n  size: PropDef<(typeof sizes)[number]>;\n  variant: PropDef<(typeof variants)[number]>;\n};\n\nexport { sliderPropDefs };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/slider.tsx",
    "content": "import * as React from 'react';\nimport classNames from 'classnames';\nimport { Slider as SliderPrimitive } from 'radix-ui';\n\nimport { sliderPropDefs } from './slider.props.js';\nimport { extractProps } from '../helpers/extract-props.js';\nimport { marginPropDefs } from '../props/margin.props.js';\n\nimport type { MarginProps } from '../props/margin.props.js';\nimport type { ComponentPropsWithout } from '../helpers/component-props.js';\nimport type { GetPropDefTypes } from '../props/prop-def.js';\n\ntype SliderElement = React.ElementRef<typeof SliderPrimitive.Root>;\ntype SliderOwnProps = GetPropDefTypes<typeof sliderPropDefs>;\ninterface SliderProps\n  extends\n    ComponentPropsWithout<\n      typeof SliderPrimitive.Root,\n      'asChild' | 'color' | 'children' | 'defaultChecked'\n    >,\n    MarginProps,\n    SliderOwnProps {}\nconst Slider = React.forwardRef<SliderElement, SliderProps>((props, forwardedRef) => {\n  const { className, color, radius, tabIndex, ...sliderProps } = extractProps(\n    props,\n    sliderPropDefs,\n    marginPropDefs,\n  );\n  return (\n    <SliderPrimitive.Root\n      data-accent-color={color}\n      data-radius={radius}\n      ref={forwardedRef}\n      {...sliderProps}\n      asChild={false}\n      className={classNames('rt-SliderRoot', className)}\n    >\n      <SliderPrimitive.Track className=\"rt-SliderTrack\">\n        <SliderPrimitive.Range\n          className={classNames('rt-SliderRange', { 'rt-high-contrast': props.highContrast })}\n          data-inverted={sliderProps.inverted ? '' : undefined}\n        />\n      </SliderPrimitive.Track>\n      {(sliderProps.value ?? sliderProps.defaultValue ?? []).map((value, index) => (\n        <SliderPrimitive.Thumb\n          key={index}\n          className=\"rt-SliderThumb\"\n          {...(tabIndex !== undefined ? { tabIndex } : undefined)}\n        />\n      ))}\n    </SliderPrimitive.Root>\n  );\n});\nSlider.displayName = 'Slider';\n\nexport { Slider };\nexport type { SliderProps };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/slot.tsx",
    "content": "import { Slot as SlotPrimitive } from 'radix-ui';\nexport const Root = SlotPrimitive.Root;\nexport const Slot = SlotPrimitive.Root;\nexport const Slottable = SlotPrimitive.Slottable;\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/spinner.css",
    "content": ".radix-themes {\n  --spinner-animation-duration: 800ms;\n  --spinner-opacity: 0.65;\n}\n\n.rt-Spinner {\n  display: block;\n  position: relative;\n  opacity: var(--spinner-opacity);\n}\n\n.rt-SpinnerLeaf {\n  position: absolute;\n  top: 0;\n  left: calc(50% - 12.5% / 2);\n  width: 12.5%;\n  height: 100%;\n  animation: rt-spinner-leaf-fade var(--spinner-animation-duration) linear infinite;\n\n  &::before {\n    content: '';\n    display: block;\n    width: 100%;\n    height: 30%;\n    border-radius: var(--radius-1);\n    background-color: currentColor;\n  }\n\n  &:where(:nth-child(1)) {\n    transform: rotate(0deg);\n    animation-delay: calc(-8 / 8 * var(--spinner-animation-duration));\n  }\n  &:where(:nth-child(2)) {\n    transform: rotate(45deg);\n    animation-delay: calc(-7 / 8 * var(--spinner-animation-duration));\n  }\n  &:where(:nth-child(3)) {\n    transform: rotate(90deg);\n    animation-delay: calc(-6 / 8 * var(--spinner-animation-duration));\n  }\n  &:where(:nth-child(4)) {\n    transform: rotate(135deg);\n    animation-delay: calc(-5 / 8 * var(--spinner-animation-duration));\n  }\n  &:where(:nth-child(5)) {\n    transform: rotate(180deg);\n    animation-delay: calc(-4 / 8 * var(--spinner-animation-duration));\n  }\n  &:where(:nth-child(6)) {\n    transform: rotate(225deg);\n    animation-delay: calc(-3 / 8 * var(--spinner-animation-duration));\n  }\n  &:where(:nth-child(7)) {\n    transform: rotate(270deg);\n    animation-delay: calc(-2 / 8 * var(--spinner-animation-duration));\n  }\n  &:where(:nth-child(8)) {\n    transform: rotate(315deg);\n    animation-delay: calc(-1 / 8 * var(--spinner-animation-duration));\n  }\n}\n\n@keyframes rt-spinner-leaf-fade {\n  from {\n    opacity: 1;\n  }\n  to {\n    opacity: 0.25;\n  }\n}\n\n/***************************************************************************************************\n *                                                                                                 *\n * SIZES                                                                                           *\n *                                                                                                 *\n ***************************************************************************************************/\n\n@breakpoints {\n  .rt-Spinner {\n    &:where(.rt-r-size-1) {\n      width: var(--space-3);\n      height: var(--space-3);\n    }\n    &:where(.rt-r-size-2) {\n      width: var(--space-4);\n      height: var(--space-4);\n    }\n    &:where(.rt-r-size-3) {\n      width: calc(1.25 * var(--space-4));\n      height: calc(1.25 * var(--space-4));\n    }\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/spinner.props.tsx",
    "content": "import type { PropDef } from '../props/prop-def.js';\n\nconst sizes = ['1', '2', '3'] as const;\n\nconst spinnerPropDefs = {\n  size: { type: 'enum', className: 'rt-r-size', values: sizes, default: '2', responsive: true },\n  loading: { type: 'boolean', default: true },\n} satisfies {\n  size: PropDef<(typeof sizes)[number]>;\n  loading: PropDef<boolean>;\n};\n\nexport { spinnerPropDefs };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/spinner.tsx",
    "content": "import * as React from 'react';\nimport classNames from 'classnames';\n\nimport { Flex } from './flex.js';\nimport { spinnerPropDefs } from './spinner.props.js';\nimport { extractProps } from '../helpers/extract-props.js';\nimport { marginPropDefs } from '../props/margin.props.js';\n\nimport type { MarginProps } from '../props/margin.props.js';\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\nimport type { GetPropDefTypes } from '../props/prop-def.js';\n\ntype SpinnerElement = React.ElementRef<'span'>;\ntype SpinnerOwnProps = GetPropDefTypes<typeof spinnerPropDefs>;\ninterface SpinnerProps\n  extends ComponentPropsWithout<'span', RemovedProps>, MarginProps, SpinnerOwnProps {}\nconst Spinner = React.forwardRef<SpinnerElement, SpinnerProps>((props, forwardedRef) => {\n  const { className, children, loading, ...spinnerProps } = extractProps(\n    props,\n    spinnerPropDefs,\n    marginPropDefs,\n  );\n\n  if (!loading) return children;\n\n  const spinner = (\n    <span {...spinnerProps} ref={forwardedRef} className={classNames('rt-Spinner', className)}>\n      <span className=\"rt-SpinnerLeaf\" />\n      <span className=\"rt-SpinnerLeaf\" />\n      <span className=\"rt-SpinnerLeaf\" />\n      <span className=\"rt-SpinnerLeaf\" />\n      <span className=\"rt-SpinnerLeaf\" />\n      <span className=\"rt-SpinnerLeaf\" />\n      <span className=\"rt-SpinnerLeaf\" />\n      <span className=\"rt-SpinnerLeaf\" />\n    </span>\n  );\n\n  if (children === undefined) return spinner;\n\n  return (\n    <Flex asChild position=\"relative\" align=\"center\" justify=\"center\">\n      <span>\n        {/**\n         * `display: contents` removes the content from the accessibility tree in some browsers,\n         * so we force remove it with `aria-hidden`\n         */}\n        <span aria-hidden style={{ display: 'contents', visibility: 'hidden' }} inert={undefined}>\n          {children}\n        </span>\n\n        <Flex asChild align=\"center\" justify=\"center\" position=\"absolute\" inset=\"0\">\n          <span>{spinner}</span>\n        </Flex>\n      </span>\n    </Flex>\n  );\n});\nSpinner.displayName = 'Spinner';\n\nexport { Spinner };\nexport type { SpinnerProps };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/strong.css",
    "content": ".rt-Strong {\n  font-family: var(--strong-font-family);\n  font-size: calc(var(--strong-font-size-adjust) * 1em);\n  font-style: var(--strong-font-style);\n  font-weight: var(--strong-font-weight);\n  letter-spacing: calc(var(--strong-letter-spacing) + var(--letter-spacing, var(--default-letter-spacing)));\n\n  & :where(&) {\n    font-size: inherit;\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/strong.props.tsx",
    "content": "import { asChildPropDef } from '../props/as-child.prop.js';\nimport { textWrapPropDef } from '../props/text-wrap.prop.js';\nimport { truncatePropDef } from '../props/truncate.prop.js';\n\nconst strongPropDefs = {\n  ...asChildPropDef,\n  ...truncatePropDef,\n  ...textWrapPropDef,\n};\n\nexport { strongPropDefs };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/strong.tsx",
    "content": "import * as React from 'react';\nimport classNames from 'classnames';\nimport { Slot } from 'radix-ui';\n\nimport { extractProps } from '../helpers/extract-props.js';\nimport { strongPropDefs } from './strong.props.js';\n\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\nimport type { GetPropDefTypes } from '../props/prop-def.js';\n\ntype StrongElement = React.ElementRef<'strong'>;\ntype StrongOwnProps = GetPropDefTypes<typeof strongPropDefs>;\ninterface StrongProps extends ComponentPropsWithout<'strong', RemovedProps>, StrongOwnProps {}\nconst Strong = React.forwardRef<StrongElement, StrongProps>((props, forwardedRef) => {\n  const { asChild, className, ...strongProps } = extractProps(props, strongPropDefs);\n  const Comp = asChild ? Slot.Root : 'strong';\n  return (\n    <Comp {...strongProps} ref={forwardedRef} className={classNames('rt-Strong', className)} />\n  );\n});\nStrong.displayName = 'Strong';\n\nexport { Strong };\nexport type { StrongProps };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/switch.css",
    "content": ":where(.radix-themes) {\n  --switch-disabled-blend-mode: multiply;\n  --switch-high-contrast-checked-color-overlay: var(--black-a8);\n  --switch-high-contrast-checked-active-before-filter: contrast(0.82) saturate(1.2) brightness(1.16);\n}\n\n:is(.dark, .dark-theme),\n:is(.dark, .dark-theme) :where(.radix-themes:not(.light, .light-theme)) {\n  --switch-disabled-blend-mode: screen;\n  --switch-high-contrast-checked-color-overlay: transparent;\n  --switch-high-contrast-checked-active-before-filter: brightness(1.08);\n}\n\n.rt-SwitchRoot {\n  position: relative;\n  display: inline-flex;\n  align-items: center;\n  vertical-align: top;\n  flex-shrink: 0;\n\n  /* Unless in a skeleton, align with text line height when possible and fall back to own height */\n  height: var(--skeleton-height, var(--line-height, var(--switch-height)));\n  --skeleton-height-override: var(--switch-height);\n\n  /* Set root radius when in a skeleton */\n  border-radius: var(--skeleton-radius);\n  --skeleton-radius-override: var(--switch-border-radius);\n\n  --switch-width: calc(var(--switch-height) * 1.75);\n  --switch-thumb-inset: 1px;\n  --switch-thumb-size: calc(var(--switch-height) - var(--switch-thumb-inset) * 2);\n  --switch-thumb-translate-x: calc(var(--switch-width) - var(--switch-height));\n\n  &::before {\n    content: '';\n    display: block;\n    width: var(--switch-width);\n    height: var(--switch-height);\n    border-radius: var(--switch-border-radius);\n    transition: background-position, background-color, box-shadow, filter;\n    transition-timing-function: linear, ease-in-out, ease-in-out, ease-in-out;\n    background-repeat: no-repeat;\n\n    /*\n     * Length of the gradient is: switch width for the checked part, plus switch\n     * height for the thumb part, plus another switch width for the unchecked part\n     */\n    background-size: calc(var(--switch-width) * 2 + var(--switch-height)) 100%;\n  }\n\n  &:where([data-state='unchecked'])::before {\n    transition-duration: 120ms, 140ms, 140ms, 140ms;\n    background-position-x: 100%;\n  }\n  &:where([data-state='checked'])::before {\n    transition-duration: 160ms, 140ms, 140ms, 140ms;\n    background-position: 0%;\n  }\n  &:where(:active)::before {\n    transition-duration: 30ms;\n  }\n  &:where(:focus-visible)::before {\n    outline: 2px solid var(--focus-8);\n    outline-offset: 2px;\n  }\n\n  /* Cursors */\n  &::before {\n    cursor: var(--cursor-switch);\n  }\n  &:where([data-disabled])::before {\n    cursor: var(--cursor-disabled);\n  }\n}\n\n.rt-SwitchThumb {\n  background-color: white;\n  position: absolute;\n  left: var(--switch-thumb-inset);\n  width: var(--switch-thumb-size);\n  height: var(--switch-thumb-size);\n  border-radius: calc(var(--switch-border-radius) - var(--switch-thumb-inset));\n  transition:\n    transform 140ms cubic-bezier(0.45, 0.05, 0.55, 0.95),\n    box-shadow 140ms ease-in-out;\n\n  &:where([data-state='checked']) {\n    transform: translateX(var(--switch-thumb-translate-x));\n  }\n}\n\n/***************************************************************************************************\n *                                                                                                 *\n * SIZES                                                                                           *\n *                                                                                                 *\n ***************************************************************************************************/\n\n@breakpoints {\n  .rt-SwitchRoot {\n    &:where(.rt-r-size-1) {\n      --switch-height: var(--space-4);\n      --switch-border-radius: max(var(--radius-1), var(--radius-thumb));\n    }\n    &:where(.rt-r-size-2) {\n      --switch-height: calc(var(--space-5) * 5 / 6);\n      --switch-border-radius: max(var(--radius-2), var(--radius-thumb));\n    }\n    &:where(.rt-r-size-3) {\n      --switch-height: var(--space-5);\n      --switch-border-radius: max(var(--radius-2), var(--radius-thumb));\n    }\n  }\n}\n\n/***************************************************************************************************\n *                                                                                                 *\n * VARIANTS                                                                                        *\n *                                                                                                 *\n ***************************************************************************************************/\n\n/* surface */\n\n:where(.radix-themes) {\n  --switch-surface-checked-active-filter: brightness(0.92) saturate(1.1);\n}\n\n:is(.dark, .dark-theme),\n:is(.dark, .dark-theme) :where(.radix-themes:not(.light, .light-theme)) {\n  --switch-surface-checked-active-filter: brightness(1.08);\n}\n\n.rt-SwitchRoot:where(.rt-variant-surface) {\n  &::before {\n    background-color: var(--gray-a3);\n    background-image: linear-gradient(to right, var(--accent-track) 40%, transparent 60%);\n    box-shadow: inset 0 0 0 1px var(--gray-a5);\n  }\n  &:where(:active)::before {\n    background-color: var(--gray-a4);\n  }\n  &:where([data-state='checked']:active)::before {\n    filter: var(--switch-surface-checked-active-filter);\n  }\n  &:where(.rt-high-contrast) {\n    &::before {\n      /* prettier-ignore */\n      background-image:\n        linear-gradient(to right, var(--switch-high-contrast-checked-color-overlay) 40%, transparent 60%),\n        linear-gradient(to right, var(--accent-track) 40%, transparent 60%);\n    }\n    &:where([data-state='checked']:active)::before {\n      filter: var(--switch-high-contrast-checked-active-before-filter);\n    }\n  }\n  &:where([data-disabled]) {\n    mix-blend-mode: var(--switch-disabled-blend-mode);\n\n    &::before {\n      filter: none;\n      background-image: none;\n      background-color: var(--gray-a3);\n      box-shadow: inset 0 0 0 1px var(--gray-a3);\n    }\n  }\n\n  & :where(.rt-SwitchThumb) {\n    &:where([data-state='unchecked']) {\n      box-shadow:\n        0 0 1px 1px var(--black-a2),\n        0 1px 1px var(--black-a1),\n        0 2px 4px -1px var(--black-a1);\n    }\n    &:where([data-state='checked']) {\n      box-shadow:\n        0 1px 3px var(--black-a2),\n        0 2px 4px -1px var(--black-a1),\n        0 0 0 1px var(--black-a1),\n        0 0 0 1px var(--accent-a4),\n        -1px 0 1px var(--black-a2);\n\n      &:where(.rt-high-contrast) {\n        box-shadow:\n          0 1px 3px var(--black-a2),\n          0 2px 4px -1px var(--black-a1),\n          0 0 0 1px var(--black-a2),\n          -1px 0 1px var(--black-a2);\n      }\n    }\n    &:where([data-disabled]) {\n      background-color: var(--gray-2);\n      box-shadow:\n        0 0 0 1px var(--gray-a2),\n        0 1px 3px var(--black-a1);\n      /* Avoid the Chrome P3 bug with transition through red when changing light/dark mode */\n      transition: none;\n    }\n  }\n}\n\n/* classic */\n\n:where(.radix-themes) {\n  --switch-surface-checked-active-filter: brightness(0.92) saturate(1.1);\n}\n:is(.dark, .dark-theme),\n:is(.dark, .dark-theme) :where(.radix-themes:not(.light, .light-theme)) {\n  --switch-surface-checked-active-filter: brightness(1.08);\n}\n\n.rt-SwitchRoot:where(.rt-variant-classic) {\n  &::before {\n    background-image: linear-gradient(to right, var(--accent-track) 40%, transparent 60%);\n    background-color: var(--gray-a4);\n    box-shadow: var(--shadow-1);\n  }\n  &:where([data-state='unchecked']:active)::before {\n    background-color: var(--gray-a5);\n  }\n  &:where([data-state='checked'])::before {\n    box-shadow:\n      inset 0 0 0 1px var(--gray-a3),\n      inset 0 0 0 1px var(--accent-a4),\n      inset 0 0 0 1px var(--black-a1),\n      inset 0 1.5px 2px 0 var(--black-a2);\n  }\n  &:where([data-state='checked']:active)::before {\n    filter: var(--switch-surface-checked-active-filter);\n  }\n  &:where(.rt-high-contrast) {\n    &::before {\n      box-shadow:\n        inset 0 0 0 1px var(--gray-a3),\n        inset 0 0 0 1px var(--black-a2),\n        inset 0 1.5px 2px 0 var(--black-a2);\n\n      /* prettier-ignore */\n      background-image:\n        linear-gradient(to right, var(--switch-high-contrast-checked-color-overlay) 40%, transparent 60%),\n        linear-gradient(to right, var(--accent-track) 40%, transparent 60%);\n    }\n    &:where([data-state='checked']:active)::before {\n      filter: var(--switch-high-contrast-checked-active-before-filter);\n    }\n  }\n  &:where([data-disabled]) {\n    mix-blend-mode: var(--switch-disabled-blend-mode);\n\n    &::before {\n      filter: none;\n      background-image: none;\n      background-color: var(--gray-a5);\n      box-shadow: var(--shadow-1);\n      opacity: 0.5;\n    }\n  }\n\n  & :where(.rt-SwitchThumb) {\n    &:where([data-state='unchecked']) {\n      box-shadow:\n        0 1px 3px var(--black-a3),\n        0 2px 4px -1px var(--black-a1),\n        0 0 0 1px var(--black-a2);\n    }\n    &:where([data-state='checked']) {\n      box-shadow:\n        0 1px 3px var(--black-a2),\n        0 2px 4px -1px var(--black-a1),\n        0 0 0 1px var(--black-a1),\n        0 0 0 1px var(--accent-a4),\n        -1px 0 1px var(--black-a2);\n\n      &:where(.rt-high-contrast) {\n        box-shadow:\n          0 1px 3px var(--black-a2),\n          0 2px 4px -1px var(--black-a1),\n          0 0 0 1px var(--black-a2),\n          -1px 0 1px var(--black-a2);\n      }\n    }\n    &:where([data-disabled]) {\n      background-color: var(--gray-2);\n      box-shadow:\n        0 0 0 1px var(--gray-a2),\n        0 1px 3px var(--black-a1);\n      /* Avoid the Chrome P3 bug with transition through red when changing light/dark mode */\n      transition: none;\n    }\n  }\n}\n\n/* soft */\n\n.rt-SwitchRoot:where(.rt-variant-soft) {\n  /* prettier-ignore */\n  &::before {\n    background-image:\n      linear-gradient(to right, var(--accent-a4) 40%, transparent 60%),\n      linear-gradient(to right, var(--accent-a4) 40%, transparent 60%),\n      /* Blend with white to increase contrast in dark mode */\n      linear-gradient(to right, var(--accent-a4) 40%, var(--white-a1) 60%),\n      linear-gradient(to right, var(--gray-a2) 40%, var(--gray-a3) 60%);\n  }\n  &:where([data-state='unchecked'])::before {\n    background-color: var(--gray-a3);\n  }\n  &:where(:active)::before {\n    background-color: var(--gray-a4);\n  }\n  &:where(.rt-high-contrast) {\n    &::before {\n      /* prettier-ignore */\n      background-image:\n        linear-gradient(to right, var(--switch-high-contrast-checked-color-overlay) 40%, transparent 60%),\n        linear-gradient(to right, var(--accent-a6) 40%, transparent 60%),\n        linear-gradient(to right, var(--accent-a6) 40%, transparent 60%),\n        linear-gradient(to right, var(--accent-a6) 40%, var(--white-a1) 60%),\n        linear-gradient(to right, var(--accent-a3) 40%, var(--gray-a3) 60%);\n    }\n    &:where([data-state='checked']:active)::before {\n      filter: var(--switch-high-contrast-checked-active-before-filter);\n    }\n  }\n  &:where([data-disabled]) {\n    mix-blend-mode: var(--switch-disabled-blend-mode);\n\n    &::before {\n      filter: none;\n      background-image: none;\n      background-color: var(--gray-a4);\n    }\n  }\n\n  & :where(.rt-SwitchThumb) {\n    filter: saturate(0.45);\n\n    &:where([data-state='unchecked']) {\n      box-shadow:\n        0 0 0 1px var(--black-a1),\n        0 1px 3px var(--black-a1),\n        0 1px 3px var(--black-a1),\n        0 2px 4px -1px var(--black-a1);\n    }\n\n    &:where([data-state='checked']) {\n      box-shadow:\n        0 0 0 1px var(--black-a1),\n        0 1px 3px var(--black-a2),\n        0 1px 3px var(--accent-a3),\n        0 2px 4px -1px var(--accent-a3);\n    }\n\n    &:where([data-disabled]) {\n      filter: none;\n      background-color: var(--gray-2);\n      box-shadow:\n        0 0 0 1px var(--gray-a2),\n        0 1px 3px var(--black-a1);\n      /* Avoid the Chrome P3 bug with transition through red when changing light/dark mode */\n      transition: none;\n    }\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/switch.props.tsx",
    "content": "import { colorPropDef } from '../props/color.prop.js';\nimport { highContrastPropDef } from '../props/high-contrast.prop.js';\nimport { radiusPropDef } from '../props/radius.prop.js';\n\nimport type { PropDef } from '../props/prop-def.js';\n\nconst sizes = ['1', '2', '3'] as const;\nconst variants = ['classic', 'surface', 'soft'] as const;\n\nconst switchPropDefs = {\n  size: { type: 'enum', className: 'rt-r-size', values: sizes, default: '2', responsive: true },\n  variant: { type: 'enum', className: 'rt-variant', values: variants, default: 'surface' },\n  ...colorPropDef,\n  ...highContrastPropDef,\n  ...radiusPropDef,\n} satisfies {\n  size: PropDef<(typeof sizes)[number]>;\n  variant: PropDef<(typeof variants)[number]>;\n};\n\nexport { switchPropDefs };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/switch.tsx",
    "content": "import * as React from 'react';\nimport classNames from 'classnames';\nimport { Switch as SwitchPrimitive } from 'radix-ui';\n\nimport { extractProps } from '../helpers/extract-props.js';\nimport { marginPropDefs } from '../props/margin.props.js';\nimport { switchPropDefs } from './switch.props.js';\n\nimport type { MarginProps } from '../props/margin.props.js';\nimport type { GetPropDefTypes } from '../props/prop-def.js';\nimport type { ComponentPropsWithout } from '../helpers/component-props.js';\n\ntype SwitchElement = React.ElementRef<typeof SwitchPrimitive.Root>;\ntype SwitchOwnProps = GetPropDefTypes<typeof switchPropDefs>;\ninterface SwitchProps\n  extends\n    ComponentPropsWithout<\n      typeof SwitchPrimitive.Root,\n      'asChild' | 'color' | 'defaultValue' | 'children'\n    >,\n    MarginProps,\n    SwitchOwnProps {}\nconst Switch = React.forwardRef<SwitchElement, SwitchProps>((props, forwardedRef) => {\n  const { className, color, radius, ...switchProps } = extractProps(\n    props,\n    switchPropDefs,\n    marginPropDefs,\n  );\n  return (\n    <SwitchPrimitive.Root\n      data-accent-color={color}\n      data-radius={radius}\n      {...switchProps}\n      asChild={false}\n      ref={forwardedRef}\n      className={classNames('rt-reset', 'rt-SwitchRoot', className)}\n    >\n      <SwitchPrimitive.Thumb\n        className={classNames('rt-SwitchThumb', { 'rt-high-contrast': props.highContrast })}\n      />\n    </SwitchPrimitive.Root>\n  );\n});\nSwitch.displayName = 'Switch';\n\nexport { Switch };\nexport type { SwitchProps };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/tab-nav.css",
    "content": "@import './_internal/base-tab-list.css';\n\n.rt-TabNavItem {\n  display: flex;\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/tab-nav.props.tsx",
    "content": "import { asChildPropDef } from '../props/as-child.prop.js';\n\nimport type { PropDef } from '../props/prop-def.js';\n\nconst tabNavLinkPropDefs = {\n  ...asChildPropDef,\n  active: { type: 'boolean', default: false },\n} satisfies {\n  active: PropDef<boolean>;\n};\n\nexport { baseTabListPropDefs as tabNavRootPropDefs } from './_internal/base-tab-list.props.js';\nexport { tabNavLinkPropDefs };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/tab-nav.tsx",
    "content": "import * as React from 'react';\nimport classNames from 'classnames';\nimport { NavigationMenu } from 'radix-ui';\n\nimport { tabNavRootPropDefs } from './tab-nav.props.js';\nimport { extractProps } from '../helpers/extract-props.js';\nimport { getSubtree } from '../helpers/get-subtree.js';\nimport { marginPropDefs } from '../props/margin.props.js';\n\nimport type { tabNavLinkPropDefs } from './tab-nav.props.js';\nimport type { MarginProps } from '../props/margin.props.js';\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\nimport type { GetPropDefTypes } from '../props/prop-def.js';\n\ntype TabNavRootElement = React.ElementRef<typeof NavigationMenu.Root>;\ntype TabNavRootElementProps = ComponentPropsWithout<'nav', RemovedProps>;\ntype TabNavOwnProps = GetPropDefTypes<typeof tabNavRootPropDefs>;\ninterface TabNavRootProps\n  extends\n    Omit<TabNavRootElementProps, 'defaultValue' | 'dir' | 'color'>,\n    MarginProps,\n    TabNavOwnProps {}\nconst TabNavRoot = React.forwardRef<TabNavRootElement, TabNavRootProps>((props, forwardedRef) => {\n  const { children, className, color, ...rootProps } = extractProps(\n    props,\n    tabNavRootPropDefs,\n    marginPropDefs,\n  );\n  return (\n    <NavigationMenu.Root\n      className=\"rt-TabNavRoot\"\n      data-accent-color={color}\n      {...rootProps}\n      asChild={false}\n      ref={forwardedRef}\n    >\n      <NavigationMenu.List\n        className={classNames('rt-reset', 'rt-BaseTabList', 'rt-TabNavList', className)}\n      >\n        {children}\n      </NavigationMenu.List>\n    </NavigationMenu.Root>\n  );\n});\nTabNavRoot.displayName = 'TabNav.Root';\n\ntype TabNavLinkElement = React.ElementRef<typeof NavigationMenu.Link>;\ntype TabNavLinkOwnProps = GetPropDefTypes<typeof tabNavLinkPropDefs>;\ninterface TabNavLinkProps\n  extends\n    ComponentPropsWithout<typeof NavigationMenu.Link, RemovedProps | 'onSelect'>,\n    TabNavLinkOwnProps {}\nconst TabNavLink = React.forwardRef<TabNavLinkElement, TabNavLinkProps>((props, forwardedRef) => {\n  const { asChild, children, className, ...linkProps } = props;\n\n  return (\n    <NavigationMenu.Item className=\"rt-TabNavItem\">\n      <NavigationMenu.Link\n        {...linkProps}\n        ref={forwardedRef}\n        className={classNames('rt-reset', 'rt-BaseTabListTrigger', 'rt-TabNavLink', className)}\n        onSelect={undefined}\n        asChild={asChild}\n      >\n        {getSubtree({ asChild, children }, (children) => (\n          <>\n            <span className=\"rt-BaseTabListTriggerInner rt-TabNavLinkInner\">{children}</span>\n            <span className=\"rt-BaseTabListTriggerInnerHidden rt-TabNavLinkInnerHidden\">\n              {children}\n            </span>\n          </>\n        ))}\n      </NavigationMenu.Link>\n    </NavigationMenu.Item>\n  );\n});\nTabNavLink.displayName = 'TabNav.Link';\n\nexport { TabNavRoot as Root, TabNavLink as Link };\nexport type { TabNavRootProps as RootProps, TabNavLinkProps as LinkProps };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/table.css",
    "content": ".rt-TableRootTable {\n  --table-row-background-color: transparent;\n  --table-row-box-shadow: inset 0 -1px var(--gray-a5);\n\n  width: 100%;\n  text-align: left;\n  vertical-align: top;\n  border-collapse: collapse;\n  border-radius: calc(var(--table-border-radius) - 1px);\n  border-spacing: 0;\n  box-sizing: border-box;\n\n  /* Makes \"height: 100%\" work on content inside cells */\n  height: 0;\n}\n\n.rt-TableHeader {\n  vertical-align: inherit;\n}\n\n.rt-TableBody {\n  vertical-align: inherit;\n}\n\n.rt-TableRow {\n  vertical-align: inherit;\n  color: var(--gray-12);\n}\n\n.rt-TableCell {\n  background-color: var(--table-row-background-color);\n  box-shadow: var(--table-row-box-shadow);\n  box-sizing: border-box;\n  vertical-align: inherit;\n  padding: var(--table-cell-padding);\n  /* Works as min-height */\n  height: var(--table-cell-min-height);\n\n  /* Inset with Table */\n  .rt-Inset :where(&:first-child) {\n    padding-left: var(--inset-padding-left, var(--table-cell-padding));\n  }\n  .rt-Inset :where(&:last-child) {\n    padding-right: var(--inset-padding-right, var(--table-cell-padding));\n  }\n}\n.rt-TableColumnHeaderCell {\n  font-weight: bold;\n}\n.rt-TableRowHeaderCell {\n  font-weight: normal;\n}\n\n/***************************************************************************************************\n *                                                                                                 *\n * SIZES                                                                                           *\n *                                                                                                 *\n ***************************************************************************************************/\n\n@breakpoints {\n  .rt-TableRoot {\n    &:where(.rt-r-size-1) {\n      --table-border-radius: var(--radius-3);\n      --table-cell-padding: var(--space-2);\n      --table-cell-min-height: calc(36px * var(--scaling));\n\n      & :where(.rt-TableRootTable) {\n        font-size: var(--font-size-2);\n        line-height: var(--line-height-2);\n      }\n    }\n    &:where(.rt-r-size-2) {\n      --table-border-radius: var(--radius-4);\n      --table-cell-padding: var(--space-3);\n      --table-cell-min-height: calc(44px * var(--scaling));\n\n      & :where(.rt-TableRootTable) {\n        font-size: var(--font-size-2);\n        line-height: var(--line-height-2);\n      }\n    }\n    &:where(.rt-r-size-3) {\n      --table-border-radius: var(--radius-4);\n      --table-cell-padding: var(--space-3) var(--space-4);\n      --table-cell-min-height: var(--space-8);\n\n      & :where(.rt-TableRootTable) {\n        font-size: var(--font-size-3);\n        line-height: var(--line-height-3);\n      }\n    }\n  }\n}\n\n/***************************************************************************************************\n *                                                                                                 *\n * VARIANTS                                                                                        *\n *                                                                                                 *\n ***************************************************************************************************/\n\n/* surface */\n\n.rt-TableRoot:where(.rt-variant-surface) {\n  box-sizing: border-box;\n  border: 1px solid var(--gray-a5);\n  border-radius: var(--table-border-radius);\n  background-color: var(--color-panel);\n  backdrop-filter: var(--backdrop-filter-panel);\n  background-clip: padding-box;\n  position: relative;\n\n  /* When possible, use half-transparent gray for nicer border blending with the background */\n  @supports (box-shadow: 0 0 0 1px color-mix(in oklab, white, black)) {\n    border-color: color-mix(in oklab, var(--gray-a5), var(--gray-6));\n  }\n\n  & :where(.rt-TableRootTable) {\n    overflow: hidden;\n\n    & :where(.rt-TableHeader) {\n      --table-row-background-color: var(--gray-a2);\n    }\n    & :where(.rt-TableBody) :where(.rt-TableRow:last-child) {\n      --table-row-box-shadow: none;\n    }\n  }\n}\n\n/* ghost */\n\n.rt-TableRoot:where(.rt-variant-ghost) {\n  --scrollarea-scrollbar-horizontal-margin-left: 0;\n  --scrollarea-scrollbar-horizontal-margin-right: 0;\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/table.props.tsx",
    "content": "import { paddingPropDefs } from '../props/padding.props.js';\nimport { widthPropDefs } from '../props/width.props.js';\n\nimport type { PropDef } from '../props/prop-def.js';\n\nconst sizes = ['1', '2', '3'] as const;\nconst variants = ['surface', 'ghost'] as const;\nconst layoutValues = ['auto', 'fixed'] as const;\n\nconst tableRootPropDefs = {\n  size: {\n    type: 'enum',\n    className: 'rt-r-size',\n    values: sizes,\n    default: '2',\n    responsive: true,\n  },\n  variant: {\n    type: 'enum',\n    className: 'rt-variant',\n    values: variants,\n    default: 'ghost',\n  },\n  layout: {\n    type: 'enum',\n    className: 'rt-r-tl',\n    values: layoutValues,\n    responsive: true,\n  },\n} satisfies {\n  size: PropDef<(typeof sizes)[number]>;\n  variant: PropDef<(typeof variants)[number]>;\n  layout: PropDef<(typeof layoutValues)[number]>;\n};\n\nconst rowAlign = ['start', 'center', 'end', 'baseline'] as const;\n\nconst tableRowPropDefs = {\n  align: {\n    type: 'enum',\n    className: 'rt-r-va',\n    values: rowAlign,\n    parseValue: parseAlignValue,\n    responsive: true,\n  },\n} satisfies {\n  align: PropDef<(typeof rowAlign)[number]>;\n};\n\nfunction parseAlignValue(value: string) {\n  return {\n    baseline: 'baseline',\n    start: 'top',\n    center: 'middle',\n    end: 'bottom',\n  }[value];\n}\n\nconst justifyValues = ['start', 'center', 'end'] as const;\n\nconst tableCellPropDefs = {\n  justify: {\n    type: 'enum',\n    className: 'rt-r-ta',\n    values: justifyValues,\n    parseValue: parseJustifyValue,\n    responsive: true,\n  },\n  ...widthPropDefs,\n  ...paddingPropDefs,\n} satisfies {\n  justify: PropDef<(typeof justifyValues)[number]>;\n};\n\nfunction parseJustifyValue(value: string) {\n  return {\n    start: 'left',\n    center: 'center',\n    end: 'right',\n  }[value];\n}\n\nexport { tableRootPropDefs, tableRowPropDefs, tableCellPropDefs };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/table.tsx",
    "content": "import * as React from 'react';\nimport classNames from 'classnames';\n\nimport { tableRootPropDefs, tableRowPropDefs, tableCellPropDefs } from './table.props.js';\nimport { extractProps } from '../helpers/extract-props.js';\nimport { getResponsiveClassNames } from '../helpers/get-responsive-styles.js';\nimport { marginPropDefs } from '../props/margin.props.js';\nimport { ScrollArea } from './scroll-area.js';\n\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\nimport type { MarginProps } from '../props/margin.props.js';\nimport type { GetPropDefTypes } from '../props/prop-def.js';\n\ntype TableRootElement = React.ElementRef<'div'>;\ntype TableRootOwnProps = GetPropDefTypes<typeof tableRootPropDefs>;\ninterface TableRootProps\n  extends ComponentPropsWithout<'div', RemovedProps>, MarginProps, TableRootOwnProps {}\nconst TableRoot = React.forwardRef<TableRootElement, TableRootProps>((props, forwardedRef) => {\n  const { layout: layoutPropDef, ...rootPropDefs } = tableRootPropDefs;\n  const { className, children, layout, ...rootProps } = extractProps(\n    props,\n    rootPropDefs,\n    marginPropDefs,\n  );\n  const tableLayoutClassNames = getResponsiveClassNames({\n    value: layout,\n    className: tableRootPropDefs.layout.className,\n    propValues: tableRootPropDefs.layout.values,\n  });\n  return (\n    <div ref={forwardedRef} className={classNames('rt-TableRoot', className)} {...rootProps}>\n      <ScrollArea>\n        <table className={classNames('rt-TableRootTable', tableLayoutClassNames)}>{children}</table>\n      </ScrollArea>\n    </div>\n  );\n});\nTableRoot.displayName = 'Table.Root';\n\ntype TableHeaderElement = React.ElementRef<'thead'>;\ninterface TableHeaderProps extends ComponentPropsWithout<'thead', RemovedProps> {}\nconst TableHeader = React.forwardRef<TableHeaderElement, TableHeaderProps>(\n  ({ className, ...props }, forwardedRef) => (\n    <thead {...props} ref={forwardedRef} className={classNames('rt-TableHeader', className)} />\n  ),\n);\nTableHeader.displayName = 'Table.Header';\n\ntype TableBodyElement = React.ElementRef<'tbody'>;\ninterface TableBodyProps extends ComponentPropsWithout<'tbody', RemovedProps> {}\nconst TableBody = React.forwardRef<TableBodyElement, TableBodyProps>(\n  ({ className, ...props }, forwardedRef) => (\n    <tbody {...props} ref={forwardedRef} className={classNames('rt-TableBody', className)} />\n  ),\n);\nTableBody.displayName = 'Table.Body';\n\ntype TableRowElement = React.ElementRef<'tr'>;\ntype TableRowOwnProps = GetPropDefTypes<typeof tableRowPropDefs>;\ninterface TableRowProps extends ComponentPropsWithout<'tr', RemovedProps>, TableRowOwnProps {}\nconst TableRow = React.forwardRef<TableRowElement, TableRowProps>((props, forwardedRef) => {\n  const { className, ...rowProps } = extractProps(props, tableRowPropDefs);\n  return <tr {...rowProps} ref={forwardedRef} className={classNames('rt-TableRow', className)} />;\n});\nTableRow.displayName = 'Table.Row';\n\ntype TableCellElement = React.ElementRef<'td'>;\ntype TableCellOwnProps = GetPropDefTypes<typeof tableCellPropDefs>;\ninterface TableCellProps\n  extends ComponentPropsWithout<'td', RemovedProps | 'width'>, TableCellOwnProps {}\nconst TableCell = React.forwardRef<TableCellElement, TableCellProps>((props, forwardedRef) => {\n  const { className, ...cellProps } = extractProps(props, tableCellPropDefs);\n  return <td className={classNames('rt-TableCell', className)} ref={forwardedRef} {...cellProps} />;\n});\nTableCell.displayName = 'Table.Cell';\n\ntype TableColumnHeaderCellElement = React.ElementRef<'th'>;\ninterface TableColumnHeaderCellProps\n  extends ComponentPropsWithout<'th', RemovedProps>, TableCellOwnProps {}\nconst TableColumnHeaderCell = React.forwardRef<\n  TableColumnHeaderCellElement,\n  TableColumnHeaderCellProps\n>((props, forwardedRef) => {\n  const { className, ...cellProps } = extractProps(props, tableCellPropDefs);\n  return (\n    <th\n      className={classNames('rt-TableCell', 'rt-TableColumnHeaderCell', className)}\n      scope=\"col\"\n      ref={forwardedRef}\n      {...cellProps}\n    />\n  );\n});\nTableColumnHeaderCell.displayName = 'Table.ColumnHeaderCell';\n\ntype TableRowHeaderCellElement = React.ElementRef<'th'>;\ninterface TableRowHeaderCellProps\n  extends ComponentPropsWithout<'th', RemovedProps>, TableCellOwnProps {}\nconst TableRowHeaderCell = React.forwardRef<TableRowHeaderCellElement, TableRowHeaderCellProps>(\n  (props, forwardedRef) => {\n    const { className, ...cellProps } = extractProps(props, tableCellPropDefs);\n    return (\n      <th\n        className={classNames('rt-TableCell', 'rt-TableRowHeaderCell', className)}\n        scope=\"row\"\n        ref={forwardedRef}\n        {...cellProps}\n      />\n    );\n  },\n);\nTableRowHeaderCell.displayName = 'Table.RowHeaderCell';\n\nexport {\n  TableRoot as Root,\n  TableHeader as Header,\n  TableBody as Body,\n  TableRow as Row,\n  TableCell as Cell,\n  TableColumnHeaderCell as ColumnHeaderCell,\n  TableRowHeaderCell as RowHeaderCell,\n};\n\nexport type {\n  TableRootProps as RootProps,\n  TableHeaderProps as HeaderProps,\n  TableBodyProps as BodyProps,\n  TableRowProps as RowProps,\n  TableCellProps as CellProps,\n  TableColumnHeaderCellProps as ColumnHeaderCellProps,\n  TableRowHeaderCellProps as RowHeaderCellProps,\n};\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/tabs.css",
    "content": "@import './_internal/base-tab-list.css';\n\n.rt-TabsContent {\n  position: relative;\n  outline: 0;\n}\n\n.rt-TabsContent:where(:focus-visible) {\n  outline: 2px solid var(--focus-8);\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/tabs.props.tsx",
    "content": "import { asChildPropDef } from '../props/as-child.prop.js';\n\nconst tabsRootPropDefs = {\n  ...asChildPropDef,\n};\n\nconst tabsContentPropDefs = {\n  ...asChildPropDef,\n};\n\nexport { baseTabListPropDefs as tabsListPropDefs } from './_internal/base-tab-list.props.js';\nexport { tabsRootPropDefs, tabsContentPropDefs };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/tabs.tsx",
    "content": "import * as React from 'react';\nimport classNames from 'classnames';\nimport { Tabs as TabsPrimitive } from 'radix-ui';\n\nimport { tabsListPropDefs } from './tabs.props.js';\nimport { extractProps } from '../helpers/extract-props.js';\nimport { marginPropDefs } from '../props/margin.props.js';\n\nimport type { tabsContentPropDefs, tabsRootPropDefs } from './tabs.props.js';\nimport type { MarginProps } from '../props/margin.props.js';\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\nimport type { GetPropDefTypes } from '../props/prop-def.js';\n\ntype TabsRootElement = React.ElementRef<typeof TabsPrimitive.Root>;\ntype TabsRootOwnProps = GetPropDefTypes<typeof tabsRootPropDefs>;\ninterface TabsRootProps\n  extends\n    ComponentPropsWithout<typeof TabsPrimitive.Root, 'asChild' | 'color' | 'defaultChecked'>,\n    MarginProps,\n    TabsRootOwnProps {}\nconst TabsRoot = React.forwardRef<TabsRootElement, TabsRootProps>((props, forwardedRef) => {\n  const { className, ...rootProps } = extractProps(props, marginPropDefs);\n  return (\n    <TabsPrimitive.Root\n      {...rootProps}\n      ref={forwardedRef}\n      className={classNames('rt-TabsRoot', className)}\n    />\n  );\n});\nTabsRoot.displayName = 'Tabs.Root';\n\ntype TabsListElement = React.ElementRef<typeof TabsPrimitive.List>;\ntype TabsListOwnProps = GetPropDefTypes<typeof tabsListPropDefs>;\ninterface TabsListProps\n  extends\n    ComponentPropsWithout<typeof TabsPrimitive.List, RemovedProps>,\n    MarginProps,\n    TabsListOwnProps {}\nconst TabsList = React.forwardRef<TabsListElement, TabsListProps>((props, forwardedRef) => {\n  const { className, color, ...listProps } = extractProps(props, tabsListPropDefs, marginPropDefs);\n  return (\n    <TabsPrimitive.List\n      data-accent-color={color}\n      {...listProps}\n      asChild={false}\n      ref={forwardedRef}\n      className={classNames('rt-BaseTabList', 'rt-TabsList', className)}\n    />\n  );\n});\nTabsList.displayName = 'Tabs.List';\n\ntype TabsTriggerElement = React.ElementRef<typeof TabsPrimitive.Trigger>;\ninterface TabsTriggerProps extends ComponentPropsWithout<\n  typeof TabsPrimitive.Trigger,\n  RemovedProps\n> {}\nconst TabsTrigger = React.forwardRef<TabsTriggerElement, TabsTriggerProps>(\n  (props, forwardedRef) => {\n    const { className, children, ...triggerProps } = props;\n    return (\n      <TabsPrimitive.Trigger\n        {...triggerProps}\n        asChild={false}\n        ref={forwardedRef}\n        className={classNames('rt-reset', 'rt-BaseTabListTrigger', 'rt-TabsTrigger', className)}\n      >\n        <span className=\"rt-BaseTabListTriggerInner rt-TabsTriggerInner\">{children}</span>\n        <span className=\"rt-BaseTabListTriggerInnerHidden rt-TabsTriggerInnerHidden\">\n          {children}\n        </span>\n      </TabsPrimitive.Trigger>\n    );\n  },\n);\nTabsTrigger.displayName = 'Tabs.Trigger';\n\ntype TabsContentElement = React.ElementRef<typeof TabsPrimitive.Content>;\ntype TabsContentOwnProps = GetPropDefTypes<typeof tabsContentPropDefs>;\ninterface TabsContentProps\n  extends\n    ComponentPropsWithout<typeof TabsPrimitive.Content, RemovedProps>,\n    MarginProps,\n    TabsContentOwnProps {}\nconst TabsContent = React.forwardRef<TabsContentElement, TabsContentProps>(\n  (props, forwardedRef) => {\n    const { className, ...contentProps } = extractProps(props, marginPropDefs);\n    return (\n      <TabsPrimitive.Content\n        {...contentProps}\n        ref={forwardedRef}\n        className={classNames('rt-TabsContent', className)}\n      />\n    );\n  },\n);\nTabsContent.displayName = 'Tabs.Content';\n\nexport { TabsRoot as Root, TabsList as List, TabsTrigger as Trigger, TabsContent as Content };\nexport type {\n  TabsRootProps as RootProps,\n  TabsListProps as ListProps,\n  TabsTriggerProps as TriggerProps,\n  TabsContentProps as ContentProps,\n};\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/text-area.css",
    "content": ".rt-TextAreaRoot {\n  display: flex;\n  flex-direction: column;\n  box-sizing: border-box;\n\n  font-family: var(--default-font-family);\n  font-weight: var(--font-weight-regular);\n  font-style: normal;\n  text-align: start;\n\n  /* Allows the `resize` property to work on the div */\n  overflow: hidden;\n\n  &:where(:focus-within) {\n    outline: 2px solid var(--focus-8);\n    outline-offset: -1px;\n  }\n}\n\n.rt-TextAreaInput {\n  border-radius: inherit;\n  resize: none;\n\n  display: block;\n  width: 100%;\n  flex-grow: 1;\n\n  /* scrollbar */\n  & {\n    /* Arrow mouse cursor over the scrollbar */\n    cursor: auto;\n  }\n  &::-webkit-scrollbar {\n    width: var(--space-3);\n    height: var(--space-3);\n  }\n  &::-webkit-scrollbar-track,\n  &::-webkit-scrollbar-thumb {\n    background-clip: content-box;\n    border: var(--space-1) solid transparent;\n    border-radius: var(--space-3);\n  }\n  &::-webkit-scrollbar-track {\n    background-color: var(--gray-a3);\n  }\n  &::-webkit-scrollbar-thumb {\n    background-color: var(--gray-a8);\n  }\n  @media (hover: hover) {\n    :where(&:not(:disabled))::-webkit-scrollbar-thumb:hover {\n      background-color: var(--gray-a9);\n    }\n  }\n  &:where(:autofill, [data-com-onepassword-filled]) {\n    /* Reliably removes native autofill colors */\n    background-clip: text;\n    -webkit-text-fill-color: var(--gray-12);\n  }\n}\n\n/***************************************************************************************************\n *                                                                                                 *\n * SIZES                                                                                           *\n *                                                                                                 *\n ***************************************************************************************************/\n\n.rt-TextAreaRoot {\n  box-sizing: border-box;\n  padding: var(--text-area-border-width);\n}\n.rt-TextAreaInput {\n  padding: var(--text-area-padding-y) var(--text-area-padding-x);\n}\n\n@breakpoints {\n  .rt-TextAreaRoot {\n    &:where(.rt-r-size-1) {\n      min-height: var(--space-8);\n      border-radius: var(--radius-2);\n\n      & :where(.rt-TextAreaInput) {\n        /* Clip text to border */\n        --text-area-padding-y: calc(var(--space-1) - var(--text-area-border-width));\n        --text-area-padding-x: calc(var(--space-1) * 1.5 - var(--text-area-border-width));\n        font-size: var(--font-size-1);\n        line-height: var(--line-height-1);\n        letter-spacing: var(--letter-spacing-1);\n      }\n    }\n    &:where(.rt-r-size-2) {\n      min-height: var(--space-9);\n      border-radius: var(--radius-2);\n\n      & :where(.rt-TextAreaInput) {\n        /* Clip text to border */\n        --text-area-padding-y: calc(var(--space-1) * 1.5 - var(--text-area-border-width));\n        --text-area-padding-x: calc(var(--space-2) - var(--text-area-border-width));\n        font-size: var(--font-size-2);\n        line-height: var(--line-height-2);\n        letter-spacing: var(--letter-spacing-2);\n      }\n    }\n    &:where(.rt-r-size-3) {\n      min-height: 80px;\n      border-radius: var(--radius-3);\n\n      & :where(.rt-TextAreaInput) {\n        /* Clip text to border */\n        --text-area-padding-y: calc(var(--space-2) - var(--text-area-border-width));\n        --text-area-padding-x: calc(var(--space-3) - var(--text-area-border-width));\n        font-size: var(--font-size-3);\n        line-height: var(--line-height-3);\n        letter-spacing: var(--letter-spacing-3);\n      }\n    }\n  }\n}\n\n/***************************************************************************************************\n *                                                                                                 *\n * VARIANTS                                                                                        *\n *                                                                                                 *\n ***************************************************************************************************/\n\n/* surface */\n.rt-TextAreaRoot:where(.rt-variant-surface) {\n  --text-area-border-width: 1px;\n\n  /* Blend inner shadow with page background */\n  background-clip: content-box;\n  background-color: var(--color-surface);\n  box-shadow: inset 0 0 0 var(--text-area-border-width) var(--gray-a7);\n  color: var(--gray-12);\n\n  & :where(.rt-TextAreaInput) {\n    &::placeholder {\n      color: var(--gray-a10);\n    }\n  }\n\n  /* prettier-ignore */\n  &:where(:has(.rt-TextAreaInput:where(:autofill, [data-com-onepassword-filled]):not(:disabled, :read-only))) {\n    /* Blend with focus color */\n    background-image: linear-gradient(var(--focus-a2), var(--focus-a2));\n    box-shadow: inset 0 0 0 1px var(--focus-a5), inset 0 0 0 1px var(--gray-a5);\n  }\n\n  &:where(:has(.rt-TextAreaInput:where(:disabled, :read-only))) {\n    /* Blend with grey */\n    background-image: linear-gradient(var(--gray-a2), var(--gray-a2));\n    box-shadow: inset 0 0 0 var(--text-area-border-width) var(--gray-a6);\n  }\n}\n\n/* classic */\n.rt-TextAreaRoot:where(.rt-variant-classic) {\n  --text-area-border-width: 1px;\n\n  /* Blend inner shadow with page background */\n  background-clip: content-box;\n  background-color: var(--color-surface);\n  box-shadow: var(--shadow-1);\n  color: var(--gray-12);\n\n  & :where(.rt-TextAreaInput) {\n    &::placeholder {\n      color: var(--gray-a10);\n    }\n  }\n\n  /* prettier-ignore */\n  &:where(:has(.rt-TextAreaInput:where(:autofill, [data-com-onepassword-filled]):not(:disabled, :read-only))) {\n    /* Blend with focus color */\n    background-image: linear-gradient(var(--focus-a2), var(--focus-a2));\n    box-shadow: inset 0 0 0 1px var(--focus-a5), inset 0 0 0 1px var(--gray-a5);\n  }\n\n  &:where(:has(.rt-TextAreaInput:where(:disabled, :read-only))) {\n    /* Blend with grey */\n    background-image: linear-gradient(var(--gray-a2), var(--gray-a2));\n  }\n}\n\n/* soft */\n.rt-TextAreaRoot:where(.rt-variant-soft) {\n  --text-area-border-width: 0px;\n\n  background-color: var(--accent-a3);\n  color: var(--accent-12);\n\n  & :where(.rt-TextAreaInput) {\n    &::selection {\n      /* Use gray selection when component color is gray */\n      background-color: var(--accent-a5);\n    }\n    &::placeholder {\n      color: var(--accent-12);\n      opacity: 0.65;\n    }\n  }\n\n  &:where(:focus-within) {\n    /* Use gray outline when component color is gray */\n    outline-color: var(--accent-8);\n  }\n\n  /* prettier-ignore */\n  &:where(:has(.rt-TextAreaInput:where(:autofill, [data-com-onepassword-filled]):not(:disabled, :read-only))) {\n    /* Use gray autofill color when component color is gray */\n    box-shadow: inset 0 0 0 1px var(--accent-a5), inset 0 0 0 1px var(--gray-a4);\n  }\n\n  &:where(:has(.rt-TextAreaInput:where(:disabled, :read-only))) {\n    background-color: var(--gray-a3);\n  }\n}\n\n/* all disabled and read-only text-areas */\n.rt-TextAreaInput {\n  &:where(:disabled, :read-only) {\n    cursor: text;\n    color: var(--gray-a11);\n    /* Safari */\n    -webkit-text-fill-color: var(--gray-a11);\n\n    &::placeholder {\n      opacity: 0.5;\n    }\n    &:where(:placeholder-shown) {\n      cursor: var(--cursor-disabled);\n    }\n    &::selection {\n      background-color: var(--gray-a5);\n    }\n    .rt-TextAreaRoot:where(:focus-within:has(&)) {\n      outline-color: var(--gray-8);\n    }\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/text-area.props.tsx",
    "content": "import { colorPropDef } from '../props/color.prop.js';\nimport { radiusPropDef } from '../props/radius.prop.js';\n\nimport type { PropDef } from '../props/prop-def.js';\n\nconst sizes = ['1', '2', '3'] as const;\nconst variants = ['classic', 'surface', 'soft'] as const;\nconst resizeValues = ['none', 'vertical', 'horizontal', 'both'] as const;\n\n// prettier-ignore\nconst textAreaPropDefs = {\n  size: { type: 'enum', className: 'rt-r-size', values: sizes, default: '2', responsive: true },\n  variant: { type: 'enum', className: 'rt-variant', values: variants, default: 'surface' },\n  resize: { type: 'enum', className: 'rt-r-resize', values: resizeValues,  responsive: true },\n  ...colorPropDef,\n  ...radiusPropDef,\n} satisfies {\n  size: PropDef<(typeof sizes)[number]>;\n  variant: PropDef<(typeof variants)[number]>;\n  resize: PropDef<(typeof resizeValues)[number]>;\n    };\n\nexport { textAreaPropDefs };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/text-area.tsx",
    "content": "import * as React from 'react';\nimport classNames from 'classnames';\n\nimport { textAreaPropDefs } from './text-area.props.js';\nimport { extractProps } from '../helpers/extract-props.js';\nimport { marginPropDefs } from '../props/margin.props.js';\n\nimport type { MarginProps } from '../props/margin.props.js';\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\nimport type { GetPropDefTypes } from '../props/prop-def.js';\n\ntype TextAreaElement = React.ElementRef<'textarea'>;\ntype TextAreaOwnProps = GetPropDefTypes<typeof textAreaPropDefs> & {\n  defaultValue?: string;\n  value?: string;\n};\ninterface TextAreaProps\n  extends\n    ComponentPropsWithout<'textarea', RemovedProps | 'size' | 'value'>,\n    MarginProps,\n    TextAreaOwnProps {}\nconst TextArea = React.forwardRef<TextAreaElement, TextAreaProps>((props, forwardedRef) => {\n  const { className, color, radius, style, ...textAreaProps } = extractProps(\n    props,\n    textAreaPropDefs,\n    marginPropDefs,\n  );\n  return (\n    <div\n      data-accent-color={color}\n      data-radius={radius}\n      className={classNames('rt-TextAreaRoot', className)}\n      style={style}\n    >\n      <textarea className=\"rt-reset rt-TextAreaInput\" ref={forwardedRef} {...textAreaProps} />\n    </div>\n  );\n});\nTextArea.displayName = 'TextArea';\n\nexport { TextArea };\nexport type { TextAreaProps };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/text-field.css",
    "content": ".rt-TextFieldRoot {\n  display: flex;\n  align-items: stretch;\n\n  font-family: var(--default-font-family);\n  font-weight: var(--font-weight-regular);\n  font-style: normal;\n  text-align: start;\n\n  @supports selector(:has(*)) {\n    &:where(:has(.rt-TextFieldInput:focus)) {\n      outline: 2px solid var(--text-field-focus-color);\n      outline-offset: -1px;\n    }\n  }\n  @supports not selector(:has(*)) {\n    &:where(:focus-within) {\n      outline: 2px solid var(--text-field-focus-color);\n      outline-offset: -1px;\n    }\n  }\n\n  &::selection {\n    background-color: var(--text-field-selection-color);\n  }\n}\n\n.rt-TextFieldInput {\n  /*\n   * Flex layout edge case: when the parent container of TextFieldRoot\n   * is smaller than the intrinsic width of TextFieldInput with all the slots,\n   * this actually causes the input to shrink the available width.\n   */\n  width: 100%;\n\n  /* Fix date inputs alignment in Chrome and Safari */\n  display: flex;\n  align-items: center;\n\n  /* Inherit alignment from root in case it's overriden */\n  text-align: inherit;\n\n  /*\n   * Hide type=\"number\" input stepper because it's small, ugly, hard to use, and if\n   * needed, a nicer one can be easily implemented with own buttons in the Slot part.\n   */\n  &:where([type='number']) {\n    -moz-appearance: textfield;\n  }\n  &::-webkit-inner-spin-button {\n    appearance: none;\n  }\n\n  /* Remove the native cancel button */\n  &::-webkit-search-cancel-button {\n    appearance: none;\n  }\n\n  &::selection {\n    background-color: var(--text-field-selection-color);\n  }\n\n  /*\n   * Style the date inputs:\n   * https://codepen.io/andresdamelio/pen/KKbvdYb\n   */\n\n  /* Chrome’s calendar and time icons */\n  &::-webkit-calendar-picker-indicator {\n    box-sizing: content-box;\n    width: var(--text-field-native-icon-size);\n    height: var(--text-field-native-icon-size);\n    padding: var(--space-1);\n    margin-left: 0;\n    margin-right: calc(var(--space-1) * -1);\n    border-radius: calc(var(--text-field-border-radius) - 2px);\n  }\n  /* Chrome’s calendar icon */\n  &:where(:not([type='time']))::-webkit-calendar-picker-indicator {\n    margin-left: var(--space-1);\n  }\n  &::-webkit-calendar-picker-indicator:where(:hover) {\n    background-color: var(--gray-a3);\n  }\n  &::-webkit-calendar-picker-indicator:where(:focus-visible) {\n    outline: 2px solid var(--text-field-focus-color);\n  }\n\n  /* Remove focus ring from date fields and use the selection color */\n  &::-webkit-datetime-edit-ampm-field,\n  &::-webkit-datetime-edit-day-field,\n  &::-webkit-datetime-edit-hour-field,\n  &::-webkit-datetime-edit-millisecond-field,\n  &::-webkit-datetime-edit-minute-field,\n  &::-webkit-datetime-edit-month-field,\n  &::-webkit-datetime-edit-second-field,\n  &::-webkit-datetime-edit-week-field,\n  &::-webkit-datetime-edit-year-field {\n    &:where(:focus) {\n      background-color: var(--text-field-selection-color);\n      color: inherit;\n      outline: none;\n    }\n  }\n\n  @supports selector(:has(*)) {\n    &:where(:autofill, [data-com-onepassword-filled]) {\n      /* Reliably removes native autofill colors */\n      background-clip: text;\n      -webkit-text-fill-color: var(--gray-12);\n    }\n  }\n}\n\n.rt-TextFieldSlot {\n  box-sizing: border-box;\n  flex-shrink: 0;\n  display: flex;\n  align-items: center;\n  cursor: text;\n\n  /* A slot that is not a right-side slot goes on the left */\n  &:where(:not([data-side='right'])) {\n    order: -1;\n    margin-left: calc(var(--text-field-border-width) * -1);\n    margin-right: 0;\n  }\n\n  &:where([data-side='right']),\n  /*\n   * A slot followed by a left-side slot that is not a left-side slot itself goes on the right.\n   * In simple terms, this makes it so that two slots without an explicit side work automatically.\n   */\n  :where(&:not([data-side='right'])) ~ &:where(:not([data-side='left'])) {\n    order: 0;\n    margin-left: 0;\n    margin-right: calc(var(--text-field-border-width) * -1);\n  }\n}\n\n/***************************************************************************************************\n *                                                                                                 *\n * SIZES                                                                                           *\n *                                                                                                 *\n ***************************************************************************************************/\n\n.rt-TextFieldRoot {\n  box-sizing: border-box;\n  height: var(--text-field-height);\n  padding: var(--text-field-border-width);\n  border-radius: var(--text-field-border-radius);\n}\n.rt-TextFieldInput {\n  /* Clip text to the border radius of the Root */\n  border-radius: calc(var(--text-field-border-radius) - var(--text-field-border-width));\n\n  /* Equivalent to padding-left, but doesn't cut off long values when cursor is at the end. */\n  text-indent: var(--text-field-padding);\n\n  &:where([type='date'], [type='datetime-local'], [type='time'], [type='week'], [type='month']) {\n    /* Safari is buggy with text-indent for these input types */\n    text-indent: 0;\n    padding-left: var(--text-field-padding);\n    padding-right: var(--text-field-padding);\n  }\n\n  /* Remove border-radius and text-indent/padding on the left if there’s a left-side slot */\n  &:where(:has(~ .rt-TextFieldSlot:not([data-side='right']))) {\n    text-indent: 0;\n    padding-left: 0;\n    border-top-left-radius: 0;\n    border-bottom-left-radius: 0;\n  }\n\n  /* Remove border-radius and padding on the right if there’s a right-side slot */\n  /* prettier-ignore */\n  &:where(:has(\n    ~ .rt-TextFieldSlot[data-side='right'],\n    ~ .rt-TextFieldSlot:not([data-side='right']) ~ .rt-TextFieldSlot:not([data-side='left'])\n  )) {\n    padding-right: 0;\n    border-top-right-radius: 0;\n    border-bottom-right-radius: 0;\n  }\n}\n\n@breakpoints {\n  .rt-TextFieldRoot {\n    &:where(.rt-r-size-1) {\n      --text-field-height: var(--space-5);\n      --text-field-padding: calc(var(--space-1) * 1.5 - var(--text-field-border-width));\n      --text-field-border-radius: max(var(--radius-2), var(--radius-full));\n      --text-field-native-icon-size: var(--space-3);\n      font-size: var(--font-size-1);\n      letter-spacing: var(--letter-spacing-1);\n\n      & :where(.rt-TextFieldSlot) {\n        gap: var(--space-2);\n        padding-left: var(--space-1);\n        padding-right: var(--space-1);\n      }\n\n      & :where(.rt-TextFieldInput) {\n        /* Reset size 2 padding bottom */\n        padding-bottom: 0px;\n\n        /* Safari credentials autofill icon */\n        &::-webkit-textfield-decoration-container {\n          padding-right: 0px;\n          margin-right: -2px;\n        }\n      }\n    }\n\n    &:where(.rt-r-size-2) {\n      --text-field-height: var(--space-6);\n      --text-field-padding: calc(var(--space-2) - var(--text-field-border-width));\n      --text-field-border-radius: max(var(--radius-2), var(--radius-full));\n      --text-field-native-icon-size: var(--space-4);\n      font-size: var(--font-size-2);\n      letter-spacing: var(--letter-spacing-2);\n\n      & :where(.rt-TextFieldInput) {\n        /* Avoid 1px baseline jitter when layout around the text field is subpixel-sized (e.g. vh units). */\n        /* Works because as of Nov 2023, Chrome computes input text bounding box height as 16.5px on @2x screens. */\n        padding-bottom: 0.5px;\n\n        /* Safari credentials autofill icon */\n        &::-webkit-textfield-decoration-container {\n          padding-right: 2px;\n          margin-right: 0px;\n        }\n      }\n\n      & :where(.rt-TextFieldSlot) {\n        gap: var(--space-2);\n        padding-left: var(--space-2);\n        padding-right: var(--space-2);\n      }\n    }\n\n    &:where(.rt-r-size-3) {\n      --text-field-height: var(--space-7);\n      --text-field-padding: calc(var(--space-3) - var(--text-field-border-width));\n      --text-field-border-radius: max(var(--radius-3), var(--radius-full));\n      --text-field-native-icon-size: var(--space-4);\n      font-size: var(--font-size-3);\n      letter-spacing: var(--letter-spacing-3);\n\n      & :where(.rt-TextFieldInput) {\n        /* Reset size 2 padding bottom */\n        padding-bottom: 0px;\n\n        /* Safari credentials autofill icon */\n        &::-webkit-textfield-decoration-container {\n          padding-right: 5px;\n          margin-right: 0px;\n        }\n      }\n\n      & :where(.rt-TextFieldSlot) {\n        gap: var(--space-3);\n        padding-left: var(--space-3);\n        padding-right: var(--space-3);\n      }\n    }\n  }\n}\n\n/***************************************************************************************************\n\t*                                                                                                 *\n\t* VARIANTS                                                                                        *\n *                                                                                                 *\n ***************************************************************************************************/\n\n/* surface */\n\n.rt-TextFieldRoot:where(.rt-variant-surface) {\n  --text-field-selection-color: var(--focus-a5);\n  --text-field-focus-color: var(--focus-8);\n  --text-field-border-width: 1px;\n\n  /* Blend inner shadow with page background */\n  background-clip: content-box;\n  background-color: var(--color-surface);\n  box-shadow: inset 0 0 0 var(--text-field-border-width) var(--gray-a7);\n  color: var(--gray-12);\n\n  & :where(.rt-TextFieldInput) {\n    &::placeholder {\n      color: var(--gray-a10);\n    }\n  }\n\n  & :where(.rt-TextFieldSlot) {\n    color: var(--gray-a11);\n\n    &:where([data-accent-color]) {\n      color: var(--accent-a11);\n    }\n  }\n\n  /* prettier-ignore */\n  &:where(:has(.rt-TextFieldInput:where(:autofill, [data-com-onepassword-filled]):not(:disabled, :read-only))) {\n    /* Blend with focus color */\n    background-image: linear-gradient(var(--focus-a2), var(--focus-a2));\n    box-shadow: inset 0 0 0 1px var(--focus-a5), inset 0 0 0 1px var(--gray-a5);\n  }\n\n  &:where(:has(.rt-TextFieldInput:where(:disabled, :read-only))) {\n    /* Blend with grey */\n    background-image: linear-gradient(var(--gray-a2), var(--gray-a2));\n    box-shadow: inset 0 0 0 var(--text-field-border-width) var(--gray-a6);\n  }\n}\n\n/* classic */\n\n.rt-TextFieldRoot:where(.rt-variant-classic) {\n  --text-field-selection-color: var(--focus-a5);\n  --text-field-focus-color: var(--focus-8);\n  --text-field-border-width: 1px;\n\n  /* Blend inner shadow with page background */\n  background-clip: content-box;\n  background-color: var(--color-surface);\n  box-shadow: var(--shadow-1);\n  color: var(--gray-12);\n\n  & :where(.rt-TextFieldInput) {\n    &::placeholder {\n      color: var(--gray-a10);\n    }\n  }\n\n  & :where(.rt-TextFieldSlot) {\n    color: var(--gray-a11);\n\n    &:where([data-accent-color]) {\n      color: var(--accent-a11);\n    }\n  }\n\n  /* prettier-ignore */\n  &:where(:has(.rt-TextFieldInput:where(:autofill, [data-com-onepassword-filled]):not(:disabled, :read-only))) {\n    /* Blend with focus color */\n    background-image: linear-gradient(var(--focus-a2), var(--focus-a2));\n    box-shadow: inset 0 0 0 1px var(--focus-a5), inset 0 0 0 1px var(--gray-a5);\n  }\n\n  &:where(:has(.rt-TextFieldInput:where(:disabled, :read-only))) {\n    /* Blend with grey */\n    background-image: linear-gradient(var(--gray-a2), var(--gray-a2));\n  }\n}\n\n/* soft */\n\n.rt-TextFieldRoot:where(.rt-variant-soft) {\n  --text-field-selection-color: var(--accent-a5);\n  --text-field-focus-color: var(--accent-8);\n  --text-field-border-width: 0px;\n\n  background-color: var(--accent-a3);\n  color: var(--accent-12);\n\n  & :where(.rt-TextFieldInput) {\n    &::placeholder {\n      color: var(--accent-12);\n      opacity: 0.6;\n    }\n  }\n\n  & :where(.rt-TextFieldSlot) {\n    color: var(--accent-12);\n\n    &:where([data-accent-color]) {\n      color: var(--accent-a11);\n    }\n  }\n\n  /* prettier-ignore */\n  &:where(:has(.rt-TextFieldInput:where(:autofill, [data-com-onepassword-filled]):not(:disabled, :read-only))) {\n    /* Use gray autofill color when component color is gray */\n    box-shadow: inset 0 0 0 1px var(--accent-a5), inset 0 0 0 1px var(--gray-a4);\n  }\n\n  &:where(:has(.rt-TextFieldInput:where(:disabled, :read-only))) {\n    background-color: var(--gray-a3);\n  }\n}\n\n/* all disabled and read-only text fields */\n\n.rt-TextFieldInput {\n  &:where(:disabled, :read-only) {\n    cursor: text;\n    color: var(--gray-a11);\n    /* Safari */\n    -webkit-text-fill-color: var(--gray-a11);\n\n    &::placeholder {\n      opacity: 0.5;\n    }\n    &:where(:placeholder-shown) {\n      cursor: var(--cursor-disabled);\n\n      & ~ :where(.rt-TextFieldSlot) {\n        cursor: var(--cursor-disabled);\n      }\n    }\n\n    .rt-TextFieldRoot:where(:has(&)) {\n      --text-field-selection-color: var(--gray-a5);\n      --text-field-focus-color: var(--gray-8);\n    }\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/text-field.props.tsx",
    "content": "import { colorPropDef } from '../props/color.prop.js';\nimport { paddingPropDefs } from '../props/padding.props.js';\nimport { radiusPropDef } from '../props/radius.prop.js';\nimport { flexPropDefs } from './flex.props.js';\n\nimport type { PropDef } from '../props/prop-def.js';\n\nconst sizes = ['1', '2', '3'] as const;\nconst variants = ['classic', 'surface', 'soft'] as const;\n\nconst textFieldRootPropDefs = {\n  size: { type: 'enum', className: 'rt-r-size', values: sizes, default: '2', responsive: true },\n  variant: { type: 'enum', className: 'rt-variant', values: variants, default: 'surface' },\n  ...colorPropDef,\n  ...radiusPropDef,\n} satisfies {\n  size: PropDef<(typeof sizes)[number]>;\n  variant: PropDef<(typeof variants)[number]>;\n};\n\nconst sides = ['left', 'right'] as const;\n\nconst textFieldSlotPropDefs = {\n  side: { type: 'enum', values: sides },\n  ...colorPropDef,\n  gap: flexPropDefs.gap,\n  px: paddingPropDefs.px,\n  pl: paddingPropDefs.pl,\n  pr: paddingPropDefs.pr,\n} satisfies {\n  side: PropDef<(typeof sides)[number]>;\n  gap: typeof flexPropDefs.gap;\n  px: typeof paddingPropDefs.px;\n  pl: typeof paddingPropDefs.pl;\n  pr: typeof paddingPropDefs.pr;\n};\n\nexport { textFieldRootPropDefs, textFieldSlotPropDefs };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/text-field.tsx",
    "content": "'use client';\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { composeRefs } from 'radix-ui/internal';\n\nimport { textFieldRootPropDefs, textFieldSlotPropDefs } from './text-field.props.js';\nimport { extractProps } from '../helpers/extract-props.js';\nimport { marginPropDefs } from '../props/margin.props.js';\n\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\nimport type { NotInputTextualAttributes } from '../helpers/input-attributes.js';\nimport type { MarginProps } from '../props/margin.props.js';\nimport type { GetPropDefTypes } from '../props/prop-def.js';\n\ntype TextFieldRootElement = React.ElementRef<'input'>;\ntype TextFieldRootOwnProps = GetPropDefTypes<typeof textFieldRootPropDefs> & {\n  defaultValue?: string | number;\n  value?: string | number;\n  type?:\n    | 'date'\n    | 'datetime-local'\n    | 'email'\n    | 'hidden'\n    | 'month'\n    | 'number'\n    | 'password'\n    | 'search'\n    | 'tel'\n    | 'text'\n    | 'time'\n    | 'url'\n    | 'week';\n};\ntype TextFieldInputProps = ComponentPropsWithout<\n  'input',\n  NotInputTextualAttributes | 'color' | 'defaultValue' | 'size' | 'type' | 'value'\n>;\ninterface TextFieldRootProps extends TextFieldInputProps, MarginProps, TextFieldRootOwnProps {}\nconst TextFieldRoot = React.forwardRef<TextFieldRootElement, TextFieldRootProps>(\n  (props, forwardedRef) => {\n    const inputRef = React.useRef<HTMLInputElement>(null);\n    const { children, className, color, radius, style, ...inputProps } = extractProps(\n      props,\n      textFieldRootPropDefs,\n      marginPropDefs,\n    );\n    return (\n      <div\n        data-accent-color={color}\n        data-radius={radius}\n        style={style}\n        className={classNames('rt-TextFieldRoot', className)}\n        onPointerDown={(event) => {\n          const target = event.target as HTMLElement;\n          if (target.closest('input, button, a')) return;\n\n          const input = inputRef.current;\n          if (!input) return;\n\n          // Same selector as in the CSS to find the right slot\n          const isRightSlot = target.closest(`\n            .rt-TextFieldSlot[data-side='right'],\n            .rt-TextFieldSlot:not([data-side='right']) ~ .rt-TextFieldSlot:not([data-side='left'])\n          `);\n\n          const cursorPosition = isRightSlot ? input.value.length : 0;\n\n          requestAnimationFrame(() => {\n            // Only some input types support this, browsers will throw an error if not supported\n            // See: https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/setSelectionRange#:~:text=Note%20that%20according,not%20support%20selection%22.\n            try {\n              input.setSelectionRange(cursorPosition, cursorPosition);\n            } catch {}\n            input.focus();\n          });\n        }}\n      >\n        <input\n          spellCheck=\"false\"\n          {...inputProps}\n          ref={composeRefs(inputRef, forwardedRef)}\n          className=\"rt-reset rt-TextFieldInput\"\n        />\n        {children}\n      </div>\n    );\n  },\n);\nTextFieldRoot.displayName = 'TextField.Root';\n\ntype TextFieldSlotElement = React.ElementRef<'div'>;\ntype TextFieldSlotOwnProps = GetPropDefTypes<typeof textFieldSlotPropDefs>;\ninterface TextFieldSlotProps\n  extends ComponentPropsWithout<'div', RemovedProps>, TextFieldSlotOwnProps {}\nconst TextFieldSlot = React.forwardRef<TextFieldSlotElement, TextFieldSlotProps>(\n  (props, forwardedRef) => {\n    const { className, color, side, ...slotProps } = extractProps(props, textFieldSlotPropDefs);\n    return (\n      <div\n        data-accent-color={color}\n        data-side={side}\n        {...slotProps}\n        ref={forwardedRef}\n        className={classNames('rt-TextFieldSlot', className)}\n      />\n    );\n  },\n);\nTextFieldSlot.displayName = 'TextField.Slot';\n\nexport { TextFieldRoot as Root, TextFieldSlot as Slot };\nexport type { TextFieldRootProps as RootProps, TextFieldSlotProps as SlotProps };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/text.css",
    "content": ".rt-Text {\n  line-height: var(--line-height, var(--default-line-height));\n  letter-spacing: var(--letter-spacing, inherit);\n\n  :where(&) {\n    margin: 0;\n  }\n\n  &:where([data-accent-color]) {\n    color: var(--accent-a11);\n  }\n\n  &:where([data-accent-color].rt-high-contrast),\n  :where([data-accent-color]:not(.radix-themes)) &:where(.rt-high-contrast) {\n    color: var(--accent-12);\n  }\n\n  /* stylelint-disable selector-max-type */\n  &:where(label) {\n    /* Better -webkit-tap-highlight-color */\n    @media (pointer: coarse) {\n      -webkit-tap-highlight-color: transparent;\n      &:where(:active) {\n        outline: 0.75em solid var(--gray-a4);\n        outline-offset: -0.6em;\n      }\n    }\n  }\n}\n\n/***************************************************************************************************\n *                                                                                                 *\n * SIZES                                                                                           *\n *                                                                                                 *\n ***************************************************************************************************/\n\n@breakpoints {\n  .rt-Text {\n    &:where(.rt-r-size-1) {\n      font-size: var(--font-size-1);\n      --line-height: var(--line-height-1);\n      --letter-spacing: var(--letter-spacing-1);\n    }\n    &:where(.rt-r-size-2) {\n      font-size: var(--font-size-2);\n      --line-height: var(--line-height-2);\n      --letter-spacing: var(--letter-spacing-2);\n    }\n    &:where(.rt-r-size-3) {\n      font-size: var(--font-size-3);\n      --line-height: var(--line-height-3);\n      --letter-spacing: var(--letter-spacing-3);\n    }\n    &:where(.rt-r-size-4) {\n      font-size: var(--font-size-4);\n      --line-height: var(--line-height-4);\n      --letter-spacing: var(--letter-spacing-4);\n    }\n    &:where(.rt-r-size-5) {\n      font-size: var(--font-size-5);\n      --line-height: var(--line-height-5);\n      --letter-spacing: var(--letter-spacing-5);\n    }\n    &:where(.rt-r-size-6) {\n      font-size: var(--font-size-6);\n      --line-height: var(--line-height-6);\n      --letter-spacing: var(--letter-spacing-6);\n    }\n    &:where(.rt-r-size-7) {\n      font-size: var(--font-size-7);\n      --line-height: var(--line-height-7);\n      --letter-spacing: var(--letter-spacing-7);\n    }\n    &:where(.rt-r-size-8) {\n      font-size: var(--font-size-8);\n      --line-height: var(--line-height-8);\n      --letter-spacing: var(--letter-spacing-8);\n    }\n    &:where(.rt-r-size-9) {\n      font-size: var(--font-size-9);\n      --line-height: var(--line-height-9);\n      --letter-spacing: var(--letter-spacing-9);\n    }\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/text.props.tsx",
    "content": "import { asChildPropDef } from '../props/as-child.prop.js';\nimport { colorPropDef } from '../props/color.prop.js';\nimport { highContrastPropDef } from '../props/high-contrast.prop.js';\nimport { leadingTrimPropDef } from '../props/leading-trim.prop.js';\nimport { textAlignPropDef } from '../props/text-align.prop.js';\nimport { textWrapPropDef } from '../props/text-wrap.prop.js';\nimport { truncatePropDef } from '../props/truncate.prop.js';\nimport { weightPropDef } from '../props/weight.prop.js';\n\nimport type { PropDef } from '../props/prop-def.js';\n\nconst as = ['span', 'div', 'label', 'p'] as const;\nconst sizes = ['1', '2', '3', '4', '5', '6', '7', '8', '9'] as const;\n\nconst textPropDefs = {\n  as: { type: 'enum', values: as, default: 'span' },\n  ...asChildPropDef,\n  size: {\n    type: 'enum',\n    className: 'rt-r-size',\n    values: sizes,\n    responsive: true,\n  },\n  ...weightPropDef,\n  ...textAlignPropDef,\n  ...leadingTrimPropDef,\n  ...truncatePropDef,\n  ...textWrapPropDef,\n  ...colorPropDef,\n  ...highContrastPropDef,\n} satisfies {\n  as: PropDef<(typeof as)[number]>;\n  size: PropDef<(typeof sizes)[number]>;\n};\n\nexport { textPropDefs };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/text.tsx",
    "content": "import * as React from 'react';\nimport classNames from 'classnames';\nimport { Slot } from 'radix-ui';\n\nimport { extractProps } from '../helpers/extract-props.js';\nimport { marginPropDefs } from '../props/margin.props.js';\nimport { textPropDefs } from './text.props.js';\n\nimport type { MarginProps } from '../props/margin.props.js';\nimport type { GetPropDefTypes } from '../props/prop-def.js';\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\n\ntype TextElement = React.ElementRef<'span'>;\ntype TextOwnProps = GetPropDefTypes<typeof textPropDefs>;\ninterface CommonTextProps extends MarginProps, TextOwnProps {}\ntype TextSpanProps = { as?: 'span' } & ComponentPropsWithout<'span', RemovedProps>;\ntype TextDivProps = { as: 'div' } & ComponentPropsWithout<'div', RemovedProps>;\ntype TextLabelProps = { as: 'label' } & ComponentPropsWithout<'label', RemovedProps>;\ntype TextPProps = { as: 'p' } & ComponentPropsWithout<'p', RemovedProps>;\ntype TextProps = CommonTextProps & (TextSpanProps | TextDivProps | TextLabelProps | TextPProps);\n\nconst Text = React.forwardRef<TextElement, TextProps>((props, forwardedRef) => {\n  const {\n    children,\n    className,\n    asChild,\n    as: Tag = 'span',\n    color,\n    ...textProps\n  } = extractProps(props, textPropDefs, marginPropDefs);\n  return (\n    <Slot.Root\n      data-accent-color={color}\n      {...textProps}\n      ref={forwardedRef}\n      className={classNames('rt-Text', className)}\n    >\n      {asChild ? children : <Tag>{children}</Tag>}\n    </Slot.Root>\n  );\n});\nText.displayName = 'Text';\n\nexport { Text };\nexport type { TextProps };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/theme-panel.css",
    "content": ".rt-ThemePanelShortcut {\n  &:where(:focus-visible) {\n    outline-style: solid;\n    outline-width: 2px;\n    outline-offset: 2px;\n    outline-color: var(--accent-9);\n  }\n}\n\n.rt-ThemePanelSwatch,\n.rt-ThemePanelRadioCard {\n  position: relative;\n}\n\n.rt-ThemePanelSwatchInput,\n.rt-ThemePanelRadioCardInput {\n  appearance: none;\n  margin: 0;\n  outline: none;\n  outline-width: 2px;\n  position: absolute;\n  inset: 0;\n  border-radius: inherit;\n}\n\n.rt-ThemePanelSwatch {\n  width: var(--space-4);\n  height: var(--space-4);\n  border-radius: 100%;\n\n  @media (--sm) {\n    width: var(--space-5);\n    height: var(--space-5);\n  }\n}\n\n.rt-ThemePanelSwatchInput {\n  outline-offset: 2px;\n  &:where(:checked) {\n    outline-style: solid;\n    outline-color: var(--gray-12);\n  }\n  &:where(:focus-visible) {\n    outline-style: solid;\n    outline-color: var(--accent-9);\n  }\n}\n\n.rt-ThemePanelRadioCard {\n  border-radius: var(--radius-1);\n  box-shadow: 0 0 0 1px var(--gray-7);\n}\n\n.rt-ThemePanelRadioCardInput {\n  outline-offset: -1px;\n\n  &:where(:checked) {\n    outline-style: solid;\n    outline-color: var(--gray-12);\n  }\n  &:where(:focus-visible) {\n    background-color: var(--accent-a3);\n    outline-style: solid;\n    outline-color: var(--accent-9);\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/theme-panel.tsx",
    "content": "'use client';\n\nimport * as React from 'react';\nimport { useCallbackRef } from 'radix-ui/internal';\n\nimport { AccessibleIcon } from './accessible-icon.js';\nimport { Box } from './box.js';\nimport { Button } from './button.js';\nimport { Flex } from './flex.js';\nimport { Grid } from './grid.js';\nimport { Heading } from './heading.js';\nimport { IconButton } from './icon-button.js';\nimport { Kbd } from './kbd.js';\nimport * as Popover from './popover.js';\nimport { ScrollArea } from './scroll-area.js';\nimport { Text } from './text.js';\nimport { Tooltip } from './tooltip.js';\nimport { Theme, useThemeContext, type ThemeContextValue } from './theme.js';\nimport { inert } from '../helpers/inert.js';\nimport { getMatchingGrayColor } from '../helpers/get-matching-gray-color.js';\nimport { themePropDefs } from './theme.props.js';\n\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\nimport type { GetPropDefTypes } from '../props/prop-def.js';\nimport { flushSync } from 'react-dom';\n\ninterface ThemePanelProps extends Omit<ThemePanelImplProps, keyof ThemePanelImplPrivateProps> {\n  onAppearanceChange?: (value: 'light' | 'dark') => void;\n  defaultOpen?: boolean;\n}\n\nconst keyboardInputElement = `\n      [contenteditable],\n      [role=\"combobox\"],\n      [role=\"listbox\"],\n      [role=\"menu\"],\n      input:not([type=\"radio\"], [type=\"checkbox\"]),\n      select,\n      textarea\n    `;\n\nconst ThemePanel = React.forwardRef<ThemePanelImplElement, ThemePanelProps>(\n  ({ defaultOpen = true, ...props }, forwardedRef) => {\n    const [open, setOpen] = React.useState(defaultOpen);\n    const triggerRef = React.useRef<HTMLButtonElement>(null);\n    const previouslyFocusedElementRef = React.useRef<HTMLElement | null>(null);\n\n    // quickly show/hide using \"T\" keypress\n    React.useEffect(() => {\n      function handleKeydown(event: KeyboardEvent) {\n        const isModifierActive = event.altKey || event.ctrlKey || event.shiftKey || event.metaKey;\n        const isKeyboardInputActive = document.activeElement?.closest(keyboardInputElement);\n        const isKeyT = event.key?.toUpperCase() === 'T' && !isModifierActive;\n        if (isKeyT && !isKeyboardInputActive) {\n          let isOpen = false;\n          flushSync(() => {\n            setOpen((open) => {\n              isOpen = !open;\n              return isOpen;\n            });\n          });\n          if (isOpen) {\n            previouslyFocusedElementRef.current = document.activeElement as HTMLElement | null;\n            triggerRef.current?.focus();\n          } else {\n            previouslyFocusedElementRef.current?.focus();\n          }\n        }\n      }\n      document.addEventListener('keydown', handleKeydown);\n      return () => document.removeEventListener('keydown', handleKeydown);\n    }, []);\n\n    return (\n      <ThemePanelImpl\n        {...props}\n        ref={forwardedRef}\n        triggerRef={triggerRef}\n        open={open}\n        shortcut={\n          <Tooltip content=\"Press T to show/hide the Theme Panel\" side=\"bottom\" sideOffset={6}>\n            <Kbd asChild size=\"3\" tabIndex={0} className=\"rt-ThemePanelShortcut\">\n              <button\n                type=\"button\"\n                onClick={() => setOpen((open) => !open)}\n                ref={triggerRef}\n                aria-label=\"Toggle the Theme Panel\"\n              >\n                T\n              </button>\n            </Kbd>\n          </Tooltip>\n        }\n      />\n    );\n  },\n);\nThemePanel.displayName = 'ThemePanel';\n\ntype ThemePanelImplElement = React.ElementRef<'div'>;\ninterface ThemePanelImplPrivateProps {\n  open: boolean;\n  shortcut: React.ReactNode;\n  triggerRef: React.RefObject<HTMLButtonElement | null>;\n}\ninterface ThemePanelImplProps\n  extends ComponentPropsWithout<'div', RemovedProps>, ThemePanelImplPrivateProps {\n  onAppearanceChange?: (value: 'light' | 'dark') => void;\n}\nconst ThemePanelImpl = React.forwardRef<ThemePanelImplElement, ThemePanelImplProps>(\n  (props, forwardedRef) => {\n    const { open, onAppearanceChange, shortcut, triggerRef, ...panelProps } = props;\n    const themeContext = useThemeContext();\n    return (\n      <Theme asChild radius=\"medium\" scaling=\"100%\">\n        <Flex\n          direction=\"column\"\n          position=\"fixed\"\n          top=\"0\"\n          right=\"0\"\n          mr={{ initial: '2', sm: '4' }}\n          mt={{ initial: '2', sm: '4' }}\n          width={{ initial: '360px' }}\n          maxHeight={{\n            initial: 'calc(100svh - var(--space-2) - var(--space-2))',\n            sm: 'calc(100svh - var(--space-4) - var(--space-4))',\n          }}\n          maxWidth={{\n            initial: 'calc(100svw - var(--space-2) - var(--space-2))',\n            sm: 'calc(100svw - var(--space-4) - var(--space-4))',\n          }}\n          inert={open ? undefined : inert}\n          {...panelProps}\n          ref={forwardedRef}\n          style={{\n            zIndex: 999999999,\n            overflow: 'hidden',\n            borderRadius: 'var(--radius-4)',\n            backgroundColor: 'var(--color-panel-solid)',\n            transformOrigin: 'top center',\n            transitionProperty: 'transform, box-shadow',\n            transitionDuration: '200ms',\n            transitionTimingFunction: open ? 'ease-out' : 'ease-in',\n            transform: open ? 'none' : 'translateX(105%)',\n            boxShadow: open ? 'var(--shadow-5)' : 'var(--shadow-2)',\n            ...props.style,\n          }}\n        >\n          <ScrollArea>\n            <Box flexGrow=\"1\" p={{ initial: '4', xs: '5' }} position=\"relative\">\n              {!!shortcut && (\n                <Box position=\"absolute\" top=\"0\" right=\"0\" m=\"2\">\n                  {shortcut}\n                </Box>\n              )}\n              <ThemePanelContent onAppearanceChange={onAppearanceChange} context={themeContext} />\n            </Box>\n          </ScrollArea>\n        </Flex>\n      </Theme>\n    );\n  },\n);\nThemePanelImpl.displayName = 'ThemePanelImpl';\n\ntype ThemePanelContentElement = React.ElementRef<typeof Flex>;\ninterface ThemePanelContentProps extends ComponentPropsWithout<\n  typeof Flex,\n  RemovedProps | 'direction'\n> {\n  onAppearanceChange?: (value: 'light' | 'dark') => void;\n  context?: ThemeContextValue;\n}\nconst ThemePanelContent = React.forwardRef<ThemePanelContentElement, ThemePanelContentProps>(\n  (props, forwardedRef) => {\n    const {\n      onAppearanceChange: onAppearanceChangeProp,\n      context: contextProp,\n      ...contentProps\n    } = props;\n\n    const themeContext = useThemeContext();\n\n    const {\n      appearance,\n      onAppearanceChange,\n      accentColor,\n      onAccentColorChange,\n      grayColor,\n      onGrayColorChange,\n      panelBackground,\n      onPanelBackgroundChange,\n      radius,\n      onRadiusChange,\n      scaling,\n      onScalingChange,\n    } = contextProp ?? themeContext;\n\n    const [resolvedAppearance, setResolvedAppearance] = React.useState<'light' | 'dark' | null>(\n      appearance === 'inherit' ? null : appearance,\n    );\n    const hasOnAppearanceChangeProp = onAppearanceChangeProp !== undefined;\n    const handleAppearanceChangeProp = useCallbackRef(onAppearanceChangeProp);\n    const handleAppearanceChange = React.useCallback(\n      (value: 'light' | 'dark') => {\n        const cleanup = disableAnimation();\n\n        if (appearance !== 'inherit') {\n          onAppearanceChange(value);\n          return;\n        }\n\n        if (hasOnAppearanceChangeProp) {\n          handleAppearanceChangeProp(value);\n        } else {\n          setResolvedAppearance(value);\n          updateRootAppearanceClass(value);\n        }\n\n        cleanup();\n      },\n      [appearance, onAppearanceChange, hasOnAppearanceChangeProp, handleAppearanceChangeProp],\n    );\n\n    const autoMatchedGray = getMatchingGrayColor(accentColor);\n    const resolvedGrayColor = grayColor === 'auto' ? autoMatchedGray : grayColor;\n\n    const [copyState, setCopyState] = React.useState<'idle' | 'copying' | 'copied'>('idle');\n    async function handleCopyThemeConfig() {\n      const theme = {\n        appearance: appearance === themePropDefs.appearance.default ? undefined : appearance,\n        accentColor: accentColor === themePropDefs.accentColor.default ? undefined : accentColor,\n        grayColor: grayColor === themePropDefs.grayColor.default ? undefined : grayColor,\n        panelBackground:\n          panelBackground === themePropDefs.panelBackground.default ? undefined : panelBackground,\n        radius: radius === themePropDefs.radius.default ? undefined : radius,\n        scaling: scaling === themePropDefs.scaling.default ? undefined : scaling,\n      } satisfies GetPropDefTypes<typeof themePropDefs>;\n\n      const props = Object.keys(theme)\n        .filter((key) => theme[key as keyof typeof theme] !== undefined)\n        .map((key) => `${key}=\"${theme[key as keyof typeof theme]}\"`)\n        .join(' ');\n\n      const textToCopy = props ? `<Theme ${props}>` : '<Theme>';\n\n      setCopyState('copying');\n      await navigator.clipboard.writeText(textToCopy);\n      setCopyState('copied');\n      setTimeout(() => setCopyState('idle'), 2000);\n    }\n\n    React.useEffect(() => {\n      const root = document.documentElement;\n      const body = document.body;\n\n      function update() {\n        const hasDarkClass =\n          root.classList.contains('dark') ||\n          root.classList.contains('dark-theme') ||\n          body.classList.contains('dark') ||\n          body.classList.contains('dark-theme');\n\n        if (appearance === 'inherit') {\n          setResolvedAppearance(hasDarkClass ? 'dark' : 'light');\n        } else {\n          setResolvedAppearance(appearance);\n        }\n      }\n\n      const classNameObserver = new MutationObserver(function (mutations) {\n        mutations.forEach(function (mutation) {\n          if (mutation.attributeName === 'class') {\n            update();\n          }\n        });\n      });\n\n      update();\n\n      // Observe <html> and <body> for `class` changes only when the appearance is inherited from them\n      if (appearance === 'inherit') {\n        classNameObserver.observe(root, { attributes: true });\n        classNameObserver.observe(body, { attributes: true });\n      }\n\n      return () => classNameObserver.disconnect();\n    }, [appearance]);\n\n    return (\n      <Flex direction=\"column\" gap=\"5\" {...contentProps} ref={forwardedRef}>\n        <Heading size={{ initial: '3', sm: '5' }} trim=\"both\" as=\"h2\">\n          Theme\n        </Heading>\n        <Flex direction=\"column\" gap=\"5\">\n          {/* Accent color */}\n          <ThemePanelSection>\n            <ThemePanelHeading id=\"accent-color-title\">Accent color</ThemePanelHeading>\n            <Flex wrap=\"wrap\" gap=\"2\" role=\"group\" aria-labelledby=\"accent-color-title\">\n              {themePropDefs.accentColor.values.map((color) => (\n                <Box asChild key={color}>\n                  <label\n                    className=\"rt-ThemePanelSwatch\"\n                    style={{ backgroundColor: `var(--${color}-9)` }}\n                  >\n                    <Tooltip\n                      content={`${upperFirst(color)}${\n                        accentColor === 'gray' && resolvedGrayColor !== 'gray'\n                          ? ` (${upperFirst(resolvedGrayColor)})`\n                          : ''\n                      }`}\n                    >\n                      <input\n                        className=\"rt-ThemePanelSwatchInput\"\n                        type=\"radio\"\n                        name=\"accentColor\"\n                        value={color}\n                        checked={accentColor === color}\n                        onChange={(event) =>\n                          onAccentColorChange(event.target.value as typeof accentColor)\n                        }\n                      />\n                    </Tooltip>\n                  </label>\n                </Box>\n              ))}\n            </Flex>\n          </ThemePanelSection>\n\n          {/* Gray color */}\n          <ThemePanelSection>\n            <ThemePanelHeading id=\"gray-color-title\">Gray color</ThemePanelHeading>\n            <Flex wrap=\"wrap\" gap=\"2\" role=\"group\" aria-labelledby=\"gray-color-title\">\n              {themePropDefs.grayColor.values.map((gray) => (\n                <Flex key={gray} asChild align=\"center\" justify=\"center\">\n                  <label\n                    className=\"rt-ThemePanelSwatch\"\n                    style={{\n                      backgroundColor:\n                        gray === 'auto'\n                          ? `var(--${autoMatchedGray}-9)`\n                          : gray === 'gray'\n                            ? 'var(--gray-9)'\n                            : `var(--${gray}-9)`,\n                      // we override --gray so pure gray doesn't exist anymore\n                      // recover something as close as possible by desaturating\n                      filter: gray === 'gray' ? 'saturate(0)' : undefined,\n                    }}\n                  >\n                    <Tooltip\n                      content={`${upperFirst(gray)}${\n                        gray === 'auto' ? ` (${upperFirst(autoMatchedGray)})` : ''\n                      }`}\n                    >\n                      <input\n                        className=\"rt-ThemePanelSwatchInput\"\n                        type=\"radio\"\n                        name=\"grayColor\"\n                        value={gray}\n                        checked={grayColor === gray}\n                        onChange={(event) =>\n                          onGrayColorChange(event.target.value as typeof grayColor)\n                        }\n                      />\n                    </Tooltip>\n                  </label>\n                </Flex>\n              ))}\n            </Flex>\n          </ThemePanelSection>\n\n          {/* Appearance */}\n          <ThemePanelSection>\n            <ThemePanelHeading id=\"appearance-title\">Appearance</ThemePanelHeading>\n            <Grid columns=\"2\" gap=\"2\" role=\"group\" aria-labelledby=\"appearance-title\">\n              {(['light', 'dark'] as const).map((value) => (\n                <label key={value} className=\"rt-ThemePanelRadioCard\">\n                  <input\n                    className=\"rt-ThemePanelRadioCardInput\"\n                    type=\"radio\"\n                    name=\"appearance\"\n                    value={value}\n                    checked={resolvedAppearance === value}\n                    onChange={(event) =>\n                      handleAppearanceChange(event.target.value as 'light' | 'dark')\n                    }\n                  />\n                  <Flex align=\"center\" justify=\"center\" height=\"32px\" gap=\"2\">\n                    {value === 'light' ? (\n                      <svg\n                        width=\"15\"\n                        height=\"15\"\n                        viewBox=\"0 0 15 15\"\n                        fill=\"none\"\n                        xmlns=\"http://www.w3.org/2000/svg\"\n                        style={{ margin: '0 -1px' }}\n                      >\n                        <path\n                          d=\"M7.5 0C7.77614 0 8 0.223858 8 0.5V2.5C8 2.77614 7.77614 3 7.5 3C7.22386 3 7 2.77614 7 2.5V0.5C7 0.223858 7.22386 0 7.5 0ZM2.1967 2.1967C2.39196 2.00144 2.70854 2.00144 2.90381 2.1967L4.31802 3.61091C4.51328 3.80617 4.51328 4.12276 4.31802 4.31802C4.12276 4.51328 3.80617 4.51328 3.61091 4.31802L2.1967 2.90381C2.00144 2.70854 2.00144 2.39196 2.1967 2.1967ZM0.5 7C0.223858 7 0 7.22386 0 7.5C0 7.77614 0.223858 8 0.5 8H2.5C2.77614 8 3 7.77614 3 7.5C3 7.22386 2.77614 7 2.5 7H0.5ZM2.1967 12.8033C2.00144 12.608 2.00144 12.2915 2.1967 12.0962L3.61091 10.682C3.80617 10.4867 4.12276 10.4867 4.31802 10.682C4.51328 10.8772 4.51328 11.1938 4.31802 11.3891L2.90381 12.8033C2.70854 12.9986 2.39196 12.9986 2.1967 12.8033ZM12.5 7C12.2239 7 12 7.22386 12 7.5C12 7.77614 12.2239 8 12.5 8H14.5C14.7761 8 15 7.77614 15 7.5C15 7.22386 14.7761 7 14.5 7H12.5ZM10.682 4.31802C10.4867 4.12276 10.4867 3.80617 10.682 3.61091L12.0962 2.1967C12.2915 2.00144 12.608 2.00144 12.8033 2.1967C12.9986 2.39196 12.9986 2.70854 12.8033 2.90381L11.3891 4.31802C11.1938 4.51328 10.8772 4.51328 10.682 4.31802ZM8 12.5C8 12.2239 7.77614 12 7.5 12C7.22386 12 7 12.2239 7 12.5V14.5C7 14.7761 7.22386 15 7.5 15C7.77614 15 8 14.7761 8 14.5V12.5ZM10.682 10.682C10.8772 10.4867 11.1938 10.4867 11.3891 10.682L12.8033 12.0962C12.9986 12.2915 12.9986 12.608 12.8033 12.8033C12.608 12.9986 12.2915 12.9986 12.0962 12.8033L10.682 11.3891C10.4867 11.1938 10.4867 10.8772 10.682 10.682ZM5.5 7.5C5.5 6.39543 6.39543 5.5 7.5 5.5C8.60457 5.5 9.5 6.39543 9.5 7.5C9.5 8.60457 8.60457 9.5 7.5 9.5C6.39543 9.5 5.5 8.60457 5.5 7.5ZM7.5 4.5C5.84315 4.5 4.5 5.84315 4.5 7.5C4.5 9.15685 5.84315 10.5 7.5 10.5C9.15685 10.5 10.5 9.15685 10.5 7.5C10.5 5.84315 9.15685 4.5 7.5 4.5Z\"\n                          fill=\"currentColor\"\n                          fillRule=\"evenodd\"\n                          clipRule=\"evenodd\"\n                        ></path>\n                      </svg>\n                    ) : (\n                      <svg\n                        width=\"15\"\n                        height=\"15\"\n                        viewBox=\"0 0 15 15\"\n                        fill=\"none\"\n                        xmlns=\"http://www.w3.org/2000/svg\"\n                        style={{ margin: '0 -1px' }}\n                      >\n                        <path\n                          d=\"M2.89998 0.499976C2.89998 0.279062 2.72089 0.0999756 2.49998 0.0999756C2.27906 0.0999756 2.09998 0.279062 2.09998 0.499976V1.09998H1.49998C1.27906 1.09998 1.09998 1.27906 1.09998 1.49998C1.09998 1.72089 1.27906 1.89998 1.49998 1.89998H2.09998V2.49998C2.09998 2.72089 2.27906 2.89998 2.49998 2.89998C2.72089 2.89998 2.89998 2.72089 2.89998 2.49998V1.89998H3.49998C3.72089 1.89998 3.89998 1.72089 3.89998 1.49998C3.89998 1.27906 3.72089 1.09998 3.49998 1.09998H2.89998V0.499976ZM5.89998 3.49998C5.89998 3.27906 5.72089 3.09998 5.49998 3.09998C5.27906 3.09998 5.09998 3.27906 5.09998 3.49998V4.09998H4.49998C4.27906 4.09998 4.09998 4.27906 4.09998 4.49998C4.09998 4.72089 4.27906 4.89998 4.49998 4.89998H5.09998V5.49998C5.09998 5.72089 5.27906 5.89998 5.49998 5.89998C5.72089 5.89998 5.89998 5.72089 5.89998 5.49998V4.89998H6.49998C6.72089 4.89998 6.89998 4.72089 6.89998 4.49998C6.89998 4.27906 6.72089 4.09998 6.49998 4.09998H5.89998V3.49998ZM1.89998 6.49998C1.89998 6.27906 1.72089 6.09998 1.49998 6.09998C1.27906 6.09998 1.09998 6.27906 1.09998 6.49998V7.09998H0.499976C0.279062 7.09998 0.0999756 7.27906 0.0999756 7.49998C0.0999756 7.72089 0.279062 7.89998 0.499976 7.89998H1.09998V8.49998C1.09998 8.72089 1.27906 8.89997 1.49998 8.89997C1.72089 8.89997 1.89998 8.72089 1.89998 8.49998V7.89998H2.49998C2.72089 7.89998 2.89998 7.72089 2.89998 7.49998C2.89998 7.27906 2.72089 7.09998 2.49998 7.09998H1.89998V6.49998ZM8.54406 0.98184L8.24618 0.941586C8.03275 0.917676 7.90692 1.1655 8.02936 1.34194C8.17013 1.54479 8.29981 1.75592 8.41754 1.97445C8.91878 2.90485 9.20322 3.96932 9.20322 5.10022C9.20322 8.37201 6.82247 11.0878 3.69887 11.6097C3.45736 11.65 3.20988 11.6772 2.96008 11.6906C2.74563 11.702 2.62729 11.9535 2.77721 12.1072C2.84551 12.1773 2.91535 12.2458 2.98667 12.3128L3.05883 12.3795L3.31883 12.6045L3.50684 12.7532L3.62796 12.8433L3.81491 12.9742L3.99079 13.089C4.11175 13.1651 4.23536 13.2375 4.36157 13.3059L4.62496 13.4412L4.88553 13.5607L5.18837 13.6828L5.43169 13.7686C5.56564 13.8128 5.70149 13.8529 5.83857 13.8885C5.94262 13.9155 6.04767 13.9401 6.15405 13.9622C6.27993 13.9883 6.40713 14.0109 6.53544 14.0298L6.85241 14.0685L7.11934 14.0892C7.24637 14.0965 7.37436 14.1002 7.50322 14.1002C11.1483 14.1002 14.1032 11.1453 14.1032 7.50023C14.1032 7.25044 14.0893 7.00389 14.0623 6.76131L14.0255 6.48407C13.991 6.26083 13.9453 6.04129 13.8891 5.82642C13.8213 5.56709 13.7382 5.31398 13.6409 5.06881L13.5279 4.80132L13.4507 4.63542L13.3766 4.48666C13.2178 4.17773 13.0353 3.88295 12.8312 3.60423L12.6782 3.40352L12.4793 3.16432L12.3157 2.98361L12.1961 2.85951L12.0355 2.70246L11.8134 2.50184L11.4925 2.24191L11.2483 2.06498L10.9562 1.87446L10.6346 1.68894L10.3073 1.52378L10.1938 1.47176L9.95488 1.3706L9.67791 1.2669L9.42566 1.1846L9.10075 1.09489L8.83599 1.03486L8.54406 0.98184ZM10.4032 5.30023C10.4032 4.27588 10.2002 3.29829 9.83244 2.40604C11.7623 3.28995 13.1032 5.23862 13.1032 7.50023C13.1032 10.593 10.596 13.1002 7.50322 13.1002C6.63646 13.1002 5.81597 12.9036 5.08355 12.5522C6.5419 12.0941 7.81081 11.2082 8.74322 10.0416C8.87963 10.2284 9.10028 10.3497 9.34928 10.3497C9.76349 10.3497 10.0993 10.0139 10.0993 9.59971C10.0993 9.24256 9.84965 8.94373 9.51535 8.86816C9.57741 8.75165 9.63653 8.63334 9.6926 8.51332C9.88358 8.63163 10.1088 8.69993 10.35 8.69993C11.0403 8.69993 11.6 8.14028 11.6 7.44993C11.6 6.75976 11.0406 6.20024 10.3505 6.19993C10.3853 5.90487 10.4032 5.60464 10.4032 5.30023Z\"\n                          fill=\"currentColor\"\n                          fillRule=\"evenodd\"\n                          clipRule=\"evenodd\"\n                        ></path>\n                      </svg>\n                    )}\n                    <Text size=\"1\" weight=\"medium\">\n                      {upperFirst(value)}\n                    </Text>\n                  </Flex>\n                </label>\n              ))}\n            </Grid>\n          </ThemePanelSection>\n\n          {/* Radius */}\n          <ThemePanelSection>\n            <ThemePanelHeading id=\"radius-title\">Radius</ThemePanelHeading>\n            <Flex gap=\"2\" role=\"group\" aria-labelledby=\"radius-title\" wrap=\"wrap\">\n              {themePropDefs.radius.values.map((value) => (\n                <Flex key={value} direction=\"column\" align=\"center\">\n                  <label className=\"rt-ThemePanelRadioCard\">\n                    <input\n                      className=\"rt-ThemePanelRadioCardInput\"\n                      type=\"radio\"\n                      name=\"radius\"\n                      id={`theme-panel-radius-${value}`}\n                      value={value}\n                      checked={radius === value}\n                      onChange={(event) => onRadiusChange(event.target.value as typeof radius)}\n                    />\n                    <Theme asChild radius={value}>\n                      <Box\n                        m=\"3\"\n                        width={{ initial: '24px', sm: '32px' }}\n                        height={{ initial: '24px', sm: '32px' }}\n                        style={{\n                          borderTopLeftRadius: value === 'full' ? '80%' : 'var(--radius-5)',\n                          backgroundImage:\n                            'linear-gradient(to bottom right, var(--accent-3), var(--accent-4))',\n                          borderTop: '2px solid var(--accent-a8)',\n                          borderLeft: '2px solid var(--accent-a8)',\n                        }}\n                      />\n                    </Theme>\n                  </label>\n                  <Box asChild pt=\"2\">\n                    <Text asChild size=\"1\" color=\"gray\">\n                      <label htmlFor={`theme-panel-radius-${value}`}>{upperFirst(value)}</label>\n                    </Text>\n                  </Box>\n                </Flex>\n              ))}\n            </Flex>\n          </ThemePanelSection>\n\n          {/* Scaling */}\n          <ThemePanelSection>\n            <ThemePanelHeading id=\"scaling-title\">Scaling</ThemePanelHeading>\n            <Grid\n              columns={{\n                initial: 'repeat(3, 1fr)',\n                sm: '5',\n              }}\n              gap=\"2\"\n              role=\"group\"\n              aria-labelledby=\"scaling-title\"\n            >\n              {themePropDefs.scaling.values.map((value) => (\n                <label key={value} className=\"rt-ThemePanelRadioCard\">\n                  <input\n                    className=\"rt-ThemePanelRadioCardInput\"\n                    type=\"radio\"\n                    name=\"scaling\"\n                    value={value}\n                    checked={scaling === value}\n                    onChange={(event) => onScalingChange(event.target.value as typeof scaling)}\n                  />\n\n                  <Flex align=\"center\" justify=\"center\" height=\"32px\">\n                    <Theme asChild scaling={value}>\n                      <Flex align=\"center\" justify=\"center\">\n                        <Text size=\"1\" weight=\"medium\">\n                          {upperFirst(value)}\n                        </Text>\n                      </Flex>\n                    </Theme>\n                  </Flex>\n                </label>\n              ))}\n            </Grid>\n          </ThemePanelSection>\n\n          {/* Panel background */}\n          <ThemePanelSection>\n            <Flex align=\"center\" gap=\"2\">\n              <ThemePanelHeading id=\"panel-background-title\">Panel background</ThemePanelHeading>\n              <Popover.Root>\n                <Popover.Trigger>\n                  <IconButton size=\"1\" variant=\"ghost\" color=\"gray\">\n                    <AccessibleIcon label=\"Learn more about panel background options\">\n                      <svg\n                        width=\"15\"\n                        height=\"15\"\n                        viewBox=\"0 0 15 15\"\n                        fill=\"currentColor\"\n                        xmlns=\"http://www.w3.org/2000/svg\"\n                      >\n                        <path\n                          d=\"M7.49991 0.876892C3.84222 0.876892 0.877075 3.84204 0.877075 7.49972C0.877075 11.1574 3.84222 14.1226 7.49991 14.1226C11.1576 14.1226 14.1227 11.1574 14.1227 7.49972C14.1227 3.84204 11.1576 0.876892 7.49991 0.876892ZM1.82707 7.49972C1.82707 4.36671 4.36689 1.82689 7.49991 1.82689C10.6329 1.82689 13.1727 4.36671 13.1727 7.49972C13.1727 10.6327 10.6329 13.1726 7.49991 13.1726C4.36689 13.1726 1.82707 10.6327 1.82707 7.49972ZM8.24992 4.49999C8.24992 4.9142 7.91413 5.24999 7.49992 5.24999C7.08571 5.24999 6.74992 4.9142 6.74992 4.49999C6.74992 4.08577 7.08571 3.74999 7.49992 3.74999C7.91413 3.74999 8.24992 4.08577 8.24992 4.49999ZM6.00003 5.99999H6.50003H7.50003C7.77618 5.99999 8.00003 6.22384 8.00003 6.49999V9.99999H8.50003H9.00003V11H8.50003H7.50003H6.50003H6.00003V9.99999H6.50003H7.00003V6.99999H6.50003H6.00003V5.99999Z\"\n                          fillRule=\"evenodd\"\n                          clipRule=\"evenodd\"\n                        />\n                      </svg>\n                    </AccessibleIcon>\n                  </IconButton>\n                </Popover.Trigger>\n                <Popover.Content\n                  size=\"1\"\n                  width=\"220px\"\n                  maxWidth=\"90svw\"\n                  minWidth=\"0\"\n                  side=\"top\"\n                  align=\"center\"\n                >\n                  <Text as=\"p\" size=\"1\">\n                    Whether Card and Table panels are translucent, showing some of the background\n                    behind them.\n                  </Text>\n                </Popover.Content>\n              </Popover.Root>\n            </Flex>\n            <Grid\n              columns={{ initial: '1', sm: '2' }}\n              rows={{ initial: '2', sm: '1' }}\n              gap=\"2\"\n              role=\"group\"\n              aria-labelledby=\"panel-background-title\"\n            >\n              {themePropDefs.panelBackground.values.map((value) => (\n                <label key={value} className=\"rt-ThemePanelRadioCard\">\n                  <input\n                    className=\"rt-ThemePanelRadioCardInput\"\n                    type=\"radio\"\n                    name=\"panelBackground\"\n                    value={value}\n                    checked={panelBackground === value}\n                    onChange={(event) =>\n                      onPanelBackgroundChange(event.target.value as typeof panelBackground)\n                    }\n                  />\n                  <Flex align=\"center\" justify=\"center\" height=\"32px\" gap=\"2\">\n                    {value === 'solid' ? (\n                      <svg\n                        width=\"15\"\n                        height=\"15\"\n                        viewBox=\"0 0 15 15\"\n                        fill=\"none\"\n                        xmlns=\"http://www.w3.org/2000/svg\"\n                        style={{ margin: '0 -2px' }}\n                      >\n                        <path\n                          d=\"M0.877075 7.49988C0.877075 3.84219 3.84222 0.877045 7.49991 0.877045C11.1576 0.877045 14.1227 3.84219 14.1227 7.49988C14.1227 11.1575 11.1576 14.1227 7.49991 14.1227C3.84222 14.1227 0.877075 11.1575 0.877075 7.49988ZM7.49991 1.82704C4.36689 1.82704 1.82708 4.36686 1.82708 7.49988C1.82708 10.6329 4.36689 13.1727 7.49991 13.1727C10.6329 13.1727 13.1727 10.6329 13.1727 7.49988C13.1727 4.36686 10.6329 1.82704 7.49991 1.82704Z\"\n                          fill=\"currentColor\"\n                          fillRule=\"evenodd\"\n                          clipRule=\"evenodd\"\n                        ></path>\n                      </svg>\n                    ) : (\n                      <svg\n                        width=\"15\"\n                        height=\"15\"\n                        viewBox=\"0 0 15 15\"\n                        fill=\"none\"\n                        xmlns=\"http://www.w3.org/2000/svg\"\n                        style={{ margin: '0 -2px' }}\n                      >\n                        <path\n                          opacity=\".05\"\n                          d=\"M6.78296 13.376C8.73904 9.95284 8.73904 5.04719 6.78296 1.62405L7.21708 1.37598C9.261 4.95283 9.261 10.0472 7.21708 13.624L6.78296 13.376Z\"\n                          fill=\"currentColor\"\n                          fillRule=\"evenodd\"\n                          clipRule=\"evenodd\"\n                        ></path>\n                        <path\n                          opacity=\".1\"\n                          d=\"M7.28204 13.4775C9.23929 9.99523 9.23929 5.00475 7.28204 1.52248L7.71791 1.2775C9.76067 4.9119 9.76067 10.0881 7.71791 13.7225L7.28204 13.4775Z\"\n                          fill=\"currentColor\"\n                          fillRule=\"evenodd\"\n                          clipRule=\"evenodd\"\n                        ></path>\n                        <path\n                          opacity=\".15\"\n                          d=\"M7.82098 13.5064C9.72502 9.99523 9.72636 5.01411 7.82492 1.50084L8.26465 1.26285C10.2465 4.92466 10.2451 10.085 8.26052 13.7448L7.82098 13.5064Z\"\n                          fill=\"currentColor\"\n                          fillRule=\"evenodd\"\n                          clipRule=\"evenodd\"\n                        ></path>\n                        <path\n                          opacity=\".2\"\n                          d=\"M8.41284 13.429C10.1952 9.92842 10.1957 5.07537 8.41435 1.57402L8.85999 1.34729C10.7139 4.99113 10.7133 10.0128 8.85841 13.6559L8.41284 13.429Z\"\n                          fill=\"currentColor\"\n                          fillRule=\"evenodd\"\n                          clipRule=\"evenodd\"\n                        ></path>\n                        <path\n                          opacity=\".25\"\n                          d=\"M9.02441 13.2956C10.6567 9.8379 10.6586 5.17715 9.03005 1.71656L9.48245 1.50366C11.1745 5.09919 11.1726 9.91629 9.47657 13.5091L9.02441 13.2956Z\"\n                          fill=\"currentColor\"\n                          fillRule=\"evenodd\"\n                          clipRule=\"evenodd\"\n                        ></path>\n                        <path\n                          opacity=\".3\"\n                          d=\"M9.66809 13.0655C11.1097 9.69572 11.1107 5.3121 9.67088 1.94095L10.1307 1.74457C11.6241 5.24121 11.6231 9.76683 10.1278 13.2622L9.66809 13.0655Z\"\n                          fill=\"currentColor\"\n                          fillRule=\"evenodd\"\n                          clipRule=\"evenodd\"\n                        ></path>\n                        <path\n                          opacity=\".35\"\n                          d=\"M10.331 12.7456C11.5551 9.52073 11.5564 5.49103 10.3347 2.26444L10.8024 2.0874C12.0672 5.42815 12.0659 9.58394 10.7985 12.9231L10.331 12.7456Z\"\n                          fill=\"currentColor\"\n                          fillRule=\"evenodd\"\n                          clipRule=\"evenodd\"\n                        ></path>\n                        <path\n                          opacity=\".4\"\n                          d=\"M11.0155 12.2986C11.9938 9.29744 11.9948 5.71296 11.0184 2.71067L11.4939 2.55603C12.503 5.6589 12.502 9.35178 11.4909 12.4535L11.0155 12.2986Z\"\n                          fill=\"currentColor\"\n                          fillRule=\"evenodd\"\n                          clipRule=\"evenodd\"\n                        ></path>\n                        <path\n                          opacity=\".45\"\n                          d=\"M11.7214 11.668C12.4254 9.01303 12.4262 5.99691 11.7237 3.34116L12.2071 3.21329C12.9318 5.95292 12.931 9.05728 12.2047 11.7961L11.7214 11.668Z\"\n                          fill=\"currentColor\"\n                          fillRule=\"evenodd\"\n                          clipRule=\"evenodd\"\n                        ></path>\n                        <path\n                          opacity=\".5\"\n                          d=\"M12.4432 10.752C12.8524 8.63762 12.8523 6.36089 12.4429 4.2466L12.9338 4.15155C13.3553 6.32861 13.3554 8.66985 12.9341 10.847L12.4432 10.752Z\"\n                          fill=\"currentColor\"\n                          fillRule=\"evenodd\"\n                          clipRule=\"evenodd\"\n                        ></path>\n                        <path\n                          d=\"M0.877075 7.49988C0.877075 3.84219 3.84222 0.877045 7.49991 0.877045C11.1576 0.877045 14.1227 3.84219 14.1227 7.49988C14.1227 11.1575 11.1576 14.1227 7.49991 14.1227C3.84222 14.1227 0.877075 11.1575 0.877075 7.49988ZM7.49991 1.82704C4.36689 1.82704 1.82708 4.36686 1.82708 7.49988C1.82708 10.6329 4.36689 13.1727 7.49991 13.1727C10.6329 13.1727 13.1727 10.6329 13.1727 7.49988C13.1727 4.36686 10.6329 1.82704 7.49991 1.82704Z\"\n                          fill=\"currentColor\"\n                          fillRule=\"evenodd\"\n                          clipRule=\"evenodd\"\n                        ></path>\n                      </svg>\n                    )}\n                    <Text size=\"1\" weight=\"medium\">\n                      {upperFirst(value)}\n                    </Text>\n                  </Flex>\n                </label>\n              ))}\n            </Grid>\n          </ThemePanelSection>\n        </Flex>\n        <Button style={{ width: '100%' }} onClick={handleCopyThemeConfig}>\n          {copyState === 'copied' ? 'Copied' : 'Copy Theme'}\n        </Button>\n      </Flex>\n    );\n  },\n);\nThemePanelContent.displayName = 'ThemePanelContent';\n\nfunction ThemePanelSection(\n  props: Omit<React.ComponentPropsWithoutRef<typeof Flex>, 'asChild' | 'direction' | 'gap'>,\n) {\n  return (\n    <Flex direction=\"column\" gap=\"3\" asChild {...props}>\n      <section>{props.children}</section>\n    </Flex>\n  );\n}\n\nfunction ThemePanelHeading(props: React.ComponentPropsWithoutRef<typeof Heading>) {\n  return <Heading as=\"h3\" size={{ initial: '1', sm: '2' }} {...props} />;\n}\n\n// https://github.com/pacocoursey/next-themes/blob/main/packages/next-themes/src/index.tsx#L285\nfunction disableAnimation() {\n  const css = document.createElement('style');\n  css.appendChild(\n    document.createTextNode(\n      `*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}`,\n    ),\n  );\n  document.head.appendChild(css);\n\n  return () => {\n    // Force restyle\n    (() => window.getComputedStyle(document.body))();\n\n    // Wait for next tick before removing\n    setTimeout(() => {\n      document.head.removeChild(css);\n    }, 1);\n  };\n}\n\nfunction upperFirst(string: string) {\n  return string.charAt(0).toUpperCase() + string.slice(1);\n}\n\nfunction updateRootAppearanceClass(appearance: 'light' | 'dark') {\n  const root = document.documentElement;\n  const hasLightTheme = root.classList.contains('light-theme');\n  const hasDarkTheme = root.classList.contains('dark-theme');\n  const hasLight = root.classList.contains('light');\n  const hasDark = root.classList.contains('dark');\n\n  if (hasLightTheme || hasDarkTheme) {\n    root.classList.remove('light-theme', 'dark-theme');\n    root.style.colorScheme = appearance;\n    root.classList.add(`${appearance}-theme`);\n  }\n\n  if (hasLight || hasDark) {\n    root.classList.remove('light', 'dark');\n    root.style.colorScheme = appearance;\n    root.classList.add(appearance);\n  }\n\n  if (!hasLightTheme && !hasDarkTheme && !hasLight && !hasDark) {\n    root.style.colorScheme = appearance;\n    root.classList.add(appearance);\n  }\n}\n\nexport { ThemePanel, ThemePanelContent };\nexport type { ThemePanelProps, ThemePanelContentProps };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/theme.props.tsx",
    "content": "import { asChildPropDef } from '../props/as-child.prop.js';\nimport { accentColors, grayColors } from '../props/color.prop.js';\nimport { radii } from '../props/radius.prop.js';\n\nimport type { GetPropDefTypes, PropDef } from '../props/prop-def.js';\n\nconst appearances = ['inherit', 'light', 'dark'] as const;\nconst panelBackgrounds = ['solid', 'translucent'] as const;\nconst scalings = ['90%', '95%', '100%', '105%', '110%'] as const;\n\nconst themePropDefs = {\n  ...asChildPropDef,\n  /**\n   * Whether to apply background color to the Theme element.\n   *\n   * Defaults to true for the root Theme and for Theme elements that\n   * have an explicit light or dark appearance prop.\n   */\n  hasBackground: { type: 'boolean', default: true },\n  /**\n   * Sets the color scheme of the theme, typcially referred to as light and dark mode.\n   *\n   * @link\n   * https://www.radix-ui.com/themes/docs/theme/dark-mode\n   */\n  appearance: { type: 'enum', values: appearances, default: 'inherit' },\n  /**\n   * Selects one of the accent color options to use in the Theme.\n   *\n   * @link\n   * https://www.radix-ui.com/themes/docs/theme/color\n   */\n  accentColor: { type: 'enum', values: accentColors, default: 'indigo' },\n  /**\n   * Selects one of the gray color options to use in the Theme.\n   *\n   * @link\n   * https://www.radix-ui.com/themes/docs/theme/color\n   */\n  grayColor: { type: 'enum', values: grayColors, default: 'auto' },\n  /**\n   * Controls whether to use a solid or translucent background color on panelled\n   * elements such as Card or Table is solid or translucent.\n   *\n   * @link\n   * https://www.radix-ui.com/themes/docs/theme/visual-style\n   */\n  panelBackground: { type: 'enum', values: panelBackgrounds, default: 'translucent' },\n  /**\n   * Sets the default radius of the components.\n   *\n   * @link\n   * https://www.radix-ui.com/themes/docs/theme/visual-style\n   */\n  radius: { type: 'enum', values: radii, default: 'medium' },\n  /**\n   * Sets a scaling multiplier for values like spacing, font sizes, line heights, etc. are scaled.\n   *\n   * @link\n   * https://www.radix-ui.com/themes/docs/theme/layout\n   */\n  scaling: { type: 'enum', values: scalings, default: '100%' },\n} satisfies {\n  hasBackground: PropDef<boolean>;\n  appearance: PropDef<(typeof appearances)[number]>;\n  accentColor: PropDef<(typeof accentColors)[number]>;\n  grayColor: PropDef<(typeof grayColors)[number]>;\n  panelBackground: PropDef<(typeof panelBackgrounds)[number]>;\n  radius: PropDef<(typeof radii)[number]>;\n  scaling: PropDef<(typeof scalings)[number]>;\n};\n\ntype ThemeOwnProps = GetPropDefTypes<typeof themePropDefs & typeof asChildPropDef>;\n\nexport { themePropDefs, appearances, panelBackgrounds, scalings };\nexport type { ThemeOwnProps };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/theme.tsx",
    "content": "'use client';\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { Direction, Slot, Tooltip as TooltipPrimitive } from 'radix-ui';\n\nimport { getMatchingGrayColor } from '../helpers/get-matching-gray-color.js';\nimport { themePropDefs } from './theme.props.js';\n\nimport type { ThemeOwnProps } from './theme.props.js';\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\n\nconst noop = () => {};\n\ntype ThemeAppearance = (typeof themePropDefs.appearance.values)[number];\ntype ThemeAccentColor = (typeof themePropDefs.accentColor.values)[number];\ntype ThemeGrayColor = (typeof themePropDefs.grayColor.values)[number];\ntype ThemePanelBackground = (typeof themePropDefs.panelBackground.values)[number];\ntype ThemeRadius = (typeof themePropDefs.radius.values)[number];\ntype ThemeScaling = (typeof themePropDefs.scaling.values)[number];\n\ninterface ThemeChangeHandlers {\n  onAppearanceChange: (appearance: ThemeAppearance) => void;\n  onAccentColorChange: (accentColor: ThemeAccentColor) => void;\n  onGrayColorChange: (grayColor: ThemeGrayColor) => void;\n  onPanelBackgroundChange: (panelBackground: ThemePanelBackground) => void;\n  onRadiusChange: (radius: ThemeRadius) => void;\n  onScalingChange: (scaling: ThemeScaling) => void;\n}\n\ninterface ThemeContextValue extends ThemeChangeHandlers {\n  appearance: ThemeAppearance;\n  accentColor: ThemeAccentColor;\n  grayColor: ThemeGrayColor;\n  resolvedGrayColor: ThemeGrayColor;\n  panelBackground: ThemePanelBackground;\n  radius: ThemeRadius;\n  scaling: ThemeScaling;\n}\nconst ThemeContext = React.createContext<ThemeContextValue | undefined>(undefined);\n\nfunction useThemeContext() {\n  const context = React.useContext(ThemeContext);\n  if (context === undefined) {\n    throw new Error('`useThemeContext` must be used within a `Theme`');\n  }\n  return context;\n}\n\ninterface ThemeProps extends ThemeImplPublicProps {}\nconst Theme = React.forwardRef<ThemeImplElement, ThemeProps>((props, forwardedRef) => {\n  const context = React.useContext(ThemeContext);\n  const isRoot = context === undefined;\n  if (isRoot) {\n    return (\n      <TooltipPrimitive.Provider delayDuration={200}>\n        <Direction.Provider dir=\"ltr\">\n          <ThemeRoot {...props} ref={forwardedRef} />\n        </Direction.Provider>\n      </TooltipPrimitive.Provider>\n    );\n  }\n  return <ThemeImpl {...props} ref={forwardedRef} />;\n});\nTheme.displayName = 'Theme';\n\nconst ThemeRoot = React.forwardRef<ThemeImplElement, ThemeImplPublicProps>(\n  (props, forwardedRef) => {\n    const {\n      appearance: appearanceProp = themePropDefs.appearance.default,\n      accentColor: accentColorProp = themePropDefs.accentColor.default,\n      grayColor: grayColorProp = themePropDefs.grayColor.default,\n      panelBackground: panelBackgroundProp = themePropDefs.panelBackground.default,\n      radius: radiusProp = themePropDefs.radius.default,\n      scaling: scalingProp = themePropDefs.scaling.default,\n      hasBackground = themePropDefs.hasBackground.default,\n      ...rootProps\n    } = props;\n    const [appearance, setAppearance] = React.useState(appearanceProp);\n    React.useEffect(() => setAppearance(appearanceProp), [appearanceProp]);\n\n    const [accentColor, setAccentColor] = React.useState(accentColorProp);\n    React.useEffect(() => setAccentColor(accentColorProp), [accentColorProp]);\n\n    const [grayColor, setGrayColor] = React.useState(grayColorProp);\n    React.useEffect(() => setGrayColor(grayColorProp), [grayColorProp]);\n\n    const [panelBackground, setPanelBackground] = React.useState(panelBackgroundProp);\n    React.useEffect(() => setPanelBackground(panelBackgroundProp), [panelBackgroundProp]);\n\n    const [radius, setRadius] = React.useState(radiusProp);\n    React.useEffect(() => setRadius(radiusProp), [radiusProp]);\n\n    const [scaling, setScaling] = React.useState(scalingProp);\n    React.useEffect(() => setScaling(scalingProp), [scalingProp]);\n\n    return (\n      <ThemeImpl\n        {...rootProps}\n        ref={forwardedRef}\n        isRoot\n        hasBackground={hasBackground}\n        //\n        appearance={appearance}\n        accentColor={accentColor}\n        grayColor={grayColor}\n        panelBackground={panelBackground}\n        radius={radius}\n        scaling={scaling}\n        //\n        onAppearanceChange={setAppearance}\n        onAccentColorChange={setAccentColor}\n        onGrayColorChange={setGrayColor}\n        onPanelBackgroundChange={setPanelBackground}\n        onRadiusChange={setRadius}\n        onScalingChange={setScaling}\n      />\n    );\n  },\n);\nThemeRoot.displayName = 'ThemeRoot';\n\ntype ThemeImplElement = React.ElementRef<'div'>;\ninterface ThemeImplProps extends ThemeImplPublicProps, ThemeImplPrivateProps {}\ninterface ThemeImplPublicProps\n  extends ComponentPropsWithout<'div', RemovedProps | 'dir'>, ThemeOwnProps {}\ninterface ThemeImplPrivateProps extends Partial<ThemeChangeHandlers> {\n  isRoot?: boolean;\n}\nconst ThemeImpl = React.forwardRef<ThemeImplElement, ThemeImplProps>((props, forwardedRef) => {\n  const context = React.useContext(ThemeContext);\n  const {\n    asChild,\n    isRoot,\n    hasBackground: hasBackgroundProp,\n    //\n    appearance = context?.appearance ?? themePropDefs.appearance.default,\n    accentColor = context?.accentColor ?? themePropDefs.accentColor.default,\n    grayColor = context?.resolvedGrayColor ?? themePropDefs.grayColor.default,\n    panelBackground = context?.panelBackground ?? themePropDefs.panelBackground.default,\n    radius = context?.radius ?? themePropDefs.radius.default,\n    scaling = context?.scaling ?? themePropDefs.scaling.default,\n    //\n    onAppearanceChange = noop,\n    onAccentColorChange = noop,\n    onGrayColorChange = noop,\n    onPanelBackgroundChange = noop,\n    onRadiusChange = noop,\n    onScalingChange = noop,\n    //\n    ...themeProps\n  } = props;\n  const Comp = asChild ? Slot.Root : 'div';\n  const resolvedGrayColor = grayColor === 'auto' ? getMatchingGrayColor(accentColor) : grayColor;\n  const isExplicitAppearance = props.appearance === 'light' || props.appearance === 'dark';\n  const hasBackground =\n    hasBackgroundProp === undefined ? isRoot || isExplicitAppearance : hasBackgroundProp;\n  return (\n    <ThemeContext.Provider\n      value={React.useMemo(\n        () => ({\n          appearance,\n          accentColor,\n          grayColor,\n          resolvedGrayColor,\n          panelBackground,\n          radius,\n          scaling,\n          //\n          onAppearanceChange,\n          onAccentColorChange,\n          onGrayColorChange,\n          onPanelBackgroundChange,\n          onRadiusChange,\n          onScalingChange,\n        }),\n        [\n          appearance,\n          accentColor,\n          grayColor,\n          resolvedGrayColor,\n          panelBackground,\n          radius,\n          scaling,\n          //\n          onAppearanceChange,\n          onAccentColorChange,\n          onGrayColorChange,\n          onPanelBackgroundChange,\n          onRadiusChange,\n          onScalingChange,\n        ],\n      )}\n    >\n      <Comp\n        data-is-root-theme={isRoot ? 'true' : 'false'}\n        data-accent-color={accentColor}\n        data-gray-color={resolvedGrayColor}\n        // for nested `Theme` background\n        data-has-background={hasBackground ? 'true' : 'false'}\n        data-panel-background={panelBackground}\n        data-radius={radius}\n        data-scaling={scaling}\n        ref={forwardedRef}\n        {...themeProps}\n        className={classNames(\n          'radix-themes',\n          {\n            light: appearance === 'light',\n            dark: appearance === 'dark',\n          },\n          themeProps.className,\n        )}\n      />\n    </ThemeContext.Provider>\n  );\n});\nThemeImpl.displayName = 'ThemeImpl';\n\nexport { Theme, ThemeContext, useThemeContext };\nexport type { ThemeProps, ThemeContextValue };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/tooltip.css",
    "content": ".rt-TooltipContent {\n  box-sizing: border-box;\n  padding: var(--space-1) var(--space-2);\n  background-color: var(--gray-12);\n  border-radius: var(--radius-2);\n\n  transform-origin: var(--radix-tooltip-content-transform-origin);\n\n  animation-duration: 140ms;\n  animation-timing-function: cubic-bezier(0.16, 1, 0.3, 1);\n\n  @media (prefers-reduced-motion: no-preference) {\n    &:where([data-state='delayed-open']) {\n      &:where([data-side='top']) {\n        animation-name: rt-slide-from-top, rt-fade-in;\n      }\n      &:where([data-side='bottom']) {\n        animation-name: rt-slide-from-bottom, rt-fade-in;\n      }\n      &:where([data-side='left']) {\n        animation-name: rt-slide-from-left, rt-fade-in;\n      }\n      &:where([data-side='right']) {\n        animation-name: rt-slide-from-right, rt-fade-in;\n      }\n    }\n  }\n}\n\n.rt-TooltipText {\n  color: var(--gray-1);\n  user-select: none;\n  cursor: default;\n}\n\n.rt-TooltipArrow {\n  fill: var(--gray-12);\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/tooltip.props.tsx",
    "content": "import { widthPropDefs } from '../props/width.props.js';\n\nimport type { PropDef, GetPropDefTypes } from '../props/prop-def.js';\n\nconst tooltipPropDefs = {\n  content: { type: 'ReactNode', required: true },\n  width: widthPropDefs.width,\n  minWidth: widthPropDefs.minWidth,\n  maxWidth: { ...widthPropDefs.maxWidth, default: '360px' },\n} satisfies {\n  width: PropDef<string>;\n  minWidth: PropDef<string>;\n  maxWidth: PropDef<string>;\n  content: PropDef<React.ReactNode>;\n};\n\ntype TooltipOwnProps = GetPropDefTypes<typeof tooltipPropDefs & typeof widthPropDefs>;\n\nexport { tooltipPropDefs };\nexport type { TooltipOwnProps };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/tooltip.tsx",
    "content": "import * as React from 'react';\nimport classNames from 'classnames';\nimport { Tooltip as TooltipPrimitive } from 'radix-ui';\n\nimport { Text } from './text.js';\nimport { Theme } from './theme.js';\nimport { extractProps } from '../helpers/extract-props.js';\nimport { tooltipPropDefs } from './tooltip.props.js';\n\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\nimport type { GetPropDefTypes } from '../props/prop-def.js';\n\ntype TooltipElement = React.ElementRef<typeof TooltipPrimitive.Content>;\ntype TooltipOwnProps = GetPropDefTypes<typeof tooltipPropDefs>;\ninterface TooltipProps\n  extends\n    React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Root>,\n    ComponentPropsWithout<typeof TooltipPrimitive.Content, RemovedProps | 'content'>,\n    TooltipOwnProps {\n  content: React.ReactNode;\n  container?: React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Portal>['container'];\n}\nconst Tooltip = React.forwardRef<TooltipElement, TooltipProps>((props, forwardedRef) => {\n  const {\n    children,\n    className,\n    open,\n    defaultOpen,\n    onOpenChange,\n    delayDuration,\n    disableHoverableContent,\n    content,\n    container,\n    forceMount,\n    ...tooltipContentProps\n  } = extractProps(props, tooltipPropDefs);\n  const rootProps = { open, defaultOpen, onOpenChange, delayDuration, disableHoverableContent };\n  return (\n    <TooltipPrimitive.Root {...rootProps}>\n      <TooltipPrimitive.Trigger asChild>{children}</TooltipPrimitive.Trigger>\n      <TooltipPrimitive.Portal container={container} forceMount={forceMount}>\n        <Theme asChild>\n          <TooltipPrimitive.Content\n            sideOffset={4}\n            collisionPadding={10}\n            {...tooltipContentProps}\n            asChild={false}\n            ref={forwardedRef}\n            className={classNames('rt-TooltipContent', className)}\n          >\n            <Text as=\"p\" className=\"rt-TooltipText\" size=\"1\">\n              {content}\n            </Text>\n            <TooltipPrimitive.Arrow className=\"rt-TooltipArrow\" />\n          </TooltipPrimitive.Content>\n        </Theme>\n      </TooltipPrimitive.Portal>\n    </TooltipPrimitive.Root>\n  );\n});\nTooltip.displayName = 'Tooltip';\n\nexport { Tooltip };\nexport type { TooltipProps };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/components/visually-hidden.tsx",
    "content": "import { VisuallyHidden as VisuallyHiddenPrimitive } from 'radix-ui';\nexport const VisuallyHidden = VisuallyHiddenPrimitive.Root;\nexport const Root = VisuallyHiddenPrimitive.Root;\nexport type VisuallyHiddenProps = VisuallyHiddenPrimitive.VisuallyHiddenProps;\n"
  },
  {
    "path": "packages/radix-ui-themes/src/helpers/component-props.ts",
    "content": "import type React from 'react';\n\ntype ComponentPropsAs<\n  C extends React.ElementType<any>,\n  T extends React.ComponentPropsWithoutRef<C>['as'],\n> = Omit<Extract<React.ComponentPropsWithoutRef<C>, { as: T }>, 'as' | 'asChild'>;\n\n// Omits the specified props from the component props. Autocomplete will suggest props\n// of the component, but won't restrict the omittable props to those that actually exist.\ntype ComponentPropsWithout<\n  T extends React.ElementType,\n  O extends\n    | Omit<string, keyof React.ComponentPropsWithoutRef<T>>\n    | keyof React.ComponentPropsWithoutRef<T>,\n> = Omit<React.ComponentPropsWithoutRef<T>, O & string>;\n\ntype RemovedProps = 'asChild' | 'defaultChecked' | 'defaultValue' | 'color';\n\nexport type { ComponentPropsAs, ComponentPropsWithout, RemovedProps };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/helpers/extract-margin-props.ts",
    "content": "import type { MarginProps } from '../props/margin.props.js';\n\nexport function extractMarginProps<T extends MarginProps>(props: T) {\n  const { m, mx, my, mt, mr, mb, ml, ...rest } = props;\n  return { m, mx, my, mt, mr, mb, ml, rest };\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/helpers/extract-props.ts",
    "content": "import classNames from 'classnames';\n\nimport { getResponsiveClassNames, getResponsiveStyles } from './get-responsive-styles.js';\nimport { isResponsiveObject } from './is-responsive-object.js';\nimport { mergeStyles } from './merge-styles.js';\n\nimport type * as React from 'react';\nimport type { PropDef } from '../props/prop-def.js';\n\ntype PropDefsWithClassName<T> =\n  T extends Record<string, PropDef>\n    ? { [K in keyof T]: T[K] extends { className: string } ? K : never }[keyof T]\n    : never;\n\nfunction mergePropDefs<T extends Record<string, PropDef>[]>(...args: T): Record<string, PropDef> {\n  return Object.assign({}, ...args);\n}\n\n/**\n * Takes props, checks them against prop defs that have a `className` on them,\n * adds necessary CSS classes and inline styles, and returns the props without\n * the corresponding prop defs that were used to formulate the new `className`\n * and `style` values. Also applies prop def defaults to every prop.\n */\nfunction extractProps<\n  P extends { className?: string; style?: React.CSSProperties; [key: string]: any },\n  T extends Record<string, PropDef>[],\n>(\n  props: P,\n  ...propDefs: T\n): Omit<P & { className?: string; style?: React.CSSProperties }, PropDefsWithClassName<T[number]>> {\n  let className: string | undefined;\n  let style: ReturnType<typeof mergeStyles>;\n  const extractedProps = { ...props };\n  const allPropDefs = mergePropDefs(...propDefs);\n\n  for (const key in allPropDefs) {\n    let value = extractedProps[key];\n    const propDef = allPropDefs[key];\n\n    // Apply prop def defaults\n    if (propDef.default !== undefined && value === undefined) {\n      value = propDef.default;\n    }\n\n    // Apply the default value if the value is not a valid enum value\n    if (propDef.type === 'enum') {\n      const values = [propDef.default, ...propDef.values];\n\n      if (!values.includes(value) && !isResponsiveObject(value)) {\n        value = propDef.default;\n      }\n    }\n\n    // Apply the value with defaults\n    (extractedProps as Record<string, any>)[key] = value;\n\n    if ('className' in propDef && propDef.className) {\n      delete extractedProps[key];\n\n      const isResponsivePropDef = 'responsive' in propDef;\n      // Make sure we are not threading through responsive values for non-responsive prop defs\n      if (!value || (isResponsiveObject(value) && !isResponsivePropDef)) {\n        continue;\n      }\n\n      if (isResponsiveObject(value)) {\n        // Apply prop def defaults to the `initial` breakpoint\n        if (propDef.default !== undefined && value.initial === undefined) {\n          value.initial = propDef.default;\n        }\n\n        // Apply the default value to the `initial` breakpoint when it is not a valid enum value\n        if (propDef.type === 'enum') {\n          const values = [propDef.default, ...propDef.values];\n\n          if (!values.includes(value.initial)) {\n            value.initial = propDef.default;\n          }\n        }\n      }\n\n      if (propDef.type === 'enum') {\n        const propClassName = getResponsiveClassNames({\n          allowArbitraryValues: false,\n          value,\n          className: propDef.className,\n          propValues: propDef.values,\n          parseValue: propDef.parseValue,\n        });\n\n        className = classNames(className, propClassName);\n        continue;\n      }\n\n      if (propDef.type === 'string' || propDef.type === 'enum | string') {\n        const propDefValues = propDef.type === 'string' ? [] : propDef.values;\n\n        const [propClassNames, propCustomProperties] = getResponsiveStyles({\n          className: propDef.className,\n          customProperties: propDef.customProperties,\n          propValues: propDefValues,\n          parseValue: propDef.parseValue,\n          value,\n        });\n\n        style = mergeStyles(style, propCustomProperties);\n        className = classNames(className, propClassNames);\n        continue;\n      }\n\n      if (propDef.type === 'boolean' && value) {\n        // TODO handle responsive boolean props\n        className = classNames(className, propDef.className);\n        continue;\n      }\n    }\n  }\n\n  extractedProps.className = classNames(className, props.className);\n  extractedProps.style = mergeStyles(style, props.style);\n  return extractedProps;\n}\n\nexport { extractProps };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/helpers/get-margin-styles.ts",
    "content": "import classNames from 'classnames';\n\nimport { getResponsiveStyles } from './get-responsive-styles.js';\nimport { mergeStyles } from './merge-styles.js';\nimport { marginPropDefs } from '../props/margin.props.js';\n\nimport type { MarginProps } from '../props/margin.props.js';\n\nconst marginValues = marginPropDefs.m.values;\n\nexport function getMarginStyles(props: MarginProps) {\n  const [mClassNames, mCustomProperties] = getResponsiveStyles({\n    className: 'rt-r-m',\n    customProperties: ['--margin'],\n    propValues: marginValues,\n    value: props.m,\n  });\n\n  const [mxClassNames, mxCustomProperties] = getResponsiveStyles({\n    className: 'rt-r-mx',\n    customProperties: ['--margin-left', '--margin-right'],\n    propValues: marginValues,\n    value: props.mx,\n  });\n\n  const [myClassNames, myCustomProperties] = getResponsiveStyles({\n    className: 'rt-r-my',\n    customProperties: ['--margin-top', '--margin-bottom'],\n    propValues: marginValues,\n    value: props.my,\n  });\n\n  const [mtClassNames, mtCustomProperties] = getResponsiveStyles({\n    className: 'rt-r-mt',\n    customProperties: ['--margin-top'],\n    propValues: marginValues,\n    value: props.mt,\n  });\n\n  const [mrClassNames, mrCustomProperties] = getResponsiveStyles({\n    className: 'rt-r-mr',\n    customProperties: ['--margin-right'],\n    propValues: marginValues,\n    value: props.mr,\n  });\n\n  const [mbClassNames, mbCustomProperties] = getResponsiveStyles({\n    className: 'rt-r-mb',\n    customProperties: ['--margin-bottom'],\n    propValues: marginValues,\n    value: props.mb,\n  });\n\n  const [mlClassNames, mlCustomProperties] = getResponsiveStyles({\n    className: 'rt-r-ml',\n    customProperties: ['--margin-left'],\n    propValues: marginValues,\n    value: props.ml,\n  });\n\n  return [\n    classNames(\n      mClassNames,\n      mxClassNames,\n      myClassNames,\n      mtClassNames,\n      mrClassNames,\n      mbClassNames,\n      mlClassNames,\n    ),\n    mergeStyles(\n      mCustomProperties,\n      mxCustomProperties,\n      myCustomProperties,\n      mtCustomProperties,\n      mrCustomProperties,\n      mbCustomProperties,\n      mlCustomProperties,\n    ),\n  ] as const;\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/helpers/get-matching-gray-color.ts",
    "content": "import type { accentColors } from '../props/color.prop.js';\n\ntype ThemeAccentColor = (typeof accentColors)[number];\n\nexport function getMatchingGrayColor(accentColor: ThemeAccentColor) {\n  switch (accentColor) {\n    case 'tomato':\n    case 'red':\n    case 'ruby':\n    case 'crimson':\n    case 'pink':\n    case 'plum':\n    case 'purple':\n    case 'violet':\n      return 'mauve';\n    case 'iris':\n    case 'indigo':\n    case 'blue':\n    case 'sky':\n    case 'cyan':\n      return 'slate';\n    case 'teal':\n    case 'jade':\n    case 'mint':\n    case 'green':\n      return 'sage';\n    case 'grass':\n    case 'lime':\n      return 'olive';\n    case 'yellow':\n    case 'amber':\n    case 'orange':\n    case 'brown':\n    case 'gold':\n    case 'bronze':\n      return 'sand';\n    case 'gray':\n      return 'gray';\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/helpers/get-responsive-styles.ts",
    "content": "import { breakpoints } from '../props/prop-def.js';\nimport { hasOwnProperty } from './has-own-property.js';\nimport { isResponsiveObject } from './is-responsive-object.js';\n\nimport type { Responsive, Union } from '../props/prop-def.js';\n\ninterface GetResponsiveStylesOptions {\n  className: string;\n  customProperties: `--${string}`[];\n  value: Responsive<Union> | Responsive<string> | undefined;\n  propValues: string[] | readonly string[];\n  parseValue?: (value: string) => string | undefined;\n}\n\nfunction getResponsiveStyles({ className, customProperties, ...args }: GetResponsiveStylesOptions) {\n  const responsiveClassNames = getResponsiveClassNames({\n    allowArbitraryValues: true,\n    className,\n    ...args,\n  });\n\n  const responsiveCustomProperties = getResponsiveCustomProperties({ customProperties, ...args });\n  return [responsiveClassNames, responsiveCustomProperties] as const;\n}\n\ninterface GetResponsiveClassNamesOptions {\n  allowArbitraryValues?: boolean;\n  className: string;\n  value: Responsive<Union> | Responsive<string> | undefined;\n  propValues: string[] | readonly string[];\n  parseValue?: (value: string) => string | undefined;\n}\n\nfunction getResponsiveClassNames({\n  allowArbitraryValues,\n  value,\n  className,\n  propValues,\n  parseValue = (value) => value,\n}: GetResponsiveClassNamesOptions): string | undefined {\n  const classNames: string[] = [];\n\n  if (!value) {\n    return undefined;\n  }\n\n  if (typeof value === 'string' && propValues.includes(value)) {\n    return getBaseClassName(className, value, parseValue);\n  }\n\n  if (isResponsiveObject(value)) {\n    const object = value;\n\n    for (const bp in object) {\n      // Make sure we are not iterating over keys that aren't breakpoints\n      if (!hasOwnProperty(object, bp) || !breakpoints.has(bp)) {\n        continue;\n      }\n\n      const value = object[bp];\n\n      if (value !== undefined) {\n        if (propValues.includes(value)) {\n          const baseClassName = getBaseClassName(className, value, parseValue);\n          const bpClassName = bp === 'initial' ? baseClassName : `${bp}:${baseClassName}`;\n          classNames.push(bpClassName);\n        } else if (allowArbitraryValues) {\n          const bpClassName = bp === 'initial' ? className : `${bp}:${className}`;\n          classNames.push(bpClassName);\n        }\n      }\n    }\n\n    return classNames.join(' ');\n  }\n\n  if (allowArbitraryValues) {\n    return className;\n  }\n}\n\nfunction getBaseClassName(\n  className: string,\n  value: string,\n  parseValue: (value: string) => string | undefined,\n): string {\n  const delimiter = className ? '-' : '';\n  const matchedValue = parseValue(value);\n  const isNegative = matchedValue?.startsWith('-');\n  const minus = isNegative ? '-' : '';\n  const absoluteValue = isNegative ? matchedValue?.substring(1) : matchedValue;\n  return `${minus}${className}${delimiter}${absoluteValue}`;\n}\n\ninterface GetResponsiveCustomPropertiesOptions {\n  customProperties: `--${string}`[];\n  value: Responsive<Union> | Responsive<string> | undefined;\n  propValues: string[] | readonly string[];\n  parseValue?: (value: string) => string | undefined;\n}\n\nfunction getResponsiveCustomProperties({\n  customProperties,\n  value,\n  propValues,\n  parseValue = (value) => value,\n}: GetResponsiveCustomPropertiesOptions) {\n  let styles: Record<string, string | undefined> = {};\n\n  // Don't generate custom properties if the value is not arbitrary\n  if (!value || (typeof value === 'string' && propValues.includes(value))) {\n    return undefined;\n  }\n\n  if (typeof value === 'string') {\n    styles = Object.fromEntries(customProperties.map((prop) => [prop, value]));\n  }\n\n  if (isResponsiveObject(value)) {\n    const object = value;\n\n    for (const bp in object) {\n      // Make sure we are not iterating over keys that aren't breakpoints\n      if (!hasOwnProperty(object, bp) || !breakpoints.has(bp)) {\n        continue;\n      }\n\n      const value = object[bp];\n\n      // Don't generate a custom property if the value is not arbitrary\n      if (propValues.includes(value)) {\n        continue;\n      }\n\n      for (const customProperty of customProperties) {\n        const bpProperty = bp === 'initial' ? customProperty : `${customProperty}-${bp}`;\n\n        styles = {\n          [bpProperty]: value,\n          ...styles,\n        };\n      }\n    }\n  }\n\n  for (const key in styles) {\n    const value = styles[key];\n    if (value !== undefined) {\n      styles[key] = parseValue(value);\n    }\n  }\n\n  return styles;\n}\n\nexport { getResponsiveStyles, getResponsiveCustomProperties, getResponsiveClassNames };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/helpers/get-subtree.ts",
    "content": "import * as React from 'react';\n\n/**\n * This is a helper function that is used when a component supports `asChild`\n * using the `Slot` component but its implementation contains nested DOM elements.\n *\n * Using it ensures if a consumer uses the `asChild` prop, the elements are in\n * correct order in the DOM, adopting the intended consumer `children`.\n */\nexport function getSubtree(\n  options: { asChild: boolean | undefined; children: React.ReactNode },\n  content: React.ReactNode | ((children: React.ReactNode) => React.ReactNode),\n) {\n  const { asChild, children } = options;\n  if (!asChild) return typeof content === 'function' ? content(children) : content;\n\n  const firstChild = React.Children.only(children) as React.ReactElement;\n  return React.cloneElement(firstChild, {\n    // @ts-expect-error\n    children: typeof content === 'function' ? content(firstChild.props.children) : content,\n  });\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/helpers/has-own-property.ts",
    "content": "/** A util to check whether the object has a key, while inferring the correct key type */\nfunction hasOwnProperty<K extends string | number | symbol>(\n  obj: Record<K, unknown>,\n  key: string | number | symbol,\n): key is K {\n  return Object.prototype.hasOwnProperty.call(obj, key);\n}\n\nexport { hasOwnProperty };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/helpers/index.ts",
    "content": "export * from './component-props.js';\nexport * from './extract-margin-props.js';\nexport * from './extract-props.js';\nexport * from './get-margin-styles.js';\nexport * from './get-matching-gray-color.js';\nexport * from './get-responsive-styles.js';\nexport * from './get-subtree.js';\nexport * from './has-own-property.js';\nexport * from './input-attributes.js';\nexport * from './is-responsive-object.js';\nexport * from './map-prop-values.js';\nexport * from './merge-styles.js';\nexport * from './require-react-element.js';\n"
  },
  {
    "path": "packages/radix-ui-themes/src/helpers/inert.ts",
    "content": "import * as React from 'react';\n\n// \"inert\" works differently between React versions\n// https://github.com/facebook/react/pull/24730\nexport const inert = (Number.parseFloat(React.version) >= 19 ||\n  '') as React.HTMLAttributes<unknown>['inert'];\n"
  },
  {
    "path": "packages/radix-ui-themes/src/helpers/input-attributes.ts",
    "content": "// https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#attributes\n\ntype InputAttributes =\n  | 'accept'\n  | 'alt'\n  | 'autocapitalize'\n  | 'autocomplete'\n  | 'capture'\n  | 'checked'\n  | 'defaultChecked'\n  | 'defaultValue'\n  | 'disabled'\n  | 'form'\n  | 'formaction'\n  | 'formenctype'\n  | 'formmethod'\n  | 'formnovalidate'\n  | 'formtarget'\n  | 'height'\n  | 'list'\n  | 'max'\n  | 'maxlength'\n  | 'min'\n  | 'minlength'\n  | 'multiple'\n  | 'name'\n  | 'pattern'\n  | 'placeholder'\n  | 'popovertarget'\n  | 'popovertargetaction'\n  | 'readonly'\n  | 'required'\n  | 'size'\n  | 'src'\n  | 'step'\n  | 'type'\n  | 'value'\n  | 'width';\n\n// Includes all text-like inputs, e.g. text, email, password, number, date, etc.\ntype InputTextualAttributes =\n  | 'autoCapitalize'\n  | 'autoComplete'\n  | 'defaultValue'\n  | 'disabled'\n  | 'form'\n  | 'list'\n  | 'maxLength'\n  | 'minLength'\n  | 'min'\n  | 'multiple'\n  | 'max'\n  | 'name'\n  | 'pattern'\n  | 'placeholder'\n  | 'readOnly'\n  | 'required'\n  | 'size'\n  | 'step'\n  | 'type'\n  | 'value';\n\ntype InputRadioAttributes =\n  | 'checked'\n  | 'defaultChecked'\n  | 'defaultValue'\n  | 'disabled'\n  | 'form'\n  | 'name'\n  | 'required'\n  | 'value';\n\ntype NotInputRadioAttributes = Exclude<InputAttributes, InputRadioAttributes>;\ntype NotInputTextualAttributes = Exclude<InputAttributes, InputTextualAttributes>;\n\nexport type {\n  InputAttributes,\n  InputRadioAttributes,\n  InputTextualAttributes,\n  NotInputRadioAttributes,\n  NotInputTextualAttributes,\n};\n"
  },
  {
    "path": "packages/radix-ui-themes/src/helpers/is-responsive-object.ts",
    "content": "import { breakpoints } from '../props/prop-def.js';\n\nimport type { Responsive, Breakpoint } from '../props/prop-def.js';\n\nexport function isResponsiveObject<Value extends string>(\n  obj: Responsive<Value | Omit<string, Value>> | undefined,\n): obj is Record<Breakpoint, string> {\n  return (\n    typeof obj === 'object' &&\n    obj !== null &&\n    Object.keys(obj).some((key) => {\n      return breakpoints.has(key as any);\n    })\n  );\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/helpers/map-prop-values.ts",
    "content": "import type { baseButtonPropDefs } from '../components/_internal/base-button.props.js';\nimport type { calloutRootPropDefs } from '../components/callout.props.js';\nimport type { spinnerPropDefs } from '../components/spinner.props.js';\nimport type { textPropDefs } from '../components/text.props.js';\nimport type { Responsive } from '../props/prop-def.js';\n\nfunction mapResponsiveProp<Input extends string, Output>(\n  propValue: Responsive<Input> | undefined,\n  mapValue: (value: Input) => Output,\n): Responsive<Output> | undefined {\n  if (propValue === undefined) return undefined;\n  if (typeof propValue === 'string') {\n    return mapValue(propValue);\n  }\n  return Object.fromEntries(\n    Object.entries(propValue).map(([key, value]) => [key, mapValue(value)]),\n  );\n}\n\nfunction mapCalloutSizeToTextSize(\n  size: (typeof calloutRootPropDefs.size.values)[number],\n): (typeof textPropDefs.size.values)[number] {\n  return size === '3' ? '3' : '2';\n}\n\nfunction mapButtonSizeToSpinnerSize(\n  size: (typeof baseButtonPropDefs.size.values)[number],\n): (typeof spinnerPropDefs.size.values)[number] {\n  switch (size) {\n    case '1':\n      return '1';\n    case '2':\n    case '3':\n      return '2';\n    case '4':\n      return '3';\n  }\n}\n\nexport { mapResponsiveProp, mapCalloutSizeToTextSize, mapButtonSizeToSpinnerSize };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/helpers/merge-styles.ts",
    "content": "type InlineStyle =\n  | React.CSSProperties\n  | Record<string, string | number | null | undefined>\n  | undefined;\n\n// Merges CSS styles like `classNames` merges CSS classes\nexport function mergeStyles(...styles: Array<InlineStyle>): InlineStyle {\n  let result: InlineStyle = {};\n\n  for (const style of styles) {\n    if (style) {\n      result = { ...result, ...style };\n    }\n  }\n\n  return Object.keys(result).length ? result : undefined;\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/helpers/require-react-element.ts",
    "content": "import * as React from 'react';\n\n/** A function that throws an error when a value isn't a valid React Element, otherwise returns the value */\nexport const requireReactElement = <T extends React.ReactNode>(children: T): T => {\n  const isReactElement = React.isValidElement(children);\n\n  if (!isReactElement) {\n    throw Error(\n      `Expected a single React Element child, but got: ${React.Children.toArray(children)\n        .map((child) =>\n          typeof child === 'object' && 'type' in child && typeof child.type === 'string'\n            ? child.type\n            : typeof child,\n        )\n        .join(', ')}`,\n    );\n  }\n\n  return children;\n};\n"
  },
  {
    "path": "packages/radix-ui-themes/src/index.ts",
    "content": "export * from './components/index.js';\n"
  },
  {
    "path": "packages/radix-ui-themes/src/props/as-child.prop.ts",
    "content": "import type { PropDef } from './prop-def.js';\n\nconst asChildPropDef = {\n  /**\n   * Composes the component into its immediate child instead of rendering its own HTML element.\n   * You’ll have to provide a single React Element child.\n   */\n  asChild: {\n    type: 'boolean',\n  },\n} satisfies {\n  asChild: PropDef<boolean>;\n};\n\nexport { asChildPropDef };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/props/color.prop.ts",
    "content": "import type { PropDef } from './prop-def.js';\n\n// prettier-ignore\nconst accentColors = ['gray', 'gold', 'bronze', 'brown', 'yellow', 'amber', 'orange', 'tomato', 'red', 'ruby', 'crimson', 'pink', 'plum', 'purple', 'violet', 'iris', 'indigo', 'blue', 'cyan', 'teal', 'jade', 'green', 'grass', 'lime', 'mint', 'sky'] as const;\n\nconst grayColors = ['auto', 'gray', 'mauve', 'slate', 'sage', 'olive', 'sand'] as const;\n\nconst colorPropDef = {\n  color: {\n    type: 'enum',\n    values: accentColors,\n    default: undefined as (typeof accentColors)[number] | undefined,\n  },\n} satisfies {\n  color: PropDef<(typeof accentColors)[number]>;\n};\n\n// 1. When used on components that compose Text, sets the color of the text to the current accent.\n// 2. Defines accent color for descendant text components with `highContrast={true}`.\nconst accentColorPropDef = {\n  color: {\n    type: 'enum',\n    values: accentColors,\n    default: '' as (typeof accentColors)[number],\n  },\n} satisfies {\n  color: PropDef<(typeof accentColors)[number]>;\n};\n\nexport {\n  accentColorPropDef,\n  colorPropDef,\n  //\n  accentColors,\n  grayColors,\n};\n"
  },
  {
    "path": "packages/radix-ui-themes/src/props/gap.props.ts",
    "content": "import type { PropDef } from './prop-def.js';\n\nconst gapValues = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'] as const;\n\nconst gapPropDefs = {\n  /**\n   * Sets the CSS **gap** property.\n   * Supports space scale values, CSS strings, and responsive objects.\n   *\n   * @example\n   * gap=\"4\"\n   * gap=\"20px\"\n   * gap={{ sm: '2', lg: '3em' }}\n   *\n   * @link\n   * https://developer.mozilla.org/en-US/docs/Web/CSS/gap\n   */\n  gap: {\n    type: 'enum | string',\n    className: 'rt-r-gap',\n    customProperties: ['--gap'],\n    values: gapValues,\n    responsive: true,\n  },\n  /**\n   * Sets the CSS **row-gap** property.\n   * Supports space scale values, CSS strings, and responsive objects.\n   *\n   * @example\n   * gapX=\"4\"\n   * gapX=\"20px\"\n   * gapX={{ sm: '2', lg: '3em' }}\n   *\n   * @link\n   * https://developer.mozilla.org/en-US/docs/Web/CSS/row-gap\n   */\n  gapX: {\n    type: 'enum | string',\n    className: 'rt-r-cg',\n    customProperties: ['--column-gap'],\n    values: gapValues,\n    responsive: true,\n  },\n  /**\n   * Sets the CSS **column-gap** property.\n   * Supports space scale values, CSS strings, and responsive objects.\n   *\n   * @example\n   * gapY=\"4\"\n   * gapY=\"20px\"\n   * gapY={{ sm: '2', lg: '3em' }}\n   *\n   * @link\n   * https://developer.mozilla.org/en-US/docs/Web/CSS/column-gap\n   */\n  gapY: {\n    type: 'enum | string',\n    className: 'rt-r-rg',\n    customProperties: ['--row-gap'],\n    values: gapValues,\n    responsive: true,\n  },\n} satisfies {\n  gap: PropDef<(typeof gapValues)[number]>;\n  gapX: PropDef<(typeof gapValues)[number]>;\n  gapY: PropDef<(typeof gapValues)[number]>;\n};\n\nexport { gapPropDefs };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/props/height.props.ts",
    "content": "import type { PropDef, GetPropDefTypes } from './prop-def.js';\n\nconst heightPropDefs = {\n  /**\n   * Sets the CSS **height** property.\n   * Supports CSS strings and responsive objects.\n   *\n   * @example\n   * height=\"100px\"\n   * height={{ md: '100vh', xl: '600px' }}\n   *\n   * @link\n   * https://developer.mozilla.org/en-US/docs/Web/CSS/height\n   */\n  height: {\n    type: 'string',\n    className: 'rt-r-h',\n    customProperties: ['--height'],\n    responsive: true,\n  },\n  /**\n   * Sets the CSS **min-height** property.\n   * Supports CSS strings and responsive objects.\n   *\n   * @example\n   * minHeight=\"100px\"\n   * minHeight={{ md: '100vh', xl: '600px' }}\n   *\n   * @link\n   * https://developer.mozilla.org/en-US/docs/Web/CSS/min-height\n   */\n  minHeight: {\n    type: 'string',\n    className: 'rt-r-min-h',\n    customProperties: ['--min-height'],\n    responsive: true,\n  },\n  /**\n   * Sets the CSS **max-height** property.\n   * Supports CSS strings and responsive objects.\n   *\n   * @example\n   * maxHeight=\"100px\"\n   * maxHeight={{ md: '100vh', xl: '600px' }}\n   *\n   * @link\n   * https://developer.mozilla.org/en-US/docs/Web/CSS/max-height\n   */\n  maxHeight: {\n    type: 'string',\n    className: 'rt-r-max-h',\n    customProperties: ['--max-height'],\n    responsive: true,\n  },\n} satisfies {\n  height: PropDef<string>;\n  minHeight: PropDef<string>;\n  maxHeight: PropDef<string>;\n};\n\ntype HeightProps = GetPropDefTypes<typeof heightPropDefs>;\n\nexport { heightPropDefs };\nexport type { HeightProps };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/props/high-contrast.prop.ts",
    "content": "import type { PropDef } from './prop-def.js';\n\nconst highContrastPropDef = {\n  highContrast: {\n    type: 'boolean',\n    className: 'rt-high-contrast',\n    default: undefined,\n  },\n} satisfies {\n  highContrast: PropDef<boolean>;\n};\n\nexport { highContrastPropDef };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/props/index.ts",
    "content": "// Prop definition\nexport {\n  /** @deprecated breakpoints will be updated from an array to a set in the next major version */\n  breakpointsArray as breakpoints,\n} from './prop-def.js';\nexport type {\n  PropDef,\n  GetPropDefTypes,\n  ResponsivePropDef,\n  //\n  Breakpoint,\n  Responsive,\n  Union,\n} from './prop-def.js';\n\n// Individual props\nexport * from './as-child.prop.js';\nexport * from './color.prop.js';\nexport * from './gap.props.js';\nexport * from './height.props.js';\nexport * from './high-contrast.prop.js';\nexport * from './layout.props.js';\nexport * from './leading-trim.prop.js';\nexport * from './margin.props.js';\nexport * from './padding.props.js';\nexport * from './radius.prop.js';\nexport * from './text-align.prop.js';\nexport * from './text-wrap.prop.js';\nexport * from './truncate.prop.js';\nexport * from './weight.prop.js';\nexport * from './width.props.js';\n\n// Component props\nexport * from '../components/alert-dialog.props.js';\nexport * from '../components/avatar.props.js';\nexport * from '../components/badge.props.js';\nexport * from '../components/blockquote.props.js';\nexport * from '../components/box.props.js';\nexport * from '../components/button.props.js';\nexport * from '../components/callout.props.js';\nexport * from '../components/card.props.js';\nexport * from '../components/checkbox-cards.props.js';\nexport * from '../components/checkbox-group.props.js';\nexport * from '../components/checkbox.props.js';\nexport * from '../components/code.props.js';\nexport * from '../components/container.props.js';\nexport * from '../components/context-menu.props.js';\nexport * from '../components/data-list.props.js';\nexport * from '../components/dialog.props.js';\nexport * from '../components/dropdown-menu.props.js';\nexport * from '../components/em.props.js';\nexport * from '../components/flex.props.js';\nexport * from '../components/grid.props.js';\nexport * from '../components/heading.props.js';\nexport * from '../components/hover-card.props.js';\nexport * from '../components/icon-button.props.js';\nexport * from '../components/inset.props.js';\nexport * from '../components/kbd.props.js';\nexport * from '../components/link.props.js';\nexport * from '../components/popover.props.js';\nexport * from '../components/progress.props.js';\nexport * from '../components/quote.props.js';\nexport * from '../components/radio.props.js';\nexport * from '../components/radio-cards.props.js';\nexport * from '../components/radio-group.props.js';\nexport * from '../components/scroll-area.props.js';\nexport * from '../components/section.props.js';\nexport * from '../components/segmented-control.props.js';\nexport * from '../components/select.props.js';\nexport * from '../components/separator.props.js';\nexport * from '../components/skeleton.props.js';\nexport * from '../components/slider.props.js';\nexport * from '../components/spinner.props.js';\nexport * from '../components/strong.props.js';\nexport * from '../components/switch.props.js';\nexport * from '../components/tab-nav.props.js';\nexport * from '../components/table.props.js';\nexport * from '../components/tabs.props.js';\nexport * from '../components/text-area.props.js';\nexport * from '../components/text-field.props.js';\nexport * from '../components/text.props.js';\nexport * from '../components/theme.props.js';\nexport * from '../components/tooltip.props.js';\n"
  },
  {
    "path": "packages/radix-ui-themes/src/props/layout.props.ts",
    "content": "import { paddingPropDefs } from './padding.props.js';\nimport { heightPropDefs } from './height.props.js';\nimport { widthPropDefs } from './width.props.js';\n\nimport type { PropDef, GetPropDefTypes } from './prop-def.js';\n\nconst overflowValues = ['visible', 'hidden', 'clip', 'scroll', 'auto'] as const;\nconst positionValues = ['static', 'relative', 'absolute', 'fixed', 'sticky'] as const;\n// prettier-ignore\nconst positionEdgeValues = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '-1', '-2', '-3', '-4', '-5', '-6', '-7', '-8', '-9'] as const;\nconst flexShrinkValues = ['0', '1'] as const;\nconst flexGrowValues = ['0', '1'] as const;\nconst alignSelfValues = ['start', 'center', 'end', 'baseline', 'stretch'] as const;\nconst justifySelfValues = ['start', 'center', 'end', 'baseline', 'stretch'] as const;\n\nconst layoutPropDefs = {\n  ...paddingPropDefs,\n  ...widthPropDefs,\n  ...heightPropDefs,\n  /**\n   * Sets the CSS **position** property.\n   * Supports the corresponding CSS values and responsive objects.\n   *\n   * @example\n   * position=\"absolute\"\n   * position={{ sm: 'absolute', lg: 'sticky' }}\n   *\n   * @link\n   * https://developer.mozilla.org/en-US/docs/Web/CSS/position\n   */\n  position: {\n    type: 'enum',\n    className: 'rt-r-position',\n    values: positionValues,\n    responsive: true,\n  },\n  /**\n   * Sets the CSS **inset** property.\n   * Supports space scale values, CSS strings, and responsive objects.\n   *\n   * @example\n   * inset=\"4\"\n   * inset=\"100px\"\n   * inset={{ sm: '0', lg: '50%' }}\n   *\n   * @link\n   * https://developer.mozilla.org/en-US/docs/Web/CSS/inset\n   */\n  inset: {\n    type: 'enum | string',\n    className: 'rt-r-inset',\n    customProperties: ['--inset'],\n    values: positionEdgeValues,\n    responsive: true,\n  },\n  /**\n   * Sets the CSS **top** property.\n   * Supports space scale values, CSS strings, and responsive objects.\n   *\n   * @example\n   * top=\"4\"\n   * top=\"100px\"\n   * top={{ sm: '0', lg: '50%' }}\n   *\n   * @link\n   * https://developer.mozilla.org/en-US/docs/Web/CSS/top\n   */\n  top: {\n    type: 'enum | string',\n    className: 'rt-r-top',\n    customProperties: ['--top'],\n    values: positionEdgeValues,\n    responsive: true,\n  },\n  /**\n   * Sets the CSS **right** property.\n   * Supports space scale values, CSS strings, and responsive objects.\n   *\n   * @example\n   * right=\"4\"\n   * right=\"100px\"\n   * right={{ sm: '0', lg: '50%' }}\n   *\n   * @link\n   * https://developer.mozilla.org/en-US/docs/Web/CSS/right\n   */\n  right: {\n    type: 'enum | string',\n    className: 'rt-r-right',\n    customProperties: ['--right'],\n    values: positionEdgeValues,\n    responsive: true,\n  },\n  /**\n   * Sets the CSS **bottom** property.\n   * Supports space scale values, CSS strings, and responsive objects.\n   *\n   * @example\n   * bottom=\"4\"\n   * bottom=\"100px\"\n   * bottom={{ sm: '0', lg: '50%' }}\n   *\n   * @link\n   * https://developer.mozilla.org/en-US/docs/Web/CSS/bottom\n   */\n  bottom: {\n    type: 'enum | string',\n    className: 'rt-r-bottom',\n    customProperties: ['--bottom'],\n    values: positionEdgeValues,\n    responsive: true,\n  },\n  /**\n   * Sets the CSS **left** property.\n   * Supports space scale values, CSS strings, and responsive objects.\n   *\n   * @example\n   * left=\"4\"\n   * left=\"100px\"\n   * left={{ sm: '0', lg: '50%' }}\n   *\n   * @link\n   * https://developer.mozilla.org/en-US/docs/Web/CSS/left\n   */\n  left: {\n    type: 'enum | string',\n    className: 'rt-r-left',\n    customProperties: ['--left'],\n    values: positionEdgeValues,\n    responsive: true,\n  },\n  /**\n   * Sets the CSS **overflow** property.\n   * Supports the corresponding CSS values and responsive objects.\n   *\n   * @example\n   * overflow=\"hidden\"\n   * overflow={{ sm: 'hidden', lg: 'visible' }}\n   *\n   * @link\n   * https://developer.mozilla.org/en-US/docs/Web/CSS/overflow\n   */\n  overflow: {\n    type: 'enum',\n    className: 'rt-r-overflow',\n    values: overflowValues,\n    responsive: true,\n  },\n  /**\n   * Sets the CSS **overflow-x** property.\n   * Supports the corresponding CSS values and responsive objects.\n   *\n   * @example\n   * overflowX=\"hidden\"\n   * overflowX={{ sm: 'hidden', md: 'visible' }}\n   *\n   * @link\n   * https://developer.mozilla.org/en-US/docs/Web/CSS/overflow\n   */\n  overflowX: {\n    type: 'enum',\n    className: 'rt-r-ox',\n    values: overflowValues,\n    responsive: true,\n  },\n  /**\n   * Sets the CSS **overflow-y** property.\n   * Supports the corresponding CSS values and responsive objects.\n   *\n   * @example\n   * overflowY=\"hidden\"\n   * overflowY={{ sm: 'hidden', md: 'visible' }}\n   *\n   * @link\n   * https://developer.mozilla.org/en-US/docs/Web/CSS/overflow\n   */\n  overflowY: {\n    type: 'enum',\n    className: 'rt-r-oy',\n    values: overflowValues,\n    responsive: true,\n  },\n  /**\n   * Sets the CSS **flex-basis** property.\n   * Supports CSS strings and responsive objects.\n   *\n   * @example\n   * flexBasis=\"0\"\n   * flexBasis=\"100%\"\n   * flexBasis={{ sm: '200px', lg: 'auto' }}\n   *\n   * @link\n   * https://developer.mozilla.org/en-US/docs/Web/CSS/flex-basis\n   */\n  flexBasis: {\n    type: 'string',\n    className: 'rt-r-fb',\n    customProperties: ['--flex-basis'],\n    responsive: true,\n  },\n  /**\n   * Sets the CSS **flex-shrink** property.\n   * Supports CSS strings and responsive objects.\n   *\n   * @example\n   * flexShrink=\"0\"\n   * flexShrink=\"1\"\n   * flexShrink={{ sm: '0', lg: '1' }}\n   *\n   * @link\n   * https://developer.mozilla.org/en-US/docs/Web/CSS/flex-shrink\n   */\n  flexShrink: {\n    type: 'enum | string',\n    className: 'rt-r-fs',\n    customProperties: ['--flex-shrink'],\n    values: flexShrinkValues,\n    responsive: true,\n  },\n  /**\n   * Sets the CSS **flex-grow** property.\n   * Supports CSS strings and responsive objects.\n   *\n   * @example\n   * flexGrow=\"0\"\n   * flexGrow=\"1\"\n   * flexGrow={{ sm: '0', lg: '1' }}\n   *\n   * @link\n   * https://developer.mozilla.org/en-US/docs/Web/CSS/flex-grow\n   */\n  flexGrow: {\n    type: 'enum | string',\n    className: 'rt-r-fg',\n    customProperties: ['--flex-grow'],\n    values: flexGrowValues,\n    responsive: true,\n  },\n  /**\n   * Sets the CSS **grid-area** property.\n   * Supports CSS strings and responsive objects.\n   *\n   * @example\n   * gridArea=\"header\"\n   *\n   * @link\n   * https://developer.mozilla.org/en-US/docs/Web/CSS/grid-area\n   */\n  gridArea: {\n    type: 'string',\n    className: 'rt-r-ga',\n    customProperties: ['--grid-area'],\n    responsive: true,\n  },\n  /**\n   * Sets the CSS **grid-column** property.\n   * Supports CSS strings and responsive objects.\n   *\n   * @example\n   * gridColumn=\"1\"\n   * gridColumn=\"1 / -1\"\n   * gridColumn={{ sm: '1 / 3', lg: 'span 3' }}\n   *\n   * @link\n   * https://developer.mozilla.org/en-US/docs/Web/CSS/grid-column\n   */\n  gridColumn: {\n    type: 'string',\n    className: 'rt-r-gc',\n    customProperties: ['--grid-column'],\n    responsive: true,\n  },\n  /**\n   * Sets the CSS **grid-column-start** property.\n   * Supports CSS strings and responsive objects.\n   *\n   * @example\n   * gridColumnStart=\"1\"\n   * gridColumnStart=\"auto\"\n   * gridColumnStart={{ sm: '2', lg: 'span 3' }}\n   *\n   * @link\n   * https://developer.mozilla.org/en-US/docs/Web/CSS/grid-column-start\n   */\n  gridColumnStart: {\n    type: 'string',\n    className: 'rt-r-gcs',\n    customProperties: ['--grid-column-start'],\n    responsive: true,\n  },\n  /**\n   * Sets the CSS **grid-column-end** property.\n   * Supports CSS strings and responsive objects.\n   *\n   * @example\n   * gridColumnEnd=\"1\"\n   * gridColumnEnd=\"auto\"\n   * gridColumnEnd={{ sm: '2', lg: 'span 3' }}\n   *\n   * @link\n   * https://developer.mozilla.org/en-US/docs/Web/CSS/grid-column-end\n   */\n  gridColumnEnd: {\n    type: 'string',\n    className: 'rt-r-gce',\n    customProperties: ['--grid-column-end'],\n    responsive: true,\n  },\n  /**\n   * Sets the CSS **grid-row** property.\n   * Supports CSS strings and responsive objects.\n   *\n   * @example\n   * gridRow=\"1\"\n   * gridRow=\"auto\"\n   * gridRow={{ sm: '2', lg: 'span 3' }}\n   *\n   * @link\n   * https://developer.mozilla.org/en-US/docs/Web/CSS/grid-row\n   */\n  gridRow: {\n    type: 'string',\n    className: 'rt-r-gr',\n    customProperties: ['--grid-row'],\n    responsive: true,\n  },\n  /**\n   * Sets the CSS **grid-row-start** property.\n   * Supports CSS strings and responsive objects.\n   *\n   * @example\n   * gridRowStart=\"1\"\n   * gridRowStart=\"auto\"\n   * gridRowStart={{ sm: '2', lg: 'span 3' }}\n   *\n   * @link\n   * https://developer.mozilla.org/en-US/docs/Web/CSS/grid-row-start\n   */\n  gridRowStart: {\n    type: 'string',\n    className: 'rt-r-grs',\n    customProperties: ['--grid-row-start'],\n    responsive: true,\n  },\n  /**\n   * Sets the CSS **grid-row-end** property.\n   * Supports CSS strings and responsive objects.\n   *\n   * @example\n   * gridRowEnd=\"1\"\n   * gridRowEnd=\"auto\"\n   * gridRowEnd={{ sm: '2', lg: 'span 3' }}\n   *\n   * @link\n   * https://developer.mozilla.org/en-US/docs/Web/CSS/grid-row-end\n   */\n  gridRowEnd: {\n    type: 'string',\n    className: 'rt-r-gre',\n    customProperties: ['--grid-row-end'],\n    responsive: true,\n  },\n  /**\n   * Sets the CSS **align-self** property.\n   * Supports a subset of the corresponding CSS values and responsive objects.\n   *\n   * @example\n   * alignSelf=\"center\"\n   * alignSelf={{ sm: 'start', lg: 'center' }}\n   *\n   * @link\n   * https://developer.mozilla.org/en-US/docs/Web/CSS/align-self\n   */\n  alignSelf: {\n    type: 'enum',\n    className: 'rt-r-as',\n    values: alignSelfValues,\n    responsive: true,\n  },\n  /**\n   * Sets the CSS **justify-self** property.\n   * Supports a subset of the corresponding CSS values and responsive objects.\n   *\n   * @example\n   * justifySelf=\"center\"\n   * justifySelf={{ sm: 'start', lg: 'center' }}\n   *\n   * @link\n   * https://developer.mozilla.org/en-US/docs/Web/CSS/justify-self\n   */\n  justifySelf: {\n    type: 'enum',\n    className: 'rt-r-js',\n    values: justifySelfValues,\n    responsive: true,\n  },\n} satisfies {\n  position: PropDef<(typeof positionValues)[number]>;\n  inset: PropDef<(typeof positionEdgeValues)[number]>;\n  top: PropDef<(typeof positionEdgeValues)[number]>;\n  right: PropDef<(typeof positionEdgeValues)[number]>;\n  bottom: PropDef<(typeof positionEdgeValues)[number]>;\n  left: PropDef<(typeof positionEdgeValues)[number]>;\n  overflow: PropDef<(typeof overflowValues)[number]>;\n  overflowX: PropDef<(typeof overflowValues)[number]>;\n  overflowY: PropDef<(typeof overflowValues)[number]>;\n  flexBasis: PropDef<string>;\n  flexShrink: PropDef<(typeof flexShrinkValues)[number]>;\n  flexGrow: PropDef<(typeof flexGrowValues)[number]>;\n  gridColumn: PropDef<string>;\n  gridColumnStart: PropDef<string>;\n  gridColumnEnd: PropDef<string>;\n  gridRow: PropDef<string>;\n  gridRowStart: PropDef<string>;\n  gridRowEnd: PropDef<string>;\n  gridArea: PropDef<string>;\n  alignSelf: PropDef<(typeof alignSelfValues)[number]>;\n  justifySelf: PropDef<(typeof justifySelfValues)[number]>;\n};\n\n// Use all of the imported prop defs to ensure that JSDoc works\ntype LayoutProps = GetPropDefTypes<\n  typeof paddingPropDefs & typeof widthPropDefs & typeof heightPropDefs & typeof layoutPropDefs\n>;\n\nexport { layoutPropDefs };\nexport type { LayoutProps };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/props/leading-trim.prop.ts",
    "content": "import type { PropDef } from './prop-def.js';\n\nconst leadingTrimValues = ['normal', 'start', 'end', 'both'] as const;\n\nconst leadingTrimPropDef = {\n  trim: {\n    type: 'enum',\n    className: 'rt-r-lt',\n    values: leadingTrimValues,\n    responsive: true,\n  },\n} satisfies {\n  trim: PropDef<(typeof leadingTrimValues)[number]>;\n};\n\nexport { leadingTrimPropDef };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/props/margin.props.ts",
    "content": "import type { PropDef, GetPropDefTypes } from './prop-def.js';\n\n// prettier-ignore\nconst marginValues = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '-1', '-2', '-3', '-4', '-5', '-6', '-7', '-8', '-9'] as const;\n\nconst marginPropDefs = {\n  /**\n   * Sets the CSS **margin** property.\n   * Supports space scale values, CSS strings, and responsive objects.\n   *\n   * @example\n   * m=\"4\"\n   * m=\"100px\"\n   * m={{ sm: '6', lg: '9' }}\n   *\n   * @link\n   * https://developer.mozilla.org/en-US/docs/Web/CSS/margin\n   */\n  m: {\n    type: 'enum | string',\n    values: marginValues,\n    responsive: true,\n    className: 'rt-r-m',\n    customProperties: ['--m'],\n  },\n  /**\n   * Sets the CSS **margin-left** and **margin-right** properties.\n   * Supports space scale values, CSS strings, and responsive objects.\n   *\n   * @example\n   * mx=\"4\"\n   * mx=\"100px\"\n   * mx={{ sm: '6', lg: '9' }}\n   *\n   * @link\n   * https://developer.mozilla.org/en-US/docs/Web/CSS/margin-left\n   * https://developer.mozilla.org/en-US/docs/Web/CSS/margin-right\n   */\n  mx: {\n    type: 'enum | string',\n    values: marginValues,\n    responsive: true,\n    className: 'rt-r-mx',\n    customProperties: ['--ml', '--mr'],\n  },\n  /**\n   * Sets the CSS **margin-top** and **margin-bottom** properties.\n   * Supports space scale values, CSS strings, and responsive objects.\n   *\n   * @example\n   * my=\"4\"\n   * my=\"100px\"\n   * my={{ sm: '6', lg: '9' }}\n   *\n   * @link\n   * https://developer.mozilla.org/en-US/docs/Web/CSS/margin-top\n   * https://developer.mozilla.org/en-US/docs/Web/CSS/margin-bottom\n   */\n  my: {\n    type: 'enum | string',\n    values: marginValues,\n    responsive: true,\n    className: 'rt-r-my',\n    customProperties: ['--mt', '--mb'],\n  },\n  /**\n   * Sets the CSS **margin-top** property.\n   * Supports space scale values, CSS strings, and responsive objects.\n   *\n   * @example\n   * mt=\"4\"\n   * mt=\"100px\"\n   * mt={{ sm: '6', lg: '9' }}\n   *\n   * @link\n   * https://developer.mozilla.org/en-US/docs/Web/CSS/margin-top\n   */\n  mt: {\n    type: 'enum | string',\n    values: marginValues,\n    responsive: true,\n    className: 'rt-r-mt',\n    customProperties: ['--mt'],\n  },\n  /**\n   * Sets the CSS **margin-right** property.\n   * Supports space scale values, CSS strings, and responsive objects.\n   *\n   * @example\n   * mr=\"4\"\n   * mr=\"100px\"\n   * mr={{ sm: '6', lg: '9' }}\n   *\n   * @link\n   * https://developer.mozilla.org/en-US/docs/Web/CSS/margin-right\n   */\n  mr: {\n    type: 'enum | string',\n    values: marginValues,\n    responsive: true,\n    className: 'rt-r-mr',\n    customProperties: ['--mr'],\n  },\n  /**\n   * Sets the CSS **margin-bottom** property.\n   * Supports space scale values, CSS strings, and responsive objects.\n   *\n   * @example\n   * mb=\"4\"\n   * mb=\"100px\"\n   * mb={{ sm: '6', lg: '9' }}\n   *\n   * @link\n   * https://developer.mozilla.org/en-US/docs/Web/CSS/margin-bottom\n   */\n  mb: {\n    type: 'enum | string',\n    values: marginValues,\n    responsive: true,\n    className: 'rt-r-mb',\n    customProperties: ['--mb'],\n  },\n  /**\n   * Sets the CSS **margin-left** property.\n   * Supports space scale values, CSS strings, and responsive objects.\n   *\n   * @example\n   * ml=\"4\"\n   * ml=\"100px\"\n   * ml={{ sm: '6', lg: '9' }}\n   *\n   * @link\n   * https://developer.mozilla.org/en-US/docs/Web/CSS/margin-left\n   */\n  ml: {\n    type: 'enum | string',\n    values: marginValues,\n    responsive: true,\n    className: 'rt-r-ml',\n    customProperties: ['--ml'],\n  },\n} satisfies {\n  m: PropDef<(typeof marginValues)[number]>;\n  mx: PropDef<(typeof marginValues)[number]>;\n  my: PropDef<(typeof marginValues)[number]>;\n  mt: PropDef<(typeof marginValues)[number]>;\n  mr: PropDef<(typeof marginValues)[number]>;\n  mb: PropDef<(typeof marginValues)[number]>;\n  ml: PropDef<(typeof marginValues)[number]>;\n};\n\ntype MarginProps = GetPropDefTypes<typeof marginPropDefs>;\n\nexport { marginPropDefs };\nexport type { MarginProps };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/props/padding.props.ts",
    "content": "import type { GetPropDefTypes, PropDef } from './prop-def.js';\n\nconst paddingValues = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'] as const;\n\nconst paddingPropDefs = {\n  /**\n   * Sets the CSS **padding** property.\n   * Supports space scale values, CSS strings, and responsive objects.\n   *\n   * @example\n   * p=\"4\"\n   * p=\"100px\"\n   * p={{ sm: '6', lg: '9' }}\n   *\n   * @link\n   * https://developer.mozilla.org/en-US/docs/Web/CSS/padding\n   */\n  p: {\n    type: 'enum | string',\n    className: 'rt-r-p',\n    customProperties: ['--p'],\n    values: paddingValues,\n    responsive: true,\n  },\n  /**\n   * Sets the CSS **padding-left** and **padding-right** properties.\n   * Supports space scale values, CSS strings, and responsive objects.\n   *\n   * @example\n   * px=\"4\"\n   * px=\"100px\"\n   * px={{ sm: '6', lg: '9' }}\n   *\n   * @link\n   * https://developer.mozilla.org/en-US/docs/Web/CSS/padding-left\n   * https://developer.mozilla.org/en-US/docs/Web/CSS/padding-right\n   */\n  px: {\n    type: 'enum | string',\n    className: 'rt-r-px',\n    customProperties: ['--pl', '--pr'],\n    values: paddingValues,\n    responsive: true,\n  },\n  /**\n   * Sets the CSS **padding-top** and **padding-bottom** properties.\n   * Supports space scale values, CSS strings, and responsive objects.\n   *\n   * @example\n   * py=\"4\"\n   * py=\"100px\"\n   * py={{ sm: '6', lg: '9' }}\n   *\n   * @link\n   * https://developer.mozilla.org/en-US/docs/Web/CSS/padding-top\n   * https://developer.mozilla.org/en-US/docs/Web/CSS/padding-bottom\n   */\n  py: {\n    type: 'enum | string',\n    className: 'rt-r-py',\n    customProperties: ['--pt', '--pb'],\n    values: paddingValues,\n    responsive: true,\n  },\n  /**\n   * Sets the CSS **padding-top** property.\n   * Supports space scale values, CSS strings, and responsive objects.\n   *\n   * @example\n   * pt=\"4\"\n   * pt=\"100px\"\n   * pt={{ sm: '6', lg: '9' }}\n   *\n   * @link\n   * https://developer.mozilla.org/en-US/docs/Web/CSS/padding-top\n   */\n  pt: {\n    type: 'enum | string',\n    className: 'rt-r-pt',\n    customProperties: ['--pt'],\n    values: paddingValues,\n    responsive: true,\n  },\n  /**\n   * Sets the CSS **padding-right** property.\n   * Supports space scale values, CSS strings, and responsive objects.\n   *\n   * @example\n   * pr=\"4\"\n   * pr=\"100px\"\n   * pr={{ sm: '6', lg: '9' }}\n   *\n   * @link\n   * https://developer.mozilla.org/en-US/docs/Web/CSS/padding-right\n   */\n  pr: {\n    type: 'enum | string',\n    className: 'rt-r-pr',\n    customProperties: ['--pr'],\n    values: paddingValues,\n    responsive: true,\n  },\n  /**\n   * Sets the CSS **padding-bottom** property.\n   * Supports space scale values, CSS strings, and responsive objects.\n   *\n   * @example\n   * pb=\"4\"\n   * pb=\"100px\"\n   * pb={{ sm: '6', lg: '9' }}\n   *\n   * @link\n   * https://developer.mozilla.org/en-US/docs/Web/CSS/padding-bottom\n   */\n  pb: {\n    type: 'enum | string',\n    className: 'rt-r-pb',\n    customProperties: ['--pb'],\n    values: paddingValues,\n    responsive: true,\n  },\n  /**\n   * Sets the CSS **padding-left** property.\n   * Supports space scale values, CSS strings, and responsive objects.\n   *\n   * @example\n   * pl=\"4\"\n   * pl=\"100px\"\n   * pl={{ sm: '6', lg: '9' }}\n   *\n   * @link\n   * https://developer.mozilla.org/en-US/docs/Web/CSS/padding-left\n   */\n  pl: {\n    type: 'enum | string',\n    className: 'rt-r-pl',\n    customProperties: ['--pl'],\n    values: paddingValues,\n    responsive: true,\n  },\n} satisfies {\n  p: PropDef<(typeof paddingValues)[number]>;\n  px: PropDef<(typeof paddingValues)[number]>;\n  py: PropDef<(typeof paddingValues)[number]>;\n  pt: PropDef<(typeof paddingValues)[number]>;\n  pr: PropDef<(typeof paddingValues)[number]>;\n  pb: PropDef<(typeof paddingValues)[number]>;\n  pl: PropDef<(typeof paddingValues)[number]>;\n};\n\ntype PaddingProps = GetPropDefTypes<typeof paddingPropDefs>;\n\nexport { paddingPropDefs };\nexport type { PaddingProps };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/props/prop-def.ts",
    "content": "import type React from 'react';\n\n// Creates a union type of string literals with strings, but retains intellisense for the literals.\n// Union<string, 'foo' | 'bar'> => string | Omit<string, 'foo' | 'bar'>\ntype Union<S = string, T extends string | number = string> = T | Omit<S, T>;\n\nconst breakpointsArray = ['initial', 'xs', 'sm', 'md', 'lg', 'xl'] as const;\nconst breakpoints = new Set(breakpointsArray);\ntype Breakpoint = typeof breakpoints extends Set<infer B> ? B : never;\ntype Responsive<T> = T | Partial<Record<Breakpoint, T>>;\n\ntype BooleanPropDef = {\n  type: 'boolean';\n  default?: boolean;\n  required?: boolean;\n  className?: string;\n};\ntype StringPropDef = {\n  type: 'string';\n  default?: string;\n  required?: boolean;\n};\ntype ReactNodePropDef = {\n  type: 'ReactNode';\n  default?: React.ReactNode;\n  required?: boolean;\n};\ntype EnumPropDef<T> = {\n  type: 'enum';\n  values: readonly T[];\n  default?: T;\n  required?: boolean;\n};\ntype EnumOrStringPropDef<T> = {\n  type: 'enum | string';\n  values: readonly T[];\n  default?: T | string;\n  required?: boolean;\n};\n\ntype NonStylingPropDef = {\n  className?: never;\n  customProperties?: never;\n  parseValue?: never;\n};\n\ntype StylingPropDef = {\n  className: string;\n  parseValue?: (value: string) => string | undefined;\n};\n\ntype ArbitraryStylingPropDef = {\n  className: string;\n  customProperties: `--${string}`[];\n  parseValue?: (value: string) => string | undefined;\n};\n\ntype RegularPropDef<T> =\n  | ReactNodePropDef\n  | BooleanPropDef\n  | (StringPropDef & ArbitraryStylingPropDef)\n  | (StringPropDef & NonStylingPropDef)\n  | (EnumPropDef<T> & StylingPropDef)\n  | (EnumPropDef<T> & NonStylingPropDef)\n  | (EnumOrStringPropDef<T> & ArbitraryStylingPropDef)\n  | (EnumOrStringPropDef<T> & NonStylingPropDef);\ntype ResponsivePropDef<T = any> = RegularPropDef<T> & { responsive: true };\ntype PropDef<T = any> = RegularPropDef<T> | ResponsivePropDef<T>;\n\n// prettier-ignore\ntype GetPropDefType<Def> =\n    Def extends BooleanPropDef ? (Def extends ResponsivePropDef ? Responsive<boolean> : boolean)\n  : Def extends StringPropDef ? (Def extends ResponsivePropDef ? Responsive<string> : string)\n  : Def extends ReactNodePropDef ? (Def extends ResponsivePropDef ? Responsive<React.ReactNode> : React.ReactNode)\n  : Def extends EnumOrStringPropDef<infer Type> ?\n    Def extends ResponsivePropDef<infer Type extends string> ? Responsive<Union<string, Type>> : Type\n  : Def extends EnumPropDef<infer Type> ? (Def extends ResponsivePropDef<infer Type> ? Responsive<Type> : Type)\n  : never;\n\ntype GetPropDefTypes<P> = {\n  [K in keyof P]?: GetPropDefType<P[K]>;\n};\n\nexport { breakpointsArray, breakpoints };\nexport type {\n  PropDef,\n  GetPropDefTypes,\n  ResponsivePropDef,\n  //\n  Breakpoint,\n  Responsive,\n  Union,\n};\n"
  },
  {
    "path": "packages/radix-ui-themes/src/props/radius.prop.ts",
    "content": "import type { PropDef } from './prop-def.js';\n\nconst radii = ['none', 'small', 'medium', 'large', 'full'] as const;\n\nconst radiusPropDef = {\n  radius: {\n    type: 'enum',\n    values: radii,\n    default: undefined,\n  },\n} satisfies {\n  radius: PropDef<(typeof radii)[number]>;\n};\n\nexport { radiusPropDef, radii };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/props/text-align.prop.ts",
    "content": "import type { PropDef } from './prop-def.js';\n\nconst textAlignValues = ['left', 'center', 'right'] as const;\n\nconst textAlignPropDef = {\n  align: {\n    type: 'enum',\n    className: 'rt-r-ta',\n    values: textAlignValues,\n    responsive: true,\n  },\n} satisfies {\n  align: PropDef<(typeof textAlignValues)[number]>;\n};\n\nexport { textAlignPropDef };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/props/text-wrap.prop.ts",
    "content": "import type { PropDef } from './prop-def.js';\n\nconst textWrapValues = ['wrap', 'nowrap', 'pretty', 'balance'] as const;\n\nconst textWrapPropDef = {\n  wrap: {\n    type: 'enum',\n    className: 'rt-r-tw',\n    values: textWrapValues,\n    responsive: true,\n  },\n} satisfies {\n  wrap: PropDef<(typeof textWrapValues)[number]>;\n};\n\nexport { textWrapPropDef };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/props/truncate.prop.ts",
    "content": "import type { PropDef } from './prop-def.js';\n\nconst truncatePropDef = {\n  truncate: {\n    type: 'boolean',\n    className: 'rt-truncate',\n  },\n} satisfies {\n  truncate: PropDef<boolean>;\n};\n\nexport { truncatePropDef };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/props/weight.prop.ts",
    "content": "import type { PropDef } from './prop-def.js';\n\nconst weights = ['light', 'regular', 'medium', 'bold'] as const;\n\nconst weightPropDef = {\n  weight: {\n    type: 'enum',\n    className: 'rt-r-weight',\n    values: weights,\n    responsive: true,\n  },\n} satisfies {\n  weight: PropDef<(typeof weights)[number]>;\n};\n\nexport { weightPropDef };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/props/width.props.ts",
    "content": "import type { GetPropDefTypes, PropDef } from './prop-def.js';\n\nconst widthPropDefs = {\n  /**\n   * Sets the CSS **width** property.\n   * Supports CSS strings and responsive objects.\n   *\n   * @example\n   * width=\"100px\"\n   * width={{ md: '100vw', xl: '1400px' }}\n   *\n   * @link\n   * https://developer.mozilla.org/en-US/docs/Web/CSS/width\n   */\n  width: {\n    type: 'string',\n    className: 'rt-r-w',\n    customProperties: ['--width'],\n    responsive: true,\n  },\n  /**\n   * Sets the CSS **min-width** property.\n   * Supports CSS strings and responsive objects.\n   *\n   * @example\n   * minWidth=\"100px\"\n   * minWidth={{ md: '100vw', xl: '1400px' }}\n   *\n   * @link\n   * https://developer.mozilla.org/en-US/docs/Web/CSS/min-width\n   */\n  minWidth: {\n    type: 'string',\n    className: 'rt-r-min-w',\n    customProperties: ['--min-width'],\n    responsive: true,\n  },\n  /**\n   * Sets the CSS **max-width** property.\n   * Supports CSS strings and responsive objects.\n   *\n   * @example\n   * maxWidth=\"100px\"\n   * maxWidth={{ md: '100vw', xl: '1400px' }}\n   *\n   * @link\n   * https://developer.mozilla.org/en-US/docs/Web/CSS/max-width\n   */\n  maxWidth: {\n    type: 'string',\n    className: 'rt-r-max-w',\n    customProperties: ['--max-width'],\n    responsive: true,\n  },\n} satisfies {\n  width: PropDef<string>;\n  minWidth: PropDef<string>;\n  maxWidth: PropDef<string>;\n};\n\ntype WidthProps = GetPropDefTypes<typeof widthPropDefs>;\n\nexport { widthPropDefs };\nexport type { WidthProps };\n"
  },
  {
    "path": "packages/radix-ui-themes/src/styles/breakpoints.css",
    "content": "@custom-media --xs (min-width: 520px);\n@custom-media --sm (min-width: 768px);\n@custom-media --md (min-width: 1024px);\n@custom-media --lg (min-width: 1280px);\n@custom-media --xl (min-width: 1640px);\n"
  },
  {
    "path": "packages/radix-ui-themes/src/styles/index.css",
    "content": "@import './breakpoints.css';\n@import './tokens/index.css';\n@import '../components/index.css';\n@import './utilities/index.css';\n"
  },
  {
    "path": "packages/radix-ui-themes/src/styles/layout.css",
    "content": "@import './tokens/layout.css';\n@import '../components/layout.css';\n@import './utilities/layout.css';\n"
  },
  {
    "path": "packages/radix-ui-themes/src/styles/tokens/base.css",
    "content": "@import './color.css';\n@import './cursor.css';\n@import './layout.css';\n@import './radius.css';\n@import './shadow.css';\n@import './typography.css';\n"
  },
  {
    "path": "packages/radix-ui-themes/src/styles/tokens/color.css",
    "content": "@import '@radix-ui/colors/black-alpha.css';\n@import '@radix-ui/colors/white-alpha.css';\n\n/* * * * * * * * * * * * * * * * * * * */\n/*                                     */\n/*           Semantic colors           */\n/*                                     */\n/* * * * * * * * * * * * * * * * * * * */\n\n:where(.radix-themes) {\n  --color-background: white;\n  --color-overlay: var(--black-a6);\n  --color-panel-solid: white;\n  --color-panel-translucent: rgba(255, 255, 255, 0.7);\n  --color-surface: rgba(255, 255, 255, 0.85);\n}\n:is(.dark, .dark-theme),\n:is(.dark, .dark-theme) :where(.radix-themes:not(.light, .light-theme)) {\n  --color-background: var(--gray-1);\n  --color-overlay: var(--black-a8);\n  --color-panel-solid: var(--gray-2);\n  --color-panel-translucent: var(--gray-a2);\n  --color-surface: rgba(0, 0, 0, 0.25);\n}\n\n/* * * * * * * * * * * * * * * * * * * */\n/*                                     */\n/*            Transparency             */\n/*                                     */\n/* * * * * * * * * * * * * * * * * * * */\n\n/* Because Chrome is buggy with box-shadow transitions from \"transparent\" keyword and/or RGB color into P3 colors. */\n/* Note: using `:where` here to guarantee that the P3 color will take over regardless of the output rule order. */\n:where(.radix-themes) {\n  --color-transparent: rgb(0 0 0 / 0);\n}\n@supports (color: color(display-p3 1 1 1)) {\n  @media (color-gamut: p3) {\n    .radix-themes {\n      --color-transparent: color(display-p3 0 0 0 / 0);\n    }\n  }\n}\n\n/* * * * * * * * * * * * * * * * * * * */\n/*                                     */\n/*            Color scheme             */\n/*                                     */\n/* * * * * * * * * * * * * * * * * * * */\n\n/*\n * Make sure that forced light/dark appearance also sets corresponding browser colors,\n * like input autofill color and body scrollbar\n */\n.radix-themes:where(.light, .light-theme) {\n  &,\n  :root:where(:has(&[data-is-root-theme='true'])) {\n    color-scheme: light;\n  }\n}\n.radix-themes:where(.dark, .dark-theme) {\n  &,\n  :root:where(:has(&[data-is-root-theme='true'])) {\n    color-scheme: dark;\n  }\n}\n\n/* * * * * * * * * * * * * * * * * * * */\n/*                                     */\n/*   Focus, selection, and autofill    */\n/*                                     */\n/* * * * * * * * * * * * * * * * * * * */\n\n.radix-themes,\n[data-accent-color]:where(:not([data-accent-color=''], [data-accent-color='gray'])) {\n  --focus-1: var(--accent-1);\n  --focus-2: var(--accent-2);\n  --focus-3: var(--accent-3);\n  --focus-4: var(--accent-4);\n  --focus-5: var(--accent-5);\n  --focus-6: var(--accent-6);\n  --focus-7: var(--accent-7);\n  --focus-8: var(--accent-8);\n  --focus-9: var(--accent-9);\n  --focus-10: var(--accent-10);\n  --focus-11: var(--accent-11);\n  --focus-12: var(--accent-12);\n\n  --focus-a1: var(--accent-a1);\n  --focus-a2: var(--accent-a2);\n  --focus-a3: var(--accent-a3);\n  --focus-a4: var(--accent-a4);\n  --focus-a5: var(--accent-a5);\n  --focus-a6: var(--accent-a6);\n  --focus-a7: var(--accent-a7);\n  --focus-a8: var(--accent-a8);\n  --focus-a9: var(--accent-a9);\n  --focus-a10: var(--accent-a10);\n  --focus-a11: var(--accent-a11);\n  --focus-a12: var(--accent-a12);\n}\n\n.radix-themes ::selection {\n  background-color: var(--focus-a5);\n}\n\n/* * * * * * * * * * * * * * * * * * * */\n/*                                     */\n/*         Background and text         */\n/*                                     */\n/* * * * * * * * * * * * * * * * * * * */\n\n.radix-themes {\n  color: var(--gray-12);\n  &:where([data-has-background='true']) {\n    background-color: var(--color-background);\n  }\n}\n\n/* * * * * * * * * * * * * * * * * * * */\n/*                                     */\n/*          Panel background           */\n/*                                     */\n/* * * * * * * * * * * * * * * * * * * */\n\n.radix-themes {\n  &:where([data-panel-background='solid']) {\n    --color-panel: var(--color-panel-solid);\n    --backdrop-filter-panel: none;\n  }\n  &:where([data-panel-background='translucent']) {\n    --color-panel: var(--color-panel-translucent);\n    --backdrop-filter-panel: blur(64px);\n  }\n}\n\n/* * * * * * * * * * * * * * * * * * * */\n/*                                     */\n/*            Accent color             */\n/*                                     */\n/* * * * * * * * * * * * * * * * * * * */\n\n[data-accent-color='amber'] {\n  --accent-1: var(--amber-1);\n  --accent-2: var(--amber-2);\n  --accent-3: var(--amber-3);\n  --accent-4: var(--amber-4);\n  --accent-5: var(--amber-5);\n  --accent-6: var(--amber-6);\n  --accent-7: var(--amber-7);\n  --accent-8: var(--amber-8);\n  --accent-9: var(--amber-9);\n  --accent-10: var(--amber-10);\n  --accent-11: var(--amber-11);\n  --accent-12: var(--amber-12);\n\n  --accent-a1: var(--amber-a1);\n  --accent-a2: var(--amber-a2);\n  --accent-a3: var(--amber-a3);\n  --accent-a4: var(--amber-a4);\n  --accent-a5: var(--amber-a5);\n  --accent-a6: var(--amber-a6);\n  --accent-a7: var(--amber-a7);\n  --accent-a8: var(--amber-a8);\n  --accent-a9: var(--amber-a9);\n  --accent-a10: var(--amber-a10);\n  --accent-a11: var(--amber-a11);\n  --accent-a12: var(--amber-a12);\n\n  --accent-contrast: var(--amber-contrast);\n  --accent-surface: var(--amber-surface);\n  --accent-indicator: var(--amber-indicator);\n  --accent-track: var(--amber-track);\n}\n\n[data-accent-color='blue'] {\n  --accent-1: var(--blue-1);\n  --accent-2: var(--blue-2);\n  --accent-3: var(--blue-3);\n  --accent-4: var(--blue-4);\n  --accent-5: var(--blue-5);\n  --accent-6: var(--blue-6);\n  --accent-7: var(--blue-7);\n  --accent-8: var(--blue-8);\n  --accent-9: var(--blue-9);\n  --accent-10: var(--blue-10);\n  --accent-11: var(--blue-11);\n  --accent-12: var(--blue-12);\n\n  --accent-a1: var(--blue-a1);\n  --accent-a2: var(--blue-a2);\n  --accent-a3: var(--blue-a3);\n  --accent-a4: var(--blue-a4);\n  --accent-a5: var(--blue-a5);\n  --accent-a6: var(--blue-a6);\n  --accent-a7: var(--blue-a7);\n  --accent-a8: var(--blue-a8);\n  --accent-a9: var(--blue-a9);\n  --accent-a10: var(--blue-a10);\n  --accent-a11: var(--blue-a11);\n  --accent-a12: var(--blue-a12);\n\n  --accent-contrast: var(--blue-contrast);\n  --accent-surface: var(--blue-surface);\n  --accent-indicator: var(--blue-indicator);\n  --accent-track: var(--blue-track);\n}\n\n[data-accent-color='bronze'] {\n  --accent-1: var(--bronze-1);\n  --accent-2: var(--bronze-2);\n  --accent-3: var(--bronze-3);\n  --accent-4: var(--bronze-4);\n  --accent-5: var(--bronze-5);\n  --accent-6: var(--bronze-6);\n  --accent-7: var(--bronze-7);\n  --accent-8: var(--bronze-8);\n  --accent-9: var(--bronze-9);\n  --accent-10: var(--bronze-10);\n  --accent-11: var(--bronze-11);\n  --accent-12: var(--bronze-12);\n\n  --accent-a1: var(--bronze-a1);\n  --accent-a2: var(--bronze-a2);\n  --accent-a3: var(--bronze-a3);\n  --accent-a4: var(--bronze-a4);\n  --accent-a5: var(--bronze-a5);\n  --accent-a6: var(--bronze-a6);\n  --accent-a7: var(--bronze-a7);\n  --accent-a8: var(--bronze-a8);\n  --accent-a9: var(--bronze-a9);\n  --accent-a10: var(--bronze-a10);\n  --accent-a11: var(--bronze-a11);\n  --accent-a12: var(--bronze-a12);\n\n  --accent-contrast: var(--bronze-contrast);\n  --accent-surface: var(--bronze-surface);\n  --accent-indicator: var(--bronze-indicator);\n  --accent-track: var(--bronze-track);\n}\n\n[data-accent-color='brown'] {\n  --accent-1: var(--brown-1);\n  --accent-2: var(--brown-2);\n  --accent-3: var(--brown-3);\n  --accent-4: var(--brown-4);\n  --accent-5: var(--brown-5);\n  --accent-6: var(--brown-6);\n  --accent-7: var(--brown-7);\n  --accent-8: var(--brown-8);\n  --accent-9: var(--brown-9);\n  --accent-10: var(--brown-10);\n  --accent-11: var(--brown-11);\n  --accent-12: var(--brown-12);\n\n  --accent-a1: var(--brown-a1);\n  --accent-a2: var(--brown-a2);\n  --accent-a3: var(--brown-a3);\n  --accent-a4: var(--brown-a4);\n  --accent-a5: var(--brown-a5);\n  --accent-a6: var(--brown-a6);\n  --accent-a7: var(--brown-a7);\n  --accent-a8: var(--brown-a8);\n  --accent-a9: var(--brown-a9);\n  --accent-a10: var(--brown-a10);\n  --accent-a11: var(--brown-a11);\n  --accent-a12: var(--brown-a12);\n\n  --accent-contrast: var(--brown-contrast);\n  --accent-surface: var(--brown-surface);\n  --accent-indicator: var(--brown-indicator);\n  --accent-track: var(--brown-track);\n}\n\n[data-accent-color='crimson'] {\n  --accent-1: var(--crimson-1);\n  --accent-2: var(--crimson-2);\n  --accent-3: var(--crimson-3);\n  --accent-4: var(--crimson-4);\n  --accent-5: var(--crimson-5);\n  --accent-6: var(--crimson-6);\n  --accent-7: var(--crimson-7);\n  --accent-8: var(--crimson-8);\n  --accent-9: var(--crimson-9);\n  --accent-10: var(--crimson-10);\n  --accent-11: var(--crimson-11);\n  --accent-12: var(--crimson-12);\n\n  --accent-a1: var(--crimson-a1);\n  --accent-a2: var(--crimson-a2);\n  --accent-a3: var(--crimson-a3);\n  --accent-a4: var(--crimson-a4);\n  --accent-a5: var(--crimson-a5);\n  --accent-a6: var(--crimson-a6);\n  --accent-a7: var(--crimson-a7);\n  --accent-a8: var(--crimson-a8);\n  --accent-a9: var(--crimson-a9);\n  --accent-a10: var(--crimson-a10);\n  --accent-a11: var(--crimson-a11);\n  --accent-a12: var(--crimson-a12);\n\n  --accent-contrast: var(--crimson-contrast);\n  --accent-surface: var(--crimson-surface);\n  --accent-indicator: var(--crimson-indicator);\n  --accent-track: var(--crimson-track);\n}\n\n[data-accent-color='cyan'] {\n  --accent-1: var(--cyan-1);\n  --accent-2: var(--cyan-2);\n  --accent-3: var(--cyan-3);\n  --accent-4: var(--cyan-4);\n  --accent-5: var(--cyan-5);\n  --accent-6: var(--cyan-6);\n  --accent-7: var(--cyan-7);\n  --accent-8: var(--cyan-8);\n  --accent-9: var(--cyan-9);\n  --accent-10: var(--cyan-10);\n  --accent-11: var(--cyan-11);\n  --accent-12: var(--cyan-12);\n\n  --accent-a1: var(--cyan-a1);\n  --accent-a2: var(--cyan-a2);\n  --accent-a3: var(--cyan-a3);\n  --accent-a4: var(--cyan-a4);\n  --accent-a5: var(--cyan-a5);\n  --accent-a6: var(--cyan-a6);\n  --accent-a7: var(--cyan-a7);\n  --accent-a8: var(--cyan-a8);\n  --accent-a9: var(--cyan-a9);\n  --accent-a10: var(--cyan-a10);\n  --accent-a11: var(--cyan-a11);\n  --accent-a12: var(--cyan-a12);\n\n  --accent-contrast: var(--cyan-contrast);\n  --accent-surface: var(--cyan-surface);\n  --accent-indicator: var(--cyan-indicator);\n  --accent-track: var(--cyan-track);\n}\n\n[data-accent-color='gold'] {\n  --accent-1: var(--gold-1);\n  --accent-2: var(--gold-2);\n  --accent-3: var(--gold-3);\n  --accent-4: var(--gold-4);\n  --accent-5: var(--gold-5);\n  --accent-6: var(--gold-6);\n  --accent-7: var(--gold-7);\n  --accent-8: var(--gold-8);\n  --accent-9: var(--gold-9);\n  --accent-10: var(--gold-10);\n  --accent-11: var(--gold-11);\n  --accent-12: var(--gold-12);\n\n  --accent-a1: var(--gold-a1);\n  --accent-a2: var(--gold-a2);\n  --accent-a3: var(--gold-a3);\n  --accent-a4: var(--gold-a4);\n  --accent-a5: var(--gold-a5);\n  --accent-a6: var(--gold-a6);\n  --accent-a7: var(--gold-a7);\n  --accent-a8: var(--gold-a8);\n  --accent-a9: var(--gold-a9);\n  --accent-a10: var(--gold-a10);\n  --accent-a11: var(--gold-a11);\n  --accent-a12: var(--gold-a12);\n\n  --accent-contrast: var(--gold-contrast);\n  --accent-surface: var(--gold-surface);\n  --accent-indicator: var(--gold-indicator);\n  --accent-track: var(--gold-track);\n}\n\n[data-accent-color='grass'] {\n  --accent-1: var(--grass-1);\n  --accent-2: var(--grass-2);\n  --accent-3: var(--grass-3);\n  --accent-4: var(--grass-4);\n  --accent-5: var(--grass-5);\n  --accent-6: var(--grass-6);\n  --accent-7: var(--grass-7);\n  --accent-8: var(--grass-8);\n  --accent-9: var(--grass-9);\n  --accent-10: var(--grass-10);\n  --accent-11: var(--grass-11);\n  --accent-12: var(--grass-12);\n\n  --accent-a1: var(--grass-a1);\n  --accent-a2: var(--grass-a2);\n  --accent-a3: var(--grass-a3);\n  --accent-a4: var(--grass-a4);\n  --accent-a5: var(--grass-a5);\n  --accent-a6: var(--grass-a6);\n  --accent-a7: var(--grass-a7);\n  --accent-a8: var(--grass-a8);\n  --accent-a9: var(--grass-a9);\n  --accent-a10: var(--grass-a10);\n  --accent-a11: var(--grass-a11);\n  --accent-a12: var(--grass-a12);\n\n  --accent-contrast: var(--grass-contrast);\n  --accent-surface: var(--grass-surface);\n  --accent-indicator: var(--grass-indicator);\n  --accent-track: var(--grass-track);\n}\n\n[data-accent-color='gray'] {\n  --accent-1: var(--gray-1);\n  --accent-2: var(--gray-2);\n  --accent-3: var(--gray-3);\n  --accent-4: var(--gray-4);\n  --accent-5: var(--gray-5);\n  --accent-6: var(--gray-6);\n  --accent-7: var(--gray-7);\n  --accent-8: var(--gray-8);\n  --accent-9: var(--gray-9);\n  --accent-10: var(--gray-10);\n  --accent-11: var(--gray-11);\n  --accent-12: var(--gray-12);\n\n  --accent-a1: var(--gray-a1);\n  --accent-a2: var(--gray-a2);\n  --accent-a3: var(--gray-a3);\n  --accent-a4: var(--gray-a4);\n  --accent-a5: var(--gray-a5);\n  --accent-a6: var(--gray-a6);\n  --accent-a7: var(--gray-a7);\n  --accent-a8: var(--gray-a8);\n  --accent-a9: var(--gray-a9);\n  --accent-a10: var(--gray-a10);\n  --accent-a11: var(--gray-a11);\n  --accent-a12: var(--gray-a12);\n\n  --accent-contrast: var(--gray-contrast);\n  --accent-surface: var(--gray-surface);\n  --accent-indicator: var(--gray-indicator);\n  --accent-track: var(--gray-track);\n}\n\n[data-accent-color='green'] {\n  --accent-1: var(--green-1);\n  --accent-2: var(--green-2);\n  --accent-3: var(--green-3);\n  --accent-4: var(--green-4);\n  --accent-5: var(--green-5);\n  --accent-6: var(--green-6);\n  --accent-7: var(--green-7);\n  --accent-8: var(--green-8);\n  --accent-9: var(--green-9);\n  --accent-10: var(--green-10);\n  --accent-11: var(--green-11);\n  --accent-12: var(--green-12);\n\n  --accent-a1: var(--green-a1);\n  --accent-a2: var(--green-a2);\n  --accent-a3: var(--green-a3);\n  --accent-a4: var(--green-a4);\n  --accent-a5: var(--green-a5);\n  --accent-a6: var(--green-a6);\n  --accent-a7: var(--green-a7);\n  --accent-a8: var(--green-a8);\n  --accent-a9: var(--green-a9);\n  --accent-a10: var(--green-a10);\n  --accent-a11: var(--green-a11);\n  --accent-a12: var(--green-a12);\n\n  --accent-contrast: var(--green-contrast);\n  --accent-surface: var(--green-surface);\n  --accent-indicator: var(--green-indicator);\n  --accent-track: var(--green-track);\n}\n\n[data-accent-color='indigo'] {\n  --accent-1: var(--indigo-1);\n  --accent-2: var(--indigo-2);\n  --accent-3: var(--indigo-3);\n  --accent-4: var(--indigo-4);\n  --accent-5: var(--indigo-5);\n  --accent-6: var(--indigo-6);\n  --accent-7: var(--indigo-7);\n  --accent-8: var(--indigo-8);\n  --accent-9: var(--indigo-9);\n  --accent-10: var(--indigo-10);\n  --accent-11: var(--indigo-11);\n  --accent-12: var(--indigo-12);\n\n  --accent-a1: var(--indigo-a1);\n  --accent-a2: var(--indigo-a2);\n  --accent-a3: var(--indigo-a3);\n  --accent-a4: var(--indigo-a4);\n  --accent-a5: var(--indigo-a5);\n  --accent-a6: var(--indigo-a6);\n  --accent-a7: var(--indigo-a7);\n  --accent-a8: var(--indigo-a8);\n  --accent-a9: var(--indigo-a9);\n  --accent-a10: var(--indigo-a10);\n  --accent-a11: var(--indigo-a11);\n  --accent-a12: var(--indigo-a12);\n\n  --accent-contrast: var(--indigo-contrast);\n  --accent-surface: var(--indigo-surface);\n  --accent-indicator: var(--indigo-indicator);\n  --accent-track: var(--indigo-track);\n}\n\n[data-accent-color='iris'] {\n  --accent-1: var(--iris-1);\n  --accent-2: var(--iris-2);\n  --accent-3: var(--iris-3);\n  --accent-4: var(--iris-4);\n  --accent-5: var(--iris-5);\n  --accent-6: var(--iris-6);\n  --accent-7: var(--iris-7);\n  --accent-8: var(--iris-8);\n  --accent-9: var(--iris-9);\n  --accent-10: var(--iris-10);\n  --accent-11: var(--iris-11);\n  --accent-12: var(--iris-12);\n\n  --accent-a1: var(--iris-a1);\n  --accent-a2: var(--iris-a2);\n  --accent-a3: var(--iris-a3);\n  --accent-a4: var(--iris-a4);\n  --accent-a5: var(--iris-a5);\n  --accent-a6: var(--iris-a6);\n  --accent-a7: var(--iris-a7);\n  --accent-a8: var(--iris-a8);\n  --accent-a9: var(--iris-a9);\n  --accent-a10: var(--iris-a10);\n  --accent-a11: var(--iris-a11);\n  --accent-a12: var(--iris-a12);\n\n  --accent-contrast: var(--iris-contrast);\n  --accent-surface: var(--iris-surface);\n  --accent-indicator: var(--iris-indicator);\n  --accent-track: var(--iris-track);\n}\n\n[data-accent-color='jade'] {\n  --accent-1: var(--jade-1);\n  --accent-2: var(--jade-2);\n  --accent-3: var(--jade-3);\n  --accent-4: var(--jade-4);\n  --accent-5: var(--jade-5);\n  --accent-6: var(--jade-6);\n  --accent-7: var(--jade-7);\n  --accent-8: var(--jade-8);\n  --accent-9: var(--jade-9);\n  --accent-10: var(--jade-10);\n  --accent-11: var(--jade-11);\n  --accent-12: var(--jade-12);\n\n  --accent-a1: var(--jade-a1);\n  --accent-a2: var(--jade-a2);\n  --accent-a3: var(--jade-a3);\n  --accent-a4: var(--jade-a4);\n  --accent-a5: var(--jade-a5);\n  --accent-a6: var(--jade-a6);\n  --accent-a7: var(--jade-a7);\n  --accent-a8: var(--jade-a8);\n  --accent-a9: var(--jade-a9);\n  --accent-a10: var(--jade-a10);\n  --accent-a11: var(--jade-a11);\n  --accent-a12: var(--jade-a12);\n\n  --accent-contrast: var(--jade-contrast);\n  --accent-surface: var(--jade-surface);\n  --accent-indicator: var(--jade-indicator);\n  --accent-track: var(--jade-track);\n}\n\n[data-accent-color='lime'] {\n  --accent-1: var(--lime-1);\n  --accent-2: var(--lime-2);\n  --accent-3: var(--lime-3);\n  --accent-4: var(--lime-4);\n  --accent-5: var(--lime-5);\n  --accent-6: var(--lime-6);\n  --accent-7: var(--lime-7);\n  --accent-8: var(--lime-8);\n  --accent-9: var(--lime-9);\n  --accent-10: var(--lime-10);\n  --accent-11: var(--lime-11);\n  --accent-12: var(--lime-12);\n\n  --accent-a1: var(--lime-a1);\n  --accent-a2: var(--lime-a2);\n  --accent-a3: var(--lime-a3);\n  --accent-a4: var(--lime-a4);\n  --accent-a5: var(--lime-a5);\n  --accent-a6: var(--lime-a6);\n  --accent-a7: var(--lime-a7);\n  --accent-a8: var(--lime-a8);\n  --accent-a9: var(--lime-a9);\n  --accent-a10: var(--lime-a10);\n  --accent-a11: var(--lime-a11);\n  --accent-a12: var(--lime-a12);\n\n  --accent-contrast: var(--lime-contrast);\n  --accent-surface: var(--lime-surface);\n  --accent-indicator: var(--lime-indicator);\n  --accent-track: var(--lime-track);\n}\n\n[data-accent-color='mint'] {\n  --accent-1: var(--mint-1);\n  --accent-2: var(--mint-2);\n  --accent-3: var(--mint-3);\n  --accent-4: var(--mint-4);\n  --accent-5: var(--mint-5);\n  --accent-6: var(--mint-6);\n  --accent-7: var(--mint-7);\n  --accent-8: var(--mint-8);\n  --accent-9: var(--mint-9);\n  --accent-10: var(--mint-10);\n  --accent-11: var(--mint-11);\n  --accent-12: var(--mint-12);\n\n  --accent-a1: var(--mint-a1);\n  --accent-a2: var(--mint-a2);\n  --accent-a3: var(--mint-a3);\n  --accent-a4: var(--mint-a4);\n  --accent-a5: var(--mint-a5);\n  --accent-a6: var(--mint-a6);\n  --accent-a7: var(--mint-a7);\n  --accent-a8: var(--mint-a8);\n  --accent-a9: var(--mint-a9);\n  --accent-a10: var(--mint-a10);\n  --accent-a11: var(--mint-a11);\n  --accent-a12: var(--mint-a12);\n\n  --accent-contrast: var(--mint-contrast);\n  --accent-surface: var(--mint-surface);\n  --accent-indicator: var(--mint-indicator);\n  --accent-track: var(--mint-track);\n}\n\n[data-accent-color='orange'] {\n  --accent-1: var(--orange-1);\n  --accent-2: var(--orange-2);\n  --accent-3: var(--orange-3);\n  --accent-4: var(--orange-4);\n  --accent-5: var(--orange-5);\n  --accent-6: var(--orange-6);\n  --accent-7: var(--orange-7);\n  --accent-8: var(--orange-8);\n  --accent-9: var(--orange-9);\n  --accent-10: var(--orange-10);\n  --accent-11: var(--orange-11);\n  --accent-12: var(--orange-12);\n\n  --accent-a1: var(--orange-a1);\n  --accent-a2: var(--orange-a2);\n  --accent-a3: var(--orange-a3);\n  --accent-a4: var(--orange-a4);\n  --accent-a5: var(--orange-a5);\n  --accent-a6: var(--orange-a6);\n  --accent-a7: var(--orange-a7);\n  --accent-a8: var(--orange-a8);\n  --accent-a9: var(--orange-a9);\n  --accent-a10: var(--orange-a10);\n  --accent-a11: var(--orange-a11);\n  --accent-a12: var(--orange-a12);\n\n  --accent-contrast: var(--orange-contrast);\n  --accent-surface: var(--orange-surface);\n  --accent-indicator: var(--orange-indicator);\n  --accent-track: var(--orange-track);\n}\n\n[data-accent-color='pink'] {\n  --accent-1: var(--pink-1);\n  --accent-2: var(--pink-2);\n  --accent-3: var(--pink-3);\n  --accent-4: var(--pink-4);\n  --accent-5: var(--pink-5);\n  --accent-6: var(--pink-6);\n  --accent-7: var(--pink-7);\n  --accent-8: var(--pink-8);\n  --accent-9: var(--pink-9);\n  --accent-10: var(--pink-10);\n  --accent-11: var(--pink-11);\n  --accent-12: var(--pink-12);\n\n  --accent-a1: var(--pink-a1);\n  --accent-a2: var(--pink-a2);\n  --accent-a3: var(--pink-a3);\n  --accent-a4: var(--pink-a4);\n  --accent-a5: var(--pink-a5);\n  --accent-a6: var(--pink-a6);\n  --accent-a7: var(--pink-a7);\n  --accent-a8: var(--pink-a8);\n  --accent-a9: var(--pink-a9);\n  --accent-a10: var(--pink-a10);\n  --accent-a11: var(--pink-a11);\n  --accent-a12: var(--pink-a12);\n\n  --accent-contrast: var(--pink-contrast);\n  --accent-surface: var(--pink-surface);\n  --accent-indicator: var(--pink-indicator);\n  --accent-track: var(--pink-track);\n}\n\n[data-accent-color='plum'] {\n  --accent-1: var(--plum-1);\n  --accent-2: var(--plum-2);\n  --accent-3: var(--plum-3);\n  --accent-4: var(--plum-4);\n  --accent-5: var(--plum-5);\n  --accent-6: var(--plum-6);\n  --accent-7: var(--plum-7);\n  --accent-8: var(--plum-8);\n  --accent-9: var(--plum-9);\n  --accent-10: var(--plum-10);\n  --accent-11: var(--plum-11);\n  --accent-12: var(--plum-12);\n\n  --accent-a1: var(--plum-a1);\n  --accent-a2: var(--plum-a2);\n  --accent-a3: var(--plum-a3);\n  --accent-a4: var(--plum-a4);\n  --accent-a5: var(--plum-a5);\n  --accent-a6: var(--plum-a6);\n  --accent-a7: var(--plum-a7);\n  --accent-a8: var(--plum-a8);\n  --accent-a9: var(--plum-a9);\n  --accent-a10: var(--plum-a10);\n  --accent-a11: var(--plum-a11);\n  --accent-a12: var(--plum-a12);\n\n  --accent-contrast: var(--plum-contrast);\n  --accent-surface: var(--plum-surface);\n  --accent-indicator: var(--plum-indicator);\n  --accent-track: var(--plum-track);\n}\n\n[data-accent-color='purple'] {\n  --accent-1: var(--purple-1);\n  --accent-2: var(--purple-2);\n  --accent-3: var(--purple-3);\n  --accent-4: var(--purple-4);\n  --accent-5: var(--purple-5);\n  --accent-6: var(--purple-6);\n  --accent-7: var(--purple-7);\n  --accent-8: var(--purple-8);\n  --accent-9: var(--purple-9);\n  --accent-10: var(--purple-10);\n  --accent-11: var(--purple-11);\n  --accent-12: var(--purple-12);\n\n  --accent-a1: var(--purple-a1);\n  --accent-a2: var(--purple-a2);\n  --accent-a3: var(--purple-a3);\n  --accent-a4: var(--purple-a4);\n  --accent-a5: var(--purple-a5);\n  --accent-a6: var(--purple-a6);\n  --accent-a7: var(--purple-a7);\n  --accent-a8: var(--purple-a8);\n  --accent-a9: var(--purple-a9);\n  --accent-a10: var(--purple-a10);\n  --accent-a11: var(--purple-a11);\n  --accent-a12: var(--purple-a12);\n\n  --accent-contrast: var(--purple-contrast);\n  --accent-surface: var(--purple-surface);\n  --accent-indicator: var(--purple-indicator);\n  --accent-track: var(--purple-track);\n}\n\n[data-accent-color='red'] {\n  --accent-1: var(--red-1);\n  --accent-2: var(--red-2);\n  --accent-3: var(--red-3);\n  --accent-4: var(--red-4);\n  --accent-5: var(--red-5);\n  --accent-6: var(--red-6);\n  --accent-7: var(--red-7);\n  --accent-8: var(--red-8);\n  --accent-9: var(--red-9);\n  --accent-10: var(--red-10);\n  --accent-11: var(--red-11);\n  --accent-12: var(--red-12);\n\n  --accent-a1: var(--red-a1);\n  --accent-a2: var(--red-a2);\n  --accent-a3: var(--red-a3);\n  --accent-a4: var(--red-a4);\n  --accent-a5: var(--red-a5);\n  --accent-a6: var(--red-a6);\n  --accent-a7: var(--red-a7);\n  --accent-a8: var(--red-a8);\n  --accent-a9: var(--red-a9);\n  --accent-a10: var(--red-a10);\n  --accent-a11: var(--red-a11);\n  --accent-a12: var(--red-a12);\n\n  --accent-contrast: var(--red-contrast);\n  --accent-surface: var(--red-surface);\n  --accent-indicator: var(--red-indicator);\n  --accent-track: var(--red-track);\n}\n\n[data-accent-color='ruby'] {\n  --accent-1: var(--ruby-1);\n  --accent-2: var(--ruby-2);\n  --accent-3: var(--ruby-3);\n  --accent-4: var(--ruby-4);\n  --accent-5: var(--ruby-5);\n  --accent-6: var(--ruby-6);\n  --accent-7: var(--ruby-7);\n  --accent-8: var(--ruby-8);\n  --accent-9: var(--ruby-9);\n  --accent-10: var(--ruby-10);\n  --accent-11: var(--ruby-11);\n  --accent-12: var(--ruby-12);\n\n  --accent-a1: var(--ruby-a1);\n  --accent-a2: var(--ruby-a2);\n  --accent-a3: var(--ruby-a3);\n  --accent-a4: var(--ruby-a4);\n  --accent-a5: var(--ruby-a5);\n  --accent-a6: var(--ruby-a6);\n  --accent-a7: var(--ruby-a7);\n  --accent-a8: var(--ruby-a8);\n  --accent-a9: var(--ruby-a9);\n  --accent-a10: var(--ruby-a10);\n  --accent-a11: var(--ruby-a11);\n  --accent-a12: var(--ruby-a12);\n\n  --accent-contrast: var(--ruby-contrast);\n  --accent-surface: var(--ruby-surface);\n  --accent-indicator: var(--ruby-indicator);\n  --accent-track: var(--ruby-track);\n}\n\n[data-accent-color='sky'] {\n  --accent-1: var(--sky-1);\n  --accent-2: var(--sky-2);\n  --accent-3: var(--sky-3);\n  --accent-4: var(--sky-4);\n  --accent-5: var(--sky-5);\n  --accent-6: var(--sky-6);\n  --accent-7: var(--sky-7);\n  --accent-8: var(--sky-8);\n  --accent-9: var(--sky-9);\n  --accent-10: var(--sky-10);\n  --accent-11: var(--sky-11);\n  --accent-12: var(--sky-12);\n\n  --accent-a1: var(--sky-a1);\n  --accent-a2: var(--sky-a2);\n  --accent-a3: var(--sky-a3);\n  --accent-a4: var(--sky-a4);\n  --accent-a5: var(--sky-a5);\n  --accent-a6: var(--sky-a6);\n  --accent-a7: var(--sky-a7);\n  --accent-a8: var(--sky-a8);\n  --accent-a9: var(--sky-a9);\n  --accent-a10: var(--sky-a10);\n  --accent-a11: var(--sky-a11);\n  --accent-a12: var(--sky-a12);\n\n  --accent-contrast: var(--sky-contrast);\n  --accent-surface: var(--sky-surface);\n  --accent-indicator: var(--sky-indicator);\n  --accent-track: var(--sky-track);\n}\n\n[data-accent-color='teal'] {\n  --accent-1: var(--teal-1);\n  --accent-2: var(--teal-2);\n  --accent-3: var(--teal-3);\n  --accent-4: var(--teal-4);\n  --accent-5: var(--teal-5);\n  --accent-6: var(--teal-6);\n  --accent-7: var(--teal-7);\n  --accent-8: var(--teal-8);\n  --accent-9: var(--teal-9);\n  --accent-10: var(--teal-10);\n  --accent-11: var(--teal-11);\n  --accent-12: var(--teal-12);\n\n  --accent-a1: var(--teal-a1);\n  --accent-a2: var(--teal-a2);\n  --accent-a3: var(--teal-a3);\n  --accent-a4: var(--teal-a4);\n  --accent-a5: var(--teal-a5);\n  --accent-a6: var(--teal-a6);\n  --accent-a7: var(--teal-a7);\n  --accent-a8: var(--teal-a8);\n  --accent-a9: var(--teal-a9);\n  --accent-a10: var(--teal-a10);\n  --accent-a11: var(--teal-a11);\n  --accent-a12: var(--teal-a12);\n\n  --accent-contrast: var(--teal-contrast);\n  --accent-surface: var(--teal-surface);\n  --accent-indicator: var(--teal-indicator);\n  --accent-track: var(--teal-track);\n}\n\n[data-accent-color='tomato'] {\n  --accent-1: var(--tomato-1);\n  --accent-2: var(--tomato-2);\n  --accent-3: var(--tomato-3);\n  --accent-4: var(--tomato-4);\n  --accent-5: var(--tomato-5);\n  --accent-6: var(--tomato-6);\n  --accent-7: var(--tomato-7);\n  --accent-8: var(--tomato-8);\n  --accent-9: var(--tomato-9);\n  --accent-10: var(--tomato-10);\n  --accent-11: var(--tomato-11);\n  --accent-12: var(--tomato-12);\n\n  --accent-a1: var(--tomato-a1);\n  --accent-a2: var(--tomato-a2);\n  --accent-a3: var(--tomato-a3);\n  --accent-a4: var(--tomato-a4);\n  --accent-a5: var(--tomato-a5);\n  --accent-a6: var(--tomato-a6);\n  --accent-a7: var(--tomato-a7);\n  --accent-a8: var(--tomato-a8);\n  --accent-a9: var(--tomato-a9);\n  --accent-a10: var(--tomato-a10);\n  --accent-a11: var(--tomato-a11);\n  --accent-a12: var(--tomato-a12);\n\n  --accent-contrast: var(--tomato-contrast);\n  --accent-surface: var(--tomato-surface);\n  --accent-indicator: var(--tomato-indicator);\n  --accent-track: var(--tomato-track);\n}\n\n[data-accent-color='violet'] {\n  --accent-1: var(--violet-1);\n  --accent-2: var(--violet-2);\n  --accent-3: var(--violet-3);\n  --accent-4: var(--violet-4);\n  --accent-5: var(--violet-5);\n  --accent-6: var(--violet-6);\n  --accent-7: var(--violet-7);\n  --accent-8: var(--violet-8);\n  --accent-9: var(--violet-9);\n  --accent-10: var(--violet-10);\n  --accent-11: var(--violet-11);\n  --accent-12: var(--violet-12);\n\n  --accent-a1: var(--violet-a1);\n  --accent-a2: var(--violet-a2);\n  --accent-a3: var(--violet-a3);\n  --accent-a4: var(--violet-a4);\n  --accent-a5: var(--violet-a5);\n  --accent-a6: var(--violet-a6);\n  --accent-a7: var(--violet-a7);\n  --accent-a8: var(--violet-a8);\n  --accent-a9: var(--violet-a9);\n  --accent-a10: var(--violet-a10);\n  --accent-a11: var(--violet-a11);\n  --accent-a12: var(--violet-a12);\n\n  --accent-contrast: var(--violet-contrast);\n  --accent-surface: var(--violet-surface);\n  --accent-indicator: var(--violet-indicator);\n  --accent-track: var(--violet-track);\n}\n\n[data-accent-color='yellow'] {\n  --accent-1: var(--yellow-1);\n  --accent-2: var(--yellow-2);\n  --accent-3: var(--yellow-3);\n  --accent-4: var(--yellow-4);\n  --accent-5: var(--yellow-5);\n  --accent-6: var(--yellow-6);\n  --accent-7: var(--yellow-7);\n  --accent-8: var(--yellow-8);\n  --accent-9: var(--yellow-9);\n  --accent-10: var(--yellow-10);\n  --accent-11: var(--yellow-11);\n  --accent-12: var(--yellow-12);\n\n  --accent-a1: var(--yellow-a1);\n  --accent-a2: var(--yellow-a2);\n  --accent-a3: var(--yellow-a3);\n  --accent-a4: var(--yellow-a4);\n  --accent-a5: var(--yellow-a5);\n  --accent-a6: var(--yellow-a6);\n  --accent-a7: var(--yellow-a7);\n  --accent-a8: var(--yellow-a8);\n  --accent-a9: var(--yellow-a9);\n  --accent-a10: var(--yellow-a10);\n  --accent-a11: var(--yellow-a11);\n  --accent-a12: var(--yellow-a12);\n\n  --accent-contrast: var(--yellow-contrast);\n  --accent-surface: var(--yellow-surface);\n  --accent-indicator: var(--yellow-indicator);\n  --accent-track: var(--yellow-track);\n}\n\n/* * * * * * * * * * * * * * * * * * * */\n/*                                     */\n/*             Gray color              */\n/*                                     */\n/* * * * * * * * * * * * * * * * * * * */\n\n.radix-themes {\n  &:where([data-gray-color='mauve']) {\n    --gray-1: var(--mauve-1);\n    --gray-2: var(--mauve-2);\n    --gray-3: var(--mauve-3);\n    --gray-4: var(--mauve-4);\n    --gray-5: var(--mauve-5);\n    --gray-6: var(--mauve-6);\n    --gray-7: var(--mauve-7);\n    --gray-8: var(--mauve-8);\n    --gray-9: var(--mauve-9);\n    --gray-10: var(--mauve-10);\n    --gray-11: var(--mauve-11);\n    --gray-12: var(--mauve-12);\n\n    --gray-a1: var(--mauve-a1);\n    --gray-a2: var(--mauve-a2);\n    --gray-a3: var(--mauve-a3);\n    --gray-a4: var(--mauve-a4);\n    --gray-a5: var(--mauve-a5);\n    --gray-a6: var(--mauve-a6);\n    --gray-a7: var(--mauve-a7);\n    --gray-a8: var(--mauve-a8);\n    --gray-a9: var(--mauve-a9);\n    --gray-a10: var(--mauve-a10);\n    --gray-a11: var(--mauve-a11);\n    --gray-a12: var(--mauve-a12);\n\n    --gray-contrast: var(--mauve-contrast);\n    --gray-surface: var(--mauve-surface);\n    --gray-indicator: var(--mauve-indicator);\n    --gray-track: var(--mauve-track);\n  }\n\n  &:where([data-gray-color='olive']) {\n    --gray-1: var(--olive-1);\n    --gray-2: var(--olive-2);\n    --gray-3: var(--olive-3);\n    --gray-4: var(--olive-4);\n    --gray-5: var(--olive-5);\n    --gray-6: var(--olive-6);\n    --gray-7: var(--olive-7);\n    --gray-8: var(--olive-8);\n    --gray-9: var(--olive-9);\n    --gray-10: var(--olive-10);\n    --gray-11: var(--olive-11);\n    --gray-12: var(--olive-12);\n\n    --gray-a1: var(--olive-a1);\n    --gray-a2: var(--olive-a2);\n    --gray-a3: var(--olive-a3);\n    --gray-a4: var(--olive-a4);\n    --gray-a5: var(--olive-a5);\n    --gray-a6: var(--olive-a6);\n    --gray-a7: var(--olive-a7);\n    --gray-a8: var(--olive-a8);\n    --gray-a9: var(--olive-a9);\n    --gray-a10: var(--olive-a10);\n    --gray-a11: var(--olive-a11);\n    --gray-a12: var(--olive-a12);\n\n    --gray-contrast: var(--olive-contrast);\n    --gray-surface: var(--olive-surface);\n    --gray-indicator: var(--olive-indicator);\n    --gray-track: var(--olive-track);\n  }\n\n  &:where([data-gray-color='sage']) {\n    --gray-1: var(--sage-1);\n    --gray-2: var(--sage-2);\n    --gray-3: var(--sage-3);\n    --gray-4: var(--sage-4);\n    --gray-5: var(--sage-5);\n    --gray-6: var(--sage-6);\n    --gray-7: var(--sage-7);\n    --gray-8: var(--sage-8);\n    --gray-9: var(--sage-9);\n    --gray-10: var(--sage-10);\n    --gray-11: var(--sage-11);\n    --gray-12: var(--sage-12);\n\n    --gray-a1: var(--sage-a1);\n    --gray-a2: var(--sage-a2);\n    --gray-a3: var(--sage-a3);\n    --gray-a4: var(--sage-a4);\n    --gray-a5: var(--sage-a5);\n    --gray-a6: var(--sage-a6);\n    --gray-a7: var(--sage-a7);\n    --gray-a8: var(--sage-a8);\n    --gray-a9: var(--sage-a9);\n    --gray-a10: var(--sage-a10);\n    --gray-a11: var(--sage-a11);\n    --gray-a12: var(--sage-a12);\n\n    --gray-contrast: var(--sage-contrast);\n    --gray-surface: var(--sage-surface);\n    --gray-indicator: var(--sage-indicator);\n    --gray-track: var(--sage-track);\n  }\n\n  &:where([data-gray-color='sand']) {\n    --gray-1: var(--sand-1);\n    --gray-2: var(--sand-2);\n    --gray-3: var(--sand-3);\n    --gray-4: var(--sand-4);\n    --gray-5: var(--sand-5);\n    --gray-6: var(--sand-6);\n    --gray-7: var(--sand-7);\n    --gray-8: var(--sand-8);\n    --gray-9: var(--sand-9);\n    --gray-10: var(--sand-10);\n    --gray-11: var(--sand-11);\n    --gray-12: var(--sand-12);\n\n    --gray-a1: var(--sand-a1);\n    --gray-a2: var(--sand-a2);\n    --gray-a3: var(--sand-a3);\n    --gray-a4: var(--sand-a4);\n    --gray-a5: var(--sand-a5);\n    --gray-a6: var(--sand-a6);\n    --gray-a7: var(--sand-a7);\n    --gray-a8: var(--sand-a8);\n    --gray-a9: var(--sand-a9);\n    --gray-a10: var(--sand-a10);\n    --gray-a11: var(--sand-a11);\n    --gray-a12: var(--sand-a12);\n\n    --gray-contrast: var(--sand-contrast);\n    --gray-surface: var(--sand-surface);\n    --gray-indicator: var(--sand-indicator);\n    --gray-track: var(--sand-track);\n  }\n\n  &:where([data-gray-color='slate']) {\n    --gray-1: var(--slate-1);\n    --gray-2: var(--slate-2);\n    --gray-3: var(--slate-3);\n    --gray-4: var(--slate-4);\n    --gray-5: var(--slate-5);\n    --gray-6: var(--slate-6);\n    --gray-7: var(--slate-7);\n    --gray-8: var(--slate-8);\n    --gray-9: var(--slate-9);\n    --gray-10: var(--slate-10);\n    --gray-11: var(--slate-11);\n    --gray-12: var(--slate-12);\n\n    --gray-a1: var(--slate-a1);\n    --gray-a2: var(--slate-a2);\n    --gray-a3: var(--slate-a3);\n    --gray-a4: var(--slate-a4);\n    --gray-a5: var(--slate-a5);\n    --gray-a6: var(--slate-a6);\n    --gray-a7: var(--slate-a7);\n    --gray-a8: var(--slate-a8);\n    --gray-a9: var(--slate-a9);\n    --gray-a10: var(--slate-a10);\n    --gray-a11: var(--slate-a11);\n    --gray-a12: var(--slate-a12);\n\n    --gray-contrast: var(--slate-contrast);\n    --gray-surface: var(--slate-surface);\n    --gray-indicator: var(--slate-indicator);\n    --gray-track: var(--slate-track);\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/styles/tokens/colors/amber.css",
    "content": "@import '@radix-ui/colors/amber.css';\n@import '@radix-ui/colors/amber-dark.css';\n@import '@radix-ui/colors/amber-alpha.css';\n@import '@radix-ui/colors/amber-dark-alpha.css';\n\n:root {\n  --amber-contrast: #21201c; /* light mode sand 12 */\n}\n\n:root,\n.light,\n.light-theme {\n  --amber-surface: #fefae4cc;\n  --amber-indicator: var(--amber-9);\n  --amber-track: var(--amber-9);\n  @supports (color: color(display-p3 1 1 1)) {\n    @media (color-gamut: p3) {\n      --amber-surface: color(display-p3 0.9922 0.9843 0.902 / 0.8);\n    }\n  }\n}\n\n.dark,\n.dark-theme {\n  --amber-surface: #271f1380;\n  --amber-indicator: var(--amber-9);\n  --amber-track: var(--amber-9);\n  @supports (color: color(display-p3 1 1 1)) {\n    @media (color-gamut: p3) {\n      --amber-surface: color(display-p3 0.1412 0.1176 0.0784 / 0.5);\n    }\n  }\n  @supports (color: color-mix(in oklab, white, black)) {\n    --amber-track: color-mix(in oklab, var(--amber-8), var(--amber-9) 75%);\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/styles/tokens/colors/blue.css",
    "content": "@import '@radix-ui/colors/blue.css';\n@import '@radix-ui/colors/blue-dark.css';\n@import '@radix-ui/colors/blue-alpha.css';\n@import '@radix-ui/colors/blue-dark-alpha.css';\n\n:root {\n  --blue-contrast: white;\n}\n\n:root,\n.light,\n.light-theme {\n  --blue-surface: #f1f9ffcc;\n  --blue-indicator: var(--blue-9);\n  --blue-track: var(--blue-9);\n  @supports (color: color(display-p3 1 1 1)) {\n    @media (color-gamut: p3) {\n      --blue-surface: color(display-p3 0.9529 0.9765 0.9961 / 0.8);\n    }\n  }\n}\n\n.dark,\n.dark-theme {\n  --blue-surface: #11213d80;\n  --blue-indicator: var(--blue-9);\n  --blue-track: var(--blue-9);\n  @supports (color: color(display-p3 1 1 1)) {\n    @media (color-gamut: p3) {\n      --blue-surface: color(display-p3 0.0706 0.1255 0.2196 / 0.5);\n    }\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/styles/tokens/colors/bronze.css",
    "content": "@import '@radix-ui/colors/bronze.css';\n@import '@radix-ui/colors/bronze-dark.css';\n@import '@radix-ui/colors/bronze-alpha.css';\n@import '@radix-ui/colors/bronze-dark-alpha.css';\n\n:root {\n  --bronze-contrast: white;\n}\n\n:root,\n.light,\n.light-theme {\n  --bronze-surface: #fdf5f3cc;\n  --bronze-indicator: var(--bronze-9);\n  --bronze-track: var(--bronze-9);\n  @supports (color: color(display-p3 1 1 1)) {\n    @media (color-gamut: p3) {\n      --bronze-surface: color(display-p3 0.9843 0.9608 0.9529 / 0.8);\n    }\n  }\n}\n\n.dark,\n.dark-theme {\n  --bronze-surface: #27211d80;\n  --bronze-indicator: var(--bronze-9);\n  --bronze-track: var(--bronze-9);\n  @supports (color: color(display-p3 1 1 1)) {\n    @media (color-gamut: p3) {\n      --bronze-surface: color(display-p3 0.1412 0.1255 0.1176 / 0.5);\n    }\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/styles/tokens/colors/brown.css",
    "content": "@import '@radix-ui/colors/brown.css';\n@import '@radix-ui/colors/brown-dark.css';\n@import '@radix-ui/colors/brown-alpha.css';\n@import '@radix-ui/colors/brown-dark-alpha.css';\n\n:root {\n  --brown-contrast: white;\n}\n\n:root,\n.light,\n.light-theme {\n  --brown-surface: #fbf8f4cc;\n  --brown-indicator: var(--brown-9);\n  --brown-track: var(--brown-9);\n  @supports (color: color(display-p3 1 1 1)) {\n    @media (color-gamut: p3) {\n      --brown-surface: color(display-p3 0.9843 0.9725 0.9569 / 0.8);\n    }\n  }\n}\n\n.dark,\n.dark-theme {\n  --brown-surface: #271f1b80;\n  --brown-indicator: var(--brown-9);\n  --brown-track: var(--brown-9);\n  @supports (color: color(display-p3 1 1 1)) {\n    @media (color-gamut: p3) {\n      --brown-surface: color(display-p3 0.1412 0.1176 0.102 / 0.5);\n    }\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/styles/tokens/colors/crimson.css",
    "content": "@import '@radix-ui/colors/crimson.css';\n@import '@radix-ui/colors/crimson-dark.css';\n@import '@radix-ui/colors/crimson-alpha.css';\n@import '@radix-ui/colors/crimson-dark-alpha.css';\n\n:root {\n  --crimson-contrast: white;\n}\n\n:root,\n.light,\n.light-theme {\n  --crimson-surface: #fef5f8cc;\n  --crimson-indicator: var(--crimson-9);\n  --crimson-track: var(--crimson-9);\n  @supports (color: color(display-p3 1 1 1)) {\n    @media (color-gamut: p3) {\n      --crimson-surface: color(display-p3 0.9922 0.9608 0.9725 / 0.8);\n    }\n  }\n}\n\n.dark,\n.dark-theme {\n  --crimson-surface: #2f151f80;\n  --crimson-indicator: var(--crimson-9);\n  --crimson-track: var(--crimson-9);\n  @supports (color: color(display-p3 1 1 1)) {\n    @media (color-gamut: p3) {\n      --crimson-surface: color(display-p3 0.1647 0.0863 0.1176 / 0.5);\n    }\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/styles/tokens/colors/cyan.css",
    "content": "@import '@radix-ui/colors/cyan.css';\n@import '@radix-ui/colors/cyan-dark.css';\n@import '@radix-ui/colors/cyan-alpha.css';\n@import '@radix-ui/colors/cyan-dark-alpha.css';\n\n:root {\n  --cyan-contrast: white;\n}\n\n:root,\n.light,\n.light-theme {\n  --cyan-surface: #eff9facc;\n  --cyan-indicator: var(--cyan-9);\n  --cyan-track: var(--cyan-9);\n  @supports (color: color(display-p3 1 1 1)) {\n    @media (color-gamut: p3) {\n      --cyan-surface: color(display-p3 0.9412 0.9765 0.9804 / 0.8);\n    }\n  }\n}\n\n.dark,\n.dark-theme {\n  --cyan-surface: #11252d80;\n  --cyan-indicator: var(--cyan-9);\n  --cyan-track: var(--cyan-9);\n  @supports (color: color(display-p3 1 1 1)) {\n    @media (color-gamut: p3) {\n      --cyan-surface: color(display-p3 0.0784 0.1412 0.1725 / 0.5);\n    }\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/styles/tokens/colors/gold.css",
    "content": "@import '@radix-ui/colors/gold.css';\n@import '@radix-ui/colors/gold-dark.css';\n@import '@radix-ui/colors/gold-alpha.css';\n@import '@radix-ui/colors/gold-dark-alpha.css';\n\n:root {\n  --gold-contrast: white;\n}\n\n:root,\n.light,\n.light-theme {\n  --gold-surface: #f9f8efcc;\n  --gold-indicator: var(--gold-9);\n  --gold-track: var(--gold-9);\n  @supports (color: color(display-p3 1 1 1)) {\n    @media (color-gamut: p3) {\n      --gold-surface: color(display-p3 0.9765 0.9725 0.9412 / 0.8);\n    }\n  }\n}\n\n.dark,\n.dark-theme {\n  --gold-surface: #25231d80;\n  --gold-indicator: var(--gold-9);\n  --gold-track: var(--gold-9);\n  @supports (color: color(display-p3 1 1 1)) {\n    @media (color-gamut: p3) {\n      --gold-surface: color(display-p3 0.1412 0.1333 0.1098 / 0.5);\n    }\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/styles/tokens/colors/grass.css",
    "content": "@import '@radix-ui/colors/grass.css';\n@import '@radix-ui/colors/grass-dark.css';\n@import '@radix-ui/colors/grass-alpha.css';\n@import '@radix-ui/colors/grass-dark-alpha.css';\n\n:root {\n  --grass-contrast: white;\n}\n\n:root,\n.light,\n.light-theme {\n  --grass-surface: #f3faf3cc;\n  --grass-indicator: var(--grass-9);\n  --grass-track: var(--grass-9);\n  @supports (color: color(display-p3 1 1 1)) {\n    @media (color-gamut: p3) {\n      --grass-surface: color(display-p3 0.9569 0.9804 0.9569 / 0.8);\n    }\n  }\n}\n\n.dark,\n.dark-theme {\n  --grass-surface: #19231b80;\n  --grass-indicator: var(--grass-9);\n  --grass-track: var(--grass-9);\n  @supports (color: color(display-p3 1 1 1)) {\n    @media (color-gamut: p3) {\n      --grass-surface: color(display-p3 0.102 0.1333 0.102 / 0.5);\n    }\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/styles/tokens/colors/gray.css",
    "content": "@import '@radix-ui/colors/gray.css';\n@import '@radix-ui/colors/gray-dark.css';\n@import '@radix-ui/colors/gray-alpha.css';\n@import '@radix-ui/colors/gray-dark-alpha.css';\n\n:root {\n  --gray-contrast: white;\n}\n\n:root,\n.light,\n.light-theme {\n  --gray-surface: #ffffffcc;\n  --gray-indicator: var(--gray-9);\n  --gray-track: var(--gray-9);\n  @supports (color: color(display-p3 1 1 1)) {\n    @media (color-gamut: p3) {\n      --gray-surface: color(display-p3 1 1 1 / 0.8);\n    }\n  }\n}\n\n.dark,\n.dark-theme {\n  --gray-surface: #21212180;\n  --gray-indicator: var(--gray-9);\n  --gray-track: var(--gray-9);\n  @supports (color: color(display-p3 1 1 1)) {\n    @media (color-gamut: p3) {\n      --gray-surface: color(display-p3 0.1255 0.1255 0.1255 / 0.5);\n    }\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/styles/tokens/colors/green.css",
    "content": "@import '@radix-ui/colors/green.css';\n@import '@radix-ui/colors/green-dark.css';\n@import '@radix-ui/colors/green-alpha.css';\n@import '@radix-ui/colors/green-dark-alpha.css';\n\n:root {\n  --green-contrast: white;\n}\n\n:root,\n.light,\n.light-theme {\n  --green-surface: #f1faf4cc;\n  --green-indicator: var(--green-9);\n  --green-track: var(--green-9);\n  @supports (color: color(display-p3 1 1 1)) {\n    @media (color-gamut: p3) {\n      --green-surface: color(display-p3 0.9569 0.9804 0.9608 / 0.8);\n    }\n  }\n}\n\n.dark,\n.dark-theme {\n  --green-surface: #15251d80;\n  --green-indicator: var(--green-9);\n  --green-track: var(--green-9);\n  @supports (color: color(display-p3 1 1 1)) {\n    @media (color-gamut: p3) {\n      --green-surface: color(display-p3 0.0941 0.1412 0.1098 / 0.5);\n    }\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/styles/tokens/colors/indigo.css",
    "content": "@import '@radix-ui/colors/indigo.css';\n@import '@radix-ui/colors/indigo-dark.css';\n@import '@radix-ui/colors/indigo-alpha.css';\n@import '@radix-ui/colors/indigo-dark-alpha.css';\n\n:root {\n  --indigo-contrast: white;\n}\n\n:root,\n.light,\n.light-theme {\n  --indigo-surface: #f5f8ffcc;\n  --indigo-indicator: var(--indigo-9);\n  --indigo-track: var(--indigo-9);\n  @supports (color: color(display-p3 1 1 1)) {\n    @media (color-gamut: p3) {\n      --indigo-surface: color(display-p3 0.9647 0.9725 0.9961 / 0.8);\n    }\n  }\n}\n\n.dark,\n.dark-theme {\n  --indigo-surface: #171d3b80;\n  --indigo-indicator: var(--indigo-9);\n  --indigo-track: var(--indigo-9);\n  @supports (color: color(display-p3 1 1 1)) {\n    @media (color-gamut: p3) {\n      --indigo-surface: color(display-p3 0.0941 0.1098 0.2196 / 0.5);\n    }\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/styles/tokens/colors/iris.css",
    "content": "@import '@radix-ui/colors/iris.css';\n@import '@radix-ui/colors/iris-dark.css';\n@import '@radix-ui/colors/iris-alpha.css';\n@import '@radix-ui/colors/iris-dark-alpha.css';\n\n:root {\n  --iris-contrast: white;\n}\n\n:root,\n.light,\n.light-theme {\n  --iris-surface: #f6f6ffcc;\n  --iris-indicator: var(--iris-9);\n  --iris-track: var(--iris-9);\n  @supports (color: color(display-p3 1 1 1)) {\n    @media (color-gamut: p3) {\n      --iris-surface: color(display-p3 0.9647 0.9647 0.9961 / 0.8);\n    }\n  }\n}\n\n.dark,\n.dark-theme {\n  --iris-surface: #1d1b3980;\n  --iris-indicator: var(--iris-9);\n  --iris-track: var(--iris-9);\n  @supports (color: color(display-p3 1 1 1)) {\n    @media (color-gamut: p3) {\n      --iris-surface: color(display-p3 0.1098 0.102 0.2118 / 0.5);\n    }\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/styles/tokens/colors/jade.css",
    "content": "@import '@radix-ui/colors/jade.css';\n@import '@radix-ui/colors/jade-dark.css';\n@import '@radix-ui/colors/jade-alpha.css';\n@import '@radix-ui/colors/jade-dark-alpha.css';\n\n:root {\n  --jade-contrast: white;\n}\n\n:root,\n.light,\n.light-theme {\n  --jade-surface: #f1faf5cc;\n  --jade-indicator: var(--jade-9);\n  --jade-track: var(--jade-9);\n  @supports (color: color(display-p3 1 1 1)) {\n    @media (color-gamut: p3) {\n      --jade-surface: color(display-p3 0.9529 0.9804 0.9608 / 0.8);\n    }\n  }\n}\n\n.dark,\n.dark-theme {\n  --jade-surface: #13271f80;\n  --jade-indicator: var(--jade-9);\n  --jade-track: var(--jade-9);\n  @supports (color: color(display-p3 1 1 1)) {\n    @media (color-gamut: p3) {\n      --jade-surface: color(display-p3 0.0863 0.149 0.1176 / 0.5);\n    }\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/styles/tokens/colors/lime.css",
    "content": "@import '@radix-ui/colors/lime.css';\n@import '@radix-ui/colors/lime-dark.css';\n@import '@radix-ui/colors/lime-alpha.css';\n@import '@radix-ui/colors/lime-dark-alpha.css';\n\n:root {\n  --lime-contrast: #1d211c; /* light mode olive 12 */\n}\n\n:root,\n.light,\n.light-theme {\n  --lime-surface: #f6f9f0cc;\n  --lime-indicator: var(--lime-9);\n  --lime-track: var(--lime-9);\n  @supports (color: color(display-p3 1 1 1)) {\n    @media (color-gamut: p3) {\n      --lime-surface: color(display-p3 0.9725 0.9765 0.9412 / 0.8);\n    }\n  }\n}\n\n.dark,\n.dark-theme {\n  --lime-surface: #1b211580;\n  --lime-indicator: var(--lime-9);\n  --lime-track: var(--lime-9);\n  @supports (color: color(display-p3 1 1 1)) {\n    @media (color-gamut: p3) {\n      --lime-surface: color(display-p3 0.1098 0.1255 0.0784 / 0.5);\n    }\n  }\n  @supports (color: color-mix(in oklab, white, black)) {\n    --lime-track: color-mix(in oklab, var(--lime-8), var(--lime-9) 65%);\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/styles/tokens/colors/mauve.css",
    "content": "@import '@radix-ui/colors/mauve.css';\n@import '@radix-ui/colors/mauve-dark.css';\n@import '@radix-ui/colors/mauve-alpha.css';\n@import '@radix-ui/colors/mauve-dark-alpha.css';\n\n:root {\n  --mauve-contrast: white;\n}\n\n:root,\n.light,\n.light-theme {\n  --mauve-surface: #ffffffcc;\n  --mauve-indicator: var(--mauve-9);\n  --mauve-track: var(--mauve-9);\n  @supports (color: color(display-p3 1 1 1)) {\n    @media (color-gamut: p3) {\n      --mauve-surface: color(display-p3 1 1 1 / 0.8);\n    }\n  }\n}\n\n.dark,\n.dark-theme {\n  --mauve-surface: #22212380;\n  --mauve-indicator: var(--mauve-9);\n  --mauve-track: var(--mauve-9);\n  @supports (color: color(display-p3 1 1 1)) {\n    @media (color-gamut: p3) {\n      --mauve-surface: color(display-p3 0.1333 0.1255 0.1333 / 0.5);\n    }\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/styles/tokens/colors/mint.css",
    "content": "@import '@radix-ui/colors/mint.css';\n@import '@radix-ui/colors/mint-dark.css';\n@import '@radix-ui/colors/mint-alpha.css';\n@import '@radix-ui/colors/mint-dark-alpha.css';\n\n:root {\n  --mint-contrast: #1a211e; /* light mode sage 12 */\n}\n\n:root,\n.light,\n.light-theme {\n  --mint-surface: #effaf8cc;\n  --mint-indicator: var(--mint-9);\n  --mint-track: var(--mint-9);\n  @supports (color: color(display-p3 1 1 1)) {\n    @media (color-gamut: p3) {\n      --mint-surface: color(display-p3 0.9451 0.9804 0.9725 / 0.8);\n    }\n  }\n}\n\n.dark,\n.dark-theme {\n  --mint-surface: #15272780;\n  --mint-indicator: var(--mint-9);\n  --mint-track: var(--mint-9);\n  @supports (color: color(display-p3 1 1 1)) {\n    @media (color-gamut: p3) {\n      --mint-surface: color(display-p3 0.0941 0.149 0.1412 / 0.5);\n    }\n  }\n  @supports (color: color-mix(in oklab, white, black)) {\n    --mint-track: color-mix(in oklab, var(--mint-8), var(--mint-9) 65%);\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/styles/tokens/colors/olive.css",
    "content": "@import '@radix-ui/colors/olive.css';\n@import '@radix-ui/colors/olive-dark.css';\n@import '@radix-ui/colors/olive-alpha.css';\n@import '@radix-ui/colors/olive-dark-alpha.css';\n\n:root {\n  --olive-contrast: white;\n}\n\n:root,\n.light,\n.light-theme {\n  --olive-surface: #ffffffcc;\n  --olive-indicator: var(--olive-9);\n  --olive-track: var(--olive-9);\n  @supports (color: color(display-p3 1 1 1)) {\n    @media (color-gamut: p3) {\n      --olive-surface: color(display-p3 1 1 1 / 0.8);\n    }\n  }\n}\n\n.dark,\n.dark-theme {\n  --olive-surface: #1f201e80;\n  --olive-indicator: var(--olive-9);\n  --olive-track: var(--olive-9);\n  @supports (color: color(display-p3 1 1 1)) {\n    @media (color-gamut: p3) {\n      --olive-surface: color(display-p3 0.1176 0.1255 0.1176 / 0.5);\n    }\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/styles/tokens/colors/orange.css",
    "content": "@import '@radix-ui/colors/orange.css';\n@import '@radix-ui/colors/orange-dark.css';\n@import '@radix-ui/colors/orange-alpha.css';\n@import '@radix-ui/colors/orange-dark-alpha.css';\n\n:root {\n  --orange-contrast: white;\n}\n\n:root,\n.light,\n.light-theme {\n  --orange-surface: #fff5e9cc;\n  --orange-indicator: var(--orange-9);\n  --orange-track: var(--orange-9);\n  @supports (color: color(display-p3 1 1 1)) {\n    @media (color-gamut: p3) {\n      --orange-surface: color(display-p3 0.9961 0.9608 0.9176 / 0.8);\n    }\n  }\n}\n\n.dark,\n.dark-theme {\n  --orange-surface: #271d1380;\n  --orange-indicator: var(--orange-9);\n  --orange-track: var(--orange-9);\n  @supports (color: color(display-p3 1 1 1)) {\n    @media (color-gamut: p3) {\n      --orange-surface: color(display-p3 0.1412 0.1098 0.0706 / 0.5);\n    }\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/styles/tokens/colors/pink.css",
    "content": "@import '@radix-ui/colors/pink.css';\n@import '@radix-ui/colors/pink-dark.css';\n@import '@radix-ui/colors/pink-alpha.css';\n@import '@radix-ui/colors/pink-dark-alpha.css';\n\n:root {\n  --pink-contrast: white;\n}\n\n:root,\n.light,\n.light-theme {\n  --pink-surface: #fef5facc;\n  --pink-indicator: var(--pink-9);\n  --pink-track: var(--pink-9);\n  @supports (color: color(display-p3 1 1 1)) {\n    @media (color-gamut: p3) {\n      --pink-surface: color(display-p3 0.9922 0.9608 0.9804 / 0.8);\n    }\n  }\n}\n\n.dark,\n.dark-theme {\n  --pink-surface: #31132980;\n  --pink-indicator: var(--pink-9);\n  --pink-track: var(--pink-9);\n  @supports (color: color(display-p3 1 1 1)) {\n    @media (color-gamut: p3) {\n      --pink-surface: color(display-p3 0.1725 0.0784 0.149 / 0.5);\n    }\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/styles/tokens/colors/plum.css",
    "content": "@import '@radix-ui/colors/plum.css';\n@import '@radix-ui/colors/plum-dark.css';\n@import '@radix-ui/colors/plum-alpha.css';\n@import '@radix-ui/colors/plum-dark-alpha.css';\n\n:root {\n  --plum-contrast: white;\n}\n\n:root,\n.light,\n.light-theme {\n  --plum-surface: #fdf5fdcc;\n  --plum-indicator: var(--plum-9);\n  --plum-track: var(--plum-9);\n  @supports (color: color(display-p3 1 1 1)) {\n    @media (color-gamut: p3) {\n      --plum-surface: color(display-p3 0.9843 0.9647 0.9843 / 0.8);\n    }\n  }\n}\n\n.dark,\n.dark-theme {\n  --plum-surface: #2f152f80;\n  --plum-indicator: var(--plum-9);\n  --plum-track: var(--plum-9);\n  @supports (color: color(display-p3 1 1 1)) {\n    @media (color-gamut: p3) {\n      --plum-surface: color(display-p3 0.1647 0.0863 0.1725 / 0.5);\n    }\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/styles/tokens/colors/purple.css",
    "content": "@import '@radix-ui/colors/purple.css';\n@import '@radix-ui/colors/purple-dark.css';\n@import '@radix-ui/colors/purple-alpha.css';\n@import '@radix-ui/colors/purple-dark-alpha.css';\n\n:root {\n  --purple-contrast: white;\n}\n\n:root,\n.light,\n.light-theme {\n  --purple-surface: #faf5fecc;\n  --purple-indicator: var(--purple-9);\n  --purple-track: var(--purple-9);\n  @supports (color: color(display-p3 1 1 1)) {\n    @media (color-gamut: p3) {\n      --purple-surface: color(display-p3 0.9804 0.9647 0.9922 / 0.8);\n    }\n  }\n}\n\n.dark,\n.dark-theme {\n  --purple-surface: #2b173580;\n  --purple-indicator: var(--purple-9);\n  --purple-track: var(--purple-9);\n  @supports (color: color(display-p3 1 1 1)) {\n    @media (color-gamut: p3) {\n      --purple-surface: color(display-p3 0.149 0.0941 0.1961 / 0.5);\n    }\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/styles/tokens/colors/red.css",
    "content": "@import '@radix-ui/colors/red.css';\n@import '@radix-ui/colors/red-dark.css';\n@import '@radix-ui/colors/red-alpha.css';\n@import '@radix-ui/colors/red-dark-alpha.css';\n\n:root {\n  --red-contrast: white;\n}\n\n:root,\n.light,\n.light-theme {\n  --red-surface: #fff5f5cc;\n  --red-indicator: var(--red-9);\n  --red-track: var(--red-9);\n  @supports (color: color(display-p3 1 1 1)) {\n    @media (color-gamut: p3) {\n      --red-surface: color(display-p3 0.9961 0.9647 0.9647 / 0.8);\n    }\n  }\n}\n\n.dark,\n.dark-theme {\n  --red-surface: #2f151780;\n  --red-indicator: var(--red-9);\n  --red-track: var(--red-9);\n  @supports (color: color(display-p3 1 1 1)) {\n    @media (color-gamut: p3) {\n      --red-surface: color(display-p3 0.1647 0.0863 0.0863 / 0.5);\n    }\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/styles/tokens/colors/ruby.css",
    "content": "@import '@radix-ui/colors/ruby.css';\n@import '@radix-ui/colors/ruby-dark.css';\n@import '@radix-ui/colors/ruby-alpha.css';\n@import '@radix-ui/colors/ruby-dark-alpha.css';\n\n:root {\n  --ruby-contrast: white;\n}\n\n:root,\n.light,\n.light-theme {\n  --ruby-surface: #fff5f6cc;\n  --ruby-indicator: var(--ruby-9);\n  --ruby-track: var(--ruby-9);\n  @supports (color: color(display-p3 1 1 1)) {\n    @media (color-gamut: p3) {\n      --ruby-surface: color(display-p3 0.9961 0.9647 0.9647 / 0.8);\n    }\n  }\n}\n\n.dark,\n.dark-theme {\n  --ruby-surface: #2b191d80;\n  --ruby-indicator: var(--ruby-9);\n  --ruby-track: var(--ruby-9);\n  @supports (color: color(display-p3 1 1 1)) {\n    @media (color-gamut: p3) {\n      --ruby-surface: color(display-p3 0.1569 0.0941 0.1098 / 0.5);\n    }\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/styles/tokens/colors/sage.css",
    "content": "@import '@radix-ui/colors/sage.css';\n@import '@radix-ui/colors/sage-dark.css';\n@import '@radix-ui/colors/sage-alpha.css';\n@import '@radix-ui/colors/sage-dark-alpha.css';\n\n:root {\n  --sage-contrast: white;\n}\n\n:root,\n.light,\n.light-theme {\n  --sage-surface: #ffffffcc;\n  --sage-indicator: var(--sage-9);\n  --sage-track: var(--sage-9);\n  @supports (color: color(display-p3 1 1 1)) {\n    @media (color-gamut: p3) {\n      --sage-surface: color(display-p3 1 1 1 / 0.8);\n    }\n  }\n}\n\n.dark,\n.dark-theme {\n  --sage-surface: #1e201f80;\n  --sage-indicator: var(--sage-9);\n  --sage-track: var(--sage-9);\n  @supports (color: color(display-p3 1 1 1)) {\n    @media (color-gamut: p3) {\n      --sage-surface: color(display-p3 0.1176 0.1255 0.1176 / 0.5);\n    }\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/styles/tokens/colors/sand.css",
    "content": "@import '@radix-ui/colors/sand.css';\n@import '@radix-ui/colors/sand-dark.css';\n@import '@radix-ui/colors/sand-alpha.css';\n@import '@radix-ui/colors/sand-dark-alpha.css';\n\n:root {\n  --sand-contrast: white;\n}\n\n:root,\n.light,\n.light-theme {\n  --sand-surface: #ffffffcc;\n  --sand-indicator: var(--sand-9);\n  --sand-track: var(--sand-9);\n  @supports (color: color(display-p3 1 1 1)) {\n    @media (color-gamut: p3) {\n      --sand-surface: color(display-p3 1 1 1 / 0.8);\n    }\n  }\n}\n\n.dark,\n.dark-theme {\n  --sand-surface: #21212080;\n  --sand-indicator: var(--sand-9);\n  --sand-track: var(--sand-9);\n  @supports (color: color(display-p3 1 1 1)) {\n    @media (color-gamut: p3) {\n      --sand-surface: color(display-p3 0.1255 0.1255 0.1255 / 0.5);\n    }\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/styles/tokens/colors/sky.css",
    "content": "@import '@radix-ui/colors/sky.css';\n@import '@radix-ui/colors/sky-dark.css';\n@import '@radix-ui/colors/sky-alpha.css';\n@import '@radix-ui/colors/sky-dark-alpha.css';\n\n:root {\n  --sky-contrast: #1c2024; /* light mode slate 12 */\n}\n\n:root,\n.light,\n.light-theme {\n  --sky-surface: #eef9fdcc;\n  --sky-indicator: var(--sky-9);\n  --sky-track: var(--sky-9);\n  @supports (color: color(display-p3 1 1 1)) {\n    @media (color-gamut: p3) {\n      --sky-surface: color(display-p3 0.9412 0.9765 0.9843 / 0.8);\n    }\n  }\n}\n\n.dark,\n.dark-theme {\n  --sky-surface: #13233b80;\n  --sky-indicator: var(--sky-9);\n  --sky-track: var(--sky-9);\n  @supports (color: color(display-p3 1 1 1)) {\n    @media (color-gamut: p3) {\n      --sky-surface: color(display-p3 0.0863 0.1333 0.2196 / 0.5);\n    }\n  }\n  @supports (color: color-mix(in oklab, white, black)) {\n    --sky-track: color-mix(in oklab, var(--sky-8), var(--sky-9) 65%);\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/styles/tokens/colors/slate.css",
    "content": "@import '@radix-ui/colors/slate.css';\n@import '@radix-ui/colors/slate-dark.css';\n@import '@radix-ui/colors/slate-alpha.css';\n@import '@radix-ui/colors/slate-dark-alpha.css';\n\n:root {\n  --slate-contrast: white;\n}\n\n:root,\n.light,\n.light-theme {\n  --slate-surface: #ffffffcc;\n  --slate-indicator: var(--slate-9);\n  --slate-track: var(--slate-9);\n  @supports (color: color(display-p3 1 1 1)) {\n    @media (color-gamut: p3) {\n      --slate-surface: color(display-p3 1 1 1 / 0.8);\n    }\n  }\n}\n\n.dark,\n.dark-theme {\n  --slate-surface: #1f212380;\n  --slate-indicator: var(--slate-9);\n  --slate-track: var(--slate-9);\n  @supports (color: color(display-p3 1 1 1)) {\n    @media (color-gamut: p3) {\n      --slate-surface: color(display-p3 0.1176 0.1255 0.1333 / 0.5);\n    }\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/styles/tokens/colors/teal.css",
    "content": "@import '@radix-ui/colors/teal.css';\n@import '@radix-ui/colors/teal-dark.css';\n@import '@radix-ui/colors/teal-alpha.css';\n@import '@radix-ui/colors/teal-dark-alpha.css';\n\n:root {\n  --teal-contrast: white;\n}\n\n:root,\n.light,\n.light-theme {\n  --teal-surface: #f0faf8cc;\n  --teal-indicator: var(--teal-9);\n  --teal-track: var(--teal-9);\n  @supports (color: color(display-p3 1 1 1)) {\n    @media (color-gamut: p3) {\n      --teal-surface: color(display-p3 0.9451 0.9804 0.9725 / 0.8);\n    }\n  }\n}\n\n.dark,\n.dark-theme {\n  --teal-surface: #13272580;\n  --teal-indicator: var(--teal-9);\n  --teal-track: var(--teal-9);\n  @supports (color: color(display-p3 1 1 1)) {\n    @media (color-gamut: p3) {\n      --teal-surface: color(display-p3 0.0863 0.149 0.1412 / 0.5);\n    }\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/styles/tokens/colors/tomato.css",
    "content": "@import '@radix-ui/colors/tomato.css';\n@import '@radix-ui/colors/tomato-dark.css';\n@import '@radix-ui/colors/tomato-alpha.css';\n@import '@radix-ui/colors/tomato-dark-alpha.css';\n\n:root {\n  --tomato-contrast: white;\n}\n\n:root,\n.light,\n.light-theme {\n  --tomato-surface: #fff6f5cc;\n  --tomato-indicator: var(--tomato-9);\n  --tomato-track: var(--tomato-9);\n  @supports (color: color(display-p3 1 1 1)) {\n    @media (color-gamut: p3) {\n      --tomato-surface: color(display-p3 0.9922 0.9647 0.9608 / 0.8);\n    }\n  }\n}\n\n.dark,\n.dark-theme {\n  --tomato-surface: #2d191580;\n  --tomato-indicator: var(--tomato-9);\n  --tomato-track: var(--tomato-9);\n  @supports (color: color(display-p3 1 1 1)) {\n    @media (color-gamut: p3) {\n      --tomato-surface: color(display-p3 0.1569 0.0941 0.0784 / 0.5);\n    }\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/styles/tokens/colors/violet.css",
    "content": "@import '@radix-ui/colors/violet.css';\n@import '@radix-ui/colors/violet-dark.css';\n@import '@radix-ui/colors/violet-alpha.css';\n@import '@radix-ui/colors/violet-dark-alpha.css';\n\n:root {\n  --violet-contrast: white;\n}\n\n:root,\n.light,\n.light-theme {\n  --violet-surface: #f9f6ffcc;\n  --violet-indicator: var(--violet-9);\n  --violet-track: var(--violet-9);\n  @supports (color: color(display-p3 1 1 1)) {\n    @media (color-gamut: p3) {\n      --violet-surface: color(display-p3 0.9725 0.9647 0.9961 / 0.8);\n    }\n  }\n}\n\n.dark,\n.dark-theme {\n  --violet-surface: #25193980;\n  --violet-indicator: var(--violet-9);\n  --violet-track: var(--violet-9);\n  @supports (color: color(display-p3 1 1 1)) {\n    @media (color-gamut: p3) {\n      --violet-surface: color(display-p3 0.1333 0.102 0.2118 / 0.5);\n    }\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/styles/tokens/colors/yellow.css",
    "content": "@import '@radix-ui/colors/yellow.css';\n@import '@radix-ui/colors/yellow-dark.css';\n@import '@radix-ui/colors/yellow-alpha.css';\n@import '@radix-ui/colors/yellow-dark-alpha.css';\n\n:root {\n  --yellow-contrast: #21201c; /* light mode sand 12 */\n}\n\n:root,\n.light,\n.light-theme {\n  --yellow-surface: #fefbe4cc;\n  --yellow-indicator: var(--yellow-10);\n  --yellow-track: var(--yellow-10);\n  @supports (color: color(display-p3 1 1 1)) {\n    @media (color-gamut: p3) {\n      --yellow-surface: color(display-p3 0.9961 0.9922 0.902 / 0.8);\n    }\n  }\n}\n\n.dark,\n.dark-theme {\n  --yellow-surface: #231f1380;\n  --yellow-indicator: var(--yellow-9);\n  --yellow-track: var(--yellow-9);\n  @supports (color: color(display-p3 1 1 1)) {\n    @media (color-gamut: p3) {\n      --yellow-surface: color(display-p3 0.1333 0.1176 0.0706 / 0.5);\n    }\n  }\n  @supports (color: color-mix(in oklab, white, black)) {\n    --yellow-track: color-mix(in oklab, var(--yellow-8), var(--yellow-9) 65%);\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/styles/tokens/cursor.css",
    "content": ".radix-themes {\n  --cursor-button: default;\n  --cursor-checkbox: default;\n  --cursor-disabled: not-allowed;\n  --cursor-link: pointer;\n  --cursor-menu-item: default;\n  --cursor-radio: default;\n  --cursor-slider-thumb: default;\n  --cursor-slider-thumb-active: default;\n  --cursor-switch: default;\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/styles/tokens/index.css",
    "content": "@import './colors/gray.css';\n@import './colors/mauve.css';\n@import './colors/slate.css';\n@import './colors/sage.css';\n@import './colors/olive.css';\n@import './colors/sand.css';\n\n@import './colors/amber.css';\n@import './colors/blue.css';\n@import './colors/bronze.css';\n@import './colors/brown.css';\n@import './colors/crimson.css';\n@import './colors/cyan.css';\n@import './colors/gold.css';\n@import './colors/grass.css';\n@import './colors/green.css';\n@import './colors/indigo.css';\n@import './colors/iris.css';\n@import './colors/jade.css';\n@import './colors/lime.css';\n@import './colors/mint.css';\n@import './colors/orange.css';\n@import './colors/pink.css';\n@import './colors/plum.css';\n@import './colors/purple.css';\n@import './colors/red.css';\n@import './colors/ruby.css';\n@import './colors/sky.css';\n@import './colors/teal.css';\n@import './colors/tomato.css';\n@import './colors/violet.css';\n@import './colors/yellow.css';\n\n@import './base.css';\n"
  },
  {
    "path": "packages/radix-ui-themes/src/styles/tokens/layout.css",
    "content": "@import './scaling.css';\n@import './space.css';\n"
  },
  {
    "path": "packages/radix-ui-themes/src/styles/tokens/radius.css",
    "content": "[data-radius] {\n  --radius-1: calc(3px * var(--scaling) * var(--radius-factor));\n  --radius-2: calc(4px * var(--scaling) * var(--radius-factor));\n  --radius-3: calc(6px * var(--scaling) * var(--radius-factor));\n  --radius-4: calc(8px * var(--scaling) * var(--radius-factor));\n  --radius-5: calc(12px * var(--scaling) * var(--radius-factor));\n  --radius-6: calc(16px * var(--scaling) * var(--radius-factor));\n}\n\n[data-radius='none'] {\n  --radius-factor: 0;\n  --radius-full: 0px;\n  --radius-thumb: 0.5px;\n}\n\n[data-radius='small'] {\n  --radius-factor: 0.75;\n  --radius-full: 0px;\n  --radius-thumb: 0.5px;\n}\n\n[data-radius='medium'] {\n  --radius-factor: 1;\n  --radius-full: 0px;\n  --radius-thumb: 9999px;\n}\n\n[data-radius='large'] {\n  --radius-factor: 1.5;\n  --radius-full: 0px;\n  --radius-thumb: 9999px;\n}\n\n[data-radius='full'] {\n  --radius-factor: 1.5;\n  --radius-full: 9999px;\n  --radius-thumb: 9999px;\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/styles/tokens/scaling.css",
    "content": ".radix-themes {\n  &:where([data-scaling='90%']) {\n    --scaling: 0.9;\n  }\n  &:where([data-scaling='95%']) {\n    --scaling: 0.95;\n  }\n  &:where([data-scaling='100%']) {\n    --scaling: 1;\n  }\n  &:where([data-scaling='105%']) {\n    --scaling: 1.05;\n  }\n  &:where([data-scaling='110%']) {\n    --scaling: 1.1;\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/styles/tokens/shadow.css",
    "content": "/* prettier-ignore */\n:where(.radix-themes) {\n  --shadow-1:\n    inset 0 0 0 1px var(--gray-a5),\n    inset 0 1.5px 2px 0 var(--gray-a2),\n    inset 0 1.5px 2px 0 var(--black-a2);\n\n  --shadow-2:\n    0 0 0 1px var(--gray-a3),\n    0 0 0 0.5px var(--black-a1),\n    0 1px 1px 0 var(--gray-a2),\n    0 2px 1px -1px var(--black-a1),\n    0 1px 3px 0 var(--black-a1);\n\n  --shadow-3:\n    0 0 0 1px var(--gray-a3),\n    0 2px 3px -2px var(--gray-a3),\n    0 3px 12px -4px var(--black-a2),\n    0 4px 16px -8px var(--black-a2);\n\n  --shadow-4:\n    0 0 0 1px var(--gray-a3),\n    0 8px 40px var(--black-a1),\n    0 12px 32px -16px var(--gray-a3);\n\n  --shadow-5:\n    0 0 0 1px var(--gray-a3),\n    0 12px 60px var(--black-a3),\n    0 12px 32px -16px var(--gray-a5);\n\n  --shadow-6:\n    0 0 0 1px var(--gray-a3),\n    0 12px 60px var(--black-a3),\n    0 16px 64px var(--gray-a2),\n    0 16px 36px -20px var(--gray-a7);\n}\n\n/* prettier-ignore */\n@supports (color: color-mix(in oklab, white, black)) {\n  :where(.radix-themes) {\n    --shadow-1:\n      inset 0 0 0 1px var(--gray-a5),\n      inset 0 1.5px 2px 0 var(--gray-a2),\n      inset 0 1.5px 2px 0 var(--black-a2);\n\n    --shadow-2:\n      0 0 0 1px color-mix(in oklab, var(--gray-a3), var(--gray-3) 25%),\n      0 0 0 0.5px var(--black-a1),\n      0 1px 1px 0 var(--gray-a2),\n      0 2px 1px -1px var(--black-a1),\n      0 1px 3px 0 var(--black-a1);\n\n    --shadow-3:\n      0 0 0 1px color-mix(in oklab, var(--gray-a3), var(--gray-3) 25%),\n      0 2px 3px -2px var(--gray-a3),\n      0 3px 12px -4px var(--black-a2),\n      0 4px 16px -8px var(--black-a2);\n\n    --shadow-4:\n      0 0 0 1px color-mix(in oklab, var(--gray-a3), var(--gray-3) 25%),\n      0 8px 40px var(--black-a1),\n      0 12px 32px -16px var(--gray-a3);\n\n    --shadow-5:\n      0 0 0 1px color-mix(in oklab, var(--gray-a3), var(--gray-3) 25%),\n      0 12px 60px var(--black-a3),\n      0 12px 32px -16px var(--gray-a5);\n\n    --shadow-6:\n      0 0 0 1px color-mix(in oklab, var(--gray-a3), var(--gray-3) 25%),\n      0 12px 60px var(--black-a3),\n      0 16px 64px var(--gray-a2),\n      0 16px 36px -20px var(--gray-a7);\n  }\n}\n\n/* prettier-ignore */\n:is(.dark, .dark-theme),\n:is(.dark, .dark-theme) :where(.radix-themes:not(.light, .light-theme)) {\n  --shadow-1:\n    inset 0 -1px 1px 0 var(--gray-a3),\n    inset 0 0 0 1px var(--gray-a3),\n    inset 0 3px 4px 0 var(--black-a5),\n    inset 0 0 0 1px var(--gray-a4);\n\n  --shadow-2:\n    0 0 0 1px var(--gray-a6),\n    0 0 0 0.5px var(--black-a3),\n    0 1px 1px 0 var(--black-a6),\n    0 2px 1px -1px var(--black-a6),\n    0 1px 3px 0 var(--black-a5);\n\n  --shadow-3:\n    0 0 0 1px var(--gray-a6),\n    0 2px 3px -2px var(--black-a3),\n    0 3px 8px -2px var(--black-a6),\n    0 4px 12px -4px var(--black-a7);\n\n  --shadow-4:\n    0 0 0 1px var(--gray-a6),\n    0 8px 40px var(--black-a3),\n    0 12px 32px -16px var(--black-a5);\n\n  --shadow-5:\n    0 0 0 1px var(--gray-a6),\n    0 12px 60px var(--black-a5),\n    0 12px 32px -16px var(--black-a7);\n\n  --shadow-6:\n    0 0 0 1px var(--gray-a6),\n    0 12px 60px var(--black-a4),\n    0 16px 64px var(--black-a6),\n    0 16px 36px -20px var(--black-a11);\n}\n\n/* prettier-ignore */\n@supports (color: color-mix(in oklab, white, black)) {\n  :is(.dark, .dark-theme),\n  :is(.dark, .dark-theme) :where(.radix-themes:not(.light, .light-theme)) {\n    --shadow-1:\n      inset 0 -1px 1px 0 var(--gray-a3),\n      inset 0 0 0 1px var(--gray-a3),\n      inset 0 3px 4px 0 var(--black-a5),\n      inset 0 0 0 1px var(--gray-a4);\n\n    --shadow-2:\n      0 0 0 1px color-mix(in oklab, var(--gray-a6), var(--gray-6) 25%),\n      0 0 0 0.5px var(--black-a3),\n      0 1px 1px 0 var(--black-a6),\n      0 2px 1px -1px var(--black-a6),\n      0 1px 3px 0 var(--black-a5);\n\n    --shadow-3:\n      0 0 0 1px color-mix(in oklab, var(--gray-a6), var(--gray-6) 25%),\n      0 2px 3px -2px var(--black-a3),\n      0 3px 8px -2px var(--black-a6),\n      0 4px 12px -4px var(--black-a7);\n\n    --shadow-4:\n      0 0 0 1px color-mix(in oklab, var(--gray-a6), var(--gray-6) 25%),\n      0 8px 40px var(--black-a3),\n      0 12px 32px -16px var(--black-a5);\n\n    --shadow-5:\n      0 0 0 1px color-mix(in oklab, var(--gray-a6), var(--gray-6) 25%),\n      0 12px 60px var(--black-a5),\n      0 12px 32px -16px var(--black-a7);\n\n    --shadow-6:\n      0 0 0 1px color-mix(in oklab, var(--gray-a6), var(--gray-6) 25%),\n      0 12px 60px var(--black-a4),\n      0 16px 64px var(--black-a6),\n      0 16px 36px -20px var(--black-a11);\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/styles/tokens/space.css",
    "content": ".radix-themes {\n  --space-1: calc(4px * var(--scaling));\n  --space-2: calc(8px * var(--scaling));\n  --space-3: calc(12px * var(--scaling));\n  --space-4: calc(16px * var(--scaling));\n  --space-5: calc(24px * var(--scaling));\n  --space-6: calc(32px * var(--scaling));\n  --space-7: calc(40px * var(--scaling));\n  --space-8: calc(48px * var(--scaling));\n  --space-9: calc(64px * var(--scaling));\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/styles/tokens/typography.css",
    "content": ".radix-themes {\n  --font-size-1: calc(12px * var(--scaling));\n  --font-size-2: calc(14px * var(--scaling));\n  --font-size-3: calc(16px * var(--scaling));\n  --font-size-4: calc(18px * var(--scaling));\n  --font-size-5: calc(20px * var(--scaling));\n  --font-size-6: calc(24px * var(--scaling));\n  --font-size-7: calc(28px * var(--scaling));\n  --font-size-8: calc(35px * var(--scaling));\n  --font-size-9: calc(60px * var(--scaling));\n\n  --font-weight-light: 300;\n  --font-weight-regular: 400;\n  --font-weight-medium: 500;\n  --font-weight-bold: 700;\n\n  --line-height-1: calc(16px * var(--scaling));\n  --line-height-2: calc(20px * var(--scaling));\n  --line-height-3: calc(24px * var(--scaling));\n  --line-height-4: calc(26px * var(--scaling));\n  --line-height-5: calc(28px * var(--scaling));\n  --line-height-6: calc(30px * var(--scaling));\n  --line-height-7: calc(36px * var(--scaling));\n  --line-height-8: calc(40px * var(--scaling));\n  --line-height-9: calc(60px * var(--scaling));\n\n  --letter-spacing-1: 0.0025em;\n  --letter-spacing-2: 0em;\n  --letter-spacing-3: 0em;\n  --letter-spacing-4: -0.0025em;\n  --letter-spacing-5: -0.005em;\n  --letter-spacing-6: -0.00625em;\n  --letter-spacing-7: -0.0075em;\n  --letter-spacing-8: -0.01em;\n  --letter-spacing-9: -0.025em;\n\n  /* default values */\n\n  --default-font-family:\n    -apple-system, BlinkMacSystemFont, 'Segoe UI (Custom)', Roboto, 'Helvetica Neue', 'Open Sans (Custom)', system-ui,\n    sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji';\n  --default-font-size: var(--font-size-3); /* Same size used for `<Text size=\"3\">` */\n  --default-font-style: normal;\n  --default-font-weight: var(--font-weight-regular);\n  --default-line-height: 1.5; /* Equivalent to the line-height used for `<Text size=\"3\">` 16px * 1.5 = 24px */\n  --default-letter-spacing: 0em;\n  --default-leading-trim-start: 0.42em;\n  --default-leading-trim-end: 0.36em;\n\n  /* Heading */\n\n  --heading-font-family: var(--default-font-family);\n  --heading-font-size-adjust: 1;\n  --heading-font-style: normal;\n  --heading-leading-trim-start: var(--default-leading-trim-start);\n  --heading-leading-trim-end: var(--default-leading-trim-end);\n  --heading-letter-spacing: 0em;\n\n  --heading-line-height-1: calc(16px * var(--scaling));\n  --heading-line-height-2: calc(18px * var(--scaling));\n  --heading-line-height-3: calc(22px * var(--scaling));\n  --heading-line-height-4: calc(24px * var(--scaling));\n  --heading-line-height-5: calc(26px * var(--scaling));\n  --heading-line-height-6: calc(30px * var(--scaling));\n  --heading-line-height-7: calc(36px * var(--scaling));\n  --heading-line-height-8: calc(40px * var(--scaling));\n  --heading-line-height-9: calc(60px * var(--scaling));\n\n  /* Code */\n\n  --code-font-family:\n    'Menlo', 'Consolas (Custom)', 'Bitstream Vera Sans Mono', monospace, 'Apple Color Emoji', 'Segoe UI Emoji';\n  --code-font-size-adjust: 0.95;\n  --code-font-style: normal;\n  --code-font-weight: inherit;\n  --code-letter-spacing: -0.007em;\n  --code-padding-top: 0.1em;\n  --code-padding-bottom: 0.1em;\n  --code-padding-left: 0.25em;\n  --code-padding-right: 0.25em;\n\n  /* Strong */\n\n  --strong-font-family: var(--default-font-family);\n  --strong-font-size-adjust: 1;\n  --strong-font-style: inherit;\n  --strong-font-weight: var(--font-weight-bold);\n  --strong-letter-spacing: 0em;\n\n  /* Em */\n\n  --em-font-family: 'Times New Roman', 'Times', serif;\n  --em-font-size-adjust: 1.18;\n  --em-font-style: italic;\n  --em-font-weight: inherit;\n  --em-letter-spacing: -0.025em;\n\n  /* Quote */\n\n  --quote-font-family: 'Times New Roman', 'Times', serif;\n  --quote-font-size-adjust: 1.18;\n  --quote-font-style: italic;\n  --quote-font-weight: inherit;\n  --quote-letter-spacing: -0.025em;\n\n  /* Tabs */\n\n  --tab-active-letter-spacing: -0.01em;\n  --tab-active-word-spacing: 0em;\n  --tab-inactive-letter-spacing: 0em;\n  --tab-inactive-word-spacing: 0em;\n}\n\n.radix-themes {\n  overflow-wrap: break-word;\n  font-family: var(--default-font-family);\n  font-size: var(--default-font-size);\n  font-weight: var(--default-font-weight);\n  font-style: var(--default-font-style);\n  line-height: var(--default-line-height);\n  letter-spacing: var(--default-letter-spacing);\n  text-size-adjust: none;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n}\n\n@font-face {\n  font-family: 'Segoe UI (Custom)';\n  font-weight: 300;\n  size-adjust: 103%;\n  descent-override: 35%;\n  ascent-override: 105%;\n  src: local('Segoe UI Semilight'), local('Segoe UI');\n}\n\n@font-face {\n  font-family: 'Segoe UI (Custom)';\n  font-weight: 300;\n  font-style: italic;\n  size-adjust: 103%;\n  descent-override: 35%;\n  ascent-override: 105%;\n  src: local('Segoe UI Semilight Italic'), local('Segoe UI Italic');\n}\n\n@font-face {\n  font-family: 'Segoe UI (Custom)';\n  font-weight: 400;\n  size-adjust: 103%;\n  descent-override: 35%;\n  ascent-override: 105%;\n  src: local('Segoe UI');\n}\n\n@font-face {\n  font-family: 'Segoe UI (Custom)';\n  font-weight: 400;\n  font-style: italic;\n  size-adjust: 103%;\n  descent-override: 35%;\n  ascent-override: 105%;\n  src: local('Segoe UI Italic');\n}\n\n@font-face {\n  font-family: 'Segoe UI (Custom)';\n  font-weight: 500;\n  size-adjust: 103%;\n  descent-override: 35%;\n  ascent-override: 105%;\n  src: local('Segoe UI Semibold'), local('Segoe UI');\n}\n\n@font-face {\n  font-family: 'Segoe UI (Custom)';\n  font-weight: 500;\n  font-style: italic;\n  size-adjust: 103%;\n  descent-override: 35%;\n  ascent-override: 105%;\n  src: local('Segoe UI Semibold Italic'), local('Segoe UI Italic');\n}\n\n@font-face {\n  font-family: 'Segoe UI (Custom)';\n  font-weight: 700;\n  size-adjust: 103%;\n  descent-override: 35%;\n  ascent-override: 105%;\n  src: local('Segoe UI Bold');\n}\n\n@font-face {\n  font-family: 'Segoe UI (Custom)';\n  font-weight: 700;\n  font-style: italic;\n  size-adjust: 103%;\n  descent-override: 35%;\n  ascent-override: 105%;\n  src: local('Segoe UI Bold Italic');\n}\n\n@font-face {\n  font-family: 'Open Sans (Custom)';\n  font-weight: 300;\n  descent-override: 35%;\n  src: local('Open Sans Light'), local('Open Sans Regular');\n}\n\n@font-face {\n  font-family: 'Open Sans (Custom)';\n  font-weight: 300;\n  font-style: italic;\n  descent-override: 35%;\n  src: local('Open Sans Light Italic'), local('Open Sans Italic');\n}\n\n@font-face {\n  font-family: 'Open Sans (Custom)';\n  font-weight: 400;\n  descent-override: 35%;\n  src: local('Open Sans Regular');\n}\n\n@font-face {\n  font-family: 'Open Sans (Custom)';\n  font-weight: 400;\n  font-style: italic;\n  descent-override: 35%;\n  src: local('Open Sans Italic');\n}\n\n@font-face {\n  font-family: 'Open Sans (Custom)';\n  font-weight: 500;\n  descent-override: 35%;\n  src: local('Open Sans Medium'), local('Open Sans Regular');\n}\n\n@font-face {\n  font-family: 'Open Sans (Custom)';\n  font-weight: 500;\n  font-style: italic;\n  descent-override: 35%;\n  src: local('Open Sans Medium Italic'), local('Open Sans Italic');\n}\n\n@font-face {\n  font-family: 'Open Sans (Custom)';\n  font-weight: 700;\n  descent-override: 35%;\n  src: local('Open Sans Bold');\n}\n\n@font-face {\n  font-family: 'Open Sans (Custom)';\n  font-weight: 700;\n  font-style: italic;\n  descent-override: 35%;\n  src: local('Open Sans Bold Italic');\n}\n\n@font-face {\n  font-family: 'Consolas (Custom)';\n  font-weight: 400;\n  size-adjust: 110%;\n  ascent-override: 85%;\n  descent-override: 22%;\n  src: local('Consolas');\n}\n\n@font-face {\n  font-family: 'Consolas (Custom)';\n  font-weight: 400;\n  font-style: italic;\n  size-adjust: 110%;\n  ascent-override: 85%;\n  descent-override: 22%;\n  src: local('Consolas Italic');\n}\n\n@font-face {\n  font-family: 'Consolas (Custom)';\n  font-weight: 700;\n  size-adjust: 110%;\n  ascent-override: 85%;\n  descent-override: 22%;\n  src: local('Consolas Bold');\n}\n\n@font-face {\n  font-family: 'Consolas (Custom)';\n  font-weight: 700;\n  font-style: italic;\n  size-adjust: 110%;\n  ascent-override: 85%;\n  descent-override: 22%;\n  src: local('Consolas Bold Italic');\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/styles/utilities/align-content.css",
    "content": "@breakpoints {\n  .rt-r-ac-start {\n    align-content: start;\n  }\n\n  .rt-r-ac-center {\n    align-content: center;\n  }\n\n  .rt-r-ac-end {\n    align-content: end;\n  }\n\n  .rt-r-ac-baseline {\n    align-content: baseline;\n  }\n\n  .rt-r-ac-stretch {\n    align-content: stretch;\n  }\n\n  .rt-r-ac-space-between {\n    align-content: space-between;\n  }\n\n  .rt-r-ac-space-around {\n    align-content: space-around;\n  }\n\n  .rt-r-ac-space-evenly {\n    align-content: space-evenly;\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/styles/utilities/align-items.css",
    "content": "@breakpoints {\n  .rt-r-ai-start {\n    align-items: flex-start;\n  }\n\n  .rt-r-ai-center {\n    align-items: center;\n  }\n\n  .rt-r-ai-end {\n    align-items: flex-end;\n  }\n\n  .rt-r-ai-baseline {\n    align-items: baseline;\n  }\n\n  .rt-r-ai-stretch {\n    align-items: stretch;\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/styles/utilities/align-self.css",
    "content": "@breakpoints {\n  .rt-r-as-start {\n    align-self: start;\n  }\n\n  .rt-r-as-center {\n    align-self: center;\n  }\n\n  .rt-r-as-end {\n    align-self: end;\n  }\n\n  .rt-r-as-baseline {\n    align-self: baseline;\n  }\n\n  .rt-r-as-stretch {\n    align-self: stretch;\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/styles/utilities/display.css",
    "content": "@breakpoints {\n  .rt-r-display-block {\n    display: block;\n  }\n\n  .rt-r-display-inline {\n    display: inline;\n  }\n\n  .rt-r-display-inline-block {\n    display: inline-block;\n  }\n\n  .rt-r-display-flex {\n    display: flex;\n  }\n\n  .rt-r-display-inline-flex {\n    display: inline-flex;\n  }\n\n  .rt-r-display-grid {\n    display: grid;\n  }\n\n  .rt-r-display-inline-grid {\n    display: inline-grid;\n  }\n\n  .rt-r-display-none {\n    display: none;\n  }\n\n  .rt-r-display-contents {\n    display: contents;\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/styles/utilities/flex-basis.css",
    "content": ".rt-r-fb {\n  flex-basis: var(--flex-basis);\n}\n@media (--xs) {\n  .xs\\:rt-r-fb {\n    flex-basis: var(--flex-basis-xs);\n  }\n}\n@media (--sm) {\n  .sm\\:rt-r-fb {\n    flex-basis: var(--flex-basis-sm);\n  }\n}\n@media (--md) {\n  .md\\:rt-r-fb {\n    flex-basis: var(--flex-basis-md);\n  }\n}\n@media (--lg) {\n  .lg\\:rt-r-fb {\n    flex-basis: var(--flex-basis-lg);\n  }\n}\n@media (--xl) {\n  .xl\\:rt-r-fb {\n    flex-basis: var(--flex-basis-xl);\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/styles/utilities/flex-direction.css",
    "content": "@breakpoints {\n  .rt-r-fd-row {\n    flex-direction: row;\n  }\n\n  .rt-r-fd-column {\n    flex-direction: column;\n  }\n\n  .rt-r-fd-row-reverse {\n    flex-direction: row-reverse;\n  }\n\n  .rt-r-fd-column-reverse {\n    flex-direction: column-reverse;\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/styles/utilities/flex-grow.css",
    "content": "@breakpoints {\n  .rt-r-fg {\n    /* Keep this selector here to maintain the source order */\n  }\n  .rt-r-fg-0 {\n    flex-grow: 0;\n  }\n  .rt-r-fg-1 {\n    flex-grow: 1;\n  }\n}\n\n.rt-r-fg {\n  flex-grow: var(--flex-grow);\n}\n@media (--xs) {\n  .xs\\:rt-r-fg {\n    flex-grow: var(--flex-grow-xs);\n  }\n}\n@media (--sm) {\n  .sm\\:rt-r-fg {\n    flex-grow: var(--flex-grow-sm);\n  }\n}\n@media (--md) {\n  .md\\:rt-r-fg {\n    flex-grow: var(--flex-grow-md);\n  }\n}\n@media (--lg) {\n  .lg\\:rt-r-fg {\n    flex-grow: var(--flex-grow-lg);\n  }\n}\n@media (--xl) {\n  .xl\\:rt-r-fg {\n    flex-grow: var(--flex-grow-xl);\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/styles/utilities/flex-shrink.css",
    "content": "@breakpoints {\n  .rt-r-fs {\n    /* Keep this selector here to maintain the source order */\n  }\n  .rt-r-fs-0 {\n    flex-shrink: 0;\n  }\n  .rt-r-fs-1 {\n    flex-shrink: 1;\n  }\n}\n\n.rt-r-fs {\n  flex-shrink: var(--flex-shrink);\n}\n@media (--xs) {\n  .xs\\:rt-r-fs {\n    flex-shrink: var(--flex-shrink-xs);\n  }\n}\n@media (--sm) {\n  .sm\\:rt-r-fs {\n    flex-shrink: var(--flex-shrink-sm);\n  }\n}\n@media (--md) {\n  .md\\:rt-r-fs {\n    flex-shrink: var(--flex-shrink-md);\n  }\n}\n@media (--lg) {\n  .lg\\:rt-r-fs {\n    flex-shrink: var(--flex-shrink-lg);\n  }\n}\n@media (--xl) {\n  .xl\\:rt-r-fs {\n    flex-shrink: var(--flex-shrink-xl);\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/styles/utilities/flex-wrap.css",
    "content": "@breakpoints {\n  .rt-r-fw-nowrap {\n    flex-wrap: nowrap;\n  }\n\n  .rt-r-fw-wrap {\n    flex-wrap: wrap;\n  }\n\n  .rt-r-fw-wrap-reverse {\n    flex-wrap: wrap-reverse;\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/styles/utilities/font-weight.css",
    "content": "@breakpoints {\n  .rt-r-weight-light {\n    font-weight: var(--font-weight-light);\n  }\n\n  .rt-r-weight-regular {\n    font-weight: var(--font-weight-regular);\n  }\n\n  .rt-r-weight-medium {\n    font-weight: var(--font-weight-medium);\n  }\n\n  .rt-r-weight-bold {\n    font-weight: var(--font-weight-bold);\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/styles/utilities/gap.css",
    "content": "@breakpoints {\n  .rt-r-gap {\n    /* Keep this selector here to maintain the source order */\n  }\n  .rt-r-gap-0 {\n    gap: 0;\n  }\n  .rt-r-gap-1 {\n    gap: var(--space-1);\n  }\n  .rt-r-gap-2 {\n    gap: var(--space-2);\n  }\n  .rt-r-gap-3 {\n    gap: var(--space-3);\n  }\n  .rt-r-gap-4 {\n    gap: var(--space-4);\n  }\n  .rt-r-gap-5 {\n    gap: var(--space-5);\n  }\n  .rt-r-gap-6 {\n    gap: var(--space-6);\n  }\n  .rt-r-gap-7 {\n    gap: var(--space-7);\n  }\n  .rt-r-gap-8 {\n    gap: var(--space-8);\n  }\n  .rt-r-gap-9 {\n    gap: var(--space-9);\n  }\n  .rt-r-cg {\n    /* Keep this selector here to maintain the source order */\n  }\n  .rt-r-cg-0 {\n    column-gap: 0;\n  }\n  .rt-r-cg-1 {\n    column-gap: var(--space-1);\n  }\n  .rt-r-cg-2 {\n    column-gap: var(--space-2);\n  }\n  .rt-r-cg-3 {\n    column-gap: var(--space-3);\n  }\n  .rt-r-cg-4 {\n    column-gap: var(--space-4);\n  }\n  .rt-r-cg-5 {\n    column-gap: var(--space-5);\n  }\n  .rt-r-cg-6 {\n    column-gap: var(--space-6);\n  }\n  .rt-r-cg-7 {\n    column-gap: var(--space-7);\n  }\n  .rt-r-cg-8 {\n    column-gap: var(--space-8);\n  }\n  .rt-r-cg-9 {\n    column-gap: var(--space-9);\n  }\n  .rt-r-rg {\n    /* Keep this selector here to maintain the source order */\n  }\n  .rt-r-rg-0 {\n    row-gap: 0;\n  }\n  .rt-r-rg-1 {\n    row-gap: var(--space-1);\n  }\n  .rt-r-rg-2 {\n    row-gap: var(--space-2);\n  }\n  .rt-r-rg-3 {\n    row-gap: var(--space-3);\n  }\n  .rt-r-rg-4 {\n    row-gap: var(--space-4);\n  }\n  .rt-r-rg-5 {\n    row-gap: var(--space-5);\n  }\n  .rt-r-rg-6 {\n    row-gap: var(--space-6);\n  }\n  .rt-r-rg-7 {\n    row-gap: var(--space-7);\n  }\n  .rt-r-rg-8 {\n    row-gap: var(--space-8);\n  }\n  .rt-r-rg-9 {\n    row-gap: var(--space-9);\n  }\n}\n\n.rt-r-gap {\n  gap: var(--gap);\n}\n.rt-r-cg {\n  column-gap: var(--column-gap);\n}\n.rt-r-rg {\n  row-gap: var(--row-gap);\n}\n@media (--xs) {\n  .xs\\:rt-r-gap {\n    gap: var(--gap-xs);\n  }\n  .xs\\:rt-r-cg {\n    column-gap: var(--column-gap-xs);\n  }\n  .xs\\:rt-r-rg {\n    row-gap: var(--row-gap-xs);\n  }\n}\n@media (--sm) {\n  .sm\\:rt-r-gap {\n    gap: var(--gap-sm);\n  }\n  .sm\\:rt-r-cg {\n    column-gap: var(--column-gap-sm);\n  }\n  .sm\\:rt-r-rg {\n    row-gap: var(--row-gap-sm);\n  }\n}\n@media (--md) {\n  .md\\:rt-r-gap {\n    gap: var(--gap-md);\n  }\n  .md\\:rt-r-cg {\n    column-gap: var(--column-gap-md);\n  }\n  .md\\:rt-r-rg {\n    row-gap: var(--row-gap-md);\n  }\n}\n@media (--lg) {\n  .lg\\:rt-r-gap {\n    gap: var(--gap-lg);\n  }\n  .lg\\:rt-r-cg {\n    column-gap: var(--column-gap-lg);\n  }\n  .lg\\:rt-r-rg {\n    row-gap: var(--row-gap-lg);\n  }\n}\n@media (--xl) {\n  .xl\\:rt-r-gap {\n    gap: var(--gap-xl);\n  }\n  .xl\\:rt-r-cg {\n    column-gap: var(--column-gap-xl);\n  }\n  .xl\\:rt-r-rg {\n    row-gap: var(--row-gap-xl);\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/styles/utilities/grid-area.css",
    "content": ".rt-r-ga {\n  grid-area: var(--grid-area);\n}\n\n@media (--xs) {\n  .xs\\:rt-r-ga {\n    grid-area: var(--grid-area-xs);\n  }\n}\n\n@media (--sm) {\n  .sm\\:rt-r-ga {\n    grid-area: var(--grid-area-sm);\n  }\n}\n\n@media (--md) {\n  .md\\:rt-r-ga {\n    grid-area: var(--grid-area-md);\n  }\n}\n\n@media (--lg) {\n  .lg\\:rt-r-ga {\n    grid-area: var(--grid-area-lg);\n  }\n}\n\n@media (--xl) {\n  .xl\\:rt-r-ga {\n    grid-area: var(--grid-area-xl);\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/styles/utilities/grid-auto-flow.css",
    "content": "@breakpoints {\n  .rt-r-gaf-row {\n    grid-auto-flow: row;\n  }\n\n  .rt-r-gaf-column {\n    grid-auto-flow: column;\n  }\n\n  .rt-r-gaf-dense {\n    grid-auto-flow: dense;\n  }\n\n  .rt-r-gaf-row-dense {\n    grid-auto-flow: row dense;\n  }\n\n  .rt-r-gaf-column-dense {\n    grid-auto-flow: column dense;\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/styles/utilities/grid-column-end.css",
    "content": "@breakpoints {\n  .rt-r-gce {\n    /* Keep this selector here to maintain the source order */\n  }\n  .rt-r-gce-1 {\n    grid-column-end: 1;\n  }\n  .rt-r-gce-2 {\n    grid-column-end: 2;\n  }\n  .rt-r-gce-3 {\n    grid-column-end: 3;\n  }\n  .rt-r-gce-4 {\n    grid-column-end: 4;\n  }\n  .rt-r-gce-5 {\n    grid-column-end: 5;\n  }\n  .rt-r-gce-6 {\n    grid-column-end: 6;\n  }\n  .rt-r-gce-7 {\n    grid-column-end: 7;\n  }\n  .rt-r-gce-8 {\n    grid-column-end: 8;\n  }\n  .rt-r-gce-9 {\n    grid-column-end: 9;\n  }\n}\n\n.rt-r-gce {\n  grid-column-end: var(--grid-column-end);\n}\n@media (--xs) {\n  .xs\\:rt-r-gce {\n    grid-column-end: var(--grid-column-end-xs);\n  }\n}\n@media (--sm) {\n  .sm\\:rt-r-gce {\n    grid-column-end: var(--grid-column-end-sm);\n  }\n}\n@media (--md) {\n  .md\\:rt-r-gce {\n    grid-column-end: var(--grid-column-end-md);\n  }\n}\n@media (--lg) {\n  .lg\\:rt-r-gce {\n    grid-column-end: var(--grid-column-end-lg);\n  }\n}\n@media (--xl) {\n  .xl\\:rt-r-gce {\n    grid-column-end: var(--grid-column-end-xl);\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/styles/utilities/grid-column-start.css",
    "content": "@breakpoints {\n  .rt-r-gcs {\n    /* Keep this selector here to maintain the source order */\n  }\n  .rt-r-gcs-1 {\n    grid-column-start: 1;\n  }\n  .rt-r-gcs-2 {\n    grid-column-start: 2;\n  }\n  .rt-r-gcs-3 {\n    grid-column-start: 3;\n  }\n  .rt-r-gcs-4 {\n    grid-column-start: 4;\n  }\n  .rt-r-gcs-5 {\n    grid-column-start: 5;\n  }\n  .rt-r-gcs-6 {\n    grid-column-start: 6;\n  }\n  .rt-r-gcs-7 {\n    grid-column-start: 7;\n  }\n  .rt-r-gcs-8 {\n    grid-column-start: 8;\n  }\n  .rt-r-gcs-9 {\n    grid-column-start: 9;\n  }\n}\n\n.rt-r-gcs {\n  grid-column-start: var(--grid-column-start);\n}\n@media (--xs) {\n  .xs\\:rt-r-gcs {\n    grid-column-start: var(--grid-column-start-xs);\n  }\n}\n@media (--sm) {\n  .sm\\:rt-r-gcs {\n    grid-column-start: var(--grid-column-start-sm);\n  }\n}\n@media (--md) {\n  .md\\:rt-r-gcs {\n    grid-column-start: var(--grid-column-start-md);\n  }\n}\n@media (--lg) {\n  .lg\\:rt-r-gcs {\n    grid-column-start: var(--grid-column-start-lg);\n  }\n}\n@media (--xl) {\n  .xl\\:rt-r-gcs {\n    grid-column-start: var(--grid-column-start-xl);\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/styles/utilities/grid-column.css",
    "content": "@breakpoints {\n  .rt-r-gc {\n    /* Keep this selector here to maintain the source order */\n  }\n  .rt-r-gc-1 {\n    grid-column: 1;\n  }\n  .rt-r-gc-2 {\n    grid-column: 2;\n  }\n  .rt-r-gc-3 {\n    grid-column: 3;\n  }\n  .rt-r-gc-4 {\n    grid-column: 4;\n  }\n  .rt-r-gc-5 {\n    grid-column: 5;\n  }\n  .rt-r-gc-6 {\n    grid-column: 6;\n  }\n  .rt-r-gc-7 {\n    grid-column: 7;\n  }\n  .rt-r-gc-8 {\n    grid-column: 8;\n  }\n  .rt-r-gc-9 {\n    grid-column: 9;\n  }\n}\n\n.rt-r-gc {\n  grid-column: var(--grid-column);\n}\n@media (--xs) {\n  .xs\\:rt-r-gc {\n    grid-column: var(--grid-column-xs);\n  }\n}\n@media (--sm) {\n  .sm\\:rt-r-gc {\n    grid-column: var(--grid-column-sm);\n  }\n}\n@media (--md) {\n  .md\\:rt-r-gc {\n    grid-column: var(--grid-column-md);\n  }\n}\n@media (--lg) {\n  .lg\\:rt-r-gc {\n    grid-column: var(--grid-column-lg);\n  }\n}\n@media (--xl) {\n  .xl\\:rt-r-gc {\n    grid-column: var(--grid-column-xl);\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/styles/utilities/grid-row-end.css",
    "content": "@breakpoints {\n  .rt-r-gre {\n    /* Keep this selector here to maintain the source order */\n  }\n  .rt-r-gre-1 {\n    grid-row-end: 1;\n  }\n  .rt-r-gre-2 {\n    grid-row-end: 2;\n  }\n  .rt-r-gre-3 {\n    grid-row-end: 3;\n  }\n  .rt-r-gre-4 {\n    grid-row-end: 4;\n  }\n  .rt-r-gre-5 {\n    grid-row-end: 5;\n  }\n  .rt-r-gre-6 {\n    grid-row-end: 6;\n  }\n  .rt-r-gre-7 {\n    grid-row-end: 7;\n  }\n  .rt-r-gre-8 {\n    grid-row-end: 8;\n  }\n  .rt-r-gre-9 {\n    grid-row-end: 9;\n  }\n}\n\n.rt-r-gre {\n  grid-row-end: var(--grid-row-end);\n}\n@media (--xs) {\n  .xs\\:rt-r-gre {\n    grid-row-end: var(--grid-row-end-xs);\n  }\n}\n@media (--sm) {\n  .sm\\:rt-r-gre {\n    grid-row-end: var(--grid-row-end-sm);\n  }\n}\n@media (--md) {\n  .md\\:rt-r-gre {\n    grid-row-end: var(--grid-row-end-md);\n  }\n}\n@media (--lg) {\n  .lg\\:rt-r-gre {\n    grid-row-end: var(--grid-row-end-lg);\n  }\n}\n@media (--xl) {\n  .xl\\:rt-r-gre {\n    grid-row-end: var(--grid-row-end-xl);\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/styles/utilities/grid-row-start.css",
    "content": "@breakpoints {\n  .rt-r-grs {\n    /* Keep this selector here to maintain the source order */\n  }\n  .rt-r-grs-1 {\n    grid-row-start: 1;\n  }\n  .rt-r-grs-2 {\n    grid-row-start: 2;\n  }\n  .rt-r-grs-3 {\n    grid-row-start: 3;\n  }\n  .rt-r-grs-4 {\n    grid-row-start: 4;\n  }\n  .rt-r-grs-5 {\n    grid-row-start: 5;\n  }\n  .rt-r-grs-6 {\n    grid-row-start: 6;\n  }\n  .rt-r-grs-7 {\n    grid-row-start: 7;\n  }\n  .rt-r-grs-8 {\n    grid-row-start: 8;\n  }\n  .rt-r-grs-9 {\n    grid-row-start: 9;\n  }\n}\n\n.rt-r-grs {\n  grid-row-start: var(--grid-row-start);\n}\n@media (--xs) {\n  .xs\\:rt-r-grs {\n    grid-row-start: var(--grid-row-start-xs);\n  }\n}\n@media (--sm) {\n  .sm\\:rt-r-grs {\n    grid-row-start: var(--grid-row-start-sm);\n  }\n}\n@media (--md) {\n  .md\\:rt-r-grs {\n    grid-row-start: var(--grid-row-start-md);\n  }\n}\n@media (--lg) {\n  .lg\\:rt-r-grs {\n    grid-row-start: var(--grid-row-start-lg);\n  }\n}\n@media (--xl) {\n  .xl\\:rt-r-grs {\n    grid-row-start: var(--grid-row-start-xl);\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/styles/utilities/grid-row.css",
    "content": "@breakpoints {\n  .rt-r-gr {\n    /* Keep this selector here to maintain the source order */\n  }\n  .rt-r-gr-1 {\n    grid-row: 1;\n  }\n  .rt-r-gr-2 {\n    grid-row: 2;\n  }\n  .rt-r-gr-3 {\n    grid-row: 3;\n  }\n  .rt-r-gr-4 {\n    grid-row: 4;\n  }\n  .rt-r-gr-5 {\n    grid-row: 5;\n  }\n  .rt-r-gr-6 {\n    grid-row: 6;\n  }\n  .rt-r-gr-7 {\n    grid-row: 7;\n  }\n  .rt-r-gr-8 {\n    grid-row: 8;\n  }\n  .rt-r-gr-9 {\n    grid-row: 9;\n  }\n}\n\n.rt-r-gr {\n  grid-row: var(--grid-row);\n}\n@media (--xs) {\n  .xs\\:rt-r-gr {\n    grid-row: var(--grid-row-xs);\n  }\n}\n@media (--sm) {\n  .sm\\:rt-r-gr {\n    grid-row: var(--grid-row-sm);\n  }\n}\n@media (--md) {\n  .md\\:rt-r-gr {\n    grid-row: var(--grid-row-md);\n  }\n}\n@media (--lg) {\n  .lg\\:rt-r-gr {\n    grid-row: var(--grid-row-lg);\n  }\n}\n@media (--xl) {\n  .xl\\:rt-r-gr {\n    grid-row: var(--grid-row-xl);\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/styles/utilities/grid-template-areas.css",
    "content": ".rt-r-gta {\n  grid-template-areas: var(--grid-template-areas);\n}\n@media (--xs) {\n  .xs\\:rt-r-gta {\n    grid-template-areas: var(--grid-template-areas-xs);\n  }\n}\n@media (--sm) {\n  .sm\\:rt-r-gta {\n    grid-template-areas: var(--grid-template-areas-sm);\n  }\n}\n@media (--md) {\n  .md\\:rt-r-gta {\n    grid-template-areas: var(--grid-template-areas-md);\n  }\n}\n@media (--lg) {\n  .lg\\:rt-r-gta {\n    grid-template-areas: var(--grid-template-areas-lg);\n  }\n}\n@media (--xl) {\n  .xl\\:rt-r-gta {\n    grid-template-areas: var(--grid-template-areas-xl);\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/styles/utilities/grid-template-columns.css",
    "content": "@breakpoints {\n  .rt-r-gtc {\n    /* Keep this selector here to maintain the source order */\n  }\n  .rt-r-gtc-1 {\n    grid-template-columns: minmax(0, 1fr);\n  }\n  .rt-r-gtc-2 {\n    grid-template-columns: repeat(2, minmax(0, 1fr));\n  }\n  .rt-r-gtc-3 {\n    grid-template-columns: repeat(3, minmax(0, 1fr));\n  }\n  .rt-r-gtc-4 {\n    grid-template-columns: repeat(4, minmax(0, 1fr));\n  }\n  .rt-r-gtc-5 {\n    grid-template-columns: repeat(5, minmax(0, 1fr));\n  }\n  .rt-r-gtc-6 {\n    grid-template-columns: repeat(6, minmax(0, 1fr));\n  }\n  .rt-r-gtc-7 {\n    grid-template-columns: repeat(7, minmax(0, 1fr));\n  }\n  .rt-r-gtc-8 {\n    grid-template-columns: repeat(8, minmax(0, 1fr));\n  }\n  .rt-r-gtc-9 {\n    grid-template-columns: repeat(9, minmax(0, 1fr));\n  }\n}\n\n.rt-r-gtc {\n  grid-template-columns: var(--grid-template-columns);\n}\n@media (--xs) {\n  .xs\\:rt-r-gtc {\n    grid-template-columns: var(--grid-template-columns-xs);\n  }\n}\n@media (--sm) {\n  .sm\\:rt-r-gtc {\n    grid-template-columns: var(--grid-template-columns-sm);\n  }\n}\n@media (--md) {\n  .md\\:rt-r-gtc {\n    grid-template-columns: var(--grid-template-columns-md);\n  }\n}\n@media (--lg) {\n  .lg\\:rt-r-gtc {\n    grid-template-columns: var(--grid-template-columns-lg);\n  }\n}\n@media (--xl) {\n  .xl\\:rt-r-gtc {\n    grid-template-columns: var(--grid-template-columns-xl);\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/styles/utilities/grid-template-rows.css",
    "content": "@breakpoints {\n  .rt-r-gtr {\n    /* Keep this selector here to maintain the source order */\n  }\n  .rt-r-gtr-1 {\n    grid-template-rows: minmax(0, 1fr);\n  }\n  .rt-r-gtr-2 {\n    grid-template-rows: repeat(2, minmax(0, 1fr));\n  }\n  .rt-r-gtr-3 {\n    grid-template-rows: repeat(3, minmax(0, 1fr));\n  }\n  .rt-r-gtr-4 {\n    grid-template-rows: repeat(4, minmax(0, 1fr));\n  }\n  .rt-r-gtr-5 {\n    grid-template-rows: repeat(5, minmax(0, 1fr));\n  }\n  .rt-r-gtr-6 {\n    grid-template-rows: repeat(6, minmax(0, 1fr));\n  }\n  .rt-r-gtr-7 {\n    grid-template-rows: repeat(7, minmax(0, 1fr));\n  }\n  .rt-r-gtr-8 {\n    grid-template-rows: repeat(8, minmax(0, 1fr));\n  }\n  .rt-r-gtr-9 {\n    grid-template-rows: repeat(9, minmax(0, 1fr));\n  }\n}\n\n.rt-r-gtr {\n  grid-template-rows: var(--grid-template-rows);\n}\n@media (--xs) {\n  .xs\\:rt-r-gtr {\n    grid-template-rows: var(--grid-template-rows-xs);\n  }\n}\n@media (--sm) {\n  .sm\\:rt-r-gtr {\n    grid-template-rows: var(--grid-template-rows-sm);\n  }\n}\n@media (--md) {\n  .md\\:rt-r-gtr {\n    grid-template-rows: var(--grid-template-rows-md);\n  }\n}\n@media (--lg) {\n  .lg\\:rt-r-gtr {\n    grid-template-rows: var(--grid-template-rows-lg);\n  }\n}\n@media (--xl) {\n  .xl\\:rt-r-gtr {\n    grid-template-rows: var(--grid-template-rows-xl);\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/styles/utilities/height.css",
    "content": ".rt-r-h {\n  height: var(--height);\n}\n@media (--xs) {\n  .xs\\:rt-r-h {\n    height: var(--height-xs);\n  }\n}\n@media (--sm) {\n  .sm\\:rt-r-h {\n    height: var(--height-sm);\n  }\n}\n@media (--md) {\n  .md\\:rt-r-h {\n    height: var(--height-md);\n  }\n}\n@media (--lg) {\n  .lg\\:rt-r-h {\n    height: var(--height-lg);\n  }\n}\n@media (--xl) {\n  .xl\\:rt-r-h {\n    height: var(--height-xl);\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/styles/utilities/index.css",
    "content": "@import './layout.css';\n\n@import './font-weight.css';\n@import './leading-trim.css';\n@import './resize.css';\n@import './table-layout.css';\n@import './text-align.css';\n@import './text-wrap.css';\n@import './truncate.css';\n@import './vertical-align.css';\n"
  },
  {
    "path": "packages/radix-ui-themes/src/styles/utilities/inset.css",
    "content": "/* * * * * * * * * * * * * * * * * * * */\n/*                                     */\n/*                Inset                */\n/*                                     */\n/* * * * * * * * * * * * * * * * * * * */\n\n@breakpoints {\n  .rt-r-inset {\n    /* Keep this selector here to maintain the source order */\n  }\n  .rt-r-inset-0 {\n    inset: 0;\n  }\n  .rt-r-inset-1 {\n    inset: var(--space-1);\n  }\n  .rt-r-inset-2 {\n    inset: var(--space-2);\n  }\n  .rt-r-inset-3 {\n    inset: var(--space-3);\n  }\n  .rt-r-inset-4 {\n    inset: var(--space-4);\n  }\n  .rt-r-inset-5 {\n    inset: var(--space-5);\n  }\n  .rt-r-inset-6 {\n    inset: var(--space-6);\n  }\n  .rt-r-inset-7 {\n    inset: var(--space-7);\n  }\n  .rt-r-inset-8 {\n    inset: var(--space-8);\n  }\n  .rt-r-inset-9 {\n    inset: var(--space-9);\n  }\n}\n\n.rt-r-inset {\n  inset: var(--inset);\n}\n@media (--xs) {\n  .xs\\:rt-r-inset {\n    inset: var(--inset-xs);\n  }\n}\n@media (--sm) {\n  .sm\\:rt-r-inset {\n    inset: var(--inset-sm);\n  }\n}\n@media (--md) {\n  .md\\:rt-r-inset {\n    inset: var(--inset-md);\n  }\n}\n@media (--lg) {\n  .lg\\:rt-r-inset {\n    inset: var(--inset-lg);\n  }\n}\n@media (--xl) {\n  .xl\\:rt-r-inset {\n    inset: var(--inset-xl);\n  }\n}\n\n/* * * * * * * * * * * * * * * * * * * */\n/*                                     */\n/*                 Top                 */\n/*                                     */\n/* * * * * * * * * * * * * * * * * * * */\n\n@breakpoints {\n  .rt-r-top {\n    /* Keep this selector here to maintain the source order */\n  }\n  .rt-r-top-0 {\n    top: 0;\n  }\n  .rt-r-top-1 {\n    top: var(--space-1);\n  }\n  .rt-r-top-2 {\n    top: var(--space-2);\n  }\n  .rt-r-top-3 {\n    top: var(--space-3);\n  }\n  .rt-r-top-4 {\n    top: var(--space-4);\n  }\n  .rt-r-top-5 {\n    top: var(--space-5);\n  }\n  .rt-r-top-6 {\n    top: var(--space-6);\n  }\n  .rt-r-top-7 {\n    top: var(--space-7);\n  }\n  .rt-r-top-8 {\n    top: var(--space-8);\n  }\n  .rt-r-top-9 {\n    top: var(--space-9);\n  }\n}\n\n.rt-r-top {\n  top: var(--top);\n}\n@media (--xs) {\n  .xs\\:rt-r-top {\n    top: var(--top-xs);\n  }\n}\n@media (--sm) {\n  .sm\\:rt-r-top {\n    top: var(--top-sm);\n  }\n}\n@media (--md) {\n  .md\\:rt-r-top {\n    top: var(--top-md);\n  }\n}\n@media (--lg) {\n  .lg\\:rt-r-top {\n    top: var(--top-lg);\n  }\n}\n@media (--xl) {\n  .xl\\:rt-r-top {\n    top: var(--top-xl);\n  }\n}\n\n/* * * * * * * * * * * * * * * * * * * */\n/*                                     */\n/*                Right                */\n/*                                     */\n/* * * * * * * * * * * * * * * * * * * */\n\n@breakpoints {\n  .rt-r-right {\n    /* Keep this selector here to maintain the source order */\n  }\n  .rt-r-right-0 {\n    right: 0;\n  }\n  .rt-r-right-1 {\n    right: var(--space-1);\n  }\n  .rt-r-right-2 {\n    right: var(--space-2);\n  }\n  .rt-r-right-3 {\n    right: var(--space-3);\n  }\n  .rt-r-right-4 {\n    right: var(--space-4);\n  }\n  .rt-r-right-5 {\n    right: var(--space-5);\n  }\n  .rt-r-right-6 {\n    right: var(--space-6);\n  }\n  .rt-r-right-7 {\n    right: var(--space-7);\n  }\n  .rt-r-right-8 {\n    right: var(--space-8);\n  }\n  .rt-r-right-9 {\n    right: var(--space-9);\n  }\n}\n\n.rt-r-right {\n  right: var(--right);\n}\n@media (--xs) {\n  .xs\\:rt-r-right {\n    right: var(--right-xs);\n  }\n}\n@media (--sm) {\n  .sm\\:rt-r-right {\n    right: var(--right-sm);\n  }\n}\n@media (--md) {\n  .md\\:rt-r-right {\n    right: var(--right-md);\n  }\n}\n@media (--lg) {\n  .lg\\:rt-r-right {\n    right: var(--right-lg);\n  }\n}\n@media (--xl) {\n  .xl\\:rt-r-right {\n    right: var(--right-xl);\n  }\n}\n\n/* * * * * * * * * * * * * * * * * * * */\n/*                                     */\n/*               Bottom                */\n/*                                     */\n/* * * * * * * * * * * * * * * * * * * */\n\n@breakpoints {\n  .rt-r-bottom {\n    /* Keep this selector here to maintain the source order */\n  }\n  .rt-r-bottom-0 {\n    bottom: 0;\n  }\n  .rt-r-bottom-1 {\n    bottom: var(--space-1);\n  }\n  .rt-r-bottom-2 {\n    bottom: var(--space-2);\n  }\n  .rt-r-bottom-3 {\n    bottom: var(--space-3);\n  }\n  .rt-r-bottom-4 {\n    bottom: var(--space-4);\n  }\n  .rt-r-bottom-5 {\n    bottom: var(--space-5);\n  }\n  .rt-r-bottom-6 {\n    bottom: var(--space-6);\n  }\n  .rt-r-bottom-7 {\n    bottom: var(--space-7);\n  }\n  .rt-r-bottom-8 {\n    bottom: var(--space-8);\n  }\n  .rt-r-bottom-9 {\n    bottom: var(--space-9);\n  }\n}\n\n.rt-r-bottom {\n  bottom: var(--bottom);\n}\n@media (--xs) {\n  .xs\\:rt-r-bottom {\n    bottom: var(--bottom-xs);\n  }\n}\n@media (--sm) {\n  .sm\\:rt-r-bottom {\n    bottom: var(--bottom-sm);\n  }\n}\n@media (--md) {\n  .md\\:rt-r-bottom {\n    bottom: var(--bottom-md);\n  }\n}\n@media (--lg) {\n  .lg\\:rt-r-bottom {\n    bottom: var(--bottom-lg);\n  }\n}\n@media (--xl) {\n  .xl\\:rt-r-bottom {\n    bottom: var(--bottom-xl);\n  }\n}\n\n/* * * * * * * * * * * * * * * * * * * */\n/*                                     */\n/*                Left                 */\n/*                                     */\n/* * * * * * * * * * * * * * * * * * * */\n\n@breakpoints {\n  .rt-r-left {\n    /* Keep this selector here to maintain the source order */\n  }\n  .rt-r-left-0 {\n    left: 0;\n  }\n  .rt-r-left-1 {\n    left: var(--space-1);\n  }\n  .rt-r-left-2 {\n    left: var(--space-2);\n  }\n  .rt-r-left-3 {\n    left: var(--space-3);\n  }\n  .rt-r-left-4 {\n    left: var(--space-4);\n  }\n  .rt-r-left-5 {\n    left: var(--space-5);\n  }\n  .rt-r-left-6 {\n    left: var(--space-6);\n  }\n  .rt-r-left-7 {\n    left: var(--space-7);\n  }\n  .rt-r-left-8 {\n    left: var(--space-8);\n  }\n  .rt-r-left-9 {\n    left: var(--space-9);\n  }\n}\n\n.rt-r-left {\n  left: var(--left);\n}\n@media (--xs) {\n  .xs\\:rt-r-left {\n    left: var(--left-xs);\n  }\n}\n@media (--sm) {\n  .sm\\:rt-r-left {\n    left: var(--left-sm);\n  }\n}\n@media (--md) {\n  .md\\:rt-r-left {\n    left: var(--left-md);\n  }\n}\n@media (--lg) {\n  .lg\\:rt-r-left {\n    left: var(--left-lg);\n  }\n}\n@media (--xl) {\n  .xl\\:rt-r-left {\n    left: var(--left-xl);\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/styles/utilities/justify-content.css",
    "content": "@breakpoints {\n  .rt-r-jc-start {\n    justify-content: flex-start;\n  }\n\n  .rt-r-jc-center {\n    justify-content: center;\n  }\n\n  .rt-r-jc-end {\n    justify-content: flex-end;\n  }\n\n  .rt-r-jc-space-between {\n    justify-content: space-between;\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/styles/utilities/justify-items.css",
    "content": "@breakpoints {\n  .rt-r-ji-start {\n    justify-items: start;\n  }\n\n  .rt-r-ji-center {\n    justify-items: center;\n  }\n\n  .rt-r-ji-end {\n    justify-items: end;\n  }\n\n  .rt-r-ji-baseline {\n    justify-items: baseline;\n  }\n\n  .rt-r-ji-stretch {\n    justify-items: stretch;\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/styles/utilities/justify-self.css",
    "content": "@breakpoints {\n  .rt-r-js-start {\n    justify-self: start;\n  }\n\n  .rt-r-js-center {\n    justify-self: center;\n  }\n\n  .rt-r-js-end {\n    justify-self: end;\n  }\n\n  .rt-r-js-baseline {\n    justify-self: baseline;\n  }\n\n  .rt-r-js-stretch {\n    justify-self: stretch;\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/styles/utilities/layout.css",
    "content": "@import '../breakpoints.css';\n\n@import './align-content.css';\n@import './align-items.css';\n@import './align-self.css';\n@import './display.css';\n@import './flex-basis.css';\n@import './flex-direction.css';\n@import './flex-grow.css';\n@import './flex-shrink.css';\n@import './flex-wrap.css';\n@import './gap.css';\n@import './grid-area.css';\n@import './grid-auto-flow.css';\n@import './grid-column.css';\n@import './grid-column-start.css';\n@import './grid-column-end.css';\n@import './grid-row.css';\n@import './grid-row-start.css';\n@import './grid-row-end.css';\n@import './grid-template-areas.css';\n@import './grid-template-columns.css';\n@import './grid-template-rows.css';\n@import './height.css';\n@import './min-height.css';\n@import './max-height.css';\n@import './inset.css';\n@import './justify-content.css';\n@import './justify-items.css';\n@import './justify-self.css';\n@import './margin.css';\n@import './overflow.css';\n@import './padding.css';\n@import './position.css';\n@import './width.css';\n@import './min-width.css';\n@import './max-width.css';\n"
  },
  {
    "path": "packages/radix-ui-themes/src/styles/utilities/leading-trim.css",
    "content": "@breakpoints {\n  .rt-r-lt-normal::before,\n  .rt-r-lt-end::before,\n  .rt-r-lt-normal::after,\n  .rt-r-lt-start::after {\n    content: none;\n  }\n\n  .rt-r-lt-start::before,\n  .rt-r-lt-both::before,\n  .rt-r-lt-end::after,\n  .rt-r-lt-both::after {\n    content: '';\n    display: table;\n  }\n\n  .rt-r-lt-start::before,\n  .rt-r-lt-both::before {\n    margin-bottom: calc(\n      var(--leading-trim-start, var(--default-leading-trim-start)) -\n        var(--line-height, calc(1em * var(--default-line-height))) / 2\n    );\n  }\n\n  .rt-r-lt-end::after,\n  .rt-r-lt-both::after {\n    margin-top: calc(\n      var(--leading-trim-end, var(--default-leading-trim-end)) -\n        var(--line-height, calc(1em * var(--default-line-height))) / 2\n    );\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/styles/utilities/margin.css",
    "content": "/* * * * * * * * * * * * * * * * * * * */\n/*                                     */\n/*              All sides              */\n/*                                     */\n/* * * * * * * * * * * * * * * * * * * */\n\n@breakpoints {\n  .rt-r-m,\n  .rt-r-m-0,\n  .rt-r-m-1,\n  .rt-r-m-2,\n  .rt-r-m-3,\n  .rt-r-m-4,\n  .rt-r-m-5,\n  .rt-r-m-6,\n  .rt-r-m-7,\n  .rt-r-m-8,\n  .rt-r-m-9,\n  .-rt-r-m-1,\n  .-rt-r-m-2,\n  .-rt-r-m-3,\n  .-rt-r-m-4,\n  .-rt-r-m-5,\n  .-rt-r-m-6,\n  .-rt-r-m-7,\n  .-rt-r-m-8,\n  .-rt-r-m-9 {\n    margin-top: var(--margin-top-override, var(--margin-top));\n    margin-right: var(--margin-right-override, var(--margin-right));\n    margin-bottom: var(--margin-bottom-override, var(--margin-bottom));\n    margin-left: var(--margin-left-override, var(--margin-left));\n  }\n  .rt-r-m {\n    /* Keep this selector here to maintain the source order */\n  }\n  .rt-r-m-0 {\n    --margin-top: 0px;\n    --margin-right: 0px;\n    --margin-bottom: 0px;\n    --margin-left: 0px;\n  }\n  .rt-r-m-1 {\n    --margin-top: var(--space-1);\n    --margin-right: var(--space-1);\n    --margin-bottom: var(--space-1);\n    --margin-left: var(--space-1);\n  }\n  .rt-r-m-2 {\n    --margin-top: var(--space-2);\n    --margin-right: var(--space-2);\n    --margin-bottom: var(--space-2);\n    --margin-left: var(--space-2);\n  }\n  .rt-r-m-3 {\n    --margin-top: var(--space-3);\n    --margin-right: var(--space-3);\n    --margin-bottom: var(--space-3);\n    --margin-left: var(--space-3);\n  }\n  .rt-r-m-4 {\n    --margin-top: var(--space-4);\n    --margin-right: var(--space-4);\n    --margin-bottom: var(--space-4);\n    --margin-left: var(--space-4);\n  }\n  .rt-r-m-5 {\n    --margin-top: var(--space-5);\n    --margin-right: var(--space-5);\n    --margin-bottom: var(--space-5);\n    --margin-left: var(--space-5);\n  }\n  .rt-r-m-6 {\n    --margin-top: var(--space-6);\n    --margin-right: var(--space-6);\n    --margin-bottom: var(--space-6);\n    --margin-left: var(--space-6);\n  }\n  .rt-r-m-7 {\n    --margin-top: var(--space-7);\n    --margin-right: var(--space-7);\n    --margin-bottom: var(--space-7);\n    --margin-left: var(--space-7);\n  }\n  .rt-r-m-8 {\n    --margin-top: var(--space-8);\n    --margin-right: var(--space-8);\n    --margin-bottom: var(--space-8);\n    --margin-left: var(--space-8);\n  }\n  .rt-r-m-9 {\n    --margin-top: var(--space-9);\n    --margin-right: var(--space-9);\n    --margin-bottom: var(--space-9);\n    --margin-left: var(--space-9);\n  }\n  .-rt-r-m-1 {\n    --margin-top: calc(-1 * var(--space-1));\n    --margin-right: calc(-1 * var(--space-1));\n    --margin-bottom: calc(-1 * var(--space-1));\n    --margin-left: calc(-1 * var(--space-1));\n  }\n  .-rt-r-m-2 {\n    --margin-top: calc(-1 * var(--space-2));\n    --margin-right: calc(-1 * var(--space-2));\n    --margin-bottom: calc(-1 * var(--space-2));\n    --margin-left: calc(-1 * var(--space-2));\n  }\n  .-rt-r-m-3 {\n    --margin-top: calc(-1 * var(--space-3));\n    --margin-right: calc(-1 * var(--space-3));\n    --margin-bottom: calc(-1 * var(--space-3));\n    --margin-left: calc(-1 * var(--space-3));\n  }\n  .-rt-r-m-4 {\n    --margin-top: calc(-1 * var(--space-4));\n    --margin-right: calc(-1 * var(--space-4));\n    --margin-bottom: calc(-1 * var(--space-4));\n    --margin-left: calc(-1 * var(--space-4));\n  }\n  .-rt-r-m-5 {\n    --margin-top: calc(-1 * var(--space-5));\n    --margin-right: calc(-1 * var(--space-5));\n    --margin-bottom: calc(-1 * var(--space-5));\n    --margin-left: calc(-1 * var(--space-5));\n  }\n  .-rt-r-m-6 {\n    --margin-top: calc(-1 * var(--space-6));\n    --margin-right: calc(-1 * var(--space-6));\n    --margin-bottom: calc(-1 * var(--space-6));\n    --margin-left: calc(-1 * var(--space-6));\n  }\n  .-rt-r-m-7 {\n    --margin-top: calc(-1 * var(--space-7));\n    --margin-right: calc(-1 * var(--space-7));\n    --margin-bottom: calc(-1 * var(--space-7));\n    --margin-left: calc(-1 * var(--space-7));\n  }\n  .-rt-r-m-8 {\n    --margin-top: calc(-1 * var(--space-8));\n    --margin-right: calc(-1 * var(--space-8));\n    --margin-bottom: calc(-1 * var(--space-8));\n    --margin-left: calc(-1 * var(--space-8));\n  }\n  .-rt-r-m-9 {\n    --margin-top: calc(-1 * var(--space-9));\n    --margin-right: calc(-1 * var(--space-9));\n    --margin-bottom: calc(-1 * var(--space-9));\n    --margin-left: calc(-1 * var(--space-9));\n  }\n}\n.rt-r-m {\n  --margin-top: var(--m);\n  --margin-right: var(--m);\n  --margin-bottom: var(--m);\n  --margin-left: var(--m);\n}\n@media (--xs) {\n  .xs\\:rt-r-m {\n    --margin-top: var(--m-xs);\n    --margin-right: var(--m-xs);\n    --margin-bottom: var(--m-xs);\n    --margin-left: var(--m-xs);\n  }\n}\n@media (--sm) {\n  .sm\\:rt-r-m {\n    --margin-top: var(--m-sm);\n    --margin-right: var(--m-sm);\n    --margin-bottom: var(--m-sm);\n    --margin-left: var(--m-sm);\n  }\n}\n@media (--md) {\n  .md\\:rt-r-m {\n    --margin-top: var(--m-md);\n    --margin-right: var(--m-md);\n    --margin-bottom: var(--m-md);\n    --margin-left: var(--m-md);\n  }\n}\n@media (--lg) {\n  .lg\\:rt-r-m {\n    --margin-top: var(--m-lg);\n    --margin-right: var(--m-lg);\n    --margin-bottom: var(--m-lg);\n    --margin-left: var(--m-lg);\n  }\n}\n@media (--xl) {\n  .xl\\:rt-r-m {\n    --margin-top: var(--m-xl);\n    --margin-right: var(--m-xl);\n    --margin-bottom: var(--m-xl);\n    --margin-left: var(--m-xl);\n  }\n}\n\n/* * * * * * * * * * * * * * * * * * * */\n/*                                     */\n/*           Left and right            */\n/*                                     */\n/* * * * * * * * * * * * * * * * * * * */\n\n@breakpoints {\n  .rt-r-mx,\n  .rt-r-mx-0,\n  .rt-r-mx-1,\n  .rt-r-mx-2,\n  .rt-r-mx-3,\n  .rt-r-mx-4,\n  .rt-r-mx-5,\n  .rt-r-mx-6,\n  .rt-r-mx-7,\n  .rt-r-mx-8,\n  .rt-r-mx-9,\n  .-rt-r-mx-1,\n  .-rt-r-mx-2,\n  .-rt-r-mx-3,\n  .-rt-r-mx-4,\n  .-rt-r-mx-5,\n  .-rt-r-mx-6,\n  .-rt-r-mx-7,\n  .-rt-r-mx-8,\n  .-rt-r-mx-9 {\n    margin-left: var(--margin-left-override, var(--margin-left));\n    margin-right: var(--margin-right-override, var(--margin-right));\n  }\n  .rt-r-mx {\n    /* Keep this selector here to maintain the source order */\n  }\n  .rt-r-mx-0 {\n    --margin-left: 0px;\n    --margin-right: 0px;\n  }\n  .rt-r-mx-1 {\n    --margin-left: var(--space-1);\n    --margin-right: var(--space-1);\n  }\n  .rt-r-mx-2 {\n    --margin-left: var(--space-2);\n    --margin-right: var(--space-2);\n  }\n  .rt-r-mx-3 {\n    --margin-left: var(--space-3);\n    --margin-right: var(--space-3);\n  }\n  .rt-r-mx-4 {\n    --margin-left: var(--space-4);\n    --margin-right: var(--space-4);\n  }\n  .rt-r-mx-5 {\n    --margin-left: var(--space-5);\n    --margin-right: var(--space-5);\n  }\n  .rt-r-mx-6 {\n    --margin-left: var(--space-6);\n    --margin-right: var(--space-6);\n  }\n  .rt-r-mx-7 {\n    --margin-left: var(--space-7);\n    --margin-right: var(--space-7);\n  }\n  .rt-r-mx-8 {\n    --margin-left: var(--space-8);\n    --margin-right: var(--space-8);\n  }\n  .rt-r-mx-9 {\n    --margin-left: var(--space-9);\n    --margin-right: var(--space-9);\n  }\n  .-rt-r-mx-1 {\n    --margin-left: calc(-1 * var(--space-1));\n    --margin-right: calc(-1 * var(--space-1));\n  }\n  .-rt-r-mx-2 {\n    --margin-left: calc(-1 * var(--space-2));\n    --margin-right: calc(-1 * var(--space-2));\n  }\n  .-rt-r-mx-3 {\n    --margin-left: calc(-1 * var(--space-3));\n    --margin-right: calc(-1 * var(--space-3));\n  }\n  .-rt-r-mx-4 {\n    --margin-left: calc(-1 * var(--space-4));\n    --margin-right: calc(-1 * var(--space-4));\n  }\n  .-rt-r-mx-5 {\n    --margin-left: calc(-1 * var(--space-5));\n    --margin-right: calc(-1 * var(--space-5));\n  }\n  .-rt-r-mx-6 {\n    --margin-left: calc(-1 * var(--space-6));\n    --margin-right: calc(-1 * var(--space-6));\n  }\n  .-rt-r-mx-7 {\n    --margin-left: calc(-1 * var(--space-7));\n    --margin-right: calc(-1 * var(--space-7));\n  }\n  .-rt-r-mx-8 {\n    --margin-left: calc(-1 * var(--space-8));\n    --margin-right: calc(-1 * var(--space-8));\n  }\n  .-rt-r-mx-9 {\n    --margin-left: calc(-1 * var(--space-9));\n    --margin-right: calc(-1 * var(--space-9));\n  }\n}\n.rt-r-mx {\n  --margin-left: var(--ml);\n  --margin-right: var(--mr);\n}\n@media (--xs) {\n  .xs\\:rt-r-mx {\n    --margin-left: var(--ml-xs);\n    --margin-right: var(--mr-xs);\n  }\n}\n@media (--sm) {\n  .sm\\:rt-r-mx {\n    --margin-left: var(--ml-md);\n    --margin-right: var(--mr-md);\n  }\n}\n@media (--md) {\n  .md\\:rt-r-mx {\n    --margin-left: var(--ml-md);\n    --margin-right: var(--mr-md);\n  }\n}\n@media (--lg) {\n  .lg\\:rt-r-mx {\n    --margin-left: var(--ml-lg);\n    --margin-right: var(--mr-lg);\n  }\n}\n@media (--xl) {\n  .xl\\:rt-r-mx {\n    --margin-left: var(--ml-xl);\n    --margin-right: var(--mr-xl);\n  }\n}\n\n/* * * * * * * * * * * * * * * * * * * */\n/*                                     */\n/*           Top and bottom            */\n/*                                     */\n/* * * * * * * * * * * * * * * * * * * */\n\n@breakpoints {\n  .rt-r-my,\n  .rt-r-my-0,\n  .rt-r-my-1,\n  .rt-r-my-2,\n  .rt-r-my-3,\n  .rt-r-my-4,\n  .rt-r-my-5,\n  .rt-r-my-6,\n  .rt-r-my-7,\n  .rt-r-my-8,\n  .rt-r-my-9,\n  .-rt-r-my-1,\n  .-rt-r-my-2,\n  .-rt-r-my-3,\n  .-rt-r-my-4,\n  .-rt-r-my-5,\n  .-rt-r-my-6,\n  .-rt-r-my-7,\n  .-rt-r-my-8,\n  .-rt-r-my-9 {\n    margin-top: var(--margin-top-override, var(--margin-top));\n    margin-bottom: var(--margin-bottom-override, var(--margin-bottom));\n  }\n  .rt-r-my {\n    /* Keep this selector here to maintain the source order */\n  }\n  .rt-r-my-0 {\n    --margin-top: 0px;\n    --margin-bottom: 0px;\n  }\n  .rt-r-my-1 {\n    --margin-top: var(--space-1);\n    --margin-bottom: var(--space-1);\n  }\n  .rt-r-my-2 {\n    --margin-top: var(--space-2);\n    --margin-bottom: var(--space-2);\n  }\n  .rt-r-my-3 {\n    --margin-top: var(--space-3);\n    --margin-bottom: var(--space-3);\n  }\n  .rt-r-my-4 {\n    --margin-top: var(--space-4);\n    --margin-bottom: var(--space-4);\n  }\n  .rt-r-my-5 {\n    --margin-top: var(--space-5);\n    --margin-bottom: var(--space-5);\n  }\n  .rt-r-my-6 {\n    --margin-top: var(--space-6);\n    --margin-bottom: var(--space-6);\n  }\n  .rt-r-my-7 {\n    --margin-top: var(--space-7);\n    --margin-bottom: var(--space-7);\n  }\n  .rt-r-my-8 {\n    --margin-top: var(--space-8);\n    --margin-bottom: var(--space-8);\n  }\n  .rt-r-my-9 {\n    --margin-top: var(--space-9);\n    --margin-bottom: var(--space-9);\n  }\n  .-rt-r-my-1 {\n    --margin-top: calc(-1 * var(--space-1));\n    --margin-bottom: calc(-1 * var(--space-1));\n  }\n  .-rt-r-my-2 {\n    --margin-top: calc(-1 * var(--space-2));\n    --margin-bottom: calc(-1 * var(--space-2));\n  }\n  .-rt-r-my-3 {\n    --margin-top: calc(-1 * var(--space-3));\n    --margin-bottom: calc(-1 * var(--space-3));\n  }\n  .-rt-r-my-4 {\n    --margin-top: calc(-1 * var(--space-4));\n    --margin-bottom: calc(-1 * var(--space-4));\n  }\n  .-rt-r-my-5 {\n    --margin-top: calc(-1 * var(--space-5));\n    --margin-bottom: calc(-1 * var(--space-5));\n  }\n  .-rt-r-my-6 {\n    --margin-top: calc(-1 * var(--space-6));\n    --margin-bottom: calc(-1 * var(--space-6));\n  }\n  .-rt-r-my-7 {\n    --margin-top: calc(-1 * var(--space-7));\n    --margin-bottom: calc(-1 * var(--space-7));\n  }\n  .-rt-r-my-8 {\n    --margin-top: calc(-1 * var(--space-8));\n    --margin-bottom: calc(-1 * var(--space-8));\n  }\n  .-rt-r-my-9 {\n    --margin-top: calc(-1 * var(--space-9));\n    --margin-bottom: calc(-1 * var(--space-9));\n  }\n}\n.rt-r-my {\n  --margin-top: var(--mt);\n  --margin-bottom: var(--mb);\n}\n@media (--xs) {\n  .xs\\:rt-r-my {\n    --margin-top: var(--mt-xs);\n    --margin-bottom: var(--mb-xs);\n  }\n}\n@media (--sm) {\n  .sm\\:rt-r-my {\n    --margin-top: var(--mt-sm);\n    --margin-bottom: var(--mb-sm);\n  }\n}\n@media (--md) {\n  .md\\:rt-r-my {\n    --margin-top: var(--mt-md);\n    --margin-bottom: var(--mb-md);\n  }\n}\n@media (--lg) {\n  .lg\\:rt-r-my {\n    --margin-top: var(--mt-lg);\n    --margin-bottom: var(--mb-lg);\n  }\n}\n@media (--xl) {\n  .xl\\:rt-r-my {\n    --margin-top: var(--mt-xl);\n    --margin-bottom: var(--mb-xl);\n  }\n}\n\n/* * * * * * * * * * * * * * * * * * * */\n/*                                     */\n/*                 Top                 */\n/*                                     */\n/* * * * * * * * * * * * * * * * * * * */\n\n@breakpoints {\n  .rt-r-mt,\n  .rt-r-mt-0,\n  .rt-r-mt-1,\n  .rt-r-mt-2,\n  .rt-r-mt-3,\n  .rt-r-mt-4,\n  .rt-r-mt-5,\n  .rt-r-mt-6,\n  .rt-r-mt-7,\n  .rt-r-mt-8,\n  .rt-r-mt-9,\n  .-rt-r-mt-1,\n  .-rt-r-mt-2,\n  .-rt-r-mt-3,\n  .-rt-r-mt-4,\n  .-rt-r-mt-5,\n  .-rt-r-mt-6,\n  .-rt-r-mt-7,\n  .-rt-r-mt-8,\n  .-rt-r-mt-9 {\n    margin-top: var(--margin-top-override, var(--margin-top));\n  }\n  .rt-r-mt {\n    /* Keep this selector here to maintain the source order */\n  }\n  .rt-r-mt-0 {\n    --margin-top: 0px;\n  }\n  .rt-r-mt-1 {\n    --margin-top: var(--space-1);\n  }\n  .rt-r-mt-2 {\n    --margin-top: var(--space-2);\n  }\n  .rt-r-mt-3 {\n    --margin-top: var(--space-3);\n  }\n  .rt-r-mt-4 {\n    --margin-top: var(--space-4);\n  }\n  .rt-r-mt-5 {\n    --margin-top: var(--space-5);\n  }\n  .rt-r-mt-6 {\n    --margin-top: var(--space-6);\n  }\n  .rt-r-mt-7 {\n    --margin-top: var(--space-7);\n  }\n  .rt-r-mt-8 {\n    --margin-top: var(--space-8);\n  }\n  .rt-r-mt-9 {\n    --margin-top: var(--space-9);\n  }\n  .-rt-r-mt-1 {\n    --margin-top: calc(-1 * var(--space-1));\n  }\n  .-rt-r-mt-2 {\n    --margin-top: calc(-1 * var(--space-2));\n  }\n  .-rt-r-mt-3 {\n    --margin-top: calc(-1 * var(--space-3));\n  }\n  .-rt-r-mt-4 {\n    --margin-top: calc(-1 * var(--space-4));\n  }\n  .-rt-r-mt-5 {\n    --margin-top: calc(-1 * var(--space-5));\n  }\n  .-rt-r-mt-6 {\n    --margin-top: calc(-1 * var(--space-6));\n  }\n  .-rt-r-mt-7 {\n    --margin-top: calc(-1 * var(--space-7));\n  }\n  .-rt-r-mt-8 {\n    --margin-top: calc(-1 * var(--space-8));\n  }\n  .-rt-r-mt-9 {\n    --margin-top: calc(-1 * var(--space-9));\n  }\n}\n.rt-r-mt {\n  --margin-top: var(--mt);\n}\n@media (--xs) {\n  .xs\\:rt-r-mt {\n    --margin-top: var(--mt-xs);\n  }\n}\n@media (--sm) {\n  .sm\\:rt-r-mt {\n    --margin-top: var(--mt-sm);\n  }\n}\n@media (--md) {\n  .md\\:rt-r-mt {\n    --margin-top: var(--mt-md);\n  }\n}\n@media (--lg) {\n  .lg\\:rt-r-mt {\n    --margin-top: var(--mt-lg);\n  }\n}\n@media (--xl) {\n  .xl\\:rt-r-mt {\n    --margin-top: var(--mt-xl);\n  }\n}\n\n/* * * * * * * * * * * * * * * * * * * */\n/*                                     */\n/*                Right                */\n/*                                     */\n/* * * * * * * * * * * * * * * * * * * */\n\n@breakpoints {\n  .rt-r-mr,\n  .rt-r-mr-0,\n  .rt-r-mr-1,\n  .rt-r-mr-2,\n  .rt-r-mr-3,\n  .rt-r-mr-4,\n  .rt-r-mr-5,\n  .rt-r-mr-6,\n  .rt-r-mr-7,\n  .rt-r-mr-8,\n  .rt-r-mr-9,\n  .-rt-r-mr-1,\n  .-rt-r-mr-2,\n  .-rt-r-mr-3,\n  .-rt-r-mr-4,\n  .-rt-r-mr-5,\n  .-rt-r-mr-6,\n  .-rt-r-mr-7,\n  .-rt-r-mr-8,\n  .-rt-r-mr-9 {\n    margin-right: var(--margin-right-override, var(--margin-right));\n  }\n  .rt-r-mr {\n    /* Keep this selector here to maintain the source order */\n  }\n  .rt-r-mr-0 {\n    --margin-right: 0px;\n  }\n  .rt-r-mr-1 {\n    --margin-right: var(--space-1);\n  }\n  .rt-r-mr-2 {\n    --margin-right: var(--space-2);\n  }\n  .rt-r-mr-3 {\n    --margin-right: var(--space-3);\n  }\n  .rt-r-mr-4 {\n    --margin-right: var(--space-4);\n  }\n  .rt-r-mr-5 {\n    --margin-right: var(--space-5);\n  }\n  .rt-r-mr-6 {\n    --margin-right: var(--space-6);\n  }\n  .rt-r-mr-7 {\n    --margin-right: var(--space-7);\n  }\n  .rt-r-mr-8 {\n    --margin-right: var(--space-8);\n  }\n  .rt-r-mr-9 {\n    --margin-right: var(--space-9);\n  }\n  .-rt-r-mr-1 {\n    --margin-right: calc(-1 * var(--space-1));\n  }\n  .-rt-r-mr-2 {\n    --margin-right: calc(-1 * var(--space-2));\n  }\n  .-rt-r-mr-3 {\n    --margin-right: calc(-1 * var(--space-3));\n  }\n  .-rt-r-mr-4 {\n    --margin-right: calc(-1 * var(--space-4));\n  }\n  .-rt-r-mr-5 {\n    --margin-right: calc(-1 * var(--space-5));\n  }\n  .-rt-r-mr-6 {\n    --margin-right: calc(-1 * var(--space-6));\n  }\n  .-rt-r-mr-7 {\n    --margin-right: calc(-1 * var(--space-7));\n  }\n  .-rt-r-mr-8 {\n    --margin-right: calc(-1 * var(--space-8));\n  }\n  .-rt-r-mr-9 {\n    --margin-right: calc(-1 * var(--space-9));\n  }\n}\n.rt-r-mr {\n  --margin-right: var(--mr);\n}\n@media (--xs) {\n  .xs\\:rt-r-mr {\n    --margin-right: var(--mr-xs);\n  }\n}\n@media (--sm) {\n  .sm\\:rt-r-mr {\n    --margin-right: var(--mr-sm);\n  }\n}\n@media (--md) {\n  .md\\:rt-r-mr {\n    --margin-right: var(--mr-md);\n  }\n}\n@media (--lg) {\n  .lg\\:rt-r-mr {\n    --margin-right: var(--mr-lg);\n  }\n}\n@media (--xl) {\n  .xl\\:rt-r-mr {\n    --margin-right: var(--mr-xl);\n  }\n}\n\n/* * * * * * * * * * * * * * * * * * * */\n/*                                     */\n/*               Bottom                */\n/*                                     */\n/* * * * * * * * * * * * * * * * * * * */\n\n@breakpoints {\n  .rt-r-mb,\n  .rt-r-mb-0,\n  .rt-r-mb-1,\n  .rt-r-mb-2,\n  .rt-r-mb-3,\n  .rt-r-mb-4,\n  .rt-r-mb-5,\n  .rt-r-mb-6,\n  .rt-r-mb-7,\n  .rt-r-mb-8,\n  .rt-r-mb-9,\n  .-rt-r-mb-1,\n  .-rt-r-mb-2,\n  .-rt-r-mb-3,\n  .-rt-r-mb-4,\n  .-rt-r-mb-5,\n  .-rt-r-mb-6,\n  .-rt-r-mb-7,\n  .-rt-r-mb-8,\n  .-rt-r-mb-9 {\n    margin-bottom: var(--margin-bottom-override, var(--margin-bottom));\n  }\n  .rt-r-mb {\n    /* Keep this selector here to maintain the source order */\n  }\n  .rt-r-mb-0 {\n    --margin-bottom: 0px;\n  }\n  .rt-r-mb-1 {\n    --margin-bottom: var(--space-1);\n  }\n  .rt-r-mb-2 {\n    --margin-bottom: var(--space-2);\n  }\n  .rt-r-mb-3 {\n    --margin-bottom: var(--space-3);\n  }\n  .rt-r-mb-4 {\n    --margin-bottom: var(--space-4);\n  }\n  .rt-r-mb-5 {\n    --margin-bottom: var(--space-5);\n  }\n  .rt-r-mb-6 {\n    --margin-bottom: var(--space-6);\n  }\n  .rt-r-mb-7 {\n    --margin-bottom: var(--space-7);\n  }\n  .rt-r-mb-8 {\n    --margin-bottom: var(--space-8);\n  }\n  .rt-r-mb-9 {\n    --margin-bottom: var(--space-9);\n  }\n  .-rt-r-mb-1 {\n    --margin-bottom: calc(-1 * var(--space-1));\n  }\n  .-rt-r-mb-2 {\n    --margin-bottom: calc(-1 * var(--space-2));\n  }\n  .-rt-r-mb-3 {\n    --margin-bottom: calc(-1 * var(--space-3));\n  }\n  .-rt-r-mb-4 {\n    --margin-bottom: calc(-1 * var(--space-4));\n  }\n  .-rt-r-mb-5 {\n    --margin-bottom: calc(-1 * var(--space-5));\n  }\n  .-rt-r-mb-6 {\n    --margin-bottom: calc(-1 * var(--space-6));\n  }\n  .-rt-r-mb-7 {\n    --margin-bottom: calc(-1 * var(--space-7));\n  }\n  .-rt-r-mb-8 {\n    --margin-bottom: calc(-1 * var(--space-8));\n  }\n  .-rt-r-mb-9 {\n    --margin-bottom: calc(-1 * var(--space-9));\n  }\n}\n\n.rt-r-mb {\n  --margin-bottom: var(--mb);\n}\n@media (--xs) {\n  .xs\\:rt-r-mb {\n    --margin-bottom: var(--mb-xs);\n  }\n}\n@media (--sm) {\n  .sm\\:rt-r-mb {\n    --margin-bottom: var(--mb-sm);\n  }\n}\n@media (--md) {\n  .md\\:rt-r-mb {\n    --margin-bottom: var(--mb-md);\n  }\n}\n@media (--lg) {\n  .lg\\:rt-r-mb {\n    --margin-bottom: var(--mb-lg);\n  }\n}\n@media (--xl) {\n  .xl\\:rt-r-mb {\n    --margin-bottom: var(--mb-xl);\n  }\n}\n\n/* * * * * * * * * * * * * * * * * * * */\n/*                                     */\n/*                Left                 */\n/*                                     */\n/* * * * * * * * * * * * * * * * * * * */\n\n@breakpoints {\n  .rt-r-ml,\n  .rt-r-ml-0,\n  .rt-r-ml-1,\n  .rt-r-ml-2,\n  .rt-r-ml-3,\n  .rt-r-ml-4,\n  .rt-r-ml-5,\n  .rt-r-ml-6,\n  .rt-r-ml-7,\n  .rt-r-ml-8,\n  .rt-r-ml-9,\n  .-rt-r-ml-1,\n  .-rt-r-ml-2,\n  .-rt-r-ml-3,\n  .-rt-r-ml-4,\n  .-rt-r-ml-5,\n  .-rt-r-ml-6,\n  .-rt-r-ml-7,\n  .-rt-r-ml-8,\n  .-rt-r-ml-9 {\n    margin-left: var(--margin-left-override, var(--margin-left));\n  }\n  .rt-r-ml {\n    /* Keep this selector here to maintain the source order */\n  }\n  .rt-r-ml-0 {\n    --margin-left: 0px;\n  }\n  .rt-r-ml-1 {\n    --margin-left: var(--space-1);\n  }\n  .rt-r-ml-2 {\n    --margin-left: var(--space-2);\n  }\n  .rt-r-ml-3 {\n    --margin-left: var(--space-3);\n  }\n  .rt-r-ml-4 {\n    --margin-left: var(--space-4);\n  }\n  .rt-r-ml-5 {\n    --margin-left: var(--space-5);\n  }\n  .rt-r-ml-6 {\n    --margin-left: var(--space-6);\n  }\n  .rt-r-ml-7 {\n    --margin-left: var(--space-7);\n  }\n  .rt-r-ml-8 {\n    --margin-left: var(--space-8);\n  }\n  .rt-r-ml-9 {\n    --margin-left: var(--space-9);\n  }\n  .-rt-r-ml-1 {\n    --margin-left: calc(-1 * var(--space-1));\n  }\n  .-rt-r-ml-2 {\n    --margin-left: calc(-1 * var(--space-2));\n  }\n  .-rt-r-ml-3 {\n    --margin-left: calc(-1 * var(--space-3));\n  }\n  .-rt-r-ml-4 {\n    --margin-left: calc(-1 * var(--space-4));\n  }\n  .-rt-r-ml-5 {\n    --margin-left: calc(-1 * var(--space-5));\n  }\n  .-rt-r-ml-6 {\n    --margin-left: calc(-1 * var(--space-6));\n  }\n  .-rt-r-ml-7 {\n    --margin-left: calc(-1 * var(--space-7));\n  }\n  .-rt-r-ml-8 {\n    --margin-left: calc(-1 * var(--space-8));\n  }\n  .-rt-r-ml-9 {\n    --margin-left: calc(-1 * var(--space-9));\n  }\n}\n.rt-r-ml {\n  --margin-left: var(--ml);\n}\n@media (--xs) {\n  .xs\\:rt-r-ml {\n    --margin-left: var(--ml-xs);\n  }\n}\n@media (--sm) {\n  .sm\\:rt-r-ml {\n    --margin-left: var(--ml-sm);\n  }\n}\n@media (--md) {\n  .md\\:rt-r-ml {\n    --margin-left: var(--ml-md);\n  }\n}\n@media (--lg) {\n  .lg\\:rt-r-ml {\n    --margin-left: var(--ml-lg);\n  }\n}\n@media (--xl) {\n  .xl\\:rt-r-ml {\n    --margin-left: var(--ml-xl);\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/styles/utilities/max-height.css",
    "content": ".rt-r-max-h {\n  max-height: var(--max-height);\n}\n@media (--xs) {\n  .xs\\:rt-r-max-h {\n    max-height: var(--max-height-xs);\n  }\n}\n@media (--sm) {\n  .sm\\:rt-r-max-h {\n    max-height: var(--max-height-sm);\n  }\n}\n@media (--md) {\n  .md\\:rt-r-max-h {\n    max-height: var(--max-height-md);\n  }\n}\n@media (--lg) {\n  .lg\\:rt-r-max-h {\n    max-height: var(--max-height-lg);\n  }\n}\n@media (--xl) {\n  .xl\\:rt-r-max-h {\n    max-height: var(--max-height-xl);\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/styles/utilities/max-width.css",
    "content": ".rt-r-max-w {\n  max-width: var(--max-width);\n}\n@media (--xs) {\n  .xs\\:rt-r-max-w {\n    max-width: var(--max-width-xs);\n  }\n}\n@media (--sm) {\n  .sm\\:rt-r-max-w {\n    max-width: var(--max-width-sm);\n  }\n}\n@media (--md) {\n  .md\\:rt-r-max-w {\n    max-width: var(--max-width-md);\n  }\n}\n@media (--lg) {\n  .lg\\:rt-r-max-w {\n    max-width: var(--max-width-lg);\n  }\n}\n@media (--xl) {\n  .xl\\:rt-r-max-w {\n    max-width: var(--max-width-xl);\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/styles/utilities/min-height.css",
    "content": ".rt-r-min-h {\n  min-height: var(--min-height);\n}\n@media (--xs) {\n  .xs\\:rt-r-min-h {\n    min-height: var(--min-height-xs);\n  }\n}\n@media (--sm) {\n  .sm\\:rt-r-min-h {\n    min-height: var(--min-height-sm);\n  }\n}\n@media (--md) {\n  .md\\:rt-r-min-h {\n    min-height: var(--min-height-md);\n  }\n}\n@media (--lg) {\n  .lg\\:rt-r-min-h {\n    min-height: var(--min-height-lg);\n  }\n}\n@media (--xl) {\n  .xl\\:rt-r-min-h {\n    min-height: var(--min-height-xl);\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/styles/utilities/min-width.css",
    "content": ".rt-r-min-w {\n  min-width: var(--min-width);\n}\n@media (--xs) {\n  .xs\\:rt-r-min-w {\n    min-width: var(--min-width-xs);\n  }\n}\n@media (--sm) {\n  .sm\\:rt-r-min-w {\n    min-width: var(--min-width-sm);\n  }\n}\n@media (--md) {\n  .md\\:rt-r-min-w {\n    min-width: var(--min-width-md);\n  }\n}\n@media (--lg) {\n  .lg\\:rt-r-min-w {\n    min-width: var(--min-width-lg);\n  }\n}\n@media (--xl) {\n  .xl\\:rt-r-min-w {\n    min-width: var(--min-width-xl);\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/styles/utilities/overflow.css",
    "content": "@breakpoints {\n  .rt-r-overflow-visible {\n    overflow: visible;\n  }\n  .rt-r-overflow-hidden {\n    overflow: hidden;\n  }\n  .rt-r-overflow-clip {\n    overflow: clip;\n  }\n  .rt-r-overflow-scroll {\n    overflow: scroll;\n  }\n  .rt-r-overflow-auto {\n    overflow: auto;\n  }\n\n  .rt-r-ox-visible {\n    overflow-x: visible;\n  }\n  .rt-r-ox-hidden {\n    overflow-x: hidden;\n  }\n  .rt-r-ox-clip {\n    overflow-x: clip;\n  }\n  .rt-r-ox-scroll {\n    overflow-x: scroll;\n  }\n  .rt-r-ox-auto {\n    overflow-x: auto;\n  }\n\n  .rt-r-oy-visible {\n    overflow-y: visible;\n  }\n  .rt-r-oy-hidden {\n    overflow-y: hidden;\n  }\n  .rt-r-oy-clip {\n    overflow-y: clip;\n  }\n  .rt-r-oy-scroll {\n    overflow-y: scroll;\n  }\n  .rt-r-oy-auto {\n    overflow-y: auto;\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/styles/utilities/padding.css",
    "content": "/* * * * * * * * * * * * * * * * * * * */\n/*                                     */\n/*              All sides              */\n/*                                     */\n/* * * * * * * * * * * * * * * * * * * */\n\n@breakpoints {\n  .rt-r-p {\n    /* Keep this selector here to maintain the source order */\n  }\n  .rt-r-p-0 {\n    padding: 0;\n  }\n  .rt-r-p-1 {\n    padding: var(--space-1);\n  }\n  .rt-r-p-2 {\n    padding: var(--space-2);\n  }\n  .rt-r-p-3 {\n    padding: var(--space-3);\n  }\n  .rt-r-p-4 {\n    padding: var(--space-4);\n  }\n  .rt-r-p-5 {\n    padding: var(--space-5);\n  }\n  .rt-r-p-6 {\n    padding: var(--space-6);\n  }\n  .rt-r-p-7 {\n    padding: var(--space-7);\n  }\n  .rt-r-p-8 {\n    padding: var(--space-8);\n  }\n  .rt-r-p-9 {\n    padding: var(--space-9);\n  }\n  .rt-r-p-inset {\n    padding-top: var(--inset-padding-top);\n    padding-right: var(--inset-padding-right);\n    padding-bottom: var(--inset-padding-bottom);\n    padding-left: var(--inset-padding-left);\n  }\n}\n\n.rt-r-p {\n  padding: var(--p);\n}\n@media (--xs) {\n  .xs\\:rt-r-p {\n    padding: var(--p-xs);\n  }\n}\n@media (--sm) {\n  .sm\\:rt-r-p {\n    padding: var(--p-sm);\n  }\n}\n@media (--md) {\n  .md\\:rt-r-p {\n    padding: var(--p-md);\n  }\n}\n@media (--lg) {\n  .lg\\:rt-r-p {\n    padding: var(--p-lg);\n  }\n}\n@media (--xl) {\n  .xl\\:rt-r-p {\n    padding: var(--p-xl);\n  }\n}\n\n/* * * * * * * * * * * * * * * * * * * */\n/*                                     */\n/*           Left and right            */\n/*                                     */\n/* * * * * * * * * * * * * * * * * * * */\n\n@breakpoints {\n  .rt-r-px {\n    /* Keep this selector here to maintain the source order */\n  }\n  .rt-r-px-0 {\n    padding-left: 0;\n    padding-right: 0;\n  }\n  .rt-r-px-1 {\n    padding-left: var(--space-1);\n    padding-right: var(--space-1);\n  }\n  .rt-r-px-2 {\n    padding-left: var(--space-2);\n    padding-right: var(--space-2);\n  }\n  .rt-r-px-3 {\n    padding-left: var(--space-3);\n    padding-right: var(--space-3);\n  }\n  .rt-r-px-4 {\n    padding-left: var(--space-4);\n    padding-right: var(--space-4);\n  }\n  .rt-r-px-5 {\n    padding-left: var(--space-5);\n    padding-right: var(--space-5);\n  }\n  .rt-r-px-6 {\n    padding-left: var(--space-6);\n    padding-right: var(--space-6);\n  }\n  .rt-r-px-7 {\n    padding-left: var(--space-7);\n    padding-right: var(--space-7);\n  }\n  .rt-r-px-8 {\n    padding-left: var(--space-8);\n    padding-right: var(--space-8);\n  }\n  .rt-r-px-9 {\n    padding-left: var(--space-9);\n    padding-right: var(--space-9);\n  }\n  .rt-r-px-inset {\n    padding-left: var(--inset-padding-left);\n    padding-right: var(--inset-padding-right);\n  }\n}\n\n.rt-r-px {\n  padding-left: var(--pl);\n  padding-right: var(--pr);\n}\n@media (--xs) {\n  .xs\\:rt-r-px {\n    padding-left: var(--pl-xs);\n    padding-right: var(--pr-xs);\n  }\n}\n@media (--sm) {\n  .sm\\:rt-r-px {\n    padding-left: var(--pl-sm);\n    padding-right: var(--pr-sm);\n  }\n}\n@media (--md) {\n  .md\\:rt-r-px {\n    padding-left: var(--pl-md);\n    padding-right: var(--pr-md);\n  }\n}\n@media (--lg) {\n  .lg\\:rt-r-px {\n    padding-left: var(--pl-lg);\n    padding-right: var(--pr-lg);\n  }\n}\n@media (--xl) {\n  .xl\\:rt-r-px {\n    padding-left: var(--pl-xl);\n    padding-right: var(--pr-xl);\n  }\n}\n\n/* * * * * * * * * * * * * * * * * * * */\n/*                                     */\n/*           Top and bottom            */\n/*                                     */\n/* * * * * * * * * * * * * * * * * * * */\n\n@breakpoints {\n  .rt-r-py {\n    /* Keep this selector here to maintain the source order */\n  }\n  .rt-r-py-0 {\n    padding-top: 0;\n    padding-bottom: 0;\n  }\n  .rt-r-py-1 {\n    padding-top: var(--space-1);\n    padding-bottom: var(--space-1);\n  }\n  .rt-r-py-2 {\n    padding-top: var(--space-2);\n    padding-bottom: var(--space-2);\n  }\n  .rt-r-py-3 {\n    padding-top: var(--space-3);\n    padding-bottom: var(--space-3);\n  }\n  .rt-r-py-4 {\n    padding-top: var(--space-4);\n    padding-bottom: var(--space-4);\n  }\n  .rt-r-py-5 {\n    padding-top: var(--space-5);\n    padding-bottom: var(--space-5);\n  }\n  .rt-r-py-6 {\n    padding-top: var(--space-6);\n    padding-bottom: var(--space-6);\n  }\n  .rt-r-py-7 {\n    padding-top: var(--space-7);\n    padding-bottom: var(--space-7);\n  }\n  .rt-r-py-8 {\n    padding-top: var(--space-8);\n    padding-bottom: var(--space-8);\n  }\n  .rt-r-py-9 {\n    padding-top: var(--space-9);\n    padding-bottom: var(--space-9);\n  }\n  .rt-r-py-inset {\n    padding-top: var(--inset-padding-top);\n    padding-bottom: var(--inset-padding-bottom);\n  }\n}\n\n.rt-r-py {\n  padding-top: var(--pt);\n  padding-bottom: var(--pb);\n}\n@media (--xs) {\n  .xs\\:rt-r-py {\n    padding-top: var(--pt-xs);\n    padding-bottom: var(--pb-xs);\n  }\n}\n@media (--sm) {\n  .sm\\:rt-r-py {\n    padding-top: var(--pt-sm);\n    padding-bottom: var(--pb-sm);\n  }\n}\n@media (--md) {\n  .md\\:rt-r-py {\n    padding-top: var(--pt-md);\n    padding-bottom: var(--pb-md);\n  }\n}\n@media (--lg) {\n  .lg\\:rt-r-py {\n    padding-top: var(--pt-lg);\n    padding-bottom: var(--pb-lg);\n  }\n}\n@media (--xl) {\n  .xl\\:rt-r-py {\n    padding-top: var(--pt-xl);\n    padding-bottom: var(--pb-xl);\n  }\n}\n\n/* * * * * * * * * * * * * * * * * * * */\n/*                                     */\n/*                 Top                 */\n/*                                     */\n/* * * * * * * * * * * * * * * * * * * */\n\n@breakpoints {\n  .rt-r-pt {\n    /* Keep this selector here to maintain the source order */\n  }\n  .rt-r-pt-0 {\n    padding-top: 0;\n  }\n  .rt-r-pt-1 {\n    padding-top: var(--space-1);\n  }\n  .rt-r-pt-2 {\n    padding-top: var(--space-2);\n  }\n  .rt-r-pt-3 {\n    padding-top: var(--space-3);\n  }\n  .rt-r-pt-4 {\n    padding-top: var(--space-4);\n  }\n  .rt-r-pt-5 {\n    padding-top: var(--space-5);\n  }\n  .rt-r-pt-6 {\n    padding-top: var(--space-6);\n  }\n  .rt-r-pt-7 {\n    padding-top: var(--space-7);\n  }\n  .rt-r-pt-8 {\n    padding-top: var(--space-8);\n  }\n  .rt-r-pt-9 {\n    padding-top: var(--space-9);\n  }\n  .rt-r-pt-inset {\n    padding-top: var(--inset-padding-top);\n  }\n}\n\n.rt-r-pt {\n  padding-top: var(--pt);\n}\n@media (--xs) {\n  .xs\\:rt-r-pt {\n    padding-top: var(--pt-xs);\n  }\n}\n@media (--sm) {\n  .sm\\:rt-r-pt {\n    padding-top: var(--pt-sm);\n  }\n}\n@media (--md) {\n  .md\\:rt-r-pt {\n    padding-top: var(--pt-md);\n  }\n}\n@media (--lg) {\n  .lg\\:rt-r-pt {\n    padding-top: var(--pt-lg);\n  }\n}\n@media (--xl) {\n  .xl\\:rt-r-pt {\n    padding-top: var(--pt-xl);\n  }\n}\n\n/* * * * * * * * * * * * * * * * * * * */\n/*                                     */\n/*                Right                */\n/*                                     */\n/* * * * * * * * * * * * * * * * * * * */\n\n@breakpoints {\n  .rt-r-pr {\n    /* Keep this selector here to maintain the source order */\n  }\n  .rt-r-pr-0 {\n    padding-right: 0;\n  }\n  .rt-r-pr-1 {\n    padding-right: var(--space-1);\n  }\n  .rt-r-pr-2 {\n    padding-right: var(--space-2);\n  }\n  .rt-r-pr-3 {\n    padding-right: var(--space-3);\n  }\n  .rt-r-pr-4 {\n    padding-right: var(--space-4);\n  }\n  .rt-r-pr-5 {\n    padding-right: var(--space-5);\n  }\n  .rt-r-pr-6 {\n    padding-right: var(--space-6);\n  }\n  .rt-r-pr-7 {\n    padding-right: var(--space-7);\n  }\n  .rt-r-pr-8 {\n    padding-right: var(--space-8);\n  }\n  .rt-r-pr-9 {\n    padding-right: var(--space-9);\n  }\n  .rt-r-pr-inset {\n    padding-right: var(--inset-padding-right);\n  }\n}\n\n.rt-r-pr {\n  padding-right: var(--pr);\n}\n@media (--xs) {\n  .xs\\:rt-r-pr {\n    padding-right: var(--pr-xs);\n  }\n}\n@media (--sm) {\n  .sm\\:rt-r-pr {\n    padding-right: var(--pr-sm);\n  }\n}\n@media (--md) {\n  .md\\:rt-r-pr {\n    padding-right: var(--pr-md);\n  }\n}\n@media (--lg) {\n  .lg\\:rt-r-pr {\n    padding-right: var(--pr-lg);\n  }\n}\n@media (--xl) {\n  .xl\\:rt-r-pr {\n    padding-right: var(--pr-xl);\n  }\n}\n\n/* * * * * * * * * * * * * * * * * * * */\n/*                                     */\n/*               Bottom                */\n/*                                     */\n/* * * * * * * * * * * * * * * * * * * */\n\n@breakpoints {\n  .rt-r-pb {\n    /* Keep this selector here to maintain the source order */\n  }\n  .rt-r-pb-0 {\n    padding-bottom: 0;\n  }\n  .rt-r-pb-1 {\n    padding-bottom: var(--space-1);\n  }\n  .rt-r-pb-2 {\n    padding-bottom: var(--space-2);\n  }\n  .rt-r-pb-3 {\n    padding-bottom: var(--space-3);\n  }\n  .rt-r-pb-4 {\n    padding-bottom: var(--space-4);\n  }\n  .rt-r-pb-5 {\n    padding-bottom: var(--space-5);\n  }\n  .rt-r-pb-6 {\n    padding-bottom: var(--space-6);\n  }\n  .rt-r-pb-7 {\n    padding-bottom: var(--space-7);\n  }\n  .rt-r-pb-8 {\n    padding-bottom: var(--space-8);\n  }\n  .rt-r-pb-9 {\n    padding-bottom: var(--space-9);\n  }\n  .rt-r-pb-inset {\n    padding-bottom: var(--inset-padding-bottom);\n  }\n}\n\n.rt-r-pb {\n  padding-bottom: var(--pb);\n}\n@media (--xs) {\n  .xs\\:rt-r-pb {\n    padding-bottom: var(--pb-xs);\n  }\n}\n@media (--sm) {\n  .sm\\:rt-r-pb {\n    padding-bottom: var(--pb-sm);\n  }\n}\n@media (--md) {\n  .md\\:rt-r-pb {\n    padding-bottom: var(--pb-md);\n  }\n}\n@media (--lg) {\n  .lg\\:rt-r-pb {\n    padding-bottom: var(--pb-lg);\n  }\n}\n@media (--xl) {\n  .xl\\:rt-r-pb {\n    padding-bottom: var(--pb-xl);\n  }\n}\n\n/* * * * * * * * * * * * * * * * * * * */\n/*                                     */\n/*                Left                 */\n/*                                     */\n/* * * * * * * * * * * * * * * * * * * */\n\n@breakpoints {\n  .rt-r-pl {\n    /* Keep this selector here to maintain the source order */\n  }\n  .rt-r-pl-0 {\n    padding-left: 0;\n  }\n  .rt-r-pl-1 {\n    padding-left: var(--space-1);\n  }\n  .rt-r-pl-2 {\n    padding-left: var(--space-2);\n  }\n  .rt-r-pl-3 {\n    padding-left: var(--space-3);\n  }\n  .rt-r-pl-4 {\n    padding-left: var(--space-4);\n  }\n  .rt-r-pl-5 {\n    padding-left: var(--space-5);\n  }\n  .rt-r-pl-6 {\n    padding-left: var(--space-6);\n  }\n  .rt-r-pl-7 {\n    padding-left: var(--space-7);\n  }\n  .rt-r-pl-8 {\n    padding-left: var(--space-8);\n  }\n  .rt-r-pl-9 {\n    padding-left: var(--space-9);\n  }\n  .rt-r-pl-inset {\n    padding-left: var(--inset-padding-left);\n  }\n}\n\n.rt-r-pl {\n  padding-left: var(--pl);\n}\n@media (--xs) {\n  .xs\\:rt-r-pl {\n    padding-left: var(--pl-xs);\n  }\n}\n@media (--sm) {\n  .sm\\:rt-r-pl {\n    padding-left: var(--pl-sm);\n  }\n}\n@media (--md) {\n  .md\\:rt-r-pl {\n    padding-left: var(--pl-md);\n  }\n}\n@media (--lg) {\n  .lg\\:rt-r-pl {\n    padding-left: var(--pl-lg);\n  }\n}\n@media (--xl) {\n  .xl\\:rt-r-pl {\n    padding-left: var(--pl-xl);\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/styles/utilities/position.css",
    "content": "@breakpoints {\n  .rt-r-position-static {\n    position: static;\n  }\n\n  .rt-r-position-absolute {\n    position: absolute;\n  }\n\n  .rt-r-position-relative {\n    position: relative;\n  }\n\n  .rt-r-position-fixed {\n    position: fixed;\n  }\n\n  .rt-r-position-sticky {\n    position: sticky;\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/styles/utilities/resize.css",
    "content": "@breakpoints {\n  .rt-r-resize-none {\n    resize: none;\n  }\n  .rt-r-resize-vertical {\n    resize: vertical;\n  }\n  .rt-r-resize-horizontal {\n    resize: horizontal;\n  }\n  .rt-r-resize-both {\n    resize: both;\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/styles/utilities/table-layout.css",
    "content": "@breakpoints {\n  .rt-r-tl-auto {\n    table-layout: auto;\n  }\n  .rt-r-tl-fixed {\n    table-layout: fixed;\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/styles/utilities/text-align.css",
    "content": "@breakpoints {\n  .rt-r-ta-left {\n    text-align: left;\n  }\n\n  .rt-r-ta-center {\n    text-align: center;\n  }\n\n  .rt-r-ta-right {\n    text-align: right;\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/styles/utilities/text-wrap.css",
    "content": "/*\n * We are modeling this after the \"text-wrap\" property, but use \"white-space\" because it has better support as of 2024.\n */\n@breakpoints {\n  .rt-r-tw-wrap {\n    white-space: normal;\n  }\n  .rt-r-tw-nowrap {\n    white-space: nowrap;\n  }\n  .rt-r-tw-pretty {\n    white-space: normal;\n    text-wrap: pretty;\n  }\n  .rt-r-tw-balance {\n    white-space: normal;\n    text-wrap: balance;\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/styles/utilities/truncate.css",
    "content": ".rt-truncate {\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/styles/utilities/vertical-align.css",
    "content": "@breakpoints {\n  .rt-r-va-baseline {\n    vertical-align: baseline;\n  }\n\n  .rt-r-va-top {\n    vertical-align: top;\n  }\n\n  .rt-r-va-middle {\n    vertical-align: middle;\n  }\n\n  .rt-r-va-bottom {\n    vertical-align: bottom;\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/src/styles/utilities/width.css",
    "content": ".rt-r-w {\n  width: var(--width);\n}\n@media (--xs) {\n  .xs\\:rt-r-w {\n    width: var(--width-xs);\n  }\n}\n@media (--sm) {\n  .sm\\:rt-r-w {\n    width: var(--width-sm);\n  }\n}\n@media (--md) {\n  .md\\:rt-r-w {\n    width: var(--width-md);\n  }\n}\n@media (--lg) {\n  .lg\\:rt-r-w {\n    width: var(--width-lg);\n  }\n}\n@media (--xl) {\n  .xl\\:rt-r-w {\n    width: var(--width-xl);\n  }\n}\n"
  },
  {
    "path": "packages/radix-ui-themes/tsconfig.json",
    "content": "{\n  \"compilerOptions\": {\n    \"module\": \"ESNext\",\n    \"moduleResolution\": \"Bundler\",\n    \"lib\": [\"DOM\", \"ESNext\", \"DOM.Iterable\"],\n    \"jsx\": \"react\",\n    \"declaration\": true,\n    \"declarationMap\": true,\n    \"emitDeclarationOnly\": true,\n    \"outDir\": \"dist\",\n    \"strict\": true,\n    \"skipLibCheck\": true,\n    \"esModuleInterop\": true,\n    \"verbatimModuleSyntax\": true\n  }\n}\n"
  },
  {
    "path": "pnpm-workspace.yaml",
    "content": "packages:\n  - 'apps/*'\n  - 'packages/*'\n"
  },
  {
    "path": "release-process.md",
    "content": "# Release process\n\n> This is a work-in-progress document and will be updated as we refine our release process.\n\n## Release strategy\n\nWe track versions during the pull request process. As features are added, modified or improved it's important to keep track of these via versioning.\n\n### Tracking version changes\n\nPRs that fix bugs or add features should include an addition to `packages/radix-ui-themes/CHANGELOG.md` under a new version heading. The actual release version may differ, so be sure to double check this at publish time.\n\n### Publishing a stable release\n\n> You must be a maintainer of the repository and have write access to publish a release.\n\n1. Create a new branch for the release. We recommend the branch naming convention `release/<version>` for this (e.g. `release/3.3.0`).\n2. Update the version in `packages/radix-ui-themes/package.json` and ensure the changelog is up to date.\n3. Add and commit with the commit message of `v<version>` (e.g. `v3.3.0`).\n4. Push the branch to the repository and create a pull request.\n5. When checks pass and the pull request is approved, merge it into `main`.\n6. Create a new tag for the release with the format `<version>` (e.g. `3.3.0`).\n   - If you do this locally, be sure to pull the latest changes from `main` to ensure you have the new version changes from the previous step.\n7. Create a new GitHub release from the tag. Use the changelog entry for the version as its release notes.\n8. The GitHub action will be triggered by the `publish` workflow and will automatically publish the package to npm.\n\n> To publish a pre-release you must build and publish manually. Use `pnpm publish -r --tag <tag>`, where `<tag>` is the pre-release tag (e.g. `alpha`, `beta`, `rc`)\n\n## Updating documentation\n\nOur documentation is in a [separate repository](https://github.com/radix-ui/website) and updating it is a three step process:\n\n1. Write and update the [change log](https://github.com/radix-ui/website/blob/main/data/themes/docs/overview/releases.mdx)\n2. Bump package version/s and create / update the pages for each version change\n3. Perform documentation updates and remove live demos from previous versions\n"
  },
  {
    "path": "turbo.json",
    "content": "{\n  \"$schema\": \"https://turbo.build/schema.json\",\n  \"tasks\": {\n    \"build\": {\n      \"inputs\": [\"$TURBO_DEFAULT$\", \".env*\"],\n      \"dependsOn\": [\"^build\"],\n      \"outputs\": [\"dist/**\", \".next/**\", \"!.next/cache/**\"]\n    },\n    \"test\": {\n      \"outputs\": [\"coverage/**\"],\n      \"dependsOn\": []\n    },\n    \"lint\": {},\n    \"dev\": {\n      \"dependsOn\": [\"^build\"],\n      \"cache\": false,\n      \"persistent\": true\n    },\n    \"clean\": {\n      \"cache\": false\n    }\n  }\n}\n"
  }
]